{"version":3,"sources":["assets/icons/ic-logo-wekiwi.svg","assets/icons/ic-wekiwi-popup-orange.png","assets/fonts/Montserrat/Montserrat-ExtraBold.ttf","assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png","assets/icons/PDFs/ProofOfPayment/ic-elec.png","assets/icons/PDFs/ProofOfPayment/ic-email.png","assets/icons/PDFs/ProofOfPayment/ic-phone.png","assets/icons/PDFs/ProofOfPayment/Facebook.png","assets/icons/ic-logo-sidebar.svg","assets/icons/ic-logo-login.svg","assets/icons/ic-elec-off.svg","assets/icons/ic-elec-on.svg","assets/icons/ic-elec-green.svg","assets/icons/ic-gas-off.svg","assets/icons/ic-gas-on.svg","assets/icons/ic-logout-sidebar.svg","assets/icons/ic-wekiwi-popup.png","assets/icons/logo-wekiwi-new.png","assets/icons/ic-avatar.svg","assets/icons/ic-linkedin.svg","assets/icons/ic-instagram.svg","assets/icons/ic-facebook.svg","assets/icons/ic-youtube.svg","assets/icons/ic-twitter.svg","assets/icons/ic-certification.svg","assets/icons/ic-menu.svg","assets/icons/ic-menu-h.svg","assets/icons/ic-triangle.svg","assets/icons/ic-cross.svg","assets/icons/ic-check-validate.svg","assets/icons/filter-symbol.svg","assets/icons/arrow-down.png","assets/icons/arrow-subscription.svg","assets/icons/ic-menu-orange.svg","assets/icons/ic-menu-orange-creu.svg","assets/icons/ic-arrow-back.svg","assets/icons/ic-arrow-next.svg","assets/icons/ic-image-background-accueil.png","assets/icons/icon-arrow-open-menu.png","assets/icons/timeline-status/logo.png","assets/icons/timeline-status/ok.png","assets/icons/timeline-status/error.png","assets/icons/timeline-status/waiting.png","assets/icons/timeline-status/abandonned.png","assets/icons/ic-elec-counters.png","assets/icons/ic-gas-counters.png","assets/icons/ic-copy-clipboard.svg","assets/loader.svg","assets/fonts/Montserrat/Montserrat-Black.ttf","assets/icons/PDFs/ProofOfPayment/ic-gas.png","assets/icons/PDFs/ProofOfPayment/Web.png","assets/icons/PDFs/ProofOfPayment/Youtube.png","assets/icons/PDFs/ProofOfPayment/arrow.png","assets/icons/PDFs/ProofOfPayment/ic-logo-wekiwi.png","assets/fonts/Montserrat/Montserrat-Thin.ttf","assets/fonts/Montserrat/Montserrat-Light.ttf","assets/documents lazy /^/.//.*$/ groupOptions: {} namespace object","utils/enums.ts","_actions/event.actions.ts","_actions/actionTypes.ts","utils/config.ts","components/CustomDate/CustomDate.tsx","utils/resources.ts","utils/helpers.ts","_actions/profile.actions.ts","services/logger.ts","_actions/auth.actions.ts","_actions/contract.actions.ts","_actions/consumption.actions.ts","_actions/file.actions.ts","components/PDFs/ProofOfPayment/fonts.ts","components/PDFs/ProofOfPayment/components/Header.tsx","components/PDFs/ProofOfPayment/components/Container.tsx","components/PDFs/ProofOfPayment/components/PageNumber.tsx","components/PDFs/ProofOfPayment/components/titles/Main.tsx","components/PDFs/ProofOfPayment/lib/ProofOfPaymentContext.tsx","components/PDFs/ProofOfPayment/lib/useProof.ts","components/PDFs/ProofOfPayment/components/LeftColumn/CustomerInfo.tsx","components/PDFs/ProofOfPayment/components/titles/BeneficiaryTitle.tsx","components/PDFs/ProofOfPayment/components/LeftColumn/BeneficiaryInfo.tsx","components/PDFs/ProofOfPayment/components/LeftColumn/index.tsx","components/PDFs/ProofOfPayment/components/titles/Section.tsx","components/PDFs/ProofOfPayment/components/titles/Object.tsx","components/PDFs/ProofOfPayment/components/RightColumn/Adresse.tsx","components/PDFs/ProofOfPayment/components/RightColumn/TextValue.tsx","components/PDFs/ProofOfPayment/components/RightColumn/Offer.tsx","components/PDFs/ProofOfPayment/components/RightColumn/Summary.tsx","components/PDFs/ProofOfPayment/components/Table/Cell.tsx","components/PDFs/ProofOfPayment/components/Table/DataCell.tsx","components/PDFs/ProofOfPayment/components/Table/Row.tsx","components/PDFs/ProofOfPayment/components/Table/Header.tsx","components/PDFs/ProofOfPayment/components/Table/Body.tsx","components/PDFs/ProofOfPayment/components/Table/Table.tsx","components/PDFs/ProofOfPayment/components/RightColumn/CustomTable.tsx","components/PDFs/ProofOfPayment/components/RightColumn/index.tsx","components/PDFs/ProofOfPayment/components/BottomText.tsx","components/PDFs/ProofOfPayment/components/Footer.tsx","components/PDFs/ProofOfPayment/ProofOfPayment.tsx","_actions/payment.actions.ts","components/PDFs/ProofOfPayment/generateBlob.tsx","_actions/package.actions.ts","_actions/customerContract.actions.ts","utils/network/errors.ts","_actions/searchOrder.actions.ts","_actions/searchUserGroup.actions.ts","_actions/caseResult.action.ts","_actions/createGroup.actions.ts","_actions/getGroup.actions.ts","_actions/createUser.actions.ts","_actions/createPassword.actions.ts","_actions/manageUser.actions.ts","_actions/transferContract.actions.ts","_actions/administrationClientSpace.actions.ts","_actions/paymentCB.actions.ts","store/root-epic.ts","_reducers/auth.reducer.ts","utils/initialState.ts","_reducers/profile.reducer.ts","_reducers/contract.reducer.ts","_reducers/event.reducer.ts","_reducers/consumption.reducer.ts","_reducers/file.reducer.ts","_reducers/payment.reducer.ts","_reducers/package.reducer.ts","_reducers/customerContract.reducer.ts","_reducers/order.reducer.ts","_reducers/searchUserGroup.reducer.ts","_reducers/caseRetryPayment.reducer.ts","_reducers/transferContract.reducer.ts","_reducers/paymentCB.reducer.ts","store/root-reducer.ts","services/local-storage-service.ts","store/index.ts","services/api-service.ts","services/index.ts","serviceWorker.ts","services/auth-service.ts","components/CustomButton/index.ts","components/CustomButton/CustomButton.tsx","components/CustomInput/index.ts","components/CustomInput/CustomInput.tsx","components/CustomDayPicker/CustomDayPicker.tsx","components/CustomDayPicker/index.ts","components/CustomTable/CustomTable.tsx","components/CustomTable/index.ts","components/CustomToggle/index.ts","components/CustomToggle/CustomToggle.tsx","components/CustomSelect/CustomSelect.tsx","components/CustomSelect/index.ts","components/CustomModal/CustomModal.tsx","components/CustomModal/index.ts","components/CustomDate/index.ts","components/PlanElement/PlanElement.tsx","components/PlanElement/index.ts","components/EnergyDetail/index.ts","components/EnergyDetail/EnergyDetail.tsx","components/EnergyGauge/EnergyGauge.tsx","components/EnergyGauge/index.ts","components/PackageElement/PackageElement.tsx","components/PackageElement/index.ts","components/CustomCheckbox/index.ts","components/CustomCheckbox/CustomCheckbox.tsx","components/CustomRadio/index.ts","components/CustomRadio/CustomRadio.tsx","components/SideBar/LogoutButton.tsx","components/SideBar/SideBar.tsx","components/SideBar/index.ts","components/Banner/Banner.tsx","components/Banner/index.ts","components/Modal/Modal.tsx","components/Modal/index.ts","components/Footer/Footer.tsx","components/Footer/index.ts","components/Balance/Balance.tsx","components/Balance/index.ts","components/CustomTransfer/index.ts","components/CustomTransfer/CustomTransfer.tsx","components/CustomProgressbar/CustomProgressbar.tsx","components/CustomProgressbar/index.ts","components/OptionElement/OptionElement.tsx","components/OptionElement/index.ts","utils/chart.ts","components/StackedBar/StackedBar.tsx","components/StackedBar/index.ts","components/Pagination/Pagination.tsx","components/Pagination/index.ts","components/BackgroundElement/index.ts","components/BackgroundElement/BackgroundElement.tsx","utils/search.ts","components/PostalCodeSelect/PostalCodeSelect.tsx","utils/network/types.ts","components/PostalCodeSelect/index.ts","utils/reactHelpers.tsx","utils/network/helpers.ts","containers/admin/AdminSubscriptionContainer/sections/SituationSection/SituationSection.tsx","components/CustomDatePicker/DateContainer/DateContainer.js","components/CustomDatePicker/DateContainer/index.js","components/CustomDatePicker/index.ts","components/CustomDatePicker/CustomDatePicker.tsx","components/Tile/Tile.tsx","components/Tile/index.ts","components/CheckboxTile/index.ts","components/CheckboxTile/CheckboxTile.tsx","utils/text.ts","components/AddressSelect/AddressSelect.tsx","components/AddressSelect/index.ts","components/CustomError/CustomError.tsx","components/CustomError/index.ts","components/CustomOverlay/CustomOverlay.tsx","components/CustomOverlay/index.ts","components/Separator/index.ts","components/Separator/Separator.tsx","components/CloseButton/index.ts","components/CloseButton/CloseButton.tsx","components/ToggleIndicator/ToggleIndicator.tsx","components/ToggleIndicator/index.ts","components/CoordsInputs/CoordsInputs.tsx","components/CoordsInputs/index.ts","components/TimelineStatus/Segment.tsx","components/TimelineStatus/TimelineStatus.tsx","components/TimelineStatus/index.ts","components/StripeForm/StripeForm.tsx","components/StripeForm/index.ts","components/admin/Group/index.ts","components/admin/Group/Group.tsx","components/admin/AuthorizationSchemaGroup/AuthSchemaItem.tsx","components/admin/AuthorizationSchemaGroup/AuthorizationSchemaGroup.tsx","components/admin/AuthorizationSchemaGroup/index.ts","libraries/withLoader.tsx","components/CustomInput/CustomInputNewGen.tsx","components/CustomButton/CustomButtonNewGen.tsx","components/FooterAuth/FooterAuth.tsx","components/SlidingMenu/SlidingMenu.tsx","components/SlidingMenu/index.ts","containers/AuthContainer/AuthContainer.tsx","pages/AuthPage/AuthPage.tsx","pages/AuthPage/index.ts","components/FooterAuth/index.ts","containers/ResetPasswordContainer/ResetPasswordContainer.tsx","pages/ResetPasswordPage/ResetPasswordPage.tsx","pages/ResetPasswordPage/index.ts","pages/admin/AdminHomePage/index.ts","pages/admin/AdminHomePage/AdminHomePage.tsx","utils/network/builders/contracts.ts","utils/network/request.ts","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/PaymentIframeModal.tsx","containers/admin/AdminSubscriptionContainer/modals/CustomerSurveyModal/CustomerSurveyModal.tsx","containers/admin/AdminSubscriptionContainer/modals/CustomerSurveyModal/index.ts","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/Success.tsx","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/Retry.tsx","containers/StripeFormContainer/StripeFormContainer.tsx","containers/admin/AdminSubscriptionContainer/modals/PaymentIframeModal/index.ts","containers/admin/AdminSubscriptionContainer/modals/ResetModal/ResetModal.tsx","containers/admin/AdminSubscriptionContainer/modals/ResetModal/index.ts","containers/admin/AdminSubscriptionContainer/sections/ClientDataSection/ClientDataSection.tsx","containers/admin/AdminSubscriptionContainer/sections/ClientDataSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/MissingInformationSection/MissingInformationSection.tsx","containers/admin/AdminSubscriptionContainer/sections/MissingInformationSection/index.ts","containers/admin/AdminSubscriptionContainer/modals/SeasonalOffersModal/SeasonalOffersModal.tsx","containers/admin/AdminSubscriptionContainer/modals/SeasonalOffersModal/index.ts","containers/admin/AdminSubscriptionContainer/sections/OfferSection/Options.tsx","containers/admin/AdminSubscriptionContainer/sections/OfferSection/ClientConsumption.tsx","containers/admin/AdminSubscriptionContainer/sections/OfferSection/OfferSection.tsx","containers/admin/AdminSubscriptionContainer/sections/OfferSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/RecapSection/RecapField.tsx","containers/admin/AdminSubscriptionContainer/sections/RecapSection/RecapGroup.tsx","containers/admin/AdminSubscriptionContainer/sections/RecapSection/RecapSection.tsx","containers/admin/AdminSubscriptionContainer/AdminSubscriptionContainer.tsx","containers/admin/AdminSubscriptionContainer/sections/RecapSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/SiteSection/SiteSection.tsx","containers/admin/AdminSubscriptionContainer/sections/SiteSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/SituationSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/SubscribeSection/SubscribeSection.tsx","containers/admin/AdminSubscriptionContainer/sections/SubscribeSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/TopInformationSection/index.ts","containers/admin/AdminSubscriptionContainer/sections/TopInformationSection/TopInformationSection.tsx","containers/admin/AdminSubscriptionContainer/index.ts","utils/network/builders/order.ts","utils/storage.ts","pages/admin/AdminSubscriptionPage/AdminSubscriptionPage.tsx","pages/admin/AdminSubscriptionPage/index.ts","components/ErrorScreen/index.ts","components/ErrorScreen/ErrorScreen.tsx","containers/defaults/NotFoundContainer/NotFoundContainer.tsx","containers/defaults/NotFoundContainer/index.ts","pages/defaults/NotFoundPage/index.ts","pages/defaults/NotFoundPage/NotFoundPage.tsx","components/admin/CustomDate/index.ts","components/admin/CustomDate/CustomDate.tsx","components/CustomUpload/CustomUpload.tsx","containers/admin/SearchContainer/CustomerContracSearch.tsx","libraries/withModal.tsx","containers/admin/SearchContainer/SearchContainer.tsx","containers/admin/SearchContainer/index.ts","components/ErrorElement/index.ts","components/ErrorElement/ErrorElement.tsx","components/TablePagination/TablePagination.tsx","components/TablePagination/index.ts","components/admin/CustomTable/CustomTable.tsx","components/admin/CustomTable/index.ts","libraries/useOutsideClick.ts","components/admin/Status/Status.tsx","components/admin/Status/index.ts","containers/admin/CustomerContractContainer/SubComponent.tsx","containers/admin/CustomerContractContainer/ResetPasswordButton.tsx","containers/admin/CustomerContractContainer/ReinitSubscriptionEmailButton.tsx","containers/admin/UserAdministrationContainer/CreateUserModal.tsx","containers/admin/SearchCaseContainer/SubComponent.tsx","containers/admin/UserAdministrationContainer/RemoveUserButton.tsx","containers/admin/UserAdministrationContainer/EnableOrDesableUserButton.tsx","containers/admin/CustomerContractContainer/AdministrationClientSpace.tsx","libraries/OutsideClickClass.tsx","components/admin/CustomCollapse/index.ts","components/admin/CustomCollapse/CustomCollapse.tsx","components/admin/MessageCollapse/index.ts","components/admin/MessageCollapse/MessageCollapse.tsx","containers/admin/CustomerContractContainer/CustomerContractContainer.tsx","containers/admin/CustomerContractContainer/index.ts","pages/admin/CustomerContractPage/CustomerContractPage.tsx","pages/admin/CustomerContractPage/index.ts","containers/admin/SearchCaseContainer/SearchCaseContainer.tsx","containers/admin/SearchCaseContainer/index.ts","components/admin/FilterSelect/FilterSelect.tsx","components/admin/FilterSelect/index.ts","containers/admin/SearchCaseContainer/RetryFirstPaymentModal.tsx","containers/admin/SearchCaseContainer/CaseResult.tsx","pages/admin/CasesPage/CasesPage.tsx","pages/admin/CasesPage/index.ts","containers/admin/UserAdministrationContainer/CreateGroupModal.tsx","containers/admin/UserAdministrationContainer/UserAdministrationContainer.tsx","containers/admin/UserAdministrationContainer/UserAdministrationResult.tsx","pages/admin/UserAdministrationPage/UserAdministrationPage.tsx","pages/admin/UserAdministrationPage/index.ts","pages/admin/root.tsx","libraries/withBanner.tsx","containers/ArticleVideoContainer/index.ts","containers/ArticleVideoContainer/ArticleVideoContainer.tsx","containers/PaymentStatusContainer/PaymentStatusContainer.tsx","containers/PaymentStatusContainer/index.ts","containers/PaymentCBModal/PaymentCBModal.tsx","containers/PaymentCBModal/index.ts","containers/FailPieceContainer/FailPieceContainer.tsx","containers/ConsumptionContainer/SelfWithdrawalModal.tsx","containers/ConsumptionContainer/ConsumptionContainer.tsx","containers/HomeContainer/HomeContainer.tsx","pages/HomePage/HomePage.tsx","pages/HomePage/index.ts","containers/FormContainer/HubspotContactForm.tsx","containers/FormContainer/FormContainer.tsx","pages/FormPage/FormPage.tsx","pages/FormPage/index.ts","containers/ProfileContainer/ModificationButtons.tsx","containers/BillContainer/BillContainer.tsx","pages/BillPage/BillPage.tsx","pages/BillPage/index.ts","containers/FileContainer/FileContainer.tsx","containers/FileContainer/index.ts","utils/helpers/pdf.tsx","pages/FilePage/FilePage.tsx","pages/FilePage/index.ts","containers/PaymentContainer/SupportingDocumentErrorModal.tsx","containers/PaymentContainer/PaymentContainer.tsx","components/PDFs/Timeline/fonts.ts","components/PDFs/Timeline/components/Header.tsx","components/PDFs/Timeline/lib/TimelineContext.tsx","components/PDFs/Timeline/lib/useTimeline.ts","components/PDFs/Timeline/components/CustomerContainer.tsx","components/PDFs/Timeline/components/ContractContainer.tsx","components/PDFs/Timeline/components/TimelineTable.tsx","components/PDFs/Timeline/components/Informations.tsx","components/PDFs/Timeline/components/Footer.tsx","components/PDFs/Timeline/Timeline.tsx","components/PDFs/Timeline/generateTimelinePDF.tsx","pages/PaymentPage/PaymentPage.tsx","pages/PaymentPage/index.ts","containers/ProfileContainer/CustomerContact.tsx","containers/ProfileContainer/Payment.tsx","containers/ProfileContainer/ModificationCoholder.tsx","containers/ProfileContainer/ModificationPayment.tsx","containers/ProfileContainer/ModificationContact.tsx","containers/ProfileContainer/ModificationBilling.tsx","containers/ProfileContainer/ProfileContainer.tsx","pages/ProfilePage/ProfilePage.tsx","pages/ProfilePage/index.ts","containers/SponsorContainer/SponsorContainer.tsx","pages/SponsorPage/SponsorPage.tsx","pages/SponsorPage/index.ts","containers/EventContainer/EventContainer.tsx","containers/EventContainer/index.ts","pages/EventPage/EventPage.tsx","pages/EventPage/index.ts","containers/MoveContainer/MoveContainer.tsx","containers/MoveContainer/index.ts","pages/MovePage/MovePage.tsx","pages/MovePage/index.ts","containers/FrequencyContainer/FrequencyContainer.tsx","containers/FrequencyContainer/index.ts","containers/GaugeContainer/GaugeContainer.tsx","containers/GaugeContainer/index.ts","containers/PackageContainer/PackageSettingContainer.tsx","containers/PackageContainer/PackageContainer.tsx","pages/PackagePage/PackagePage.tsx","pages/PackagePage/index.ts","containers/SettingContainer/SettingContainer.tsx","pages/SettingPage/SettingPage.tsx","pages/SettingPage/index.ts","pages/ConsumptionPage/ConsumptionPage.tsx","pages/ConsumptionPage/index.ts","pages/routes.tsx","pages/root.tsx","pages/Main.tsx","index.tsx"],"names":["module","exports","__webpack_require__","p","map","./Explanations_Offer_Capacity.pdf","webpackAsyncContext","req","ids","e","then","id","t","Promise","resolve","Error","code","keys","Object","EEnergy","ECustomerType","ECustomerStatus","ECustomerCategoryCode","EBillingMode","EProfile","ECivility","EAppointmentTimeslot","EProcessTypes","EFrequency","EReadingFrequency","ETimeframe","ERateOption","EIntermediate","ETransactionStatus","EEffectiveStartRange","EtypePayment","EInvoiceRoutingMode","EPaymentMode","EPaymentModeKey","EModeUpdateBilling","EModeManageOffer","EAmountCategory","EAmountType","CreatePasswordMode","EContractStatus","EConsumptionStatus","EMeterReadFrequency","EPieceType","EPAYPaymentMode","EPAYTransactionStatus","EPAYInvoiceStatus","EPAYPrepaymentStatus","EPAYContractStatus","EPAYProcessStatus","EPAYProcessNature","EPAYAccountingType","EPAYIntermediate","EErrorsType","EResponseCode","EMode","EGroups","EActionMode","EMenuLabels","ESubMenuAdministrationLabel","ESubMenuCaseLabel","EConsumptionContext","EFileName","ENature","resetUpdate","createStandardAction","createEventAsync","createAsyncAction","fetchEventAsync","mapCreateEvent","action","_ref4","_ref2","apiRequest","payload","customerNbr","contractNbr","date","category","subCategory","message","path","method","body","pipe","mergeMap","response","errorMessage","throwError","prepareToStore","eventNbr","eventCategory","eventSubcategory","referenceDate","eventStatusCode","of","success","catchError","error","failure","config","URL","process","URL_SUBSCRIPTION","URL_GET_SIRET","URL_PAY","URL_ENERGYPAID","SUBSCRIPTION_LINK","ApiKey","SouscriptionApiKey","REACT_APP_API_KEY_SOUSCRIPTION","HOME_PAGE_LINK","ENV","ExpiredSessionTimeout","EnergyPaid","password","username","aws","region","apiVersion","accessKeyId","secretAccessKey","EffectiveStartDate","NOW","EL","businessDays","calendarDays","NG","LATER","DefaultSwitchDueDate","FunctionNames","getPackages","getOffers","signOrder","searchOrder","casesExtract","Stripe","publicKey","GroupsCanSelectAllPackage","ChannelsFixSwitchLater","ChannelsDoorToDoor","ChannelInformationDocument","HubspotPortalId","HubspotFormId","currentYear","Date","getFullYear","FROM_MONTH","DEFAULT","fromMonth_","toMonth_","renderValueDate","pDate","getMonth","getDate","YearMonthForm","_ref","onChange","moment","locale","months","years","i","push","handleChange_","_e$target$form","target","form","year","month","value","react_default","a","createElement","className","name","key","modifiersStyles","highlighted","color","backgroundColor","outside","CustomDate","props","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","renderStateFromMonth","renderDate","undefined","handleYearMonthChange","bind","assertThisInitialized","state","month_","setState","_this2","_this$props","onDateChange","maxDate","Fragment","DayPickerInput_default","keepFocus","onDayChange","dt","placeholder","format","parseDate","formatDate","dayPickerProps","modifiers","fromMonth","toMonth","localeUtils","MomentLocaleUtils","disabledDays","after","captionElement","CustomDate_YearMonthForm","React","Component","resources","ic-elec-counters","IconElecCounters","ic-gas-counters","IconGasCounters","ic-logo-sidebar","IconLogoSideBar","ic-timeline-status-ok","IconTimelineOk","ic-timeline-status-logo","IconTimelineLogo","ic-timeline-status-error","IconTimelineError","ic-timeline-status-waiting","IconTimelineWaiting","ic-timeline-status-abandonned","IconTimelineAbandonned","ic-logo-login","IconLogoLogin","ic-elec-off","IconElecOff","ic-elec-on","IconElecOn","ic-elec-green","IconElecGreen","ic-gas-on","IconGasOn","ic-gas-off","IconGasOff","ic-logout-sidebar","IconLogOut","ic-wekiwi-popup","IconWekiwi","ic-wekiwi-popup-orange","IconWekiwiOrange","ic-avatar","IconAvatar","ic-linkedin","IconLinkedin","ic-instagram","IconInstagram","ic-facebook","IconFacebook","ic-youtube","IconYoutube","ic-twitter","IconTwitter","ic-certification","IconCertification","ic-menu","IcMenu","ic-menu-h","IcMenuH","ic-menu-orange","IcMenuOrange","ic-menu-orange-creu","IcMenuOrangeCreu","ic-triangle","IcTriangle","ic-cross","IcCross","ic-check-validate","IcCheckValidate","ic-filter-symbol","IcFilterSymbol","ic-arrow-back","IconArrowBack","ic-arrow-next","IconArrowNext","ic-loader","IconLoader","ic-copy-clipboard","IconCopyClipboard","ic-wekiwi-new","IconWekiwiNew","ic-new-logo-accueil-background","IconAccueilNewWekiwi","ic-arrow-open-menu","IconArrowOpenMenu","ic-arrow-down","IcArrowDown","ic-arrow-subscribtion","IcArrowSubscription","PackageWording","WordingCommon","PackagePage","CommonWording","Common","WordingMapping","mapping","log","title","Config","console","isValidString","isValidEmail","test","String","toLowerCase","isValidPhone","length","sub","substr","isValidIban","IBAN","isValid","pad","s","concat","isValidName","arguments","allowSpecialChars","RegExp","indexOf","isValidBirthDate","today","birthDate","age","m","isValidBirthDatePro","getFormattedDate","d","join","getFormattedDateToBackEnd","reversed","separator","units","reverse","getDateFormatted","getTodayDate","displayPhoneWithoutPrefix","replace","getPhoneWithPrefix","findContractByNumber","nbr","arr","find","contract","contractNumber","findCoholder","thirdParties","role","displayPlaceholder","size","res","Array","from","forEach","getTimeframeFromLabel","label","getLabelByValue","obj","displayFrequency","frequency","frequencies","f","text","transformAuthorizedPackages","packages","sort","x","y","timeframe","parseInt","amount","findPackagesByRange","range","transformAuthorizedPackagesToPackages","ps","Number","findPackageById","packageID","recommended","pkg","getLabelCivility","civility","EnumItem","civilities","c","comparePieces","b","invoicing_period_end_date","getTime","findLastValidPiece","pieces","lastValid","sortedPieces","currentDate","piece","parse","status","concatUrl","customer","contact","birthdate","url","type","customerFullName","firstName","lastName","email","phone","INDIVIDUAL","coholder","companyName","companyType","identificationNumber","activityCode","filteredArr","reduce","acc","current","item","shiftArray","direction","n","times","splice","compareMeterRead","endDate","sortedConsumptionList","meters","removeDuplicateConsumptionList","seen","Set","filter","JSON","stringify","startDate","quantity","duplicate","has","add","buildClassName","nodes","formatNameString","str","setInitialCap","fmt","split","toUpperCase","capitalizeFirstLetter","formatFirstNameString","formatSIRETString","slice","formatSiteString","chunks","startIndex","nextChunk","substring","parseQueryParams","location","host","protocol","params","Map","pathname","search","searchParams","typedValue","numberValue","set","get","err","clear","isEmpty","getHost","extendedPath","window","paramStr","isEmptySelectOption","selection","getSelectOptionValue","values","sleep","_callee2","ms","regenerator_default","wrap","_context2","prev","next","abrupt","setTimeout","stop","_callee3","collection","fn","entries","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","_step2","entry","_context3","Symbol","iterator","done","t0","return","finish","isLimitedAuthorization","subGroupMode","groupMode","LIMITED","isFullAuthorization","FULL","isMixedAuthorization","_ref3","isHaveActionsPermission","actionMode","getInitialGroup","group","isLimitedAuthorizationBySchema","menuLabel","subMenuLabel","authSchema","currMenu","currSubMenu","subMenu","sm","isUserLimitedBySchema","userLimited","isOdd","num","getLabelByType","getImgSrcByUserStatus","array_move","old_index","new_index","k","parseSrcIframe","src","exec","addDays","days","result","setDate","prepareEffectiveStartDate","energy","isCyclic","_EffectiveStartDate$t","nextBusinessDate","nDays","now","dayOfTheWeek","getDay","Math","floor","setTime","addBusinessDays","prepareFrequenciesToDisplay","MONTHLY","BIMONTHLY","QUARTERLY","FOURMONTHLY","transformPieceType","pt","ADHOC","getAPEFromObject","replaceAll","parseUploadAmendments","_ref5","asyncToGenerator","mark","_callee","file","_context","reject","Papa","header","skipEmptyLines","complete","results","errors","data","_x4","apply","checkIsDisableSwitchSelect","_ref6","channel","isNil","some","curr","fetchContextAsync","updatePasswordAsync","createSponsorAsync","updateCustomerAsync","updateBillingAsync","mapGetContext","userId","sessionStorage","getItem","contracts","fetchLoginAsync","mapUpdateCoholder","mode","effectiveDate","mapUpdateBilling","_ref14","_ref13","ibanCode","rumCode","billingAddress","debitDay","routingMode","DEBIT_DAY","ROUTING_MODE","preparePayloadUpdateBilling","paymentMode","controlData","slDt","custom","arrEnergies","prepareData","tag","customerType","triggerButton","serviceCalled","statusAction","logMessage","returnCode","energyList","customerIdentificationKey","dataLS","localStorage","localStorageData","environnement","timestamp","toString","app","prepareObject","jsonLog","setItem","settings","headers","Content-Type","x-api-key","responseType","crossDomain","consoleLog","ajax","ajaxError","subscribe","casesExtractAsync","resetPasswordAsync","reinitSubscriptionEmailAsync","resetReduxStore","removeError","resetAuthErrors","removeReinitSubscriptionMessage","refreshSessionExpirationStatus","fetchContractAsync","resetContractState","setContract","resetCreateIndex","fetchMeterConfigAsync","fetchMeterReadingAsync","createIndexAsync","mapGetMeterReading","pointOfDelivery","energyType","reads","fetchFilesListAsync","Font","register","family","fonts","fontWeight","Montserrat400","Montserrat800","styles","StyleSheet","create","container","flexDirection","alignItems","img","width","height","padding","components_Header","react_pdf_browser_es","style","Logo","flex","Container","children","pageNumber","position","fontSize","bottom","left","right","textAlign","PageNumber","render","totalPages","fixed","justifyContent","primary","fontFamily","secondary","titles_Main","_Wording$titles","Wording","titles","main","sub_title","context","createContext","ProofOfPaymentProvider","Provider","useProof","useContext","ProofContext","energyImg","paddingBottom","paddingTop","margin","textContainer","infoTitle","infoValue","infoMargin","marginBottom","Info","_ref$style","objectSpread","customerInfo","dateOfIssue","mail","CustomerInfo","_useProof","ElecIcon","GasIcon","CustomerInfo_Info","beneficiaryInfo","marginTop","objectFit","BeneficiaryTitle","ArrowIcon","imgTextContainer","phoneText","marginRight","moreText","ImageText","BeneficiaryInfo","titles_BeneficiaryTitle","BeneficiaryInfo_ImageText","MailIcon","PhoneIcon","phoneDescription","more","FacebookIcon","facebook","WebIcon","urlfq","YoutubeIcon","youtube","borderRadius","LeftColumn","LeftColumn_CustomerInfo","LeftColumn_BeneficiaryInfo","borderBottom","borderBottomColor","Section","ObjectTitle","object","Adresse","_ref$data","number_street","zip_code_city","textValueContainer","TextValue","sections","offer","modulation","frequencyMapping","mappingEnergy","modulationCheck","chosenPackages","Offer","_useProof$contract","installmentFrequency","RightColumn_TextValue","summary","transactionDate","paymentRef","paymentModeMapping","Summary","_useProof$piece","piecePaymentMode","payment_method_name","paymentDate","pm","Cell","content","mergedStyles","weighting","isHeader","borderRight","wordWrap","whiteSpace","DataCell","Table_Cell","assign","Row","rowCells","Children","toArray","remainingWeighting","numberOfWeightingsDefined","weightingsPerNotSpecified","ceil","borderLeft","borderTop","display","rc","columnIndex","cloneElement","includeLeftBorder","includeRightBorder","Header","Table_Row","Body","rowIndex","Table","tableHeader","tableBody","rowStyle","CustomTable","dataToDisplay","transactionName","internal_invoice_nature_text","Table_Table","Header_Header","Cell_Cell","Body_Body","DataCell_DataCell","r","address","beneficiary","clientTitle","RightColumn","titles_Object","RightColumn_Adresse","number","street","postalCode","townName","titles_Section","RightColumn_Offer","RightColumn_Summary","RightColumn_CustomTable","fullName","BottomText","attestDate","opacity","Footer","LogoWekiwi","footer","text1","text2","page","@media max-width: 400","columnsContainer","ProofOfPayment","author","components_Container","components_LeftColumn","components_RightColumn","components_BottomText","components_Footer","components_PageNumber","resetSupportingDocumentError","fetchPiecesAsync","fetchEPInvoicesAsync","createPaymentAsync","fetchBalanceAsync","getSupportingDocumentsAsync","mapGetEPInvoice","jsonrpc","customer_ref","contract_ref","prepareEPInvoicesPayload","isPay","isPayEP","description","mapGetSupportingDocuments","_ref7","_action$payload","actionProps","objectWithoutProperties","pdf","PDFs_ProofOfPayment_ProofOfPayment","toBlob","blob","open","createObjectURL","fetchPackageAsync","fetchProductAsync","fetchOfferAsync","updatePackageAsync","mapFetchPackDynamic","preparePayloadFetchPackDynamic","isSubscription","packagesList","preparePayloadFetchOffer","modifiedContracts","estimates","rateOption","TOTAL_HOUR","HIGH_LOW","HIGH","LOW","getEstimates","contractChannel","Boolean","mapFetchOffer","_ref8","offers","mapFetchProduct","_ref10","_ref9","contextOfUse","preparePayloadFetchProduct","productsList","createProduct","_ref15","payloadProduct","additionalRates","chosenProduct","mapUpdatePackage","_ref17","_ref16","product","option","modifiedContract","INSTALLMENT_FREQUENCY","PACKAGE","PRODUCT","OPTIONS","updated","active","preparePayloadUpdatePackage","fetchCustomerContractAsync","uploadAmendmentsAsync","resetUploadAmendments","mapGetCustomerContract","preparePayloadCustomerContract","WordingConstant","Errors","defaultMessage","default","RequestError","_Error","inherits","wrapNativeSuper","ExternalError","_RequestError3","NoDaysListError","_RequestError4","noDaysList","NoPackageListError","_RequestError5","noPackageList","NoMatchingPackagesError","_RequestError6","noMatchingPackages","NoEnergySelectionError","_RequestError7","noEnergySelection","SessionExpiredError","_RequestError8","sessionExpired","fetchOrderAsync","searchClientAsync","preparePayloadOrder","fromDate","toDate","orderNumber","processType","externalReference","createdBy","searchUserGroupAsync","mapGetSearchUserGroup","preparePayloadSearchUserGroup","userList","caseResultRetryFirstPaymentAsync","retryFirstPayment","mapGetRetryFirstPayment","preparePayloadClientSpace","createGroupAsync","resetGroupResponse","mapCreateGroup","preparePayloadCreateGroup","getGroupAsync","resetGroupListResponse","createUserAsync","resetCreateUserResponse","mapCreateUser","preparePayloadCreateUser","createPasswordAsync","mapCreatePassword","preparePayloadCreatePssword","manageUserAsync","resetManageUserResponse","mapManageUser","preparePayloadManageUser","transferGetContractAsync","transferContractAsync","resetResponse","resetResponseTransfer","mapTransferContract","preparePayloadTransferContract","adminClientSpaceAsync","resetAdminClientSpaceResponse","mapGetClientSpace","createPaymentCBAsync","resetModal","createAction","combineEpics","action$","state$","dependency","isActionOf","request","switchMap","user","token","currentUser","accessToken","groupe","autorizationsScheme","validated","mapPostLogin","slicedToArray","loginResponse","forkJoin","modifiedAction","contextResponse","getType","errResponse","mapPostResetPassword","mapGetContract","mapGetEvents","marketing","newsletter","mapUpdateCustomer","customerResponse","coholderResponse","event","_ref11","_ref12","billingResponse","_ref18","readingDate","mapGetMeterConfig","meterConfig","meterReading","meterConfigResponse","meterReadingResponse","meterReads","preparePayloadIndex","mapPostIndex","mapUploadAmendments","_ref20","_ref19","oldPassword","newPassword","mapUpdatePassword","_ref22","_ref21","sponsorId","sponsorFirstName","sponsorLastName","targetEmail","mapCreateSponsor","_ref$mode","preparePayloadListFile","mapGetFiles","invoiceId","contractId","preparePiecesPayload","mapGetPiece","payment","dueDate","partner_ref","prepareCreatePaymentPayload","financialPieces","mapResubmit","mapGetBalance","reference","pointOfDeliveryList","preparePayloadFetchPackage","prepaymentFrequencies","productCode","mapFetchPackage","estimate","timeFrame","packageQuantity","mapFetchPackageEstimates","productResponse","offerResponse","promiseProduct","promiseOffer","products","packageResponse","firstResponse","secondResponse","newActionEvent","_ref23","mapReinitSubscriptionEmail","lambdaFunctionName","mapGetOrder","mapGetGroup","customerId","mapGetTransferContract","mapCreateCBPayment","mapGetSearchedClients","initialScheme","root","initialState","loading","unauthorized","reinit","authReducer","actions","valueOf","createPasswordActions","caseResultActions","toConsumableArray","paymentCBActions","contractActions","eventActions","adminClientSpaceActions","orderActions","consumptionActions","profileActions","fileActions","paymentActions","packageActions","createGroupActions","getGroupActions","manageUserActions","createUserActions","customerContractActions","userGroupActions","transferContractActions","initialCustomerFullName","initialAddress","country","netArea","initialContact","MR","initialEPInvoice","PAYMENT_SCHEDULE","EMAIL","partner_name","partner_reference","invoice_type","invoice_number","invoice_date","invoice_date_due","invoice_amount_total_signed","invoice_amount_residual_signed","invoice_state","hgz_invoice_nature_code","hgz_invoice_nature_text","internal_invoice_nature_code","payment_method_code","invoicing_period_start_date","replacing_payment_count","energy_paid_number_replays","initialUnitPriceWithLabel","ADDITIONAL_RATE","price","unit","initialProduct","productType","initialContract","contractStatus","EFFECTIVE","effectiveStartRange","effectiveStartDate","subscriptionDate","lastRenewDate","sponsorNumber","contractCategory","deliveryCategoryCode","deliveryPoint","deliveryPointCategory","grdCode","gridRate","deliveryStatus","profile","meterNumber","meterType","smartMeterStatus","readingFrequency","contractualCapacity","contractualCapacityUnit","MOVE_IN","express","supplierCalendar","appointmentTimeslot","NONE","index","registers","UNKNOWN","billingMode","settlementFrequency","BIANNUAL","finance","bicCode","bankName","accountOwnerLastName","accountOwnerFirstName","billingContact","invoiceRoutingMode","invoiceEmail","termCode","customerNumber","customerCategoryCode","updateResponse","checkUpdateProfile","checkUpdateContact","checkUpdateBilling","checkUpdateIban","profileReducer","_action$payload$custo","_action$payload$custo2","selectedContractNumber","currentContract","contractReducer","isFetched","_action$payload2","_action$payload3","events","eventReducer","digitSize","errorMeterConfig","errorMeterReading","consumptionReducer","noData","files","documentsList","invoice_list","payment_list","documents","invoices","payments","fileReducer","epInvoices","epPayments","balance","supportingDocument","paymentReducer","prepayments","adhocPieces","invoice","INVOICE","pp","PREPAYMENT","adh","loadingPackage","loadingOffer","packageReducer","pf","customers","transferContract","customersContractReducer","order","searchClient","orderReducer","groupList","administrationList","manageUserResponse","createUserResponse","createGroupResponse","userGroupReducer","administrationClientSpace","retryFirstPaymentResponse","retryFirstPaymentReducer","transferContractResponse","transferContractReducer","iframe","stripe","adhocPaymentId","transactionId","responsePayload","requestProps","rootReducer","combineReducers","paymentCBReducer","version","APP_VERSION","STORAGE_KEY","saveState","storeState","serializedState","loadState","fetchApiRequestBlob","bodyRequest","configPath","fetch","sent","_x3","_x5","expires","removeItem","Observable","observer","modifiedBody","ctrChan","storageGroup","renderChannel","seller","Accept","isArray","services","getUserId","epicMiddleware","createEpicMiddleware","dependencies","composeEnhancers","compose","persistedState","middlewares","store","createStore","applyMiddleware","getState","run","rootEpic","hostname","match","AuthService","isValidated","CustomButton","disabled","onClick","arrowLeft","arrowRight","isLoading","heavy","classNames","CustomInput","setting","htmlFor","isInterrogationVisible","onToggleModal","onKeyDown","tabIndex","deleteButton","deleteButtonOnClick","isLocked","onInputChange","minLength","maxLength","defaultValue","onBlur","onKeyPress","CustomDayPicker","dateHighlighted","weekend","daysOfWeek","components_CustomInput","toLocaleDateString","DayPicker_default","selectedDays","onDayClick","handleChangeDay","LoadingComponent","columns","defaultPageSize","noDataText","sortable","buttonTitle","handleButtonClick","SubComponent","PaginationComponent","showPagination","showPaginationBottom","downloadHeaders","downloadData","downloadFilename","downloadButtonTitle","pageSize","filterable","react_table_es","getTrProps","rowInfo","column","data-qnt","original","SOME_VALUE_WITH_QUANTITY_OF_CHILDREN_ROWS","components_CustomButton","react_csv","filename","CustomToggle","react","checked","handleCheck","handleClick","indicatorSeparatorStyle","alignSelf","IndicatorSeparator","innerProps","CustomSelect","isMenuOpen","val","handleChangeSelect","options","isClearable","isMulti","inputValue","dist_react_select_browser_esm","classNamePrefix","isDisabled","_","formatCreateLabel","react_select_browser_esm","closeMenuOnSelect","components","onMenuOpen","handleChange","onMenuClose","CustomModal","show","showCloseButton","customStyle","popup","closeButton","PriceWording","DetailWording","detail","CommonUnit","PlanElement","prices","additionalOptions","currentProductCodes","currentAdditionalOptions","handleToggle","loadingOption","containerClassName","contractProduct","priceClassName","priceUnit","priceCyclic","details","totalAmount","subscription","unitPrices","additionalRate","totalBudget","discountRates","discountRate","renderPrice","fix_part","displayedUnit","totalhour","high","low","paymentFrequency","transformPriceLabel","formattedPrice","parseFloat","toFixed","react_content_loader_es","fix","consumption","grossPrice","rate","idx1","idx2","discountPrice","includes","renderDetail","fixPrice","components_CustomToggle","fixPriceDescription","pro","currentTarget","EnergyDetail","WordingOption","EnergyGauge","initial","ranges","maxValue","useEffect","renderProgressBar","idx","plan","gauge","summer","winter","js_default","formatLabel","minValue","step","PackageElement","chosen","iconizing","CustomCheckbox","imageSrc","alt","CustomRadio","MainPage","SideBar","withRouter","history","handleLogout","logout","routes","isAdmin","adm_user","adm_groupe","numClient","SideBar_LogoutButton","route","hidden","links","subRoute","indexRoute","FAQ","href","rel","Link","to","BannerElement","imgSrc","span","PROFESSIONAL","Banner","dropDown","selectItem","Banner_BannerElement","setImage","_this$props2","renderDefaultItem","Modal","_ref$state","_ref$showCloseButton","handleCancel","handleValidate","customDescription","descriptionStyle","showLogo","stopPropagation","dangerouslySetInnerHTML","__html","prepareDescription","renderCustomDescriptipn","cancelButton","validateButton","showBottom","objectDestructuringEmpty","articles","link","socialLink","linkedin","instagram","twitter","footerBottomText","PaymentPage","Balance","contractBalance","CustomTransfer","inputs","handleInputChange","handleModal","modalTitle","input","renderSubLink","displayInput","ConsumptionPage","CustomProgressbar","progressBar","ReactCustomizableProgressbar_default","steps","radius","progress","strokeWidth","strokeColor","trackStrokeWidth","pointerRadius","pointerStrokeWidth","pointerStrokeColor","pathImg","OptionElement","currentOptions","idToggle","Chart","helpers","drawRoundedTopRectangle","ctx","beginPath","x_tl","x_tr","y_tl","y_tr","x_bl","x_br","y_bl","y_br","moveTo","lineTo","quadraticCurveTo","closePath","elements","RoundedTopRectangle","Rectangle","extend","draw","top","signX","signY","borderSkipped","_chart","vm","_view","borderWidth","horizontal","base","barSize","min","abs","halfStroke","barWidth","prevTop","barRadius","fillStyle","strokeStyle","borderColor","lineWidth","fill","stroke","defaults","roundedBar","clone","bar","controllers","dataElementType","plugin","afterDraw","chartInstance","easing","isDetailed","responsive","legend","scales","yAxes","stacked","gridLines","ticks","beginAtZero","xAxes","tooltips","titleFontSize","titleFontColor","bodyFontColor","bodyFontSize","xPadding","callbacks","tooltipItem","datasets","datasetIndex","round","yLabel","chart","afterLabel","currentMonth","labels","monthsMapping","StackedBar","consumptions","highs","lows","totalhours","canvasRef","useRef","_useState","useState","_useState2","detailed","setDetailed","_useState3","_useState4","setChart","detailData","package","barThickness","stack","normalData","update","document","getElementById","innerHTML","generateLegend","getContext","plugins","toggleButtonText","ref","WordingComont","filterPages","visiblePages","getVisiblePages","total","Pagination","pages","onPageChange","setVisiblePages","changePage","vps","activePage","previousText","array","nextText","BackgroundElement","SearchService","handleSearch$","raw","unsubscribe","term","doSearch","promise","city","Subject","debounceTime","distinctUntilChanged","Prompts","prompts","throttleDelay","formatOption","EAdditionalRateTypes","EBillingModes","ECategories","ECivilities","ECompanyTypes","EContractStatuses","EContractualCapacityUnits","ECustomerStatuses","ECustomerTypes","EDeliveryPointCategories","EDeliveryPointStates","EDeliveryStatuses","EEffectiveStartRanges","EEnergyTypes","EFirstPaymentCBStatuses","EHeatingTypes","EGridRates","EHousingTypes","EInvoiceRoutingModes","EInstallmentFrequencies","EOrderStatuses","EPaymentModes","EProductTypes","EProfiles","ERateOptions","EReadingFrequencies","ERebateCodeTypes","EResidenceTypes","EResultSponsor","ERoles","ESavingModes","ESettlementFrequencies","ESubscriptionTypes","ETimeframes","ETimeslots","ETypes","EUnitAmounts","PostalCodeSelect","componentDidUpdate","prevProps","componentWillUnmount","searchService","setRaw","handleSelection","throttle","initialSelection","initialOptions","onSelection","refreshPostalCodeOptions","toPromise","codes","pc","_this$state","components_CustomSelect","selects","nextState","isCyclicalProduct","isEqualProduct","prod1","prod2","rateLess1","omit","rateLess2","isEqual","isEqualAuthorizedPackages","auth1","auth2","winter1","WINTER","winter2","summer1","SUMMER","summer2","getAddressStreetLabel","parseOrderRebateCode","orderCode","shouldBreak","thirdParty","toEnergies","energies","ELECTRICITY_AND_GAS","ELECTRICTY","GAS","ELECTRICITY","requiresPayment","firstPaymentCB","CYCLICAL_BILLING","filterAppointments","appointments","condition","element","available","lastDay","tomorrow","before","AdminSubscriptionContainer","Situation","WordingDebitDay","ProfilePage","baseClassName","paymentModeOptions","paymentModes","directDebit","DIRECT_DEBIT","paymentCB","BANK_TRANSFER","preparePaymentModOptions","cyclicalProducts","energyTypes","elec","gas","switchingSupplierOptions","later","initialDateValues","changingSupplierStartTime","electricityExpress","electricityFirstPaymentCB","electricityTimeslots","electricityTimeslotSelection","gasExpress","gasFirstPaymentCB","gasTimeslots","gasTimeslotSelection","movingInElectricityDatePick","movingInGasDatePick","addressValue","addressCoords","civilitySelection","currentProcessTypeSelection","electricityAppointments","firstNameValue","gasAppointments","IBANValue","identicalAddressToggleState","isJointContract","paymentModeSelection","postalCodeSelection","lastNameValue","SituationSection","paymentMethod","debitDaysEnum","handleAddressInput","handleCoordsInput","handleIBANInput","handleIdenticalAddressToggle","handleJointContractToggle","handleMovingInDateCalenderOptions","handleMovingInDatePickerPick","handlePaymentModeSelection","handlePostalCodeSelection","handleSituationToggle","handleSwitchingSupplierContractStartTimeSelection","handleTimeslotSelection","validate","handleDebitDay","init","siteOptionSelection","isCyclicalProductElec","isCyclicalProductGas","initialParams","movingInParams","switchParams","coords","iban","parsePreviousMovingInParams","SWITCH","parsePreviousSwitchParams","initialRange","coholderCivility","coholderFirstName","coholderLastName","fetchAppointments","prevState","prevIsIndividual","isIndividual","prevSiteOptionSelection","prevMovingInElectricityDatePick","prevMovingInGasDatePick","_this$props3","_this$state2","isSwitch","shouldUpdateelectricityTimeslots","shouldUpdategasTimeslots","fetchTimeSlots","getCalendarAppointment","shouldFetchElectricityAppointements","shouldFetchGasAppointments","electricity","searchAppointmentTimeslot","nextValue","identical","toggled","_this$state4","nmMonth","switchDropdownValues","day","actualDate","wekiwiPro","setMonth","_this$state5","apps","appDate","matchDate","nextFirstPaymentCB","situation","_this$props5","_this$state6","prepareDateValue","startTime","getDateByEnergy","nextDateProps","opt","timeslot","hasElectricity","hasGas","parsePreviousEnergyMovingInParams","electricityParams","timeslots","timeslotSelection","datePick","gasParams","appointmentsRes","previousDatePick","previousTimeslot","appointmentDay","previousAppDate","previousAppDateStr","appDateStr","timeslotsRes","switchData","nextDate","electricityEffectiveStartDate","gasEffectiveStartDate","electricityTimeslot","gasTimeslot","electricityDueDate","gasDueDate","_this$props7","onValidationStatusChange","_this$state7","hasValidInput","setHours","selectedDay","_this$props8","_this$state8","dateContract","bundle","switch","toDateContract","initialCoords","bcn","components_CustomRadio","movingIn","switchingSupplier","components_CustomDatePicker","dropdownContractOptions","dropdownContractOptionSelection","handleChangeTimeslotSelect","handleDateCalendarOption","handleDatePicker","handleDropdownContract","paddingLeft","dd","debitDayLabel","terms","disclaimerHead","disclaimerBody","components_AddressSelect","onAddressInputChange","onCoordsChange","onIdenticalAddressToggle","onPostalCodeSelection","identicalAddress","jointAccount","yes","no","components_CoordsInputs","Components","DateContainer","DateConatiner","renderInfosDiv","contractDate","selectedDate","dateExtraCoat","handleChangeBool","updatedSetting","defineProperty","hideDiv","handleChangeBoolSelect","showSelect","renderTextWithCalendar","shouldDisplayCBWarning","attention","renderTextSwitchByCalendar","classN","renderDescription","renderTheoreticalDate","switchType","selectedDates","renderTheoreticalDate21Days","updatedSelectedDates","renderCalendar","renderTitle","LOCAL","MONTH","weekdaysShort","WEEKDAYS_SHORT","weekdaysLong","WEEKDAYS_LONG","firstDayOfWeek","FIRST_DAY_OF_WEEK","inputProps","readOnly","onFocus","hideOnDayClick","onDayPickerShow","onDayPickerHide","renderSelectTimeslot","_this$props4","ts","noTimeslotLabel","remove","timeslotOptions","paragraphClassName","energyStr","timeslotSelectorElectricity","timeslotSelectorGas","timeslotSelectorTitle","timeslotSelectorPrompt","placeholderSelector","isLockedSituationSelect","nextSetting","_this$props6","Calender","displayText","moved","changeSupplier","CustomDatePicker","nextProps","CustomDatePicker_DateContainer","activeTileClassName","highlightedTileClassName","wrappedTextClassName","unwrappedTextClassName","wrapToggleClassName","Tile","onToggle","titleHint","wrapped","setWrapped","mainClassName","textStatusClassName","wrapToggleStr","cn","_len","names","_key","CheckboxTile","distinctCheckbox","components_CustomCheckbox","components_Tile","toIsc","fromCharCode","toColonHeading","removeSpaces","AddressSelect","checkboxesClassName","inputsClassName","addressClassName","addressError","setInitialAddress","setAddress","_useState5","_useState6","setCity","_useState7","_useState8","isIdentical","setIdentical","_useState9","_useState10","setCoords","_useState11","_useState12","coordsErrors","setCoordsErrors","nextErrors","firstNameChanged","lastNameChanged","ClientData","firstNameValidity","lastNameValidity","nextInput","formatAddressString","components_PostalCodeSelect","titleClassName","textClassName","CustomError","hiddenClassName","centeredClassName","windowClassName","contentClassName","backgroundClassName","closeButtonClassName","CustomOverlay","centered","handleClose","background","el","elHeight","getBoundingClientRect","winHeight","innerHeight","scrollIntoView","behavior","block","Separator","CloseButton","leftClassName","rightClassName","ToggleIndicator","textAlignment","isLeft","firstNameText","lastNameText","civilStatuses","mr","mme","MRS","MS","CoordsInputs","updates","merge","civilityValue","civilStatus","TimelineStatus","getColor","isPro","segmentIndx","colors","getDataSegment","prepare","loopArr","lastColor","getLabels","SegmentIcon","cur","getImageByColor","Segment","Segment_SegmentIcon","welcome","Step","isLast","openDetails","setOpen","dates","activContract","buildDates","_renderByType","_getDataSegment3","_getDataSegment4","first","second","isNextFull","check","component","Segment_Step","Segment_Segment","renderProfessional","_getDataSegment","_getDataSegment2","third","secondLabel","renderIndividual","lb","wording","PaymentCBModal","StripeForm","clientSecret","onFormValidate","clientName","setIsLoading","useElements","useStripe","onValidateForm","preventDefault","stripeElementError","getElement","CardNumberElement","elementError","confirmCardPayment","payment_method","card","billing_details","_x","renderFakeCard","cardNumber","isClicked","setisClicked","lib","onCopy","isDebugMode","onSubmit","label_card_number","react_stripe_umd","label_card_expiry","label_card_cvc","debugLabel","button_cancel","button_validate","withLoader_LoadingSpinner","Group","schemaProps","newOption","propsSelect","currentGroup","withSelectAll","AuthorizationSchemaGroup","AuthSchemaItem","handleSetCheckbox","handleSetActionMod","handleSetSubMenu","handleSetAccess","_ref$itemValues","itemValues","isChecked","subMenus","accessItem","actionModes","aMod","uId","subMenuItems","subMenuItem","uIdItem","accessItems","access","uIdMenu","READ_ONLY","elm","readeOnly","renderByActionType","sortingAlg","rang","getAuthorizationSchema","isSelectedAll","setSelectAll","itemsState","setItemValue","actionsModesState","setModesValue","subMenuState","setSubMenuValue","accessState","setAccessState","actModes","subMn","renderItems","prepareAccess","ai","build","buildAuthorizationSchema","prepareArr","itemKey","ItemElm","menuKey","MenuItem","AccessItem","ActionItem","prepareMenuObject","handleSetItemValue","newValues","newMenus","readOnlyItems","currentMenusByItem","newMenuValues","objBuild","mods","selectAll","AuthorizationSchemaGroup_AuthSchemaItem","LoadingSpinner","defaultOptions","loop","autoplay","animationData","dist_default","isStopped","LoaderModal","components_CustomModal","withLoader","debug","WrappedComponent","handleCloseModal","withLoader_LoaderModal","components_Modal","expiredSession","CustomInputNewGen","genericError","CustomButtonNewGen","footerAuth","WordingTitle","SlidingMenu","isOpen","setIsOpen","_React$useState","_React$useState2","isOpenIndividual","setIsOpenIndividual","individual","subItem","subIndex","CustomButton_CustomButtonNewGen","button","countries","AuthPage","AuthContainer","fields","toggle","responseMessage","handleButtonLogin","handleButtonPassForgot","handleInputError","isSlidingMenuOpen","handleSlidingMenu","isEmail","handleEnterPressed","keyCode","which","components_SlidingMenu","passForgot","title2","subTitle","subTitle2","CustomInput_CustomInputNewGen","errorMsg","msg","validButton","login","errorLogin","errorPassword","pass","passForgotLoginPage","dispatchProps","authDispatch","resetPasswordDispatch","resetAuthErrorsDispatch","WrappedAuth","_React$Component","trim","errorEmail","notEmail","notLogin","notPassword","handleSlidingMenuOpen","slidingMenu","sendError","errorTitle","createClass","_this$props$authState","authState","isSignIn","isAuthenticated","isVlaidated","Redirect","connect","ResetPasswordPage","responseMessages","confirmPassword","handleGoBack","errorForm","regex","formatErrorMessage","NewPass","passValidate","backButton","renderConnexion","FooterAuth","resetAuthError","WrappedPassword","ResetPasswordContainer","temporaryPassword","VALIDATION","AdminHomePage","buildFinalContracts","finalContracts","elecPrepare","selectedFrequency","gasPrepare","isCyclical","fmtDate","billingModeCode","hLog","handleRequest","args","defaultError","pathStr","errCode","errMessage","RequestErrors","_x2","checkSponsor","resultSponsor","OK","KO","_x6","searchSiret","_callee5","_context5","_callee4","_context4","X-INSEE-Api-Key-Integration","json","_x7","_callee7","_args7","_context7","_callee6","previousContract","isPaymentSchedule","daysList","_context6","isNaN","deliveryState","getDeliveryPointPackages","_callee8","_args8","_context8","filterGetPackagesError","getPackDynamic","_callee9","_args9","_context9","getRawDeliveryPointPackages","_callee10","_args10","_context10","getEstimatesPackages","_callee11","_args11","_context11","_callee12","_args12","_context12","getOrder","_callee14","_args14","_context14","_callee13","_context13","getOrderStatus","_callee16","_args16","_context16","_callee15","_context15","getSurveyPackages","_callee17","survey","_args17","_context17","getProducts","_callee19","_args19","_context19","_callee18","_context18","ctr","nextCtr","hasElectricityMatch","hasGasMatch","compareAllJsonFieldsInArray","noMatchingElectricityPackages","noMatchingGasPackages","Steps","_callee21","_args21","_context21","_callee20","_context20","saveOrder","_callee23","_args23","_context23","_callee22","_context22","savingMode","SEND_EMAIL_LINK","_ref24","_callee25","_context25","_ref25","_callee24","dayStr","monthStr","dateStr","_context24","without","_x8","_x9","_ref26","_callee27","_args27","_context27","_ref27","_callee26","_context26","getCasesHistory","_ref28","_callee28","_context28","subtract","toISOString","offset","limit","CustomerFormModal","accomodationType","area","heatingType","inhabitants","livingIn","accomodationOptions","accomodationTypes","PRINCIPAL","SECONDARY","accomodation","areaOptions","gap","heatingTypeOptions","heatingTypes","common","COLLECTIVE","inhabitantsOptions","livingInOptions","livingInTypes","apartment","APPARTMENT","house","HOUSE","CustomerSurveyModal","handleValidationClick","handleConsumptionInput","handleAccomodationTypeSelection","handleAreaSelection","handleHeatingTypeSelection","handleInhabitantsSelection","handleLivingInSelection","handleRateOptionSelection","onCancel","onValidation","validCount","isc","rateOptions","prompt","highLow","totalHours","unknown","cancel","PaymentIframeModal","Success","orderReference","Icon","congratulations","Retry","logoClassName","buttonsClassName","finalizeClassName","onFinalize","onRetry","ErrorMessage","refused","tch","finalize","callback","retry","stripeProm","loadStripe","StripeContainer","stripeInformations","billName","components_StripeForm","billingIframeSrc","firstBillingLock","firstPaymentLock","paymentIframeSrc","BILLING","stripeErrorMessage","iframeClassName","iframeRegex","parseIframeSrc","srcStr","handleBillingOnLoad","handleFinalize","handlePaymentOnLoad","attemptPayment","handleSuccess","closeModalButton","previousOrder","validation","firstPaymentCBStatus","PENDING","IN_FAILURE","CANCELED","hasCompletedOrder","orderStatus","FINALIZED","FINALIZED_WITHOUT_DOC","hasCompletedPayment","payOnly","SUCCESS","PAYMENT","RETRY_PAYMENT","prevOrder","pay","load","checkOrderStatus","signatureTitle","missingOrderNumber","orderStatusFetch","isSuccess","isIdle","IN_PROGRESS","isFailure","signatureError","unexpected","paymentStatus","onClose","recursionCount","paymentTitle","paymentStatusRefresh","setLoading","_this3","currentStep","components_CloseButton","onLoad","StripeFormContainer","errMsg","PaymentIframeModal_Retry","PaymentIframeModal_Success","PaymentIframeModal_PaymentIframeModal","ResetModal","onBack","onConfirm","back","confirm","legalStatuses","LegalStatuses","nom","inputRefreshDelay","validationDelay","birthDateText","businessNameText","businessName","SIRETText","legalStatus","SIRET","mailAddressText","mailAddress","phoneNumberText","phoneNumber","hasError","defaultBirthTown","ClientDataSection","pendingValidation","handleSetForeignData","birthTownCountry","handleBirthTownName","birthTownTownName","handleChangeCountryBirth","birthTownPostalCode","newCountry","newPostalCOde","newTownName","birthDatePick","birthDatePickPro","businessNameValue","SIRETValue","mailAddressValue","phoneNumberValue","addressAddressValue","firstNameError","lastNameError","birthDateError","birthDateErrorPro","businessNameError","groupError","SIRETError","mailAddressError","phoneNumberError","addressAddressError","civilStatusSelection","legalStatusSelection","APE","defaultGroup","groupSelected","groupSelection","handleBirthTownSelection","handleLegalStatusSelection","handleGroupSelection","handleBirthDatePick","handleBirthDatePickPro","handleBusinessNameInput","handleSIRETInput","handleMailAddressInput","handlePhoneNumberInput","handleBusinessNameChange","handleSIRETChange","handleMailAddressChange","handlePhoneNumberChange","handleAddressChange","handleFirstNameError","debounce","handleLastNameError","handleBusinessNameError","handleSIRETError","handleMailAddressError","handlePhoneNumberError","handleAddressError","initWithUrl","checkData","birthCountry","birthPostalCode","birthTown","prepareControlledObject","emptyField","birthDateValidity","birthConditionValidity","SIRETValidity","mailAddressValidity","groupValidity","phoneNumberValidity","addressValidity","getGroupError","getBirthDateError","getBirthDateErrorPro","accents","formatPhoneNumberString","formatLastNameString","ape","getFirstNameError","getLastNameError","getBusinessNameError","force","getSIRETError","getMailAddressError","getPhoneNumberError","getAddressError","hasIdenticalAddress","birthTownCheck","isValidForm","validatePostalCode","onIsIndividualToggle","coordsInputsErrors","coordsInputsValues","countryIsFrance","admin_Group","business","components_CustomDate","vl","countryBirth","birthPlace","MissingInformations","MissingInformationSection","requiresPCE","requiresPDL","showScrollButton","setShowScrollButton","promptText","handleScroll","scrollY","addEventListener","removeEventListener","scrollTo","BackUp","SeasonalOffersModal","gaugeClassName","bodyClassName","parseGaugeProps","authorizedPackages","pckg","initialProgress","findIndex","sum","win","max","parseGaugeSelectedItem","valueSum","valueWin","authorizedElectricityPackages","authorizedGasPackages","dismiss","electricityEnabled","gasEnabled","initialElectricitySelection","initialGasSelection","onValidate","handleSetGaugeProps","electricitySelection","setElectricitySelection","gasSelection","setGasSelection","electricityActivated","setElectricityActivated","gasActivated","setGasActivated","electricityGaugeProps","gasGaugeProps","electricityDefault","gasDefault","electricityTitle","components_EnergyGauge","gasTitle","optionsClassName","Recap","Options","electricityOptions","gasOptions","toggleOption","electricityOptionSelection","gasOptionSelection","components_CheckboxTile","clientConsumption","initState","ClientConsumption","handleModalClick","handleEstimatesPackagesByClient","isValide","setValide","showError","setShowError","showEstimateErr","setEstimetesErr","initStateValues","buildByEnergy","currContract","buildRateOption","st","currEstimate","checkByEnergy","en","checkGas","checkElec","valide","hightLowCheck","checkQuantity","coming","estQuantity","renderByRateOption","rateProp","currentEstimate","est","checkEstimate","estimateErr","handleSetTotalHourAndUnknown","initialConsumption","typeKey","handleSetHighLow","overrideModalClick","rt","border","currRate","mainEstimateErr","btnBack","btnValidate","esAcc","esCurr","findCurrEstim","rateState","_buildResponse","nextEstimate","nextTimeframe","filterOptions","opts","optionFilter","mapPackagePrepaymentFrequencies","currency","fee","displayFee","monthly","bimonthly","fourmonthly","quarterly","initialElectricityRateOptions","initialGasRateOptions","authorizedElectricityPackageSelection","authorizedGasPackageSelection","electricityFrequencies","electricityFrequencySelection","electricityPlans","electricityPlanSelection","electricityProducts","electricityProductSelection","gasFrequencies","gasFrequencySelection","gasPlans","gasPlanSelection","gasProducts","gasProductSelection","initialElectricityOptionSelection","initialGasOptionSelection","shouldShowGauge","showConsumptionModal","sortAuthorizedPackages","orderedTimeframePackages","summerIndex","winterIndex","_$partition","partition","_$partition2","matchFrequency","freq","OfferSection","controlChangeAfterSave","checkMainElec","checkMainGas","checkProductSelection","checkPlanSelection","checkFrequencySelection","checkElectricityProductSelection","checkElectricityPlanSelection","checkElectricityFrequency","electricitySelectedOptions","checkElectricityOptionSelection","checkGasProductSelection","checkGasPlanSelection","checkGasFrequency","gasSelectedOptions","checkGasOptionSelection","handleConsumptionModal","handleSeasonalOfferModalDismiss","handleElectricityFrequencySelection","handleElectricityPlanSelection","handleElectricityProductSelection","handleGasFrequencySelection","handleGasPlanSelection","handleGasProductSelection","handleOptionSelection","handleSeasonalOffersModalToggle","validateSeasonalOffersModal","prevContracts","prevElectricityEnabled","prevGasEnabled","prevPackages","prevProducts","prevFrequencies","prevIsPackageValid","isPackageValid","prevDeliveryPointPackages","deliveryPointPackages","refresh","plans","recommendedElectricityPlans","recommendedGasPlans","mappedFrequencies","prod","onProductSelection","dynamicValidation","electricityProductWithOptions","gasProductWithOptions","selectedElectricityOptions","selectedGasOptions","isFee","FEE","electricityProduct","electricityFrequency","electricityPackage","electricitySeasonalPackages","gasProduct","gasFrequency","gasPackage","gasSeasonalPackages","gaugeTarget","_this$state3","should","hasCyclicalElectricity","hasCyclicalGas","errorOffer","electricityProductText","electricityPlanText","gasProductText","gasPlanText","frequencyText","hasCyclicalElectricityProduct","hasCyclicalGasProduct","allowSeasonalSelection","shouldAllowSeasonalSelection","electricityPlanDefaultLabel","cyclicalPlaceholderText","gasPlanDefaultLabel","hasErrorOffer","heading","classnames","disabled-section","components_ToggleIndicator","seasonalActivation","adjust","components_CustomOverlay","modals_SeasonalOffersModal","OfferSection_Options","errorMessageAfterChangeInitailParams","OfferSection_ClientConsumption","RecapField","fieldsClassName","formatUnit","formattedUnit","PERCENT","formatUnitLabel","formattedLabel","EURO_KWH","unitPrice","formatFields","lines","shortid","generate","ln","line","RecapSection_RecapField","unitPricesArr","RecapGroup","rawDetailsPriceLines","priceAfterPresentation","rawPriceLine","formatLine","is","TOTAL_AMOUNT","isRawPriceDetail","l","TOTAL_BUDGET","isRebateDetail","ECONOMY","DISCOUNTED_UNIT_PRICE","DISCOUNTED_UNIT_PRICE_TTC","isPriceAfterRebateDetail","sortRawDetailsPriceLines","forfais","gaugeProps","renderChosenPackage","rawPrice","fined","prevAmount","nextAmount","additionalRatesDuplicateValue","detailsPrice_HT","nup","discountPrice_HT","discountPrice_TTC","groupsClassName","radioToggleClassName","codeInputClassName","codeOptions","sponsor","SPONSOR","promotional","PROMOTION","cashback","CASHBACK","Sections","RecapSection","onCodeValidation","validateSponsorCode","codeSelectionDefault","codeType","codeSelection","setCodeSelection","codeInputToggled","toggleCodeInput","setCode","codeError","setCodeError","selectedCode","codeInputHint","sponsorHint","cashbackHint","getCodeHint","codeInputPlaceholder","sponsorPlaceholder","promotionalPlaceholder","cashbackPlaceholder","getCodePlaceholder","handleCodeSelection","offerArr","groupClassNameSuffix","cntr","RecapSection_RecapGroup","components_CustomError","defaultTitle","missingSelection","Site","compoundOption","siteOptions","SiteSection","PCEError","PCEValue","PDLError","PDLValue","requestError","handleMissingSiteIDIfNeeded","handlePCEInput","handlePDLInput","handleSiteOptionSelection","submitData","onSiteOptionSelection","manageSelection","spltEng","PCE","PDL","hasValidPCE","checkPCEValidity","hasValidPDL","checkPDLValidity","validatePCE","validatePDL","onMissingSiteId","clickEnabled","PCERef","PDLRef","checkInputValidity","submitSiteData","validateSiteId","didValidateSurvey","elecAdress","gazAdress","offerPick","shouldShow","PDLPrompt","PCEPrompt","missingSiteID","Subscribe","saveClassName","signClassName","SubscribeSection","didSaveOrder","highlightSignature","triggerPopin","signatureEnabled","hasFinalizedOrder","isFinalized","signTitleString","sign","signButtonClassname","_ref2$electricityEffe","_ref2$gasEffectiveSta","hasAddress","every","save","hint1","hint2","hint","TopInformationSection","currOrderNbr","firstPaymentCBStatusStrs","orderStatusStrs","titleMode","maskClassName","buildSection","initialData","buildInitialSections","currentKey","customerContact","electricityDeliveryAddress","gasDeliveryAddress","isSurvey","masked","pendingOrder","rebateCode","rebateCodeType","selectedElectricityProduct","selectedGasProduct","shouldDisplayPaymentIframe","shouldDisplayResetModal","shouldDisplaySurveyModal","orderNbr","paramsOrderNumber","isNewSiteSectionData","pointsOfDeliveries","createRef","cloneDeep","fetchAppointmentTimeslot","fetchCalendarAppointment","getNextDisplayedSections","handleProductSelection","handleIsIndividualToggle","onSelectedGroup","handleMissingSiteID","handleMissingInformations","handleSiteModalValidation","hideModal","onReceivePackages","searchSIRET","handleClientDataValidation","handleCodeValidation","handleOfferValidation","handlePackDynamicValidation","handlePaymentModalDismiss","handleReset","handleResetCancel","handleSituationValidation","reset","triggerSignaturePopin","fetchOrder","bannedProperties","partialPrevState","partialState","isSign","customerAddress","client","typePayment","electricityContract","gasContract","buildPendingOrder","SDD","OTHER","previousOrderReference","previousOrderStatus","previousElectricityContractNumber","previousGasContractNumber","onInit","productCodePro","didSignOrder","getInitialSections","tp","COHOLDER","orderStr","orderStatuses","inProgress","paymentStr","finalized","paymentStatuses","pending","canceled","inFailure","errorHandler","finalContract","electricityIndex","gasIndex","newContracts","newPackages","newPackage","newContact","electricityEnergy","gasEnergy","budget","budgets","updatedErrorOffer","packageReal","dynamicPackage","elecPackage","ngPackage","updatedDeliveryPointPackages","missingEnergies","isNewSiteSectionDataCheckRender","paymentCBStatus","housingType","residenceType","inhabitantsNumber","parseGetPackageResponse","elecContract","addressParts","gazContract","_this4","parseGetProductsResponse","pendingState","nextKey","checkPointOfDelivery","offerCheck","section","targetSection","resetInitialData","_this$state9","nextSections","nextSectionsArr","checkDeliveryPoints","didCompleteSubcription","clientData","siteData","offerData","situationData","recapData","_this5","parsePreviousClientData","parsePreviousSiteData","parsePreviousOfferData","parsePreviousSituationData","parsePreviousRecapData","_x31","_x32","_this6","pkgRes","_this$state11","mainContract","isSame","a1","a2","addr1","addr2","compareAddress","subscriptionType","orderResponse","previousElectricityContract","previousGasContract","handleGetPackages","_map","_map2","elecPoints","gasPoints","prodRes","previousElectricityPackages","previousGasPackages","previousElectricityPlanSelection","previousGasPlanSelection","authPkg","previousElectricityFrequency","previousGasFrequency","previousElectricityOptions","previousGasOptions","movingInData","pick","nextStartRange","nextSwitchData","startRange","offerRes","fmtElectricity","rs","fmtGas","resContracts","buildOrder","handlerProps","_this7","defaultText","previousExternalReference","_this8","_this9","_this$state14","_this$getStatusWordin","getStatusWording","_this$getStatusWordin2","shouldShowSiteSection","shouldShowOfferSection","shouldShowStatusSection","shouldShowRecapSection","shouldShowMissingInformationSection","shouldShowSubscribeSection","shouldAllowSignOrder","shouldApplyMask","shouldHighlightSignButton","initialClientData","initialSiteData","initialOfferData","initialSituationData","initialRecapData","clientDataSectionKey","getSectionCurrentKey","siteSectionKey","offerSectionKey","situationSectionKey","recapSectionKey","missingInformationsSectionKey","subscribeSectionKey","modals_PaymentIframeModal","modals_ResetModal","ICLogo","sections_TopInformationSection","sections_ClientDataSection","modals_CustomerSurveyModal","components_Separator","sections_SiteSection","sections_OfferSection","sections_SituationSection","sections_RecapSection","sections_MissingInformationSection","sections_SubscribeSection","expKey","hasExpiredSession","didExpired","AdminSubscriptionPage","dispatch","dispatchCheckSessionExpiration","expired","own","withCheck","_args","ErrorScreen","NotFoundPage","NotFoundContainer","components_ErrorScreen","handleDayChange","CustomUpload","accept","multiple","SearchCaseContainer","situationStatus","searchClientRequest","searchClientSuccess","searchClientFailure","CustomerContracSearch","handleShowModal","useDispatch","isDisabledActionBtn","isMixed","isLimited","clientLastName","setclientLastName","clientFirstName","setClientFirstName","customerPhone","setCustomerPhone","customerEmail","setCustomerEmail","clientId","setClientId","setFrom","_useState13","_useState14","showGroupErrorMesage","setShowErroGroup","_useState15","_useState16","setTo","_useState17","_useState18","showErrorModal","setShowErrorModal","_useState19","_useState20","caseId","setCaseId","_useState21","_useState22","refExt","setRefExt","_useState23","_useState24","setCreatedBy","_useState25","defaultVal","renderDefaultGroup","_useState26","customerGroup","setCustomerGroup","_useState27","_useState28","customerSituation","setCustomerSituation","groupeValue","isObject","groupeCondition","mainCondition","elementMap","num_case","client_ref","clientPhoneNbr","btn_validate","small","btn_reset","button_reset","clientAccessButton","buttonAccessClient","clientAccessInput","upload_csv","components_CustomUpload_CustomUpload","btn","renderEndorsementGeneration","admin_CustomDate","withModal","_temp","_getPrototypeOf2","showModal","handleConfirmValidate","handleState","modalMessage","handleHideModal","_this$handleState","customerContractDispatch","uploadAmendmentsDispatch","resetUploadDispatch","WrappedSearchContainer","SearchContainer","schema","CASE","SEARCH_CASE","parsedAmendments","riders","getDescriptionStyleByCode","ErrorElement","defaultButton","defaultRowsNumber","TablePagination","getSafePage","canNextFromData","applyPage","showPageSizeOptions","showPageJump","canPrevious","onPageSizeChange","_this$props$PreviousC","PreviousComponent","_this$props$NextCompo","NextComponent","_this$props$showTotal","showTotalPages","dataLength","canNext","dataLengthCheck","cs","table-pagination-visibility","pageText","withTriangle","customElmTopAndBottom","collapseOnDataChange","customPageSIze","TheadComponent","renderCustomElement","showPaginationTop","resizable","useOutsideClick","contains","mappingStatus","Status","transferCustomerContract","transferContractDispatch","transferError","currentItem","setCurrentItem","setModal","setCurrentContract","divRef","allContracts","prepareColumns","accessor","transfertContractSubComponent","energie","no_contract","admin_Status","input_client_id","btn_client_access","btn_cancel","renderTransferContractModal","noResult","components_ErrorElement","admin_CustomTable","customerNbrOutdated","customerNbrTargeted","userName","success_text","error_text","CustomerContractContainer","ResetPasswordButton","labelTitle","warningMessageTitle","confMessage","ReinitSubscriptionEmailButton","reinitSubscriptionEmailDispatch","handleSubscriptionSendEmail","_ref$defaultEmail","defaultEmail","currentEmail","setCurrentEmail","sendCondition","sendEmail","reinit_message","enter_email","advice_message","UserAdministrationResult","CreateUserModal","getCivilityError","getUserNameError","userNameValidity","getClientNumberError","clientNumberValidity","EProcessType","createUser","isCustomerAndContract","setClientLastName","clientEmail","setClientEmail","groupId","setGroupId","setCivility","clientLastNameError","setClientLastNameError","clientFirstNameError","setClientFirstNameError","clientEmailError","setClientEmailError","civilityError","setCivilityError","setGroupError","setUsername","userNameError","setUserNameError","clientNumber","setClientNumber","clientNumberError","setClientNumberError","_useState29","_useState30","isCreatingUser","setCreatingUser","charAt","toLocaleLowerCase","createUserCondition","createClientCondition","buttonReset","btn_hide_modal","CreateGroupModal","succesMessage","failureMessage","createUsermodalResponse","RemoveUserButton","manageUser","setAdminSuccessModal","isAdminSpace","RemoveUser","removeUser","warningTitle","question","DELETE","EnableOrDesableuserButton","desableUser","enableUser","DesableUser","DISABLE","EnableUser","ENABLE","AdministrationClientSpace","openUserModal","setUserModal","openAdminSuccessModal","handleShowPopUp","setHandleShowPopUp","UserAdministrationContainer_RemoveUserButton","EnableOrDesableUserButton","UserAdministrationContainer_CreateUserModal","OutsideClickClass","wrapperRef","componentDidMount","handleClickOutside","setWrapperRef","node","CustomCollapse","firstElement","hideFirst","customClassName","setHeight","childrenElm","MessageCollapse","initialLength","admin_CustomCollapse","truncate","removeErrorDispatch","removeReinitSubscriptionMessageDispatch","transferGetContractDispatch","adminClientSpaceAsyncDispatch","admin_MessageCollapse","see_customer","openClient","handleButtonDropdown","viewIndex","showDropdown","OutsideClickClass_OutsideClickClass","CustomerContractContainer_ResetPasswordButton","CustomerContractContainer_ReinitSubscriptionEmailButton","userStatus","admin_client_space","subscriptionSendEmail","handleIdClientInput","idClient","renderResetPasswordModal","no_error","error_message","try_again_message","success_message","renderReinitSubscriptionEmailModal","error_code","success_code","reinit_success_message","enableOrDessableUserResponseModal","downloadDataTable","allCustomerContract","download_csv","onscroll","onScroll","getElementsByClassName","pageYOffset","classList","queryParams","orders","_this$props$transferS","transferState","_this$props$manageUse","manageUserState","it","box","countryIso","company","legalForme","naceCode","vatable","vatNumber","fax","phone1","phone2","phone3","customerCategory","dateOfBirth","placeOfBirth","language","perimeters","CUSTOMER","itr","CustomerContractContainer_AdministrationClientSpace","administrationError","components_BackgroundElement","CustomerContractContainer_SubComponent","customerContractState","manageUserAsyncDispatch","searchUserGroupAsyncDispatch","createUserAsyncDispatch","getGroupAsyncDispatch","CustomerContractPage","groupListState","admin_SearchContainer","admin_CustomerContractContainer","searchUserGroup","casesExtractRequestDispatch","casesExtractSuccessDispatch","casesExtractFailureDispatch","csvLinkRef","CSVHeaders","setCSVHeaders","oui","non","CSVData","setCSVData","getHistoryCSVHeaders","headersArray","newHeader","getHistoryCSVData","splittedData","shift","row","splittedRow","newObject","elem","prepareHistoryDownload","rawData","parsedData","click","asyncOnClick","Caseresult","startCase","directDebitDate","compareSortSelect","FilterSelect","allResultText","RetryFirstPaymentModal","resetRetryFirstPaymentResponse","CaseResult","selectedWording","filterMethod","caseNbr","agentCode","souscriptionCode","Filter","admin_FilterSelect","firstPaymentSlimCollectStatus","seeCustomer","sendActivationTitle","hasFailedPayment","sendFinalizeOrder","emailSubscriptionResent","sendActivation","prepareOrderToDownloadCSV","_order$customer$conta","orderError","_contract$deliveryPoi","contractType","flat","SearchCaseContainer_SubComponent","SearchCaseContainer_RetryFirstPaymentModal","resetFirstPayment","fetchOrderAsynDispatch","getRetryFirstPaymentAsyncDispatch","CasesPage","orderState","retryFirstPaymentState","admin_SearchCaseContainer","SearchCaseContainer_CaseResult","getGroup","groups","createGroup","isLimitedGroup","groupName","setGroupName","subGroup","setSubGroup","errorsState","setErrorState","authorisationType","setType","authorizationSchema","setSchema","renderFinalGroup","manageErrors","groupNameErr","getGroupNameError","subGroupErr","emptySubGroup","menuSchemaError","menuError","subMenuSchemaError","subMenuError","getSchemaSubMenuError","isValidMenu","GROUP","SUB_GROUP","MENU","SUB_MENU","gn","isFull","zIndex","overflow","addorselectGroup","selectGroup","uniqBy","inGr","addSubGroup","authtorisationTitle","admin_AuthorizationSchemaGroup","errs","renderErrors","createGroupModalResponse","UserAdministrationContainer","statusOption","checkCreateGroupPermission","checkCreateUserPermission","setUserId","setStatus","openGroupModal","setGroupModal","setLocked","searchCondition","btn_create_group","btn_create_user","UserAdministrationContainer_CreateGroupModal","checkUderAdministrationResultPermission","handleshowPopUp","showPopUp","setOpenGroupModal","createGroupAsyncDispatch","UserAdministrationPage","userGroupState","manageGroupState","searchState","isHaveActionsPermissionBySchema","ADMINISTRATION","MANAGE_USERS","CREATE_GROUP","CREATE_USER","admin_UserAdministrationContainer_UserAdministrationContainer","UserAdministrationContainer_UserAdministrationResult","getComponent","WrappedContent","Switch","sidebar","routingMap","Route","exact","resetReduxStoreDispatch","Main","_this$props$profileSt","profileState","components_SideBar","src_components_Footer","PureComponent","withBanner","handleChangeBanner","handleCloseModalBanner","bannerError","contractError","components_Banner","ArticleVideoContainer","videoId","displayVideo","frameBorder","allowFullScreen","stopVideo","querySelector","video","iframeSrc","pause","videos","video_id","ampersandPosition","getYoutubeId","PaymentStatusContainer","last","piecesDate","findNextAndLastPieces","lastPayment","noneData","nextPayment","targetPiece","closeModal","stripeState","setStripeState","useSelector","_useSelector2","handleRetry","renderContent","FailPieceContainer","DISABLED","FailPiece","handleChangeFailPiece","handleOpenModal","calendarOpen","setCalendarOpen","setSelectedDay","communication","components_CustomDayPicker","isWeekend","buttonClose","buttonSave","buttonChoice","buttonPaymentCB","setTargetPiece","isModalOpen","setIsModalOpen","handleCreatePaymentCB","failPieces","enableDirectDebit","enableDebitCard","incidentPaymentText","fp","FailPieceContainer_FailPiece","containers_PaymentCBModal","SelfWithdrawalModal","WordingCounters","counters","WordingData","WordingBottom","list","iMain","linkText","end","HeaderWording","TableHeader","renderSubComponent","timeframeConsumption","getEnergyPercentage","energyPath","components_CustomProgressbar","Graph","memo","showProgressBar","nextMeters","sortMeters","energyConsumption","quantityMonthly","sp","wp","lastYear","setFullYear","lastYearDate","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","start","startMonth","endMonth","meterRead","j","startYear","sj","controlYearE","fraction","labelsDateObjects","labelsTimestamps","minTimestamp","oldestDate","newDate","unshift","sortFinalLabels","consumptionsArray","highsArray","lowsArray","totalhoursArray","labelsArray","getEnergyConsumption","components_StackedBar","ConsumptionContainer","v","autoTransfer","description1","meterReadDate","consumptionContext","getConsumptionDownloadData","downloadFileName","components_CustomTransfer","components_CustomTable","ConsumptionContainer_SelfWithdrawalModal","HomePage","HomeContainer","currentPieceForTimeline","components_TimelineStatus","containers_PaymentStatusContainer","containers_FailPieceContainer_FailPieceContainer","articleVideoText","containers_ArticleVideoContainer","WrappedHome","contractDispatch","filesListDispatch","createPaymentDispatch","fetchMeterReadingDispatch","resetCreatePaymentDispatch","resetContractDispatch","setContractDispatch","fetchContextDispatch","contractState","ff","handleUpdate","_this$props3$contract","_this$props4$profileS","_this$props4$contract","paymentState","fileState","consumptionState","HubspotContactForm","portalId","formId","script","appendChild","hbspt","forms","FormPage","FormContainer","handleChangeTextarea","categories","cart","question_2","question_3","priceCall","hours","applicationFormText","FormContainer_HubspotContactForm","createEventDispatch","resetCreateEventDispatch","WrappedForm","_this$props3$profileS","eventState","ModificationButtons","showButton","handleButtonCancel","handleButtonValidate","disabledValidate","buttons","BillPage","bill","BillContainer","handleRoutingMode","handleDownloadBill","setCheckUpdateInvoiceRouting","columnsTable","propsCell","totalAmountDu","download","checkUpdateInvoiceRouting","getLabelInvoiceRouting","ProfileContainer_ModificationButtons","updateBillingDispatch","resetBillingUpdateDispatch","WrappedBill","fileURL","documentId","documentType","invoiceRoutingChange","getContract","_this$props$contractS","FilePage","FileContainer","fileNameMapping","documentName","handleDownloadFile","generalCondition","wekiwi","wekiwiLink","CGVLink","CGV","ProofOfResidence","handleDownloadProofOfResidence","showDocument","_base64Str","_contentType","byte","binaryString","atob","binaryLen","bytes","Uint8Array","ascii","charCodeAt","base64ToArrayBuffer","Blob","WrappedFile","responseFetchPDF","documentKey","_this$props2$contract","_this$props2$profileS","_this$props2$profileS2","coholderName","cunstomerName","residenceAdress","handleSupportingDocuments","pdfName","EXPLANATIONS_OFFER_CAPACITY","handleOpenLocalFile","checkIsCAPA","ct","injectExplanationsOfferCapacityFile","capaContract","EXPLANATIONS_OFFER_CAPACITY_key","sortFiles","documentDate","filesToContainer","docs","SupportingDocumentErrorModal","useCallback","humanizeLabel","isInvoiceRunNumberMIGR","invoicing_run_number","payment_type","PaymentContainer","generateProof","generateTimeline","filteredPieces","useMemo","proof","balanceTitle","components_Balance","timeline","PaymentContainer_SupportingDocumentErrorModal","Montserrat100","textTransform","headerWording","Timeline_components_Header","TimelineProvider","useTimeline","TimelineContext","marginLeft","subContainerImage","subContainerLeft","subContainerRight","whiteBloc","lastText","CustomerContainer","_useTimeline","customerContainer","W","contractContainer","subContainer","containerDate","containerDateMarginTop","dateBold","ContractContainer","nextYearDate","isSameYear","sentence","timelineFrom","toLocaleString","kiwi","contractStartDate","timelineTable","totalTitle","totalValue","info","infoNB","infoText","TimelineTable","lastValidPiece","chosenPackage","globalAmount","dataObject","amountToPay","getPricePerMonth","secondChosenPackage","summerPrice","winterPrice","getAmountPerFrequency","monthDiff","timeDiff","getMonthDifference","isInteger","frequencyWording","remainingMonth","differenceInMonths","buildData","sentenceTop","mainContainer","bloc","infoWording","Informations","text_1","text_2","text_3","Informations_ImageText","smallText","Timeline_components_Footer","Timeline","components_CustomerContainer","components_ContractContainer","components_TimelineTable","generateTimelinePDF","PDFs_Timeline_Timeline","getSupportingDocumentsDispatch","WrappedPayment","_profileState$contact","pieceReference","pieceType","_profileState$contact2","_this$props6$profileS","_this$props6$contract","_this$props6$paymentS","array_pro","companyLegalFormCode","CustomerContact","cnt","billing","addressTitle","Payment","samplingDate","getLabelPaymentMode","debitDaySuffix","ModificationCoholder","_ref$fields$contact","checkCoholder","handleChangeCivility","handleResetCoholder","addOwner","ModificationPayment","handlePaymentSection","paymentMethodSection","handleShowErrorMessage","validateItems","handleCheckUpdate","ibanCondition","debitDayCondition","isValidIbanCode","titleDebitDay","isValidDebitDay","ModificationContact","_props$fields$contact","phoneUpdated","ModificationBilling","handleChangeDropdown","onFocusDropdown","showErrorBilling","infoInputs","mainText","addressVal","postalCodes","currentPostalCode","ProfileContainer","currentContact","isValidContact","_fields$contact","coholderCondition","handleValidateContact","isValidBilling","_fields$billing","_fields$billing$addre","handleValidateBilling","handleValidateIban","subtitle","ProfileContainer_ModificationContact","showErrorCustomer","ProfileContainer_ModificationCoholder","ProfileContainer_CustomerContact","ProfileContainer_ModificationBilling","ProfileContainer_ModificationPayment","showErrorIban","ProfileContainer_Payment","updateCustomerDispatch","resetUpdateDispatch","WrappedProfile","loadingPostalCode","splitArr","codeValue","cityValue","netAreaValue","categoryToSend","subCategories","consumptionContactChange","addCoholder","deleteCoholder","BILLING_ADDRESS","invoicingContactChange","paymentModeChange","label_debitDay","getBilling","getContact","getResults","ParentingPage","SponsorContainer","_ref$fields","textParenting","inputTitle","placholderInput","ruleDescription","buttonValue","createSponsorDispatch","resetDispatch","WrappedParenting","ParentingContainer","SponsorPage","errorInput","RequestPage","findLabel","Arr","categ","compare","renderDataInOption","tab","statusEvent","EventContainer","eventDispatch","WrappedEvent","EventPage","_Component","MovePage","MoveContainer","textWithLink1","textLink","textWithLink2","customerStatus","containers_MoveContainer","FrequencyContainer","chosenFrequency","SlickButtonFix","currentSlide","slideCount","NextArrow","BackArrow","GaugeContainer","showGaugeTab","handleToggleGauge","handleChangePackageID","handleChangePrices","handleSetAdminChosenPackages","gaugeMaxValue","accumulator","isMultiple","tab1","tab2","userGroup","canSelectAllPackage","react_slick_lib_default","speed","slidesToShow","slidesToScroll","arrows","nextArrow","GaugeContainer_SlickButtonFix","GaugeContainer_NextArrow","prevArrow","GaugeContainer_BackArrow","nbrElmInSection","countSectionNbr","recommendedInfo","finalBuild","isRecommendedPush","buildPackagesForSlider","components_PackageElement","popupChoosePackage","PackageSettingContainer","handleSetShowOption","handleFetchPackage","adminChosenPackages","showFrequency","setShowFrequency","showGauge","setShowGauge","setShowGaugeTab","setFrequency","setPackageID","setPrices","containers_FrequencyContainer","containers_GaugeContainer","currentPackage","currentPackages","pk","handleValidateClick","PackageContainer","handleSetPayload","handleWordingModalMyMode","localUserGroup","setLocalUserGroup","setAdminChosenPackages","showOption","setShowOption","OPTION","recommendPackage","localGrp","separateDetails","detailDescription","beginDate","displayRateOption","contractualCapacityEL","priceOption","contractualCapacityNG","contractualCapacityUnitNG","components_EnergyDetail","components_PlanElement","components_OptionElement","PackageContainer_PackageSettingContainer","WAITING_FOURTEEN_DAY","RECOVERY","INITIALIZED","SENT_TO_MARKET","notAccessible","fetchPackageDispatch","fetchProductDispatch","updatePackageDispatch","WrappedPackage","newEstimates","prepareEvent","prepaymentFrequency","seasonalityThreshold","packageChange","eventCheckOptions","saveTree","saveTreeAdd","saveTreeSupp","green","greenAdd","greenSupp","plastic","plasticAdd","plasticSupp","changeOffer","renderWordingModalByMode","modalMode","popup_option","_this$props5$contract","_this$props7$profileS","_this$props7$contract","_this$props7$packageS","packageState","currentOffer","SettingPage","SettingContainer","isNewValid","new","isConfirmValid","old","toggles","isReceiveNews","isAuthorizeData","handleInput","handleError","showNewPass","showConfirmPass","buttonValue1","updatePasswordDispatch","WrappedSetting","fetchMeterDispatch","createIndexDispatch","resetCreateIndexDispatch","WrappedConsumption","setInitialState","_this$props$consumpti","highlow","registerName","timeframeCode","_this$props5$profileS","_this$props5$consumpt","WordingRoutes","pages_routes","home","pages_HomePage","pages_ConsumptionPage","pages_PackagePage","information","pages_ProfilePage","pages_SettingPage","sponsorship","pages_SponsorPage","move","pages_MovePage","pages_FilePage","bills","pages_BillPage","pages_PaymentPage","applicationForms","pages_FormPage","requests","pages_EventPage","notFound","defaults_NotFoundPage","root_WrappedContent","contextModal","close","isp","initialSearchParams","isUserAlias","AdminMain","UserMain","isFirstRedirect","ReactDOM","es","BrowserRouter","rest","ConnectedMain","navigator","serviceWorker","ready","registration","unregister"],"mappings":"6EAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,oECAxCH,EAAAC,QAAA,4gJCAAD,EAAAC,QAAA,0pFCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,0DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAA,8uKCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,iECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAA,0zNCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,8DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,kECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,yDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,0DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,6DCAxCH,EAAAC,QAAA,0nCCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,oECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,qECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,+DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,2ECAxCH,EAAAC,QAAA,s9CCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,sDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,oDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,uDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,yDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,kECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,iECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,mECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,wDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,gECAxCH,EAAAC,QAAA,83HCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,mDCAxCH,EAAAC,QAAA,w4FCAAD,EAAAC,QAAA,ouBCAAD,EAAAC,QAAA,oxqGCAAD,EAAAC,QAAiBC,EAAAC,EAAuB,iECAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,8k0ECAxC,IAAAC,EAAA,CACAC,oCAAA,CACA,IACA,IAGA,SAAAC,EAAAC,GACA,IAAAC,EAAAJ,EAAAG,GACA,OAAAC,EAOAN,EAAAO,EAAAD,EAAA,IAAAE,KAAA,WACA,IAAAC,EAAAH,EAAA,GACA,OAAAN,EAAAU,EAAAD,EAAA,KARAE,QAAAC,UAAAJ,KAAA,WACA,IAAAD,EAAA,IAAAM,MAAA,uBAAAR,EAAA,KAEA,MADAE,EAAAO,KAAA,mBACAP,IAQAH,EAAAW,KAAA,WACA,OAAAC,OAAAD,KAAAb,IAEAE,EAAAK,GAAA,IACAX,EAAAC,QAAAK,iJCxBYa,EAKAC,EAKAC,EAKAC,EAKAC,EAKAC,EAaAC,EAMAC,EAOAC,EAKAC,EAOAC,EAOAC,EASAC,EAMAC,EAMAC,EAWAC,EAKAC,EAKAC,EAMAC,EAMAC,EAQAC,EAOAC,EAOAC,EAOAC,EAMAC,EAKAC,EAgBAC,EAKAC,EAMAC,EASAC,EAQAC,EAWAC,EASAC,EAOAC,EAeAC,EAMAC,EASAC,EAMAC,EAKAC,EAIAC,EAIAC,EAMAC,EAKAC,EAKAC,EAMAC,EAMAC,EAKAC,EAIAC,EASAC,+OC/RNC,GAAcC,gCCHc,qBDGdA,GAEdC,GAAmBC,6BCRW,uBACA,uBACA,uBDMXA,GAMnBC,GAAkBD,6BClBW,sBACA,sBACA,sBDgBXA,GA4ElBE,GAAiB,SAACC,EAADC,GAAkD,IApDvCC,EAoDYC,EAA2BF,EAA3BE,WACpCC,EA7CC,CACHC,aAT0BH,EAqDYF,EAAOI,SApDjDC,YASIC,YAHmBJ,EALvBI,YASIC,KAJmBL,EAJvBK,KASIC,SALmBN,EAHvBM,SASIC,YANmBP,EAFvBO,YASIC,QAPmBR,EADvBQ,SAgDA,OAAOP,EAA4D,CAC/DQ,KAAM,eACNC,OAAQ,OACRC,KAAMT,IACPU,KACCC,aACI,SAACC,GACG,GAAIA,EAAU,CAEV,GAAIA,EAASC,aACT,OAAOC,aAAW,CACd5E,KAAM,MACNoE,QAASM,EAASC,eAG1B,IAAME,EAAiB,CACnBC,SAAUJ,EAASI,SACnBC,cAAejB,EAAQI,SACvBc,iBAAkBlB,EAAQK,YAC1Bc,cAAenB,EAAQG,KACvBiB,gBAAiB,MACjBd,QAASN,EAAQM,SAErB,OAAOe,aAAG7B,GAAiB8B,QAAQP,IAEvC,OAAOD,aAAW,CAAE5E,KAAM,MAAOoE,QAASM,MAGlDW,aAAW,SAAAC,GAAK,OAAIH,aAAG3B,GAAgB+B,QAAQD,iGD7J3CnF,4CAKAC,gFAKAC,oEAKAC,gFAKAC,oGAKAC,sKAaAC,wDAMAC,8FAOAC,8DAKAC,0HAOAC,8GAOAC,oIASAC,4FAMAC,8EAMAC,uQAWAC,oDAKAC,oDAKAC,oEAMAC,sGAMAC,yIAQAC,gIAOAC,qIAOAC,4IAOAC,4EAMAC,kEAKAC,yXAgBAC,kEAKAC,4FAMAC,+EASAC,yIAQAC,uQAWAC,kLASAC,iHAOAC,uVAeAC,gGAMAC,mMASAC,8EAMAC,0DAKAC,gEAIAC,wCAIAC,gFAMAC,0DAKAC,8DAKAC,gIAMAC,+IAMAC,oGAKAC,gEAIAC,sMASAC,iUG1UGqC,GAAA,CACXC,IAAKC,+DACLC,iBAAkBD,+DAClBE,cAAe,6CACfC,QAASH,GACTI,eAAgBJ,kDAChBK,kBAAmBL,kCACnBM,OAAQN,2CACRO,mBAAoBP,muCAAYQ,+BAChCC,eAAgB,qBAChBC,IAAKV,aACLW,sBAAuB,KAEvBC,WAAY,CACRC,SAAUb,gBACVc,SAAUd,kBAGde,IAAK,CACDC,OAAQ,YACRC,WAAY,aACZC,YAAalB,uBACbmB,gBAAiBnB,4CAGrBoB,mBAAoB,CAChBC,IAAK,CACDC,GAAI,CACAC,aAAc,EACdC,aAAc,IAElBC,GAAI,CACAF,aAAc,EACdC,aAAc,KAGtBE,MAAO,CACHJ,GAAI,CACAC,aAAc,EACdC,aAAc,IAElBC,GAAI,CACAF,aAAc,EACdC,aAAc,MAI1BG,qBAAsB,CAClBN,IAAK,CACDC,GAAI,EACJG,GAAI,GAERC,MAAO,CACHJ,GAAI,EACJG,GAAI,IAIZG,cAAe,CACXC,YAAa7B,iCACb8B,UAAW9B,+BACX+B,UAAW/B,mCACXgC,YAAahC,qCACbiC,aAAcjC,uCAGlBkC,OAAQ,CACJC,UAAWnC,+GAGfoC,0BAA2B,CAAC,QAAS,WAErCC,uBAAwB,CACpB,8BACA,UACA,YACA,mBACA,sBAGJC,mBAAoB,CAAC,MAAO,SAAU,eAAgB,iBAEtDC,2BAA4B,CAAC,MAAO,WAEpCC,gBAAkBxC,WAClByC,cAAgBzC,4KCxEd0C,YAAc,IAAIC,MAAOC,eAKzBC,GAAa,IAEbC,GAAUJ,GAAc,KACxBK,GAAa,IAAIJ,KAAKD,GAAcG,GAAY,GAChDG,GAAW,IAAIL,KAAKD,GAHT,GAGiC,IAErCO,GAAkB,SAAC1E,GAC5B,IAAM2E,EAAQ,IAAIP,KAAKpE,GACvB,OAAO2E,EAAMN,gBAAkBF,GAAcG,GACvC,IAAIF,KAAKD,GAAcI,GAASI,EAAMC,WAAYD,EAAME,WACxDF,GAGGG,GAAgB,SAAAC,GAA6B,IAA1B/E,EAA0B+E,EAA1B/E,KAAMgF,EAAoBD,EAApBC,SAClCC,KAAOC,OAAO,MAGd,IAFA,IAAMC,EAASF,KAAOE,SAChBC,EAAQ,GAENC,EAAIb,GAAWH,cACnBgB,GAAKZ,GAASJ,cACdgB,GAAK,EAELD,EAAME,KAAKD,GAGf,IAAME,EAAgB,SAAC/J,GAAW,IAAAgK,EACNhK,EAAEiK,OAAOC,KAAzBC,EADsBH,EACtBG,KAAMC,EADgBJ,EAChBI,MACdZ,EAAS,IAAIZ,KAAKuB,EAAKE,MAAOD,EAAMC,SAGxC,OACIC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,qBACZH,GAAAC,EAAAC,cAAA,UACIE,KAAK,QACLlB,SAAUO,EACVM,MAAO7F,EAAK4E,YAEXO,EAAOhK,IAAI,SAACyK,EAAYP,GAAb,OACRS,GAAAC,EAAAC,cAAA,UAAQG,IAAKP,EAAOC,MAAOR,GACtBO,MAIbE,GAAAC,EAAAC,cAAA,UACIE,KAAK,OACLlB,SAAUO,EACVM,MAAO7F,EAAKqE,eAEXe,EAAMjK,IAAI,SAAAwK,GAAI,OACXG,GAAAC,EAAAC,cAAA,UAAQG,IAAKR,EAAME,MAAOF,GACrBA,QAmBnBS,GAAkB,CACpBC,YAAa,CACTC,MAAO,QACPC,gBAAiB,WAGrBC,QAAS,CAAEF,MAAO,UAAWC,gBAAiB,UAmFnCE,eA/EX,SAAAA,EAAYC,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAJ,IACtBE,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAwK,GAAAO,KAAAH,KAAMH,KAeVO,qBAAuB,kBACnBzC,GAAWH,gBAAkBF,GAAc,GACrC,IAAIC,KAAKD,GAAcI,GAAS,EAAG,GACnCC,IAnBgBmC,EAqB1BO,WAAa,SAAClH,EAAW6F,GAAZ,MACE,KAAVA,QAA0BsB,IAAVtB,GACjB7F,EAAKqE,gBAAkBF,GAAcG,GAE/BtE,EADA,IAAIoE,KAAKD,GAAcI,GAAS,EAAG,IAtBzCoC,EAAKS,sBAAwBT,EAAKS,sBAAsBC,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAKY,MAAQ,CACTC,OAAQb,EAAKM,wBAJKN,uFAYJf,GAClBiB,KAAKY,SAAS,CAAED,OAAQ5B,qCAcnB,IAAA8B,EAAAb,KAAAc,EAC2Cd,KAAKH,MAA7CkB,EADHD,EACGC,aAAc/B,EADjB8B,EACiB9B,MAAOgC,EADxBF,EACwBE,QAASxG,EADjCsG,EACiCtG,MAC9BmG,EAAWX,KAAKU,MAAhBC,OAER,OACI1B,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAC+B,GAAAhC,EAAD,CACIiC,WAAW,EACXC,YAAa,SAAAC,GACTN,EAAalD,GAAgBwD,KAEjCC,YAAY,aACZC,OAAO,aACPvC,MACc,KAAVA,QAA0BsB,IAAVtB,EACVnB,GAAgBmB,QAChBsB,EAEVkB,UAAWA,aACXC,WAAYA,cACZC,eAAgB,CACZrD,OAAQ,KACRsD,UAAW,CACPnC,YAAa,IAAIjC,KAAKyB,IAE1BO,mBACAR,MAAO4B,EACPiB,UAAWjE,GACXkE,QAASjE,GACTkE,YAAaC,KACbC,aAAc,CACVC,MAAO,IAAI1E,KAAKyD,GAAoB,KAGxCkB,eAAgB,SAAApJ,GAAA,IAAGK,EAAHL,EAAGK,KAAH,OACZ8F,GAAAC,EAAAC,cAACgD,GAAD,CACIhJ,KAAM0H,EAAKR,WAAWlH,EAAM6F,GAC5BX,OAAO,KACPF,SAAU0C,EAAKN,4BAK9B/F,GAAmB,KAAVA,GACNyE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,sBAAsB5E,WAxE9B4H,KAAMC,k5BChDhBC,GAAA,CACXC,mBAAoBC,KACpBC,kBAAmBC,KACnBC,kBAAmBC,KACnBC,wBAAyBC,KACzBC,0BAA2BC,KAC3BC,2BAA4BC,KAC5BC,6BAA8BC,KAC9BC,gCAAiCC,KACjCC,gBAAiBC,KACjBC,cAAeC,KACfC,aAAcC,KACdC,gBAAiBC,KACjBC,YAAaC,KACbC,aAAcC,KACdC,oBAAqBC,KACrBC,kBAAmBC,KACnBC,yBAA0BC,KAC1BC,YAAaC,KACbC,cAAeC,KACfC,eAAgBC,KAChBC,cAAeC,KACfC,aAAcC,KACdC,aAAcC,KACdC,mBAAoBC,KACpBC,UAAWC,KACXC,YAAaC,KACbC,iBAAkBC,KAClBC,sBAAuBC,KACvBC,cAAeC,KACfC,WAAYC,KACZC,oBAAqBC,KACrBC,mBAAoBC,KACpBC,gBAAiBC,KACjBC,gBAAiBC,KACjBC,YAAaC,KACbC,oBAAqBC,KACrBC,gBAAiBC,KACjBC,iCAAkCC,KAClCC,qBAAsBC,KACtBC,gBAAiBC,KACjBC,wBAAyBC,mCC5CvBC,GAAiBC,GAAcC,YAC/BC,GAAgBF,GAAcG,OAE9BC,GAAiBJ,GAAcK,QAE/BC,GAAM,SAACC,EAAe3O,GACL,kBAAf4O,GAAO5M,KACP6M,QAAQH,IAAIC,EAAO3O,IAIrB8O,GAAgB,SAACpJ,GACnB,YAAiBsB,IAAVtB,GAAiC,KAAVA,GAG5BqJ,GAAe,SAACrJ,GAClB,QAAcsB,IAAVtB,EACA,OAAO,EAGX,MADc,0JACDsJ,KAAKC,OAAOvJ,GAAOwJ,gBAG9BC,GAAe,SAACzJ,GAClB,GAAIA,GAA0B,KAAjBA,EAAM0J,OAAe,CAC9B,IAAMC,EAAM3J,EAAM4J,OAAO,EAAG,GAC5B,GAAY,OAARD,GAAwB,OAARA,EAAc,CAE9B,MADc,wBACDL,KAAKC,OAAOvJ,KAGjC,OAAO,GAcL6J,GAAc,SAAC7J,GACjB,YAAcsB,IAAVtB,GAGG8J,KAAKC,QAAQ/J,IAGlBgK,GAAM,SAACC,GACT,OAAOA,EAAI,GAAJ,IAAAC,OAAaD,GAAMA,GAGxBE,GAAc,WAGN,IAFVnK,EAEUoK,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFM,GAChBC,EACUD,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,IAAAA,UAAA,GACV,YAAc9I,IAAVtB,IAGAqK,EACO,IAAIC,OAAO,oBAAoBhB,KAAKtJ,GAExCA,EAAMuK,QAAQ,MAAQ,IAG3BC,GAAmB,SAACxK,GACtB,IAAKA,EAAO,OAAO,EACnB,IAAMyK,EAAQ,IAAIlM,KACZmM,EAAY1K,EACd2K,EAAMF,EAAMjM,cAAgBkM,EAAUlM,cACpCoM,EAAIH,EAAM1L,WAAa2L,EAAU3L,WAIvC,IAHI6L,EAAI,GAAY,IAANA,GAAWH,EAAMzL,UAAY0L,EAAU1L,aACjD2L,GAAY,GAEZA,GAAO,GAAI,OAAO,EACtB,IAAM7K,EAAOE,EAAMxB,cAGnB,OADIsB,GAAQlB,GAASJ,eAAiBsB,GAAQnB,GAAWH,eAIvDqM,GAAsB,SAAC7K,GACzB,IAAKA,EAAO,OAAO,EACnB,IAAMyK,EAAQ,IAAIlM,KACZmM,EAAY1K,EACd2K,EAAMF,EAAMjM,cAAgBkM,EAAUlM,cACpCoM,EAAIH,EAAM1L,WAAa2L,EAAU3L,WAIvC,IAHI6L,EAAI,GAAY,IAANA,GAAWH,EAAMzL,UAAY0L,EAAU1L,aACjD2L,GAAY,GAEZA,GAAO,IAAK,OAAO,EACvB,IAAM7K,EAAOE,EAAMxB,cAGnB,OADIsB,GAAQlB,GAASJ,eAAiBsB,GAAQnB,GAAWH,eAIvDsM,GAAmB,SAAC3Q,GACtB,IAAKA,EACD,MAAO,GAGX,IAAM4Q,EAAI,IAAIxM,KAAKpE,GACnB,OAAO4Q,EACD,CAACf,GAAIe,EAAE/L,WAAYgL,GAAIe,EAAEhM,WAAa,GAAIgM,EAAEvM,eAAewM,KAAK,UAChE1J,GAGJ2J,GAA4B,SAC9BF,GAGS,IAFTG,EAESd,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,IAAAA,UAAA,GADTe,EACSf,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GADW,IAEhBgB,EAAQ,CAACL,EAAEvM,cAAewL,GAAIe,EAAEhM,WAAa,GAAIiL,GAAIe,EAAE/L,YAE3D,OADIkM,IAAUE,EAAQA,EAAMC,WACrBD,EAAMJ,KAAKG,IAGhBG,GAAmB,SAACP,GACtB,QAAUzJ,IAANyJ,EACA,MAAO,CAACA,EAAEvM,cAAewL,GAAIe,EAAEhM,WAAa,GAAIiL,GAAIe,EAAE/L,YAAYgM,KAC9D,MAMNO,GAAe,WACjB,IAAMR,EAAI,IAAIxM,KACd,MAAO,CAACwM,EAAEvM,cAAewL,GAAIe,EAAEhM,WAAa,GAAIiL,GAAIe,EAAE/L,YAAYgM,KAAK,MAarEQ,GAA4B,SAACxL,GAAD,OAC9BA,EAAMyL,QAAQ,gBAAiB,MAE7BC,GAAqB,SAAC1L,GAAD,OAAmBA,EAAMyL,QAAQ,OAAQ,QAE9DE,GAAuB,SAACC,EAAaC,GAIvC,OAFIA,EAAIC,KAAK,SAACC,GAAD,OAAyBA,EAASC,iBAAmBJ,KAC9DC,EAAI,IAINI,GAAe,SAACF,GAClB,GAAIA,GAAYA,EAASG,aACrB,OAAOH,EAASG,aAAaJ,KACzB,SAACnW,GAAD,MAA+B,aAAXA,EAAEwW,QAM5BC,GAAqB,SAACC,GACxB,IAAIC,EAAM,GACND,EAAO,GACME,MAAMC,KAAKD,MAAMF,GAAMlW,QAC/BsW,QAAQ,SAAAjN,GACT8M,GAAG,GAAApC,OAAO1K,EAAI,KAGtB,OAAO8M,GAgBLI,GAAwB,SAACC,GAC3B,OAAQA,GACJ,IAAK,OACD,MAAO,aACX,IAAK,eACD,MAAO,OACX,IAAK,eACD,MAAO,MACX,QACI,MAAO,KAIbC,GAAkB,SACpB5M,EACA6L,GAWA,OANgBA,EAAIC,KAChB,SAACe,GAAD,OAA2CA,EAAI7M,QAAUA,KACxD,CACDA,MAAO,GACP2M,MAAO,KAEIA,OAmBbG,GAAmB,SAACC,GAMtB,OALatE,GAAeuE,YAAYlB,KACpC,SAAAmB,GAAC,OAAIA,EAAEjN,QAAU+M,KAChB,CACDG,KAAM,KAEEA,MAyBVC,GAA8B,SAACC,GACjC,YAAiB9L,IAAb8L,EACO,CAAC,IAEAA,EACP9X,IAAI,SAAAD,GACD,OAAIA,GAAkB,IAAbA,EAAEqU,OACArU,EACFgY,KAAK,SAACC,EAAaC,GAAd,OACFD,EAAEE,UAAYD,EAAEC,WAAa,EAAI,IAEpClY,IAAI,SAACgY,GAAD,OAAiBG,SAASH,EAAEI,OAAQ,KAE1C,CAAC,EAAG,KAEdL,KAAK,SAACC,EAAGC,GAAJ,OAAWD,EAAE,GAAKC,EAAE,IAAM,EAAI,KA2BtCI,GAAsB,SACxBC,EACAR,GAEA,YAAiB9L,IAAb8L,EACO,GA5B+B,SAC1CA,GAEA,YAAiB9L,IAAb8L,EACO,CAAC,IAEAA,EACP9X,IAAI,SAAAD,GACD,OAAIA,GAAkB,IAAbA,EAAEqU,OACArU,EACFgY,KAAK,SAACC,EAAaC,GAAd,OACFD,EAAEE,UAAYD,EAAEC,WAAa,EAAI,IAEpClY,IAAI,SAACgY,GAAD,OAAiBA,IAEvB,CAACjY,EAAE,GAAIA,EAAE,MAEnBgY,KAAK,SAACC,EAAGC,GAAJ,OACFE,SAASH,EAAE,GAAGI,OAAQ,GAAKD,SAASF,EAAE,GAAGG,OAAQ,IAAM,EAAI,IAYzDG,CAAsCT,GAE1CtB,KACE,SAACgC,GAAD,OACIC,OAAOD,EAAG,GAAGJ,UAAYE,EAAM,IAC/BG,OAAOD,EAAG,GAAGJ,UAAYE,EAAM,MAClC,IAIPI,GAAkB,SACpBC,EACAb,EACAc,GAEA,QAAiB5M,IAAb8L,EAAJ,CAGA,IAAMe,EAAMf,EAAStB,KAAK,SAAAzW,GAAC,OAAIA,EAAEQ,KAAOoY,IACxC,YAAY3M,IAAR6M,GAAqBD,EACdd,EAAStB,KAAK,SAAAzW,GAAC,OAAIA,EAAE6Y,cAGzBC,IAGLC,GAAmB,SAACC,GACtB,IAAMrO,EAAQqO,EAId,OAHY3F,GAAc4F,SAASC,WAAWzC,KAC1C,SAAC0C,GAAD,OAAqBA,EAAExO,QAAUA,KAChC,CAAE2M,MAAO,KACHA,OAmBT8B,GAAgB,SAACvO,EAAewO,GAClC,IAAMpB,EAAI,IAAI/O,KAAK2B,EAAEyO,2BAA2BC,UAC1CrB,EAAI,IAAIhP,KAAKmQ,EAAEC,2BAA2BC,UAChD,OAAItB,EAAIC,GACI,EAERD,EAAIC,EAAU,EACX,GAgCLsB,GAAqB,SACvBC,GAEA,IAAIC,EAEJ,QAAezN,IAAXwN,EACA,MAAO,CACHC,aAGR,IAAMC,EAAeF,EACfG,GAAc,IAAI1Q,MAAOqQ,UAyB/B,OAxBAI,EAAavC,QAAQ,SAACyC,GACPC,aACPD,EAAMP,0BACN,aACA,IAAIpQ,MAEcqQ,UAELK,GAEK,eAAlBC,EAAME,SAGNL,EAAYG,KAWb,CACHH,cA+CFM,GAAY,SACdC,EACApD,GAEA,IAAMqD,EAAUD,EAASC,QACnBC,EAAYD,EAAQC,UAAR,cAAAtF,OACEqF,EAAQC,WACtB,GACAC,EAAG,GAAAvF,OAAMhB,GAAOjN,kBAAb,mBAAAiO,OAAgDoF,EAASI,KAAzD,cAAAxF,OAA0EqF,EAAQI,iBAAiBtB,SAAnG,eAAAnE,OAAyHqF,EAAQI,iBAAiBC,UAAlJ,cAAA1F,OAAwKqF,EAAQI,iBAAiBE,SAAjM,WAAA3F,OAAmNqF,EAAQO,MAA3N,WAAA5F,OAA0OqF,EAAQQ,OAAlP7F,OAA0PsF,GAEnQ,GAAIF,EAASI,OAASpZ,EAAc0Z,WAAY,CAC5C,IAAMC,EAAW/D,EACXA,EAAaJ,KAAK,SAAAzW,GAAC,MAAe,aAAXA,EAAE8W,YACzB7K,EACN,OACI2O,GACAA,EAAS5B,UACT4B,EAASL,WACTK,EAASJ,SAET,GAAA3F,OAAUuF,EAAV,sBAAAvF,OAAkC+F,EAAS5B,SAA3C,uBAAAnE,OAAyE+F,EAASL,UAAlF,sBAAA1F,OAAgH+F,EAASJ,UAEtHJ,EAEX,SAAAvF,OAAUuF,EAAV,iBAAAvF,OAA6BqF,EAAQW,YAArC,iBAAAhG,OAAgEqF,EAAQY,YAAxE,0BAAAjG,OAA4GqF,EAAQa,qBAApH,kBAAAlG,OAAyJqF,EAAQc,eAG/JC,GAAc,SAACzE,EAAY6D,GAAb,OAChB7D,EAAI0E,OAAO,SAACC,EAAKC,GAEb,OADUD,EAAI1E,KAAK,SAAC4E,GAAD,OAAeA,EAAKhB,KAAUe,EAAQf,KAIlDc,EAFIA,EAAItG,OAAO,CAACuG,KAGxB,KA8MDE,GAAa,SACf9E,EACA+E,EACAC,GAEA,IAAMC,EAAQD,EAAIhF,EAAInC,OAASmH,EAAIhF,EAAInC,OAASmH,EAChD,OAAOhF,EAAI3B,OACP2B,EAAIkF,OAAO,EAAGH,EAAY,EAAI/E,EAAInC,OAASoH,EAAQA,KAgCrDE,GAAmB,SAAC9Q,EAAewO,GACrC,IAAMpB,EAAI,IAAI/O,KAAK2B,EAAE+Q,SAASrC,UACxBrB,EAAI,IAAIhP,KAAKmQ,EAAEuC,SAASrC,UAC9B,OAAItB,EAAIC,EACG,EAEPD,EAAIC,GAAW,EACZ,GAGL2D,GAAwB,SAACC,GAC3B,OAAIA,EAC0BC,GAA+BD,GAChC9D,KAAK2D,IAE3B,IAGLI,GAAiC,SACnCD,GAEA,GAAIA,EAAQ,CACR,IAAME,EAAO,IAAIC,IACjB,OAAOH,EAAOI,OAAO,SAAA5b,GACjB,IAAMkX,EAAM2E,KAAKC,UAAU,CACvBC,UAAW/b,EAAE+b,UACbT,QAAStb,EAAEsb,QACXU,SAAUhc,EAAEgc,WAEVC,EAAYP,EAAKQ,IAAIhF,GAE3B,OADAwE,EAAKS,IAAIjF,IACD+E,IAGhB,MAAO,IAcLG,GAAiB,SAACC,GAA8C,IAA7B7G,EAA6Bf,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAT,KACzD,OAAO4H,EAAMhH,KAAKG,IAShB8G,GAAmB,WAGZ,IAFTC,EAES9H,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFK,GACd+H,EACS/H,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACL8Q,EAAMF,EAAIzG,QAAQ,gCAAwB,IAE9C,OADM0G,IAAeC,EAXK,WAA8B,IAClDvG,GADkDzB,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAf,IACzBiI,MAAM,IAEtB,OADMxG,EAAI,KAAIA,EAAI,GAAKA,EAAI,GAAGyG,eACvBzG,EAAIb,KAAK,IAQWuH,CAAsBH,IAC1CA,GAGX,SAASI,KAAkD,IAA5BxS,EAA4BoK,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAZ,GAC3C,OAAO6H,GAAiBjS,GAAO,GAWnC,SAASyS,KACL,OADmDrI,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAZ,IAC1BqB,QAAQ,SAAU,IAAIiH,MAAM,EAAG,IAmBhD,SAASC,KAAqC,IACtCP,GADsChI,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAJ,IACtBqB,QAAQ,SAAU,IAAIiH,MAAM,EAAG,IAC/C,GAAmB,KAAfN,EAAI1I,OAAe,CAGnB,IAFA,IAAMkJ,EAAmB,GACrBpT,EAAI4S,EAAI1I,OACLlK,EAAI,GAAG,CACV,IAAMqT,EAAarT,EAAI,GAAK,EAAIA,EAAI,EAAI,EAClCsT,EAAYV,EAAIW,UAAUF,EAAYrT,GAC5CoT,EAAOnT,KAAKqT,GACZtT,EAAIqT,EAERT,EAAMQ,EAAOvH,UAAUL,KAAK,KAEhC,OAAOoH,EASe,IAAI9H,OAAO,eAMrC,SAAS0I,GACLC,EACAC,EACAC,GAEA,IAAMC,EAAS,IAAIC,IACnB,IACI,IAAM9Y,EAAO0Y,EAASK,SAChBC,EAASN,EAASM,OACZ,IAAI5X,IAAJ,GAAAuO,OAAWiJ,EAAX,MAAAjJ,OAAwBgJ,GAAxBhJ,OAA+B3P,GAA/B2P,OAAsCqJ,IAC9BC,aACZ/G,QAAQ,SAACzM,EAAOM,GACpB,IAAImT,EAA8BzT,EAC5B0T,EAAc3F,OAAO/N,GACrB0T,IAAaD,EAAaC,GAE5BN,EAAOvB,IAAIvR,GACX8S,EAAOO,IACHrT,EADJ,GAAA4J,OAEOkJ,EAAOQ,IAAItT,GAFlB,KAAA4J,OAEoCuJ,IAEjCL,EAAOO,IAAIrT,EAAKmT,KAE7B,MAAOI,GAGL,OAFA1K,QAAQ3N,MAAMqY,GACdT,EAAOU,QACAV,EAEX,OAAOA,EAGX,IAWMW,GAAU,SAAClI,GAAD,OAAgBA,GAAsB,IAAfA,EAAInC,QAE3C,SAASsK,KAGC,IAFNZ,EAEMhJ,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFwB,IAAIiJ,IAClCY,EACM7J,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GADmB,GAInB8I,EAFWD,SAASE,SACDjJ,OAAO,MACXA,OAAOgK,OAAOjB,SAASC,MACxCiB,EAAmB,GAQvB,OAPIf,EAAO/G,KAAO,IACd8H,EAAW,IACXf,EAAO3G,QAAQ,SAACzM,EAAeM,GAC3B6T,GAAQ,GAAAjK,OAAO5J,EAAP,KAAA4J,OAAclK,MAGrB,GAAAkK,OAAMgJ,EAAN,KAAAhJ,OAAc+J,EAAajJ,KAAK,MAAhCd,OAAuCiK,GAIpD,IAAMC,GAAsB,SACxBC,GAEA,YAAqB/S,IAAd+S,GAAyC,KAAdA,GAGtC,SAASC,GAAqBlF,GAC1B,OAAkB,OAAXA,EAAmBhZ,OAAOme,OAAOnF,GAAQ,GAAgB,YAGrDoF,qFAAf,SAAAC,EAAqBC,GAArB,OAAAC,GAAAzU,EAAA0U,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAG,OAAA,SACW,IAAIjf,QAAQ,SAAAC,GAAO,OAAIif,WAAWjf,EAAS0e,MADtD,wBAAAG,EAAAK,SAAAT,sCAKehI,uFAAf,SAAA0I,EACIC,EACAC,GAFJ,IAAA3L,EAAAlK,EAAA8V,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAjB,GAAAzU,EAAA0U,KAAA,SAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,YAIQK,aAAsB7I,OAJ9B,CAAAsJ,EAAAd,KAAA,SAKcrL,EAAiB0L,EAAW1L,OACzBlK,EAAI,EANrB,YAMwBA,EAAIkK,GAN5B,CAAAmM,EAAAd,KAAA,eAAAc,EAAAd,KAAA,EAOkBM,EAAGD,EAAW5V,GAAIA,EAAG4V,GAPvC,OAMoC5V,GAAQ,EAN5CqW,EAAAd,KAAA,eAAAc,EAAAd,KAAA,sBASeK,aAAsB/B,KATrC,CAAAwC,EAAAd,KAAA,SAUcO,EAAUF,EAAWE,UAVnCC,GAAA,EAAAC,GAAA,EAAAC,OAAAnU,EAAAuU,EAAAf,KAAA,GAAAY,EAW4BJ,EAX5BQ,OAAAC,YAAA,WAAAR,GAAAI,EAAAD,EAAAX,QAAAiB,KAAA,CAAAH,EAAAd,KAAA,gBAWmBa,EAXnBD,EAAA3V,MAAA6V,EAAAd,KAAA,GAYkBM,EAAGO,EAAM,GAAIA,EAAM,GAAIR,GAZzC,QAAAG,GAAA,EAAAM,EAAAd,KAAA,iBAAAc,EAAAd,KAAA,iBAAAc,EAAAf,KAAA,GAAAe,EAAAI,GAAAJ,EAAA,UAAAL,GAAA,EAAAC,EAAAI,EAAAI,GAAA,QAAAJ,EAAAf,KAAA,GAAAe,EAAAf,KAAA,GAAAS,GAAA,MAAAG,EAAAQ,QAAAR,EAAAQ,SAAA,WAAAL,EAAAf,KAAA,IAAAU,EAAA,CAAAK,EAAAd,KAAA,eAAAU,EAAA,eAAAI,EAAAM,OAAA,mBAAAN,EAAAM,OAAA,6BAAAN,EAAAX,SAAAC,EAAA,4DAiBA,IAAMiB,GAAyB,SAAAlX,GAA+C,IAA5CmX,EAA4CnX,EAA5CmX,aAC9B,OAD0EnX,EAA9BoX,YACvBxd,EAAQyd,SAAWF,IAAiBvd,EAAQyd,SAG/DC,GAAsB,SAAA1c,GAA+C,IAA5Cuc,EAA4Cvc,EAA5Cuc,aAC3B,OADuEvc,EAA9Bwc,YACpBxd,EAAQ2d,MAAQJ,IAAiBvd,EAAQ2d,MAG5DC,GAAuB,SAAAC,GAA+C,IAA5CN,EAA4CM,EAA5CN,aAC5B,OADwEM,EAA9BL,YACrBxd,EAAQyd,SAAWF,IAAiBvd,EAAQ2d,MAG/DG,GAA0B,SAAA/c,GAC5B,OAD8DA,EAA/Bgd,aACT9d,EAAY0d,MAGhCK,GAAkB,SAACC,GAAD,OAAmBA,EAAM1E,MAAM,KAAK,IAmCtD2E,GAAiC,SACnCC,EACAC,EACAC,GAEA,IAAMC,EAAWD,EAAWrL,KAAK,SAAAlB,GAAC,OAAIA,EAAE+B,QAAUsK,IAElD,GAAIG,EAAU,CACV,IAAMC,EAAcD,EAASE,QAAQxL,KACjC,SAAAyL,GAAE,OAAIA,EAAG5K,QAAUuK,IAGvB,QAAOG,IACDA,EAAYf,YAAcxd,EAAQyd,SAC9Bc,EAAYhB,eAAiBvd,EAAQyd,SAInD,OAAO,GAGLiB,GAAwB,SAC1BP,EACAC,EACAC,GAEA,IAAMC,EAAWD,EAAWrL,KAAK,SAAAlB,GAAC,OAAIA,EAAE+B,QAAUsK,IAElD,GAAIG,EAAU,CACV,IAAMC,EAAcD,EAASE,QAAQxL,KACjC,SAAAyL,GAAE,OAAIA,EAAG5K,QAAUuK,IAGvB,GAAIG,EACA,OAAOA,EAAYI,YACbJ,EAAYI,iBACZnW,IAOZoW,GAAQ,SAACC,GAAD,QAA2BA,EAAM,IASzCC,GAAiB,SAAC5X,EAAe0P,GACnC,OAAO9C,GAAgB5M,EAAO8I,GAAe4G,KAI3CmI,GAAwB,SAACzI,GAC3B,OAAQA,GACJ,IAAK,UACD,OAAO9L,GAAU,qBAErB,IAAK,WAGL,QACI,OAAOA,GAAU,cA6FvBwU,GAAa,SAACjM,EAAYkM,EAAmBC,GAC/C,GAAIA,GAAanM,EAAInC,OAGjB,IAFA,IAAIuO,EAAID,EAAYnM,EAAInC,OAAS,EAE1BuO,KACHpM,EAAIpM,UAAK6B,GAIjB,OADAuK,EAAIkF,OAAOiH,EAAW,EAAGnM,EAAIkF,OAAOgH,EAAW,GAAG,IAC3ClM,GAuBLqM,GAAiB,SAAC7V,GACpB,IACM8V,EADsB,wBACoBC,KAAK/V,GAAM,IAC3D,OAAO8V,EAAMA,EAAI,GAAK,IAoBpBE,GAAU,SAACle,EAAqBme,GAClC,IAAMC,EAAS,IAAIha,KAAKpE,GAExB,OADAoe,EAAOC,QAAQD,EAAOvZ,UAAYsZ,GAC3BC,GAkBLE,GAA4B,SAC9Bte,EACAue,EACAhJ,GAEC,IADDiJ,EACCvO,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,IAAAA,UAAA,GAAAwO,EAC8B1P,GAAvBlM,mBAEkD0S,GAAMgJ,GAAxDvb,EAHPyb,EAGOzb,aAAcC,EAHrBwb,EAGqBxb,aACtB,GAAIub,GAAqB,QAATjJ,EACZ,OAAOvV,EAEP,IAAM0e,EAlDU,SAACP,GAAiC,IAAtBne,EAAsBiQ,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAf,IAAI7L,KACvCua,EAAQR,EACNS,EAAM,IAAIxa,KAAKpE,GACf6e,EAAeD,EAAIE,SAErB7b,EAAekb,EASnB,OAVoBU,EAAeV,GAGhB,IACfQ,GAAS,EAAIE,EACb5b,GAAgB,EAEhBA,GAAgC,EADhB8b,KAAKC,MAAML,EAAQ,IAGvCC,EAAIK,QAAQL,EAAInK,UAA2B,GAAfxR,EAAoB,GAAK,GAAK,KACnD2b,EAoCsBM,CAAgBlc,EAAchD,GACvD,OAAOke,GAAQQ,EAAkBzb,IAInCkc,GAA8B,SAACzN,GAoBjC,OAAOA,EAAIwB,KAnBO,SAACnN,EAAQwO,GACvB,IAAMpZ,EAAM,CACRikB,QAAS,EACTC,UAAW,EACXC,UAAW,EACXC,YAAa,GAGjB,OAAIpkB,EAAI4K,EAAEF,OAAS1K,EAAIoZ,EAAE1O,QACb,EAGR1K,EAAI4K,EAAEF,OAAS1K,EAAIoZ,EAAE1O,OACd,EAGJ,KAST2Z,GAAqB,SAACC,GACxB,OAAQA,GACJ,KAAK3hB,EAAW4hB,MACZ,MAAO,QAEX,QACI,OAAOD,IAGbE,GAAmB,SAACjN,GAAD,OACpB+G,KACG/G,EACA,0DACA,IACMkN,WAAW,IAAK,KAExBC,GAAqB,eAAAC,EAAA7jB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAC,EAAOC,GAAP,OAAA1F,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cAAAuF,EAAAtF,OAAA,SAC1B,IAAIjf,QAAQ,SAACC,EAASukB,GAAV,OACRC,KAAKrL,MAAMkL,EAAM,CACbI,QAAQ,EACRC,gBAAgB,EAChBC,SAHa,SAGJC,GACL,OAA8B,IAA1BA,EAAQC,OAAOnR,OAAqB1T,EAAQ4kB,EAAQE,OAExD3R,QAAQ3N,MAAM,mBAAoBof,EAAQC,QACnCN,EAAOK,EAAQC,eATR,wBAAAP,EAAApF,SAAAkF,MAAH,gBAAAW,GAAA,OAAAd,EAAAe,MAAAha,KAAAoJ,YAAA,GAcrB6Q,GAA6B,SAAAC,GAAsC,IAAnCC,EAAmCD,EAAnCC,QAClC,OAAIC,iBAAMD,IAEHjS,GAAOjL,uBAAuBod,KAAK,SAAAC,GAAI,OAAIA,EAAKhS,KAAK6R,MCjzC1D7hB,GAAcC,gCLtBiB,wBKsBjBA,GAEdgiB,GAAoB9hB,6BL9CW,wBACA,wBACA,wBK4CXA,GAapB+hB,GAAsB/hB,6BL/DW,0BACA,0BACA,0BK6DXA,GAatBgiB,GAAqBhiB,6BLhCW,yBACA,yBACA,yBK8BXA,GA+CrBiiB,GAAsBjiB,6BLpGW,0BACA,0BACA,0BKkGXA,GAyCtBkiB,GAAqBliB,6BLxIW,yBACA,yBACA,yBKsIXA,GAkBrBmiB,GAAgB,SAAChiB,EAADE,GAElB,OAAOC,EAF6DD,EAA3BC,YAEb,CACxBQ,KAAM,cACNC,OAAQ,OACRC,KARG,CAAER,YAIgCL,EAAOI,QALhBC,eAU7BS,KACCC,aAAS,SAACC,GACN,IAAMihB,EAASC,eAAeC,QAAQ,iBACtC,GAAInhB,GAAYA,EAAS0U,WAAayE,mBAAQnZ,EAASohB,WACnD,OAAIH,EACOxgB,aACH4gB,GAAgB3gB,QAAQ,CACpBugB,WAEJN,GAAkBjgB,QAAQV,IAG3BS,aAAGkgB,GAAkBjgB,QAAQV,IAExC,IAAMN,EACFM,EAASN,SACTM,EAASC,cACT,0BACJ,OAAOQ,aACHkgB,GAAkB9f,QAAQ,CACtBvF,KAAM2lB,EAAS,MAAQ,MACvBvhB,eAIZiB,aAAW,SAAAC,GAAK,OAAIH,aAAGkgB,GAAkB9f,QAAQD,QAqEnD0gB,GAAoB,SAACtiB,EAADshB,GAAkD,IA3BvCjB,EA6BjC,OAAOlgB,EAFiEmhB,EAA3BnhB,YAEF,CACvCQ,KAAM,kBACNC,OAAQ,OACRC,KAZG,CACH0hB,MArB6BlC,EA4BYrgB,EAAOI,QAAQiW,UA3B5DkM,KAqBIjiB,YAZF+f,EARF/f,YAqBI+V,SAAU,CAZqB,CAC/B5B,SAFF4L,EAPF5L,SAUIuB,UAHFqK,EANFrK,UAUIzD,KAAM,WACNiQ,cAAe7Q,KACfrV,KAAM,GACN2Z,SAAU,GACV3V,YAAa,QAedQ,KACCC,aAAS,SAACC,GACN,OAAOS,aAAG,CACNnF,KAAM0E,EAAWA,EAAS1E,KAAO,MACjCoE,QAASM,EAAWA,EAASN,QAAU,UACvC6hB,KAAMviB,EAAOI,QAAQiW,SAASkM,KAC9B9N,SAAUzU,EAAOI,QAAQiW,SAAS5B,SAClCuB,UAAWhW,EAAOI,QAAQiW,SAASL,cAG3CrU,aAAW,SAAAC,GAAK,OAAIH,aAAGG,OAsIzB6gB,GAAmB,SAACziB,EAAD0iB,GAAkD,IAA3BviB,EAA2BuiB,EAA3BviB,WACtCC,EAlD0B,SAAAuiB,GAWP,IAVzBtiB,EAUyBsiB,EAVzBtiB,YACAC,EASyBqiB,EATzBriB,YACAiiB,EAQyBI,EARzBJ,KACAK,EAOyBD,EAPzBC,SACAC,EAMyBF,EANzBE,QACAC,EAKyBH,EALzBG,eACA/M,EAIyB4M,EAJzB5M,iBACAG,EAGyByM,EAHzBzM,MACA6M,EAEyBJ,EAFzBI,SACAC,EACyBL,EADzBK,YAEA,OAAQT,GACJ,KAAK1kB,EAAmBqS,KACpB,MAAO,CACHqS,OACAliB,cACAuiB,WACAC,WAGR,KAAKhlB,EAAmBolB,UACpB,MAAO,CACHV,OACAjiB,cACAyiB,YAIR,KAAKllB,EAAmBqlB,aACpB,MAAO,CACHX,OACAjiB,cACA0iB,eAIR,QACI,MAAO,CACHT,OACAliB,cACAC,cACAyV,mBACAG,QACA4M,mBAMIK,CAA4BnjB,EAAOI,QAAQgjB,aAC3D,OAAOjjB,EAAmC,CACtCQ,KAAM,qBACNC,OAAQ,OACRC,KAAMT,IACPU,KACCC,aAAS,SAACC,GACN,OAAIA,GAA8B,QAAlBA,EAAS1E,KACdmF,aAAG,CACNnF,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,QAClB6hB,KAAMniB,EAAQmiB,KACdliB,YAAaD,EAAQC,YACrBuiB,SAAUxiB,EAAQwiB,SAClBE,eAAgB1iB,EAAQ0iB,eACxB/M,iBAAkB3V,EAAQ2V,iBAC1BG,MAAO9V,EAAQ8V,MACf6M,SAAU3iB,EAAQ2iB,SAClBC,YAAa5iB,EAAQ4iB,cAGtBvhB,aAAG,CACNnF,KAAM,MACNoE,QAAS,cAGjBiB,aAAW,SAAAC,GAAK,OAAIH,aAAGG,2BCpbzByhB,GAAc,SAAC5a,EAAS6a,EAAWC,GACrC,GAAIA,EACA,OAAQA,GACJ,IAAK,aACD,OAAO9a,IANI,KADA+a,EAOoB/a,GAN/BqH,OAAe,QAAU0T,EAAY,IAQzC,QACI,OAVU,IAACA,EAcvB,YAAW9b,IAAPe,EAAyBA,OAChBf,IAAT4b,EAA2BA,OAA/B,GA6DElU,GAAM,SAAA9J,GAUQ,IACVme,EAnEY,SAACxc,GAAwC,IAEvDyc,EASAzc,EATAyc,IACAC,EAQA1c,EARA0c,aACAC,EAOA3c,EAPA2c,cACAC,EAMA5c,EANA4c,cACAC,EAKA7c,EALA6c,aACAC,EAIA9c,EAJA8c,WACAC,EAGA/c,EAHA+c,WACAC,EAEAhd,EAFAgd,WACAC,EACAjd,EADAid,0BAEEC,EAASC,aAAajC,QAAQ,iBAC9BkC,EAAmBF,EAASvM,KAAKrC,MAAM4O,GAAU,GAEjDV,EAAc,CAChBC,IAAKL,GAAYK,EAAKW,EAAiBX,KACvCC,aAAcN,GAAYM,EAAcU,EAAiBV,cACzDC,cAAeP,GACXO,EACAS,EAAiBT,eAErBC,cAAeR,GACXQ,EACAQ,EAAiBR,eAErBE,WAAYV,GAAYU,EAAYM,EAAiBN,YAErDC,WAAYX,GAAYW,EAAYK,EAAiBL,YACrDF,aAAcT,GAAYS,EAAcO,EAAiBP,cAEzDG,WAAYZ,GACRY,EACAI,EAAiBJ,WACjB,cAGJC,0BAA2Bb,GACvBa,EACAG,EAAiBH,2BAGrBI,cAAexiB,GAAOY,IACtB6hB,UAAW5f,KAAKwa,MAAMqF,WACtBC,IAAK,eACLlD,QAAS,OAGPA,EAAU6C,aAAajC,QAAQ,WAKrC,OAJIZ,IACAkC,EAAYlC,QAAUA,GAGnBkC,EAcaiB,CAAc,CAC9BhB,IAFYpe,EAThBoe,IAYIC,aAHYre,EARhBqe,aAYIC,cAJYte,EAPhBse,cAYIC,cALYve,EANhBue,cAYIC,aANYxe,EALhBwe,aAYIC,WAPYze,EAJhBye,WAYIC,WARY1e,EAHhB0e,WAYIC,WATY3e,EAFhB2e,WAYIC,0BAVY5e,EADhB4e,4BAcM9jB,EAAgC,CAClCukB,QAAS/M,KAAKC,UAAU4L,IAG5BW,aAAaQ,QAAQ,gBAAiBxkB,EAAQukB,SAE9C,IAAME,EAAW,CACbjkB,OAAQ,OACRiV,IAAG,GAAAvF,OAAKxO,GAAOG,iBAAZ,qBACH6iB,QAAS,CACLC,eAAgB,mBAChBC,YAAaljB,GAAOQ,QAExB2iB,aAAc,OACdC,aAAa,EACbrkB,KAAMT,GAkCV,OA/BA+kB,GAAU,uCAAyC1B,GACnD0B,GAAU,yCAA2C/kB,GAExCglB,aAAKP,GAAU/jB,KACxBa,aAAW,SAAAzB,GAAmC,IAAhCQ,EAAgCR,EAAhCQ,QAASM,EAAuBd,EAAvBc,SACbY,EAAQ,CACVyjB,UAAW3kB,EACXpE,KAHsC4D,EAAbsV,OAIzB9U,WAOJ,OALIM,IACAY,EAAMtF,KAAO0E,EAAS1E,KACtBsF,EAAMlB,QAAUM,EAASN,SAGtBQ,aAAWU,KAEtBlG,aAAI,SAAAqhB,GAAkB,IAAf/b,EAAe+b,EAAf/b,SAEH,OADAmkB,GAAU,6CAA+CnkB,GAClDA,KAIQskB,UACnB,SAAArL,GAAG,OACCA,GAAOkL,GAAU,0CAA4ClL,IACjE,SAAAvH,GAAG,OACS,OAARA,GACAyS,GAAU,6CAA+CzS,MC5H/D2P,GAAkBxiB,6BP5DW,sBACA,sBACA,sBO0DXA,GAMlB0lB,GAAoB1lB,6BP6FW,6BACA,6BACA,6BO/FXA,GAMpB2lB,GAAqB3lB,6BPzDW,yBACA,yBACA,yBOuDXA,GAMrB4lB,GAA+B5lB,6BPrEjC,oCAEA,oCAEA,oCOiEiCA,GAM/B6lB,GAAkB/lB,gCPjFS,oBOiFTA,GAClBgmB,GAAchmB,gCPjFQ,eOiFRA,GACdimB,GAAkBjmB,gCP6DS,oBO7DTA,GAClBkmB,GAAkClmB,gCPjFpC,qCOiFoCA,GAIlCmmB,GAAiCnmB,gCPsDU,2BOtDVA,GC3DjComB,GAAqBlmB,6BRLW,yBACA,yBACA,yBQGXA,GAMrBmmB,GAAqBrmB,gCRRS,uBQQTA,GAErBsmB,GAActmB,gCRTQ,eQSRA,GCSdumB,GAAmBvmB,gCTYS,qBSZTA,GAEnBwmB,GAAwBtmB,6BTAY,6BACA,6BACA,6BSFZA,GAMxBumB,GAAyBvmB,6BTHY,8BACA,8BACA,8BSCZA,GAMzBwmB,GAAmBxmB,6BTLW,uBACA,uBACA,uBSGXA,GAoCnBymB,GAAqB,SACvBtmB,EADuB+c,GAQrB,IAhC6BzX,EAkC/B,OAAOnF,EAFL4c,EANA5c,YAQqB,CACnBQ,KAAM,iBACNC,OAAQ,OACRC,KAhCG,CACHP,aAN2BgF,EAiCYtF,EAAOI,SAhClDE,YAMIimB,gBAHQjhB,EAFZihB,gBAMIC,WAJQlhB,EADZkhB,cAmCG1lB,KACCC,aAAS,SAACC,GACN,GAAIA,IAAaA,EAAS1E,KACtB,OAAOmF,aAAG,CACNglB,MAAOzlB,EACP1E,KAAM,QAId,OAAOmF,aAAG,CACNf,QAFY,0BAGZ+lB,MAAO,GACPnqB,KAAM,UAGdqF,aAAW,SAAAC,GACP,OAAOH,aAAG,CACNglB,MAAO,GACP7kB,MAAOA,EAAMlB,QACbpE,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAMlB,cChHzBgmB,GAAsB7mB,6BV8CY,2BACA,2BACA,2BUhDZA,sDChB5B8mB,KAAKC,SAAS,CACVC,OAAQ,aACRC,MAAO,CACH,CACIC,WAAY,IACZxI,IAAKyI,MAET,CACID,WAAY,IACZxI,IAAK0I,kCCRXC,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACfxgB,gBAAiB,UACjBygB,WAAY,UAEhBC,IAAK,CACDC,MAAO,QACPC,OAAQ,OACRC,QAAS,cAIFC,GAAA,kBACXvhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOC,MAAOZ,GAAOM,IAAKjJ,IAAKwJ,SClBjCb,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPM,QAAS,GACTK,KAAM,EACNV,cAAe,YAQRW,GAJO,SAAA3iB,GAAA,IAAG4iB,EAAH5iB,EAAG4iB,SAAH,OAClB7hB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAAYa,ICR9BhB,GAASC,KAAWC,OAAO,CAC7Be,WAAY,CACRC,SAAU,WACVC,SAAU,GACVC,OAAQ,GACRC,KAAM,EACNC,MAAO,EACPC,UAAW,SACX5hB,MAAO,UAUA6hB,GAPI,kBACfriB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CACIC,MAAOZ,GAAOiB,WACdQ,OAAQ,SAAArjB,GAAA,IAAG6iB,EAAH7iB,EAAG6iB,WAAYS,EAAftjB,EAAesjB,WAAf,SAAAtY,OAAmC6X,EAAnC,OAAA7X,OAAmDsY,IAC3DC,OAAK,cCdP3B,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACfwB,eAAgB,SAChBvB,WAAY,UAEhBwB,QAAS,CACLhC,WAAY,IACZsB,SAAU,GACVxhB,MAAO,UACPmiB,WAAY,cAEhBC,UAAW,CACPlC,WAAY,IACZsB,SAAU,GACVxhB,MAAO,UACPmiB,WAAY,gBAILE,GAAA,WAAM,IAAAC,EAGbC,GADAC,OAAUC,EAFGH,EAEHG,KAAMC,EAFHJ,EAEGI,UAGpB,OACIljB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO6B,SAAUO,GAC9BjjB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO+B,WAAYM,+CC9BtCC,GAAUC,yBAAiC,IAEpCC,GAAyBF,GAAQG,SAE/BH,MCDA,SAASI,KACpB,OAAOC,sBAAWC,ICItB,IAAM5C,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACfxgB,gBAAiB,WAErBijB,UAAW,CACPtC,MAAO,GACPC,OAAQ,GACRsC,cAAe,GACfC,WAAY,EACZC,OAAQ,QAEZC,cAAe,CACX7C,cAAe,MACfC,WAAY,UAEhB6C,UAAW,CACPpB,WAAY,aACZjC,WAAY,IACZsB,SAAU,GAEdgC,UAAW,CACPhC,SAAU,GAEdiC,WAAY,CACRC,aAAc,MAUhBC,GAAsB,SAAAllB,GAAA,IAAG+J,EAAH/J,EAAG+J,MAAOjJ,EAAVd,EAAUc,MAAVqkB,EAAAnlB,EAAiBwiB,aAAjB,IAAA2C,EAAyB,GAAzBA,EAAA,OACxBpkB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAKtrB,OAAAkuB,GAAA,EAAAluB,CAAA,GAAO0qB,GAAOiD,cAAkBrC,IACvCzhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOkD,WAAY/a,EAAhC,MACAhJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOmD,WAAYjkB,QAMpCgjB,GADAuB,aAAgBC,kBAAavqB,kBAAaC,kBAAa6V,YAAO0U,WA6BnDC,GA1BM,WAAM,IAGMhM,EAHNiM,EACQnB,KAAvBlU,EADeqV,EACfrV,SAAUvD,EADK4Y,EACL5Y,SAIlB,OACI9L,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOC,MAAOZ,GAAO6C,UAAWxL,KAJXO,EAIoC,KAHlD,OAAXA,EAAkBkM,KAAWC,QAIzB5kB,GAAAC,EAAAC,cAAC2kB,GAAD,CACIpD,MAAOZ,GAAOoD,WACdjb,MAAOub,GACPxkB,MAAO8K,GAAiB,IAAIvM,OAAW,KAE3C0B,GAAAC,EAAAC,cAAC2kB,GAAD,CAAM7b,MAAOhP,GAAa+F,MAAOsP,EAASrV,cAC1CgG,GAAAC,EAAAC,cAAC2kB,GAAD,CACIpD,MAAOZ,GAAOoD,WACdjb,MAAO/O,GACP8F,MAAO+L,EAASC,iBAGpB/L,GAAAC,EAAAC,cAAC2kB,GAAD,CAAM7b,MAAO8G,GAAO/P,MAAOsP,EAASS,QACpC9P,GAAAC,EAAAC,cAAC2kB,GAAD,CAAM7b,MAAOwb,GAAMzkB,MAAOsP,EAASQ,wICxEvCiV,GAAoB/B,GAApB+B,gBAEFjE,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,MACfC,WAAY,SACZE,MAAO,IACP8C,aAAc,GACda,UAAW,IAGf5D,IAAK,CACD6D,UAAW,QACX5D,MAAO,GACPC,OAAQ,IAGZpU,KAAM,CACF0V,WAAY,aACZjC,WAAY,IACZsB,SAAU,MAYHiD,GARc,kBACzBjlB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOtJ,IAAKgN,KAAWzD,MAAOZ,GAAOM,MAErCnhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAO6X,GAAgB9b,SCpB7C6X,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACf8D,UAAW,GACXzD,QAAS,YAGb6D,iBAAkB,CACdlE,cAAe,MACfC,WAAY,SACZI,QAAS,WAEb8D,UAAW,CACPhE,MAAO,KAGXD,IAAK,CACDC,MAAO,GACPC,OAAQ,GACRgE,YAAa,GAEjBpY,KAAM,CACF+U,SAAU,GAGd6B,OAAQ,CACJ7B,SAAU,EACVV,QAAS,WAEbgE,SAAU,CACNP,UAAW,EACXzD,QAAS,UACTU,SAAU,KAIZuD,GAAwD,SAAAtmB,GAAA,IAC1DiZ,EAD0DjZ,EAC1DiZ,IACAjL,EAF0DhO,EAE1DgO,KAEA4U,EAJ0D5iB,EAI1D4iB,SAJ0D,OAM1D7hB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOsE,kBAChBnlB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOtJ,IAAKA,EAAKuJ,MAAOZ,GAAOM,MAC9BU,GAAYA,EACZ5U,GAAQjN,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOA,KAkC7BuY,GA9Ba,WACxB,OACIxlB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACulB,GAAD,MAEAzlB,GAAAC,EAAAC,cAACwlB,GAAD,CAAWxN,IAAKyN,KAAU1Y,KAAM6X,mBAAgBjV,QAChD7P,GAAAC,EAAAC,cAACwlB,GAAD,CAAWxN,IAAK0N,MACZ5lB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACIxhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAO6X,mBAAgBhV,OAC3C9P,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAKtrB,OAAAkuB,GAAA,EAAAluB,CAAA,GAAO0qB,GAAO5T,KAAS4T,GAAOuE,YACpCN,mBAAgBe,oBAK7B7lB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOyE,UAAWR,mBAAgBgB,MAE/C9lB,GAAAC,EAAAC,cAACwlB,GAAD,CAAWxN,IAAK6N,KAAc9Y,KAAM6X,mBAAgBkB,WACpDhmB,GAAAC,EAAAC,cAACwlB,GAAD,CAAWxN,IAAK+N,MACZjmB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACIxhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAO6X,mBAAgBtV,KAC3CxP,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAO6X,mBAAgBoB,SAInDlmB,GAAAC,EAAAC,cAACwlB,GAAD,CAAWxN,IAAKiO,KAAalZ,KAAM6X,mBAAgBsB,YCjFzDvF,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACfxgB,gBAAiB,UACjB6gB,QAAS,GACT+E,aAAc,GACdhF,OAAQ,UAcDiF,GAVI,WACf,OACItmB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACqmB,GAAD,MAEAvmB,GAAAC,EAAAC,cAACsmB,GAAD,QClBN3F,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPyF,aAAc,EACdC,kBAAmB,OACnB3B,UAAW,GAEf9X,KAAM,CACF0V,WAAY,aACZjC,WAAY,IACZsB,SAAU,MAaH2E,GALY,SAAA1nB,GAAA,IAAG+J,EAAH/J,EAAG+J,MAAH,OACvBhJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOjE,KCjB7B6X,GAASC,KAAWC,OAAO,CAC7B9T,KAAM,CACF0V,WAAY,aACZjC,WAAY,IACZsB,SAAU,GACVkC,aAAc,MAQP0C,GAJK,WAChB,OAAO5mB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAO8V,GAAQ8D,SCZxChG,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACfK,QAAS,WAEbtY,MAAO,CACH2Z,WAAY,aACZjC,WAAY,IACZsB,SAAU,IAGdjiB,MAAO,CACHiiB,SAAU,MAyBH8E,GAZY,SAAA7nB,GAAA,IACvB+J,EADuB/J,EACvB+J,MADuB+d,EAAA9nB,EAEvB4b,KAAQza,EAFe2mB,EAEf3mB,KAAM4mB,EAFSD,EAETC,cAAeC,EAFNF,EAEME,cAFN,OAIvBjnB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO7X,OAApB,IAA6BA,EAA7B,OACAhJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO9gB,OAApB,IAA6BK,EAA7B,KACAJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO9gB,OAApB,IAA6BinB,EAA7B,KACAhnB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO9gB,OAApB,IAA6BknB,EAA7B,OCjCFpG,GAASC,KAAWC,OAAO,CAC7BmG,mBAAoB,CAChBjG,cAAe,MACfC,WAAY,UAEhBlY,MAAO,CACH2Z,WAAY,aACZjC,WAAY,IACZsB,SAAU,IAEdjiB,MAAO,CACHiiB,SAAU,MAcHmF,GAVgD,SAAAloB,GAAA,IAC3D+J,EAD2D/J,EAC3D+J,MACAjJ,EAF2Dd,EAE3Dc,MAF2D,OAI3DC,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOqG,oBAChBlnB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO7X,OAAQA,EAA5B,OACAhJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO9gB,OAAQA,KChB9B8gB,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPM,QAAS,iBAgBbyB,GAHAqE,SACIC,MAAS5X,WAAM3C,gBAAWwa,iBAAYrqB,SAAIG,SAAImqB,uBAIhDC,GAAgB,SAAC/O,GAAD,MAAqC,OAAXA,EAAkBxb,GAAKG,IACjEqqB,GAAkB,SAACC,GACrB,OAAKA,EACEA,EAAeje,OAAS,EAAI,MAAQ,MADf,IAwBjBke,GApBD,WAAM,IAAAC,EAGZrE,KADAzX,SAAY2M,EAFAmP,EAEAnP,OAAQoP,EAFRD,EAEQC,qBAAsBH,EAF9BE,EAE8BF,eAG9C,OACI1nB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAAC4nB,GAAD,CAAW9e,MAAOyG,GAAM1P,MAAOynB,GAAc/O,KAC7CzY,GAAAC,EAAAC,cAAC4nB,GAAD,CACI9e,MAAO8D,GACP/M,MAAOwnB,GAAiBM,KAE5B7nB,GAAAC,EAAAC,cAAC4nB,GAAD,CACI9e,MAAOse,GACPvnB,MAAO0nB,GAAgBC,OCvCjC7G,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPM,QAAS,iBAabyB,GARAqE,SACIW,QACIC,sBACAjL,kBACAkL,iBACAC,yBA2BGC,GAtBC,WAAM,IAAAC,EAGd7E,KADAtU,MAA8BoZ,EAFhBD,EAELE,oBAA6CC,EAFxCH,EAEkCluB,KAAmBtE,EAFrDwyB,EAEqDxyB,GAQ/CsyB,GAAmBrc,KACvC,SAAA2c,GAAE,OAAIA,EAAGzoB,QAAUsoB,IAEvB,OACIroB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAAC4nB,GAAD,CAAW9e,MAAOgf,GAAiBjoB,MAAOwoB,GAAe,KACzDvoB,GAAAC,EAAAC,cAAC4nB,GAAD,CAAW9e,MAAO+T,GAAahd,MAAOsoB,IACtCroB,GAAAC,EAAAC,cAAC4nB,GAAD,CAAW9e,MAAOif,GAAYloB,MAAOnK,MC7BpC6yB,GAA2B,SAAA7nB,GACpC,IAAI8nB,EAGAA,EAD0B,kBAAnB9nB,EAAMihB,SACH7hB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAO5gB,EAAMihB,UACU,kBAAnBjhB,EAAMihB,SACV7hB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAO5gB,EAAMihB,SAAS1D,YAEtBvd,EAAMihB,SAGpB,IAWM8G,EAAiC,CAXF,CACjChH,KAAM/gB,EAAMgoB,WAAa,EAEzBnG,eAAgB,UAChBL,UAAWxhB,EAAMwhB,WAAa,OAC9BJ,SAAUphB,EAAMohB,YAAgC,IAAnBphB,EAAMioB,SAAoB,GAAK,IAC5DC,YAAa,kBACbC,SAAU,aACVC,WAAY,YAGsCpoB,EAAM6gB,OAAS,IACrE,OACIzhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOkH,EAAchU,MAAM,GAC5B+T,IAKED,MCpCFQ,GAAmC,SAAAroB,GAC5C,OACIZ,GAAAC,EAAAC,cAACgpB,GAAD/yB,OAAAgzB,OAAA,GACQvoB,EADR,CAEI6gB,MAAKtrB,OAAAkuB,GAAA,EAAAluB,CAAA,GACEyK,EAAM6gB,MACL7gB,EAAMia,KAAK4G,OAAS,MAG3B7gB,EAAM6nB,KAAK7nB,EAAMia,QCsCfuO,GA9CuB,SAAAxoB,GAClC,IAAMyoB,EAAkBlmB,KAAMmmB,SAASC,QAAQ3oB,EAAMihB,UAEjD2H,EAAqB,EACrBC,EAA4B,EAChCJ,EAAS7c,QAAQ,SAACjN,QACY8B,IAAtB9B,EAAEqB,MAAMgoB,YACRY,GAAsBjqB,EAAEqB,MAAMgoB,UAE9Ba,OAIR,IAAMC,EAA4BzQ,KAAK0Q,KACnCH,GAAsBH,EAAS5f,OAASggB,IAE5C,OACIzpB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAEIC,MAAO,CACHgF,aAAc,kBACdqC,YAAa,kBACbc,WAAY,kBACZC,UAAW,kBACXzI,MAAO,OACP0I,QAAS,OACT7I,cAAe,MACfwB,eAAgB,YAGnB4G,EAASh0B,IAAI,SAAC00B,EAAIC,GAAL,OACV7mB,KAAM8mB,aAAaF,EAAI,CACnBnB,UAAWmB,EAAGnpB,MAAMgoB,WAAac,EACjC7O,KAAMja,EAAMia,KACZxa,IAAK2pB,EACLhI,SAAUphB,EAAMohB,SAChBI,UAAW2H,EAAGnpB,MAAMwhB,WAAaxhB,EAAMwhB,UACvC8H,kBAAmC,IAAhBF,EACnBG,mBAAoBH,IAAgBX,EAAS5f,OAAS,EACtDgY,MAAOsI,EAAGnpB,MAAM6gB,OAAS7gB,EAAM6gB,YC7CtC2I,GAA4B,SAAAxpB,GACrC,IAAMyoB,EAAkBlmB,KAAMmmB,SAASC,QAAQ3oB,EAAMihB,UAErD,OACI7hB,GAAAC,EAAAC,cAACmqB,GAADl0B,OAAAgzB,OAAA,GAASvoB,EAAT,CAAgBP,IAAK,WAChBgpB,EAASh0B,IAAI,SAAC00B,EAAIC,GAAL,OACV7mB,KAAM8mB,aAAaF,EAAI,CACnB1pB,IAAK2pB,EACLnB,UAAU,EACV7G,SAAUphB,EAAMohB,SAChBI,UAAWxhB,EAAMwhB,UACjBX,MAAMtrB,OAAAkuB,GAAA,EAAAluB,CAAA,GACEyK,EAAM6gB,OAAS,GACfsI,EAAGnpB,MAAM6gB,OAAS,UAQ/B2I,MClBFE,GAA2B,SAAA1pB,GACpC,IAAMyoB,EAAkBlmB,KAAMmmB,SAASC,QAAQ3oB,EAAMihB,UAIrD,OAFiBjhB,EAAMia,MAAQ,IAEfxlB,IAAI,SAACwlB,EAAW0P,GAAZ,OAChBvqB,GAAAC,EAAAC,cAACmqB,GAADl0B,OAAAgzB,OAAA,GAASvoB,EAAT,CAAgBP,IAAKkqB,EAAU1P,KAAMA,IAChCwO,MAKEiB,MCTFE,GAAwB,SAAA5pB,GACjC,IAAI6pB,EAAmB,KACnBC,EAAiB,KAWrB,OATAvnB,KAAMmmB,SAAS9c,QAAQ5L,EAAMihB,SAAU,SAACtT,GAChCA,EAAEkB,OAAS2a,GACXK,EAAclc,EACPA,EAAEkB,OAAS6a,KAClBI,EAAYvnB,KAAM8mB,aAAa1b,EAAG,CAC9BsM,KAAMtM,EAAE3N,MAAMia,MAAQja,EAAMia,MAAQ,QAK5C7a,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CACIC,MAAO,CACHL,MAAO,SAGVqJ,EACAC,ICtBP7J,GAASC,KAAWC,OAAO,CAC7BvG,OAAQ,CACJ/Z,gBAAiB,UACjB6gB,QAAS,QACTqB,WAAY,aACZjC,WAAY,IACZsB,SAAU,IAGdxnB,KAAM,CACF8mB,QAAS,YAGbqJ,SAAU,CACNlqB,gBAAiB,UACjBkiB,WAAY,aACZjC,WAAY,OAsDLkK,GAlDK,WAAM,IACd3b,EAAesU,KAAftU,MAEAxB,EAAyCwB,EAAzCxB,OAkBFod,EAAgB,CAClB,CACIC,gBApByC7b,EAAjC8b,6BAqBRtd,OAAM,GAAAxD,OAAKwD,EAAL,WAGV,CACIgU,MAAOZ,GAAO8J,SAEdG,gBAAiB,QACjBrd,OAAM,GAAAxD,OAAKwD,EAAL,YAGd,OACIzN,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACIxhB,GAAAC,EAAAC,cAAC8qB,GAAD,CAAOnQ,KAAMgQ,GACT7qB,GAAAC,EAAAC,cAAC+qB,GAAD,CAAQ7I,UAAU,SAASX,MAAOZ,GAAOrG,QACrCxa,GAAAC,EAAAC,cAACgrB,GAAD,4BACAlrB,GAAAC,EAAAC,cAACgrB,GAAD,iBAEJlrB,GAAAC,EAAAC,cAACirB,GAAD,CAAM1J,MAAOZ,GAAOrmB,MAChBwF,GAAAC,EAAAC,cAACkrB,GAAD,CAAU3C,KAAM,SAAA4C,GAAC,OAAIA,EAAEP,mBACvB9qB,GAAAC,EAAAC,cAACkrB,GAAD,CAAU3C,KAAM,SAAA4C,GAAC,OAAIA,EAAE5d,QAAQ2U,UAAU,cCxDvDvB,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACfxgB,gBAAiB,OACjB6gB,QAAS,aACTF,MAAO,cAOX2B,GAFAuI,QAAWC,kBAAaC,qBAExBzI,GADAqE,SAAYC,YAAOU,cAmCR0D,GAhCK,WAAM,IAAA/G,EAIlBnB,KAFYnjB,EAFMskB,EAElBrV,SAAYjP,KACZkrB,EAHkB5G,EAGlB4G,QAGJ,OACItrB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACwrB,GAAD,MAEA1rB,GAAAC,EAAAC,cAACyrB,GAAD,CACI3iB,MAAOwiB,GACP3Q,KAAM,CACFza,KAAI,GAAA6J,OAAK7J,EAAKgO,SAAV,KAAAnE,OAAsB7J,EAAKuP,UAA3B,KAAA1F,OAAwC7J,EAAKwP,UACjDoX,cAAa,GAAA/c,OAAKqhB,EAAQM,OAAb,KAAA3hB,OAAuBqhB,EAAQO,QAC5C5E,cAAa,GAAAhd,OAAKqhB,EAAQQ,WAAb,KAAA7hB,OAA2BqhB,EAAQS,aAIxD/rB,GAAAC,EAAAC,cAACyrB,GAAD,CAAS3iB,MAAOuiB,GAAYviB,MAAO6R,KAAM0Q,GAAY1Q,OAErD7a,GAAAC,EAAAC,cAAC8rB,GAAD,CAAShjB,MAAOqe,GAAMre,QACtBhJ,GAAAC,EAAAC,cAAC+rB,GAAD,MAEAjsB,GAAAC,EAAAC,cAAC8rB,GAAD,CAAShjB,MAAO+e,GAAQ/e,QACxBhJ,GAAAC,EAAAC,cAACgsB,GAAD,MAEAlsB,GAAAC,EAAAC,cAACisB,GAAD,QChDNtL,GAASC,KAAWC,OAAO,CAC7BC,UAAW,GACXoL,SAAU,CACN9K,QAAS,SACTqB,WAAY,aACZjC,WAAY,IACZsB,SAAU,IAGd/U,KAAM,CACF+U,SAAU,MA8BHqK,GA1BI,WAAM,IAAA3H,EAIjBnB,KAFAtU,EAFiByV,EAEjBzV,MACY7O,EAHKskB,EAGjBrV,SAAYjP,KAQhB,OACIJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MACfgV,UAAOqK,WACPrd,EAAM/U,MAAQ,GAFnB,MAIA8F,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CACIC,MAAOZ,GAAOuL,UADlB,GAAAniB,OAEK7J,EAAKgO,SAFV,KAAAnE,OAEsB7J,EAAKuP,UAF3B,KAAA1F,OAEwC7J,EAAKwP,SAF7C,MAIA5P,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOgV,UAAOhV,6BCnCxC4T,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPE,WAAY,WACZa,SAAU,YAGdZ,IAAK,CACDC,MAAO,GACPC,OAAQ,GACRU,SAAU,WACVI,MAAO,EACPoK,QAAS,IAGbzI,cAAe,CACX/B,SAAU,WACVI,MAAO,EACPF,QAAS,GACTf,WAAY,YAGhBjU,KAAM,CACF+U,SAAU,MAeHwK,GAXA,kBACXxsB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOtJ,IAAKuU,KAAYhL,MAAOZ,GAAOM,MAEtCnhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOiD,eAChB9jB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOyf,UAAOC,OAClC3sB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOyf,UAAOE,UCZxC/L,GAASC,KAAWC,OAAO,CAC7B8L,KAAM,GACN7L,UAAU7qB,OAAAkuB,GAAA,EAAAluB,CAAA,CACNmrB,QAAS,GACTK,KAAM,EACNV,cAAe,UAXJ,CACf6L,wBAAyB,CACrB7L,cAAe,YAYnB8L,iBAAkB,CACd9L,cAAe,MACfwB,eAAgB,gBAChBsC,UAAW,GACXb,aAAc,MA+BP8I,GA3B+B,SAAApsB,GAC1C,OACIZ,GAAAC,EAAAC,cAACmjB,GAAD,CAAwBtjB,MAAK5J,OAAAkuB,GAAA,EAAAluB,CAAA,GAAOyK,IAChCZ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAUyL,OAAO,aAAajkB,MAAM,4BAChChJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMpV,KAAK,KAAKqV,MAAOZ,GAAOgM,MAC1B7sB,GAAAC,EAAAC,cAACqhB,GAAD,MAEAvhB,GAAAC,EAAAC,cAACgtB,GAAD,KACIltB,GAAAC,EAAAC,cAAC2iB,GAAD,MAEA7iB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOkM,kBAChB/sB,GAAAC,EAAAC,cAACitB,GAAD,MACAntB,GAAAC,EAAAC,cAACktB,GAAD,OAGJptB,GAAAC,EAAAC,cAACmtB,GAAD,MAEArtB,GAAAC,EAAAC,cAACotB,GAAD,OAGJttB,GAAAC,EAAAC,cAACqtB,GAAD,UCgCdl0B,GAAcC,gCvChBgB,uBuCgBhBA,GACdk0B,GAA+Bl0B,gCvC8EI,4BuC9EJA,GAyB/Bm0B,GAAmBj0B,6BvCnDW,uBACA,uBACA,uBuCiDXA,GAMnBk0B,GAAuBl0B,6BvCtDW,2BACA,2BAFJ,uBuCuDPA,GAMvBm0B,GAAqBn0B,6BvCzDW,yBACA,yBACA,yBuCuDXA,GAMrBo0B,GAAoBp0B,6BvC1DW,wBACA,wBACA,wBuCwDXA,GAMpBq0B,GAA8Br0B,6BvCuBhC,mCAIA,mCAFA,mCuCzBgCA,GAwG9Bs0B,GAAkB,SAACn0B,EAADshB,GAEpB,OAAOnhB,EAF+DmhB,EAA3BnhB,YAEL,CAClCQ,KAAM,gDACNC,OAAQ,OACRC,KArByB,SAAAwf,GAGR,IAFrB/f,EAEqB+f,EAFrB/f,YACAD,EACqBggB,EADrBhgB,YAEA,MAAO,CACH+zB,QAAS,MACTn4B,GAAI,OACJud,OAAQ,CACJ1W,SAAUwM,GAAO1M,WAAWE,SAC5BD,SAAUyM,GAAO1M,WAAWC,SAC5BwxB,aAAch0B,EACdi0B,aAAch0B,IAMNi0B,CAAyBv0B,EAAOI,SAK5Co0B,OAAO,EACPC,SAAS,IACV3zB,KACCC,aAAS,SAACC,GACN,GAAIA,QAA+B0G,IAAnB1G,EAASY,MACrB,OAAOH,aAAGsyB,GAAqBryB,QAAQV,IAE3C,IAAIN,EAAU,UAId,OAHIM,EAASY,QACTlB,EAAUM,EAASY,MAAM8yB,aAAe,WAErCjzB,aAAGsyB,GAAqBlyB,QAAQ,CAAEvF,KAAM,MAAOoE,eAE1DiB,aAAW,SAAAC,GAAK,OAAIH,aAAGsyB,GAAqBlyB,QAAQD,QAItD+yB,GAA4B,SAC9B30B,EAD8B40B,GAG7B,IADCz0B,EACDy0B,EADCz0B,WACD00B,EAGQ70B,EADLI,QAAW00B,EAFdD,EAEcC,YAGf,OAAO30B,EAAgB,CACnBQ,KAAM,0BACNC,OAAQ,OACRC,KARHrE,OAAAu4B,EAAA,EAAAv4B,CAAAq4B,EAAA,mBASE/zB,KACCC,aAAS,SAACC,GACN,OAAIA,GAAgC,kBAAbA,GC1RXiG,ED2Re6tB,EC1RnCE,aAAI3uB,GAAAC,EAAAC,cAAC0uB,GAAmBhuB,IACnBiuB,SACAl5B,KAAK,SAAAm5B,GACF7a,OAAO8a,KAAKrzB,IAAIszB,gBAAgBF,MDyRrB1zB,aAAGyyB,GAA4BxyB,QAAQV,KAG3CS,aAAGyyB,GAA4BryB,QAAQb,EAASN,UChSpD,IAASuG,IDkShBtF,aAAW,SAAAC,GAAK,OACZH,aAAGyyB,GAA4BryB,QAAQD,EAAMlB,cExLnDhB,GAAcC,gCzCfgB,uByCehBA,GAEd21B,GAAoBz1B,6BzC7BW,wBACA,wBACA,wByC2BXA,GAMpB01B,GAAoB11B,6BzChCW,wBACA,wBACA,wByC8BXA,GAMpB21B,GAAkB31B,6BzCnCW,sBACA,sBACA,sByCiCXA,GAMlB41B,GAAqB51B,6BzCtCW,yBACA,yBACA,yByCoCXA,GAmIrB61B,GAAsB,SAAC11B,EAADshB,GAExB,OAAOnhB,EAFmEmhB,EAA3BnhB,YAEA,CAC3CQ,KAAM,WACNC,OAAQ,OACRC,KA7F+B,SAAAkc,GAAuB,IAApB5K,EAAoB4K,EAApB5K,SACtC,MAAO,CACHiQ,UAAW,CAAC5lB,OAAAkuB,GAAA,EAAAluB,CAAA,GAED2V,KAqFCwjB,CAA+B31B,EAAOI,SAKlDw1B,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,OAAKA,EAQES,aACH6zB,GAAkB5zB,QAAQ,CACtBm0B,aAAc70B,EAASwS,SACvBlT,YAAaN,EAAOI,QAAQE,YAC5BqjB,aAAc3jB,EAAOI,QAAQgiB,UAAU,GAAGuB,aAC1CxR,SAAUnS,EAAOI,QAAQ+R,YAZtB1Q,aACH6zB,GAAkBzzB,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,sBAazBiB,aAAW,SAAAC,GAAK,OAAIH,aAAG6zB,GAAkBzzB,QAAQD,QAyDnDk0B,GAA2B,SAAAlB,GAGZ,IAFjBxS,EAEiBwS,EAFjBxS,UACAuB,EACiBiR,EADjBjR,aAEMoS,EACF3T,GACAA,EAAU1mB,IAAI,SAAAyW,GACV,IAAM6jB,EAzCG,SAAC7jB,GAClB,QAAiBzK,IAAbyK,EACA,MAAO,GAEX,IAAM6jB,EAAY7jB,EAAS6jB,UAC3B,OAAIA,GAAaA,EAAU,GAAGje,SAAW,EAC9Bie,EAEP7jB,EAAS8jB,aAAe54B,EAAY64B,WAC7B,CACH,CACIpX,OAAQ3M,EAAS2M,OACjBlL,UAAWxW,EAAW84B,WACtBne,SAAU,IAIlB5F,EAAS8jB,aAAe54B,EAAY84B,SAC7B,CACH,CACIrX,OAAQ3M,EAAS2M,OACjBlL,UAAWxW,EAAWg5B,KACtBre,SAAU,GAEd,CACI+G,OAAQ3M,EAAS2M,OACjBlL,UAAWxW,EAAWi5B,IACtBte,SAAU,IAIf,GAUmBue,CAAankB,GAC/B,OAAO3V,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEI6jB,gBAGZ,MAAO,CACHrS,eACAvB,UAAW2T,EAEXQ,gBAAiBC,QACbT,GACIA,EAAkB,IAClBA,EAAkB,GAAGxU,SAEtBwU,EAA0B,GAAGxU,QAC9B,OAIRkV,GAAgB,SAClBz2B,EADkB02B,GAKlB,OAAOv2B,EAFqBu2B,EAD1Bv2B,YAG+B,CAC7BQ,KAAM,aACNC,OAAQ,OACRC,KAJYi1B,GAAyB91B,EAAOI,SAK5Cw1B,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,GAAIA,GAA8B,qBAAlBA,EAAS1E,KAA6B,CAClD,IAAMgE,EAAcN,EAAOI,QAAQgiB,UAAU,GAAGhQ,eAChD,OAAO3Q,aAAG,CACNnB,cACAq2B,OAAQ31B,EAAS21B,SAGzB,OAAOl1B,aAAG,CACNnF,KAAM,MACNoE,QAAS,UACTkB,MAAO,cAGfD,aAAW,SAAAC,GAAK,OACZH,aAAG,CACCnF,KAAM,MACNoE,QAAS,UACTkB,MAAO,gBAgCjBg1B,GAAkB,SACpB52B,EADoB62B,GAKpB,OAAO12B,EAFuB02B,EAD5B12B,YAGiC,CAC/BQ,KAAM,eACNC,OAAQ,OACRC,KAxB2B,SAAAi2B,GAGZ,IAFnBnT,EAEmBmT,EAFnBnT,aACAvB,EACmB0U,EADnB1U,UAEA,MAAO,CACHuB,eACAvB,YACA2U,aAAc,SACdR,gBAAiBC,QACbpU,GAAaA,EAAU,IAAMA,EAAU,GAAGb,SAEvCa,EAAkB,GAAGb,QACtB,MAQMyV,CAA2Bh3B,EAAOI,SAK9Cw1B,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,OAAIA,EAASi2B,aACFx1B,aAAG,CAAEw1B,aAAcj2B,EAASi2B,eAEhCx1B,aAAG,CACNG,MAAO,UACPtF,KAAM,MACNoE,QAAS,qBAGjBiB,aAAW,SAAAC,GAAK,OACZH,aAAG,CACCG,MAAOA,EAAMlB,QACbpE,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAMlB,cAgEzBw2B,GAAgB,SAAAC,GAAA,IAClBC,EADkBD,EAClBC,eACAjlB,EAFkBglB,EAElBhlB,SAFkB,OAAA3V,OAAAkuB,GAAA,EAAAluB,CAAA,GAOf46B,EAPe,CAQlBC,gBACIllB,EAASmlB,cAAcD,iBACvBD,EAAeC,mBAkFjBE,GAAmB,SAACv3B,EAADw3B,GAAkD,IAA3Br3B,EAA2Bq3B,EAA3Br3B,WACtCC,EAhF0B,SAAAq3B,GAQP,IAPzBp3B,EAOyBo3B,EAPzBp3B,YACA8R,EAMyBslB,EANzBtlB,SACAoQ,EAKyBkV,EALzBlV,KACAmV,EAIyBD,EAJzBC,QACA3J,EAGyB0J,EAHzB1J,eACA5a,EAEyBskB,EAFzBtkB,UACAwkB,EACyBF,EADzBE,OAEA,QAAiBjwB,IAAbyK,EACA,MAAO,CACH9R,cACAkiB,OACApQ,YAGR,IAAMylB,EAA2Bp7B,OAAAkuB,GAAA,EAAAluB,CAAA,GAAQ2V,GACzC,OAAQoQ,GACJ,KAAKzkB,EAAiB+5B,sBACd1kB,IACAykB,EAAiB1J,qBAAuB/a,GAE5C,MAGJ,KAAKrV,EAAiBg6B,QACd/J,IACA6J,EAAiB7J,eAAiBA,GAEtC,MAGJ,KAAKjwB,EAAiBi6B,QAClB,GAAIL,EAAS,CACT,IAAM7mB,EAAQc,KACdimB,EAAiBN,cAAjB96B,OAAAkuB,GAAA,EAAAluB,CAAA,GACO06B,GAAc,CAAE/kB,WAAUilB,eAAgBM,IADjD,CAEIlV,cAAe3R,IAIvB,MAGJ,KAAK/S,EAAiBk6B,QAClB,GAAIL,EAAQ,CACR,IAAIN,EACAO,EAAiBN,cAAcD,gBAC/BA,IACAA,EAAkBA,EAAgB37B,IAAI,SAAAg2B,GAClC,OAAIA,EAAE3e,QAAU4kB,EAAO5kB,OACf2e,EAAEuG,gBAAgBvG,EAAEuG,QACjBvG,GAEJl1B,OAAAkuB,GAAA,EAAAluB,CAAA,GACAk1B,EADP,CAEIwG,OAAQP,EAAOO,OACfD,SAAS,OAIrBL,EAAiBN,cAAjB96B,OAAAkuB,GAAA,EAAAluB,CAAA,GACOo7B,EAAiBN,cADxB,CAEID,qBAShB,MAAO,CACHh3B,cACAkiB,OACApQ,SAAUylB,GAKEO,CAA4Bn4B,EAAOI,SACnD,OAAOD,EAAkC,CACrCQ,KAAM,eACNC,OAAQ,OACRC,KAAMT,IACPU,KACCC,aAAS,SAACC,GAIN,GAAIA,EAAU,CACV,GAAsB,OAAlBA,EAAS1E,KACT,OAAOmF,aAAG,CACNnF,KAAM0E,EAAS1E,KACf6V,SAAU/R,EAAQ+R,WAG1B,GAAsB,OAAlBnR,EAAS1E,KACT,OAAOmF,aAAG,CACNnF,KAAM0E,EAAS1E,KACfo4B,YAAa1zB,EAAS0zB,cAKlC,OAAOjzB,aAAG,CACNnF,KAAM,MACNoE,QAAS,qBAGjBiB,aAAW,SAAAC,GAAK,OAAIH,aAAGG,OCrlBzBw2B,GAA6Bv4B,6B1C8E/B,kCAEA,kCAEA,kC0ClF+BA,GAM7Bw4B,GAAwBx4B,6B1C0HW,4BACA,4BACA,4B0C5HXA,GAMxBy4B,GAAwB34B,gC1CuHS,0B0CvHTA,GAaxB44B,GAAyB,SAC3Bv4B,EAD2BsF,GAK3B,OAAOnF,EAFNmF,EADCnF,YAGiC,CAC/BQ,KAAM,uBACNC,OAAQ,OACRC,KAd+B,SACnCT,GAEA,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAOIo4B,CAA+Bx4B,EAAOI,SAKlDo0B,OAAO,IACR1zB,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACH22B,GAA2Bv2B,QAAQ,CAC/BvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAG22B,GAA2B12B,QAAQV,MAEjDW,aAAW,SAAAC,GACP,OAAOH,aACH22B,GAA2Bv2B,QAAQ,CAC/BvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,6BCrG7BtL,GAAUqP,GAAgBC,OAC1BC,GAAiBvP,GAAQwP,QAIlBC,GAAb,SAAAC,GAGI,SAAAD,IAIE,IAAA3xB,EAHExG,EAGF8P,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAHoBmoB,GAClBr8B,EAEFkU,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFiC,KAC/B0Q,EACF1Q,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GADqB,KACrB,OAAAhU,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAyxB,IACE3xB,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAq8B,GAAAtxB,KAAAH,KAAM1G,KAPHpE,UAML,EAAA4K,EALKga,UAKL,EAEEha,EAAK5K,KAAOA,EACZ4K,EAAKga,KAAOA,EAHdha,EAPN,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAAq8B,EAAAC,GAAAD,EAAA,CAAAr8B,OAAAw8B,GAAA,EAAAx8B,CAAkCH,QAiC3B,IAAM48B,GAAb,SAAAC,GACI,SAAAD,EAAYv4B,GAAkB,OAAAlE,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA6xB,GAAAz8B,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAy8B,GAAA1xB,KAAAH,KACpB1G,IAFd,OAAAlE,OAAAu8B,GAAA,EAAAv8B,CAAAy8B,EAAAC,GAAAD,EAAA,CAAmCJ,IAMtBM,GAAb,SAAAC,GACI,SAAAD,EAAYz4B,GAAmB,OAAAlE,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA+xB,GAAA38B,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA28B,GAAA5xB,KAAAH,KACrB1G,GAAW0oB,GAAQiQ,aAFjC,OAAA78B,OAAAu8B,GAAA,EAAAv8B,CAAA28B,EAAAC,GAAAD,EAAA,CAAqCN,IAMxBS,GAAb,SAAAC,GACI,SAAAD,EAAY54B,GAAmB,OAAAlE,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAkyB,GAAA98B,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA88B,GAAA/xB,KAAAH,KACrB1G,GAAW0oB,GAAQoQ,gBAFjC,OAAAh9B,OAAAu8B,GAAA,EAAAv8B,CAAA88B,EAAAC,GAAAD,EAAA,CAAwCT,IAM3BY,GAAb,SAAAC,GACI,SAAAD,EAAY/4B,GAAmB,OAAAlE,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAqyB,GAAAj9B,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAi9B,GAAAlyB,KAAAH,KACrB1G,GAAW0oB,GAAQuQ,qBAFjC,OAAAn9B,OAAAu8B,GAAA,EAAAv8B,CAAAi9B,EAAAC,GAAAD,EAAA,CAA6CZ,IAMhCe,GAAb,SAAAC,GACI,SAAAD,EAAYl5B,GAAmB,OAAAlE,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAwyB,GAAAp9B,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAo9B,GAAAryB,KAAAH,KACrB1G,GAAW0oB,GAAQ0Q,oBAFjC,OAAAt9B,OAAAu8B,GAAA,EAAAv8B,CAAAo9B,EAAAC,GAAAD,EAAA,CAA4Cf,IAM/BkB,GAAb,SAAAC,GACI,SAAAD,EAAYr5B,GAAmB,OAAAlE,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA2yB,GAAAv9B,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAu9B,GAAAxyB,KAAAH,KACrB1G,GAAW0oB,GAAQ6Q,iBAFjC,OAAAz9B,OAAAu8B,GAAA,EAAAv8B,CAAAu9B,EAAAC,GAAAD,EAAA,CAAyClB,ICDnCqB,GAAkBr6B,6B5C8BW,sBACA,sBACA,sB4ChCXA,GAMlBs6B,GAAoBt6B,6B5CgFS,sBACA,sBACA,sB4ClFTA,GAUpBu6B,GAAsB,SAACh6B,GACzB,MAAO,CACHi6B,SAAUj6B,EAAQi6B,UAAY,KAC9BC,OAAQl6B,EAAQk6B,QAAU,KAC1BpkB,MAAO9V,EAAQ8V,OAAS,KACxBqkB,YAAan6B,EAAQm6B,aAAe,KACpCvkB,UAAW5V,EAAQ4V,WAAa,KAChCC,SAAU7V,EAAQ6V,UAAY,KAC9BukB,YAAap6B,EAAQo6B,aAAe,KACpCrkB,MAAO/V,EAAQ+V,OAAS,KACxBskB,kBAAmBr6B,EAAQq6B,mBAAqB,KAChDlZ,QAASnhB,EAAQmhB,SAAW,KAC5BmZ,UAAWt6B,EAAQs6B,WAAa,OCjElCC,GAAuB96B,6B7CuEY,4BACA,4BACA,4B6CzEZA,GAYvB+6B,GAAwB,SAC1B56B,EAD0BsF,GAK1B,OAAOnF,EAFNmF,EADCnF,YAGiC,CAC/BQ,KAAM,mBACNC,OAAQ,OACRC,KAZ8B,SAACT,GACnC,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAOIy6B,CAA8B76B,EAAOI,SAKjDo0B,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACHk5B,GAAqB94B,QAAQ,CACzBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAGD,mBAAlB1zB,EAAS1E,KACTmF,aACHk5B,GAAqBj5B,QAAQ,CACzBo5B,SAAU,GACVx+B,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,WAIvBe,aAAGk5B,GAAqBj5B,QAAQV,MAE3CW,aAAW,SAAAC,GACP,OAAOH,aACHk5B,GAAqB94B,QAAQ,CACzBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBCtD7BqG,GAAmCl7B,6B9C8JG,8BACA,8BACA,8BACO,qC8CjKVA,GAOnCm7B,GAAoBr7B,gC9C0JyB,qC8C1JzBA,GAYpBs7B,GAA0B,SAACj7B,EAADsF,GAE5B,OAAOnF,EAFuEmF,EAA3BnF,YAEhB,CAC/BQ,KAAM,qBACNC,OAAQ,OACRC,KAT0B,SAACT,GAC/B,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAII86B,CAA0Bl7B,EAAOI,SAK7Cw1B,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACHs5B,GAAiCl5B,QAAQ,CACrCvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAGs5B,GAAiCr5B,QAAQV,MAEvDW,aAAW,SAAAC,GACP,OAAOH,aACHs5B,GAAiCl5B,QAAQ,CACrCvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBClC7ByG,GAAmBt7B,6B/CqEW,uBACA,uBACA,uB+CvEXA,GAMnBu7B,GAAqBz7B,gC/CsES,uB+CtETA,GAUrB07B,GAAiB,SAACr7B,EAADsF,GAEnB,OAAOnF,EAF8DmF,EAA3BnF,YAEb,CACzBQ,KAAM,eACNC,OAAQ,OACRC,KAT0B,SAACT,GAC/B,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAIIk7B,CAA0Bt7B,EAAOI,SAK7Co0B,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACH05B,GAAiBt5B,QAAQ,CACrBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAG05B,GAAiBz5B,QAAQV,MAEvCW,aAAW,SAAAC,GACP,OAAOH,aACH05B,GAAiBt5B,QAAQ,CACrBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBCzD7B6G,GAAgB17B,6BhDuFW,oBACA,oBACA,oBARQ,4BgDjFnBA,GAOhB27B,GAAyB77B,gChD0EU,4BgD1EVA,GCLzB87B,GAAkB57B,6BjD0FW,sBACA,sBACA,sBiD5FXA,GAMlB67B,GAA0B/7B,gCjDuFU,6BiDvFVA,GAc1Bg8B,GAAgB,SAAC37B,EAADsF,GAElB,OAAOnF,EAF6DmF,EAA3BnF,YAEZ,CACzBQ,KAAM,cACNC,OAAQ,OACRC,KAXyB,SAC7BT,GAEA,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAIIw7B,CAAyB57B,EAAOI,SAK5Co0B,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACHg6B,GAAgB55B,QAAQ,CACpBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAGg6B,GAAgB/5B,QAAQV,MAEtCW,aAAW,SAAAC,GACP,OAAOH,aACHg6B,GAAgB55B,QAAQ,CACpBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBCtD7BmH,GAAsBh8B,6BlDoKW,0BADA,0BADA,0BkDlKXA,GActBi8B,GAAoB,SAAC97B,EAADsF,GAEtB,OAAOnF,EAFiEmF,EAA3BnF,YAEhB,CACzBQ,KAAM,iBACNC,OAAQ,OACRC,KAX4B,SAChCT,GAEA,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAII27B,CAA4B/7B,EAAOI,SAK/Co0B,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,qBAAlB0E,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACHo6B,GAAoBh6B,QAAQ,CACxBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,WAIvBe,aAAGo6B,GAAoBn6B,QAAQV,MAE1CW,aAAW,SAAAC,GACP,OAAOH,aACHo6B,GAAoBh6B,QAAQ,CACxBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBCrC7BsH,GAAkBn8B,6BnDiGW,sBACA,sBACA,sBmDnGXA,GAMlBo8B,GAA0Bt8B,gCnDgFF,iBmDhFEA,GAY1Bu8B,GAAgB,SAACl8B,EAADsF,GAElB,OAAOnF,EAF6DmF,EAA3BnF,YAEZ,CACzBQ,KAAM,cACNC,OAAQ,OACRC,KAXyB,SAC7BT,GAEA,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAII+7B,CAAyBn8B,EAAOI,SAK5Co0B,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACHu6B,GAAgBn6B,QAAQ,CACpBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAGu6B,GAAgBt6B,QAAQV,MAEtCW,aAAW,SAAAC,GACP,OAAOH,aACHu6B,GAAgBn6B,QAAQ,CACpBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBCtB7B0H,GAA2Bv8B,6BpDqFY,gCACA,gCACA,gCoDvFZA,GAM3Bw8B,GAAwBx8B,6BpDqFW,4BACA,4BACA,4BoDvFXA,GAMxBy8B,GAAgB38B,gCpD6ElB,uCoD7EkBA,GAIhB48B,GAAwB58B,gCpD+E1B,mCoD/E0BA,GAwFxB68B,GAAsB,SAACx8B,EAADE,GAExB,OAAOC,EAFmED,EAA3BC,YAExB,CACnBQ,KAAM,oBACNC,OAAQ,OACRC,KAV+B,SACnCT,GAEA,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAGIq8B,CAA+Bz8B,EAAOI,WAKnDU,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,QAAlB0E,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACH46B,GAAsBx6B,QAAQ,CAC1BvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,aAAe1zB,EAASN,WAI/Ce,aAAG46B,GAAsB36B,QAAQV,MAE5CW,aAAW,SAAAC,GACP,OAAOH,aACH46B,GAAsBx6B,QAAQ,CAC1BvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,aAAe9yB,EAAMlB,eCnJlDg8B,GAAwB78B,6BrDsHY,6BACA,6BACA,6BAEtC,oCqD1H0BA,GAOxB88B,GAAgCh9B,gCrDmHlC,oCqDnHkCA,GAYhCi9B,GAAoB,SAAC58B,EAADsF,GAEtB,OAAOnF,EAFiEmF,EAA3BnF,YAEV,CAC/BQ,KAAM,mBACNC,OAAQ,OACRC,KAT0B,SAACT,GAC/B,OAAO5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK4D,GAII86B,CAA0Bl7B,EAAOI,SAK7Co0B,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACHi7B,GAAsB76B,QAAQ,CAC1BvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAGi7B,GAAsBh7B,QAAQV,MAE5CW,aAAW,SAAAC,GACP,OAAOH,aACHi7B,GAAsB76B,QAAQ,CAC1BvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,mBCzC7BmI,GAAuBh9B,6BtD+HK,qBAEA,qBADA,qBsDhILA,GAMvBi9B,GAAaC,wBtD4HmB,0BuD9GvBC,gBhD6H2D,SACtEC,EACAC,EACAC,GAHsE,OAKtEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW/a,GAAgBgb,UAClCC,aACI,SAACt9B,GAAD,OA7ES,SAACA,EAADE,GAAkD,IAP3CoF,EAOgBnF,EAA2BD,EAA3BC,WAClCC,EAPC,CACHm9B,MAFoBj4B,EAQYtF,EAAOI,SARhBm9B,KAGvB16B,SAHsDyC,EAAzBzC,UASjC,OAAO1C,EAAqB,CACxBQ,KAAM,SACNC,OAAQ,OACRC,KAAMT,IACPU,KACCC,aAAS,SAACC,GACN,GAAIA,GAAYA,EAASw8B,MAAO,CAC5B,IAAMC,EAAer9B,EAAQm9B,KAAgB1rB,QACzC,SACA,IAEJ,GACI7Q,EAASkV,OACTlV,EAASkV,QAAUunB,GACnBz8B,EAASu8B,OAASE,EAElB,OAAOh8B,aAAG,CACNG,MAAO,+CAGf,IAAKZ,EAASkV,OAASlV,EAASu8B,OAASE,EACrC,OAAOh8B,aAAG,CACNG,MAAO,+CAGf,IAAM27B,EAAO,CACTtb,OAAQjhB,EAASu8B,KACjBC,MAAOx8B,EAASw8B,MAChBE,YAAa18B,EAAS08B,YACtBC,OAAQ38B,EAAS28B,OACjBC,oBAAqB58B,EAAS48B,qBAElC,GAAIL,EAAKC,OAASD,EAAKG,YAAa,CAChCtZ,aAAaQ,QAAQ,QAAS2Y,EAAKC,OAEnCpZ,aAAaQ,QAAQ,cAAe2Y,EAAKG,aACzC,IAAMj1B,EAAKkH,QACP,IAAIhL,MAAOqQ,UACP,IAAO1F,GAAO3M,uBAEtByhB,aAAaQ,QAAQ,UAAWnc,GAEpC,OAAOhH,aAAG87B,GAEd,IAAMA,EAAO,CACTtb,OAAQjhB,EAASu8B,KACjBM,UAAW78B,EAAS68B,WAEpBN,EAAKM,WACLzZ,aAAaQ,QAAQ,cAAejV,OAAO4tB,EAAKM,YAEhDN,EAAKtb,QACLmC,aAAaQ,QACT,uBACAjV,OAAO4tB,EAAKtb,SAIpB,IAAMvhB,EAAUM,EAASN,SAAW,0BACpC,OAAOe,aAAG,CAAEG,MAAOlB,MAEvBiB,aAAW,SAAAC,GACP,OAAOH,aAAG,CAAEG,MAAOA,EAAMlB,aAaDo9B,CAAa99B,EAAQm9B,IAC7C,SAACn9B,EAAoB0xB,GAArB,MAAqC,CAAC1xB,EAAQ0xB,KAElD4L,aAAU,SAAAvgB,GAA6B,IAAA9c,EAAAzD,OAAAuhC,GAAA,EAAAvhC,CAAAugB,EAAA,GAA3B/c,EAA2BC,EAAA,GAAnB+9B,EAAmB/9B,EAAA,GACnC,GAAI+9B,EAAcp8B,MACd,OAAOq8B,aACHx8B,aAAGu8B,GACHv8B,aACIkgB,GAAkB9f,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,iDAKzB,IAAMw9B,EAAc1hC,OAAAkuB,GAAA,EAAAluB,CAAA,GACbwD,EADa,CAEhBI,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACDwD,EAAOI,QADP,CAEHC,YAAa29B,EAAc/b,WAGnC,OAAOgc,aACHx8B,aAAGu8B,GACHhc,GAAckc,EAAgBf,MAGtCG,aAAU,SAAAjd,GAAsC,IAAAiB,EAAA9kB,OAAAuhC,GAAA,EAAAvhC,CAAA6jB,EAAA,GAApC2d,EAAoC1c,EAAA,GAArB6c,EAAqB7c,EAAA,GAC5C,GACI0c,QACyBt2B,IAAzBs2B,EAAcL,aACwBj2B,IAAtCs2B,EAAcJ,oBASd,OAPII,EAAcR,OAASQ,EAAc/b,QACrCmC,aAAaQ,QAAQ,SAAUoZ,EAAc/b,QAG7C+b,EAAcR,OAASQ,EAAcL,QACrCvZ,aAAaQ,QAAQ,YAAaoZ,EAAcL,QAE7Cl8B,aAAG4gB,GAAgB3gB,QAAQs8B,IAEtC,GACIA,GACAA,EAAcR,OACdW,EAAgBroB,OAASsoB,mBAAQzc,GAAkBjgB,SAcnD,OAZIs8B,EAAcR,OAASQ,EAAc/b,QACrCmC,aAAaQ,QAAQ,SAAUoZ,EAAc/b,QAGjD7S,GAAI,CACAwU,cAAe,kBACfF,IAAK,sBACLQ,0BAA2B8Z,EAAc/b,OACzC4B,cAAe,SACfG,WAAY,MACZF,aAAc,YAEXriB,aACH4gB,GAAgB3gB,QAAQs8B,GACxBrc,GAAkBjgB,QAAQy8B,EAAgB/9B,UAGlD,IAAMM,EAAUs9B,EAAcp8B,OAAS,0BACjCy8B,EAAcL,EAAcp8B,MAC5B,CAAEtF,KAAM,QAASoE,QAASs9B,EAAcp8B,OACxC,CAAEtF,KAAM,QAASoE,QAAS,2BAUhC,OARA0O,GAAI,CACAwU,cAAe,kBACfF,IAAK,sBACLG,cAAe,SACfG,WAAYqa,EAAY/hC,KACxBynB,WAAYsa,EAAY39B,QACxBojB,aAAc,YAEXriB,aACH4gB,GAAgBxgB,QAAQ,CACpBD,MAAOlB,OAInBiB,aAAW,SAAAC,GASP,OARAwN,GAAI,CACAwU,cAAe,kBACfF,IAAK,sBACLG,cAAe,SACfG,WAAY,MACZD,WAAY,UACZD,aAAc,YAEXriB,aACH4gB,GAAgBxgB,QAAQ,CACpBD,MAAOA,EAAMlB,eAyC4C,SACzEu8B,EACAC,EACAC,GAHyE,OAKzEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW5X,GAAmB6X,UACrCt8B,aAAS,SAAAf,GAAM,OAnCM,SAACA,EAAD02B,GAEzB,OAAOv2B,EAFoEu2B,EAA3Bv2B,YAEpB,CACxBQ,KAAM,iBACNC,OAAQ,OACRC,KAXG,CACHR,YAMwCL,EAAOI,QARhB8V,MAG/BqM,KAAM,WAUPzhB,KACCC,aAAS,SAACC,GACN,OACIA,EAAS1E,MACU,sBAAlB0E,EAAS1E,MACY,qBAAlB0E,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAQVmF,aAAG+jB,GAAmB9jB,QAAQV,EAASN,SAAW,KAN9Ce,aACH+jB,GAAmB3jB,QACfb,EAASN,SAAW,8BAMpCiB,aAAW,SAAAC,GACP,OAAOH,aAAG+jB,GAAmB3jB,QAAQD,EAAMlB,aAY5B49B,CAAqBt+B,EAAQm9B,OgCzBpD,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWlJ,GAA4BmJ,UAC9Ct8B,aAAS,SAAAf,GAAM,OAAI20B,GAA0B30B,EAAQm9B,OlCYe,SACxEF,EACAC,EACAC,GAHwE,OAKxEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWzb,GAAkB0b,UACpCt8B,aAAS,SAAAf,GAAM,OAAIgiB,GAAchiB,EAAQm9B,OG7P4B,SACzEF,EACAC,EACAC,GAHyE,OAKzEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWrX,GAAmBsX,UACrCt8B,aAAS,SAAAf,GAAM,OA/BA,SAACA,EAADE,GAAkD,IAJvCoF,EAM9B,OAAOnF,EAF8DD,EAA3BC,YAEd,CACxBQ,KAAM,eACNC,OAAQ,OACRC,KARG,CAAER,aADqBiF,EAKYtF,EAAOI,SALhBC,YACXC,YADoDgF,EAA5BhF,eAU3CQ,KACCC,aAAS,SAACC,GACN,OAAIA,EACOS,aACHskB,GAAmBrkB,QAAnBlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACOwE,EADP,CAEIV,YAAaN,EAAOI,QAAQE,gBAIjCY,aAAW,CAAE5E,KAAM,MAAOoE,QAASM,MAE9CW,aAAW,SAAAC,GACP,OAAOH,aAAGskB,GAAmBlkB,QAAQD,OAYtB28B,CAAev+B,EAAQm9B,OTmCwB,SACtEF,EACAC,EACAC,GAHsE,OAKtEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWt9B,GAAgBu9B,UAClCt8B,aAAS,SAAAf,GAAM,OA/BF,SAACA,EAAD+c,GAAkD,IA/BhDzX,EAiCnB,OAAOnF,EAF4D4c,EAA3B5c,YAEe,CACnDQ,KAAM,YACNC,OAAQ,OACRC,KA7BG,CACHP,aARegF,EAgCYtF,EAAOI,SA/BtCE,YAQID,YAHFiF,EAJFjF,eAmCGS,KACCC,aAAS,SAACC,GACN,OAAIA,EAEIA,EAASC,aACFC,aAAW,CACd5E,KAAM,MACNoE,QAASM,EAASC,eAGnBQ,aAAG3B,GAAgB4B,QAAQV,IAE/BE,aAAW,CAAE5E,KAAM,MAAOoE,QAASM,MAE9CW,aAAW,SAAAC,GAAK,OAAIH,aAAG3B,GAAgB+B,QAAQD,OAW5B48B,CAAax+B,EAAQm9B,OAqC2B,SACvEF,EACAC,EACAC,GAHuE,OAKvEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWx9B,GAAiBy9B,UACnCt8B,aAAS,SAAAf,GAAM,OAAID,GAAeC,EAAQm9B,OMmK4B,SAC1EF,EACAC,EACAC,GAH0E,OAK1EF,EAAQn8B,KACJ6W,aAAOylB,sBAAWtb,GAAoBub,UACtCC,aACI,SAACt9B,GAAD,OAvFc,SAACA,EAADC,GAAkD,IAhBvC8c,EAgBY5c,EAA2BF,EAA3BE,WACvCC,EAVC,CACHC,aAR6B0c,EAiBY/c,EAAOI,QAAQsV,UAhB5DrV,YAQI6V,MAHsB6G,EAJ1B7G,MAQIC,MAJsB4G,EAH1B5G,MAQIsoB,UALsB1hB,EAF1B0hB,UAQIC,WANsB3hB,EAD1B2hB,YAaA,OAAOv+B,EAAoC,CACvCQ,KAAM,kBACNC,OAAQ,OACRC,KAAMT,IACPU,KACCC,aAAS,SAACC,GACN,IAAMG,EAAiB,CACnB7E,KAAM0E,EAAWA,EAAS1E,KAAO,MACjCoE,QAASM,EAAWA,EAASN,QAAU,UACvCwV,MAAO9V,EAAQ8V,MACfC,MAAO/V,EAAQ+V,MACfsoB,UAAWr+B,EAAQq+B,UACnBC,WAAYt+B,EAAQs+B,YAExB,OAAOj9B,aAAGN,KAEdQ,aAAW,SAAAC,GAAK,OAAIH,aAAGG,MAqEK+8B,CAAkB3+B,EAAQm9B,IAClD,SAACn9B,EAAoB0xB,GAArB,MAA4D,CACxD1xB,EACA0xB,KAGR4L,aAAU,SAAA1I,GAAgC,IAAA8B,EAAAl6B,OAAAuhC,GAAA,EAAAvhC,CAAAo4B,EAAA,GAA9B50B,EAA8B02B,EAAA,GAAtBkI,EAAsBlI,EAAA,GACtC,OAAI12B,EAAOI,QAAQiW,UAAsC,QAA1BuoB,EAAiBtiC,KACrC2hC,aACHx8B,aAAGzB,GACHyB,aAAGm9B,GACHtc,GAAkBtiB,EAAQm9B,IAI3Bc,aAASx8B,aAAGzB,GAASyB,aAAGm9B,MAEnCtB,aAAU,SAAAxG,GAAkD,IAAAD,EAAAr6B,OAAAuhC,GAAA,EAAAvhC,CAAAs6B,EAAA,GAAhD92B,EAAgD62B,EAAA,GAAxC+H,EAAwC/H,EAAA,GAAtBgI,EAAsBhI,EAAA,GACxD,GAA8B,QAA1B+H,EAAiBtiC,KACjB,OAAO4E,aAAW09B,GAGtB,IAAMV,EAAiB,CACnBpoB,KAAMsoB,mBAAQx+B,GAAiBy9B,SAC/Bj9B,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACDwD,EAAOI,QAAQ0+B,QAG1B,OAAID,EACOZ,aACHx8B,aAAGm9B,GACHn9B,aAAGo9B,GACH9+B,GAAem+B,EAAgBf,IAGhCc,aACHx8B,aAAGm9B,GACH7+B,GAAem+B,EAAgBf,MAIvCG,aAAU,SAAAyB,GAAyD,IAAAC,EAAAxiC,OAAAuhC,GAAA,EAAAvhC,CAAAuiC,EAAA,GAAvDH,EAAuDI,EAAA,GAArCH,EAAqCG,EAAA,GAC/D,OAD+DA,EAAA,GAC3DH,EACOp9B,aACHqgB,GAAoBpgB,QAApBlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACOoiC,EACAC,KAKRp9B,aAAGqgB,GAAoBpgB,QAAQk9B,MAE1Cj9B,aAAW,SAAAC,GACP,OAAOH,aACHqgB,GAAoBjgB,QAAQ,CACxBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAMlB,eAsF0C,SACzEu8B,EACAC,EACAC,GAHyE,OAKzEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWrb,GAAmBsb,UACrCC,aACI,SAACt9B,GAAD,OAAwByiB,GAAiBziB,EAAQm9B,IACjD,SAACn9B,EAAoB0xB,GAArB,MAAmD,CAAC1xB,EAAQ0xB,KAEhE4L,aAAU,SAAAnG,GAA+B,IAAAM,EAAAj7B,OAAAuhC,GAAA,EAAAvhC,CAAA26B,EAAA,GAA7Bn3B,EAA6By3B,EAAA,GAArBwH,EAAqBxH,EAAA,GACrC,GAA6B,QAAzBwH,EAAgB3iC,KAChB,OAAO2hC,aAAS,CAACx8B,aAAGw9B,GAAkBx9B,kBAAGiG,KAE7C,IAAMw2B,EAAiB,CACnBpoB,KAAMsoB,mBAAQx+B,GAAiBy9B,SAC/Bj9B,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACDwD,EAAOI,QAAQ0+B,QAG1B,OAAOb,aAAS,CACZx8B,aAAGw9B,GACHl/B,GAAem+B,EAAgBf,OAGvCG,aAAU,SAAA9F,GAAsC,IAAA0H,EAAA1iC,OAAAuhC,GAAA,EAAAvhC,CAAAg7B,EAAA,GAApCyH,EAAoCC,EAAA,GAC5C,OAD4CA,EAAA,GACf,QAAzBD,EAAgB3iC,KACTmF,aACHsgB,GAAmBlgB,QAAQ,CACvBvF,KAAM2iC,EAAgB3iC,KACtBoE,QAASu+B,EAAgBv+B,WAI9Be,aAAGsgB,GAAmBrgB,QAAQu9B,MAEzCt9B,aAAW,SAAAC,GACP,OAAOH,aACHsgB,GAAmBlgB,QAAQ,CACvBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAMlB,eIlWuC,SACtEu8B,EACAC,EACAC,GAHsE,OAKtEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWjX,GAAsBkX,UACxCC,aACI,SAACt9B,GAAD,OAtCc,SACtBA,EADsBC,GAGyB,IAvDjBC,EAyD9B,OAAOC,EAFwCF,EAD7CE,YAGsC,CACpCQ,KAAM,yBACNC,OAAQ,OACRC,KAvDG,CACHP,aAN0BJ,EAwDYF,EAAOI,SAvDjDE,YAMIimB,gBAHQrmB,EAFZqmB,gBAMI4Y,YAJQj/B,EADZi/B,eA0DGr+B,KACCC,aAAS,SAACC,GACN,GAAIA,IAAaA,EAAS1E,KACtB,OAAOmF,aAAGjF,OAAAkuB,GAAA,EAAAluB,CAAA,GACHwE,EADE,CAEL1E,KAAM,SAGd,IAAMoE,EAAUM,EAASN,SAAW,0BACpC,OAAOe,aAAG,CAAEnF,KAAM,MAAOoE,cAE7BiB,aAAW,SAAAC,GACP,OAAOH,aAAG,CACNG,MAAOA,EAAMlB,QACbpE,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAMlB,aAcK0+B,CAAkBp/B,EAAQm9B,IAClD,SAACn9B,EAAoB0xB,GAArB,MAA6D,CACzD1xB,EACA0xB,KAGR4L,aAAU,SAAAjd,GAAwB,IAAAiB,EAAA9kB,OAAAuhC,GAAA,EAAAvhC,CAAA6jB,EAAA,GAAtBrgB,EAAsBshB,EAAA,GAAdtgB,EAAcsgB,EAAA,GAI9B,MAHsB,QAAlBtgB,EAAS1E,MACT4E,aAAW,CAAE5E,KAAM0E,EAAS1E,KAAMoE,QAASM,EAASN,UAEjDu9B,aACHx8B,aAAGT,GACHslB,GAAmBtmB,EAAQm9B,MAGnCG,aAAU,SAAA1I,GAAiD,IACnDyK,EACAC,EAFmD5I,EAAAl6B,OAAAuhC,GAAA,EAAAvhC,CAAAo4B,EAAA,GAA/C2K,EAA+C7I,EAAA,GAA1B8I,EAA0B9I,EAAA,GAuBvD,OAlBI2I,EAD6B,QAA7BE,EAAoBjjC,KACN6pB,GAAsBtkB,QAChC09B,GAGUpZ,GAAsBzkB,QAChC69B,GAIJD,EADAE,EAAqBljC,MAAQkjC,EAAqB9+B,QACnC0lB,GAAuBvkB,QAAQ,CAC1CvF,KAAMkjC,EAAqBljC,KAC3BoE,QAAS8+B,EAAqB9+B,UAGnB0lB,GAAuB1kB,QAClC89B,EAAqB/Y,OAGtBhlB,aAAG49B,EAAaC,KAE3B39B,aAAW,SAAAC,GAAK,OAAIH,aAAG0kB,GAAsBtkB,QAAQD,QAQzD,SAACq7B,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWhX,GAAuBiX,UACzCC,aACI,SAACt9B,GAAD,OAAwBsmB,GAAmBtmB,EAAQm9B,IACnD,SAACn9B,EAAQ0xB,GAAT,MAAe,CAAC1xB,EAAQ0xB,KAE5B4L,aAAU,SAAAxG,GAAwB,IAAAD,EAAAr6B,OAAAuhC,GAAA,EAAAvhC,CAAAs6B,EAAA,GAAd91B,GAAc61B,EAAA,GAAAA,EAAA,IAC9B,GAAI71B,GAA8B,QAAlBA,EAAS1E,KACrB,OAAOmF,aAAG2kB,GAAuB1kB,QAAQV,EAASylB,QAEtD,IAAM/lB,EAAUM,EAASN,SAAW,0BACpC,OAAOe,aACH2kB,GAAuBvkB,QAAQ,CAC3BvF,KAAM0E,EAAS1E,MAAQ,MACvBoE,eAIZiB,aAAW,SAAAC,GAAK,OAAIH,aAAG2kB,GAAuBvkB,QAAQD,QA4Ca,SACvEq7B,EACAC,EACAC,GAHuE,OAKvEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW/W,GAAiBgX,UACnCt8B,aAAS,SAAAf,GAAM,OAhCF,SAACA,EAADg/B,GAEjB,OAAO7+B,EAF4D6+B,EAA3B7+B,YAEjB,CACnBQ,KAAM,eACNC,OAAQ,OACRC,KArBoB,SAAAk+B,GAMZ,IALZz+B,EAKYy+B,EALZz+B,YACAimB,EAIYwY,EAJZxY,gBACA4Y,EAGYJ,EAHZI,YACAM,EAEYV,EAFZU,WAGA,MAAO,CACHjZ,WAFQuY,EADZvY,WAIIlmB,cACAimB,kBACA4Y,cACAM,cAKYC,CAAoB1/B,EAAOI,WAKxCU,KACCC,aAAS,SAACC,GACN,YAAsB0G,IAAlB1G,EAAS1E,MAAwC,QAAlB0E,EAAS1E,KACjCmF,aACH4kB,GAAiBxkB,QAAQ,CACrBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,WAKvBe,aAAG4kB,GAAiB3kB,QAAQ,cAEvCC,aAAW,SAAAC,GACP,OAAOH,aAAG4kB,GAAiBxkB,QAAQD,OAYpB+9B,CAAa3/B,EAAQm9B,OiCrJ5C,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAW/E,GAAsBgF,UACxCt8B,aAAS,SAAAf,GAAM,OAvCK,SAACA,EAADE,GACxB,OAAOC,EADmED,EAA3BC,YACxB,CACnBQ,KAAM,oBACNC,OAAQ,OACRC,KAAMb,EAAOI,UACdU,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACH42B,GAAsBx2B,QAAQ,CAC1BvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAG42B,GAAsB32B,QAAQV,MAE5CW,aAAW,SAAAC,GACP,OAAOH,aACH42B,GAAsBx2B,QAAQ,CAC1BvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,kBAeRkL,CAAoB5/B,EAAQm9B,OrCwZuB,SAC1EF,EACAC,EACAC,GAH0E,OAK1EF,EAAQn8B,KACJ6W,aAAOylB,sBAAWxb,GAAoByb,UACtCt8B,aAAS,SAAAf,GAAM,OArBG,SAACA,EAAD6/B,GAAkD,IAdvCC,EAgBjC,OAAO3/B,EAFiE0/B,EAA3B1/B,YAEhB,CACzBQ,KAAM,kBACNC,OAAQ,OACRC,KAbG,CACH08B,MAP6BuC,EAeY9/B,EAAOI,SAdpDm9B,KAOIwC,YAHSD,EAHbC,YAOIC,YAJSF,EAFbE,YAOIxC,MALSsC,EADbtC,SAgBG18B,KACCC,aAAS,SAACC,GACN,OAAOS,aAAGmgB,GAAoBlgB,QAAQ,OAE1CC,aAAW,SAAAC,GAAK,OAAIH,aAAGmgB,GAAoB/f,QAAQD,OAWhCq+B,CAAkBjgC,EAAQm9B,OA+BwB,SACzEF,EACAC,EACAC,GAHyE,OAKzEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWvb,GAAmBwb,UACrCt8B,aAAS,SAAAf,GAAM,OArBE,SAACA,EAADkgC,GAAkD,IAdvCC,EAgBhC,OAAOhgC,EAFgE+/B,EAA3B//B,YAEf,CACzBQ,KAAM,cACNC,OAAQ,OACRC,KAbG,CACHu/B,WAP4BD,EAeYngC,EAAOI,SAdnDggC,UAOIC,iBAHQF,EAHZE,iBAOIC,gBAJQH,EAFZG,gBAOIC,YALQJ,EADZI,eAgBGz/B,KACCC,aAAS,SAACC,GACN,OAAOS,aAAGogB,GAAmBngB,QAAQ,OAEzCC,aAAW,SAAAC,GAAK,OAAIH,aAAGogB,GAAmBhgB,QAAQD,OAW/B4+B,CAAiBxgC,EAAQm9B,OKhiBqB,SACrEF,EACAC,EACAC,GAHqE,OAKrEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW1W,GAAoB2W,UACtCt8B,aAAS,SAAAf,GAAM,OAxBH,SAACA,EAADE,GAEhB,OAAOC,EAF2DD,EAA3BC,YAEd,CACrBQ,KAAM,oBACNC,OAAQ,OACRC,KAjBuB,SAAAyE,GAIF,IAHzBhF,EAGyBgF,EAHzBhF,YACAD,EAEyBiF,EAFzBjF,YAEyBogC,EAAAn7B,EADzBid,KAEA,MAAO,CACHjiB,cACAD,cACAkiB,UAJqB,IAAAke,EADlB,WACkBA,GASTC,CAAuB1gC,EAAOI,WAK3CU,KACCC,aAAS,SAACC,GACN,OAAIA,EACOS,aAAGilB,GAAoBhlB,QAAQV,IAEnCE,aAAW,CAAE5E,KAAM,MAAOoE,QAASM,MAE9CW,aAAW,SAAAC,GAAK,OAAIH,aAAGilB,GAAoB7kB,QAAQD,OAWhC++B,CAAY3gC,EAAQm9B,O6BuP4B,SACvEF,EACAC,EACAC,GAHuE,OAKvEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWtJ,GAAiBuJ,UACnCt8B,aAAS,SAAAf,GAAM,OA3GH,SAACA,EAADC,GAEhB,OAAOE,EAF2DF,EAA3BE,YAEL,CAC9BQ,KAAM,mBACNC,OAAQ,OACRC,KAjBqB,SAAAkc,GAA+C,IAA5Czc,EAA4Cyc,EAA5Czc,YAAasgC,EAA+B7jB,EAA/B6jB,UACzC,OAAIA,EACO,CACHA,YACAC,WAAYvgC,GAGb,CACHugC,WAAYvgC,GAKAwgC,CAAqB9gC,EAAOI,SAKxCo0B,OAAO,IACR1zB,KACCC,aAAS,SAACC,GACN,GAAIA,QAA+B0G,IAAnB1G,EAASY,MACrB,OAAOH,aAAGqyB,GAAiBpyB,QAAQV,IAEvC,IAAIN,EAAU,UAId,OAHIM,EAASY,QACTlB,EAAUM,EAASY,MAAM8yB,aAAe,WAErCjzB,aAAGqyB,GAAiBjyB,QAAQ,CAAEvF,KAAM,MAAOoE,eAEtDiB,aAAW,SAAAC,GAAK,OAAIH,aAAGqyB,GAAiBjyB,QAAQD,OAyF7Bm/B,CAAY/gC,EAAQm9B,OAG+B,SAC1EF,EACAC,EACAC,GAH0E,OAK1EF,EAAQn8B,KACJ6W,aAAOylB,sBAAWrJ,GAAqBsJ,UACvCt8B,aAAS,SAAAf,GAAM,OAAIm0B,GAAgBn0B,EAAQm9B,OahI/C,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWf,GAAsBgB,UACxCt8B,aAAS,SAAAf,GAAM,OAAIw8B,GAAoBx8B,EAAQm9B,ObiLsB,SACzEF,EACAC,EACAC,GAHyE,OAKzEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWpJ,GAAmBqJ,UACrCt8B,aAAS,SAAAf,GAAM,OA3CH,SAACA,EAAD82B,GAEhB,OAAO32B,EAF2D22B,EAA3B32B,YAEhB,CACnBQ,KAAM,oBACNC,OAAQ,OACRC,KAlB4B,SAAA61B,GAGF,IAF9BphB,EAE8BohB,EAF9BphB,MAGA,MAAO,CACH0rB,QAAS1rB,EACT2rB,QAH0BvK,EAD9BuK,QAKI1e,KAAM,iBACNliB,YAAaiV,EAAM4rB,YACnB5gC,YAAagV,EAAMnD,UAKPgvB,CAA4BnhC,EAAOI,WAKhDU,KACCw8B,aAAU,SAACt8B,GACP,GAAIA,GAAYA,EAASogC,gBAAiB,CACtC,GAA+C,OAA3CpgC,EAASogC,gBAAgBziB,OAAOnJ,OAChC,OAAO/T,aACHuyB,GAAmBtyB,QAAQ,CACvB8T,OAAQ,QAIpB,IAAM9U,EAAUM,EAASY,MACnBZ,EAAS0zB,YACT,SACN,OAAOjzB,aAAGuyB,GAAmBnyB,QAAQ,CAAEvF,KAAM,MAAOoE,aAExD,OAAOe,aACHuyB,GAAmBnyB,QAAQ,CAAEvF,KAAM,MAAOoE,QAAS,cAG3DiB,aAAW,SAAAC,GACP,OAAOH,aACHuyB,GAAmBnyB,QAAQ,CACvBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAMlB,cAcR2gC,CAAYrhC,EAAQm9B,OAtM6B,SACxEF,EACAC,EACAC,GAHwE,OAKxEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWnJ,GAAkBoJ,UACpCt8B,aAAS,SAAAf,GAAM,OAtBD,SAACA,EAADE,GAAkD,IAd1CoF,EAgB1B,OAAOnF,EAF6DD,EAA3BC,YAEL,CAChCQ,KAAM,cACNC,OAAQ,OACRC,KAZG,CACHP,aARsBgF,EAeYtF,EAAOI,SAd7CE,YAQID,YAHeiF,EAJnBjF,YAQIkiB,KAAM,sBAUPzhB,KACCC,aAAS,SAACC,GACN,OAAIA,EAAiBS,aAAGwyB,GAAkBvyB,QAAQV,IAC3CE,aAAW,CAAE5E,KAAM,MAAOoE,QAASM,MAE9CW,aAAW,SAAAC,GAAK,OAAIH,aAAGwyB,GAAkBpyB,QAAQD,OAW9B0/B,CAActhC,EAAQm9B,OEgG2B,SACxEF,EACAC,EACAC,GAHwE,OAKxEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW9H,GAAkB+H,UACpCC,aAAU,SAAAt9B,GAAM,OAnHA,SAACA,EAADC,GAEpB,OAAOE,EAF+DF,EAA3BE,YAER,CAC/BQ,KAAM,eACNC,OAAQ,OACRC,KA7C2B,SAAAyE,GAKZ,IAJnBwZ,EAImBxZ,EAJnBwZ,OACAyiB,EAGmBj8B,EAHnBi8B,UAIA,MAAO,CACH5d,aAFere,EAFnBqe,aAKIpB,KAAM,oBACNyT,UAJe1wB,EADnB0wB,UAMIwL,oBAAqB,CACjB,CACI1iB,SACAyiB,eA4BIE,CAA2BzhC,EAAOI,SAK9Cw1B,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,OAAKA,EAQES,aACH6zB,GAAkB5zB,QAAQ,CACtBm0B,aAAc70B,EAAS60B,aACvB6L,sBAAuB1gC,EAAS0gC,sBAChCphC,YAAaN,EAAOI,QAAQE,YAC5BqhC,YAAa3hC,EAAOI,QAAQuhC,YAC5Bvf,UAAWphB,EAASohB,WAAaphB,EAASohB,UAC1CjQ,SAAUnS,EAAOI,QAAQ+R,YAdtB1Q,aACH6zB,GAAkBzzB,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,sBAezBiB,aAAW,SAAAC,GAAK,OAAIH,aAAG6zB,GAAkBzzB,QAAQD,OAwF7CggC,CAAgB5hC,EAAQm9B,GAAYr8B,KAChCw8B,aAAU,SAAAt8B,GAAQ,OAAI00B,GAAoB10B,EAAUm8B,GAAYr8B,KAC5Dw8B,aAAU,SAAAt8B,GAAQ,OAtFL,SAC7BhB,EAD6BqgB,GAG5B,IAxDuCngB,EAuDtCC,EACDkgB,EADClgB,WAEI0hC,EAAW,CACb,CACIC,UAAW1kC,EAAW84B,WACtBne,SAAU/X,EAAOI,QAAQy1B,aAAa,GAAGkM,gBAAkB,EAC3DjjB,OAAQ9e,EAAOI,QAAQy1B,aAAa,GAAG/W,SAS/C,OAAO3e,EAA4B,CAC/BQ,KAAM,eACNC,OAAQ,OACRC,KArEG,CACH8iB,cALoCzjB,EAiEY1D,OAAAkuB,GAAA,EAAAluB,CAAA,GAC7CwD,EAAOI,QADqC,CAE/C41B,UAAW6L,KAlEfle,aAKIpB,KAAM,WACNyT,UAJe91B,EADnB81B,WAwEIJ,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,OAAKA,EAQES,aACH6zB,GAAkB5zB,QAAQ,CACtBm0B,aAAc70B,EAAS60B,aACvB6L,sBAAuB1gC,EAAS0gC,sBAChCphC,YAAaN,EAAOI,QAAQE,YAC5BqhC,YAAa3hC,EAAOI,QAAQuhC,YAC5Bvf,UAAWphB,EAASohB,WAAaphB,EAASohB,aAbvC3gB,aACH6zB,GAAkBzzB,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,sBAczBiB,aAAW,SAAAC,GAAK,OAAIH,aAAG6zB,GAAkBzzB,QAAQD,OA6CjCogC,CAAyBhhC,EAAUm8B,WAKnDx7B,aAAW,SAAAC,GAAK,OAAIH,aAAG6zB,GAAkBzzB,QAAQD,QA4JmB,SACxEq7B,EACAC,EACAC,GAHwE,OAKxEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW7H,GAAkB8H,UACpCC,aACI,SAACt9B,GAAD,OAAwB42B,GAAgB52B,EAAQm9B,IAChD,SAACn9B,EAAoB0xB,GAArB,MAA4C,CAAC1xB,EAAQ0xB,KAEzD4L,aAAU,SAAAyB,GAA+B,IAAAC,EAAAxiC,OAAAuhC,GAAA,EAAAvhC,CAAAuiC,EAAA,GAA7B/+B,EAA6Bg/B,EAAA,GAArBiD,EAAqBjD,EAAA,GACrC,GAA6B,QAAzBiD,EAAgB3lC,KAChB,OAAO2hC,aACHx8B,aAAGwgC,GACHxL,GAAcz2B,EAAQm9B,IAJO,IAQ7B/a,EAA+BpiB,EAAOI,QAAtCgiB,UACR,OAAIA,GAAaA,EAAU,GAAGsL,MACnBuQ,aAASx8B,aAAGwgC,IAEhBhE,aACHx8B,aAAGwgC,GACHxL,GAAcz2B,EAAQm9B,MAG9BG,aAAU,SAAA3a,GAAsC,IAAAD,EAAAlmB,OAAAuhC,GAAA,EAAAvhC,CAAAmmB,EAAA,GAApCsf,EAAoCvf,EAAA,GAAnBwf,EAAmBxf,EAAA,GACtCyf,EAAiBF,EAAgBrgC,MACjC2zB,GAAkB1zB,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,mBAEb60B,GAAkB7zB,QAAQ,CACtBu1B,aAAcgL,EAAgBhL,eAExC,IAAKiL,EACD,OAAOzgC,aAAG0gC,GAEd,IAAMC,EAAeF,EAActgC,MAC7B4zB,GAAgB3zB,QAAQ,CACpBvF,KAAM,MACNoE,QAAS,mBAEb80B,GAAgB9zB,QAAQ,CACpB2gC,SAAUJ,EAAgBhL,aAC1BN,OAAQuL,EAAcvL,OACtBr2B,YAAa4hC,EAAc5hC,cAGrC,OAAOmB,aAAG0gC,EAAgBC,KAE9BzgC,aAAW,SAAAC,GACP,OAAOH,aAAG8zB,GAAkB1zB,QAAQD,QA/G0B,SACtEq7B,EACAC,EACAC,GAHsE,OAKtEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW5H,GAAgB6H,UAClCt8B,aAAS,SAAAf,GAAM,OAAIy2B,GAAcz2B,EAAQm9B,OA2O4B,SACzEF,EACAC,EACAC,GAHyE,OAKzEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW3H,GAAmB4H,UACrCC,aACI,SAACt9B,GACG,GAAIA,EAAOI,QAAQmiB,OAASzkB,EAAiBi6B,QAAS,CAClD,IAAMmG,EAAc1hC,OAAAkuB,GAAA,EAAAluB,CAAA,GACbwD,EADa,CAEhBI,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACDwD,EAAOI,QADP,CAEHgiB,UAAW,CAAC5lB,OAAAkuB,GAAA,EAAAluB,CAAA,GAEDwD,EAAOI,QAAQ+R,SAFf,CAGHmlB,cAAeJ,GAAc,CACzBE,eAAgBp3B,EAAOI,QAAQs3B,QAC/BvlB,SAAUnS,EAAOI,QAAQ+R,kBAM7C,OAAOskB,GAAcyH,EAAgBf,GAEzC,OAAO5F,GAAiBv3B,EAAQm9B,IAEpC,SAACn9B,EAAoB0xB,GAArB,MAAkD,CAAC1xB,EAAQ0xB,KAE/D4L,aAAU,SAAA4B,GAA+B,IAAAY,EAAAtjC,OAAAuhC,GAAA,EAAAvhC,CAAA0iC,EAAA,GAA7Bl/B,EAA6B8/B,EAAA,GAArBwC,EAAqBxC,EAAA,GACrC,GAAIwC,EAAgB3L,OAAQ,CACxB,IAAMuH,EAAc1hC,OAAAkuB,GAAA,EAAAluB,CAAA,GACbwD,EADa,CAEhBI,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACDwD,EAAOI,QADP,CAEH+R,SAAS3V,OAAAkuB,GAAA,EAAAluB,CAAA,GACFwD,EAAOI,QAAQ+R,SADd,CAGJmlB,cAAeJ,GAAc,CACzBE,eAAgBp3B,EAAOI,QAAQs3B,QAC/BvlB,SAAUnS,EAAOI,QAAQ+R,WAE7Bub,MAAO4U,EAAgB3L,OAAO,SAI1C,OAAOsH,aACHx8B,aAAGzB,GACHu3B,GAAiB2G,EAAgBf,GACjC17B,aAAG6gC,IAGX,OAAOrE,aAASx8B,aAAGzB,GAASyB,aAAG6gC,MAEnChF,aAAU,SAAAuC,GAA6C,IAAAM,EAAA3jC,OAAAuhC,GAAA,EAAAvhC,CAAAqjC,EAAA,GAA3C7/B,EAA2CmgC,EAAA,GAAnCoC,EAAmCpC,EAAA,GAApBqC,EAAoBrC,EAAA,GAC7CsC,EAAiB,CACnB3sB,KAAMsoB,mBAAQx+B,GAAiBy9B,SAC/Bj9B,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GAAMwD,EAAOI,QAAQ0+B,QAEjC,MAC2B,OAAvByD,EAAcjmC,MACdkmC,GACAA,EAAe7L,OAERsH,aACHx8B,aAAG8gC,GACH9gC,aAAG,CACCk1B,OAAQ6L,EAAe7L,OACvBr2B,YAAakiC,EAAeliC,cAEhCP,GAAe0iC,EAAgBtF,IAIZ,OAAvBoF,EAAcjmC,KACP2hC,aACHx8B,aAAG8gC,GACH9gC,kBAAGiG,GACH3H,GAAe0iC,EAAgBtF,IAGhCc,aAASx8B,aAAG8gC,MAEvBjF,aAAU,SAAA4C,GAAoD,IAAAwC,EAAAlmC,OAAAuhC,GAAA,EAAAvhC,CAAA0jC,EAAA,GAAlDqC,EAAkDG,EAAA,GAAnCF,EAAmCE,EAAA,GAC1D,OAD0DA,EAAA,GAE/B,QAAvBH,EAAcjmC,MACS,QAAvBimC,EAAcjmC,MACS,MAAvBimC,EAAcjmC,KAEPmF,aAAGg0B,GAAmB5zB,QAAQ0gC,IAGrCC,EACO/gC,aACHg0B,GAAmB/zB,QAAQ6gC,GAC3B/M,GAAgB9zB,QAAQ8gC,IAIzB/gC,aAAGg0B,GAAmB/zB,QAAQ6gC,MAEzC5gC,aAAW,SAAAC,GACP,OAAOH,aAAGg0B,GAAmB5zB,QAAQD,QCrlB7C,SAACq7B,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWhF,GAA2BiF,UAC7Ct8B,aAAS,SAAAf,GAAM,OAAIu4B,GAAuBv4B,EAAQm9B,OnCuNtD,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAW3X,GAA6B4X,UAC/Ct8B,aAAS,SAAAf,GAAM,OAlCY,SAC/BA,EAD+B62B,GAG9B,IAbyCC,EAe1C,OAAO32B,EAFN02B,EADC12B,YAG4C,CAC1CQ,KAAM,2BACNC,OAAQ,OACRC,KAdG,CACHR,aALsCy2B,EAcY92B,EAAOI,SAb7DnE,GAKIia,MAH0B4gB,EAD9B5gB,SAiBGpV,KACCC,aAAS,SAACC,GACN,MAAsB,QAAlBA,EAAS1E,KACFmF,aAAGgkB,GAA6B/jB,QAAQ,OAE5CD,aACHgkB,GAA6B5jB,QACzBb,EAASN,YAIrBiB,aAAW,SAAAC,GACP,OAAOH,aAAGgkB,GAA6B5jB,QAAQD,EAAMlB,aAatCiiC,CAA2B3iC,EAAQm9B,OqC3NO,SACjEF,EACAC,EACAC,GAHiE,OAKjEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWlD,GAAgBmD,UAClCt8B,aAAS,SAAAf,GAAM,OAjEH,SAACA,EAADsF,GAGhB,OAAOnF,EAH2DmF,EAA3BnF,YAGX,CACxBy1B,gBAAgB,EAChBh1B,OAAQ,OACRD,KAAM,eACNE,KANYu5B,GAAoBp6B,EAAOI,SAOvCwiC,mBAAoB9gC,GAAO8B,cAAcI,cAC1ClD,KACCC,aAAS,SAACC,GACN,GACIA,aAAoB63B,SACFnxB,IAAlB1G,EAAS1E,KAET,OAAOmF,aACHy4B,GAAgBr4B,QAAQ,CACpBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,WAK9B,GAAIM,EACA,IACI,IAAM0R,EAAMkF,KAAKrC,MAAMqC,KAAKC,UAAU7W,IACtC,OAAOS,aAAGy4B,GAAgBx4B,QAAQgR,IACpC,MAAO3W,GACL,OAAO0F,aACHy4B,GAAgBr4B,QAAQ,CACpBvF,KAAM,MACNoE,QAAS,8BAMzB,OAAOe,aACHy4B,GAAgBr4B,QAAQ,CACpBvF,KAAM,MACNoE,QAAS,gCAIrBiB,aAAW,SAAAC,GACP,OAAOH,aACHy4B,GAAgBr4B,QAAQ,CACpBvF,KAAMsF,EAAMtF,KACZoE,QACmB,MAAfkB,EAAMtF,KACAsF,EAAMlB,QACNkX,KAAKrC,MAAM3T,EAAMlB,SAASA,cAc7BmiC,CAAY7iC,EAAQm9B,OC7EgC,SAC3EF,EACAC,EACAC,GAH2E,OAK3EF,EAAQn8B,KACJ6W,aAAOylB,sBAAWzC,GAAqB0C,UACvCt8B,aAAS,SAAAf,GAAM,OAAI46B,GAAsB56B,EAAQm9B,OEPkB,SACvEF,EACAC,EACAC,GAHuE,OAKvEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWjC,GAAiBkC,UACnCt8B,aAAS,SAAAf,GAAM,OAAIq7B,GAAer7B,EAAQm9B,OClBsB,SACpEF,EACAC,EACAC,GAHoE,OAKpEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW7B,GAAc8B,UAChCt8B,aAAS,SAAAf,GAAM,OAzCH,SAACA,EAADsF,GAAkD,IAA3BnF,EAA2BmF,EAA3BnF,WAEvC,OADuCH,EAAOI,QACvCD,EAA4B,CAC/BQ,KAAM,YACNC,OAAQ,OACRC,KAAM,QACN2zB,OAAO,EACPoB,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,MACsB,sBAAlBA,EAAS1E,MACS,6BAAlB0E,EAAS1E,KAEFmF,aACH85B,GAAc15B,QAAQ,CAClBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAAS0zB,eAIvBjzB,aAAG85B,GAAc75B,QAAQV,MAEpCW,aAAW,SAAAC,GACP,OAAOH,aACH85B,GAAc15B,QAAQ,CAClBvF,KAAMsF,EAAMtF,KACZoE,QAASkB,EAAM8yB,kBAcRoO,CAAY9iC,EAAQm9B,OCJ2B,SACtEF,EACAC,EACAC,GAHsE,OAKtEF,EAAQn8B,KACJ6W,aAAOylB,sBAAW3B,GAAgB4B,UAClCt8B,aAAS,SAAAf,GAAM,OAAI27B,GAAc37B,EAAQm9B,OEXyB,SACtEF,EACAC,EACAC,GAHsE,OAKtEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWpB,GAAgBqB,UAClCt8B,aAAS,SAAAf,GAAM,OAAIk8B,GAAcl8B,EAAQm9B,OC0G7C,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWhB,GAAyBiB,UAC3Ct8B,aAAS,SAAAf,GAAM,OAjGQ,SAC3BA,EAD2BsF,GAM3B,OAAOnF,EAHNmF,EADCnF,YAI0B,CACxBy1B,gBAAgB,EAChBh1B,OAAQ,OACRD,KAAM,eACNE,KAzBG,CACHw5B,SAAU,GACVC,OAAQ,GACRpkB,MAAO,GACPqkB,YAegCv6B,EAAOI,QAAQ2iC,WAd/C/sB,UAAW,GACXC,SAAU,GACVukB,YAAa,GACbrkB,MAAO,GACPskB,kBAAmB,GACnBlZ,QAAS,GACTmZ,UAAW,IAeXkI,mBAAoB9gC,GAAO8B,cAAcI,cAC1ClD,KACCC,aAAS,SAACC,GACN,GACIA,aAAoB63B,SACFnxB,IAAlB1G,EAAS1E,KAET,OAAOmF,aACH26B,GAAyBv6B,QAAQ,CAC7BvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,WAK9B,GAAIM,EACA,IACI,IAAM0R,EAAMkF,KAAKrC,MAAMqC,KAAKC,UAAU7W,IACtC,OAAOS,aAAG26B,GAAyB16B,QAAQgR,IAC7C,MAAO3W,GACL,OAAO0F,aACH26B,GAAyBv6B,QAAQ,CAC7BvF,KAAM,MACNoE,QAAS,oBAKzB,OAAOe,aAAG26B,GAAyB16B,QAAQV,MAE/CW,aAAW,SAAAC,GACP,OAAOH,aACH26B,GAAyBv6B,QAAQ,CAC7BvF,KAAM,MACNoE,QAAS,iCAoDFsiC,CAAuBhjC,EAAQm9B,OCxGtD,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWV,GAAsBW,UACxCt8B,aAAS,SAAAf,GAAM,OAAI48B,GAAkB58B,EAAQm9B,OCb0B,SAC3EF,EACAC,EACAC,GAH2E,OAK3EF,EAAQn8B,KACJ6W,aAAOylB,sBAAWP,GAAqBQ,UACvCt8B,aAAS,SAAAf,GAAM,OAzBI,SAACA,EAADE,GAEvB,OAAOC,EAFkED,EAA3BC,YAER,CAClCQ,KAAM,aACNC,OAAQ,OACRC,KAlB4B,SAAAyE,GAGX,IAFrB07B,EAEqB17B,EAFrB07B,QAGA,MAAO,CACHA,UACAC,QAHiB37B,EADrB27B,QAKI1e,KAAM,iBACNliB,YAAa2gC,EAAQE,YACrB5gC,YAAa0gC,EAAQ7uB,UAKTgvB,CAA4BnhC,EAAOI,SAK/Cw1B,gBAAgB,IACjB90B,KACCC,aAAS,SAACC,GACN,OAAIA,EAAiBS,aAAGo7B,GAAqBn7B,QAAQV,IAC9CE,aAAW,CAAE5E,KAAM,MAAOoE,QAASM,MAE9CW,aAAW,SAAAC,GACP,OAAOH,aAAGo7B,GAAqBh7B,QAAQD,OAYxBqhC,CAAmBjjC,EAAQm9B,OViJsB,SACxEF,EACAC,EACAC,GAHwE,OAKxEF,EAAQn8B,KACJ6W,aAAOylB,sBAAWjD,GAAkBkD,UACpCt8B,aAAS,SAAAf,GAAM,OArEO,SAC1BA,EAD0BE,GAM1B,OAAOC,EAHND,EADCC,YAI0B,CACxBy1B,gBAAgB,EAChBh1B,OAAQ,OACRD,KAAM,eACNE,KANYu5B,GAAoBp6B,EAAOI,SAOvCwiC,mBAAoB9gC,GAAO8B,cAAcI,cAC1ClD,KACCC,aAAS,SAACC,GACN,GACIA,aAAoB63B,SACFnxB,IAAlB1G,EAAS1E,KAET,OAAOmF,aACH04B,GAAkBt4B,QAAQ,CACtBvF,KAAM0E,EAAS1E,KACfoE,QAASM,EAASN,WAK9B,GAAIM,EACA,IACI,IAAM0R,EAAMkF,KAAKrC,MAAMqC,KAAKC,UAAU7W,IAEtC,OAAOS,aAAG04B,GAAkBz4B,QAAQgR,IACtC,MAAO3W,GACL,OAAO0F,aACH04B,GAAkBt4B,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,8BAMzB,OAAOe,aACH04B,GAAkBt4B,QAAQ,CACtBvF,KAAM,MACNoE,QAAS,gCAIrBiB,aAAW,SAAAC,GACP,OAAOH,aACH04B,GAAkBt4B,QAAQ,CACtBvF,KAAMsF,EAAMtF,KACZoE,QACmB,MAAfkB,EAAMtF,KACAsF,EAAMlB,QACNkX,KAAKrC,MAAM3T,EAAMlB,SAASA,cAc7BwiC,CAAsBljC,EAAQm9B,OMzKqB,SAC1EF,EACAC,EACAC,GAH0E,OAK1EF,EAAQn8B,KACJ6W,aAAOylB,sBAAWvB,GAAoBwB,UACtCt8B,aAAS,SAAAf,GAAM,OAAI87B,GAAkB97B,EAAQm9B,OJSjD,SAACF,EAASC,EAAQC,GAAlB,OACAF,EAAQn8B,KACJ6W,aAAOylB,sBAAWrC,GAAiCsC,UACnDt8B,aAAS,SAAAf,GAAM,OAAIi7B,GAAwBj7B,EAAQm9B,QUlDrDgG,GAAyB,CAC3BlnC,GAAI,GACJ8W,MAAO,GACP2K,QAAS,CACL,CACIzhB,GAAI,GACJ8W,MAAO,GACPqwB,KAAM,GACN1mB,UAAW,GACXD,aAAc,GACdQ,WAAY,MAKXomB,GAA0B,CACnCC,SAAS,EACT1hC,WAAO8F,EACP81B,WAAO91B,EACPhH,aAASgH,EACTua,YAAQva,EACR67B,cAAc,EACd5F,YAAQj2B,EACRk2B,oBAAqB,CAACphC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK2mC,KAC3BK,YAAQ97B,GAuRG+7B,GA9PkC,WAG5C,IAFD37B,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,WAAO8F,EACPhH,aAASgH,EACTpL,UAAMoL,IAEd,KAAK02B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIy7B,aAAcvjC,EAAOI,QAAQujC,YAErC,KAAKvF,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI07B,OAAQ,KAEhB,KAAKpF,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,MAAO,uBAEf,KAAKw8B,mBAAQsF,GAAwBrG,SACrC,KAAKe,mBAAQsF,GAAqCrG,SAClD,KAAKe,mBAAQwF,GAA0CvG,SACvD,KAAKe,mBAAQyF,GAAmDxG,SAChE,KAAKe,mBAAQsF,GAA2BrG,SACpC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,WAAO8F,EACPhH,aAASgH,EACTpL,UAAMoL,IAId,KAAK02B,mBAAQwF,GAA0CliC,SACnD,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT5iC,QAASV,EAAOI,QAAQM,QACxBkB,WAAO8F,EACPpL,KAAM0D,EAAOI,QAAQ9D,OAE7B,KAAK8hC,mBAAQyF,GAAmDniC,SAC5D,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT5iC,QAASV,EAAOI,QAAQM,QACxBkB,WAAO8F,EACPpL,KAAM0D,EAAOI,QAAQoV,SAE7B,KAAK4oB,mBAAQyF,GAAmDhiC,SAC5D,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT5iC,QAASV,EAAOI,QAAQM,QACxBkB,WAAO8F,EACPpL,KAAM0D,EAAOI,QAAQ9D,OAE7B,KAAK8hC,mBAAQwF,GAA0C/hC,SACnD,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,MAAO5B,EAAOI,QAAQM,QACtBA,aAASgH,EACTpL,KAAM0D,EAAOI,QAAQ9D,OAG7B,KAAK8hC,mBAAQsF,GAAwB7hC,SACjC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,MAAO5B,EAAOI,QAAQwB,QAI9B,KAAKw8B,mBAAQsF,GAAwBhiC,SACjC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT9F,MAAOx9B,EAAOI,QAAQo9B,MACtBvb,OAAQjiB,EAAOI,QAAQ6hB,OACvB0b,OAAQ39B,EAAOI,QAAQu9B,OACvBC,yBAC2Cl2B,IAAvC1H,EAAOI,QAAQw9B,oBAAfphC,OAAAsnC,GAAA,EAAAtnC,CACUwD,EAAOI,QAAQw9B,qBACnB,CAACphC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAK2mC,OAIxB,KAAK/E,mBAAQsF,GAA2B7hC,SACpC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT5iC,aAASgH,EACT9F,MAAO5B,EAAOI,UAItB,KAAKg+B,mBAAQsF,GAA2BhiC,SACpC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,WAAO8F,EACPhH,QAASV,EAAOI,UAIxB,KAAKg+B,mBAAQsF,GAAqC7hC,SAC9C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,MAAO5B,EAAOI,UAItB,KAAKg+B,mBAAQsF,GAAqChiC,SAC9C,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACTE,OAAQxjC,EAAOI,UAGvB,KAAKg+B,mBAAQ2F,GAAsC1G,SACnD,KAAKe,mBAAQsF,GAA0BrG,SACvC,KAAKe,mBAAQ4F,GAAmC3G,SAChD,KAAKe,mBAAQ6F,GAA8B5G,SAC3C,KAAKe,mBAAQ8F,GAA8C7G,SAC3D,KAAKe,mBAAQ6F,GAA6B5G,SAC1C,KAAKe,mBAAQ+F,GAA+B9G,SAC5C,KAAKe,mBAAQgG,GAAyC/G,SACtD,KAAKe,mBAAQgG,GAA0C/G,SACvD,KAAKe,mBAAQgG,GAAoC/G,SACjD,KAAKe,mBAAQiG,GAAiChH,SAC9C,KAAKe,mBAAQiG,GAAmChH,SAChD,KAAKe,mBAAQiG,GAAmChH,SAChD,KAAKe,mBAAQiG,GAAkChH,SAC/C,KAAKe,mBAAQkG,GAAgCjH,SAC7C,KAAKe,mBAAQmG,GAAkClH,SAC/C,KAAKe,mBAAQmG,GAAgClH,SAC7C,KAAKe,mBAAQmG,GAAoClH,SACjD,KAAKe,mBAAQiG,GAAkChH,SAC/C,KAAKe,mBAAQoG,GAAiCnH,SAC9C,KAAKe,mBAAQqG,GAAoCpH,SACjD,KAAKe,mBAAQsG,GAA8BrH,SAC3C,KAAKe,mBAAQoG,GAAiCnH,SAC9C,KAAKe,mBAAQuG,GAAkCtH,SAC/C,KAAKe,mBAAQwG,GAAkCvH,SAC/C,KAAKe,mBACDyG,GAAmDxH,SAEvD,KAAKe,mBAAQyG,GAA8CxH,SAC3D,KAAKe,mBAAQ+F,GAA6B9G,SAC1C,KAAKe,mBAAQ0G,GAAsCzH,SACnD,KAAKe,mBAAQ2G,GAAiD1H,SAC9D,KAAKe,mBAAQ2G,GAA8C1H,SAC3D,KAAKe,mBAAQoG,GAAkCnH,SAC3C,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,IAGjB,KAAKlF,mBAAQ2F,GAAsCriC,SACnD,KAAK08B,mBAAQsF,GAA0BhiC,SACvC,KAAK08B,mBAAQ4F,GAAmCtiC,SAChD,KAAK08B,mBAAQ6F,GAA6BviC,SAC1C,KAAK08B,mBAAQ6F,GAA8BviC,SAC3C,KAAK08B,mBAAQgG,GAAyC1iC,SACtD,KAAK08B,mBAAQgG,GAA0C1iC,SACvD,KAAK08B,mBAAQgG,GAAoC1iC,SACjD,KAAK08B,mBAAQiG,GAAiC3iC,SAC9C,KAAK08B,mBAAQiG,GAAmC3iC,SAChD,KAAK08B,mBAAQ+F,GAA+BziC,SAC5C,KAAK08B,mBAAQiG,GAAmC3iC,SAChD,KAAK08B,mBAAQiG,GAAkC3iC,SAC/C,KAAK08B,mBAAQiG,GAAkC3iC,SAC/C,KAAK08B,mBAAQkG,GAAgC5iC,SAC7C,KAAK08B,mBAAQmG,GAAkC7iC,SAC/C,KAAK08B,mBAAQmG,GAAgC7iC,SAC7C,KAAK08B,mBAAQmG,GAAoClH,SACjD,KAAKe,mBAAQoG,GAAiC9iC,SAC9C,KAAK08B,mBAAQoG,GAAiC9iC,SAC9C,KAAK08B,mBAAQ0G,GAAsCpjC,SACnD,KAAK08B,mBAAQsG,GAA8BhjC,SAC3C,KAAK08B,mBAAQwG,GAAkCljC,SAC/C,KAAK08B,mBAAQuG,GAAkCjjC,SAC/C,KAAK08B,mBAAQ2G,GAAiDrjC,SAC9D,KAAK08B,mBAAQ2G,GAA8CrjC,SAC3D,KAAK08B,mBAAQ8F,GAA8CxiC,SAC3D,KAAK08B,mBAAQqG,GAAoC/iC,SACjD,KAAK08B,mBACDyG,GAAmDnjC,SAEvD,KAAK08B,mBAAQ+F,GAA6BziC,SAC1C,KAAK08B,mBAAQsF,GAA0B7hC,SACvC,KAAKu8B,mBAAQyG,GAA8CnjC,SAC3D,KAAK08B,mBAAQoG,GAAkC9iC,SAC3C,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,IAGjB,KAAKlF,mBAAQ2F,GAAsCliC,SACnD,KAAKu8B,mBAAQoG,GAAiC3iC,SAC9C,KAAKu8B,mBAAQ+F,GAA+BtiC,SAC5C,KAAKu8B,mBAAQoG,GAAiC3iC,SAC9C,KAAKu8B,mBAAQoG,GAAkC3iC,SAC/C,KAAKu8B,mBAAQiG,GAAmCxiC,SAChD,KAAKu8B,mBAAQiG,GAAkCxiC,SAC/C,KAAKu8B,mBAAQiG,GAAiCxiC,SAC9C,KAAKu8B,mBAAQiG,GAAmCxiC,SAChD,KAAKu8B,mBAAQiG,GAAkCxiC,SAC/C,KAAKu8B,mBAAQmG,GAAkC1iC,SAC/C,KAAKu8B,mBAAQmG,GAAgC1iC,SAC7C,KAAKu8B,mBAAQmG,GAAoClH,SACjD,KAAKe,mBAAQ6F,GAA6BpiC,SAC1C,KAAKu8B,mBAAQ6F,GAA8BpiC,SAC3C,KAAKu8B,mBAAQ4F,GAAmCniC,SAChD,KAAKu8B,mBAAQgG,GAAoCviC,SACjD,KAAKu8B,mBAAQgG,GAAyCviC,SACtD,KAAKu8B,mBAAQgG,GAA0CviC,SACvD,KAAKu8B,mBAAQ0G,GAAsCjjC,SACnD,KAAKu8B,mBAAQsG,GAA8B7iC,SAC3C,KAAKu8B,mBAAQwG,GAAkC/iC,SAC/C,KAAKu8B,mBAAQuG,GAAkC9iC,SAC/C,KAAKu8B,mBAAQ8F,GAA8CriC,SAC3D,KAAKu8B,mBAAQ2G,GAAiDljC,SAC9D,KAAKu8B,mBAAQ2G,GAA8CljC,SAC3D,KAAKu8B,mBAAQqG,GAAoC5iC,SACjD,KAAKu8B,mBAAQyG,GAA8ChjC,SAC3D,KAAKu8B,mBACDyG,GAAmDhjC,SAEvD,KAAKu8B,mBAAQ+F,GAA6BtiC,SAC1C,KAAKu8B,mBAAQkG,GAAgCziC,SAAU,IAC3CvF,EAAS0D,EAAOI,QAAhB9D,KACR,OAAOE,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACTC,aAAuB,QAATjnC,IAItB,QACI,OAAOwL,IClTNk9B,GAA6C,CACtDvwB,SAAU,KACVuB,UAAW,GACXC,SAAU,IAGDgvB,GAA2B,CACpCC,QAAS,KACTC,QAAS,GACTlT,OAAQ,GACRE,WAAY,GACZD,OAAQ,GACRE,SAAU,IAGDgT,GAA2B,CACpCrvB,iBAAkB,CACdtB,SAAU1X,EAAUsoC,GACpBrvB,UAAW,GACXC,SAAU,IAEdL,UAAW,GACX+b,QAAS,CACLM,OAAQ,GACRC,OAAQ,GACRiT,QAAS,GACThT,WAAY,GACZC,SAAU,GACV8S,QAAS,MAEbhvB,MAAO,GACPC,MAAO,GACPG,YAAa,GACbC,YAAa,GACbC,qBAAsB,GACtBC,aAAc,GACdioB,YAAY,EACZD,WAAW,GA4BF6G,IAxBIzoC,EAAa0oC,iBAON7nC,EAAoB8nC,MAiBA,CACxCvpC,GAAI,GACJwpC,aAAc,GACdC,kBAAmB,GACnBC,aAAc,GACdC,eAAgB,GAChBC,aAAc,GACdC,iBAAkB,GAClBC,4BAA6B,GAC7BC,+BAAgC,GAChCC,cAAe,GACfC,wBAAyB,GACzBC,wBAAyB,GACzBC,6BAA8B,GAC9B7lC,KAAM,GACN8lC,oBAAqB,GACrB1X,oBAAqB,GACrByC,6BAA8B,GAC9Brc,0BAA2B,GAC3BuxB,4BAA6B,GAC7B9wB,OAAQ,GACR1B,OAAQ,GACR3B,SAAU,GACV+uB,YAAa,GACbqF,wBAAyB,IACzBC,2BAA4B,MAmBnBC,IAJC1oC,EAAgB2oC,gBAIgC,CAC1D3zB,MAAO,GACP4zB,MAAO,GACPC,KAAM,KAGGC,GAA2B,CACpClF,YAAa,GACbmF,YAAa,GACb/zB,MAAO,GACP2hB,YAAa,GACb5V,OAAQriB,EAAQ6G,GAChBs1B,SAAS,EACT3C,gBAAYvuB,EACZ2vB,qBAAiB3vB,GAGfmJ,GAAQc,KAEDo1B,GAA6B,CACtC30B,eAAgB,GAChB40B,eAAgB9oC,EAAgB+oC,UAChC1lB,QAAS,MACT2lB,oBAAqB1pC,EAAqB6F,IAC1C8jC,mBAAoB,GACpBC,iBAAkBv2B,GAClBw2B,cAAe,GACfC,cAAe,GACfxoB,OAAQriB,EAAQ6G,GAChBikC,iBAAkB,GAClBC,qBAAsB,GACtBC,cAAe,CACXlhB,gBAAiB,GACjBmhB,sBAAuB,GACvBC,QAAS,GACT7/B,MAAO,GACP8/B,SAAU,GACVC,eAAgB,GAChBlW,QAAS,CACLM,OAAQ,GACRC,OAAQ,GACRiT,QAAS,GACThT,WAAY,GACZC,SAAU,GACV8S,QAAS,MAEb4C,QAAS,GACTC,YAAa,GACbC,UAAW,GACXC,iBAAkB,GAClB9C,QAAS,GACT+C,iBAAkB/qC,EAAkBwiB,QACpCwoB,oBAAqB,EACrBC,wBAAyB,GACzBpmC,QAAS,CACL8T,KAAM7Y,EAAcorC,QACpBC,SAAS,EACTC,iBAAkB,GAClBC,oBAAqBxrC,EAAqByrC,KAC1CC,MAAO,CACH5yB,KAAM,GACNvV,KAAM,GACNooC,UAAW,CACP,CACIviC,MAAO,EACPwN,UAAWxW,EAAWwrC,aAM1CC,YAAahsC,EAAa0oC,iBAC1BrX,qBAAsBhxB,EAAW0iB,UACjCkpB,oBAAqB5rC,EAAW6rC,SAChCC,QAAS,CACL5lB,YAAavmB,EAAa0oC,iBAC1B3iB,SAAU,GACVqmB,QAAS,GACTC,SAAU,GACVC,qBAAsB,GACtBC,sBAAuB,GACvBC,oBAAgB3hC,EAChBmb,QAAS,GACTymB,mBAAoB5rC,EAAoB8nC,MACxC+D,aAAc,GACdxmB,SAAU,GACVymB,SAAU,IAEdl3B,aAAc,GACd2jB,WAAY54B,EAAYurC,QACxBtR,cAAeuP,IC5MNxD,IDkND5mC,EAAQ6G,GAKLlG,EAAWwrC,QCvNE,CACxBhnC,WAAO8F,EACPic,aAAcjnB,EAAc0Z,WAC5BqzB,eAAgB,GAChBC,qBAAsB,GACtB/zB,QAAS,CACL8oB,WAAW,EACXC,YAAY,EACZ3oB,iBAAkB,CACdtB,SAAU1X,EAAUsoC,GACpBrvB,UAAW,GACXC,SAAU,IAEdL,UAAW,GACX+b,QAAS,CACLM,OAAQ,GACRC,OAAQ,GACRiT,QAAS,GACThT,WAAY,GACZC,SAAU,GACV8S,QAAS,MAEbhvB,MAAO,GACPC,MAAO,GACPG,YAAa,GACbC,YAAa,GACbC,qBAAsB,GACtBC,aAAc,IAElBkzB,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,IAEbkpC,mBAAoB,CAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,iBAAiB,KAkKVC,GA5JwC,WAGlD,IAFDliC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAA0BrG,SACnC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAKrB,KAAK09B,mBAAQsF,GAA0B7hC,SACnC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QACIV,EAAOI,QAAQM,SACfV,EAAOI,QAAQs0B,aACf,MAKhB,KAAK0J,mBAAQsF,GAA0BhiC,SAAU,IAAAuoC,EAkBzCjqC,EAAOI,QAAQsV,SAhBf+zB,EAFyCQ,EAEzCR,eACAC,EAHyCO,EAGzCP,qBACA5zB,EAJyCm0B,EAIzCn0B,KAJyCo0B,EAAAD,EAKzCt0B,QACII,EANqCm0B,EAMrCn0B,iBACA4b,EAPqCuY,EAOrCvY,QACAzb,EARqCg0B,EAQrCh0B,MACAC,EATqC+zB,EASrC/zB,MACAuoB,EAVqCwL,EAUrCxL,WACAD,EAXqCyL,EAWrCzL,UACAhoB,EAZqCyzB,EAYrCzzB,aACAb,EAbqCs0B,EAarCt0B,UACAU,EAdqC4zB,EAcrC5zB,YACAC,EAfqC2zB,EAerC3zB,YACAC,EAhBqC0zB,EAgBrC1zB,qBAIR,OAAOha,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI2hC,iBACAC,uBACA/lB,aAAc7N,EACdH,QAAQnZ,OAAAkuB,GAAA,EAAAluB,CAAA,GACDsL,EAAM6N,QADN,CAEHO,QACAC,QACAuoB,WAAYA,IAAc,EAC1BD,UAAWA,IAAa,EACxBhoB,eACAb,YACAU,cACAC,cACAC,uBACAT,iBAAmBA,GAAoB,CACnCtB,SAAUsB,EAAiBtB,SAC3BuB,UAAWD,EAAiBC,UAC5BC,SAAUF,EAAiBE,WAHbzZ,OAAAkuB,GAAA,EAAAluB,CAAA,GAIPwoC,IACXrT,QAAS,CACLM,OACIN,EAAQM,QACRnqB,EAAM6N,QAAQgc,QAAQM,QACtB,GACJC,OAAQP,EAAQO,QAAU,GAC1BiT,QACIxT,EAAQwT,SACRr9B,EAAM6N,QAAQgc,QAAQwT,SACtB,GACJhT,WAAYR,EAAQQ,YAAc,GAClCC,SAAUT,EAAQS,UAAY,GAC9B8S,QACIvT,EAAQuT,SAAWp9B,EAAM6N,QAAQgc,QAAQuT,aAM7D,KAAK9G,mBAAQsF,GAA4BrG,SACrC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,GAGX,KAAKs2B,mBAAQsF,GAA4BhiC,SACrC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,WAEbiV,QAAQnZ,OAAAkuB,GAAA,EAAAluB,CAAA,GACDsL,EAAM6N,QADN,CAEHO,MAAOlW,EAAOI,QAAQ8V,OAASpO,EAAM6N,QAAQO,MAC7CC,MAAOnW,EAAOI,QAAQ+V,OAASrO,EAAM6N,QAAQQ,MAC7CuoB,WACI1+B,EAAOI,QAAQs+B,YAAc52B,EAAM6N,QAAQ+oB,WAC/CD,UACIz+B,EAAOI,QAAQq+B,WAAa32B,EAAM6N,QAAQ8oB,cAI1D,KAAKL,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAIrB,KAAK09B,mBAAQsF,GAA2BrG,SACpC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,GAGX,KAAKs2B,mBAAQsF,GAA4B7hC,SACzC,KAAKu8B,mBAAQsF,GAA2B7hC,SACxC,KAAKu8B,mBAAQsF,GAA4B7hC,SACzC,KAAKu8B,mBAAQsF,GAA2B7hC,SAEpC,OADA0N,QAAQH,IAAI,uCACL5S,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAKrB,KAAK09B,mBAAQsF,GAA2BhiC,SACxC,KAAK08B,mBAAQsF,GAA4BhiC,SACzC,KAAK08B,mBAAQsF,GAA2BhiC,SACpC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAKrB,QACI,OAAOoH,ICrMNu7B,GAAe,CACxBC,SAAS,EACT1hC,WAAO8F,EACP0a,UAAW,CAAC5lB,OAAAkuB,GAAA,EAAAluB,CAAA,GAEDuqC,KAGXoD,uBAAwB,GACxBC,gBAAiB,CACb1B,MAAO,EACPzsC,GAAI,KAiUGouC,GAxT0C,WAGpD,IAFDviC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,WAAO8F,IAIf,KAAK02B,mBAAQsF,GAA2BrG,SACpC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,IAIjB,KAAKlF,mBAAQsF,GAA2B7hC,SACpC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIw7B,SAAS,EACT1hC,MAAO,YAIf,KAAKw8B,mBAAQsF,GAA2BhiC,SACpC,IAAMyoC,EAAyBnqC,EAAOI,QAAQE,YACxC8hB,EAAYta,EAAMsa,UAAU1mB,IAAI,SAAAkZ,GAAK,IAC/BzC,EAAanS,EAAOI,QAApB+R,SACR,GAAIA,GAAYyC,EAAExC,iBAAmB+3B,EAAwB,CAEzD,IACMzc,EAAQ9Y,EAAE8Y,MAAQ9Y,EAAE8Y,MAAQvb,EAASub,MAC3C,GACIvb,EAASs1B,cAAcC,uBAC0B,KAAjDv1B,EAASs1B,cAAcC,sBAEvB,OAAOlrC,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIm4B,WARU,EASV5c,QACAtb,eAAgB+3B,IAGxB,IAAMzC,EACFv1B,EAAS2M,SAAWriB,EAAQ6G,GACtB,KACA6O,EAASs1B,cAAcG,SACjC,OAAOprC,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIm4B,WAnBc,EAoBd5c,QACAtb,eAAgB+3B,EAChB1C,cAAcjrC,OAAAkuB,GAAA,EAAAluB,CAAA,GACP2V,EAASs1B,cADH,CAETC,4BAIZ,OAAO9yB,IAEX,OAAOpY,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIqiC,yBACA/nB,YACAkhB,SAAS,EACT8G,gBAAiB,CACb1B,MAAOtmB,EAAUtS,OAAS,EAC1B7T,GAAI+D,EAAOI,QAAQE,aAEvBsB,WAAO8F,IAIf,KAAK02B,mBAAQiG,GAAiC3iC,SAAU,IAC5C0gB,EAAcpiB,EAAOI,QAArBgiB,UACF+nB,EAAyB/nB,EAAU,GAAGhQ,eACtC2jB,EAAoB3T,EAAU1mB,IAAI,SAAAyW,GACpC,GAAIg4B,IAA2Bh4B,EAASC,eAAgB,CACpD,GAAID,EAASs1B,cAAcC,sBACvB,OAAOlrC,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIm4B,WAAW,IAGnB,IAAM5C,EACFv1B,EAAS2M,SAAWriB,EAAQ6G,GACtB,KACA6O,EAASs1B,cAAcG,SACjC,OAAOprC,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIm4B,WAAW,EACX7C,cAAcjrC,OAAAkuB,GAAA,EAAAluB,CAAA,GACP2V,EAASs1B,cADH,CAETC,4BAIZ,OAAOv1B,IAEX,OAAO3V,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIqiC,yBACA/nB,UAAW2T,EACXqU,gBAAiB,CACb1B,MAAO,EACPzsC,GAAIkuC,KAKhB,KAAK/L,mBAAQiG,GAAmC3iC,SAAU,IAAAmzB,EAChB70B,EAAOI,QAArCqU,EAD8CogB,EAC9CpgB,SAAUuB,EADoC6e,EACpC7e,UAAWuM,EADyBsS,EACzBtS,KAEvBH,EAAYta,EAAMsa,UAAU1mB,IAAI,SAAAyW,GAClC,GAAIA,EAASC,iBAAmBtK,EAAMqiC,uBAClC,OAAOh4B,EAEX,GAAIoQ,GAAiB,WAATA,EAAmB,CAC3B,IAAMjQ,EAAeH,EAASG,aAAa5W,IAAI,SAAAD,GAC3C,MAAe,aAAXA,EAAE8W,KACK9W,EAEJe,OAAAkuB,GAAA,EAAAluB,CAAA,GACAf,EADP,CAEIgZ,WACAuB,gBAGR,OAAOxZ,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIG,aACIA,EAAaxC,OAAS,EAChBwC,EACA,CACI,CACIC,KAAM,WACNkC,WACAuB,gBAK1B,OAAOxZ,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIG,aAAcH,EAASG,aAAaqF,OAChC,SAAAlc,GAAC,MAAe,aAAXA,EAAE8W,WAKnB,OAAO/V,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIsa,cAIR,KAAKgc,mBAAQiG,GAAkC3iC,SAAU,IAAA6oC,EASjDvqC,EAAOI,QAPP0iB,EAFiDynB,EAEjDznB,eACAF,EAHiD2nB,EAGjD3nB,SACA1M,EAJiDq0B,EAIjDr0B,MACAH,EALiDw0B,EAKjDx0B,iBACAwM,EANiDgoB,EAMjDhoB,KACAQ,EAPiDwnB,EAOjDxnB,SACAC,EARiDunB,EAQjDvnB,YAEEZ,EAAYta,EAAMsa,UAAU1mB,IAAI,SAAAyW,GAClC,GAAIA,EAASC,iBAAmBtK,EAAMqiC,uBAClC,OAAOh4B,EAEX,GAAIoQ,IAAS1kB,EAAmBqS,MAAQ0S,EACpC,OAAOpmB,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEI62B,QAAQxsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACD2V,EAAS62B,QADT,CAEHpmB,eAKZ,GAAIL,IAAS1kB,EAAmBolB,WAAaF,EACzC,OAAOvmB,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEI62B,QAAQxsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACD2V,EAAS62B,QADT,CAEHjmB,SAAUA,GAAY5Q,EAAS62B,QAAQjmB,aAKnD,GAAIR,IAAS1kB,EAAmBqlB,cAAgBF,EAC5C,OAAOxmB,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEI62B,QAAQxsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACD2V,EAAS62B,QADT,CAEHM,mBACItmB,GACA7Q,EAAS62B,QAAQM,uBAKjC,GAAIn3B,EAAS62B,QAAS,CAClB,IAAIK,EAAwB7sC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAQ4oC,IAChCjzB,EAAS62B,QAAQK,iBACjBA,EAAc7sC,OAAAkuB,GAAA,EAAAluB,CAAA,GACP2V,EAAS62B,QAAQK,iBAG5BA,EAAc7sC,OAAAkuB,GAAA,EAAAluB,CAAA,GACP6sC,EADO,CAEVtzB,iBACIA,GAAoBszB,EAAetzB,iBACvC4b,QAAS7O,GAAkBumB,EAAe1X,QAC1Czb,MAAOA,GAASmzB,EAAenzB,QAEnC/D,EAAS62B,QAATxsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACO2V,EAAS62B,QADhB,CAEIK,mBAGR,OAAOl3B,IAEX,OAAO3V,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIsa,cAIR,KAAKgc,mBAAQoG,GAAkC9iC,SAAU,IAC7CyQ,EAAanS,EAAOI,QAApB+R,SACR,QAAiBzK,IAAbyK,EACA,OAAO3V,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,GAGX,IAAMsa,EAAYta,EAAMsa,UAAU1mB,IAAI,SAAAkZ,GAClC,OAAIA,EAAExC,iBAAmBD,EAASC,eACvBD,EAEJyC,IAEX,OAAOpY,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIsa,cAMR,KAAKgc,mBAAQoG,GAA+B9iC,SAAU,IAAA8oC,EACRxqC,EAAOI,QAAzCu2B,EAD0C6T,EAC1C7T,OAAQ0L,EADkCmI,EAClCnI,SAAU/hC,EADwBkqC,EACxBlqC,YACpB8hB,EAAYta,EAAMsa,UAAU1mB,IAAI,SAAAyW,GAClC,IAAMyC,EAACpY,OAAAkuB,GAAA,EAAAluB,CAAA,GAAQ2V,GAQf,GANIwkB,QACYjvB,IAAZkN,EAAE8Y,OACF9Y,EAAEkK,SAAW6X,EAAO,GAAG7X,SAEvBlK,EAAE8Y,MAAQiJ,EAAO,IAGjB/hB,EAAExC,iBAAmB9R,GACrBsU,EAAE0iB,cAAcD,sBACL3vB,IAAXivB,QACajvB,IAAb26B,EAEA,OAAOztB,EAfmC,IAiBtC+sB,EAAgBhL,EAAO,GAAGe,QAA1BiK,YACFrK,EAAgB+K,EAASnwB,KAC3B,SAAAzW,GAAC,OAAIA,EAAEkmC,cAAgBA,IAG3B,OAAIrK,EACO96B,OAAAkuB,GAAA,EAAAluB,CAAA,GACAoY,EADP,CAEI0iB,kBAGD1iB,IAEX,OAAOpY,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIsa,cAIR,KAAKgc,mBAAQsF,IAAsB,IACvBvxB,EAAanS,EAAOI,QAApB+R,SACFiQ,EAAYta,EAAMsa,UAAU1mB,IAAI,SAAAkZ,GAClC,OAAIzC,EAASC,iBAAmBwC,EAAExC,eACvBD,EAEJyC,IAEX,OAAOpY,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIqiC,uBAAwBh4B,EAASC,eACjCgQ,cAIR,QACI,OAAOta,IClVNu7B,GAAe,CACxBoH,OAAQ,GACRd,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,KA0DFgqC,GApDoC,WAG9C,IAFD5iC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAAwBrG,SAErC,KAAKe,mBAAQsF,GAAwB7hC,SAErC,KAAKu8B,mBAAQsF,GAAyBrG,SAClC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,GAEhB,KAAKs2B,mBAAQsF,GAAwBhiC,SACjC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI2iC,OAAQzqC,EAAOI,UAIvB,KAAKg+B,mBAAQsF,GAAyBhiC,SAClC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI2iC,OAAM,GAAAn6B,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAMsL,EAAM2iC,QAAZ,CAAoBzqC,EAAOI,UACjCupC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAIrB,KAAK09B,mBAAQsF,GAAyB7hC,SAClC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAIrB,KAAK09B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAIrB,QACI,OAAOlE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KC7DlBshB,GAAUqP,GAAgBxpB,OAenBo0B,GAAe,CACxBpN,WAAY54B,EAAYurC,QACxB+B,UAAW,EACX5C,YAAa,GACbxwB,OAAQ,GACRoyB,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,IAEbkqC,sBAAkBljC,EAClBmjC,uBAAmBnjC,GA0FRojC,GArFgD,WAG1D,IAFDhjC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAA8BrG,SAK3C,KAAKe,mBAAQsF,GAA+BrG,SACxC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,GAIX,KAAKs2B,mBAAQsF,GAA8B7hC,SACvC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI8iC,iBAAkBxhB,GAAQ2hB,SAIlC,KAAK3M,mBAAQsF,GAA+B7hC,SACxC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI+iC,kBAAmBzhB,GAAQ2hB,OAC3BxzB,OAAQ,GACRwwB,YAAa,GACb4C,UAAW,IAInB,KAAKvM,mBAAQsF,GAA8BhiC,SACvC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEImuB,WAAYj2B,EAAOI,QAAQ61B,WAC3B0U,UAAWx2B,OAAOnU,EAAOI,QAAQuqC,WACjC5C,YAAa/nC,EAAOI,QAAQ2nC,YAC5B6C,sBAAkBljC,IAI1B,KAAK02B,mBAAQsF,GAA+BhiC,SACxC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIyP,OAAQvX,EAAOI,SAAW,GAC1ByqC,uBAAmBnjC,IAI3B,KAAK02B,mBAAQsF,GAAyB7hC,SAClC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM0D,EAAOI,QAAQ9D,MAAQ,MAC7BoE,QAASV,EAAOI,QAAQM,SAAW,aAK/C,KAAK09B,mBAAQsF,GAAyBhiC,SAClC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAKrB,KAAK09B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAIrB,QACI,OAAOlE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KCvGXu7B,GAAe,CACxB2H,MLkE8B,CAC9BC,cAAe,GACf7J,gBAAiB,CACbnlC,GAAI,GACJ0iB,OAAQ,CACJnJ,OAAQ,GACR01B,aAAc,GACdC,aAAc,MKxEtBC,UAAW,GACXC,SAAU,GACVC,SAAU,IAkCCC,GA7BkC,WAG5C,IAFDzjC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAA4BrG,SAGzC,KAAKe,mBAAQsF,GAA4B7hC,SACrC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,GAEhB,KAAKs2B,mBAAQsF,GAA4BhiC,SACrC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIkjC,MAAOhrC,EAAOI,QACdgrC,UAAWprC,EAAOI,QAAQ6qC,cAC1BI,SAAUrrC,EAAOI,QAAQghC,gBACnBphC,EAAOI,QAAQghC,gBAAgBziB,OAAOusB,aACtC,GACNI,SAAUtrC,EAAOI,QAAQghC,gBACnBphC,EAAOI,QAAQghC,gBAAgBziB,OAAOwsB,aACtC,KAGd,QACI,OAAO3uC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KCrBXu7B,GAAe,CACxBnuB,OAAQ,GACRs2B,WAAY,GACZC,WAAY,GACZ9B,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,IAEbgrC,aAAShkC,EAETikC,mBAAoB,CAChBrI,SAAS,EACTriC,kBAAcyG,IAuIPkkC,GAjIwC,WAGlD,IAFD9jC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAAyBhiC,SAAU,IAAAmzB,EACG70B,EAAOI,QAA9CirC,EADoCxW,EACpCwW,SAAUQ,EAD0BhX,EAC1BgX,YAAaC,EADajX,EACbiX,YACzB53B,EAAe,GAwCrB,OAvCIm3B,GACAA,EAASx4B,QAAQ,SAAAk5B,GACb73B,EAAGrO,KAAHrJ,OAAAkuB,GAAA,EAAAluB,CAAA,GACOuvC,EADP,CAEIj2B,KAAMzX,EAAW2tC,aAIzBH,GACAA,EAAYh5B,QAAQ,SAAAo5B,GAChB/3B,EAAGrO,KAAHrJ,OAAAkuB,GAAA,EAAAluB,CAAA,GACOyvC,EADP,CAEIn2B,KAAMzX,EAAW6tC,gBAKzBJ,GACAA,EAAYj5B,QAAQ,SAAAs5B,GAehBj4B,EAAGrO,KAAHrJ,OAAAkuB,GAAA,EAAAluB,CAAA,GACO2vC,EADP,CAEIr2B,KAAMzX,EAAW4hB,WAItBzjB,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIoN,OAAQhB,IAGhB,KAAKkqB,mBAAQsF,GAA0BhiC,SACnC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI4jC,QAAS1rC,EAAOI,UAGxB,KAAKg+B,mBAAQsF,GAA2BhiC,SAEpC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAGrB,KAAK09B,mBAAQsF,GAA2B7hC,SACpC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAGrB,KAAK09B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAIrB,KAAK09B,mBAAQsF,GAAoCrG,SAC7C,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6jC,mBAAoB,CAChBrI,SAAS,EACTriC,kBAAcyG,KAK1B,KAAK02B,mBAAQsF,GAAoChiC,SAC7C,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6jC,mBAAoB,CAChBrI,SAAS,EACTriC,kBAAcyG,KAK1B,KAAK02B,mBAAQsF,GAAoC7hC,SAC7C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6jC,mBAAoB,CAChBrI,SAAS,EACTriC,aAAcjB,EAAOI,WAKjC,KAAKg+B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6jC,mBAAoB,CAChBrI,SAAS,EACTriC,kBAAcyG,KAK1B,QACI,OAAOlL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KC1JXu7B,GAAe,CACxB+I,gBAAgB,EAChBC,cAAc,EACd93B,IAAK,GACLmtB,sBAAuB,GACvBhU,MAAO,GACP2U,SAAU,GACVsH,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,KA4IF4rC,GAtIwC,WAGlD,IAFDxkC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAA0BrG,SACnC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIskC,gBAAgB,IAGxB,KAAKhO,mBAAQsF,GAA0B7hC,SACnC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIskC,gBAAgB,IAGxB,KAAKhO,mBAAQsF,GAA0BhiC,SAAU,IAAAmzB,EAKzC70B,EAAOI,QAHPy1B,EAFyChB,EAEzCgB,aACA6L,EAHyC7M,EAGzC6M,sBACAphC,EAJyCu0B,EAIzCv0B,YAEEisC,EACFzkC,EAAM45B,sBACNA,IACA6K,EAAGjsC,GAAeohC,GAEtB,IAAMntB,EAAkCzM,EAAMyM,IAI9C,OAHIshB,IACAthB,EAAIjU,GAAeu1B,GAEhBr5B,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIyM,MACAmtB,sBAAuB6K,EACvBH,gBAAgB,IAIxB,KAAKhO,mBAAQsF,GAA0BrG,SACnC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIukC,cAAc,IAGtB,KAAKjO,mBAAQsF,GAA0BhiC,SACnC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIu6B,SAAUriC,EAAOI,QAAQ62B,cAAgBnvB,EAAMu6B,SAC/CgK,cAAc,IAItB,KAAKjO,mBAAQsF,GAA0B7hC,SACvC,KAAKu8B,mBAAQsF,GAAwB7hC,SACjC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIukC,cAAc,IAItB,KAAKjO,mBAAQsF,GAAwBhiC,SAAU,IAAA6oC,EACXvqC,EAAOI,QAA/Bu2B,EADmC4T,EACnC5T,OAAQr2B,EAD2BiqC,EAC3BjqC,YACVotB,EAA6BlxB,OAAAkuB,GAAA,EAAAluB,CAAA,GAC5BsL,EAAM4lB,OAKb,OAHIiJ,GAAUr2B,IACVotB,EAAMptB,GAAeq2B,EAAO,IAEzBn6B,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI4lB,QACA2e,cAAc,IAItB,KAAKjO,mBAAQsF,GAA2B7hC,SACpC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAKrB,KAAK09B,mBAAQsF,GAA2BhiC,SACpC,MAA4B,OAAxB1B,EAAOI,QAAQ9D,KACRE,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI4sB,YAAa10B,EAAOI,QAAQs0B,YAC5BiV,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,oBAKO,OAAxBV,EAAOI,QAAQ9D,KACRE,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI4sB,iBAAahtB,EACbiiC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAIdlE,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI4sB,iBAAahtB,EACbiiC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,oBAKrB,KAAK09B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI4sB,iBAAahtB,EACbiiC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAIrB,QACI,OAAOlE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KCnJlBu7B,GAAe,CACjBmJ,UAAW,GACX5qC,WAAO8F,EACP+kC,iBAAkB,GAElB9C,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,KAuEFgsC,GAjE4D,WAGtE,IAFD5kC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAAmChiC,SAC5C,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI0kC,UAAWxsC,EAAOI,QAAQosC,UAC1B5qC,WAAO8F,IAIf,KAAK02B,mBAAQsF,GAAmC7hC,SAC5C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI0kC,UAAW,GACX5qC,MAAO5B,EAAOI,QAAQ9D,OAG9B,KAAK8hC,mBAAQsF,GAA8BrG,SACvC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,IACNoE,QAAS,MAKrB,KAAK09B,mBAAQsF,GAA8BhiC,SACvC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAKrB,KAAK09B,mBAAQsF,GAA8B7hC,SACvC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,MACNoE,QAAS,aAKrB,KAAK09B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6hC,eAAgB,CACZrtC,KAAM,GACNoE,QAAS,MAKrB,QACI,OAAOlE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KC1ElBu7B,GAAe,CACjBsJ,MAAO,GACP/qC,WAAO8F,EACPhH,aAASgH,EACTklC,aAAc,CACVD,MAAO,GACP/qC,WAAO8F,EACPhH,aAASgH,IAyDFmlC,GAnDoC,WAG9C,IAFD/kC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAAwBhiC,SACjC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6kC,MAAO3sC,EAAOI,QACdwB,WAAO8F,EACPhH,aAASgH,IAIjB,KAAK02B,mBAAQsF,GAAwB7hC,SACjC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI6kC,MAAO,GACP/qC,MAAO5B,EAAOI,QAAQ9D,KACtBoE,QAASV,EAAOI,QAAQM,UAKhC,KAAK09B,mBAAQsF,GAA0BhiC,SACnC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI8kC,aAAc,CACVD,MAAO3sC,EAAOI,QACdwB,WAAO8F,EACPhH,aAASgH,KAKrB,KAAK02B,mBAAQsF,GAA0B7hC,SACnC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI8kC,aAAc,CACVD,MAAO,GACP/qC,MAAO5B,EAAOI,QAAQ9D,KACtBoE,QAASV,EAAOI,QAAQM,WAKpC,QACI,OAAOlE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KC1DlBu7B,GAAe,CACjBvI,SAAU,GACVl5B,WAAO8F,EACPolC,UAAW,GACXC,mBAAoB,GACpBC,mBAAoB,CAAE1wC,KAAM,GAAIoE,QAAS,IACzCusC,mBAAoB,CAAE3wC,KAAM,GAAIoE,QAAS,IACzCwsC,oBAAqB,CAAE5wC,KAAM,GAAIoE,QAAS,KA4L/BysC,GAhL4C,WAGtD,IAFDrlC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAA6BhiC,SACtC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIgzB,SAAU96B,EAAOI,QAAQ06B,UAAY,GACrCl5B,WAAO8F,EACPslC,mBAAoB,CAChB1wC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QAASV,EAAOI,QAAQM,WAKpC,KAAK09B,mBAAQsF,GAA6B7hC,SACtC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIgzB,SAAU,GACVl5B,MAAO5B,EAAOI,QAAQM,QACtBssC,mBAAoB,CAChB1wC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QAASV,EAAOI,QAAQM,WAMpC,KAAK09B,mBAAQwG,GAAkCljC,SAU/C,KAAK08B,mBAAQwG,GAAkC/iC,SAC3C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEImlC,mBAAoB,CAChB3wC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QAASV,EAAOI,QAAQM,WAIpC,KAAK09B,mBAAQwG,IACT,OAAOpoC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEImlC,mBAAoB,CAChB3wC,KAAM,GACNoE,QAAS,MAOrB,KAAK09B,mBAAQqG,GAAoC/iC,SAUjD,KAAK08B,mBAAQqG,GAAoC5iC,SAC7C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIolC,oBAAqB,CACjB5wC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QAASV,EAAOI,QAAQM,WAKpC,KAAK09B,mBAAQqG,IACT,OAAOjoC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIolC,oBAAqB,CACjB5wC,KAAM,GACNoE,QAAS,MAMrB,KAAK09B,mBAAQuG,GAAkCjjC,SAU/C,KAAK08B,mBAAQuG,GAAkC9iC,SAC3C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIklC,mBAAoB,CAChB1wC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QAASV,EAAOI,QAAQM,WAKpC,KAAK09B,mBAAQuG,IACT,OAAOnoC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIklC,mBAAoB,CAChB1wC,KAAM,GACNoE,QAAS,MAKrB,KAAK09B,mBAAQsG,GAA8BhjC,SACvC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIglC,UAAW9sC,EAAOI,QAAQ0sC,YAIlC,KAAK1O,mBAAQsG,GAA8B7iC,SAM3C,KAAKu8B,mBAAQsG,IACT,OAAOloC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIglC,UAAW,KAInB,KAAK1O,mBAAQgP,GAAgD1rC,SACzD,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIilC,mBAAoB/sC,EAAOI,QAAQ06B,UAAY,GAC/Cl5B,MAAO,qBAIf,KAAKw8B,mBAAQgP,GAAgDvrC,SACzD,OAAI7B,EAAOI,QACA5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIilC,mBAAoB,GACpBnrC,MAAO5B,EAAOI,QAAQM,UAGvBlE,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIilC,mBAAoB,GACpBnrC,MAAO,qBAGf,KAAKw8B,mBAAQgP,IACT,OAAO5wC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIilC,mBAAoB,GACpBnrC,WAAO8F,IAGf,QACI,OAAOlL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KCvMlBu7B,GAAe,CACjBzhC,WAAO8F,EACPpL,KAAM,GACNoE,QAAS,GACT2sC,0BAA2B,CAAE/wC,KAAM,GAAIoE,QAAS,KAgDrC4sC,GA1C4D,WAGtE,IAFDxlC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAAyChiC,SAClD,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,WAAO8F,EACP2lC,0BAA2B,CACvB/wC,KAAM0D,EAAOI,QAAQoV,OACrB9U,QAASV,EAAOI,QAAQM,WAKpC,KAAK09B,mBAAQsF,GAAyC7hC,SAClD,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,MAAO5B,EAAOI,QAAQM,QACtB2sC,0BAA2B,CACvB/wC,KAAM0D,EAAOI,QAAQ9D,KACrBoE,QAASV,EAAOI,QAAQM,WAKpC,KAAK09B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,WAAO8F,EACP2lC,0BAA2B,CACvB/wC,KAAM,GACNoE,QAAS,MAIrB,QACI,OAAOlE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KC9ClBu7B,GAAe,CACjBoJ,iBAAkB,GAClBc,8BAA0B7lC,GAkEf8lC,GA7D0D,WAGpE,IAFD1lC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAAiChiC,SAE1C,OADA0N,GAAI,cAAepP,EAAOI,SACnB5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI2kC,iBAAkBzsC,EAAOI,QACzBwB,WAAO8F,IAGf,KAAK02B,mBAAQsF,GAAiCrG,SAC9C,KAAKe,mBAAQsF,GAA8BrG,SACvC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,MAAO,GACP2rC,yBAA0B,KAElC,KAAKnP,mBAAQsF,GAA8BhiC,SACvC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,MAAO,GACP2rC,yBAA0B,YAGlC,KAAKnP,mBAAQsF,GAAiC7hC,SAC1C,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI2kC,iBAAkB,GAClB7qC,MAAO5B,EAAOI,QAAQ9D,OAG9B,KAAK8hC,mBAAQsF,GAA8B7hC,SACvC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,MAAO5B,EAAOI,QAAQM,QACtB6sC,yBAA0B,UAIlC,KAAKnP,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEI2kC,iBAAkB,GAClB7qC,MAAO,KAGf,KAAKw8B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EADP,CAEIlG,MAAO,GACP2rC,yBAA0B,GAC1Bd,iBAAkB,KAE1B,QACI,OAAOjwC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KC1DXu7B,GAA6B,CACtCoK,YAAQ/lC,EACRgmC,YAAQhmC,EACRimC,oBAAgBjmC,EAChBkmC,mBAAelmC,EACf9F,WAAO8F,EACPmmC,gBAAiB,CAAE5sB,OAAQ,KA6ChB2qB,GAxCwC,WAGlD,IAFD9jC,EAEC0I,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFO6yB,GACRrjC,EACCwQ,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACD,OAAQ1H,EAAO8V,MACX,KAAKsoB,mBAAQsF,GAA6BrG,SACtC,OAAO7gC,OAAAkuB,GAAA,EAAAluB,CAAA,GACA6mC,GADP,CAEIyK,aAAc9tC,EAAOI,UAI7B,KAAKg+B,mBAAQsF,GAA6BhiC,SACtC,OAAOlF,OAAAkuB,GAAA,EAAAluB,CAAA,GACAsL,EACA9H,EAAOI,QAFd,CAGIqtC,OAAQnvB,GAAete,EAAOI,QAAQqtC,QACtC7rC,WAAO8F,IAIf,KAAK02B,mBAAQsF,GAA6B7hC,SACtC,OAAOrF,OAAAkuB,GAAA,EAAAluB,CAAA,GACA6mC,GADP,CAEIyK,aAAchmC,EAAMgmC,aACpBD,gBAAiB7tC,EAAOI,QACxBwB,MAAO,8BAIf,KAAKw8B,mBAAQsF,IACT,OAAOlnC,OAAAkuB,GAAA,EAAAluB,CAAA,GACA6mC,IAGX,QACI,OAAO7mC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAKsL,KCjCTimC,GAjBKC,aAAgB,CAChCvK,eACAuG,kBACAK,mBACAK,gBACAI,sBACAS,eACAK,kBACAU,kBACAI,4BACAG,gBACAM,oBACAK,2BACAS,oBACAX,8BC/BEY,GAAUlsC,muCAAYmsC,YACtBC,GAAW,4BAAA99B,OAA+B49B,GAA/B,MAEV,SAASG,GAAsBC,GAClC,IAAKlqB,aACD,OAAO,EAGX,IACI,IAAMmqB,EAAkB32B,KAAKC,UAAUy2B,GAEvC,OADAlqB,aAAaQ,QAAQwpB,GAAaG,IAC3B,EACT,MAAO3sC,GACL,MAAM,IAAIvF,MAAM,+BAIjB,SAASmyC,KACZ,GAAKpqB,aAIL,IACI,IAAMmqB,EAAkBnqB,aAAajC,QAAQisB,IAC7C,GAAuB,MAAnBG,EACA,OAEJ,OAAO32B,KAAKrC,MAAMg5B,GACpB,MAAO3sC,GACL,MAAM,IAAIvF,MAAM,qCCZFyL,YCuMhB2mC,WAzMoB,IAAI/9B,OAAO,cACH,IAAIA,OAAO,iBAwMpB,eAAA2P,EAAA7jB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA1F,EACxB6zB,EACA/tC,EACAguC,GAHwB,IAAA9pB,EAAA2Y,EAAAx8B,EAAA,OAAA+Z,GAAAzU,EAAA0U,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAKlB0J,EAAW,CACbjkB,OAAQ,OACRkkB,QAAS,CACLC,eAAgB,oBAEpBlkB,KAAM+W,KAAKC,UAAU62B,KAGnBlR,EAAQpZ,aAAajC,QAAQ,YAET,gBACtB0C,EAASC,QAAT,wBAAAxU,OAA4CktB,IAhBxBviB,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAoBGyzB,MAAK,GAAAt+B,OACrBq+B,GAA0Br/B,GAAOvN,KADZuO,OACkB3P,GAC1CkkB,GAtBgB,cAoBd7jB,EApBcia,EAAA4zB,KAAA5zB,EAAAG,OAAA,SAwBbpa,EAASm0B,QAxBI,eAAAla,EAAAC,KAAA,GAAAD,EAAAoB,GAAApB,EAAA,SA0BpB7L,GAAG,cAAAkB,OAAe3P,EAAf,eAAAsa,EAAAoB,IA1BiBpB,EAAAG,OAAA,cA2Bb1T,GA3Ba,yBAAAuT,EAAAK,SAAAT,EAAA,kBAAH,gBAAAi0B,EAAA3tB,EAAA4tB,GAAA,OAAA1uB,EAAAe,MAAAha,KAAAoJ,YAAA,IAgCVrQ,GAlJI,SAAAD,GAQO,IAPtBS,EAOsBT,EAPtBS,KACAC,EAMsBV,EANtBU,OACAC,EAKsBX,EALtBW,KACA+0B,EAIsB11B,EAJtB01B,eAEAnB,GAEsBv0B,EAHtBs0B,MAGsBt0B,EAFtBu0B,SAGMua,GADgB9uC,EADtB0iC,mBAEgBzuB,OAAOiQ,aAAajC,QAAQ,aAC5C,GAAI6sB,IAAW,IAAIrqC,MAAOqQ,UAAYg6B,EAElC,OADA5qB,aAAa6qB,WAAW,WACjBC,KAAW9nB,OAAO,SAAC+nB,GACtBA,EAASvtC,MAAM,CACXtF,KAAM,MACNoE,QAAS,sBAKrB,IAkBM0uC,EAAY5yC,OAAAkuB,GAAA,EAAAluB,CAAA,GACXqE,EADW,CAEd0gB,QApBkB,WAClB,GAAM1gB,EAAK0gB,QACP,OAAO1gB,EAAK0gB,QAGhB,IAEI8tB,EAFEC,EAAelrB,aAAajC,QAAQ,aAQ1C,OALqB,OAAjBmtB,GAA2BzuC,EAAK01B,kBAChC8Y,EAAUxuC,EAAK01B,uBACR11B,EAAK01B,iBAGZ8Y,IAEoB,OAAjBC,EAAwBA,EAAe,OAKrCC,GACTC,OAAQ,WAkBN3qB,EAAW,CACbjkB,SACAiV,IAbK,GAAAvF,OACLslB,EAAiBtmB,GAAOrN,iBAAmBqN,GAAOvN,KAD7CuO,OAEN3P,GAYCmkB,QAAS,CAAEC,eAAgB,oBAC3BE,aAAc,OACdpkB,KAAMuuC,GAGJ5R,EAAQpZ,aAAajC,QAAQ,SAC/Bqb,GAAkB,WAAT78B,IAAsB8zB,IAE/B5P,EAASC,QAAT,wBAAAxU,OAA4CktB,IAG5C/I,IACA5P,EAASjkB,OAAS,OAClBikB,EAASC,QAAQ2qB,OAAS,MAC1B5qB,EAASC,QAAQ,+BAAiC,IAClDD,EAASC,QAAQ,iBAAmB,WAEpCD,EAASC,QADW,gBACY,oBAKpC,OAFAD,EAASC,QAAQ,aAAexV,GAAOhN,OAEhC8iB,aAAKP,GAAU/jB,KAClBa,aAAW,SAAAob,GAAmC,IAAhCrc,EAAgCqc,EAAhCrc,QAAS8U,EAAuBuH,EAAvBvH,OAAQxU,EAAe+b,EAAf/b,SACrBY,EAAQ,CACVlB,UACApE,KAAMqT,OAAO6F,GACbyL,OAAQ,IAWZ,OATIjgB,IACI0uC,mBAAQ1uC,GACRY,EAAMqf,OAASjgB,GAEfY,EAAMtF,KAAO0E,EAAS1E,KACtBsF,EAAMlB,QAAUM,EAASN,UAGjC0O,GAAG,kBAAAkB,OAAmB3P,EAAnB,MAA6BiB,GACzBV,aAAWU,KAEtBlG,aAAI,SAAAuE,GAAkB,IAAfe,EAAef,EAAfe,SACH,OAAKA,GACM,CACH1E,KAAM,MACNoE,QAAS,6BC7MdivC,GAAA,CACXvrB,eACAjkB,eFIEyvC,GAAY,WACd,IACI,OAAO1tB,eAAeC,QAAQ,iBAChC,MAAOlI,GACL,OAAO,OA2CT41B,GAAiBC,aAKrB,CACEC,aAAcJ,KAGZK,GAGFC,KAEEC,IArDgBpoC,GAKJ,WACd,IACI,IACIymC,EADEtsB,EAAS2tB,KAOf,OAJIrB,EADAtsB,EACkBC,eAAeC,QAAQF,GAEvBmC,aAAajC,QAAQ,eAMpCvK,KAAKrC,MAAMg5B,GAHP,GAIb,MAAOt0B,GAEL,OADA1K,QAAQH,IAAI,wBACL,IAgCqBo/B,GArDfhyC,OAAAkuB,GAAA,EAAAluB,CAAA,GACdsL,GADc,CAEjBmmC,iBAAiBzxC,OAAAkuB,GAAA,EAAAluB,CAAA,GAAM6mC,OAqDrB8M,GAAc,CAACN,IAqBfO,GAAQC,aAnBE,SAACvoC,EAAY9H,GAgBzB,MAfoB,sBAAhBA,EAAO8V,cACAhO,EAAM27B,mBACN37B,EAAMkiC,sBACNliC,EAAMuiC,uBACNviC,EAAMwkC,sBACNxkC,EAAMyjC,mBACNzjC,EAAM+kC,oBACN/kC,EAAM4iC,oBACN5iC,EAAMgjC,0BACNhjC,EAAMqlC,wBACNrlC,EAAM4kC,gCACN5kC,EAAM8jC,sBACN9jC,EAAM0lC,yBAGVO,GAAYjmC,EAAO9H,IAK1BkwC,GAEAF,GAAiBM,KAAelvB,WAAf,EAAmB+uB,MAGxCC,GAAM9qB,UAAU,YA1DE,SAACxd,GACf,IACI,IAAMma,EAAS2tB,KACTrB,EAAkB32B,KAAKC,UAAU/P,GACnCma,EACAC,eAAe0C,QAAQ3C,EAAQssB,GAE/BnqB,aAAaQ,QAAQ,aAAc2pB,GAEzC,MAAOt0B,GACL1K,QAAQH,IAAI,wBAiDhBi/B,CAAU+B,GAAMG,cAGpBV,GAAeW,IAAIC,IAEJL,iBG9FK5Z,QACW,cAA7Blc,OAAOjB,SAASq3B,UAEe,UAA7Bp2B,OAAOjB,SAASq3B,UAEhBp2B,OAAOjB,SAASq3B,SAASC,MACvB,yECmBSC,mJAjCPxsB,aAAa6qB,WAAW,SACxB7qB,aAAa6qB,WAAW,eACxB7qB,aAAa6qB,WAAW,UACxB7qB,aAAa6qB,WAAW,cACxB7qB,aAAa6qB,WAAW,WACxB7qB,aAAa6qB,WAAW,eACxB7qB,aAAa6qB,WAAW,qDAIxB,IAAMzR,EAAQpZ,aAAajC,QAAQ,SAC7Bub,EAActZ,aAAajC,QAAQ,eACnCF,EAASmC,aAAajC,QAAQ,UACpC,YACcza,IAAV81B,GACU,OAAVA,QACgB91B,IAAhBg2B,GACgB,OAAhBA,QACWh2B,IAAXua,GACW,OAAXA,wCAKJ,IAAM4uB,EAAczsB,aAAajC,QAAQ,eACzC,OACoB,OAAhB0uB,QACgBnpC,IAAhBmpC,GACgB,SAAhBA,0CC9BGC,GCYuB,SAAAxrC,GAUhC,IATF+J,EASE/J,EATF+J,MACAxI,EAQEvB,EARFuB,MACAkqC,EAOEzrC,EAPFyrC,SACAC,EAME1rC,EANF0rC,QACAC,EAKE3rC,EALF2rC,UACAC,EAIE5rC,EAJF4rC,WACAC,EAGE7rC,EAHF6rC,UACAC,EAEE9rC,EAFF8rC,MACAtpB,EACExiB,EADFwiB,MAEMupB,EAAuB,CAAC,gBAAD,kBAAA/gC,OAAoCzJ,IAIjE,OAHMkqC,GAAUM,EAAWxrC,KAAK,2BAC5BsrC,GAAWE,EAAWxrC,KAAK,0BACzBurC,GAAOC,EAAWxrC,KAAK,wBAEzBQ,GAAAC,EAAAC,cAAA,UACIC,UAAW6qC,EAAWjgC,KAAK,KAC3B0E,KAAK,SACLk7B,QAAWD,OAAWrpC,EAAYspC,EAClClpB,MAAOA,GAENmpB,GAAa5qC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,6BAC1B2qC,EAAY,gBAAkB9hC,EAE9B6hC,GAAc7qC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,qDCrCzB8qC,GCqB6B,SAAAC,GAAO,OAC/ClrC,GAAAC,EAAAC,cAAA,OAAKuhB,MAAOypB,EAAQzpB,MAAOthB,UAAU,gBAChC+qC,EAAQj+B,MACLjN,GAAAC,EAAAC,cAAA,SAAOirC,QAAO,KAAAlhC,OAAOihC,EAAQj+B,OACxBi+B,EAAQj+B,KACRi+B,EAAQE,wBACLprC,GAAAC,EAAAC,cAAA,QACIC,UAAU,sBACVwqC,QAASO,EAAQG,cACjBC,UAAWJ,EAAQG,cACnBn/B,KAAK,SACLq/B,SAAU,GALd,MAaXL,EAAQM,cAAkC,KAAlBN,EAAQnrC,OAC7BC,GAAAC,EAAAC,cAAA,QACIC,UAAU,uBACVwqC,QAASO,EAAQO,oBACjBv/B,KAAK,SACLq/B,SAAU,GAEVvrC,GAAAC,EAAAC,cAAA,QAAMgM,KAAK,SAASq/B,SAAU,GAA9B,MAMRvrC,GAAAC,EAAAC,cAAA,SACIC,UAAS,sBAAA8J,OACLihC,EAAQQ,SAAW,+BAAiC,IAExDxsC,SAAUgsC,EAAQS,cAClBl8B,KAAMy7B,EAAQz7B,KACd1P,MAAOmrC,EAAQnrC,MACf6rC,UAAWV,EAAQU,UACnBC,UAAWX,EAAQW,UACnBC,aAAcZ,EAAQY,aACtBzpC,YAAa6oC,EAAQ7oC,YACrBqoC,SAAUQ,EAAQR,SAClBqB,OAAQb,EAAQa,OAChBC,WAAYd,EAAQc,aAEvBd,EAAQ3vC,OAA2B,KAAlB2vC,EAAQ3vC,OACtByE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,uBAAuB+qC,EAAQ3vC,SC9DlD+E,GAAkB,CACpBC,YAAa,CACTC,MAAO,QACPC,gBAAiB,WAGrBC,QAAS,CAAEF,MAAO,UAAWC,gBAAiB,UCbnCwrC,GDuB0B,SAAArrC,GACrC,IAAM8B,EAAY,CACdnC,YAAaK,EAAMsrC,gBACnBC,QAAS,CAAEC,WAAY,CAAC,EAAG,KAG/B,OACIpsC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACmsC,GAAD,CACIhqC,YAAY,aACZqoC,UAAU,EACV3qC,MAC8B,OAA1Ba,EAAMsrC,sBACoB7qC,IAA1BT,EAAMsrC,gBACAtrC,EAAMsrC,gBAAgBI,qBACtB,KAGdtsC,GAAAC,EAAAC,cAACqsC,GAAAtsC,EAAD,CACIb,OAAO,KACPyD,YAAaC,KACb0pC,aAAc5rC,EAAM4rC,aACpB9pC,UAAWA,EACXpC,gBAAiBA,GACjBmsC,WAAY7rC,EAAM8rC,gBAClB3pC,aAAcnC,EAAMmC,qCE1CvB4pC,WAAmD,SAAA1tC,GAG5D,OADEA,EADFg+B,QAIQj9B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uCAAf,2BAML,OClBIyqB,GD6CsB,SAAA/wB,GAAA,IACjC+yC,EADiC/yC,EACjC+yC,QACA/xB,EAFiChhB,EAEjCghB,KACA7R,EAHiCnP,EAGjCmP,MACAi0B,EAJiCpjC,EAIjCojC,QACA4P,EALiChzC,EAKjCgzC,gBACAC,EANiCjzC,EAMjCizC,WACAC,EAPiClzC,EAOjCkzC,SACAC,EARiCnzC,EAQjCmzC,YACAC,EATiCpzC,EASjCozC,kBACA1xC,EAViC1B,EAUjC0B,MACA2xC,EAXiCrzC,EAWjCqzC,aACAC,EAZiCtzC,EAYjCszC,oBACAC,EAbiCvzC,EAajCuzC,eACAC,EAdiCxzC,EAcjCwzC,qBACAltC,EAfiCtG,EAejCsG,UACAmtC,EAhBiCzzC,EAgBjCyzC,gBACAC,EAjBiC1zC,EAiBjC0zC,aACAC,EAlBiC3zC,EAkBjC2zC,iBACAC,EAnBiC5zC,EAmBjC4zC,oBACAC,EApBiC7zC,EAoBjC6zC,SACAC,EArBiC9zC,EAqBjC8zC,WArBiC,OAuBjC3tC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACV6I,GAAShJ,GAAAC,EAAAC,cAAA,UAAK8I,GAEfhJ,GAAAC,EAAAC,cAAC0tC,GAAA,EAAD,CACIztC,UAAS,uBAAA8J,OAAyB9J,GAAwB,IAC1DysC,QAASA,EACT/xB,KAAMA,EACN6yB,SACIA,IAAaN,EACPM,EACC7yB,EAEDgyB,EADA,EAGVc,WAAYA,EACZd,gBAAiBA,EACjBQ,sBAA+C,IAAzBA,EACtBpQ,QAASA,EACT0P,iBAAkBA,GAClBQ,oBAAqBA,EACrBL,WAAYA,EACZC,SAAUA,EACVG,aAAcA,EACdE,eAAgBA,EAChBS,WAAY,SAACpsC,EAAYqsC,EAAcC,GACnC,YAAgB1sC,IAAZysC,EACO,GAEJ,CACHE,WACIF,EAAQG,SACHC,+CAInB3yC,GAASyxC,GACPhtC,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAOgkC,EACPxsC,MAAM,SACNmqC,QAASsC,IAGhBQ,GAAuBF,GACpBvtC,GAAAC,EAAAC,cAACkuC,GAAA,QAAD,CACIjuC,UAAU,6BACV0a,KAAM0yB,EACN9uB,QAAS6uB,EACTe,SAAUb,GAETC,KErHFa,GCYyB,SAAA1tC,GAAK,OACzC2tC,GAAA,qBAAKpuC,UAAU,iBACXouC,GAAA,uBACI9+B,KAAK,WACL7Z,GAAIgL,EAAMhL,GACVmK,MAAOa,EAAMb,MACbyuC,QAAS5tC,EAAM4tC,QACftvC,SAAU0B,EAAM6tC,cAEpBF,GAAA,qBAAK5D,QAAS/pC,EAAM8tC,YAAavuC,UAAU,yBACvCouC,GAAA,uBAAOpD,QAASvqC,EAAMhL,IAClB24C,GAAA,0BAGRA,GAAA,mBAAGpuC,UAAS,IAAA8J,OAAMrJ,EAAM8qC,UAAY,aAAe9qC,EAAMqM,4BCD3D0hC,GAA0B,CAC5BC,UAAW,UAEX1qB,aAAc,EACda,UAAW,EACX3D,MAAO,GAGLytB,GAAqB,SAAA5vC,GAAyB,IAAtB6vC,EAAsB7vC,EAAtB6vC,WAC1B,OAAO9uC,GAAAC,EAAAC,cAAA,OAAA/J,OAAAgzB,OAAA,CAAM1H,MAAOktB,IAA6BG,KCnCtCC,iNDuCXttC,MAAwB,CACpButC,YAAY,iFAGHC,GACTluC,KAAKY,SAAS,CAAEqtC,WAAYC,qCAGvB,IAAArtC,EAAAb,KAAAc,EAeDd,KAAKH,MAbLhL,EAFCiM,EAEDjM,GACAqX,EAHCpL,EAGDoL,KACAlN,EAJC8B,EAID9B,MACA+rC,EALCjqC,EAKDiqC,aACAoD,EANCrtC,EAMDqtC,mBACAC,EAPCttC,EAODstC,QACA9sC,EARCR,EAQDQ,YACA9G,EATCsG,EASDtG,MACAowC,EAVC9pC,EAUD8pC,cACAyD,EAXCvtC,EAWDutC,YACAC,EAZCxtC,EAYDwtC,QACAC,EAbCztC,EAaDytC,WACA5E,EAdC7oC,EAcD6oC,SAEEl6B,EACF2+B,GAAWA,EAAQtjC,KAAK,SAAAylB,GAAM,OAAIA,EAAOvxB,QAAU+rC,IAC/CkD,EAAejuC,KAAKU,MAApButC,WAgER,OACIhvC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACXH,GAAAC,EAAAC,cAAA,SAAOirC,QAASv1C,GAAKqX,GATzBmiC,EAvDJpvC,GAAAC,EAAAC,cAACqvC,GAAA,EAAD,CACIpvC,UAAS,kCAAA8J,OACL+kC,EAAa,2CAA6C,IAE9DQ,gBAAgB,eAChBJ,aAAW,EACXlwC,SAAUgwC,EACVvD,cAAeA,EACf2D,WAAYA,EACZH,QAASA,EACTM,aAAc/E,EACdroC,YAAaqtC,KAAE/7B,IAAInD,EAAS,UAAYnO,EACxCstC,kBAAmB,SAAC5vC,GAAD,oBAAAkK,OACJlK,EAAMsS,kBA2CrBg9B,EAnBJrvC,GAAAC,EAAAC,cAAC0vC,GAAA,EAAD,CACIzvC,UAAS,kCAAA8J,OACL+kC,EAAa,2CAA6C,IAE9DQ,gBAAgB,eAChBzvC,MAAOA,EACPsC,YAAaqtC,KAAE/7B,IAAInD,EAAS,UAAYnO,EACxCypC,aAAcA,EACd5sC,SAAUgwC,EACVC,QAASA,EACTM,aAAc/E,EACd2E,SAAO,EACPQ,mBAAmB,EACnBC,WAAY,CAAEjB,yBA/BlB7uC,GAAAC,EAAAC,cAAC0vC,GAAA,EAAD,CACIzvC,UAAS,kCAAA8J,OACL+kC,EAAa,2CAA6C,IAE9DQ,gBAAgB,eAChBzvC,MAAOA,EACPsC,YAAaqtC,KAAE/7B,IAAInD,EAAS,UAAYnO,EACxCypC,aAAcA,EACd5sC,SAAUgwC,EACVvD,cAAeA,EACfwD,QAASA,EACTY,WAAY,kBAAMnuC,EAAKouC,cAAa,IACpCC,YAAa,kBAAMruC,EAAKouC,cAAa,IACrCP,aAAc/E,KAqCbnvC,GAAmB,KAAVA,GACNyE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,wBAAwB5E,WApG9B4H,KAAMC,WEnC3B2f,GAAUqP,GAAgBxpB,OCFjBsnC,GDasB,SAAAjxC,GAAA,IACjCkxC,EADiClxC,EACjCkxC,KACAC,EAFiCnxC,EAEjCmxC,gBACA1B,EAHiCzvC,EAGjCyvC,YACAvuC,EAJiClB,EAIjCkB,UACA0hB,EALiC5iB,EAKjC4iB,SACAwuB,EANiCpxC,EAMjCoxC,YANiC,OAQjCrwC,GAAAC,EAAAC,cAAA,OACIgM,KAAK,SACLq/B,SAAU,EACVprC,UAAS,gBAAA8J,OAAkBkmC,EAAO,4BAA8B,GAAvD,OAETnwC,GAAAC,EAAAC,cAAA,OACIC,UAAS,0BAAA8J,OACS,KAAd9J,EAAmBA,EAAY,IAEnC+L,KAAK,SACLq/B,SAAU,EACV9pB,MAAO4uB,GAEND,GACGpwC,GAAAC,EAAAC,cAAA,QACIC,UAAU,sCACVwqC,QAAS+D,EACTxiC,KAAK,SACLq/B,SAAU,GAETxoB,GAAQutB,MAAMC,aAGtB1uB,KE5CElhB,gBCeToiB,GAAUqP,GAAgB1pB,YAC1BC,GAAgBypB,GAAgBxpB,OAChC4nC,GAAeztB,GAAQud,MACvBmQ,GAAgB1tB,GAAQ2tB,OAexBC,GAAwChoC,GAAc43B,KCjC7CqQ,GDmCsB,SAAA3xC,GAW/B,IAVFg+B,EAUEh+B,EAVFg+B,QACA4T,EASE5xC,EATF4xC,OACAxpB,EAQEpoB,EARFooB,MACA2U,EAOE/8B,EAPF+8B,SACA8U,EAME7xC,EANF6xC,kBACAC,EAKE9xC,EALF8xC,oBACAC,EAIE/xC,EAJF+xC,yBACAC,EAGEhyC,EAHFgyC,aACAC,EAEEjyC,EAFFiyC,cAwJMC,GAtJJlyC,EADFmyC,gBAuJwB,eAAAnnC,OACF,IAAlB4mC,EAAOpnC,OAAP,4BAAoD,KAGlD4nC,EAAc,wBAAApnC,OAChB4mC,EAAOpnC,OAAS,EAAI,+BAAiC,IADrCQ,OAEjBod,EAAQ,GAAK,kCAEhB,OACIrnB,GAAAC,EAAAC,cAAA,OAAKC,UAAWgxC,GACO,IAAlBN,EAAOpnC,QACJzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAWkxC,GACXR,GACGA,EAAOx7C,IAAI,SAACD,EAAGitC,GAAJ,OACPriC,GAAAC,EAAAC,cAAA,OACIG,IAAKgiC,EACLliC,UAAS,+BAAA8J,OACK,IAAVo4B,GAAewO,EAAOpnC,OAAS,EACzB,sCACA,KAGTonC,EAAOpnC,OAAS,GACbzJ,GAAAC,EAAAC,cAAA,QAAMC,UAAU,0CACXwI,GAAc4E,UAAU80B,IAGjCriC,GAAAC,EAAAC,cAAA,SACIirC,QAAQ,UACRhrC,UAAU,iDAET/K,EACD4K,GAAAC,EAAAC,cAAA,SAAIkyB,GAAgBxpB,OAAO0oC,YAE/BtxC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,sCACXiyB,GAAgBxpB,OAAO2oC,iBAxLnC,WACjB,GAAItU,EACA,OACIj9B,GAAAC,EAAAC,cAAA,KAAGC,UAAU,yBACRwI,GAAcmiC,WAI3B,IAAKzjB,EACD,OACIrnB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,yBAAyBwI,GAAc+7B,QAI5D,IAAM8M,EAA8BnqB,EAAMmqB,SAAW,GAC/CC,EAAcD,EAAQ3lC,KACxB,SAAAf,GAAC,OAAIA,EAAE3Q,WAAas2C,GAAct2C,SAASs3C,cAEzCC,EACFD,GAAeA,EAAYE,WACrBF,EAAYE,WAAW9lC,KACnB,SAAAzW,GAAC,OAAIA,EAAEsX,QAAU8jC,GAAakB,aAAahlC,QAFrDvW,OAAAkuB,GAAA,EAAAluB,CAAA,GAIWiqC,IACTpP,EAAkBwgB,EAAQlgC,OAC5B,SAAAxG,GAAC,OAAIA,EAAE3Q,WAAas2C,GAAct2C,SAASy3C,iBAEzCC,EAAcL,EAAQ3lC,KACxB,SAAAf,GAAC,OAAIA,EAAE3Q,WAAas2C,GAAct2C,SAAS03C,cAEzCC,EAAgBN,EAAQ3lC,KAC1B,SAAAf,GAAC,OAAIA,EAAE3Q,WAAas2C,GAAct2C,SAAS43C,eAGzCC,EAAc,SAAAn4C,EAEhBwoC,EACA4P,GACC,IAHCvlC,EAGD7S,EAHC6S,MAAO4zB,EAGRzmC,EAHQymC,MAAOC,EAGf1mC,EAHe0mC,KAIV2R,EAAgBvB,GAAWpQ,GAC3BzW,EzFgLU,SAACpd,GACzB,OAAIA,IAAUlE,GAAe83B,MAAM6R,UAAUzlC,MAClClE,GAAe83B,MAAM6R,UAAUllC,KAEtCP,IAAUlE,GAAe83B,MAAM8R,KAAK1lC,MAC7BlE,GAAe83B,MAAM8R,KAAKnlC,KAEjCP,IAAUlE,GAAe83B,MAAM+R,IAAI3lC,MAC5BlE,GAAe83B,MAAM+R,IAAIplC,KAEhCP,IAAUlE,GAAe83B,MAAMgS,iBAAiB5lC,MACzClE,GAAe83B,MAAMgS,iBAAiBrlC,KAE1CP,EyF7LiB6lC,CAAoB7lC,GACpC,GAAgB,KAAZod,EAAgB,OAAO,KAC3B,IAAM0oB,EAAiBP,EACjBQ,WAAWnS,GAAOoS,QAAQ,GAC1BpS,EACN,OACItgC,GAAAC,EAAAC,cAAA,KAAGG,IAAKgiC,GACHvY,EADL,KACgB,IACZ9pB,GAAAC,EAAAC,cAAA,YACKsyC,EADL,IACsBN,KAKlC,OACIlyC,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,OACIC,UAAS,6BAAA8J,OACa,IAAlB4mC,EAAOpnC,OAAP,wCAEM,KAGT4d,GAAS6pB,EACNlxC,GAAAC,EAAAC,cAACyyC,GAAA,EAAD,MAEA3yC,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2CACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,oCACR4iB,GAAQ2tB,OAAO1nC,MAAM4pC,KAEzBlB,GACGM,EAAYN,EAAc,GAAG,GACjC1xC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0CAEnBH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,oCACR4iB,GAAQ2tB,OAAO1nC,MAAM6pC,aAE1B7yC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,uCACR4iB,GAAQ2tB,OAAO1nC,MAAM8pC,YAEzBrB,GACGA,EAAYE,YACZF,EAAYE,WACPrgC,OACG,SAAAlc,GAAC,OACGA,EAAEsX,QACF8jC,GAAakB,aAAahlC,QAEjCrX,IAAI,SAACK,EAAG2sC,GAAJ,OAAc2P,EAAYt8C,EAAG2sC,KAC1CriC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,sCACb6wB,EAAgB37B,IACb,SAAC09C,EAAMC,GAAP,OACID,GACAA,EAAKpB,YACLoB,EAAKpB,WAAWt8C,IAAI,SAACK,EAAGu9C,GAAJ,OAChBjB,EAAYt8C,EAAGs9C,EAAOC,OAGjCpB,GACGA,EAAYF,YACZE,EAAYF,WAAWt8C,IAAI,SAACK,EAAG2sC,GAAJ,OACvB2P,EAAYt8C,EAAG2sC,KAEvBriC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,sCACdH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,uCACR4iB,GAAQ2tB,OAAO1nC,MAAMkqC,eAEzBpB,GACGA,EAAcH,YACdG,EAAcH,WAAWt8C,IAAI,SAACK,EAAG2sC,GAAJ,OACzB2P,EAAYt8C,EAAG2sC,KAEtByO,GACGE,GACAA,EAAyBvnC,OAAS,GAC9BzJ,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yCACfH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,oCACR4iB,GAAQ2tB,OAAO1nC,MAAMsoB,QAEzBwf,EAAkBz7C,IAAI,SAACK,EAAG2sC,GACvB,OACI2O,GACAA,EAAyBmC,SACrBz9C,EAAEgX,QAENhX,EAAEg7C,OAEKsB,EACHt8C,EAAEg7C,OACFrO,GAGD,QAIvBriC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yCACdknB,EAAMgK,SAAWhK,EAAMgK,QAAQhD,aAC5BruB,GAAAC,EAAAC,cAAA,SAAImnB,EAAMgK,QAAQhD,gBAmDrC+kB,GAEDpzC,GAAAC,EAAAC,cAAA,OACIC,UAAS,wBAAA8J,OACa,IAAlB4mC,EAAOpnC,OAAP,mCAEM,KAGTuyB,GAAYA,EAASvyB,OAAS,GAC3BzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wCACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+CACR4iB,GAAQ2tB,OAAO1nC,MAAMqqC,UAGzBrX,EAAS3mC,IAAI,SAACg8B,EAASgR,GACpB,OAAIhR,EAAQkB,SAIRvyB,GAAAC,EAAAC,cAACozC,GAAD,CACIjzC,IAAKgiC,EACLzsC,GAAE,eAAAqU,OAAiBo4B,GACnBp1B,KACI8V,GAAQ2tB,OAAO1nC,MAAMuqC,oBAEzBxzC,MAAOsxB,EAAQiK,YACfkT,QAASuC,EAAoBoC,SACzB9hB,EAAQiK,aAEZmT,YAAa,SAAC/4C,GAGV,IAAI89C,EAA4BniB,EAE5BmiB,EADA99C,EAAE+9C,cAAcjF,QACVnd,EAEA2K,EAASnwB,KAAK,SAAAzW,GAAC,OAAIA,EAAEm9B,UAG/B0e,EAAa,UAAW,CACpB5f,QAASmiB,EACTt3B,KAAMzkB,EAAiBi6B,mBExRpDgiB,GCKV,SAAAz0C,GAAA,IAAGuyC,EAAHvyC,EAAGuyC,QAAH,OACDxxC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACVqxC,GACGA,EAAQn8C,IAAI,SAAAwE,EAAmBwoC,GAAnB,IAAGr5B,EAAHnP,EAAGmP,MAAOjJ,EAAVlG,EAAUkG,MAAV,OACRC,GAAAC,EAAAC,cAAA,QAAMG,IAAKgiC,GACPriC,GAAAC,EAAAC,cAAA,SAAI8I,EAAJ,MACAhJ,GAAAC,EAAAC,cAAA,SAAIH,6BCPlBgjB,WAAU4wB,GAAcjrC,aCJfkrC,GDasB,SAAA30C,GAK/B,IAJF40C,EAIE50C,EAJF40C,QACAC,EAGE70C,EAHF60C,OACAC,EAEE90C,EAFF80C,SACA70C,EACED,EADFC,SAEA80C,qBAAU,WACN90C,EAAS40C,EAAOD,KACjB,CAACC,IAEJ,IAAMG,EAAoB,SAACjrC,EAAekrC,GACtC,IAAM7yB,EAASyyB,EAAOD,GAASK,GACzBzyB,EAAQ,CACVJ,OAAM,GAAApX,OAA4B,KAArB8pC,EAAW1yB,GAAiB0yB,EAAnC,MAEV,OACI/zC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,YACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBAAgBshB,MAAOA,IACtCzhB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mBACXH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,0BAA0B6I,GAC1ChJ,GAAAC,EAAAC,cAAA,QAAMC,UAAU,0BAA0BkhB,EAA1C,cAqBhB,OACIrhB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACV8zC,EAAkBlxB,GAAQoxB,KAAKC,MAAMC,OAAQ,GAC7CJ,EAAkBlxB,GAAQoxB,KAAKC,MAAME,OAAQ,IAjBlDt0C,GAAAC,EAAAC,cAACq0C,GAAAt0C,EAAD,CACIu0C,YAAa,iBAAM,IACnBT,SAAUD,EAAOrqC,OAAS,EAC1BgrC,SAAU,EACVC,KAAM,EACN30C,MAAO8zC,EACP30C,SAAU,SAACa,GACPb,EAAS40C,EAAO/zC,SE9C9BgjB,GAAUqP,GAAgBxpB,OCFjB+rC,GDayB,SAAA11C,GAO3B,IANT+J,EAMS/J,EANT+J,MACAs3B,EAKSrhC,EALTqhC,MACAjS,EAISpvB,EAJTovB,YACAumB,EAGS31C,EAHT21C,OACA3mC,EAEShP,EAFTgP,YACA08B,EACS1rC,EADT0rC,QAEIxqC,EAAY,kBAOhB,OANI8N,IACA9N,GAAa,iCAEby0C,IACAz0C,GAAa,4BAGbH,GAAAC,EAAAC,cAAA,OAAKC,UAAWA,EAAWwqC,QAASA,EAASz+B,KAAK,SAASq/B,SAAU,GAChEviC,GAAShJ,GAAAC,EAAAC,cAAA,KAAGC,UAAU,0BAA0B6I,GAChDiF,GACGjO,GAAAC,EAAAC,cAAA,KAAGC,UAAU,8BACRiyB,GAAgB1pB,YAAYmsC,WAGrC70C,GAAAC,EAAAC,cAAA,SAAOirC,QAAQ,UAAUhrC,UAAU,0BAC9BmgC,EACDtgC,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQuuB,YAEhBtxC,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQwuB,aACdljB,GACGruB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACVkuB,GAGRumB,GAAU50C,GAAAC,EAAAC,cAAA,KAAGC,UAAU,gBE9CrB20C,GCSyB,SAAAl0C,GAAK,OACzCZ,GAAAC,EAAAC,cAAA,OACIC,UAAS,mBAAA8J,OAAqBrJ,EAAMytB,aACV,KAAtBztB,EAAMytB,aACN,kCAEJruB,GAAAC,EAAAC,cAAA,SACIuP,KAAK,WACL7Z,GAAIgL,EAAMhL,GACV44C,QAAS5tC,EAAM4tC,QACftvC,SAAU0B,EAAM6tC,YAChB1uC,MAAOa,EAAMqM,MAAQ,KAGzBjN,GAAAC,EAAAC,cAAA,SACIirC,QAASvqC,EAAMhL,GACfuK,UAAWS,EAAMm0C,SAAW,yBAA2B,GACvDpK,QAAS/pC,EAAM6tC,aAEd7tC,EAAMm0C,UAAY/0C,GAAAC,EAAAC,cAAA,OAAKgY,IAAKtX,EAAMm0C,SAAU50C,UAAU,GAAG60C,IAAI,KAC9Dh1C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,yCACRS,EAAMqM,MAEVrM,EAAMytB,aAAqC,KAAtBztB,EAAMytB,aACxBruB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,gDACRS,EAAMytB,iBCnChB4mB,GCSsB,SAAAh2C,GAAA,IACjCgO,EADiChO,EACjCgO,KACAlN,EAFiCd,EAEjCc,MACAnK,EAHiCqJ,EAGjCrJ,GACA44C,EAJiCvvC,EAIjCuvC,QACAC,EALiCxvC,EAKjCwvC,YACApgB,EANiCpvB,EAMjCovB,YANiC,OAQjCruB,GAAAC,EAAAC,cAAA,SAAOirC,QAASv1C,EAAIuK,UAAU,gBAC1BH,GAAAC,EAAAC,cAAA,SACIuP,KAAK,WACL7Z,GAAIA,EACJ44C,QAASA,EACTtvC,SAAUuvC,EACV1uC,MAAOA,IAEXC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,4BACf8M,EACAohB,GACGruB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,6BAA6BkuB,yBCxBhDtL,GAAUqP,GAAgB8iB,SAASC,QAsB1BC,gBAd8B,SAAAn2C,GAAA,IAAGo2C,EAAHp2C,EAAGo2C,QAASC,EAAZr2C,EAAYq2C,aAAZ,OACzCt1C,GAAAC,EAAAC,cAAA,OACIC,UAAU,mBACVwqC,QAAS,WACLJ,GAAYgL,SACZD,IACAD,EAAQ71C,KAAK,OAGjBQ,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,qBAAsB2xC,IAAI,sBAC9Ch1C,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQwyB,WCjBdxyB,GAAUqP,GAAgB8iB,SAASC,QCL1BA,GDkBkB,SAAAl2C,GAS3B,IARFu2C,EAQEv2C,EARFu2C,OACA7lC,EAOE1Q,EAPF0Q,UACAC,EAME3Q,EANF2Q,SACA5V,EAKEiF,EALFjF,YACAs7C,EAIEr2C,EAJFq2C,aACAG,EAGEx2C,EAHFw2C,QACAne,EAEEr4B,EAFFq4B,OACA1b,EACE3c,EADF2c,OA8BA,OACI5b,GAAAC,EAAAC,cAAA,OAAKC,UAAU,YACXH,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,qBACpBrD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACXH,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,aAAc2xC,IAAI,cAEtCh1C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uCAjCnBs1C,EAEIz1C,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,aACR4iB,GAAQ2yB,SACT11C,GAAAC,EAAAC,cAAA,YAAO0b,IAEX5b,GAAAC,EAAAC,cAAA,KAAGC,UAAU,aACR4iB,GAAQ4yB,WACT31C,GAAAC,EAAAC,cAAA,gBAAQo3B,KAOpBt3B,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,SACKyP,EADL,IACiBC,GAEjB5P,GAAAC,EAAAC,cAAA,SACK6iB,GAAQ6yB,UACR57C,IAaDgG,GAAAC,EAAAC,cAAC21C,GAAD,CAAcP,aAAcA,MAIpCt1C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,8BACTq1C,EAAOngD,IAAI,SAACygD,EAAmBzT,GAC5B,OAAMyT,EAAMC,OAAe,KAEvB/1C,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,CAAgB3B,IAAKgiC,GACjBriC,GAAAC,EAAAC,cAAA,MACIC,UAAU,oCACVE,IAAKgiC,GAEJyT,EAAM9sC,OAEXhJ,GAAAC,EAAAC,cAAA,UACK41C,EAAME,MAAM3gD,IACT,SACI4gD,EACAC,GAFJ,OAIIl2C,GAAAC,EAAAC,cAAA,MAAIG,IAAK61C,GACHD,EAASjtC,QACP+Z,GAAQyyB,OAAOlmC,QAAQ0mC,MAClBG,IAAIntC,OACThJ,GAAAC,EAAAC,cAAA,KACIk2C,KAAMH,EAAS37C,KACfqF,OAAO,SACP02C,IAAI,uBAEHP,EAAM9sC,QAGXhJ,GAAAC,EAAAC,cAACo2C,GAAA,EAAD,CACIC,GACIT,EAAMx7C,KACN27C,EAAS37C,MAGZ27C,EAASjtC,kBEnGrDwtC,GAOR,SAAAv3C,GAAsE,IAAnEw3C,EAAmEx3C,EAAnEw3C,OAAQnnC,EAA2DrQ,EAA3DqQ,QAASgO,EAAkDre,EAAlDqe,aAAcgO,EAAoCrsB,EAApCqsB,QAASvf,EAA2B9M,EAA3B8M,eAAgB2qC,EAAWz3C,EAAXy3C,KACtDhnC,EAAmBJ,EAAQI,iBAE7BtP,EAAI,GAAA6J,OAAMyF,EAAiBC,UAAvB,KAAA1F,OAAoCyF,EAAiBE,UAY7D,MAXkC,KAA9BF,EAAiBE,SACjBxP,EAAI,GAAA6J,OAAMyF,EAAiBC,WAEvBD,EAAiBtB,WACjBhO,EAAI,GAAA6J,OAAMkE,GAAiBuB,EAAiBtB,UAAxC,KAAAnE,OAAqD7J,IAG7Dkd,IAAiBjnB,EAAcsgD,eAC/Bv2C,EAAOkP,EAAQW,aAIfjQ,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,OAAKgY,IAAKu+B,EAAQzB,IAAI,eACtBh1C,GAAAC,EAAAC,cAAA,KAAGC,UAAU,sBAAsBC,GAClCkrB,GACGtrB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,yBAAb,GAAA8J,OACQqhB,EAAQM,QAAU,GAD1B,KAAA3hB,OACgCqhB,EAAQO,QAChC,GAFR,KAAA5hB,OAEcqhB,EAAQQ,YAAc,GAFpC,KAAA7hB,OAE0CqhB,EAAQS,UAC1C,KAGZ/rB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+BAAb,SAA+C4L,GAC9C2qC,GAAQ12C,GAAAC,EAAAC,cAAA,eCvCN02C,iNDyDXn1C,MAAQ,CACJutC,YAAY,KAGhB6H,SAAW,WAAM,IACL7H,EAAenuC,EAAKY,MAApButC,WACRnuC,EAAKc,SAAS,CAAEqtC,YAAaA,OAGjC8H,WAAa,SAAC/qC,IAEVikC,EADyBnvC,EAAKD,MAAtBovC,cACKjkC,GACblL,EAAKc,SAAS,CACVqtC,YAAY,+EAIXv2B,GACL,MAAe,OAAXA,EAAwBpV,GAAU,eAC/BA,GAAU,yDAGD,IAAAxB,EAMZd,KAAKH,MAJL0O,EAFYzN,EAEZyN,QACAgO,EAHYzb,EAGZyb,aACAvB,EAJYla,EAIZka,UACAgoB,EALYliC,EAKZkiC,gBAEEzY,EAAUyY,EAAgB3C,cAAc9V,QAC9C,OACItrB,GAAAC,EAAAC,cAAC62C,GAAD,CACIN,OAAQ11C,KAAKi2C,SAASjT,EAAgBtrB,QACtCnJ,QAASA,EACTgO,aAAcA,EACdgO,QAASA,EACTvf,eAAgBg4B,EAAgBh4B,eAChC2qC,UAAoBr1C,IAAd0a,GAA2BA,EAAUtS,OAAS,qCAKvD,IAAA7H,EAAAb,KACGiuC,EAAejuC,KAAKU,MAApButC,WADHiI,EAODl2C,KAAKH,MAJLmb,EAHCk7B,EAGDl7B,UACAzM,EAJC2nC,EAID3nC,QACAgO,EALC25B,EAKD35B,aACAymB,EANCkT,EAMDlT,gBAEJ,OACI/jC,GAAAC,EAAAC,cAAA,OACIgM,KAAK,SACL/L,UAAS,UAAA8J,OACL+kC,GAAcjzB,EAAUtS,OAAS,EAAI,eAAiB,IAE1DkhC,QAAS5pC,KAAK81C,SACdtL,SAAU,GAEVvrC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBAAgBY,KAAKm2C,qBACpCl3C,GAAAC,EAAAC,cAAA,OACIC,UAAU,gBACVshB,MAAO,CACHqI,QACIklB,GAAcjzB,EAAUtS,OAAS,EAC3B,QACA,SAGbsS,GACGA,EAAU1mB,IAAI,SAACyW,EAAqBu2B,GAChC,GACIv2B,EAASC,iBACTg4B,EAAgBh4B,eAEhB,OAAO,EAGX,IAAMuf,EAAUxf,EAASs1B,cAAc9V,QACjC7S,EAAS3M,EAAS2M,OAClB1M,EAAiBD,EAASC,eAChC,OACI/L,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,CAAgB3B,IAAKgiC,GACjBriC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,wBAChBH,GAAAC,EAAAC,cAAA,OACIG,IAAKgiC,EACLn2B,KAAK,SACLy+B,QAAS,kBACL/oC,EAAKk1C,WAAW/qC,IAEpB5L,UAAU,sBACVorC,SAAU,GAEVvrC,GAAAC,EAAAC,cAAC62C,GAAD,CACIN,OAAQ70C,EAAKo1C,SAASv+B,GACtBnJ,QAASA,EACTgO,aAAcA,EACdgO,QAASA,EACTvf,eAAgBA,EAChB2qC,MAAM,iBApG7BvzC,KAAMC,WElDrB2f,GAAUqP,GAAgBxpB,OCNjBuuC,GDwBgB,SAAAl4C,GAYzB,IAXFkxC,EAWElxC,EAXFkxC,KAWEiH,EAAAn4C,EAVFwC,aAUE,IAAA21C,EAVM,EAUNA,EAAAC,EAAAp4C,EATFmxC,uBASE,IAAAiH,KARFruC,EAQE/J,EARF+J,MACAqlB,EAOEpvB,EAPFovB,YACAipB,EAMEr4C,EANFq4C,aACAC,EAKEt4C,EALFs4C,eACA11B,EAIE5iB,EAJF4iB,SACA21B,EAGEv4C,EAHFu4C,kBACAC,EAEEx4C,EAFFw4C,iBACAC,EACEz4C,EADFy4C,SAuCA,IAAKvH,EACD,OAAO,KAyBX,OACInwC,GAAAC,EAAAC,cAAA,OACIgM,KAAK,SACLq/B,SAAU,EACVprC,UAAS,SAAA8J,OAAWkmC,EAAO,qBAAuB,IAClDxF,QAAS2M,EACThM,UAAWgM,GAEXt3C,GAAAC,EAAAC,cAAA,OACIgM,KAAK,SACLq/B,SAAU,EACVprC,UAAS,kBAAA8J,OACK,IAAVxI,EAAc,wBAA0B,IAE5CkpC,QAAS,SAAAj1C,GACLA,EAAEiiD,oBAGLvH,GACGpwC,GAAAC,EAAAC,cAAA,QACIC,UAAU,+BACVwqC,QAAS2M,EACTprC,KAAK,SACLq/B,SAAU,GAETxoB,GAAQutB,MAAMC,cAGX,IAAV9uC,GAAei2C,IACb13C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,0BACf2xC,IAAI,iBAKfhsC,GAAmB,KAAVA,GACNhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBAEXH,GAAAC,EAAAC,cAAA,UAAK8I,IAIbhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BA3DK,WAC5B,OAAIq3C,G1G2iCIvlC,E0G1iCOulC,G1G2iCfrE,SAAS,OAASlhC,EAAIkhC,SAAS,SAAWlhC,EAAIkhC,SAAS,Q0GziC3CnzC,GAAAC,EAAAC,cAAA,KACIuhB,MAAOg2B,EACPG,wBAAyB,CAAEC,OAAQL,KAIxCx3C,GAAAC,EAAAC,cAAA,SAAIs3C,GAjBQ,SAACvlC,GAAD,OACvBA,EAAIG,MAAM,MAAM/c,IAAI,SAACob,EAAMlR,GAAP,OAChBS,GAAAC,EAAAC,cAAA,KAAGuhB,MAAOg2B,EAAkBp3C,IAAKd,GAC5BkR,KAgBFqnC,CAAmBzpB,G1GgiCnB,IAACpc,E0Gh/BK8lC,IA1GE,WACf,OAAQt2C,GACJ,KAAK,EACD,OACIzB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQutB,MAAM0H,aACrBrN,QAAS2M,EACT92C,MAAO,OACPoqC,WAAS,IAEb5qC,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQutB,MAAM2H,eACrBtN,QAAS4M,EACT/2C,MAAO,YAIvB,KAAK,EACD,OACIR,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,aAAb,oCAGAH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,aAAb,mBAIZ,KAAK,EAEL,QACI,OAAO,GA8EN+3C,GACAr2B,KElJXkB,GAAUqP,GAAgB5F,OCHjBA,GDKc,SAAAvtB,GACzB,OADkC9I,OAAAgiD,GAAA,EAAAhiD,CAAA8I,GAE9Be,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACV4iB,GAAQq1B,SAAS/iD,IAAI,SAACK,EAAG2sC,GACtB,IAAM8N,EAAO9N,EAAQtf,GAAQq1B,SAAS3uC,OAAS,EAC/C,OACIzJ,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,CAAgB3B,IAAKgiC,GACjBriC,GAAAC,EAAAC,cAAA,KACIk2C,KAAM1gD,EAAE2iD,KACR14C,OAAO,SACP02C,IAAI,uBAEH3gD,EAAEuX,MAENkjC,GAAQnwC,GAAAC,EAAAC,cAAA,kBAMzBF,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWC,SACzB54C,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,eAAgB2xC,IAAI,iBAE5Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWE,UACzB74C,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,gBAAiB2xC,IAAI,kBAE7Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWtyB,SACzBrmB,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,eAAgB2xC,IAAI,iBAE5Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWlyB,QACzBzmB,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,cAAe2xC,IAAI,gBAE3Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWG,QACzB94C,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,cAAe2xC,IAAI,iBAG/Ch1C,GAAAC,EAAAC,cAAA,KAAGC,UAAU,uBAAb,IAAqC4iB,GAAQ21B,iBAA7C,OE7DN31B,GAAUqP,GAAgBumB,YAAYtT,QCF7BuT,GDUkB,SAAA35C,GAAyB,IAAtB45C,EAAsB55C,EAAtB45C,gBAChC,OACI74C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4BACV04C,EACG74C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kCACXH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ/Z,OACZhJ,GAAAC,EAAAC,cAAA,aAAA+J,OAAQ4uC,EAAR,aAGJ74C,GAAAC,EAAAC,cAAA,KAAGC,UAAU,mCACR4iB,GAAQxnB,UErBlBu9C,GCwByB,SAAA75C,GAUlC,IATF+J,EASE/J,EATF+J,MACAqlB,EAQEpvB,EARFovB,YACA0qB,EAOE95C,EAPF85C,OACA/L,EAME/tC,EANF+tC,YACAgM,EAKE/5C,EALF+5C,kBACA/L,EAIEhuC,EAJFguC,kBACA1xC,EAGE0D,EAHF1D,MACA09C,EAEEh6C,EAFFg6C,YACAC,EACEj6C,EADFi6C,WAyCA,OACIl5C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mBACXH,GAAAC,EAAAC,cAAA,UAAK8I,GACJzN,EACGyE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,0BAA0B5E,GAEvCyE,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,SAAImuB,GACH0qB,EAAO1jD,IAAI,SAAC8jD,EAAkB9W,GAC3B,OAhDC,SAAC8W,EAAkB9W,GACpC,IAAM+W,EAAgB,kBAClBp5C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAS,GAAA8J,OAAqB,KAAhBkvC,EAAMzsC,OAAgB,eACvC1M,GAAAC,EAAAC,cAAA,KAAGC,UAAU,cAAcwqC,QAASsO,GAC/BC,KAIb,OACIl5C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BAA0BE,IAAKgiC,GAC1CriC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAS,GAAA8J,OAAqB,KAAhBkvC,EAAMzsC,OAAgB,cAClCysC,EAAMzsC,OAGX1M,GAAAC,EAAAC,cAAA,SACIhB,SAAU,SAACxJ,GAAD,OACNsjD,EAAkBtjD,EAAG2sC,IAEzB5yB,KAAK,OACL1P,MAAOo5C,EAAMp5C,MACb6rC,UAAWuN,EAAMtN,UACjBA,UAAWsN,EAAMtN,UACjBxpC,YAAa82C,EAAM92C,eAG1B82C,EAAM59C,OACHyE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,kCACRg5C,EAAM59C,OAIdw9C,EAAOtvC,OAAS,GAAe,IAAV44B,EAAc+W,IAAkB,KACnC,IAAlBL,EAAOtvC,QAAgB2vC,KAcTC,CAAaF,EAAO9W,KAE/BriC,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAOgkC,EACPxsC,MAAM,SACNmqC,QAASsC,4BCrF3BlqB,GAAUqP,GAAgBknB,gBCHjBC,GDWW,SAAC34C,GACvB,OACIZ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQy2B,YAAYxwC,OAEzBhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAACu5C,GAAAx5C,EAAD,CACIy5C,MAAO94C,EAAM84C,MAAQ94C,EAAM84C,MAAQ,IACnCC,OAAQ,IACRC,SAAUh5C,EAAMg5C,SAChBC,YAAa,EACbC,YAAY,UACZC,iBAAkB,EAClBC,cAAe,EACfC,mBAAoB,EACpBC,mBAAmB,WAEnBl6C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,OAAKgY,IAAKtX,EAAMu5C,QAASnF,IAAI,aAC7Bh1C,GAAAC,EAAAC,cAAA,cACKU,EAAMg5C,SACP55C,GAAAC,EAAAC,cAAA,qBAKhBF,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,4CAChBH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQy2B,YAAYnyB,OACxBrnB,GAAAC,EAAAC,cAAA,QAAMC,UAAU,4CAChBH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQy2B,YAAY3G,iBEjCtC9vB,GAAUqP,GAAgB1pB,YCTjB0xC,GDkBwB,SAAAn7C,GAAA,IACnCkwC,EADmClwC,EACnCkwC,QACAkL,EAFmCp7C,EAEnCo7C,eACApJ,EAHmChyC,EAGnCgyC,aACAqJ,EAJmCr7C,EAInCq7C,SAJmC,OAMnCt6C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,cAAM6iB,GAAQuO,OAAOtoB,OACrBhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACVgvC,GACGA,EAAQ95C,IAAI,SAACi8B,EAAQ+Q,GAAT,OACRriC,GAAAC,EAAAC,cAAA,OAAKG,IAAKgiC,EAAOliC,UAAU,iCACvBH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yCACXH,GAAAC,EAAAC,cAACozC,GAAD,CACI19C,GAAE,aAAAqU,OAAeqwC,EAAf,MAAArwC,OAA4Bo4B,GAC9Bp1B,KAAMqkB,EAAO5kB,MACb3M,MAAOuxB,EAAO5kB,MACd8hC,QAAS6L,EAAelH,SAAS7hB,EAAO5kB,OACxC+hC,YAAa,SAAC/4C,GACVu7C,EAAa,SAAU,CACnB3f,OAAQ,CACJ5kB,MAAO4kB,EAAO5kB,MACdmlB,OAAQn8B,EAAE+9C,cAAcjF,SAE5BtyB,KAAMzkB,EAAiBk6B,aAInC3xB,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,iBACf2xC,IAAI,aAGX1jB,EAAOjD,aACJruB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,8CACRmxB,EAAOjD,4BElDxCksB,SAAMC,QAAQC,wBAA0B,SACpCC,EACArtC,EACAC,EACA8T,EACAC,EACAs4B,GAEA,GAAe,IAAXt4B,EAAJ,CAKA,GAFAq5B,EAAIC,YAEAt5B,EAAS,EAAG,CAEZ,IAAMu5B,EAAOvtC,EACPwtC,EAAOxtC,EAAI+T,EACX05B,EAAOxtC,EAAI+T,EACX05B,EAAOztC,EAAI+T,EACX25B,EAAO3tC,EACP4tC,EAAO5tC,EAAI+T,EACX85B,EAAO5tC,EACP6tC,EAAO7tC,EACbotC,EAAIU,OAAOJ,EAAOrB,EAAQuB,GAC1BR,EAAIW,OAAOJ,EAAOtB,EAAQwB,GAE1BT,EAAIY,iBAAiBL,EAAME,EAAMF,EAAME,EAAOxB,GAC9Ce,EAAIW,OAAOR,EAAME,EAAOpB,GAExBe,EAAIW,OAAOR,EAAME,EAAMF,EAAOlB,EAAQoB,GACtCL,EAAIW,OAAOT,EAAOjB,EAAQmB,GAE1BJ,EAAIW,OAAOT,EAAME,EAAMF,EAAME,EAAOnB,GACpCe,EAAIW,OAAOL,EAAME,EAAOvB,GAExBe,EAAIY,iBAAiBN,EAAME,EAAMF,EAAOrB,EAAQuB,QAEhDR,EAAIU,OAAO/tC,EAAIssC,EAAQrsC,GAEvBotC,EAAIW,OAAOhuC,EAAI+T,EAAQu4B,EAAQrsC,GAC/BotC,EAAIY,iBAAiBjuC,EAAI+T,EAAO9T,EAAGD,EAAI+T,EAAO9T,EAAIqsC,GAElDe,EAAIW,OAAOhuC,EAAI+T,EAAO9T,EAAI+T,GAE1Bq5B,EAAIW,OAAOhuC,EAAGC,EAAI+T,GAElBq5B,EAAIW,OAAOhuC,EAAGC,EAAIqsC,GAClBe,EAAIY,iBAAiBjuC,EAAGC,EAAGD,EAAIssC,EAAQrsC,GAG3CotC,EAAIa,cAGPhB,SAAciB,SAASC,oBAAuBlB,SAAciB,SAASE,UAAUC,OAC5E,CACIC,KADJ,WAEQ,IAEI15B,EACAC,EACA05B,EACA55B,EACA65B,EACAC,EACAC,EAREtB,EAAM35C,KAAKk7C,OAAOvB,IAClBwB,EAAKn7C,KAAKo7C,MAQZC,EAAcF,EAAGE,YA0BrB,GAxBKF,EAAGG,YAaJn6B,EAAOg6B,EAAGI,KACVn6B,EAAQ+5B,EAAG7uC,EACXwuC,EAAMK,EAAG5uC,EAAI4uC,EAAG76B,OAAS,EACzBY,EAASi6B,EAAG5uC,EAAI4uC,EAAG76B,OAAS,EAC5By6B,EAAQ35B,EAAQD,EAAO,GAAK,EAC5B65B,EAAQ,EACRC,EAAgBE,EAAGF,eAAiB,SAjBpC95B,EAAOg6B,EAAG7uC,EAAI6uC,EAAG96B,MAAQ,EACzBe,EAAQ+5B,EAAG7uC,EAAI6uC,EAAG96B,MAAQ,EAC1By6B,EAAMK,EAAG5uC,EAITwuC,EAAQ,EACRC,GAFA95B,EAASi6B,EAAGI,MAEKT,EAAM,GAAK,EAC5BG,EAAgBE,EAAGF,eAAiB,UAcpCI,EAAa,CAEb,IAAMG,EAAUtjC,KAAKujC,IACjBvjC,KAAKwjC,IAAIv6B,EAAOC,GAChBlJ,KAAKwjC,IAAIZ,EAAM55B,IAGby6B,GADNN,EAAcA,EAAcG,EAAUA,EAAUH,GACf,EAE3BxyB,EACF1H,GAA0B,SAAlB85B,EAA2BU,EAAaZ,EAAQ,GACtDhzB,EACF3G,GACmB,UAAlB65B,GAA6BU,EAAaZ,EAAQ,GACjDjyB,EACFgyB,GAAyB,QAAlBG,EAA0BU,EAAaX,EAAQ,GACpDt1B,EACFxE,GACmB,WAAlB+5B,GAA8BU,EAAaX,EAAQ,GAEpDnyB,IAAed,IACf+yB,EAAMhyB,EACN5H,EAASwE,GAGToD,IAAcpD,IACdvE,EAAO0H,EACPzH,EAAQ2G,GAKhB,IAAM6zB,EAAW1jC,KAAKwjC,IAAIv6B,EAAOC,GAM3By6B,EAAUf,EAIVgB,GADNhB,EAAMe,EARY,EAEdD,GAA6C,QAArBT,EAAGF,cAA0B,EAAI,KAOrCY,EAExBlC,EAAIC,YACJD,EAAIoC,UAAYZ,EAAGz7C,gBACnBi6C,EAAIqC,YAAcb,EAAGc,YACrBtC,EAAIuC,UAAYb,EAGhB7B,SAAMC,QAAQC,wBACVC,EACAx4B,EACA25B,EAAMgB,EAAY,EAClBF,EACA16B,EAAS26B,EACTC,GAGJnC,EAAIwC,OACAd,GACA1B,EAAIyC,SAIRtB,EAAMe,KAKlBrC,SAAM6C,SAASC,WAAa9C,SAAMC,QAAQ8C,MAAM/C,SAAM6C,SAASG,KAE/DhD,SAAMiD,YAAYH,WAAa9C,SAAMiD,YAAYD,IAAI5B,OAAO,CACxD8B,gBAAkBlD,SAAciB,SAASC,sBClK7C,IAAM14B,GAAUqP,GAAgBknB,gBAM1BoE,GAAS,CACXC,UAAW,SACPC,EACAC,EACA1O,MAIF3uC,GACM,UADNA,GAEI,UAFJA,GAGK,UAHLA,GAIS,UAGT2uC,GAAU,SAAC2O,GAAD,MAAwC,CACpDC,YAAY,EAEZC,OAAQ,CACJl0B,SAAS,GAEbm0B,OAAQ,CACJC,MAAO,CACH,CACIC,QAASL,EAETM,UAAW,CACPnB,UAAW,GAEfoB,MAAO,CACHr8B,SAAU,GACVs8B,aAAa,KAIzBC,MAAO,CACH,CACIJ,SAAS,EACTC,UAAW,CACPt0B,SAAS,GAEbu0B,MAAO,CACHr8B,SAAU,OAK1Bw8B,SAAU,CACN/9C,gBAAiB,OACjBg+C,cAAe,GACfC,eAAgB,UAChBC,cAAe,OACfC,aAAc,GACdC,SAAU,GACV3iC,KAAM,QACN4iC,UAAW,CACPpyC,MAAO,SAACqyC,EAAalkC,GACjB,IAAMnO,EAAQmO,EAAKmkC,UACbnkC,EAAKmkC,SAASD,EAAYE,cAAwBvyC,OAElD,GAEN,SAAAzC,OAAUyC,EAAV,MAAAzC,OAAoBgP,KAAKimC,MACY,IAAhCH,EAAYI,QACb,IAFJ,KAAAl1C,OAEW8Y,GAAQq8B,MAAMpB,OAAOqB,aAGpCr2C,MAAO,SAAC+1C,EAAalkC,GACjB,IAAMykC,EAAgBzkC,EAAK0kC,OACvBR,EAAY,GAAG1c,OAGnB,OAAQtf,GAAQq8B,MAAMI,cAAuBF,QCnF9CG,GDkGI,SAAAxgD,GAON,IANTkO,EAMSlO,EANTkO,SACAuyC,EAKSzgD,EALTygD,aACAC,EAIS1gD,EAJT0gD,MACAC,EAGS3gD,EAHT2gD,KACAC,EAES5gD,EAFT4gD,WACAN,EACStgD,EADTsgD,OAEMO,EAAYC,kBAAO,MADhBC,EAEuBC,qBAAkB,GAFzCC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAEFG,EAFED,EAAA,GAEQE,EAFRF,EAAA,GAAAG,EAGiBJ,oBAAuB,MAHxCK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAGFjB,EAHEkB,EAAA,GAGKC,EAHLD,EAAA,GAKHE,EAA8B,CAChC,CACI9zC,MAAOqW,GAAQq8B,MAAMpB,OAAOyC,QAC5BhgD,gBAAiBD,GACjB47C,YAAa,EACbsE,aAAc,GACd7lC,KAAM1N,EACNwzC,MAAO,KAEX,CACIj0C,MAAOqW,GAAQq8B,MAAMpB,OAAO3L,IAC5B5xC,gBAAiBD,GACjBkgD,aAAc,GACdtE,YAAa,EACbvhC,KAAM+kC,EACNe,MAAO,IACP3E,cAAe,OAEnB,CACItvC,MAAOqW,GAAQq8B,MAAMpB,OAAO5L,KAC5B3xC,gBAAiBD,GACjBkgD,aAAc,GACdtE,YAAa,EACbvhC,KAAM8kC,EACNgB,MAAO,KAEX,CACIj0C,MAAOqW,GAAQq8B,MAAMpB,OAAO7L,UAC5B1xC,gBAAiBD,GACjBkgD,aAAc,GACdtE,YAAa,EACbvhC,KAAMglC,EACNc,MAAO,MAITC,EAA8B,CAChC,CACIl0C,MAAOqW,GAAQq8B,MAAMpB,OAAOyC,QAC5BhgD,gBAAiBD,GACjB47C,YAAa,EACbsE,aAAc,GACd7lC,KAAM1N,GAEV,CACIT,MAAOqW,GAAQq8B,MAAMpB,OAAOnL,YAC5BpyC,gBAAiBD,GACjB47C,YAAa,EACbsE,aAAc,GACd7lC,KAAM6kC,IAuCd,OAnCA1L,qBAAU,WACN,GAAI8L,GAAaA,EAAUtvC,QACvB,GAAI4uC,EACIA,EAAMvkC,KAAKmkC,WACXI,EAAMvkC,KAAKmkC,SAAWmB,EAAWK,EAAaI,EAC9CxB,EAAMvkC,KAAK0kC,OAASA,EACpBH,EAAMjQ,QAAUA,GAAQgR,GAExBf,EAAMyB,SACLC,SAASC,eACN,iBACMC,UAAY5B,EAAM6B,sBAE7B,CACH,IAAMvG,EAAOoF,EAAUtvC,QAAgB0wC,WAAW,MAC5CrmC,EAAO,CACT0kC,SACAP,SAAU4B,GAGRryC,EAAI,IAAIgsC,SAAMG,EAAK,CACrB7/B,OAEAs0B,QAASA,GAAQgR,GACjBgB,QAAS,CAACzD,GAAQA,IAClBjuC,KAAM,eAEV8wC,EAAShyC,GACRuyC,SAASC,eACN,iBACMC,UAAYzyC,EAAE0yC,mBAGjC,CAACd,EAAUT,IAGV1/C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQq8B,MAAMp2C,OACnBhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uBACXH,GAAAC,EAAAC,cAACozC,GAAD,CACI19C,GAAG,cACHqX,KAAM8V,GAAQq8B,MAAMgC,iBACpB3S,YAAa,kBAAM2R,GAAaD,MAEpCngD,GAAAC,EAAAC,cAAA,OAAKtK,GAAG,gBAAgBuK,UAAU,mBAEtCH,GAAAC,EAAAC,cAAA,UAAQmhD,IAAKvB,OEjNvB/8B,GAAUu+B,GAAchI,gBAExBiI,GAAc,SAACC,EAAwBj/B,GACzC,OAAOi/B,EAAalwC,OAAO,SAAAub,GAAI,OAAIA,GAAQtK,KAGzCk/B,GAAkB,SAAC50B,EAAc60B,GACnC,OAAIA,EAAQ,EACDH,GAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIG,GAEvC70B,EAAO,GAAK,GAAKA,EAAO,GAAKA,EAAO,EAAI60B,EACjC,CAAC,EAAG70B,EAAO,EAAGA,EAAMA,EAAO,EAAG60B,GAErC70B,EAAO,GAAK,GAAKA,EAAO,GAAKA,EAAO,GAAK60B,EAClC,CAAC,EAAGA,EAAQ,EAAGA,EAAQ,EAAGA,EAAQ,EAAGA,GAEzC,CAAC,EAAG,EAAG,EAAG,EAAG,EAAGA,ICjBZC,GD4BI,SAAA1iD,GAA0C,IAAvC2iD,EAAuC3iD,EAAvC2iD,MAAO/0B,EAAgC5tB,EAAhC4tB,KAAMg1B,EAA0B5iD,EAA1B4iD,aAA0B7B,EACjBC,oBAASwB,GAAgB,EAAGG,IADX1B,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAClDwB,EADkDtB,EAAA,GACpC4B,EADoC5B,EAAA,GAGnD6B,EAAa,SAAC3sD,GAChB,GAAIA,IAAMy3B,EAAO,EAAjB,CAGA,IAAMm1B,EAAMP,GAAgBrsD,EAAGwsD,GAC/BE,EAAgBP,GAAYS,EAAKJ,IACjCC,EAAazsD,EAAI,KAGf6sD,EAAap1B,EAAO,EAE1B,OACI7sB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACXH,GAAAC,EAAAC,cAAA,UACIC,UAAU,oBACVwqC,QAAS,WACc,IAAfsX,GACJF,EAAWE,EAAa,IAE5BvX,SAAyB,IAAfuX,GAETl/B,GAAQsyB,QAAQ6M,eAGzBliD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACVqhD,EAAansD,IAAI,SAACD,EAAGitC,EAAO8f,GACzB,OACIniD,GAAAC,EAAAC,cAAA,UACIG,IAAKjL,EACL+K,UACI8hD,IAAe7sD,EACT,8CACA,oBAEVu1C,QAAS,kBAAMoX,EAAW3sD,KAEzB+sD,EAAM9f,EAAQ,GAAK,EAAIjtC,EAAvB,MAAA6U,OAAiC7U,GAAMA,MAKxD4K,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACXH,GAAAC,EAAAC,cAAA,UACIC,UAAU,oBACVwqC,QAAS,WACDsX,IAAeL,GACnBG,EAAWE,EAAa,IAE5BvX,SAAUuX,IAAeL,GAExB7+B,GAAQsyB,QAAQ+M,aElFtBC,GCAqB,SAAApjD,GAAkB,IAAf4iB,EAAe5iB,EAAf4iB,SACnC,OAAO7hB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBAAsB0hB,4CCwGjCygC,cArFX,SAAAA,IAAc,IAAAzhD,EAAAE,KAAA5K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAuhD,GAAAvhD,KAHNwhD,mBAGM,EAAAxhD,KAFNyhD,SAEM,EAAAzhD,KAUP0hD,YAAc,WACjB5hD,EAAK0hD,cAAcE,eAXT1hD,KAcPuS,OAAS,SAACovC,GACb7hD,EAAK0hD,cAAcztC,KAAK4tC,IAfd3hD,KAkBP4hD,SAAW,SAACD,GACf,IAAMlkC,EAAW,CACbhP,IAAG,GAAAvF,OAAKhB,GAAOrN,iBAAZ,aACH6iB,QAAS,CACLC,eAAgB,mBAChBC,YAAa1V,GAAOhN,QAExB2iB,aAAc,OACdrkB,OAAQ,OACRskB,aAAa,EACbrkB,KAAM,CACFsxB,WAAY42B,IAGdE,EAAU7jC,aAAKP,GAAU/jB,KAC3Ba,aAAW,SAAA2D,GAAA,IAAG5E,EAAH4E,EAAG5E,QAAH,OAAiBQ,aAAW,CAAEU,MAAOlB,MAChDK,aAAS,SAAAC,GACL,OAAIA,EAASA,UACTA,EAASA,SAAW0V,GAChB1V,EAASA,SACT,YAEJA,EAASA,SAASyS,KAAK,SAACnN,EAAcwO,GAClC,OAAIxO,EAAE8rB,SAAWtd,EAAEsd,UACP,EAER9rB,EAAE8rB,SAAWtd,EAAEsd,SACR,EAEJ,IAEPlrB,EAAK2hD,IACEpnD,aACHT,EAASA,SAAStF,IAAI,SAACgX,GAAD,MAAqB,CACvCyf,WAAYzf,EAAIyf,WAChBC,SAAU1f,EAAI0f,SACd+S,QAASzyB,EAAIyyB,YAIlB1jC,aACHT,EAASA,SAAStF,IAAI,SAACgX,GAAD,MAAqB,CACvCpW,KAAMoW,EAAIyf,WACV+2B,KAAMx2C,EAAI0f,SACV+S,QAASzyB,EAAIyyB,aAIlB1jC,aAAG,OAGlB,OAAOmR,aAAKq2C,IApEZ7hD,KAAKwhD,eAAgB,IAAIO,MAAkBroD,KAAKsoD,aAAa,MAC7DhiD,KAAKyhD,KAAM,sDAGDA,GAEV,OADAzhD,KAAKyhD,IAAMA,EACJzhD,0CAiES,IAAAa,EAAAb,KAChB,OAAOA,KAAKwhD,cAAc9nD,KACtBsoD,aAAa,KACbC,eACA/rB,aAAU,SAACyrB,GAAD,OAAmBA,EAAO9gD,EAAK+gD,SAASD,GAAQtnD,aAAG,MAC7DE,aAAW,SAAAC,GAEP,OADAwN,GAAI,SAAUxN,GACPH,aAAG,gBC7FpB6nD,GAAU7wB,GAAgBxpB,OAAOs6C,QAcjCC,GAAgB,IAEtB,SAASC,GACL93B,EACA+W,GAEA,IAAMwgB,EAAOnT,KAAE/7B,IAAI2X,EAAS,WAAY,IAClCr1B,EAAOy5C,KAAE/7B,IAAI2X,EAAS,aAAc,IAC1C,MAAO,CACH11B,GAAIysC,EACJ31B,MAAK,GAAAzC,OAAKhU,EAAL,QAAAgU,OAAgB44C,GACrB9iD,MAAOurB,OC/BH+3B,GAMAC,GAKAlsD,GAKAmsD,GASAC,GAMAC,GAiCAC,GAOAC,GAIAC,GAKAC,GAKAC,GAWAC,GAMAC,GAKAC,GAKAC,GAKAC,GAQAC,GAQAC,GAWAC,GAKAC,GAMAC,GAOAC,GAQAC,GAMA9tD,GAKA+tD,GAKAC,GAgBAC,GAMAC,GAOAC,GAMAC,GAKAC,GAKAC,GAQAC,GAMAC,GAOAC,GAMAC,GAaAC,GAOAC,GAMAC,GC7RGC,eFqCX,SAAAA,EAAY9kD,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA2kD,IACvB7kD,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAuvD,GAAAxkD,KAAAH,KAAMH,KA8BV+kD,mBAAqB,SAACC,IACbA,EAAUnW,YAAc5uC,EAAKD,MAAM6uC,YACpC5uC,EAAKc,SAAS,CAAEyS,UAAW,QAjCRvT,EAoC3BglD,qBAAuB,WACnB1vD,OAAAqL,GAAA,EAAArL,CAACA,OAAAqL,GAAA,EAAArL,CAAA0K,IAAailD,cAAcrD,eAnC5B5hD,EAAKY,MAAQ,CACT0tC,QAAS,GACT/6B,UAAW,MAEfje,OAAAqL,GAAA,EAAArL,CAACA,OAAAqL,GAAA,EAAArL,CAAA0K,IAAailD,eAAgB,IAAIxD,IAAgByD,QAAO,GACzDllD,EAAKm4C,kBAAoBn4C,EAAKm4C,kBAAkBz3C,KAAvBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACzBA,EAAKmlD,gBAAkBnlD,EAAKmlD,gBAAgBzkD,KAArBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACvBA,EAAKm4C,kBAAoBtJ,KAAEuW,SACvBplD,EAAKm4C,kBACLmK,IAXmBtiD,qFAcP,IACR+9B,EAAmB79B,KAAKH,MAAxBg+B,eACR,GAAMA,EAAgB,CAClB,IAAMsnB,EAA2C9C,GAC7CxkB,EACA,MAEEunB,EAAgD,CAClDD,GAEJnlD,KAAKY,SAAS,CACVwtC,QAASgX,EACT/xC,UAAW8xC,6CAcP50B,IAEZ80B,EADwBrlD,KAAKH,MAArBwlD,aACI1W,KAAE/7B,IAAI2d,EAAQ,UAC1BvwB,KAAKY,SAAS,CAAEyS,UAAWkd,8CAEbvxB,GACdgB,KAAKslD,yBAAyBtmD,8FAEHA,4FACRgB,KAAa+kD,cAC3BnD,SAAS5iD,GACTumD,mBAFCj6C,SAGAk6C,EAAuC7W,KAAEr6C,IAAIgX,EAAK,SAACm6C,EAAIjnD,GAAL,OACpD6jD,GAAaoD,EAAIjnD,KAErBwB,KAAKY,SAAS,CAAEwtC,QAASoX,wIAEpB,IAAA1kD,EACwBd,KAAKH,MAA1BqM,EADHpL,EACGoL,KAAMwiC,EADT5tC,EACS4tC,WADTgX,EAE0B1lD,KAAKU,MAA5B0tC,EAFHsX,EAEGtX,QAAS/6B,EAFZqyC,EAEYryC,UAEjB,OACIpU,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACIvuC,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBnuC,KAAKilD,gBACzBra,cAAe5qC,KAAKi4C,kBACpB7J,QAASA,EACT9sC,YAAa4gD,GAAQ0D,QAAQ76B,WAC7B7e,KAAMA,EACNlN,MAAOqU,EACPs2B,SAAU+E,YAvECrsC,0CGnChBzB,uFAAf,SAAAwY,EACIgJ,EACAyjC,GAFJ,OAAAlyC,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cAAAuF,EAAAtF,OAAA,SAIW,IAAIjf,QAAQ,SAACC,GAChBotB,EAAQxhB,SAASilD,EAAW,WACxB7wD,SANZ,wBAAAskB,EAAApF,SAAAkF,6BCWA,SAAS0sC,GAAkBx1B,GACvB,SAAKA,IAAYA,EAAQiK,cACIjK,EAAQiK,YAAuB6X,SAAS,OAIzE,SAAS2T,GACLC,EACAC,GAEA,IAAKD,IAAUC,EAAO,OAAO,EAC7B,IAAMC,EAAYvX,KAAEwX,KAAKH,EAAO,mBAC1BI,EAAYzX,KAAEwX,KAAKF,EAAO,mBAEhC,OADkCtX,KAAE0X,QAAQH,EAAWE,GAI3D,SAASE,KAGE,IAFPC,EAEOn9C,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFqB,GAC5Bo9C,EACOp9C,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GADqB,GAE5B,GAAqB,IAAjBm9C,EAAM79C,QAAiC,IAAjB89C,EAAM99C,OAAc,OAAO,EACrD,IAAM+9C,EAAwC9X,KAAE7jC,KAC5Cy7C,EACA,SAACp5C,GACG,OAAOA,EAAIX,YAAc+3C,GAAYmC,SAGvCC,EAAwChY,KAAE7jC,KAC5C07C,EACA,SAACr5C,GACG,OAAOA,EAAIX,YAAc+3C,GAAYmC,SAGvCE,EAAwCjY,KAAE7jC,KAC5Cy7C,EACA,SAACp5C,GACG,OAAOA,EAAIX,YAAc+3C,GAAYsC,SAGvCC,EAAwCnY,KAAE7jC,KAC5C07C,EACA,SAACr5C,GACG,OAAOA,EAAIX,YAAc+3C,GAAYsC,SAG7C,QACMD,KACAE,KACAL,KACAE,GACFhY,KAAE0X,QAAQO,EAASE,IACnBnY,KAAE0X,QAAQI,EAASE,GAI3B,SAASI,GAAsBx8B,GAC3B,IAAKA,EAAS,MAAO,GACrB,IAAM5T,EAA0Bg4B,KAAE/7B,IAAI2X,EAAS,UACzCO,EAAiB6jB,KAAE/7B,IAAI2X,EAAS,SAAU,IAChD,MAAO,IAAArhB,OAAIyN,GAAO,IAAMmU,GAAQ9gB,KAAK,KAAKS,QAAQ,QAAS,IAG/D,SAASu8C,GACLhsC,GAKA,IAAIisC,EAA6D,KAcjE,OAbAtY,KAAEljC,QAAQuP,EAAW,SAACjQ,GAClB,IAAIm8C,GAAc,EAUlB,GATAvY,KAAEljC,QAAQV,EAASG,cAAgB,GAAI,SAACi8C,GACpC,IAAMjyD,EAAOy5C,KAAE/7B,IAAIu0C,EAAY,QACzBz4C,EAAOigC,KAAE/7B,IAAIu0C,EAAY,QAC/B,GAAMjyD,GAAUwZ,GAAiB,YAATA,EAGpB,OAFAu4C,EAAY,CAAE/xD,OAAMwZ,QACpBw4C,GAAc,GACP,IAGXA,EAAa,OAAO,IAErBD,EAGX,SAASG,GACLzW,GAEA,IAAKA,EAAc,MAAO,GAC1B,IAAM0W,EAA2B,GAQjC,OAPI1W,IAAiB2T,GAAmBgD,oBACpCD,EAAS5oD,KAAK0kD,GAAaoE,WAAYpE,GAAaqE,KAC7C7W,IAAiB2T,GAAmBmD,YAC3CJ,EAAS5oD,KAAK0kD,GAAaoE,YACpB5W,IAAiB2T,GAAmBkD,KAC3CH,EAAS5oD,KAAK0kD,GAAaqE,KAExBH,EAGX,SAASK,GAAgB38C,GACrB,IAAKA,EAAU,OAAO,EACtB,IAAM02B,EAAyCkN,KAAE/7B,IAC7C7H,EACA,iCAEJ,QACMA,EAAS48C,gBACXlmB,IAAgB8gB,GAAcqF,2BHxH1BtF,8EAMAC,sGAKAlsD,sDAKAmsD,sPASAC,0DAMAC,0aAiCAC,4HAOAC,sCAIAC,sEAKAC,kFAKAC,0GAWAC,gHAMAC,kEAKAC,sDAKAC,uDAKAC,kJAQAC,4FAQAC,wKAWAC,oEAKAC,sEAMAC,0HAOAC,8KAQAC,wGAMA9tD,gEAKA+tD,gEAKAC,kNAgBAC,8FAMAC,gHAOAC,4FAMAC,0EAKAC,8CAKAC,sIAQAC,kIAMAC,4HAOAC,8GAMAC,kPAaAC,gGAOAC,8EAMAC,4JIzJZ,SAASmD,KAIK,IAHVC,EAGU1+C,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAHwB,GAClCsF,EAEUtF,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EADVynD,EACU3+C,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,EACV,GAAIwnD,EAAap/C,QAAU,EAAG,MAAO,GACrC,IAAM/G,EAAY,GAUlB,GATAmmD,EACKv3C,OAAO,SAAAy3C,GACJ,MAAgB,YAATt5C,EACDs5C,EAAQt5C,KAAUq5C,GAAaC,EAAQC,UACvCD,EAAQt5C,KAAUq5C,IAE3Bt8C,QAAQ,SAAAyiC,GACL,OAAOvsC,EAAUlD,KAAK,IAAIlB,KAAK2wC,EAAI/0C,SAE9B,cAATuV,IAAyBq5C,EAAW,CACpC,IAAMG,EACFJ,GAAgB,IAAIvqD,KAAKuqD,EAAap2C,OAAO,GAAG,GAAGvY,MACjDsQ,EAAQ,IAAIlM,KACZ4qD,EAAW,IAAI5qD,KACrB4qD,EAAS3wC,QAAQ/N,EAAMzL,UAAY,GACnC2D,EAAUlD,KAAK,CACX2pD,OAAQD,EACRlmD,MAAOimD,IAGf,OAAOvmD,EA6FX,IAAMqgB,GAAUqP,GAAgBg3B,2BAA2BC,UACrDC,GAAkBl3B,GAAgBm3B,YAClCC,GAAgB,oBAIhBC,GAAyD,CAC3D,CACI7zD,GAAI,IACJ8W,MAAOqW,GAAQ2mC,aAAaC,YAC5B5pD,MAAO2kD,GAAckF,cAGzB,CACIh0D,GAAI,IACJ8W,MAAOqW,GAAQ2mC,aAAaG,UAC5B9pD,MAAO2kD,GAAcoF,gBAIvBC,GAA2B,SAAA9qD,GAgB3B,IAfFypD,EAeEzpD,EAfFypD,eACA7B,EAcE5nD,EAdF4nD,kBACAmD,EAaE/qD,EAbF+qD,iBAcA,OADE/qD,EAZFgrD,YAagBxgD,OAAS,EACd,CAACtT,OAAAkuB,GAAA,EAAAluB,CAAA,GAEGszD,IACEf,EAAewB,MAAQxB,EAAeyB,MACX,IAA5BH,EAAiBvgD,OACX,EACA,KAMf,CAACtT,OAAAkuB,GAAA,EAAAluB,CAAA,GAEGszD,IACEf,EAAewB,OAAQxB,EAAeyB,KACtCtD,EAAkBqD,MAClBrD,EAAkBsD,IAEb,EADA,MAOTC,GAER,CACD,CACIx0D,GAAIquD,GAAsBjnD,IAC1B+C,MAAOkkD,GAAsBjnD,IAC7B0P,MAAOqW,GAAQjK,KAEnB,CACIljB,GAAIquD,GAAsB5mD,MAC1B0C,MAAOkkD,GAAsB5mD,MAC7BqP,MAAOqW,GAAQsnC,QAIjBC,GAAoB,CACtBC,0BAA2B,KAC3BC,oBAAoB,EACpBC,2BAA2B,EAC3BC,qBAAsB,KACtBC,6BAA8B,KAC9BC,YAAY,EACZC,mBAAmB,EACnBC,aAAc,KACdC,qBAAsB,KACtBC,4BAA6B,KAC7BC,oBAAqB,MAEnBjuB,GAAoB7mC,OAAAkuB,GAAA,EAAAluB,CAAA,GACnBm0D,GADmB,CAEtBY,aAAc,GACdxuC,SAAU,GACVyuC,mBAAe9pD,EACf+pD,kBAAmB,KACnBC,4BAA6Bz0D,GAAcorC,QAC3CspB,wBAAyB,GACzBC,eAAgB,GAChBC,gBAAiB,GACjBC,UAAW,GACXC,6BAA6B,EAC7BC,iBAAiB,EACjBC,qBAAsB,KACtBC,oBAAqB,KACrBC,cAAe,KAyyCJC,eAryCX,SAAAA,EAAYnrD,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAgrD,IACvBlrD,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA41D,GAAA7qD,KAAAH,KAAMH,KACDa,MAALtL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAkB6mC,GAAlB,CAAgCtgB,SAAU4sC,GAAgB0C,cAAcC,cAAc,KACtFprD,EAAKqrD,mBAAqBrrD,EAAKqrD,mBAAmB3qD,KAAxBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC1BA,EAAKsrD,kBAAoBtrD,EAAKsrD,kBAAkB5qD,KAAvBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACzBA,EAAKurD,gBAAkBvrD,EAAKurD,gBAAgB7qD,KAArBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACvBA,EAAKwrD,6BAA+BxrD,EAAKwrD,6BAA6B9qD,KAAlCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGpCA,EAAKyrD,0BAA4BzrD,EAAKyrD,0BAA0B/qD,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK0rD,kCAAoC1rD,EAAK0rD,kCAAkChrD,KAAvCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGzCA,EAAK2rD,6BAA+B3rD,EAAK2rD,6BAA6BjrD,KAAlCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGpCA,EAAK4rD,2BAA6B5rD,EAAK4rD,2BAA2BlrD,KAAhCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGlCA,EAAK6rD,0BAA4B7rD,EAAK6rD,0BAA0BnrD,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK8rD,sBAAwB9rD,EAAK8rD,sBAAsBprD,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK+rD,kDAAoD/rD,EAAK+rD,kDAAkDrrD,KAAvDpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGzDA,EAAKgsD,wBAA0BhsD,EAAKgsD,wBAAwBtrD,KAA7BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC/BA,EAAKisD,SAAWpd,KAAEuW,SAASplD,EAAKisD,SAAU,KAC1CjsD,EAAKksD,eAAiBlsD,EAAKksD,eAAexrD,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KA9BCA,qFAkCvBE,KAAKisD,OADW,IAAAnrD,EAGkCd,KAAKH,MAA/CopD,EAHQnoD,EAGRmoD,iBAAkBiD,EAHVprD,EAGUorD,oBAHVxG,EAKyC1lD,KAAKU,MAAtDgpD,EALQhE,EAKRgE,0BAA2BI,EALnBpE,EAKmBoE,kBAE7BqC,EAAwBxd,KAAEyD,SAC5B6W,EACA9F,GAAaoE,YAEX6E,EAAuBzd,KAAEyD,SAC3B6W,EACA9F,GAAaqE,KAGX0B,EAA8B9B,GAAW8E,GACzCrB,EAAuB7B,GAAyB,CAClDC,mBACAC,cACAvB,eAAgB,CACZwB,KAAMO,EACNN,IAAKU,GAEThE,kBAAmB,CACfqD,KAAMgD,EACN/C,IAAKgD,KAEV,GAEHpsD,KAAKY,SAAS,CACViqD,oOASA7qD,KAAKH,MAHLwsD,kBACApD,qBACAiD,yBAGEG,sBACEC,EAAsC,GACtCC,EAAkC,GAClC/C,EAEO,KACLc,EACF3b,KAAE/7B,IAAIy5C,EAAe,0BACrBx2D,GAAcorC,QACZ0pB,GAAwC0B,EAAc3wC,eACtDyuC,EAAuBpD,GACzBsF,EAAc3wC,gBAEZ0uC,EAAgBiC,EAAcG,QAAU,CAC1Cn/C,SAAUo1C,GAAYxkB,GACtBrvB,UAAW,GACXC,SAAU,IAERi8C,EACFuB,EAAc3wC,gBAAkB,KAChC2uC,EAAwC5H,GAAYxkB,GACpD8sB,EAAwB,GACxBP,EAAyB,IACvBI,IAA6ByB,EAAclF,cAE7CkD,EAAoB1b,KAAE/7B,IAClBy5C,EACA,sBACA,MAEJtB,EAAgBpc,KAAE/7B,IAAIy5C,EAAe,sBAAuB,IAC5D7B,EAAiB7b,KAAE/7B,IACfy5C,EACA,uBACA,KAIJxB,EAA2D,KACzDH,EAAoB2B,EAAczyB,QAAQ9f,KAAK2yC,MAAQ,GACzDJ,EAAc37C,UAAU0iB,cAAgBv9B,GAAcorC,0CAC/BjhC,KAAK0sD,4BACxBL,WADJC,SAIMpD,EAA8B9B,GAChC8E,GAGEC,EAAwBxd,KAAEyD,SAC5B6W,EACA9F,GAAaoE,YAEX6E,EAAuBzd,KAAEyD,SAC3B6W,EACA9F,GAAaqE,KAGjBqD,EACI7B,GAAyB,CACrBC,mBACAC,cACAvB,eAAgB,CACZwB,KAAOmD,EACF5C,0BACLN,IAAMkD,EAAuBxC,mBAEjChE,kBAAmB,CACfqD,KAAMgD,EACN/C,IAAKgD,KAEV,IAAM,6BAEbC,EAAc37C,UAAU0iB,cAAgBv9B,GAAc82D,SAEtDJ,EAAevsD,KAAK4sD,0BAA0BP,GAExCQ,EAA6Cle,KAAE/7B,IACjDy5C,EACA,kCACA,MAEJ7C,EACI7a,KAAE7jC,KACEu+C,GACA,SAACz8C,GACG,OAAOA,EAAM5N,QAAU6tD,KAE1B,KAEThC,EACIlc,KAAE7jC,KACE49C,GACA,SAACvtC,GACG,OAAOkxC,EAAczyB,QAAQze,OAASA,EAAKnc,SAE9C,qBAGP6mD,gBACFsE,eACAC,gBACAZ,4BACAa,oBACAC,8BACAE,iBACAE,YACAC,8BACAC,kBACAG,gBACAF,uBACAC,uBACIwB,EACDC,aAGD3rD,GAASZ,KAAD5K,OAAAkuB,GAAA,EAAAluB,CAAA,GAAYywD,YAC1B7lD,KAAK+rD,sBAGH35C,EAASJ,GACX+tC,SAAS9tC,SACTiB,OAAOjB,SAASC,KAChBgB,OAAOjB,SAASE,UAGd26C,EAAmB16C,EAAOQ,IAAI,oBAC9Bm6C,EAAoB36C,EAAOQ,IAAI,qBAC/Bo6C,EAAmB56C,EAAOQ,IAAI,sBAE9Bg4C,IACAkC,KAAsBC,KAAuBC,qCAGzCpsD,GAASZ,KAAM,CACjBqqD,kBAAmByC,EACnB/B,cAAeiC,EACfxC,eAAgBuC,EAChBnC,6CAIF5qD,KAAKitD,kKAGIpI,EAAmBqI,GAAmB,IAEnCC,EAEdtI,EAFAuI,aACqBC,EACrBxI,EADAqH,oBAG6BoB,EAG7BJ,EAHAjD,4BACqBsD,EAErBL,EAFAhD,oBACAI,EACA4C,EADA5C,4BARiDkD,EAUPxtD,KAAKH,MAA3CutD,EAV6CI,EAU7CJ,aAAclB,EAV+BsB,EAU/BtB,oBAV+BuB,EAWQztD,KAAKU,MAA1DupD,EAX6CwD,EAW7CxD,4BAA6BC,EAXgBuD,EAWhBvD,oBAE/BwD,EAAWpD,IAAgCz0D,GAAc82D,OACzDgB,IACA1D,GACFA,IAAgCqD,EAC9BM,IACA1D,GACFA,IAAwBqD,EAEvBG,GACAP,IAAqBC,GAClBC,IAA4BnB,GAEhClsD,KAAKitD,oBAGJS,IACAC,IAAoCC,GAErC5tD,KAAK6tD,eACDF,EACAC,GAGHjf,KAAE0X,QAAQ6G,EAAWltD,KAAKU,QAC3BV,KAAK+rD,6LASL/rD,KAAKH,MAHLiuD,2BACAV,iBACAlB,wBAEErG,EAAiB,GACjBkI,EACF7B,IAAwB5H,GAAmBmD,aAC3CyE,IAAwB5H,GAAmBgD,oBACzC0G,EACF9B,IAAwB5H,GAAmBkD,KAC3C0E,IAAwB5H,GAAmBgD,qBAC3CyG,kCAG2BD,EACvB3K,GAAaoE,WACb6F,WAJEtF,oBAMwBr2B,KAC1Bo0B,EAAU0E,wBAA0BzC,cAGxCkG,oCAC2BF,EACvB3K,GAAaqE,IACb4F,YAFEtF,oBAIwBr2B,KAC1Bo0B,EAAU4E,gBAAkB3C,WAGpC9nD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,wLAGFoI,EAAsB7E,yFAC/B8E,EAA8BluD,KAAKH,MAAnCquD,4BACqDluD,KAAKU,MAA1DupD,gCAA6BC,wBAC/BrE,EAAiB,aAEboE,IAA+BgE,kCACEC,EAC/BjE,EACA9G,GAAaoE,oBAFXoC,oBAIgCl4B,KAClCo0B,EAAU8D,qBAAuBA,cAGnCO,IAAuBd,oCACE8E,EACvBhE,EACA/G,GAAaqE,cAFXuC,oBAIwBt4B,KAC1Bo0B,EAAUkE,aAAeA,WAGjC/pD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,sDAEnB19C,QAAQ3N,MAARqa,EAAAI,8JAIWsV,GACfvqB,KAAKY,SAAS,CAAEupD,aAAc5/B,8CAGhBiiC,GAKdxsD,KAAKY,SAAS,CACVypD,kBAAmBmC,EAAOn/C,SAC1Bm9C,eAAgBgC,EAAO59C,UACvBm8C,cAAeyB,EAAO39C,mDAIdla,GACZ,IAAMw5D,EAAYxf,KAAE/7B,IAAIje,EAAG,eAAgB,IAC3CqL,KAAKY,SAAS,CAAE8pD,UAAWyD,yDAGFC,GACzBpuD,KAAKY,SAAS,CAAE+pD,4BAA6ByD,sDAGvBC,GACtBruD,KAAKY,SAAS,CACVypD,kBAAqBgE,EAAU5L,GAAYxkB,GAAK,KAChD2sB,gBAAiByD,8DAKrB32C,EACAtJ,GACU,IAAAkgD,EAMNtuD,KAAKU,MAJL6pD,EAFM+D,EAEN/D,wBACAE,EAHM6D,EAGN7D,gBACAH,EAJMgE,EAINhE,4BACAd,EALM8E,EAKN9E,0BAEIrvC,EAAYna,KAAKH,MAAjBsa,QACFuzC,EAAWpD,IAAgCz0D,GAAc82D,OAC3D7E,EAAkC,GAElCA,EADW,OAAXpwC,EACe6yC,EAEAE,EAEnB,InI6mBUtxD,EAAYo1D,EmI7mBlB5sD,EAAwB,GAE5B,GAAI+rD,GAAYlE,EAA2B,CACvC,GAAe,aAAXp7C,EAAuB,CACvB,IAAMogD,EAAwB,WAC1B,IAAIC,EACA/zD,GAAO6B,qBACHitD,EAA0BxqD,OAC5B0Y,GACN+2C,EAAM/zD,GAAOwC,mBAAmBk1C,SAC5Bj4B,EAAQ7I,eAELm9C,GAAO,EACPA,GAAO,EACdA,EACK/zD,GAAOwC,mBAAmBk1C,SACvBj4B,EAAQ7I,gBAC6B,UAApCk4C,EAA0BxqD,MAExByvD,GAAO,EADPA,GAAO,EAElB,IAAMC,EAAa,IAAInxD,KACvB,OAAO8Z,GAAQq3C,EAAYD,GAjBD,GAoBxBE,EAAY3uD,KAAKH,MAAM06B,YACxBhqB,OAAO,SAAA+f,GAAO,OAAIA,GAAWA,EAAQiK,cACrClgB,KAAK,SAAAiW,GAAO,OAAIA,EAAQiK,YAAa6X,SAAS,aACnD,MAAO,CACH,CACIgW,OAAQoG,EACRvsD,OnI+kBN9I,EmI/kBsB,IAAIoE,KnI+kBdgxD,EmI/kBsBI,EAAY,EAAI,EnIglBhE,IAAIpxD,KAAKpE,EAAKy1D,SAASz1D,EAAK4E,WAAawwD,MmI9kBzB,CACIljB,WAAY,CAAC,EAAG,KAK5B,MAAO,GAGX,GAAe,aAAXj9B,GAAiD,IAAxB05C,EAAap/C,OAAc,CACpD,IAAMe,EAAc,IAAIlM,KAAKA,KAAKwa,OAClCpW,EAAY,CACR,CACIM,MAAOwH,EACP2+C,OAAQ3+C,GAEZA,QAGJ9H,EADkB,aAAXyM,EACKy5C,GAAmBC,EAAc,WAAW,GAE5CD,GAAmBC,EAAc,aAAa,GAE9D,OAAOnmD,uDAGkBoI,EAAS2N,GAAqB,IAAAm3C,EAKnD7uD,KAAKU,MAHL6pD,EAFmDsE,EAEnDtE,wBACAE,EAHmDoE,EAGnDpE,gBACAH,EAJmDuE,EAInDvE,4BAEIrB,EAAqBjpD,KAAKH,MAA1BopD,iBAEFyE,EAAWpD,IAAgCz0D,GAAc82D,OAEzD9G,EAAiB,GACnBiC,EAAkC,GAChCqE,EAAwBxd,KAAEyD,SAC5B6W,EACA9F,GAAaoE,YAEX6E,EAAuBzd,KAAEyD,SAC3B6W,EACA9F,GAAaqE,KAUjB,GARI9vC,IAAWyrC,GAAaoE,YACxB1B,EAAUoE,4BAA8BlgD,EACxC+9C,EAAeyC,GACR7yC,IAAWyrC,GAAaqE,MAC/B3B,EAAUqE,oBAAsBngD,EAChC+9C,EAAe2C,IAGdiD,EAAU,CACX,IAAMnkB,EAvpBlB,SACIulB,EACA31D,GAEA,IAAIowC,EAAgC,KAgBpC,OAfAoF,KAAEljC,QAAQqjD,EAAM,SAAAzxC,GACZ,IACI,IAAM0xC,EAAU,IAAIxxD,KAAK8f,EAAIlkB,MAK7B,GAHI41D,EAAQvxD,gBAAkBrE,EAAKqE,eAC/BuxD,EAAQhxD,aAAe5E,EAAK4E,YAC5BgxD,EAAQ/wD,YAAc7E,EAAK6E,UAG3B,OADAurC,EAAQlsB,GACD,EAEb,MAAOxK,GACL1K,QAAQ3N,MAAMqY,MAGf02B,EAmoBeylB,CAAUlH,EAAc/9C,GAChCklD,IAAuB1lB,KAAWA,EAAMoe,eAC1CjwC,IAAWyrC,GAAaoE,YACxB1B,EAAU4D,qBAAuBlgB,KAAWA,EAAMrI,QAClD2kB,EAAU6D,0BACNuF,IAAuB9C,GACpBz0C,IAAWyrC,GAAaqE,MAC/B3B,EAAUgE,aAAetgB,KAAWA,EAAMrI,QAC1C2kB,EAAUiE,kBACNmF,IAAuB7C,GAInCpsD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,uDAGIlxD,GACvBqL,KAAKY,SAAS,CAAEiqD,qBAAsBl2D,sDAGhB41B,GACtBvqB,KAAKY,SAAS,CAAEkqD,oBAAqBvgC,kDAGnB2kC,GAA0B,IAAAC,EACenvD,KAAKH,MAAxDopD,EADoCkG,EACpClG,iBAAkBiD,EADkBiD,EAClBjD,oBAAqB/xC,EADHg1C,EACGh1C,QADHi1C,EAGapvD,KAAKU,MAAtDgpD,EAHoC0F,EAGpC1F,0BAA2BI,EAHSsF,EAGTtF,kBAE7BqC,EAAwBxd,KAAEyD,SAC5B6W,EACA9F,GAAaoE,YAEX6E,EAAuBzd,KAAEyD,SAC3B6W,EACA9F,GAAaqE,KAGX0B,EAA8B9B,GAAW8E,GACzCrB,EAAuB7B,GAAyB,CAClDC,mBACAC,cACAvB,eAAgB,CACZwB,KAAMO,EACNN,IAAKU,GAEThE,kBAAmB,CACfqD,KAAMgD,EACN/C,IAAKgD,KAEV,GAEGiD,EAAmBp1C,GAA2B,CAAEE,YAChD,GACAovC,GAENvpD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GACOi6D,EADP,CAEI/E,4BAA6B4E,EAC7BrE,oGAKJyE,GACF,IACUpD,EAAwBlsD,KAAKH,MAA7BqsD,oBACR,GAAMvd,KAAE7jC,KAAKu+C,GAA0BiG,GAAY,KACvC/yD,EAAyB7B,GAAzB6B,qBAEFgzD,EAAkB,SAAC73C,GAAD,OACpBL,GACI,IAAI9Z,KACJhB,EAAqB+yD,EAAUtwD,OAAO0Y,KAGxC83C,EAAqB,GAEvBtD,IAAwB5H,GAAmBmD,cAC3C+H,EAAcvF,4BAA8BsF,EACxC,OAIJrD,IAAwB5H,GAAmBkD,MAC3CgI,EAActF,oBAAsBqF,EAAgB,OAIpDrD,IAAwB5H,GAAmBgD,sBAE3CkI,EAActF,oBAAsBqF,EAAgB,MACpDC,EAAcvF,4BAA8BsF,EACxC,OAIRvvD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,CACIo0D,0BAA2B8F,GACxBE,SAGPrnD,QAAQ3N,MAAM,+EAKlBi1D,EACA/3C,GAEA,IAAMmuC,EAAiB,GACjB6J,EAAuB/gB,KAAE/7B,IAAI68C,EAAK,QAAS,MAClC,OAAX/3C,EACAmuC,EAAU+D,6BAA+B8F,EACvB,OAAXh4C,IACPmuC,EAAUmE,qBAAuB0F,GAErC1vD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,kGAInBwG,2GAEMsD,EAA0BhhB,KAAEyD,SAC9Bia,EAAchF,SACdlE,GAAaoE,YAEXqI,EAAkBjhB,KAAEyD,SACtBia,EAAchF,SACdlE,GAAaqE,KAEb+C,EAA6C,GAC7Cd,GAA8B,EAC9BC,GAAqC,EACrCC,EAA4C,KAC5CC,EAAkD,KAClDa,EAAqC,GACrCZ,GAAsB,EACtBC,GAA6B,EAC7BC,EAAoC,KACpCC,EAA0C,KAC1CC,EAA2C,KAC3CC,EAAmC,MACnCyF,oCACgC3vD,KAAK6vD,kCACjCxD,EACAlJ,GAAaoE,oBAFXuI,SAINvF,EAA0BuF,EAAkBhI,aAC5C2B,EAAqBqG,EAAkB5uB,QACvCwoB,EAA4BoG,EAAkBnI,eAC9CgC,EAAuBmG,EAAkBC,UACzCnG,EAA+BkG,EAAkBE,kBACjD/F,EAA8B6F,EAAkBG,qBAEhDL,oCACwB5vD,KAAK6vD,kCACzBxD,EACAlJ,GAAaqE,aAFX0I,SAINzF,EAAkByF,EAAUpI,aAC5B+B,EAAaqG,EAAUhvB,QACvB4oB,EAAoBoG,EAAUvI,eAC9BoC,EAAemG,EAAUH,UACzB/F,EAAuBkG,EAAUF,kBACjC9F,EAAsBgG,EAAUD,0CAE7B,CACH1F,0BACAd,qBACAC,4BACAC,uBACAC,+BACAa,kBACAZ,aACAC,oBACAC,eACAC,uBACAC,8BACAC,gOAKJmC,EACA30C,qHAaI1X,KAAKH,MAHLutD,iBACAU,2BACAI,8BAGApG,EAAkC,GAClCmI,EAAwB,KACxB/uB,GAAmB,EACnBymB,GAA0B,EAC1BoI,EAAiC,KACjCC,EAAuC,cACblC,EAC1Bp2C,EACA01C,GACA,aAHE+C,SAKNrI,EAAiBqI,aAA2B1+B,GAEtC,GADA0+B,EAEAC,EAAgCzhB,KAAE/7B,IACpCy5C,EADkC,0BAAAnjD,OAERwO,EAFQ,SAGlC,MAEE24C,EAAsC1hB,KAAE/7B,IAC1Cy5C,EADwC,0BAAAnjD,OAEdwO,EAFc,aAGxC,MAEA44C,EAAyC,KACvCF,IACIG,EAAiC,IAAIhzD,KAAK6yD,GAC1CI,EAA6BvmD,GAC/BsmD,GAEJD,EACI3hB,KAAE7jC,KAAKg9C,EAAc,SAACzqC,GAClB,IAAM0xC,EAAyB,IAAIxxD,KAAK8f,EAAIlkB,MAC5C,IAAKo3D,IAAoBxB,EAAS,OAAO,EACzC,IAAM0B,EAAqBxmD,GACvB8kD,GAEJ,OAAOyB,IAAuBC,KAC5B,OAERH,0BACFL,EAAW,IAAI1yD,KAAK+yD,EAAen3D,MACnC+nC,IAAYovB,EAAepvB,QAC3BymB,IAAmB2I,EAAe3I,yBAGPuG,EACvB+B,EACAv4C,YAJEg5C,oBAMwBj/B,KAC1Bs+B,EAAYW,EACNL,EAAsC1hB,KAAE/7B,IAC1Cy5C,EADwC,0BAAAnjD,OAEdwO,EAFc,aAGxC,MAEJs4C,EACIrhB,KAAE7jC,KAAKilD,EAAW,SAACL,GACf,OAAOW,IAAqBX,KAC1B,qBAIbO,IACDA,EAAWG,EACXJ,EAAoBK,qBAGjB,CACHvI,eACAmI,WACA/uB,UACAymB,iBACAoI,YACAC,8KAIkB3D,GACtB,IAAMsE,EAAkB,GAElBhB,EAA0BhhB,KAAEyD,SAC9Bia,EAAchF,SACdlE,GAAaoE,YAEXqI,EAAkBjhB,KAAEyD,SACtBia,EAAchF,SACdlE,GAAaqE,KAGjB,GAAImI,EAAgB,CAChB,IAAMiB,EAAWjiB,KAAE/7B,IACfy5C,EADa,kCAGb,MAGEuE,IACFD,EAAW1G,4BAA8B2G,GAIjD,GAAIhB,EAAQ,CACR,IAAMgB,EAAWjiB,KAAE/7B,IACfy5C,EADa,kCAGb,MAGEuE,IACFD,EAAWzG,oBAAsB0G,GAIzC,OAA0C,IAAnCx7D,OAAOD,KAAKw7D,GAAYjoD,OAAeioD,EAAa,sCAGpD,IA4FH7wB,EACA+wB,EACAC,EACAC,EACAC,EACAt1C,EACA+wC,EACAr5B,EACA69B,EACAC,EACA/J,EAtGGgK,EAKHnxD,KAAKH,MAHLuxD,EAFGD,EAEHC,yBACAlF,EAHGiF,EAGHjF,oBACAjD,EAJGkI,EAIHlI,iBAJGoI,EA2BHrxD,KAAKU,MApBL0pD,EAPGiH,EAOHjH,cACAD,EARGkH,EAQHlH,aACAX,EATG6H,EASH7H,0BACAa,EAVGgH,EAUHhH,kBACAC,EAXG+G,EAWH/G,4BACAb,EAZG4H,EAYH5H,mBACAC,EAbG2H,EAaH3H,0BACAE,EAdGyH,EAcHzH,6BACAY,EAfG6G,EAeH7G,eACAX,EAhBGwH,EAgBHxH,WACAC,EAjBGuH,EAiBHvH,kBACAE,EAlBGqH,EAkBHrH,qBACAU,EAnBG2G,EAmBH3G,UACAC,EApBG0G,EAoBH1G,4BACAC,EArBGyG,EAqBHzG,gBACAG,EAtBGsG,EAsBHtG,cACAd,EAvBGoH,EAuBHpH,4BACAC,EAxBGmH,EAwBHnH,oBACAW,EAzBGwG,EAyBHxG,qBACAC,EA1BGuG,EA0BHvG,oBAGEqB,EAAwBxd,KAAEyD,SAC5B6W,EACA9F,GAAaoE,YAEX6E,EAAuBzd,KAAEyD,SAC3B6W,EACA9F,GAAaqE,KAGb8J,EAEI,OADAzG,EAEHF,IACD2G,EACIA,GACAnH,EAAazhD,OAAS,GACE,OAAxBoiD,GAEJF,IACA0G,EACIA,GACsB,OAAtBjH,GACAG,EAAe9hD,OAAS,GACxBqiD,EAAcriD,OAAS,GAE3B4hD,IAAgCz0D,GAAcorC,QAE1CirB,IAAwB5H,GAAmBgD,oBAE3CgK,EACIA,GACgC,OAAhCrH,GACiC,OAAjCL,GACwB,OAAxBM,GACyB,OAAzBF,EACGkC,IAAwB5H,GAAmBmD,YAClD6J,EACIA,GACgC,OAAhCrH,GACiC,OAAjCL,EACGsC,IAAwB5H,GAAmBkD,MAClD8J,EACIA,GACwB,OAAxBpH,GACyB,OAAzBF,GAEDM,IAAgCz0D,GAAc82D,SACrD2E,EAAgBA,GAA+C,OAA9B9H,EAG7B0C,IAAwB5H,GAAmBgD,oBAE3CgK,EACIA,GACgC,OAAhCrH,GACwB,OAAxBC,EACGgC,IAAwB5H,GAAmBmD,YAClD6J,EACIA,GAAiD,OAAhCrH,EACdiC,IAAwB5H,GAAmBkD,MAClD8J,EAAgBA,GAAyC,OAAxBpH,IAoBrCoH,IACA51C,EAAmBovC,EAAF11D,OAAAkuB,GAAA,EAAAluB,CAAA,GACN01D,EADM,CACehgC,OAAQq/B,SAClC7pD,EACNmsD,EAAO/B,EACPt3B,EAAck3B,EACRD,IACFlD,EAAa,CACT95C,SAAUg9C,EACVx7C,SAAUk8C,EACVn8C,UAAW47C,IAGfF,IAAgCz0D,GAAcorC,SAC9C4vB,EACI5G,QAA+B3pD,EACnCwwD,EAAwB5G,QAAuB5pD,EAC/CywD,EAAsBnH,QAAgCtpD,EACtD0wD,EAAchH,QAAwB1pD,GAEtCgqD,IAAgCz0D,GAAc82D,QAChB,OAA9BnD,IAEA1pB,EAAsB0pB,EAA0BxqD,MAE5CwqD,EAA0BxqD,QAC1BkkD,GAAsB5mD,OAErBu0D,EAAgC1E,EAC3B,IAAI5uD,KACH0sD,EAGF6G,EAAwB1E,EACnB,IAAI7uD,KACH2sD,EAGNgH,EAAahH,GAClB+G,EAAqBhH,IAGjBgH,EAAmBM,SAAS,EAAG,EAAG,EAAG,MACjC,IAAIh0D,MAAOg0D,SAAS,EAAG,EAAG,EAAG,IAEjCV,OAAgCvwD,EAChCwwD,OAAwBxwD,GAExB4wD,GACAA,EAAWK,SAAS,EAAG,EAAG,EAAG,MACzB,IAAIh0D,MAAOg0D,SAAS,EAAG,EAAG,EAAG,IAEjCV,OAAgCvwD,EAChCwwD,OAAwBxwD,IAQpBwwD,EANC1E,EAMuB8E,EALA75C,GACpBy5C,EACA,IAWJD,EANC1E,EAM+B8E,EALA55C,GAC5Bw5C,EACA,MAOZrH,EAA0BxqD,QAC1BkkD,GAAsBjnD,MAErB40D,EAAgC5G,EAG5B6G,EAAwB5G,EAI7BgH,EAAahH,GADR+G,EAAqBhH,IAItBgH,EAAmBM,SAAS,EAAG,EAAG,EAAG,MACjC,IAAIh0D,MAAOg0D,SAAS,EAAG,EAAG,EAAG,IAEjCV,OAAgCvwD,EAChCwwD,OAAwBxwD,GAExB4wD,GACAA,EAAWK,SAAS,EAAG,EAAG,EAAG,MACzB,IAAIh0D,MAAOg0D,SAAS,EAAG,EAAG,EAAG,IAEjCV,OAAgCvwD,EAChCwwD,OAAwBxwD,IAExBwwD,EAAwBI,EACxBL,EAAgCI,MAMhDG,EAAyBE,EAAe,CACpC9E,OAAQpC,EACRtqB,sBACA+wB,gCACAC,wBACArH,qBACAI,aACAkH,sBACAC,cACAtH,4BACAI,oBACApuC,iBACA+wC,OACAr5B,cACA+zB,aACA8J,qBACAC,sDAUOM,GACXxxD,KAAKY,SAAS,CAAE+a,SAAU61C,qCAGrB,IAAA3wD,EAAAb,KAAAyxD,EAMDzxD,KAAKH,MAJLopD,EAFCwI,EAEDxI,iBACAoD,EAHCoF,EAGDpF,cACAH,EAJCuF,EAIDvF,oBACA/xC,EALCs3C,EAKDt3C,QALCu3C,EA0BD1xD,KAAKU,MAjBL8oD,GATCkI,EAQDtH,cARCsH,EASDlI,2BACAa,EAVCqH,EAUDrH,kBACAC,EAXCoH,EAWDpH,4BACAZ,EAZCgI,EAYDhI,0BACAC,EAbC+H,EAaD/H,qBACAC,EAdC8H,EAcD9H,6BACAY,EAfCkH,EAeDlH,eACAV,EAhBC4H,EAgBD5H,kBACAC,EAjBC2H,EAiBD3H,aACAC,EAlBC0H,EAkBD1H,qBAEAY,GApBC8G,EAmBDhH,UAnBCgH,EAoBD9G,iBACAX,EArBCyH,EAqBDzH,4BACAC,EAtBCwH,EAsBDxH,oBACAa,EAvBC2G,EAuBD3G,cAIE7B,GA3BDwI,EAwBD7G,qBAxBC6G,EAyBD/1C,SAEgCyrC,GAAW8E,IACzCC,EAAwBxd,KAAEyD,SAC5B6W,EACA9F,GAAaoE,YAEX6E,EAAuBzd,KAAEyD,SAC3B6W,EACA9F,GAAaqE,KAKXmK,GAF4B,OAA9BnI,GACAA,EAA0BxqD,MApsCtC,SACI9C,EAQAG,GASA,IAAMu1D,EAAc,GAyBpB,OAxBM11D,EAAG/C,OACLy4D,EAAO11D,GAAK,CACR/C,KAAM+C,EAAG/C,KAAK6E,UACd2pD,eAAgBzrD,EAAGyrD,eACnB7B,kBAAmB5pD,EAAG4pD,kBACtB/mD,MAAO7C,EAAG/C,KAAK4E,WACf8zD,OAAQ31D,EAAGozD,UACXS,UAAW7zD,EAAG6zD,UACdL,SAAUxzD,EAAG8zD,kBACblxD,KAAM5C,EAAG/C,KAAKqE,gBAGhBnB,EAAGlD,OACLy4D,EAAOv1D,GAAK,CACRlD,KAAMkD,EAAGlD,KAAK6E,UACd2pD,eAAgBtrD,EAAGsrD,eACnB7B,kBAAmBzpD,EAAGypD,kBACtB/mD,MAAO1C,EAAGlD,KAAK4E,WACf8zD,OAAQx1D,EAAGizD,UACXS,UAAW1zD,EAAG0zD,UACdL,SAAUrzD,EAAG2zD,kBACblxD,KAAMzC,EAAGlD,KAAKqE,gBAGfo0D,EA0pCuBE,CACtB,CAEI34D,KAAM8wD,EACNtC,eAAgB+B,EAChB5D,kBAAmBqG,EACnBmD,UAAW3gB,KAAE/7B,IAAI42C,EAA2B,QAAS,MACrDuG,UAAWpG,EACXqG,kBAAmBpG,GAEvB,CAEIzwD,KAAM+wD,EACNvC,eAAgBmC,EAChBhE,kBAAmBsG,EACnBkD,UAAW3gB,KAAE/7B,IAAI42C,EAA2B,QAAS,MACrDuG,UAAWhG,EACXiG,kBAAmBhG,KAGrBnsB,EACF8Q,KAAE/7B,IAAIy5C,EAAe,wBAAqB/rD,EACxCyxD,EACFpjB,KAAE/7B,IAAIy5C,EAAe,gBAAa/rD,EAEX0oD,GAAyB,CAChDC,mBACAC,cACAvB,eAAgB,CACZwB,KAAMO,EACNN,IAAKU,GAEThE,kBAAmB,CACfqD,KAAMgD,EACN/C,IAAKgD,KAMb,OACIntD,GAAAC,EAAAC,cAAA,WAASC,UAAWqpD,IAChBxpD,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OACbhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAACvJ,GA/rCR,mBAgsCTxpD,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM8V,GAAQkwC,SACdlzD,MAAOnJ,GAAcorC,QACrBwM,QACI6c,IACAz0D,GAAcorC,QAElByM,YAAa,WACT7sC,EAAK+qD,sBAAsB/1D,GAAcorC,YAGjDhiC,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM8V,GAAQmwC,kBACdnzD,MAAOnJ,GAAc82D,OACrBlf,QACI6c,IAAgCz0D,GAAc82D,OAElDjf,YAAa,WACT7sC,EAAK+qD,sBAAsB/1D,GAAc82D,SACrCR,GAAyBC,IACzBvrD,EAAKgrD,kDACDxC,GAAyB,QAO7CpqD,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAACvJ,GA3tCZ,aA4tCLxpD,GAAAC,EAAAC,cAACizD,GAAD,CACIj4C,QAASA,EACTgyC,sBAAuBA,EACvBC,qBAAsBA,EACtBuF,aAAcA,EACdU,wBAAyBhJ,GACzBiJ,gCACI9I,EAEJN,YAAaA,EACbqJ,2BACIvyD,KAAK8rD,wBAET0G,yBACIxyD,KAAKwrD,kCAETiH,iBAAkBzyD,KAAKyrD,6BACvBiH,uBACI1yD,KACK6rD,kDAETqD,UACI5E,IACAz0D,GAAcorC,QACR,UACA,YAIlBhiC,GAAAC,EAAAC,cAAA,OAAKuhB,MAAO,CAAEsD,UAAW,SACrB/kB,GAAAC,EAAAC,cAAA,SAAOC,UAAU,eAAeshB,MAAO,CAAEiyC,YAAa,QAAtD,yCAGA1zD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iEAAiEshB,MAAO,CAACgB,eAAgB,eACnG6mC,GAAgB0C,cAAcC,cAAc52D,IAAI,SAAAs+D,GAAE,OAC/C3zD,GAAAC,EAAAC,cAAC8yD,GAAD,CACI3yD,IAAKszD,EACLnlB,QAASmlB,IAAO/xD,EAAKH,MAAMib,SAC3BzP,KAAMzB,KACF89C,GAAgB0C,cAAc4H,cAC9B,cACAD,GAEJ5zD,MAAO4zD,EACPllB,YAAa,WACT7sC,EAAKhB,MAAMmsD,eACN4G,GAEL/xD,EAAKmrD,eAAe4G,UAOvCtI,IAAgCz0D,GAAc82D,QAC3Che,KAAE/7B,IAAI42C,EAA2B,WACjCtG,GAAsB5mD,OAAS2C,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ8wC,OAC/C7zD,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CACXvJ,GAvxCa,cA2xCf0D,IAA0BC,GACxBntD,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CACXvJ,GA9xCK,UAgyCL,gBAGJxpD,GAAAC,EAAAC,cAAA,SACIF,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ+wC,eAAf,KACA9zD,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQgxC,kBAI3B/zD,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CACXvJ,GA3yCS,UA6yCT,YAuCJxpD,GAAAC,EAAAC,cAAC8zD,GAAD,CACIlB,cAAeA,EACfl0B,eAAgBA,EAChBq1B,qBAAsBlzD,KAAKmrD,mBAC3BgI,eAAgB,SAAC/I,GACbvpD,EAAKD,SAAS,CAAEwpD,mBAEpBgJ,yBACIpzD,KAAKsrD,6BAET+H,sBACIrzD,KAAK2rD,0BAETz/C,KAAM8V,GAAQsxC,mBAElBr0D,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CACXvJ,GAr2CK,UAu2CL,SACA,yBAGJxpD,GAAAC,EAAAC,cAAA,aAAQ6iB,GAAQuxC,cAChBt0D,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM8V,GAAQwxC,IACdx0D,MAAO,OACPyuC,QAASmd,EACTld,YAAa,WACT7sC,EAAK0qD,2BAA0B,MAGvCtsD,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM8V,GAAQyxC,GACdz0D,MAAO,QACPyuC,SAAUmd,EACVld,YAAa,WACT7sC,EAAK0qD,2BAA0B,OAI1CX,GACG3rD,GAAAC,EAAAC,cAACu0D,GAAD,CACI9oB,cAAe5qC,KAAKorD,kBACpB73C,OAAQ,CACJlG,SAAUg9C,EACVz7C,UAAW47C,EACX37C,SAAUk8C,eA3xCf1oD,cC1VzB2f,GAAUqP,GAAgBsiC,WAAWC,cAErCr0D,GAAkB,CACpBC,YAAa,CACTC,MAAO,QACPC,gBAAiB,WAGrBC,QAAS,CAAEF,MAAO,UAAWC,gBAAiB,UCtBnCm0D,eD0BX,SAAAD,EAAY/zD,GAAO,IAAAC,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA4zD,IACf9zD,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAw+D,GAAAzzD,KAAAH,KAAMH,KA4CVi0D,eAAiB,SAAAp8C,GAAU,IACfg2C,EAAa5tD,EAAKD,MAAlB6tD,SACR,OACIzuD,GAAAC,EAAAC,cAAA,OACIC,UAAS,oCAAA8J,OAAsCwO,EAAtC,qBAETzY,GAAAC,EAAAC,cAAA,OACIC,UAAS,+DAAA8J,OAAiEwO,EAAjE,8BAETzY,GAAAC,EAAAC,cAAA,OACIC,UAAS,+DAAA8J,OAAiEwO,EAAjE,gCAEbzY,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ+xC,aAAaC,gBAG3BtG,GACEzuD,GAAAC,EAAAC,cAAA,OACIC,UAAS,+DAAA8J,OAAiEwO,EAAjE,8BAETzY,GAAAC,EAAAC,cAAA,OACIC,UAAS,+DAAA8J,OAAiEwO,EAAjE,gCAEbzY,GAAAC,EAAAC,cAAA,aAAK6iB,GAAQ+xC,aAAaE,cAA1B,QAnEDn0D,EA0EnBo0D,iBAAmB,SAACx8C,EAAQhJ,GAAS,IACzBy7B,EAAYrqC,EAAKY,MAAjBypC,QACFgqB,EAAc/+D,OAAAkuB,GAAA,EAAAluB,CAAA,GACb+0C,EADa/0C,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEfsiB,EAFetiB,OAAAkuB,GAAA,EAAAluB,CAAA,GAGT+0C,EAAQzyB,GAHC,CAIZ28C,QAAkB,SAAT3lD,MAGjB5O,EAAKc,SAAS,CAAEupC,QAASgqB,KAnFVr0D,EAsFnBw0D,uBAAyB,SAAA58C,GAAU,IACvByyB,EAAYrqC,EAAKY,MAAjBypC,QACFgqB,EAAc/+D,OAAAkuB,GAAA,EAAAluB,CAAA,GACb+0C,EADa/0C,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEfsiB,EAFetiB,OAAAkuB,GAAA,EAAAluB,CAAA,GAGT+0C,EAAQzyB,GAHC,CAIZ68C,YAAY,MAGpBz0D,EAAKc,SAAS,CAAEupC,QAASgqB,KA/FVr0D,EAkGnB00D,uBAAyB,SAAA98C,GAAU,IAAA5W,EACIhB,EAAKD,MAAhC8xD,EADuB7wD,EACvB6wD,aACF8C,GAFyB3zD,EACT4sD,YAGhB/e,KAAE/7B,IAAI++C,EAAN,GAAAzoD,OAAuBwO,EAAvB,oBAAgD,KACjDi3B,KAAE/7B,IAAI++C,EAAN,GAAAzoD,OAAuBwO,EAAvB,uBAAmD,GACxD,OACIzY,GAAAC,EAAAC,cAAA,OAAKC,UAAW,YACXq1D,GACGx1D,GAAAC,EAAAC,cAAA,QAAMC,UAAW,aACbH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,oBAAhB,cACC4iB,GAAQ+xC,aAAaW,aA7GvB50D,EAoHnB60D,2BAA6B,SAACj9C,EAAQk9C,GAAW,IACrCzqB,EAAYrqC,EAAKY,MAAjBypC,QACAmoB,EAAoCxyD,EAAKD,MAAzCyyD,gCAER,OACInoB,EAAQzyB,GAAQ28C,SACZp1D,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,KAAGC,UAAS,GAAA8J,OAAK0rD,EAAL,sBAC6B,OAApCtC,GAC6C,UAA1CA,EAAgCtzD,OADnC,GAAAkK,OAGO8Y,GAAQ+xC,aAAac,kBAH5B,KAAA3rD,OAIOpJ,EAAKg1D,sBAAsBp9C,OAhIpC5X,EAuInBg1D,sBAAwB,SAAAp9C,GAAU,IAAAw+B,EAK1Bp2C,EAAKD,MAHLk1D,EAF0B7e,EAE1B6e,WACA3I,EAH0BlW,EAG1BkW,qBACAD,EAJ0BjW,EAI1BiW,sBAIEl+C,EAFoBnO,EAAKY,MAAvBs0D,cAE0Bt9C,IAAW,IAAIna,KAE3CqzD,EAAWn5C,GACbxJ,EACAyJ,EACAq9C,EACA3I,GAAwBD,GAG5B,OAAOriD,GAAiB8mD,IAxJT9wD,EA2JnBm1D,4BAA8B,SAAAv9C,GAAU,IAG9BzJ,EAFoBnO,EAAKY,MAAvBs0D,cAE0Bt9C,IAAW,IAAIna,KAE3CqzD,EAAWv5C,aAAQpJ,EAAa,IACtC,OAAOnE,GAAiB8mD,IAjKT9wD,EAoKnB2yD,iBAAmB,SAACuB,EAAct8C,GAG9B,IAAMw9C,EAAoB9/D,OAAAkuB,GAAA,EAAAluB,CAAA,GACnB0K,EAAKY,MAAMs0D,cADQ5/D,OAAAg/D,GAAA,EAAAh/D,CAAA,GAErBsiB,EAASs8C,IAWdl0D,EAAKc,SAAS,CACVo0D,cAAeE,KArLJp1D,EA2LnBq1D,eAAiB,WAAM,IAAA3H,EAUf1tD,EAAKD,MARLqpD,EAFesE,EAEftE,YACAuJ,EAHejF,EAGfiF,iBACAD,EAJehF,EAIfgF,yBACA9E,EALeF,EAKfE,SACAvB,EANeqB,EAMfrB,sBACAC,EAPeoB,EAOfpB,qBACAkG,EARe9E,EAQf8E,gCACAn4C,EATeqzC,EASfrzC,QAEIgwB,EAAYrqC,EAAKY,MAAjBypC,QACR,OACIlrC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACV8pD,GACGA,EAAY50D,IAAI,SAACojB,EAAQ4pB,GAYjB5mC,GAAOwC,mBAAmBk1C,SAASj4B,GAKvC,IAAMi7C,EACFjJ,GAAyBC,EACnBpqC,GAAQ+xC,aAAa9rD,MACrB+Z,GAAQ+xC,aAEA,OADJzB,GAGI,UADJA,EAAgCtzD,MAE1B,cACA,SAQpB,OACIC,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,OACIG,IAAKgiC,EACLliC,UAAU,mCAEVH,GAAAC,EAAAC,cAAA,OACIC,UAAS,oCAAA8J,OAAsCwO,EAAtC,cAETzY,GAAAC,EAAAC,cAAA,OACIC,UAAS,oCAAA8J,OAAsCwO,EAAtC,qBAETzY,GAAAC,EAAAC,cAAA,YAAOi2D,GACPn2D,GAAAC,EAAAC,cAAA,YACK6iB,GAAQ+xC,aAAar8C,MAe5Bg2C,IACGA,IACDzuD,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBACVsuD,GAEO,IADJxE,EAAYxgD,QAED,OAAXgP,GACA5X,EAAK60D,2BACDj9C,EACA,SAERzY,GAAAC,EAAAC,cAAC+B,GAAAhC,EAAD,CACIoC,YAAY,aACZC,OAAO,aACPE,WAAYA,cACZD,UAAWA,aACXE,eAAgB,CACZtC,UACI,aACJqsC,aAAc+mB,EACV96C,EACA,YAEJ1V,aAAcwwD,EACV96C,EACA,YAEJrZ,OACI2jB,GACK+xC,aACAsB,MACT/2D,OACI0jB,GACK+xC,aACAuB,MACDtzC,GACK+xC,aACAsB,OAEbE,cACIvzC,GACK+xC,aACAyB,eACDxzC,GACK+xC,aACAsB,OAEbI,aACIzzC,GACK+xC,aACA2B,cACD1zC,GACK+xC,aACAsB,OAEbM,eACI3zC,GACK+xC,aACA6B,kBACD5zC,GACK+xC,aACAsB,OAEb1zD,UAAW,CACPnC,YACIkuD,GACAhzD,GAAOwC,mBAAmBk1C,SACtBj4B,GAEE9C,cACK,GAEL,EACV+zB,QAAS,CACLC,WAAY,CACR,EACA,KAIZ9rC,mBACAR,MAAO,IAAIxB,MACP,IAAIA,MAAOC,eACX,IAAID,MAAOQ,aAGnBoD,WAAS,EACT00D,WAAY,CACRC,UAAU,EACVC,QAAS,WACLj2D,EAAKo0D,iBACDx8C,EACA,QAEJ5X,EAAKw0D,uBACD58C,KAIZtW,YAAa,SAAA2I,GACT0oD,EACI1oD,EACA2N,GAEJ5X,EAAK2yD,iBACD1oD,EACA2N,IAGRs+C,gBAAgB,EAChBC,gBAAiB,WACbn2D,EAAKo0D,iBACDx8C,EACA,SAGRw+C,gBAAiB,kBACbp2D,EAAKo0D,iBACDx8C,EACA,YAMXg2C,GACG5tD,EAAK60D,2BACDj9C,EAEI,IADJwxC,EAAYxgD,QAEG,OAAXgP,EACE,eACA,SAGb5X,EAAK00D,uBACF98C,IAGPyyB,EAAQzyB,GAAQ28C,SACbv0D,EAAKg0D,eAAep8C,GACvByyB,EAAQzyB,GAAQ68C,aACZ7G,GACD5tD,EAAKq2D,qBACDz+C,WA1ZjC5X,EAibnBq2D,qBAAuB,SAAAz+C,GAAU,IAAA0+C,EACwBt2D,EAAKD,MAAlD0yD,EADqB6D,EACrB7D,2BAA4BZ,EADPyE,EACOzE,aAC9B0E,EAAK1nB,KAAE/7B,IAAI++C,EAAN,GAAAzoD,OAAuBwO,EAAvB,eACX,IAAK2+C,EACD,OAAO,KACJ,GAAkB,IAAdA,EAAG3tD,OACV,OACIzJ,GAAAC,EAAAC,cAAA,KACIC,UAAS,oCAAA8J,OAAsCwO,EAAtC,yBAERsK,GAAQ+xC,aAAauC,iBAIlC3nB,KAAE4nB,OAAOF,EAAI,QACb,IAAMG,EAAkBx0C,GAAQ+xC,aAAahE,UAAUx8C,OAAOhD,OAC1D,SAAAy3C,GAAO,YAA8C1nD,IAA1C+1D,EAAGvrD,KAAK,SAAAojC,GAAG,OAAIA,IAAQ8Z,EAAQhpD,UAExCA,EACFgjB,GAAQ+xC,aAAahE,UAAUx8C,OAAOzI,KAClC,SAAAnW,GAAC,OAAIA,EAAEqK,QAAU2yD,EAAaj6C,GAAQg4C,YACrC,KACHtf,EAAkB,oCAAAlnC,OAAuCwO,EAAvC,oCAClB++C,EAAkB,oCAAAvtD,OAAuCwO,EAAvC,wBACpBg/C,EAAY,GAKhB,MAJe,OAAXh/C,EACAg/C,EAAY10C,GAAQ+xC,aAAa4C,4BACjB,OAAXj/C,IACLg/C,EAAY10C,GAAQ+xC,aAAa6C,qBAEjC33D,GAAAC,EAAAC,cAAA,OAAKC,UAAWgxC,GACZnxC,GAAAC,EAAAC,cAAA,OAAKC,UAAWq3D,GACZx3D,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ+xC,aAAa8C,uBAC5B53D,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,eAAA+J,OAAU8Y,GAAQ+xC,aAAa+C,uBAA/B,OACA73D,GAAAC,EAAAC,cAAA,YAAOu3D,KAGfz3D,GAAAC,EAAAC,cAACwmD,GAAD,CACI9wD,GAAG,YACHu5C,QAASooB,EACTx3D,MAAOA,EACPsC,YAAa0gB,GAAQ+xC,aAAagD,oBAClC5oB,mBAAoB,SAAAx5C,GAChB49D,EAA2B59D,EAAG+iB,QA7d/B,IAEPi6C,EAAiB9xD,EAAjB8xD,aAFO,OAGf7xD,EAAKY,MAAQ,CACTypC,QAAS,CACLjuC,GAAI,CACAm4D,SAAS,EACTE,WACI5C,EAAaz1D,IAAmC,KAA7By1D,EAAaz1D,GAAGwzD,UAE3CrzD,GAAI,CACAg4D,SAAS,EACTE,WACI5C,EAAat1D,IAAmC,KAA7Bs1D,EAAat1D,GAAGqzD,WAG/CsH,yBAAyB,EACzBhC,cAAe,CACX94D,GAAI,KACJG,GAAI,OAnBGyD,qFAwBC,IAAAqvD,EAC4BnvD,KAAKH,MAAzCsa,EADQg1C,EACRh1C,QAASu4C,EADDvD,EACCuD,uBAEbz4C,GAA2B,CAAEE,cAC7Bu4C,EAAuBrJ,GAAyB,IAChDrpD,KAAKY,SAAS,CAAEo2D,yBAAyB,gDAI9BnS,GAAW,IAClB8M,EAAiB3xD,KAAKH,MAAtB8xD,aAEFsF,EADcj3D,KAAKU,MAAjBypC,QAEJ0a,IAAc7kD,KAAKH,QACnBo3D,EAAY/6D,GAAGq4D,WACX5C,EAAaz1D,IAAmC,KAA7By1D,EAAaz1D,GAAGwzD,SACvCuH,EAAY56D,GAAGk4D,WACX5C,EAAat1D,IAAmC,KAA7Bs1D,EAAat1D,GAAGqzD,SACvC1vD,KAAKY,SAAS,CAAEupC,QAAS8sB,sCA0bxB,IAAAC,EAQDl3D,KAAKH,MANLwyD,EAFC6E,EAED7E,wBACAC,EAHC4E,EAGD5E,gCACAI,EAJCwE,EAIDxE,uBACAxD,EALCgI,EAKDhI,UACA/C,EANC+K,EAMD/K,sBACAC,EAPC8K,EAOD9K,qBAEI4K,EAA4Bh3D,KAAKU,MAAjCs2D,wBAEFG,EACFl4D,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACKxtC,KAAKm1D,iBAWNl2D,GAAAC,EAAAC,cAAA,OAAKC,UAAW,mBACZH,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ+xC,aAAaqD,eAIxC,OACIn4D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACV8vD,IAAcltC,GAAQktC,UAAU37C,OAAO8jD,MAAMr4D,OAASm4D,EACtDjI,IACGltC,GAAQktC,UAAU37C,OAAO+jD,eAAet4D,OACxCC,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAACwmD,GAAD,CACI9wD,GAAG,+BACHu5C,QAASikB,EACTlkB,mBAAoBukB,EACpB1zD,MACImtD,GAAyBC,OACnB9rD,EACAgyD,EAEVhxD,YACI6qD,GAAyBC,EACnB,qEACApqC,GAAQ+xC,aAAagD,oBAE/BptB,SACIyiB,GACAD,GACA6K,IAIP1E,GAAmC6E,WA7hBhC/0D,KAAMC,WE1BnBk1D,GC4D4B,SAAC13D,GACxC,IAAM6tD,EAA+B,WAApB7tD,EAAMqvD,UACjB6F,EAAal1D,EAAMyyD,gCACnBzyD,EAAMyyD,gCAAgCtzD,WACtCsB,EAEAk3D,EAASpiE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAQyK,EAAR,CAAe6tD,WAAUqH,eAExC,OAAO91D,GAAAC,EAAAC,cAACs4D,GAAkBD,ICvDxBE,GAAmB,GAAAxuD,OADH,OACG,WACnByuD,GAAwB,GAAAzuD,OAFR,OAEQ,gBAIxB0uD,GAAuB5F,GAAI,CAFX,OAEW,GAAA9oD,OADX,OACW,cAC3B2uD,GAAyB7F,GAAI,CAHb,OAGa,GAAA9oD,OAFb,OAEa,gBAI7B4uD,GAAsB9F,GAAI,CAPV,OAO0B,WCvBjC+F,GDyBU,SAACl4D,GAAkB,IAChCixB,EAA0DjxB,EAA1DixB,OAAQtxB,EAAkDK,EAAlDL,YAAaw4D,EAAqCn4D,EAArCm4D,SAAU9rD,EAA2BrM,EAA3BqM,KAAMjE,EAAqBpI,EAArBoI,MAAOgwD,EAAcp4D,EAAdo4D,UADZhZ,EAEVC,qBAAS,GAFCC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAEjCiZ,EAFiC/Y,EAAA,GAExBgZ,EAFwBhZ,EAAA,GAGpCiZ,EAhBc,OAiBdtnC,EAAQsnC,EAAgBV,GACjBl4D,IAAa44D,EAAgBT,IACxC,IAAIU,EAAsBT,GACrBM,IAASG,EAAsBR,IACpC,IAAMS,EAAkBpsD,EAAUgsD,EAAU,IAAM,IAAO,GACnDK,EAAK,WAAwB,QAAAC,EAAApvD,UAAAV,OAApB+vD,EAAoB,IAAAltD,MAAAitD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAApBD,EAAoBC,GAAAtvD,UAAAsvD,GAC/B,OAAO1G,GAAG,CAAEoG,GAAFlvD,OAAoBuvD,KASlC,OACIx5D,GAAAC,EAAAC,cAAA,OAAKC,UAAWg5D,EAAexuB,QARnB,WACNouB,GAAUA,GAAUlnC,KAQtB7xB,GAAAC,EAAAC,cAAA,OAAKC,UAAWm5D,EA/BF,cAgCVt5D,GAAAC,EAAAC,cAAA,YAAO8I,GAAS,MACbgwD,GAAah5D,GAAAC,EAAAC,cAAA,YAAO84D,IAE3Bh5D,GAAAC,EAAAC,cAAA,OAAKC,UAAWm5D,EAlCN,WAmCHrsD,GACCjN,GAAAC,EAAAC,cAAA,OAAKC,UAAWm5D,EAAGF,IACfp5D,GAAAC,EAAAC,cAAA,YAAO+M,IAGfjN,GAAAC,EAAAC,cAAA,OAAKC,UAAWm5D,EAAGT,IAAsBluB,QAhBtC,SAAClS,GACZygC,GAAYD,GACZxgC,EAAMkf,oBAeO0hB,MEzDNK,GCekB,SAAC94D,GAAkB,IAE5C4tC,EAMA5tC,EANA4tC,QACAmrB,EAKA/4D,EALA+4D,iBACAZ,EAIAn4D,EAJAm4D,SACA9rD,EAGArM,EAHAqM,KACAjE,EAEApI,EAFAoI,MACAgwD,EACAp4D,EADAo4D,UAMJ,OACIh5D,GAAAC,EAAAC,cAAA,OAAKC,UAhBS,mBAiBPw5D,GACC35D,GAAAC,EAAAC,cAAC05D,GAAD,CAAgBprB,QAASA,EAASC,YAP9B,SAAC/4C,GACb,IAAM05D,IAAY1f,KAAE/7B,IAAIje,EAAG,gBAC3BqjE,EAAS3J,MAOLpvD,GAAAC,EAAAC,cAAC25D,GAAD,CACIhoC,OAAQ2c,EACRuqB,SAAUA,EACV9rD,KAAMA,EACNjE,MAAOA,EACPgwD,UAAWA,MCvC3B,SAASc,KACL,OAD6B3vD,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAJ,IACdqB,QAAQ,IAAKlC,OAAOywD,aAAa,MAGhD,SAASC,KAAiC,IAAlB/nD,EAAkB9H,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAJ,GAClC,OAAO2vD,GAAK,GAAA7vD,OAAIgI,EAAJ,OAGhB,SAASgoD,KACL,OADoC9vD,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAJ,IACrBqB,QAAQ,OAAQ,IC0B/B,IAAMuX,GAAUqP,GAAgBsiC,WAAWwF,cAErCC,GAAsBpH,GAAI,CADV,iBAC0B,eAC1CqH,GAAkBrH,GAAI,CAFN,iBAEsB,WACtCsH,GAAmBtH,GAAI,CAACqH,GAAiB,YCtChCF,GDwCmB,SAACt5D,GAAkB,IAE7C05D,EAOA15D,EAPA05D,aACAxH,EAMAlyD,EANAkyD,cACAmB,EAKArzD,EALAqzD,qBACAC,EAIAtzD,EAJAszD,eACAC,EAGAvzD,EAHAuzD,yBACAC,EAEAxzD,EAFAwzD,sBACAnnD,EACArM,EADAqM,KAR6C+yC,EAULC,oBAA0B,MAVrBC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAU1CphB,EAV0CshB,EAAA,GAU1Bqa,EAV0Bra,EAAA,GAAAG,EAWnBJ,oBAAiB,IAXEK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAW1C/0B,EAX0Cg1B,EAAA,GAWjCka,EAXiCla,EAAA,GAAAma,EAYzBxa,oBAAwB,MAZCya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAY1C5X,EAZ0C6X,EAAA,GAYpCC,EAZoCD,EAAA,GAAAE,EAab3a,qBAAkB,GAbL4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAa1CE,EAb0CD,EAAA,GAa7BE,EAb6BF,EAAA,GAAAG,EAerB/a,oBAAwB,MAfHgb,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAe1CzN,EAf0C0N,EAAA,GAelCC,EAfkCD,EAAA,GAAAE,EAiBTlb,oBAA8B,MAjBrBmb,EAAAjlE,OAAAuhC,GAAA,EAAAvhC,CAAAglE,EAAA,GAiB1CE,EAjB0CD,EAAA,GAiB5BE,EAjB4BF,EAAA,GAmBjDpnB,qBAAU,WACFpzC,EAAMg+B,iBACN27B,EAAkB35D,EAAMg+B,gBACxB47B,EAAW1S,GAAsBlnD,EAAMg+B,iBAEnCh+B,EAAMg+B,eAAe7S,UACrB4uC,EAAQ/5D,EAAMg+B,eAAe7S,WAIrCgvC,SAEiC15D,IAAzBT,EAAMg+B,gBACmB,OAAzBh+B,EAAMg+B,iBAIRs1B,IACFgH,EACIpI,GAAiB,CACb1kD,SAAUo1C,GAAYxkB,GACtBrvB,UAAW,GACXC,SAAU,KAIlB0rD,EAAgB,MAErB,IAEH,IAKMvC,EAAW,SAAC3J,GACd2L,EAAa3L,GACRA,GAASmL,EAAkB,MAC1BpG,GAA0BA,EAAyB/E,GACzDoL,EAAW,IACXG,EAAQ,OAoBZ,OACI36D,GAAAC,EAAAC,cAAA,OAAKC,UArFS,kBAsFVH,GAAAC,EAAAC,cAAA,YAAO45D,GAAM7sD,IACbjN,GAAAC,EAAAC,cAAA,OAAKC,UAAWg6D,IACZn6D,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,QAASssB,EACTrsB,YAAa,WACTsqB,GAAS,IAEb9rD,KAAM8V,GAAQwxC,IACdx0D,MAAOgjB,GAAQwxC,MAEnBv0D,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,SAAUssB,EACVrsB,YAAa,WACTsqB,GAAS,IAEb9rD,KAAM8V,GAAQyxC,GACdz0D,MAAOgjB,GAAQyxC,OAGrBsG,GACE96D,GAAAC,EAAAC,cAAA,OAAKC,UAAWi6D,MACT7M,GACCvtD,GAAAC,EAAAC,cAACu0D,GAAD,CACI75C,OAAQygD,QAAgBh6D,EACxBsqC,cA5CF,SAACwN,GACnB,IAAMoiB,EAA2B,GAC3BC,GACDjO,IAAW7d,KAAE0X,QAAQmG,EAAO59C,UAAWwpC,EAAMxpC,WAC5C8rD,GACDlO,IAAW7d,KAAE0X,QAAQmG,EAAO39C,SAAUupC,EAAMvpC,UAC7C4rD,GAAoBriB,EAAMxpC,UAAUlG,QAAU,IAC9C8xD,EAAW5rD,UACPyiB,GAAgBg3B,2BAA2BsS,WAAW9gD,OAAO+gD,mBAEjEF,GAAmBtiB,EAAMvpC,SAASnG,QAAU,IAC5C8xD,EAAW3rD,SACPwiB,GAAgBg3B,2BAA2BsS,WAAW9gD,OAAOghD,kBAErEV,EAAU/hB,GACVmiB,EAAgBC,GACVrH,GAAgBA,EAAe/a,IA6BjB7kC,OAAQi5C,IAGhBvtD,GAAAC,EAAAC,cAAA,OAAKC,UAAWk6D,IACZr6D,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAO++D,EACP3uB,cA/DD,SAACj2C,GACpB,IAAMmmE,EAAYnsB,KAAE/7B,IAAIje,EAAG,eAAgB,IAC3C8kE,E7I4yBR,WACI,OADqDrwD,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAZ,IAC5BqB,QAAQ,0BAA2B,I6I7yBjCswD,CAAoBD,IACzB5H,GAAsBA,EAAqB4H,IA6D7B5uD,KAAM8V,GAAQuI,QACdvrB,MAAOurB,IAEXtrB,GAAAC,EAAAC,cAAC67D,GAAD,CACIn9B,eACMA,QAAkCv9B,EAExC+kD,YAAa,SAAC96B,GACVqvC,EAAQrvC,EAAQS,UAAY,MAC5BqoC,EAAsB9oC,IAE1Bre,KAAM8V,GAAQ+I,aAElB9rB,GAAAC,EAAAC,cAACmsC,GAAD,CACI3B,UAAU,EACVz9B,KAAM8V,GAAQ8/B,KACd9iD,MAAO8iD,GAAQ,SEjKrCmZ,GAAyBjJ,GAAI,CADL,eACqB,UAC7CkJ,GAAwBlJ,GAAI,CAFJ,eAEoB,SCTnCmJ,GDWiB,SAACt7D,GAAkB,IACvCqM,EAAgBrM,EAAhBqM,KAAMjE,EAAUpI,EAAVoI,MACd,OACIhJ,GAAAC,EAAAC,cAAA,OAAKC,UAPiB,gBAQlBH,GAAAC,EAAAC,cAAA,QAAMC,UAAW67D,IAAiBhzD,GAClChJ,GAAAC,EAAAC,cAAA,KAAGC,UAAW87D,IAAgBhvD,KEHpC8V,GAAUqP,GAAgBxpB,OAE1BuzD,GAAkBpJ,GAAI,CADN,iBACsB,UAAW,MACjDqJ,GAAoBrJ,GAAI,CAFR,iBAEwB,YAAa,MACrDsJ,GAAkBtJ,GAAI,CAHN,iBAGsB,WACtCuJ,GAAmBvJ,GAAI,CAACsJ,GAAiB,YACzCE,GAAsBxJ,GAAI,CALV,iBAK0B,eAC1CyJ,GAAuBzJ,GAAI,CAACuJ,GAAkB,iBCpBrCG,GDsBmB,SAAC77D,GAAkB,IAE7C87D,EAMA97D,EANA87D,SACA76C,EAKAjhB,EALAihB,SACA86C,EAIA/7D,EAJA+7D,YACA/mE,EAGAgL,EAHAhL,GACAu6C,EAEAvvC,EAFAuvC,KACAC,EACAxvC,EADAwvC,gBAEEwsB,EAAeh8D,EAAfg8D,gBACav7D,IAAfu7D,IAA0BA,GAAa,GAC3C5oB,qBAAU,WACN,GAAM7D,GAAUv6C,IAAO8mE,EAAU,CAC7B,IAAMG,EAAyB/b,SAASC,eAAenrD,GACvD,GAAMinE,EAAI,CACN,IAAMC,EAAmBD,EAAGE,wBAAwB17C,OAC9C27C,EAAoB/oD,OAAOgpD,YACjCJ,EAAGK,eAAe,CACdC,SAAU,SACVC,MAAOJ,EAAYF,EAAW,QAAU,cAIrD,CAAC3sB,IACJ,IAAIgpB,EAhCc,iBAmClB,OAFKhpB,EACMusB,IAAUvD,EAAgBiD,IAD1BjD,EAAgBgD,GAGvBn8D,GAAAC,EAAAC,cAAA,OAAKC,UAAWg5D,GACXhpB,GACGnwC,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACKquB,GAAc58D,GAAAC,EAAAC,cAAA,OAAKC,UAAWo8D,KAC/Bv8D,GAAAC,EAAAC,cAAA,OAAKC,UAAWk8D,IACZr8D,GAAAC,EAAAC,cAAA,OAAKC,UAAWm8D,GAAkB1mE,GAAIA,GACjCw6C,GACGpwC,GAAAC,EAAAC,cAAA,QACIC,UAAWq8D,GACX7xB,QAASgyB,EACTzwD,KAAK,SACLq/B,SAAU,GAETxoB,GAAQutB,MAAMC,aAGtB1uB,OElEdw7C,GCGG,kBACdr9D,GAAAC,EAAAC,cAAA,OAAKC,UAHa,qBAIdH,GAAAC,EAAAC,cAAA,cCLOo9D,GCSgB,SAAC18D,GAAiB,IACrC+pC,EAAY/pC,EAAZ+pC,QACR,OACI3qC,GAAAC,EAAAC,cAAA,QAAMC,UAPQ,gBAQVH,GAAAC,EAAAC,cAAA,OACIC,UARC,YASDwqC,QAAS,WACLA,MATF,OCEZ4yB,GAAwBxK,GAAI,CADJ,mBACoB,QAAS,MACrDyK,GAAyBzK,GAAI,CAFL,mBAEqB,SAAU,MACvDqJ,GAA4BrJ,GAAI,CAHR,mBAGwB,WAAY,OCXnD0K,GDaoB,SAAC78D,GAAiB,IACzCqM,EAAiCrM,EAAjCqM,KAAMywD,EAA2B98D,EAA3B88D,cAAetO,EAAYxuD,EAAZwuD,QACvBpkB,EAAuB,CAPH,oBAQpB2yB,IAAoBD,GAAmC,SAAlBA,EAI3C,OAHMzwD,IAAS0wD,EAAQ3yB,EAAWxrC,KAAKg+D,IAC5BvwD,GAAQ0wD,EAAQ3yB,EAAWxrC,KAAK+9D,IACtCvyB,EAAWxrC,KAAK48D,IAEjBp8D,GAAAC,EAAAC,cAAA,OAAKC,UAAW6qC,EAAWjgC,KAAK,QACzBkC,GAAQ0wD,GAAU39D,GAAAC,EAAAC,cAAA,YAAO+M,GAC5BjN,GAAAC,EAAAC,cAAA,OAAKC,UAAaivD,EAAU,KAAO,UAChCniD,IAAS0wD,GAAU39D,GAAAC,EAAAC,cAAA,YAAO+M,KEAnC8V,GAAUqP,GAAgBg3B,2BAA2BsS,WAErDkC,GAAqB,GAAA3zD,OAAM8Y,GAAQg2B,OAAOppC,WAC1CkuD,GAAoB,GAAA5zD,OAAM8Y,GAAQg2B,OAAOnpC,UACzCkuD,GAAkD,CACpD,CACIloE,GAAImtB,GAAQ+6C,cAAcC,GAC1BrxD,MAAOqW,GAAQ+6C,cAAcC,GAC7Bh+D,MAAOyjD,GAAYxkB,IAEvB,CACIppC,GAAImtB,GAAQ+6C,cAAcE,IAC1BtxD,MAAOqW,GAAQ+6C,cAAcE,IAC7Bj+D,MAAOyjD,GAAYya,KAEvB,CACIroE,GAAImtB,GAAQ+6C,cAAcrpD,GAC1B/H,MAAOqW,GAAQ+6C,cAAcrpD,GAC7B1U,MAAOyjD,GAAY0a,KC1CZC,GD8CiB,SAACv9D,GAAiB,IACtCga,EAAkCha,EAAlCga,OAAQ+wB,EAA0B/qC,EAA1B+qC,cAAer3B,EAAW1T,EAAX0T,OACzB0kC,EAAoB,SAAColB,GACvB,IAAMjlB,EAAgBzJ,KAAE2uB,MAAM,GAAI/pD,EAAZne,OAAAkuB,GAAA,EAAAluB,CAAA,GAAyBioE,IAC/CzyB,EAAcwN,IAWZmlB,EACF5uB,KAAE7jC,KACEiyD,GACA,SAAC3uD,GAAD,OACIA,EAAOpP,QAAUuU,EAAOlG,YAC3B0vD,GAAc,GACvB,OACI99D,GAAAC,EAAAC,cAAA,OAAKC,UA3CiB,iBA4ClBH,GAAAC,EAAAC,cAACwmD,GAAD,CACInrD,QAAUqf,GAAUA,EAAOxM,eAAa/M,EACxC6tC,mBAnBoB,SAAC9gC,GAC7B4qC,EAAkB,CAAE5qC,SAAUA,EAASrO,SAmB/BovC,QAAS2uB,GACT7wD,KAAM8V,GAAQw7C,YACdx+D,MAAOu+D,IAEXt+D,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,QAAUqf,GAAUA,EAAOjL,gBAActO,EACzCsqC,cAvBiB,SAAClT,GAC1BugB,EAAkB,CAAErpC,UAAW8oB,EAAM94B,OAAOI,SAuBpCkN,KAAM2wD,GACN79D,MAAOuU,EAAO3E,YAElB3P,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,QAAUqf,GAAUA,EAAOhL,eAAavO,EACxCsqC,cA1BgB,SAAClT,GACzBugB,EAAkB,CAAEppC,SAAU6oB,EAAM94B,OAAOI,SA0BnCkN,KAAM4wD,GACN99D,MAAOuU,EAAO1E,aElFxBmT,GAAUqP,GAAgBsiC,WAAW8J,eAkBrCC,GAAW,SAACtvD,EAAgBuvD,EAAgBC,GAC9C,IAIMC,EAAS77C,GAFG27C,EAAiB,MAAT,QAEOE,OACjC,OAASA,EAAOD,IAAkBC,EAAOD,GAAaxvD,GAChDyvD,EAAOD,GAAaxvD,GANL,QAiBZ0vD,GAAiB,SAAC1vD,EAAgBuvD,GAC3C,IAAMI,EAAiB,GACjBC,EAAWL,EAAoB,CAAC,EAAG,GAAhB,CAAC,EAAG,EAAG,GAE1BM,EAAYP,GAAStvD,EAAQuvD,EAAOK,EAAQA,EAAQt1D,OAAS,IAiBnE,MAfkB,UAAdu1D,GAAuC,WAAdA,EACzBD,EAAQvyD,QAAQ,SAAA0nC,GACRA,IAAQ6qB,EAAQt1D,OAAS,EAAGq1D,EAAQ5qB,GAAO8qB,EAC1CF,EAAQ5qB,GAAO,UAGxB6qB,EAAQvyD,QAAQ,SAAA0nC,GACZ4qB,EAAQ5qB,GACiC,UAArCuqB,GAAStvD,EAAQuvD,EAAOxqB,EAAM,GACxB,QACCuqB,GAAStvD,EAAQuvD,EAAOxqB,KAI3C4qB,EAAQt/D,KA3BM,SAAC2P,EAAgBuvD,GAI/B,OADe37C,GAFG27C,EAAiB,MAAT,QAEOnf,OACnBpwC,GAuBD8vD,CAAU9vD,EAAQuvD,IACxBI,GAsBLI,GAAiD,SAAAjgE,GAAe,IAAZuB,EAAYvB,EAAZuB,MAChD2+D,EApBc,SAAC3+D,GACrB,OAAQA,GACJ,IAAK,QACD,OAAO6C,GAAU,yBAErB,IAAK,SACD,OAAOA,GAAU,4BAErB,IAAK,MACD,OAAOA,GAAU,iCAErB,IAAK,SACD,OAAOA,GAAU,8BAErB,QACI,OAAO,MAKH+7D,CAAgB5+D,GAE5B,OAAO2+D,EAAMn/D,GAAAC,EAAAC,cAAA,OAAKgY,IAAKinD,EAAKnqB,IAAKx0C,IAAY,MAGpC6+D,GAKR,SAAAxlE,GAAA,IAAG2G,EAAH3G,EAAG2G,MAAOm5C,EAAV9/C,EAAU8/C,OAAQtzB,EAAlBxsB,EAAkBwsB,aAAlB,OACDrmB,GAAAC,EAAAC,cAAA,OAAKC,UAAS,WAAA8J,OAAa0vC,EAAM,kBAAA1vC,OAAqB0vC,GAAW,KAC7D35C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,QACXH,GAAAC,EAAAC,cAACo/D,GAAD,CAAa9+D,MAAOA,KAExBR,GAAAC,EAAAC,cAAA,OACIC,UAAS,eAAA8J,OAAiBzJ,EAAjB,KAAAyJ,OACLoc,EAAe,eAAiB,KAGnCszB,GAAU35C,GAAAC,EAAAC,cAAA,OAAKC,UAAS,UAAA8J,OAAY0vC,EAAZ,WAAA1vC,OAA4BzJ,MAG9C,UAAVA,GAAgC,QAAXm5C,GAClB35C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAA,aACAF,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,2BAA4B2xC,IAAI,SACpDh1C,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQw8C,YAMfC,GAIR,SAAA9oD,GAAA,IAAGhK,EAAHgK,EAAGhK,MAAOxS,EAAVwc,EAAUxc,KAAMulE,EAAhB/oD,EAAgB+oD,OAAhB,OACDz/D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,QACVjG,GACG8F,GAAAC,EAAAC,cAAA,KAAGC,UAAS,cAAA8J,OAAgBw1D,EAAS,kBAAoB,KACpDvlE,GAGT8F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,eAAeuM,GAC5B1M,GAAAC,EAAAC,cAAA,eCxHF6iB,GAAUqP,GAAgBsiC,WAAW8J,eCR5BA,GDkB0B,SAAAv/D,GAInC,IAHF6M,EAGE7M,EAHF6M,SACAmD,EAEEhQ,EAFFgQ,MACAqO,EACEre,EADFqe,aACE0iC,EAC6BC,oBAAwB,QADrDC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK0f,EADLxf,EAAA,GACkByf,EADlBzf,EAAA,GAGM1d,EAAgC12B,EAAhC02B,YAAa7B,EAAmB70B,EAAnB60B,eACbG,EAAyCh1B,EAAzCg1B,mBAAoBC,EAAqBj1B,EAArBi1B,iBAEtB29B,EAAQvuC,QACV7S,IAAiBjnB,EAAcsgD,cAC3BnU,GACAA,IAAgBhsC,EAAamyD,kBAqC/BiX,EAhCa,WACf,IAAMC,EAiBK5wD,GAASA,EAAMP,0BAMpBowD,GAJWJ,EACX,CAAC39B,EAAkB8+B,EAAe/+B,GAClC,CAACC,EAAkB8+B,OAAex+D,EAAWy/B,IAE1BzrC,IAAI,SAAA+M,GAAE,OAAOA,EAAKyI,GAAiBzI,GAAMA,IAKlE,OAHK08D,EAAQ,KACTA,EAAQ,GAAK,uBAEVA,EAGGgB,GA9CZC,EA+HGrB,EAnCsB,WAAM,IAAAsB,EACGnB,GAAel+B,GAAgB,GADlCs/B,EAAA9pE,OAAAuhC,GAAA,EAAAvhC,CAAA6pE,EAAA,GACtBE,EADsBD,EAAA,GACfE,EADeF,EAAA,GACP1gB,EADO0gB,EAAA,GAGvBG,EAAa,CACfC,MAAkB,SAAXF,GAAgC,gBAAXA,EAC5B3/D,MAAO2/D,GAEX,MAAO,CACHG,UACItgE,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACqgE,GAAD,CAAM7zD,MAAM,eAAexS,KAAM0lE,EAAM,KACvC5/D,GAAAC,EAAAC,cAACsgE,GAAD,CAAS7mB,OAAO,QAAQn5C,MAAO0/D,IAC/BlgE,GAAAC,EAAAC,cAACqgE,GAAD,CAAM7zD,MAAM,wBAAwBxS,KAAM0lE,EAAM,KAC/CQ,EAAWC,MACRrgE,GAAAC,EAAAC,cAACsgE,GAAD,CACIn6C,aAAc+5C,EAAWC,MACzB7/D,MAAO4/D,EAAW5/D,QAGtBR,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACsgE,GAAD,CAAS7mB,OAAO,MAAMn5C,MAAO2/D,IAC7BngE,GAAAC,EAAAC,cAACqgE,GAAD,CACId,QAAM,EACNvlE,KAAM0lE,EAAM,GACZlzD,MAAM,wBAM1B6yC,UAK0BkhB,GA/ET,WAAM,IAAAC,EACY7B,GACnCl+B,GACA,GAHuBggC,EAAAxqE,OAAAuhC,GAAA,EAAAvhC,CAAAuqE,EAAA,GACpBR,EADoBS,EAAA,GACbR,EADaQ,EAAA,GACLC,EADKD,EAAA,GACEphB,EADFohB,EAAA,GAMrBP,EAAa,CACfC,MAAkB,SAAXF,GAAgC,gBAAXA,EAC5B3/D,MAAO2/D,GAGLU,EACQ,WAAVX,EAAqB,sBAAwB,uBAEjD,MAAO,CACHI,UACItgE,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACqgE,GAAD,CAAM7zD,MAAM,eAAexS,KAAM0lE,EAAM,KACvC5/D,GAAAC,EAAAC,cAACsgE,GAAD,CAAS7mB,OAAO,QAAQn5C,MAAO0/D,IAC/BlgE,GAAAC,EAAAC,cAACqgE,GAAD,CAAM7zD,MAAOm0D,EAAa3mE,KAAM0lE,EAAM,KAErCQ,EAAWC,MACRrgE,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACsgE,GAAD,CAAShgE,MAAO4/D,EAAW5/D,QAC3BR,GAAAC,EAAAC,cAACsgE,GAAD,CAASn6C,cAAY,EAAC7lB,MAAO4/D,EAAW5/D,SAG5CR,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACsgE,GAAD,CAAShgE,MAAO2/D,IAChBngE,GAAAC,EAAAC,cAACqgE,GAAD,CAAM7zD,MAAM,wBAAwBxS,KAAM,KAC1C8F,GAAAC,EAAAC,cAACsgE,GAAD,CAAS7mB,OAAO,MAAMn5C,MAAOogE,IAC7B5gE,GAAAC,EAAAC,cAACqgE,GAAD,CACId,QAAM,EACNvlE,KAAM0lE,EAAM,GACZlzD,MAAM,wBAM1B6yC,UAuCKuhB,GAELR,EAjINP,EAiIMO,UAAW/gB,EAjIjBwgB,EAiIiBxgB,OAEnB,OACIv/C,GAAAC,EAAAC,cAAA,WAASC,UAAU,mBACfH,GAAAC,EAAAC,cAAA,OAAKC,UAAS,YAAA8J,OAAcy0D,EAAQ,iBAAmB,KAClD4B,GAELtgE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4BACXH,GAAAC,EAAAC,cAAA,MAAIyqC,QA7HG,kBAAMg1B,EAAwB,OAAhBD,EAAuB,OAAS,QA8HhD38C,GAAQyuB,QAAQxoC,MAAO,IACxBhJ,GAAAC,EAAAC,cAAA,KAAGC,UAAS,SAAA8J,OAAWy1D,MAGV,OAAhBA,GACG1/D,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,MAAIC,UAAU,YACTo/C,EAAOlqD,IAAI,SAAC0rE,EAAY7sB,GACrB,IAAM7R,EAAQkd,EAAO91C,OAAS,EAAIyqC,EAC5BzjC,EAAOmvD,EAAMv9B,GAEnB,OACIriC,GAAAC,EAAAC,cAAA,MACIC,UAAS,GAAA8J,OACG,IAARiqC,EAAY,QAAU,IAE1B7zC,IAAK6zC,GAEJzjC,GAAc,QAK/BzQ,GAAAC,EAAAC,cAAA,MAAIC,UAAU,aACTo/C,EAAOlqD,IAAI,SAAC0rE,EAAY7sB,GAAb,OACRl0C,GAAAC,EAAAC,cAAA,MACIG,IAAK6zC,EACL/zC,UAAS,GAAA8J,OAAa,IAARiqC,EAAY,QAAU,KAEnC6sB,8BE9K/BC,GAAU5uC,GAAgB6uC,eCfjBC,GDyBI,SAAAjiE,GAMI,IALnBkiE,EAKmBliE,EALnBkiE,aACA1zD,EAImBxO,EAJnBwO,OACA2zD,EAGmBniE,EAHnBmiE,eACAC,EAEmBpiE,EAFnBoiE,WACA1E,EACmB19D,EADnB09D,YACmB3c,EACeC,qBAAS,GADxBC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACZlV,EADYoV,EAAA,GACDohB,EADCphB,EAAA,GAEb1E,EAAW+lB,yBACXl6B,EAASm6B,uBAETC,EAAc,eAAA5nE,EAAA1D,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAC,EAAOzkB,GAAP,IAAAqzD,EAAAzwC,EAAA,OAAA5D,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,UACnBpf,EAAEgsE,iBAEGr6B,GAAWmU,EAHG,CAAAnhC,EAAAvF,KAAA,eAIXssD,GACAA,GAAe,EAAOJ,GAAQW,oBALnBtnD,EAAAtF,OAAA,oBASbg0C,EAAUvN,EAASomB,WAAWC,sBATjB,CAAAxnD,EAAAvF,KAAA,eAWXssD,GACAA,GAAe,EAAOJ,GAAQc,cAZnBznD,EAAAtF,OAAA,wBAiBnBusD,GAAa,GAjBMjnD,EAAAvF,KAAA,GAkBEuyB,EAAO06B,mBAAmBZ,EAAc,CACzDa,eAAgB,CACZC,KAAMlZ,EACNmZ,gBAAiB,CACb9hE,KAAMihE,MAtBC,QAkBb/oD,EAlBa+B,EAAAmuB,KA0BnB84B,GAAa,GACbv4D,GAAI,qBAAsBuP,GAEtBA,EAAO/c,MACH6lE,GAAgBA,GAAe,EAAO9oD,EAAO/c,MAAMlB,SAChD+mE,GAAgBA,GAAe,GA/BvB,yBAAA/mD,EAAApF,SAAAkF,MAAH,gBAAAgoD,GAAA,OAAAtoE,EAAAkhB,MAAAha,KAAAoJ,YAAA,GAkCdi4D,EAAiB,SAACC,EAAoBr5D,GAAkB,IAAAq3C,EACxBJ,qBAAS,GADeK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GACnDiiB,EADmDhiB,EAAA,GACxCiiB,EADwCjiB,EAAA,GAQ1D,OACItgD,GAAAC,EAAAC,cAAA,WACK8I,EADL,IAEIhJ,GAAAC,EAAAC,cAACsiE,GAAA,gBAAD,CAAiBv1D,KAAMo1D,EAAYI,OARnB,WACpBF,GAAa,GACbvtD,WAAW,kBAAMutD,GAAa,IAAQ,QAO9BviE,GAAAC,EAAAC,cAAA,UAAQuP,KAAK,UACR4yD,EACDriE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACVmiE,GAAatiE,GAAAC,EAAAC,cAAA,wBACdF,GAAAC,EAAAC,cAAA,OACI80C,IAAI,YACJ98B,IAAK7U,GAAU,4BASrCq/D,EAA6B,kBAAfjnE,GAAOY,IAE3B,OACI2D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,eAAewiE,SAAUlB,GACrCzhE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,iBACf2xC,IAAI,iBACJ5zB,MAAO,OAIfphB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,gBAAQ8gE,GAAQ4B,kBAAhB,KACA5iE,GAAAC,EAAAC,cAAC2iE,GAAA,kBAAD,CAAmB1iE,UAAU,8BAGjCH,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,gBAAQ8gE,GAAQ8B,kBAAhB,KACA9iE,GAAAC,EAAAC,cAAC2iE,GAAA,kBAAD,CAAmB1iE,UAAU,8BAGjCH,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,gBAAQ8gE,GAAQ+B,eAAhB,KACA/iE,GAAAC,EAAAC,cAAC2iE,GAAA,eAAD,CAAgB1iE,UAAU,4BAIjCuiE,GACG1iE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,YAAO8gE,GAAQgC,YACdZ,EACG,mBACA,oCAEHA,EACG,mBACA,sCAEHA,EACG,mBACA,mCAKZpiE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAAA,UACIyqC,QAASgyB,EACTltD,KAAK,SACLtP,UAAU,iBAET6gE,GAAQiC,eAEbjjE,GAAAC,EAAAC,cAAA,UAAQuP,KAAK,SAAStP,UAAU,mBAC3B6gE,GAAQkC,gBADb,KACgCz1D,EADhC,WAKHq9B,GACG9qC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UACXH,GAAAC,EAAAC,cAACijE,GAAD,+BEhKTC,GCqBsB,SAAAnkE,GAAwC,IjK4tC/CuxD,EiK5tCUrhB,EAAqClwC,EAArCkwC,QAASk0B,EAA4BpkE,EAA5BokE,YAAgBziE,EAAYzK,OAAAu4B,EAAA,EAAAv4B,CAAA8I,EAAA,2BACrEqkE,EAA0B,GACxBC,EAAWptE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAQyK,EAAR,CAAeyB,YAAa,MAwB7C,OAtBIkU,GAAoB8sD,KACpBC,EAAYn0B,GAGZh5B,GAAuBktD,KACvBE,EAAY74B,UAAW,EACvB64B,EAAYl0B,SAAU,GAGtB54B,GAAqB4sD,KACrBC,EAAYhyD,KACR69B,EACA,SAAAt1C,GAAA,IAAGkG,EAAHlG,EAAGkG,MAAH,OACI8W,GAAgB9W,KAChB8W,GAAgBwsD,EAAYG,iBAIpCD,EAAYE,gBjKssCUjT,EiKrsCW8S,EAAjCA,EjKqsCqB,CACzB,CACI1tE,GAAI,aACJ8W,MAAO,uBACP3M,MAAO,eAJckK,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAMtBq6D,KiKvsCCxwD,GAAAC,EAAAC,cAACwmD,GAADvwD,OAAAgzB,OAAA,CACIgmB,QAASm0B,GACLC,EAFR,CAGIr0B,mBAAoB,SAAC56B,GAEb+0B,mBAAQ/0B,IACRA,EAAO,IACa,eAApBA,EAAO,GAAGvU,MAEVwjE,EAAYr0B,mBAAmBo0B,GAGnCC,EAAYr0B,mBAAmB56B,IAEnCvU,MACIwjE,EAAYxjE,OACZwjE,EAAYxjE,MAAM0J,SAAW65D,EAAU75D,OACjC65D,EAAU,GACVC,EAAYxjE,8BC7D5BgjB,GAAUqP,GAAgBsxC,yBA2KjBC,GA3JwC,SAAA1kE,GAOjD,IANFwR,EAMExR,EANFwR,KACAmzD,EAKE3kE,EALF2kE,kBACAC,EAIE5kE,EAJF4kE,mBACAC,EAGE7kE,EAHF6kE,iBACAC,EAEE9kE,EAFF8kE,gBAEEC,EAAA/kE,EADFglE,WAAcC,EACZF,EADYE,UAAWhoD,EACvB8nD,EADuB9nD,KAAMioD,EAC7BH,EAD6BG,SAAUC,EACvCJ,EADuCI,WAqHzC,OACIpkE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACXH,GAAAC,EAAAC,cAAC05D,GAAD,CACI3sD,KAAMwD,EAAK/D,MACX+hC,YAAa,kBAAMm1B,EAAkBnzD,IACrC+9B,QAAS01B,IAGZA,GACGlkE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACV4iB,GAAQshD,YAAYhvE,IAAI,SAACivE,EAAMpwB,GAAP,OACrBl0C,GAAAC,EAAAC,cAAC8yD,GAAD,CACI3yD,IAAK6zC,EACLjnC,KAAMq3D,EAAK53D,MACX+hC,YAAa,kBACTo1B,EAAmB,CACfU,IAAK9zD,EAAK8zD,IACVxkE,MAAOukE,EAAKvkE,SAGpByuC,QAAStyB,IAASooD,EAAKvkE,MACvBA,MAAOukE,EAAKvkE,OAASjH,EAAY0d,UAMhD0tD,GAxCkB,WACvB,OAAQhoD,GACJ,KAAKpjB,EAAY0d,KACb,OAtEJxW,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6CACT4iB,GAAQyhD,aACN/zD,EAAK8zD,KACPlvE,IAAI,SAACovE,EAAavwB,GAAd,OACFl0C,GAAAC,EAAAC,cAAA,OACIG,IAAK6zC,EACL/zC,UAAU,wDAEVH,GAAAC,EAAAC,cAACozC,GAAD,CACI9E,UACI21B,EAASM,EAAYF,WACeljE,IAA9B8iE,EAASM,EAAYF,KAG/Bt3D,KAAMw3D,EAAY/3D,MAClBgiC,YAAa,WACTo1B,EAAiB,CACbY,QAASj0D,EAAK8zD,IACdE,iBAGRh2B,YAAa,aACb1uC,MAAO0kE,EAAYF,MAGvBvkE,GAAAC,EAAAC,cAAA,WACK6iB,GAAQ4hD,YAAYtvE,IACjB,SAAAqhB,GAA8B,IAA3B3W,EAA2B2W,EAA3B3W,MAAO2M,EAAoBgK,EAApBhK,MAAOk4D,EAAaluD,EAAbkuD,OACPV,EACFE,EAAWK,EAAYF,KAAKxkE,KAC5BlH,EAAQ2d,KAMZ,OAJkBouD,GACZA,EAAOzxB,SAASsxB,EAAYF,KAK1BvkE,GAAAC,EAAAC,cAAC05D,GAAD,CACIv5D,IAAKN,EACLkN,KAAMP,EACN+hC,YAAa,WACTs1B,EAAgB,CACZW,QAASj0D,EAAK8zD,IACdM,QACIJ,EAAYF,IAChB90D,KAAM1P,EACNA,MAAOmkE,EACDrrE,EAAQyd,QACRzd,EAAQ2d,QAGtBg4B,QAAS01B,IAKd,YAe/B,KAAKprE,EAAYgsE,UACb,OA3GR9kE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wCACV4iB,GAAQ4hD,YAAYtvE,IAAI,SAAAwE,GAAsB,IAAnBkG,EAAmBlG,EAAnBkG,MAAO2M,EAAY7S,EAAZ6S,MAKzB8D,EAJiBuS,GAAQyhD,aAE5B/zD,EAAK8zD,KAAKjzD,OAAO,SAACyzD,GAAD,OAAcA,EAAIC,YAER,GAExBd,EACFE,EAAW5zD,EAAQ+zD,KAAKxkE,KAAWlH,EAAQ2d,KAE/C,OACIxW,GAAAC,EAAAC,cAAC05D,GAAD,CACIv5D,IAAKN,EACLkN,KAAMP,EACN+hC,YAAa,WACTs1B,EAAgB,CACZW,QAASj0D,EAAK8zD,IACdM,QAASr0D,EAAQ+zD,IACjB90D,KAAM1P,EACNA,MAAOmkE,EACDrrE,EAAQyd,QACRzd,EAAQ2d,QAGtBg4B,QAAS01B,QAoHPe,KCpKpBliD,GAAUqP,GAAgBsxC,yBAE1BwB,GAAa,SAACjlE,EAAQwO,GAAT,OAAqBxO,EAAEklE,KAAO12D,EAAE02D,KAAO,GAAK,GCThDzB,GDuF4D,SAAAzkE,GAErE,IADFmmE,EACEnmE,EADFmmE,uBACEplB,EACoCC,qBAAkB,GADtDC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACKqlB,EADLnlB,EAAA,GACoBolB,EADpBplB,EAAA,GAAAG,EAGiCJ,oBAAqB,IAHtDK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAGKklB,EAHLjlB,EAAA,GAGiBklB,EAHjBllB,EAAA,GAAAma,EAIyCxa,oBAA2B,IAJpEya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAIKgL,EAJL/K,EAAA,GAIwBgL,EAJxBhL,EAAA,GAAAE,EAKsC3a,oBAAwB,IAL9D4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAKK+K,EALL9K,EAAA,GAKmB+K,EALnB/K,EAAA,GAAAG,EAMoC/a,oBAAuB,IAN3Dgb,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAMK6K,EANL5K,EAAA,GAMkB6K,EANlB7K,EAAA,GAQFjnB,qBAAU,WACN,IAAM+xB,EAA6B,GAC7BC,EAAuB,GACvBpB,EAAuB,GAE7B7hD,GAAQkjD,YAAYz5D,QAAQ,SAAA3S,GAAa,IAAV0qE,EAAU1qE,EAAV0qE,IAC3BwB,EAASxB,GAAOzrE,EAAY0d,KAC5BwvD,EAAMzB,GAAO,GACbK,EAAOL,GAAO,GAEbxhD,GAAQyhD,aACLD,GACF/3D,QAAQ,SAAAu4D,GACN,IAAMmB,EAAqB,GAE3BnjD,GAAQ4hD,YAAYn4D,QAAQ,SAAA25D,GACpBA,EAAGvB,OACCuB,EAAGvB,OAAOzxB,SAAS4xB,EAAIR,OACvB2B,EAAcC,EAAGpmE,OAASlH,EAAQyd,SAGtC4vD,EAAcC,EAAGpmE,OAASlH,EAAQyd,UAI1CsuD,EAAOL,GAAKQ,EAAIR,KAAO2B,MAI/BR,EAAcK,GACdH,EAAgBI,GAChBF,EAAelB,IAChB,IAEH5wB,qBAAU,WACN,GAAgC,IAA5B99C,KAAKqvE,GAAY97D,OAAc,CAC/B,IAAM28D,EAAQC,IACdjB,EAAuBgB,KAE5B,CAACb,EAAYI,EAAcE,EAAaJ,IAE3C,IAAMY,EAA2B,WAC7B,IAAMC,EAAkB,GAuDxB,OAtDApwE,KAAKqvE,GAAY/4D,QAAQ,SAAA+5D,GACrB,IAAMC,EAAejB,EAAWgB,GAC1BloD,EAAmC,CACrC8mD,KAAMqB,EAAQrB,KACdvvE,GAAI,GACJ8W,MAAO85D,EAAQ95D,MACf2K,QAAS,IAGbnhB,KAAKyvE,EAAaY,IAAU/5D,QAAQ,SAAAi6D,GAChC,IAAMC,EAAWf,EAAaY,GAASE,GACjCE,EAAad,EAAYU,GAASE,GAClCG,EAAanB,EAAkBc,GAE/BM,EAA2C,CAC7C1B,KAAMuB,EAASvB,KACfvvE,GAAI,GACJ8W,MAAOg6D,EAASh6D,MAChBqwB,KAAM2pC,EAAS3pC,KACf1mB,UAAWswD,EAAWtwD,UACtBD,aAAcuwD,EAAWvwD,aACzBQ,WAAYgwD,GAGZD,EAAWnvD,cACXqvD,EAAkBrvD,YAAcmvD,EAAWnvD,aAG/C6G,EAAchH,QAAQ7X,KAAKqnE,KAG/BP,EAAW9mE,KAAXrJ,OAAAkuB,GAAA,EAAAluB,CAAA,GACOkoB,EADP,CAEIhH,QAASgH,EAAchH,QAClBjK,KAAK83D,IACL7vE,IAAI,SAAC0vE,EAAK7wB,GACP,IAAM4qB,EAAuC,CACzClpE,IAAKs+C,EAAM,GAAG/1B,WACdzR,MAAOq4D,EAAIr4D,MACXqwB,KAAMgoC,EAAIhoC,KACV1mB,UAAW0uD,EAAI1uD,UACfD,aAAc2uD,EAAI3uD,aAClBQ,WAAYmuD,EAAInuD,YAOpB,OAJImuD,EAAIvtD,cACJsnD,EAAQtnD,YAAcutD,EAAIvtD,aAGvBsnD,SAKhBwH,EAAWl5D,KAAK83D,IAAY7vE,IAAI,SAAC0vE,EAAU7wB,GAAX,MAA4B,CAC/Dt+C,GAAIs+C,EAAM,EACVxnC,MAAOq4D,EAAIr4D,MACX2K,QAAS0tD,EAAI1tD,YAIfyvD,EAAqB,SAAApwD,GAAiC,IAA9B6tD,EAA8B7tD,EAA9B6tD,IAAK73D,EAAyBgK,EAAzBhK,MAAOy4D,EAAkBzuD,EAAlByuD,KACtC,GAAII,EAAWhB,GAAM,CACjB,IAAMwC,EAAiB,GACvB7wE,KAAKqvE,GAAY/4D,QAAQ,SAACnM,GAClBA,IAAQkkE,IACRwC,EAAU1mE,GAAVlK,OAAAkuB,GAAA,EAAAluB,CAAA,GACOovE,EAAWllE,OAI1BmlE,EAAauB,QAEbvB,EAAarvE,OAAAkuB,GAAA,EAAAluB,CAAA,GACNovE,EADKpvE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAGPouE,EAAM,CACHY,OACAz4D,aAMVm3D,EAAqB,SAAAjqE,GAAwC,IAArC2qE,EAAqC3qE,EAArC2qE,IAAKxkE,EAAgCnG,EAAhCmG,MAM/B,GALA2lE,EAAcvvE,OAAAkuB,GAAA,EAAAluB,CAAA,GACPsvE,EADMtvE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAERouE,EAAMxkE,KAGPA,IAAUjH,EAAYgsE,UAAW,CACjC,IAAMkC,EAAgB,GAEhBC,EAAiBlkD,GAAQyhD,aAE5BD,GAAKjzD,OAAO,SAACyzD,GAAD,OAAcA,EAAIC,YAE7BiC,GACAA,EAAcz6D,QAAQ,SAAAu4D,GAClBiC,EAASjC,EAAIR,KAAO,CAChBxnC,KAAMgoC,EAAIhoC,KACVrwB,MAAOq4D,EAAIr4D,MACXy4D,KAAMJ,EAAII,QAKtBS,EAAgBzvE,OAAAkuB,GAAA,EAAAluB,CAAA,GACTwvE,EADQxvE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEVouE,EAAMyC,KAKXjnE,IAAUjH,EAAY0d,MACa,IAAnCtgB,KAAKyvE,EAAapB,IAAM96D,QAExBm8D,EAAgBzvE,OAAAkuB,GAAA,EAAAluB,CAAA,GACTwvE,EADQxvE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEVouE,EAAM,OAKbT,EAAmB,SAAA9pD,GAA+C,IAA5CyqD,EAA4CzqD,EAA5CyqD,YAAaC,EAA+B1qD,EAA/B0qD,QAC7Bh4D,EAA2B+3D,EAA3B/3D,MAAOqwB,EAAoB0nC,EAApB1nC,KAAMwnC,EAAcE,EAAdF,IAAKY,EAASV,EAATU,KAEpB+B,EAAqBvB,EAAajB,GAExC,GAAIwC,EAAmB3C,GAAM,CACzB,IAAM4C,EAAqB,GAE3BjxE,KAAKgxE,GAAoB16D,QAAQ,SAACnM,GAC1BA,IAAQkkE,IACR4C,EAAc9mE,GAAdlK,OAAAkuB,GAAA,EAAAluB,CAAA,GACO+wE,EAAmB7mE,OAKlCulE,EAAgBzvE,OAAAkuB,GAAA,EAAAluB,CAAA,GACTwvE,EADQxvE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEVuuE,EAAUyC,UAGfvB,EAAgBzvE,OAAAkuB,GAAA,EAAAluB,CAAA,GACTwvE,EADQxvE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEVuuE,EAFUvuE,OAAAkuB,GAAA,EAAAluB,CAAA,GAGJ+wE,EAHI/wE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAINouE,EAAM,CACH73D,QACAqwB,OACAooC,OACAZ,aAOdR,EAAkB,SAAA9oD,GAKL,IAJfypD,EAIezpD,EAJfypD,QACA3kE,EAGekb,EAHflb,MACA0P,EAEewL,EAFfxL,KACAo1D,EACe5pD,EADf4pD,QAEMuC,EAAQjxE,OAAAkuB,GAAA,EAAAluB,CAAA,GACP0vE,EAAYnB,GAASG,GADd1uE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAETsZ,EAAO1P,IAGC,cAAT0P,GAAkC,SAAV1P,IACxBqnE,EAAShxD,aAAe,QAKX,iBAAT3G,GAC4C,SAA5Co2D,EAAYnB,GAASG,GAASxuD,WAGlCyvD,EAAe3vE,OAAAkuB,GAAA,EAAAluB,CAAA,GACR0vE,EADO1vE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAETuuE,EAFSvuE,OAAAkuB,GAAA,EAAAluB,CAAA,GAGH0vE,EAAYnB,GAHTvuE,OAAAg/D,GAAA,EAAAh/D,CAAA,GAIL0uE,EAJK1uE,OAAAkuB,GAAA,EAAAluB,CAAA,GAKCixE,SAyDvB,OACIpnE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0CACXH,GAAAC,EAAAC,cAAC05D,GAAD,CACIprB,QAAS62B,EACT52B,YAvDO,WAGnB,GAFA62B,GAAcD,IAETA,EAAe,CAChB,IAAMU,EAAgB,GAChBC,EAAa,GACbpB,EAAc,GACdyC,EAAY,GAElBtkD,GAAQkjD,YAAYz5D,QAAQ,SAAA+hB,GAA0B,IAAvBg2C,EAAuBh2C,EAAvBg2C,IAAK73D,EAAkB6hB,EAAlB7hB,MAAOy4D,EAAW52C,EAAX42C,KACvCY,EAASxB,GAAOzrE,EAAY0d,KAC5BwvD,EAAMzB,GAAO,GACbK,EAAOL,GAAO,GAEd8C,EAAK9C,GAAO,CACRY,OACAz4D,SAGHqW,GAAQyhD,aACLD,GACF/3D,QAAQ,SAAAu4D,GACN,IAAMmB,EAAqB,GAE3BnjD,GAAQ4hD,YAAYn4D,QAAQ,SAAA25D,GACpBA,EAAGvB,OACCuB,EAAGvB,OAAOzxB,SAAS4xB,EAAIR,OACvB2B,EAAcC,EAAGpmE,OAASlH,EAAQ2d,MAGtC0vD,EAAcC,EAAGpmE,OAASlH,EAAQ2d,OAI1CouD,EAAOL,GAAKQ,EAAIR,KAAO2B,EACvBF,EAAMzB,GAAKQ,EAAIR,KAAO,CAClB73D,MAAOq4D,EAAIr4D,MACXqwB,KAAMgoC,EAAIhoC,KACVooC,KAAMJ,EAAII,UAKtBK,EAAa6B,GACb3B,EAAcK,GACdH,EAAgBI,GAChBF,EAAelB,KAUP33D,KAAM8V,GAAQukD,aAItBtnE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0CACV4iB,GAAQkjD,YAAY5wE,IAAI,SAACuX,GAAe,IAC7B23D,EAAQ33D,EAAR23D,IACR,OACIvkE,GAAAC,EAAAC,cAACqnE,GAAD,CACIlnE,IAAKkkE,EACL9zD,KAAM7D,EACNg3D,kBAAmBkD,EACnB/C,gBAAiBA,EACjBF,mBAAoBA,EACpBC,iBAAkBA,EAClBG,WAAY,CACRC,eAA+B7iE,IAApBkkE,EAAWhB,GACtBroD,KAAMupD,EAAkBlB,GACxBJ,SAAUwB,EAAapB,GACvBH,WAAYyB,EAAYtB,qBEnZlD57D,GAAgBypB,GAAgBxpB,OAEzB4+D,GAA+B,SAAAvoE,GAAS9I,OAAAgiD,GAAA,EAAAhiD,CAAA8I,GACjD,IAAMwoE,EAAiB,CACnBC,MAAM,EACNC,UAAU,EACVC,kBAEJ,OACI5nE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UACXH,GAAAC,EAAAC,cAAC2nE,GAAA5nE,EAAD,CACIkvC,QAASs4B,EACTpmD,OAAQ,IACRD,MAAO,IACP0mD,WAAW,MAMdC,GAA4B,SAAAluE,GACrC,OAD8C1D,OAAAgiD,GAAA,EAAAhiD,CAAA0D,GAE1CmG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,MAAI,GACbnwC,GAAAC,EAAAC,cAACijE,GAAD,SA8CD8E,GA9BI,YAAA99D,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAA8B,IAA3B+9D,MAAH,OAAqC,SACpDC,GA0BA,OAtBsC,SAAAvuE,GAKhC,IAJFqjC,EAIErjC,EAJFqjC,QACAC,EAGEtjC,EAHFsjC,aACAkrC,EAEExuE,EAFFwuE,iBACGxnE,EACDzK,OAAAu4B,EAAA,EAAAv4B,CAAAyD,EAAA,+CACF,OACIoG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACV88B,GAAWj9B,GAAAC,EAAAC,cAACmoE,GAAD,MAEZroE,GAAAC,EAAAC,cAACooE,GAAD,CACIn4B,KAAMjT,EACNl0B,MAAOL,GAAc4/D,eAAev/D,MACpCqlB,YAAa1lB,GAAc4/D,eAAel6C,YAC1C5sB,MAAO,EACP61C,aAAc8wB,IAGlBpoE,GAAAC,EAAAC,cAACioE,EAAqBvnE,OCSvB4nE,GAvDmC,SAAAt9B,GAAO,OACrDlrC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACV+qC,EAAQj+B,MACLjN,GAAAC,EAAAC,cAAA,SAAOirC,QAAO,KAAAlhC,OAAOihC,EAAQj+B,OACxBi+B,EAAQj+B,KACRi+B,EAAQE,wBACLprC,GAAAC,EAAAC,cAAA,QACIC,UAAU,8BACVwqC,QAASO,EAAQG,cACjBC,UAAWJ,EAAQG,cACnBn/B,KAAK,SACLq/B,SAAU,GALd,MAaXL,EAAQM,cAAkC,KAAlBN,EAAQnrC,OAC7BC,GAAAC,EAAAC,cAAA,QACIC,UAAU,+BACVwqC,QAASO,EAAQO,oBACjBv/B,KAAK,SACLq/B,SAAU,GAEVvrC,GAAAC,EAAAC,cAAA,QAAMgM,KAAK,SAASq/B,SAAU,GAA9B,MAKRvrC,GAAAC,EAAAC,cAAA,SACIC,UAAS,8BAAA8J,OACLihC,EAAQQ,SAAW,uCAAyC,IADvDzhC,OAGLihC,EAAQu9B,cAAgBv9B,EAAQ3vC,MAC1B,sCACA,IAEV2D,SAAUgsC,EAAQS,cAClBl8B,KAAMy7B,EAAQz7B,KACd1P,MAAOmrC,EAAQnrC,MACf6rC,UAAWV,EAAQU,UACnBC,UAAWX,EAAQW,UACnBC,aAAcZ,EAAQY,aACtBzpC,YAAa6oC,EAAQ7oC,YACrBqoC,SAAUQ,EAAQR,SAClBqB,OAAQb,EAAQa,OAChBC,WAAYd,EAAQc,aAEvBd,EAAQ3vC,OAA2B,KAAlB2vC,EAAQ3vC,OACtByE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+BAA+B+qC,EAAQ3vC,SC/BjDmtE,GA/B6B,SAAAzpE,GAStC,IARF+J,EAQE/J,EARF+J,MACAxI,EAOEvB,EAPFuB,MACAkqC,EAMEzrC,EANFyrC,SACAC,EAKE1rC,EALF0rC,QACAC,EAIE3rC,EAJF2rC,UACAC,EAGE5rC,EAHF4rC,WACAC,EAEE7rC,EAFF6rC,UACAC,EACE9rC,EADF8rC,MAEMC,EAAuB,CACzB,wBADyB,0BAAA/gC,OAECzJ,IAK9B,OAHMkqC,GAAUM,EAAWxrC,KAAK,mCAC5BsrC,GAAWE,EAAWxrC,KAAK,kCACzBurC,GAAOC,EAAWxrC,KAAK,gCAEzBQ,GAAAC,EAAAC,cAAA,UACIC,UAAW6qC,EAAWjgC,KAAK,KAC3B0E,KAAK,SACLk7B,QAAWD,OAAWrpC,EAAYspC,GAEjCC,GAAa5qC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,qCAC1B2qC,EAAY,gBAAkB9hC,EAE9B6hC,GAAc7qC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,wCCnClC4iB,GAAUqP,GAAgB5F,OACjB,SAASE,KACpB,OACI1sB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,cACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACV4iB,GAAQ4lD,WAAWvwB,SAAS/iD,IAAI,SAACK,EAAG2sC,GACjC,OACIriC,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,CAAgB3B,IAAKgiC,GACjBriC,GAAAC,EAAAC,cAAA,KACIk2C,KAAM1gD,EAAE2iD,KACR14C,OAAO,SACP02C,IAAI,uBAEH3gD,EAAEuX,UAOvBjN,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBACXH,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWtyB,SACzBrmB,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,eAAgB2xC,IAAI,iBAE5Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWE,UACzB74C,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,gBAAiB2xC,IAAI,kBAE7Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWlyB,QACzBzmB,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,cAAe2xC,IAAI,gBAE3Ch1C,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQu1B,WAAWC,SACzB54C,OAAO,SACP02C,IAAI,uBAEJr2C,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,eAAgB2xC,IAAI,mBCxC5D,IAEK4zB,GAFC5H,GAAU5uC,GAAgBy2C,sBAE3BD,qJASL,ICpBeC,GDoBK,SAACjoE,GAA6B,IACtCkoE,EAAsBloE,EAAtBkoE,OAAQC,EAAcnoE,EAAdmoE,UAD8BC,EAEE7lE,KAAM88C,UAAS,GAFjBgpB,EAAA9yE,OAAAuhC,GAAA,EAAAvhC,CAAA6yE,EAAA,GAEvCE,EAFuCD,EAAA,GAErBE,EAFqBF,EAAA,GAI9C,OACIjpE,GAAAC,EAAAC,cAAA,OAAKC,UAAS,eAAA8J,OAAiB6+D,EAAS,WAAa,YACjD9oE,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,sBACfsnC,QAAS,WACLo+B,GAAWD,GACXK,GAAoB,IAExBhpE,UAAS,oBAAA8J,OAAsB6+D,EAAS,YAAc,IACtD9zB,IAAK,oBAETh1C,GAAAC,EAAAC,cAAA,OACIC,UAAW,qBACX+X,IAAK7U,GAAU,iBACf2xC,IAAI,aACJrK,QAAS,WACL12B,OAAOjB,SAASojC,KAAOntC,GAAO7M,kBAGrC4kE,GAAQnmD,KAAKxlB,IAAI,SAACob,EAAM4xB,GACrB,OACI5xB,EAAKzH,MAAMO,gBACXq/D,GAAaQ,WAAW7/D,cAGpBvJ,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,OACIC,UAAS,GAAA8J,OACLi/D,EAAmB,iBAAmB,GADjC,6BAGTv+B,QAAS,kBACLw+B,GAAqBD,IAEzB7oE,IAAKgiC,EACLkJ,SAAU,EACVr/B,KAAM,UAELuE,EAAKzH,MACNhJ,GAAAC,EAAAC,cAAA,OACIC,UAAW+oE,EAAmB,OAAS,GACvChxD,IAAK7U,GAAU,iBACf2xC,IAAK,2BAGbh1C,GAAAC,EAAAC,cAAA,OACIC,UAAS,wBAAA8J,OACLi/D,EAAmB,QAAU,IAEjC7oE,IAAKgiC,GAEJ5xB,EAAK4G,QAAShiB,IAAI,SAACg0E,EAASC,GAAV,OACftpE,GAAAC,EAAAC,cAAA,KACIG,IAAKipE,EACLlzB,KAAMizB,EAAQhxB,KACd14C,OAAO,SACP02C,IAAI,uBAEHgzB,EAAQrgE,WAQ7BhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAW,wBAAyBE,IAAKgiC,GAC1CriC,GAAAC,EAAAC,cAAA,KAAGk2C,KAAM3lC,EAAK4nC,KAAM14C,OAAQ,UACvB8Q,EAAKzH,UAKtBhJ,GAAAC,EAAAC,cAACqpE,GAAD,CACIvgE,MAAOg4D,GAAQwI,OACfhpE,MAAO,SACPmqC,QAAS,WACL12B,OAAOjB,SAASojC,KAAOntC,GAAOjN,mBAElC6uC,YAAY,IAEhB7qC,GAAAC,EAAAC,cAAA,OAAKC,UAAW,wBACZH,GAAAC,EAAAC,cAAA,KAAGC,UAAW,+BACT6gE,GAAQt0C,OAAO1jB,OAEpBhJ,GAAAC,EAAAC,cAAA,KAAGC,UAAW,kCACT6gE,GAAQt0C,OAAO+8C,UAAUp0E,IAAI,SAACob,EAAM4xB,GACjC,OACIriC,GAAAC,EAAAC,cAAA,KACIG,IAAKgiC,EACL+T,KAAM3lC,EAAK4nC,KACX14C,OAAO,SACP02C,IAAI,uBAEHhU,IAAU2+B,GAAQt0C,OAAO+8C,UAAUhgE,OAAS,EAA5C,GAAAQ,OACQwG,EAAKzH,MADb,OAEKyH,EAAKzH,aE5GrC+Z,GAAUqP,GAAgBs3C,SAuLjBC,GAxJwB,SAAA1qE,GAWjC,IAVF2qE,EAUE3qE,EAVF2qE,OACAC,EASE5qE,EATF4qE,OACAC,EAQE7qE,EARF6qE,gBACA9wB,EAOE/5C,EAPF+5C,kBACA+wB,EAME9qE,EANF8qE,kBACAC,EAKE/qE,EALF+qE,uBACAC,EAIEhrE,EAJFgrE,iBACAh5B,EAGEhyC,EAHFgyC,aACAi5B,EAEEjrE,EAFFirE,kBACAC,EACElrE,EADFkrE,kBAEMC,EAAUhhE,GAAawgE,EAAO/5D,OAqD9Bw6D,EAAqB,SAAC5xC,GAEX,MADAA,EAAM6xC,SAAW7xC,EAAM8xC,QACjBN,KAEfF,KA8DR,OACI/pE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAACsqE,GAAD,CACI1B,OAAQoB,EACRnB,UAAWoB,IAEfnqE,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,kCACflD,UAAU,kBACV60C,IAAI,eAERh1C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACT0pE,EAAOY,WAhIjBzqE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qCACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,iBACflD,UAAU,0CACV60C,IAAI,eAERh1C,GAAAC,EAAAC,cAAA,UACK6iB,GAAQ0nD,WAAWzhE,MAAO,IAC3BhJ,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ0nD,WAAWC,SAE9B1qE,GAAAC,EAAAC,cAAA,MAAIC,UAAW,QAAS4iB,GAAQ0nD,WAAWE,UAC3C3qE,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ0nD,WAAWG,WACxB5qE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAO/5D,MACdxN,YAAa0gB,GAAQ0nD,WAAW56D,MAChC44D,aAAcqB,GAAmBA,EAAgBgB,SACjDn/B,cAAe,SAACj2C,GAAD,OAAmBsjD,EAAkBtjD,EAAG,YAG1Do0E,GAAmBA,EAAgBgB,UAChC9qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,4CACR2pE,EAAgBgB,UAIxBhB,GAAmBA,EAAgBiB,KAChC/qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,8CACR2pE,EAAgBiB,KAGzB/qE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8CACXH,GAAAC,EAAAC,cAACqpE,GAAD,CACIvgE,MAAO+Z,GAAQi1B,aACfx3C,MAAM,UACNmqC,QAAS,kBAAMsG,OAEnBjxC,GAAAC,EAAAC,cAACqpE,GAAD,CACIvgE,MAAO+Z,GAAQ0nD,WAAWO,YAC1BtgC,UAAW0/B,EACX5pE,MAAQ4pE,EAAmB,SAAT,OAClBz/B,QAAS,WACDs/B,KACAD,UAkBhBJ,EAAOqB,MAAMxhE,OAAS,GAAKmgE,EAAOptE,SAASiN,OAG3CzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,iBACflD,UAAU,qCACV60C,IAAI,eAERh1C,GAAAC,EAAAC,cAAA,OAAKC,UAAW,uCACZH,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ/Z,OACfhJ,GAAAC,EAAAC,cAAA,QAAMC,UAAW,QAAS4iB,GAAQ2nD,SAEtC1qE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAOqB,MACd1vE,MAAOquE,EAAOsB,WACdzC,aAAcqB,GAAmBA,EAAgBgB,SACjDzoE,YAAa0gB,GAAQkoD,MACrBt/B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,UAEzBs2C,WAAYq+B,IAEhBrqE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAOptE,SACdjB,MAAOquE,EAAOuB,cACd9oE,YAAa0gB,GAAQqoD,KACrB3C,aAAcqB,GAAmBA,EAAgBgB,SACjDr7D,KAAK,WACLk8B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,aAEzBs2C,WAAYq+B,IAGfP,GAAmBA,EAAgBgB,UAChC9qE,GAAAC,EAAAC,cAAA,SAAI4pE,EAAgBgB,UAGxB9qE,GAAAC,EAAAC,cAACqpE,GAAD,CACIvgE,MAAO+Z,GAAQymD,OACfhpE,MAA4B,SAC5BmqC,QAAS,WACDs/B,KACAF,OAKZ/pE,GAAAC,EAAAC,cAAA,KAAGyqC,QAAS,kBAAMsG,KAAgBmF,KAAK,KAClCrzB,GAAQsoD,wBAsBjBrrE,GAAAC,EAAAC,cAACwsB,GAAD,QC3KN3J,GAAUqP,GAAgBs3C,SAM1B4B,GAAgB,CAClBC,aAAcvvD,GAAgBgb,QAC9Bw0C,sBAAuBrsD,GAAmB6X,QAC1Cy0C,wBAAyB,kBAAMlsD,OAqBtBmsD,GAAczD,KAAa0B,IAE3BD,GAAb,SAAAiC,GACI,SAAAjC,EAAY9oE,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA2oE,IACtB7oE,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAuzE,GAAAxoE,KAAAH,KAAMH,KAwBVovC,aAAe,SAACt6C,EAAe+Z,GAAuB,IAC1C1P,EAAUrK,EAAE+9C,cAAZ1zC,MACA6pE,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOn6D,GAAQ1P,EACfc,EAAKc,SAAS,CAAEioE,YA7BM/oE,EAgC1BowC,aAAe,WAAM,IACT44B,EAAWhpE,EAAKY,MAAhBooE,OACRA,EAAOY,YAAcZ,EAAOY,WAC5B5pE,EAAKc,SAAS,CAAEkoE,WAHC,IAIT4B,EAA4B5qE,EAAKD,MAAjC6qE,wBACJA,GAAyBA,KArCP5qE,EAwC1BmpE,uBAAyB,WAAM,IAEbn6D,EACVhP,EAAKY,MADLmoE,OAAU/5D,OAGd27D,EADkC3qE,EAAKD,MAA/B4qE,uBACc,CAClB37D,WA9CkBhP,EAkD1BkpE,kBAAoB,WAAM,IACdH,EAAW/oE,EAAKY,MAAhBmoE,OACA2B,EAAiB1qE,EAAKD,MAAtB2qE,aAERxtD,aAAalK,QAEb03D,EAAa,CACTr0C,KAAM0yC,EAAOqB,MAAMW,OACnBpvE,SAAUotE,EAAOptE,SAASovE,UA1DR/qE,EA8D1BopE,iBAAmB,WAAe,IAAAxjB,EAI1B5lD,EAAKY,MAFLmoE,EAF0BnjB,EAE1BmjB,OAIJ,GAN8BnjB,EAG1BojB,OAAUY,WAGE,CACZ,IAAML,EAAUhhE,GAAawgE,EAAO/5D,OAGpC,OAFA+5D,EAAOiC,WAAazB,EAAUrnD,GAAQxnB,MAAMuwE,cAAWzqE,EACvDR,EAAKc,SAAS,CAAEioE,WACTQ,EAOX,OALAR,EAAOsB,WACHtB,EAAOqB,MAAMxhE,QAAU,EAAIsZ,GAAQxnB,MAAMwwE,cAAW1qE,EACxDuoE,EAAOuB,cACHvB,EAAOptE,SAASiN,OAAS,EAAIsZ,GAAQxnB,MAAMywE,iBAAc3qE,EAC7DR,EAAKc,SAAS,CAAEioE,WACTA,EAAOqB,MAAMxhE,QAAU,GAAKmgE,EAAOptE,SAASiN,QAAU,GA/EvC5I,EAkF1BorE,sBAAwB,WAAM,IAClBC,EAAgBrrE,EAAKY,MAArByqE,YACRA,EAAYpD,QAAUoD,EAAYpD,OAClCjoE,EAAKc,SAAS,CAAEuqE,iBArFMrrE,EAwF1BsrE,UAAY,SAAC5wE,GACT,OACKA,QAA6B8F,IAApB9F,EAAMyjB,WACN,6CAAVzjB,EAEO62B,GAAgBxpB,OAAOwjE,WAE9B7wE,IAAsC,IAA7BA,EAAM+X,OAAO,WACf/B,KAAKrC,MAAM3T,GAAOlB,QAGtBkB,GAjGPsF,EAAKY,MAAQ,CACTmoE,OAAQ,CACJqB,MAAO,GACPzuE,SAAU,GACVqT,MAAO,GACPq7D,gBAAY7pE,EACZ8pE,mBAAe9pE,EACfwqE,gBAAYxqE,GAEhBwoE,OAAQ,CACJY,YAAY,GAEhByB,YAAa,CACTpD,QAAQ,IAfMjoE,EAD9B,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAAuzE,EAAAiC,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAAuzE,EAAA,EAAArpE,IAAA,oBAAAN,MAAA,WAqB8B,IACd0rE,EAA4B1qE,KAAKH,MAAjC6qE,wBACJA,GAAyBA,MAvBrC,CAAAprE,IAAA,SAAAN,MAAA,WAsGa,IAAAyuD,EACmCztD,KAAKU,MAArCmoE,EADHpb,EACGob,OAAQC,EADXrb,EACWqb,OAAQqC,EADnB1d,EACmB0d,YADnBI,EAIMvrE,KAAKH,MADZ2rE,UAAatvC,EAHZqvC,EAGYrvC,QAAS1hC,EAHrB+wE,EAGqB/wE,MAAOlB,EAH5BiyE,EAG4BjyE,QAG3BmyE,EAAWjiC,GAAYkiC,kBAK7B,OAJoBliC,GAAYmiC,cAKvBF,EAAiBxsE,GAAAC,EAAAC,cAACysE,GAAA,EAAD,CAAUp2B,GAAG,MAGnCv2C,GAAAC,EAAAC,cAACwrE,GAAD,CACIzuC,QAASA,EACTC,cAAc,EACdkrC,iBAAkB,aAClB0B,gBAAiB,CACbgB,SAAU/pE,KAAKorE,UAAU5wE,GACzBwvE,IAAK1wE,GAETwvE,OAAQA,EACRD,OAAQA,EACR5wB,kBAAmBj4C,KAAKivC,aACxBiB,aAAclwC,KAAKkwC,aACnB84B,kBAAmBhpE,KAAKgpE,kBACxBC,uBAAwBjpE,KAAKipE,uBAC7BC,iBAAkBlpE,KAAKkpE,iBACvBE,kBAAmBppE,KAAKkrE,sBACxB/B,kBAAmBgC,EAAYpD,SApBd9oE,GAAAC,EAAAC,cAACysE,GAAA,EAAD,CAAUp2B,GAAG,wBAjH9CmzB,EAAA,CAA8BvmE,KAAMC,WClDrBsmE,GD6LAkD,aAzKS,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,cAwKmBkuC,GAAzBsB,CAAwClD,IE7LxCl9C,MCWTzJ,GAAUqP,GAAgBy6C,kBAoNjBz3B,gBApL4B,SAAAn2C,GAWrC,IAVF2qE,EAUE3qE,EAVF2qE,OACAC,EASE5qE,EATF4qE,OACAiD,EAQE7tE,EARF6tE,iBACA9zB,EAOE/5C,EAPF+5C,kBACA+wB,EAME9qE,EANF8qE,kBACAE,EAKEhrE,EALFgrE,iBAEA50B,GAGEp2C,EAJFgyC,aAIEhyC,EAHFo2C,SACA60B,EAEEjrE,EAFFirE,kBACAC,EACElrE,EADFkrE,kBAeME,EAAqB,SAAC5xC,GAExB,GAAa,MADAA,EAAM6xC,SAAW7xC,EAAM8xC,QACjBN,IAAoB,CAEnC,IAC4B,KAAvBL,EAAOjwC,aAAiD,KAA3BiwC,EAAOmD,kBACrCnD,EAAOjwC,cAAgBiwC,EAAOmD,gBAE9B,OAEJhD,MAIFiD,EAAe,SAACt3E,GAClBA,EAAEgsE,iBACFn3B,GAAYgL,SACZF,EAAQ71C,KAAK,MAqHjB,OACIQ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAACsqE,GAAD,CACI1B,OAAQoB,EACRnB,UAAWoB,IAEfnqE,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,kCACflD,UAAU,kBACV60C,IAAI,eAERh1C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACT0pE,EAAOY,WA9JjBzqE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8CACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ0nD,WAAWzhE,OACxBhJ,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ0nD,WAAWE,UAExB3qE,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ0nD,WAAW56D,OACvB7P,GAAAC,EAAAC,cAACmsC,GAAD,CACItsC,MAAO6pE,EAAO/5D,MACd87B,cAAe,SAACj2C,GAAD,OAAmBsjD,EAAkBtjD,EAAG,aAgD3C,WACpB,IAAMu3E,EApBiB,WACvB,IAAMC,EAAQ,IAAI7iE,OACd,gEAEJ,OAAKu/D,EAAOjwC,YAGRiwC,EAAOjwC,YAAYlwB,OAAS,EACrB,2DAENyjE,EAAM7jE,KAAKugE,EAAOjwC,aAGnBiwC,EAAOjwC,cAAgBiwC,EAAOmD,gBACvB,6EADX,EAFW,sGANA,GAeOI,GAClB,OACIntE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6CACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK7U,GAAU,iBACflD,UAAU,kDACV60C,IAAI,eAERh1C,GAAAC,EAAAC,cAAA,OACIC,UACI,oDAGJH,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ/Z,OACfhJ,GAAAC,EAAAC,cAAA,QAAMC,UAAW,QAAS,iBAE9BH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQkoD,OACbjrE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAOqB,MACd1vE,MAAOquE,EAAOsB,WACdv/B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,UAEzB2M,YAAa0gB,GAAQkoD,MACrBj/B,WAAYq+B,IAEhBrqE,GAAAC,EAAAC,cAAA,MAAIC,UAAU,QAAQ4iB,GAAQqoD,MAC9BprE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAOptE,SACdjB,MAAOquE,EAAOuB,cACd17D,KAAK,WACLpN,YAAa0gB,GAAQqoD,KACrBz/B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,aAEzBs2C,WAAYq+B,IAEhBrqE,GAAAC,EAAAC,cAAA,MAAIC,UAAU,QAAQ4iB,GAAQqqD,SAC9BptE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAOjwC,YACdp+B,MAAO0xE,EACP5qE,YAAa0gB,GAAQqqD,QACrB39D,KAAK,WACLk8B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,gBAEzBs2C,WAAYq+B,IAEhBrqE,GAAAC,EAAAC,cAAA,MAAIC,UAAU,QAAQ4iB,GAAQsqD,cAC9BrtE,GAAAC,EAAAC,cAAC2qE,GAAD,CACI9qE,MAAO6pE,EAAOmD,gBACdt9D,KAAK,WACLpN,YAAa0gB,GAAQsqD,aACrB1hC,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,oBAEzBs2C,WAAYq+B,IAEfyC,GAAoBA,EAAiBhC,UAClC9qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBAAiB2sE,EAAiBhC,UAElDgC,GAAoBA,EAAiB/B,KAClC/qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,mBAAmB2sE,EAAiB/B,KAGrD/qE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACqpE,GAAD,CACIvgE,MAAO+Z,GAAQuqD,WACf9sE,MAAO,UACPmqC,QAASqiC,IAGbhtE,GAAAC,EAAAC,cAACqpE,GAAD,CACIvgE,MAAO+Z,GAAQymD,OACf9+B,YACOoiC,IAAoBA,EAAiB/B,QACtCkC,EAENzsE,MACI2vB,QAAQ88C,IAAcrD,EAAOjwC,aACvB,OACA,SAEVgR,QAAS,WA1GrBs/B,KAAoBF,SA8HVwD,IAGVvtE,GAAAC,EAAAC,cAACstE,GAAD,SC1MNzqD,GAAUqP,GAAgBy6C,kBAM1BvB,GAAgB,CAClBC,aAAc/1C,GAAoBwB,QAClCy2C,eAAgBluD,IAqBPmuD,GAAkBzF,KAAa0F,IAE/Bd,GAAb,SAAAlB,GACI,SAAAkB,EAAYjsE,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA8rE,IACtBhsE,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA02E,GAAA3rE,KAAAH,KAAMH,KAyBVovC,aAAe,SAACt6C,EAAe+Z,GAAuB,IAC1C1P,EAAUrK,EAAE+9C,cAAZ1zC,MACA6pE,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOn6D,GAAQ1P,EAEF,gBAAT0P,GAAmC,oBAATA,IAC1Bm6D,EAAOuB,mBAAgB9pE,GAE3BR,EAAKc,SAAS,CAAEioE,YAlCM/oE,EAqC1BowC,aAAe,WAAM,IACT44B,EAAWhpE,EAAKY,MAAhBooE,OACRA,EAAOY,YAAcZ,EAAOY,WAC5B5pE,EAAKc,SAAS,CAAEkoE,YAxCMhpE,EA2C1BkpE,kBAAoB,WAAM,IACdH,EAAW/oE,EAAKY,MAAhBmoE,OACA2B,EAAiB1qE,EAAKD,MAAtB2qE,aAER,GAAI3B,EAAOjwC,cAAgBiwC,EAAOmD,gBAAlC,CAIAhvD,aAAalK,QAEb,IAAMyE,EAASizD,EAAa,CACxBvxE,YAAa4vE,EAAOqB,MAAMW,OAC1BgC,kBAAmBhE,EAAOptE,SAASovE,OACnCjyC,YAAaiwC,EAAOjwC,YAAYiyC,OAChC1vD,KAAMtkB,EAAmBi2E,aAI7B,OADAjE,EAAOuB,mBAAgB9pE,EAChBiX,IA7DezX,EAgE1BopE,iBAAmB,WAAe,IAe1BkB,EAf0B1kB,EAI1B5lD,EAAKY,MAFLmoE,EAF0BnjB,EAE1BmjB,OAIJ,GAN8BnjB,EAG1BojB,OAAUY,WAGE,CACZ,IAAML,EAAUhhE,GAAawgE,EAAO/5D,OAGpC,OAFA+5D,EAAOiC,WAAazB,EAAUrnD,GAAQxnB,MAAMuwE,cAAWzqE,EACvDR,EAAKc,SAAS,CAAEioE,WACTQ,EAsBX,OAnBAR,EAAOsB,WACHtB,EAAOqB,MAAMxhE,QAAU,EAAIsZ,GAAQxnB,MAAMwwE,cAAW1qE,EAQpD8pE,EAJAvB,EAAOptE,SAASiN,OAAS,GACzBmgE,EAAOjwC,YAAYlwB,OAAS,GAC5BmgE,EAAOjwC,cAAgBiwC,EAAOmD,gBAEd,8BAEA1rE,EAGpBuoE,EAAOuB,cACoB,KAAvBvB,EAAOjwC,aAAiD,KAA3BiwC,EAAOmD,gBAC9B5B,OACA9pE,EACVR,EAAKc,SAAS,CAAEioE,WACTA,EAAOqB,MAAMxhE,QAAU,GAAKmgE,EAAOptE,SAASiN,QAAU,GAhGvC5I,EAmG1BorE,sBAAwB,WAAM,IAClBC,EAAgBrrE,EAAKY,MAArByqE,YACRA,EAAYpD,QAAUoD,EAAYpD,OAClCjoE,EAAKc,SAAS,CAAEuqE,iBAtGMrrE,EAyG1BsrE,UAAY,SAAC5wE,GACT,OACKA,QAA6B8F,IAApB9F,EAAMyjB,WACN,6CAAVzjB,EAEO62B,GAAgBxpB,OAAOwjE,WAE9B7wE,IAAsC,IAA7BA,EAAM+X,OAAO,WACf/B,KAAKrC,MAAM3T,GAAOlB,QAGtBkB,GAlHPsF,EAAKY,MAAQ,CACTmoE,OAAQ,CACJqB,MAAO,GACPzuE,SAAU,GACVm9B,YAAa,GACbozC,gBAAiB,GACjBl9D,MAAO,GACPq7D,gBAAY7pE,EACZ8pE,mBAAe9pE,EACfwqE,gBAAYxqE,GAEhBwoE,OAAQ,CACJY,YAAY,GAEhByB,YAAa,CACTpD,QAAQ,IAjBMjoE,EAD9B,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAA02E,EAAAlB,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAA02E,EAAA,EAAAxsE,IAAA,oBAAAN,MAAA,WAwBQgB,KAAKH,MAAM6sE,mBAxBnB,CAAAptE,IAAA,SAAAN,MAAA,WAuHa,IAAAyuD,EACmCztD,KAAKU,MAArCmoE,EADHpb,EACGob,OAAQC,EADXrb,EACWqb,OAAQqC,EADnB1d,EACmB0d,YADnBI,EAIMvrE,KAAKH,MADZ2rE,UAAatvC,EAHZqvC,EAGYrvC,QAAS1hC,EAHrB+wE,EAGqB/wE,MAAOlB,EAH5BiyE,EAG4BjyE,QAKjC,OAFiBkwC,GAAYkiC,kBAERzsE,GAAAC,EAAAC,cAACysE,GAAA,EAAD,CAAUp2B,GAAG,MAG9Bv2C,GAAAC,EAAAC,cAACwtE,GAAD,CACIzwC,QAASA,EACTC,cAAc,EACdkrC,iBAAkB,aAClB0E,iBAAkB,CACdhC,SAAU/pE,KAAKorE,UAAU5wE,GACzBwvE,IAAK1wE,GAETwvE,OAAQA,EACRD,OAAQA,EACR5wB,kBAAmBj4C,KAAKivC,aACxBiB,aAAclwC,KAAKkwC,aACnB84B,kBAAmBhpE,KAAKgpE,kBACxBE,iBAAkBlpE,KAAKkpE,iBACvBE,kBAAmBppE,KAAKkrE,sBACxB/B,kBAAmBgC,EAAYpD,aAjJ/C+D,EAAA,CAAuC1pE,KAAMC,WC/C9BypE,GDsMAD,aApLS,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,cAmLmBkuC,GAAzBsB,CAAwCC,IEvMxCiB,GCCO,WAClB,OACI9tE,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,kBAEAF,GAAAC,EAAAC,cAAA,uDCDZ,SAAS6tE,GACL/e,EACA7E,GAEA,IAAM6jB,EAA8B,GACpC,GAAMhf,GAAeA,EAAYljD,SAAU,CACvC,IAAMmiE,EAAgB93E,OAAAkuB,GAAA,EAAAluB,CAAA,GACf64D,EAAYljD,eAIwBzK,IAAvC2tD,EAAYljD,SAASs1B,oBACkC//B,IAAvD2tD,EAAYljD,SAASs1B,cAAclhB,sBACH7e,IAAhC2tD,EAAY9uC,kBAEZ+tD,EAAY7sC,cAAclhB,gBAAkB8uC,EAAY9uC,gBAAgB1U,QACpE,KACA,KAIJq7C,GAAkBmI,EAAY/9B,eAC9Bg9C,EAAYh9C,cAAgB+9B,EAAY/9B,eAExCg9C,EAAYvmD,eAAZvxB,OAAAsnC,GAAA,EAAAtnC,CAAiC64D,EAAYtnC,gBAC7CumD,EAAYh9C,cAAgB+9B,EAAY/9B,cACxCg9C,EAAYpmD,qBAAuBmnC,EAAYkf,mBAGnDF,EAAexuE,KAAKyuE,GAExB,GAAM9jB,GAASA,EAAIr+C,SAAU,CACzB,IAAMqiE,EAAeh4E,OAAAkuB,GAAA,EAAAluB,CAAA,GACdg0D,EAAIr+C,eAIwBzK,IAA/B8oD,EAAIr+C,SAASs1B,oBACkC//B,IAA/C8oD,EAAIr+C,SAASs1B,cAAclhB,sBACH7e,IAAxB8oD,EAAIjqC,kBAEJiuD,EAAW/sC,cAAclhB,gBAAkBiqC,EAAIjqC,gBAAgB1U,QAC3D,KACA,KAIJq7C,GAAkBsD,EAAIl5B,eACtBk9C,EAAWl9C,cAAgBk5B,EAAIl5B,eAE/Bk9C,EAAWzmD,eAAXvxB,OAAAsnC,GAAA,EAAAtnC,CAAgCg0D,EAAIziC,gBACpCymD,EAAWl9C,cAAgBk5B,EAAIl5B,cAC/Bk9C,EAAWtmD,qBAAuBsiC,EAAI+jB,mBAG1CF,EAAexuE,KAAK2uE,GAExB,OAAOH,EAAe34E,IAClB,SAACyW,GACG,IAAMsiE,EAAavnB,GACf/6C,EAASmlB,eAAiB,MAExBo9C,EAAUrjE,GAA0B,IAAI1M,KAAKA,KAAKwa,QACxD,OAAO3iB,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2V,EADP,CAEIwiE,gBAAiBF,EACX9qB,GAAcqF,iBACdrF,GAAcpkB,iBACpB4B,mBAAoButC,EACpBttC,iBAAkBstC,MC5ClC,SAAStlE,GAAI1O,EAAiBwgB,GAC1B0zD,GAAI,gBAAAtkE,OAAiB5P,GAAWwgB,GAGpC,IAAM2zD,GAAa,eAAAvvE,EAAA9I,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAC,EAClB/E,EACA7a,EACAD,EACAm0E,EACAC,GALkB,IAAAC,EAAAtiE,EAAAuiE,EAAAC,EAAAx0E,EAAA,OAAAqa,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cAOZ65D,EAAYr0E,EAAF,IAAA2P,OAAa3P,EAAb,KAAuB,GAPrB+f,EAAAxF,KAAA,EAAAwF,EAAAvF,KAAA,EASIM,IATJ,UASR/I,EATQgO,EAAAmuB,KAURomC,EAAyBl/B,KAAE/7B,IAAItH,EAAK,OAAQ,MAC5CwiE,EAA4Bn/B,KAAE/7B,IAAItH,EAAK,UAAW,OAClDuiE,IAAaC,EAZL,CAAAx0D,EAAAvF,KAAA,cAaJ,IAAIg6D,GAA4BD,GAb5B,cAAAx0D,EAAAtF,OAAA,SAeP1I,GAfO,WAAAgO,EAAAxF,KAAA,GAAAwF,EAAArE,GAAAqE,EAAA,SAiBdtR,GAAG,kBAAAkB,OAAmB0kE,EAAnB,UAAoCt0D,EAAArE,GAAI3b,SACrCggB,EAAArE,cAAe84D,GAlBP,CAAAz0D,EAAAvF,KAAA,gBAoBNuF,EAAArE,cAAehgB,OAAwB,kBAAfqkB,EAAArE,GACxB3b,EAAUq1C,KAAE/7B,IAAF0G,EAAArE,GAAW,WACC,kBAAfqE,EAAArE,KACP3b,EAAOggB,EAAArE,IAvBDqE,EAAAtF,OAAA,SAyBH,IAAI+5D,GAA2Bz0E,IAzB5B,eAAAggB,EAAAtF,OAAA,SAAAsF,EAAArE,IAAA,yBAAAqE,EAAApF,SAAAkF,EAAA,kBAAH,gBAAAgoD,EAAA4M,EAAAtmC,EAAA3tB,EAAA4tB,GAAA,OAAAzpC,EAAA8b,MAAAha,KAAAoJ,YAAA,GA+Bb6kE,GAAY,eAAAn1E,EAAA1D,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAhF,EACjBjf,GADiB,IAAAmf,EAAA,OAAAV,GAAAzU,EAAA0U,KAAA,SAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,cAGXM,EAHW,eAAAsB,EAAAvgB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAGN,SAAA1F,IAAA,IAAAnI,EAAA4iE,EAAA,OAAAv6D,GAAAzU,EAAA0U,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACWhb,GAAW,CACzBQ,KAAM,cACNC,OAAQ,OACRC,KAAM,CACFymC,cAAehrC,GAEnBs5B,gBAAgB,IACjB+2B,YARI,UACDj6C,EADCuI,EAAA4zB,OASDymC,EAAwBv/B,KAAE/7B,IAAItH,EAAK,kBATlC,CAAAuI,EAAAE,KAAA,WAWCm6D,IAAkBhqB,GAAeiqB,GAXlC,CAAAt6D,EAAAE,KAAA,eAAAF,EAAAG,OAAA,UAYQ,GAZR,UAcCk6D,IAAkBhqB,GAAekqB,GAdlC,CAAAv6D,EAAAE,KAAA,eAAAF,EAAAG,OAAA,UAeQ,GAfR,cAAAH,EAAAG,OAAA,SAkBA,IAAI+5D,IAlBJ,yBAAAl6D,EAAAK,SAAAT,MAHM,yBAAAkC,EAAAqE,MAAAha,KAAAoJ,YAAA,GAAAyL,EAAAd,KAAA,EAuBJ05D,GAAcp5D,EAAI,OAAQ,aAAc,CACjDnf,SAxBa,cAAA2f,EAAAb,OAAA,SAAAa,EAAA4yB,MAAA,wBAAA5yB,EAAAX,SAAAC,MAAH,gBAAAk6D,GAAA,OAAAv1E,EAAAkhB,MAAAha,KAAAoJ,YAAA,GA4BZklE,GAAW,eAAAz1E,EAAAzD,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAo1D,EAChBvvE,GADgB,IAAAqV,EAAA,OAAAV,GAAAzU,EAAA0U,KAAA,SAAA46D,GAAA,cAAAA,EAAA16D,KAAA06D,EAAAz6D,MAAA,cAGVM,EAHU,eAAA4E,EAAA7jB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAGL,SAAAs1D,IAAA,IAAAnjE,EAAA1R,EAAA,OAAA+Z,GAAAzU,EAAA0U,KAAA,SAAA86D,GAAA,cAAAA,EAAA56D,KAAA46D,EAAA36D,MAAA,cAAA26D,EAAA36D,KAAA,EACgByzB,MAAK,GAAAt+B,OAAIhB,GAAOpN,cAAX,KAAAoO,OAA4BlK,GAAS,CAC7DxF,OAAQ,MACRkkB,QAAS,CACL2qB,OAAQ,mBACRsmC,8BAA+B,0CALhC,YACDrjE,EADCojE,EAAAjnC,MASCr5B,QAAyB,MAAf9C,EAAI8C,OATf,CAAAsgE,EAAA36D,KAAA,eAAA26D,EAAA36D,KAAA,EAUoBzI,EAAIsjE,OAVxB,cAUGh1E,EAVH80E,EAAAjnC,KAAAinC,EAAA16D,OAAA,SAAA5e,OAAAkuB,GAAA,EAAAluB,CAAA,GAaIwE,EAbJ,CAcCwU,OAAQ9C,EAAI8C,UAdb,aAiBD,IAAI2/D,GACNziE,EAAIhS,SAAW,wBAlBZ,wBAAAo1E,EAAAx6D,SAAAu6D,MAHK,yBAAAx1D,EAAAe,MAAAha,KAAAoJ,YAAA,GAAAolE,EAAAz6D,KAAA,EAwBH05D,GAAcp5D,EAAI,MAAO,WAAY,CAAErV,UAxBpC,cAAAwvE,EAAAx6D,OAAA,SAAAw6D,EAAA/mC,MAAA,wBAAA+mC,EAAAt6D,SAAAq6D,MAAH,gBAAAM,GAAA,OAAAh2E,EAAAmhB,MAAAha,KAAAoJ,YAAA,GA2BX0kD,GAAsB,eAAA5zC,EAAA9kB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA21D,IAAA,IAAA30D,EAAAiF,EAAAguC,EAAA7nB,EAAAhL,EAAAlmB,EAAA06D,EAAA3lE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAo7D,GAAA,cAAAA,EAAAl7D,KAAAk7D,EAAAj7D,MAAA,cAC3BoG,EAD2B40D,EAAArmE,OAAA,QAAApI,IAAAyuE,EAAA,GAAAA,EAAA,GACT,MAClB3vD,EAF2B2vD,EAAArmE,OAAA,EAAAqmE,EAAA,QAAAzuE,EAG3B8sD,IAH2B2hB,EAAArmE,OAAA,QAAApI,IAAAyuE,EAAA,KAAAA,EAAA,GAI3BxpC,EAJ2BwpC,EAAArmE,OAAA,EAAAqmE,EAAA,QAAAzuE,EAK3Bi6B,EAL2Bw0C,EAAArmE,OAAA,EAAAqmE,EAAA,QAAAzuE,EAOrB+T,EAPqB,eAAAmZ,EAAAp4B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAOhB,SAAA81D,IAAA,IAAAh8C,EAAA8M,EAAAtmC,EAAAy1E,EAAA3B,EAAA4B,EAAA7jE,EAAA8jE,EAAA,OAAAz7D,GAAAzU,EAAA0U,KAAA,SAAAy7D,GAAA,cAAAA,EAAAv7D,KAAAu7D,EAAAt7D,MAAA,cACHkf,EAAWnpB,GAAiB,IAAIvM,KAAKA,KAAKwa,QACxCwtB,IACIxF,EAA2B,IAAIxiC,KACjCoxC,KAAE/7B,IAAI2yB,EAAO,mCAEZ+pC,MAAMvvC,EAAmBnyB,aAC1BmyB,EAAmBvoB,QAAQuoB,EAAmB/hC,UAAY,GAC1Di1B,EAAWnpB,GAAiBi2B,KAGhCtmC,EAAY,CACZ0gB,UACAiuB,OAAQ,SACR7rB,aAAc6wC,EAAe,aAAe,eAC5ChuC,aACA6T,WACAG,YAAa,UACbmH,eAEE20C,EAA0CvgC,KAAE7jC,KAC9C6jC,KAAE/7B,IAAI2yB,EAAO,YAAa,IAC1B,SAACx6B,GACG,OAAOqU,IAAerU,EAAS2M,SAGjC61D,EAA6C5+B,KAAE/7B,IACjDs8D,EACA,mBAEEC,EACF5B,IAAoBhrB,GAAcpkB,iBAChCoH,GAAS4pC,IACX11E,EAAIrE,OAAAkuB,GAAA,EAAAluB,CAAA,GACGqE,EADH,CAEA8iB,aAAcoyB,KAAE/7B,IAAI2yB,EAAO,gBAAiB,IAC5CgqC,cAAe5gC,KAAE/7B,IACbs8D,EACA,sBACA,IAEJzuC,eAAgBkO,KAAE/7B,IACds8D,EACA,+BACA,IAEJtuC,UAAW+N,KAAE/7B,IACTs8D,EACA,0BACA,IAEJruC,iBAAkB8N,KAAE/7B,IAChBs8D,EACA,iCACA,OAtDLG,EAAAt7D,KAAA,EA0DgBhb,GAAW,CAC9BQ,KAAM,0BACNC,OAAQ,OACRC,OACA+0B,gBAAgB,IACjB+2B,YA/DI,UA0DDj6C,EA1DC+jE,EAAA5nC,OAgED2nC,EAAWzgC,KAAE/7B,IAAItH,EAAK,eAhErB,CAAA+jE,EAAAt7D,KAAA,gBAAAs7D,EAAAr7D,OAAA,SAkEIo7D,GAlEJ,cAoED,IAAIrB,GApEH,yBAAAsB,EAAAn7D,SAAA+6D,MAPgB,yBAAAzhD,EAAAxT,MAAAha,KAAAoJ,YAAA,GAAA4lE,EAAAj7D,KAAA,EA6Ed05D,GAAcp5D,EAAI,OAAQ,0BAA2B,CAC9D+K,aACAguC,iBA/EuB,cAAA4hB,EAAAh7D,OAAA,SAAAg7D,EAAAvnC,MAAA,wBAAAunC,EAAA96D,SAAA46D,MAAH,yBAAA50D,EAAAF,MAAAha,KAAAoJ,YAAA,GAmFtBomE,GAAwB,eAAAlgD,EAAAl6B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAs2D,IAAA,IAAAt1D,EAAA8zC,EAAA7E,EAAAgE,EAAAt+C,EAAAF,EAAAC,EAAAurB,EAAAphC,EAAAsS,EAAA+7C,EAAAqoB,EAAAtmE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAA+7D,GAAA,cAAAA,EAAA77D,KAAA67D,EAAA57D,MAAA,UAC7BoG,EAD6Bu1D,EAAAhnE,OAAA,QAAApI,IAAAovE,EAAA,GAAAA,EAAA,GACX,MAClBzhB,EAF6ByhB,EAAAhnE,OAAA,EAAAgnE,EAAA,QAAApvE,EAG7B8oD,EAH6BsmB,EAAAhnE,OAAA,EAAAgnE,EAAA,QAAApvE,EAI7B8sD,IAJ6BsiB,EAAAhnE,OAAA,QAAApI,IAAAovE,EAAA,KAAAA,EAAA,GAK7B5gE,EAL6B4gE,EAAAhnE,OAAA,QAAApI,IAAAovE,EAAA,GAAAA,EAAA,GAKb,GAChB9gE,EAN6B8gE,EAAAhnE,OAAA,QAAApI,IAAAovE,EAAA,GAAAA,EAAA,GAMT,GACpB7gE,EAP6B6gE,EAAAhnE,OAAA,QAAApI,IAAAovE,EAAA,GAAAA,EAAA,GAOV,GAEC,OAAhBzhB,GAAgC,OAAR7E,EATC,CAAAumB,EAAA57D,KAAA,cAUnB,IAAIg6D,GAVe,cAYvB3zC,EAAsB,GACxB6zB,GACA7zB,EAAoB37B,KAAK,CAAEiZ,OAAQ,KAAMyiB,UAAW8zB,IAEpD7E,GAAKhvB,EAAoB37B,KAAK,CAAEiZ,OAAQ,KAAMyiB,UAAWivB,IACvDpwD,EAAU,CACZmhB,UACAoC,aAAc6wC,EAAe,aAAe,eAC5CjyC,KAAM,oBACNif,sBACAgO,OAAQ,SACRt5B,QACAF,YACAC,YAzByB8gE,EAAA57D,KAAA,GA8BQhb,GAAW,CAChDQ,KAAM,eACNC,OAAQ,OACRC,KAAMT,EACNw1B,gBAAgB,IACjB+2B,YAnC8B,eA4BzBj6C,EA5ByBqkE,EAAAloC,KAoCvB4f,EAA2B,GAC3B4G,GAAa5G,EAAS5oD,KAAK0kD,GAAaoE,YACxC6B,GAAK/B,EAAS5oD,KAAK0kD,GAAaqE,KACtCl8C,EAAMskE,GAAuBtkE,EAAK+7C,GAvCLsoB,EAAA37D,OAAA,SAwCtB1I,GAxCsB,yBAAAqkE,EAAAz7D,SAAAu7D,MAAH,yBAAAngD,EAAAtV,MAAAha,KAAAoJ,YAAA,GA2CxBymE,GAAc,eAAAngD,EAAAt6B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA22D,IAAA,IAAA31D,EAAAa,EAAAoyC,EAAAp0D,EAAAsS,EAAAykE,EAAA3mE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAo8D,GAAA,cAAAA,EAAAl8D,KAAAk8D,EAAAj8D,MAAA,cACnBoG,EADmB41D,EAAArnE,OAAA,QAAApI,IAAAyvE,EAAA,GAAAA,EAAA,GACD,MAClB/0D,EAFmB+0D,EAAArnE,OAAA,EAAAqnE,EAAA,QAAAzvE,EAGnB8sD,EAHmB2iB,EAAArnE,OAAA,EAAAqnE,EAAA,QAAAzvE,EAKbtH,EAAU,CACZmhB,UACAoC,aAAc6wC,EAAe,aAAe,eAC5ChlB,OAAQ,SACRptB,aATeg1D,EAAAj8D,KAAA,EAWDhb,GAAW,CACzBQ,KAAM,WACNC,OAAQ,OACRC,KAAMT,EACNw1B,gBAAgB,IACjB+2B,YAhBgB,cAWbj6C,EAXa0kE,EAAAvoC,KAAAuoC,EAAAh8D,OAAA,SAiBZ1I,GAjBY,wBAAA0kE,EAAA97D,SAAA47D,MAAH,yBAAApgD,EAAA1V,MAAAha,KAAAoJ,YAAA,GAoBd6mE,GAA2B,eAAAxgD,EAAAr6B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA+2D,IAAA,IAAA/1D,EAAA8zC,EAAA7E,EAAAgE,EAAAt+C,EAAAF,EAAAC,EAAAurB,EAAAphC,EAAAsS,EAAA6kE,EAAA/mE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAw8D,GAAA,cAAAA,EAAAt8D,KAAAs8D,EAAAr8D,MAAA,UAChCoG,EADgCg2D,EAAAznE,OAAA,QAAApI,IAAA6vE,EAAA,GAAAA,EAAA,GACd,MAClBliB,EAFgCkiB,EAAAznE,OAAA,EAAAynE,EAAA,QAAA7vE,EAGhC8oD,EAHgC+mB,EAAAznE,OAAA,EAAAynE,EAAA,QAAA7vE,EAIhC8sD,IAJgC+iB,EAAAznE,OAAA,QAAApI,IAAA6vE,EAAA,KAAAA,EAAA,GAKhCrhE,EALgCqhE,EAAAznE,OAAA,QAAApI,IAAA6vE,EAAA,GAAAA,EAAA,GAKhB,GAChBvhE,EANgCuhE,EAAAznE,OAAA,QAAApI,IAAA6vE,EAAA,GAAAA,EAAA,GAMZ,GACpBthE,EAPgCshE,EAAAznE,OAAA,QAAApI,IAAA6vE,EAAA,GAAAA,EAAA,GAOb,GAEC,OAAhBliB,GAAgC,OAAR7E,EATI,CAAAgnB,EAAAr8D,KAAA,cAUtB,IAAIg6D,GAVkB,cAY1B3zC,EAAsB,GACxB6zB,GACA7zB,EAAoB37B,KAAK,CAAEiZ,OAAQ,KAAMyiB,UAAW8zB,IAEpD7E,GAAKhvB,EAAoB37B,KAAK,CAAEiZ,OAAQ,KAAMyiB,UAAWivB,IACvDpwD,EAAU,CACZmhB,UACAoC,aAAc6wC,EAAe,aAAe,eAC5CjyC,KAAM,oBACNif,sBACAgO,OAAQ,SACRt5B,QACAF,YACAC,YAzB4BuhE,EAAAr8D,KAAA,GA4Bdhb,GAAW,CAC7BQ,KAAM,eACNC,OAAQ,OACRC,KAAMT,EACNw1B,gBAAgB,IACb+2B,YAjC6B,eA4B1Bj6C,EA5B0B8kE,EAAA3oC,KAAA2oC,EAAAp8D,OAAA,SAkCzB1I,GAlCyB,yBAAA8kE,EAAAl8D,SAAAg8D,MAAH,yBAAAzgD,EAAAzV,MAAAha,KAAAoJ,YAAA,GAqC3BinE,GAAoB,eAAA14C,EAAAviC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAm3D,IAAA,IAAAn2D,EAAAyU,EAAAw+B,EAAA/F,EAAAruD,EAAAsS,EAAAilE,EAAAnnE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAA48D,GAAA,cAAAA,EAAA18D,KAAA08D,EAAAz8D,MAAA,cACzBoG,EADyBo2D,EAAA7nE,OAAA,QAAApI,IAAAiwE,EAAA,GAAAA,EAAA,GACP,MAClB3hD,EAFyB2hD,EAAA7nE,OAAA,EAAA6nE,EAAA,QAAAjwE,EAGzB8sD,IAHyBmjB,EAAA7nE,OAAA,QAAApI,IAAAiwE,EAAA,KAAAA,EAAA,GAIzBlpB,EAJyBkpB,EAAA7nE,OAAA,EAAA6nE,EAAA,QAAAjwE,EAMnBtH,EAAU,CACZmhB,UACAoC,aAAc6wC,EAAe,aAAe,eAC5CjyC,KAAM,WACNyT,YACAwZ,OAAQ,UAXaooC,EAAAz8D,KAAA,EAgBgBhb,GAAW,CAChDQ,KAAM,eACNC,OAAQ,OACRC,KAAMT,EACNw1B,gBAAgB,IACjB+2B,YArBsB,cAcrBj6C,EAdqBklE,EAAA/oC,KAsBzBn8B,EAAMskE,GAAuBtkE,EAAK+7C,GAtBTmpB,EAAAx8D,OAAA,SAuBlB1I,GAvBkB,yBAAAklE,EAAAt8D,SAAAo8D,MAAH,yBAAA34C,EAAA3d,MAAAha,KAAAoJ,YAAA,GA0BpB1M,GAAS,eAAAk7B,EAAAxiC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAs3D,IAAA,IAAAt2D,EAAAa,EAAAoyC,EAAAp0D,EAAAsS,EAAAolE,EAAAtnE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAA+8D,GAAA,cAAAA,EAAA78D,KAAA68D,EAAA58D,MAAA,cACdoG,EADcu2D,EAAAhoE,OAAA,QAAApI,IAAAowE,EAAA,GAAAA,EAAA,GACI,MAClB11D,EAFc01D,EAAAhoE,OAAA,EAAAgoE,EAAA,QAAApwE,EAGd8sD,EAHcsjB,EAAAhoE,OAAA,EAAAgoE,EAAA,QAAApwE,EAKRtH,EAAU,CACZmhB,UACAoC,aAAc6wC,EAAe,aAAe,eAC5ChlB,OAAQ,SACRptB,aATU21D,EAAA58D,KAAA,EAWIhb,GAAW,CACzBQ,KAAM,aACNC,OAAQ,OACRC,KAAMT,EACNw1B,gBAAgB,IACjB+2B,YAhBW,WAWRj6C,EAXQqlE,EAAAlpC,gBAiBOsmC,GAjBP,CAAA4C,EAAA58D,KAAA,eAAA48D,EAAA38D,OAAA,SAkBH26B,KAAE/7B,IAAItH,EAAK,SAAU,KAlBlB,cAAAqlE,EAAA38D,OAAA,SAoBP1I,GApBO,yBAAAqlE,EAAAz8D,SAAAu8D,MAAH,yBAAA74C,EAAA5d,MAAAha,KAAAoJ,YAAA,GAuBTwnE,GAAQ,eAAAr1D,EAAAnmB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA03D,IAAA,IAAA12D,EAAAgZ,EAAA9e,EAAAy8D,EAAA1nE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAm9D,GAAA,cAAAA,EAAAj9D,KAAAi9D,EAAAh9D,MAAA,cACboG,EADa22D,EAAApoE,OAAA,QAAApI,IAAAwwE,EAAA,GAAAA,EAAA,GACK,MAClB39C,EAFa29C,EAAApoE,OAAA,EAAAooE,EAAA,QAAAxwE,EAIP+T,EAJO,eAAAiH,EAAAlmB,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAIF,SAAA63D,IAAA,IAAA1lE,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAAq9D,GAAA,cAAAA,EAAAn9D,KAAAm9D,EAAAl9D,MAAA,cAAAk9D,EAAAl9D,KAAA,EACWhb,GAAW,CACzBQ,KAAM,YACNC,OAAQ,OACRC,KAAM,CACF0gB,UACAiuB,OAAQ,SACRjV,eAEJ3E,gBAAgB,IACjB+2B,YAVI,WACDj6C,EADC2lE,EAAAxpC,gBAWcsmC,GAXd,CAAAkD,EAAAl9D,KAAA,eAAAk9D,EAAAj9D,OAAA,SAYI1I,GAZJ,wBAAA2lE,EAAA/8D,SAAA88D,MAJE,yBAAA11D,EAAAtB,MAAAha,KAAAoJ,YAAA,GAAA2nE,EAAAh9D,KAAA,EAmBA05D,GAAcp5D,EAAI,OAAQ,WAAY,CAC/C8e,gBApBS,cAAA49C,EAAA/8D,OAAA,SAAA+8D,EAAAtpC,MAAA,wBAAAspC,EAAA78D,SAAA28D,MAAH,yBAAAt1D,EAAAvB,MAAAha,KAAAoJ,YAAA,GAwBR8nE,GAAc,eAAAnhD,EAAA36B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAg4D,IAAA,IAAAh3D,EAAAgZ,EAAA9e,EAAA+8D,EAAAhoE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAy9D,GAAA,cAAAA,EAAAv9D,KAAAu9D,EAAAt9D,MAAA,cACnBoG,EADmBi3D,EAAA1oE,OAAA,QAAApI,IAAA8wE,EAAA,GAAAA,EAAA,GACD,MAClBj+C,EAFmBi+C,EAAA1oE,OAAA,EAAA0oE,EAAA,QAAA9wE,EAIb+T,EAJa,eAAAgc,EAAAj7B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAIR,SAAAm4D,IAAA,IAAAhmE,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAA29D,GAAA,cAAAA,EAAAz9D,KAAAy9D,EAAAx9D,MAAA,cAAAw9D,EAAAx9D,KAAA,EACYhb,GAAW,CAC1BQ,KAAM,kBACNC,OAAQ,OACRC,KAAM,CACF0gB,UACAiuB,OAAQ,SACRjV,eAEJ3E,gBAAgB,IACjB+2B,YAVI,cACDj6C,EADCimE,EAAA9pC,KAAA8pC,EAAAv9D,OAAA,SAWA1I,GAXA,wBAAAimE,EAAAr9D,SAAAo9D,MAJQ,yBAAAjhD,EAAArW,MAAAha,KAAAoJ,YAAA,GAAAioE,EAAAt9D,KAAA,EAiBN05D,GAAcp5D,EAAI,OAAQ,iBAAkB,CACrD8e,gBAlBe,cAAAk+C,EAAAr9D,OAAA,SAAAq9D,EAAA5pC,MAAA,wBAAA4pC,EAAAn9D,SAAAi9D,MAAH,yBAAAphD,EAAA/V,MAAAha,KAAAoJ,YAAA,GAsBdooE,GAAiB,eAAAphD,EAAAh7B,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAs4D,IAAA,IAAAt3D,EAAAu3D,EAAAtkB,EAAAp0D,EAAAsS,EAAAqmE,EAAAvoE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAg+D,GAAA,cAAAA,EAAA99D,KAAA89D,EAAA79D,MAAA,cACtBoG,EADsBw3D,EAAAjpE,OAAA,QAAApI,IAAAqxE,EAAA,GAAAA,EAAA,GACJ,MAClBD,EAFsBC,EAAAjpE,OAAA,EAAAipE,EAAA,QAAArxE,EAGtB8sD,IAHsBukB,EAAAjpE,OAAA,QAAApI,IAAAqxE,EAAA,KAAAA,EAAA,GAKhB34E,EAAU,CACZmhB,UACAoC,aAAc6wC,EAAe,aAAe,eAC5CjyC,KAAM,SACNitB,OAAQ,SACRspC,UAVkBE,EAAA79D,KAAA,EAeehb,GAAW,CAChDQ,KAAM,eACNC,OAAQ,OACRC,KAAMT,EACNw1B,gBAAgB,IACb+2B,YApBmB,UAalBj6C,EAbkBsmE,EAAAnqC,MAqBtBn8B,EAAMskE,GAAuBtkE,EAAKomE,EAAO70D,YAAc,eAClCkxD,GAtBC,CAAA6D,EAAA79D,KAAA,cAuBD46B,KAAE/7B,IAAItH,EAAK,eAAgB,IAC/B5C,QAAU,GAxBL,CAAAkpE,EAAA79D,KAAA,eAyBR,IAAIg6D,GACN,mCA1BU,eAAA6D,EAAA59D,OAAA,SA8Bf1I,GA9Be,yBAAAsmE,EAAA19D,SAAAu9D,MAAH,yBAAArhD,EAAApW,MAAAha,KAAAoJ,YAAA,GAiCjByoE,GAAW,eAAA/5C,EAAA1iC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA24D,IAAA,IAAA33D,EAAAa,EAAAuB,EAAAlI,EAAA09D,EAAA3oE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAo+D,GAAA,cAAAA,EAAAl+D,KAAAk+D,EAAAj+D,MAAA,cAChBoG,EADgB43D,EAAArpE,OAAA,QAAApI,IAAAyxE,EAAA,GAAAA,EAAA,GACE,MAClB/2D,EAFgB+2D,EAAArpE,OAAA,EAAAqpE,EAAA,QAAAzxE,EAGhBic,EAHgBw1D,EAAArpE,OAAA,EAAAqpE,EAAA,QAAAzxE,EAKV+T,EALU,eAAAqkB,EAAAtjC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAKL,SAAA84D,IAAA,IAAA3mE,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAAs+D,GAAA,cAAAA,EAAAp+D,KAAAo+D,EAAAn+D,MAAA,cAAAm+D,EAAAn+D,KAAA,EACwBhb,GAAW,CACtCQ,KAAM,eACNC,OAAQ,OACRC,KAAM,CACF0gB,UACAiuB,OAAQ,SACRptB,UAAWA,EAAU1mB,IAAI,SAAA69E,GACrB,IAAMC,EAAOh9E,OAAAkuB,GAAA,EAAAluB,CAAA,GAAQ+8E,GAErB,cADOC,EAAQtrD,qBACRsrD,IAEX71D,eACAoT,aAAc,UAElBnB,gBAAgB,IACjB+2B,YAhBI,cACDj6C,EADC4mE,EAAAzqC,KAAAyqC,EAAAl+D,OAAA,SAiBA1I,GAjBA,wBAAA4mE,EAAAh+D,SAAA+9D,MALK,yBAAAv5C,EAAA1e,MAAAha,KAAAoJ,YAAA,GAAA4oE,EAAAj+D,KAAA,EAwBH05D,GAAcp5D,EAAI,OAAQ,cAAe,CAClD2G,YACAuB,iBA1BY,cAAAy1D,EAAAh+D,OAAA,SAAAg+D,EAAAvqC,MAAA,wBAAAuqC,EAAA99D,SAAA49D,MAAH,yBAAAh6C,EAAA9d,MAAAha,KAAAoJ,YAAA,GA8BXwmE,GAAyB,SAC3BtkE,EACA+7C,GAEA,IAAMsI,EAA0BhhB,KAAEyD,SAC9BiV,EACAlE,GAAaoE,YAEXqI,EAAkBjhB,KAAEyD,SAASiV,EAAUlE,GAAaqE,KACpDp7C,EAAWuiC,KAAE/7B,IAAItH,EAAK,eAAgB,IACtC+mE,EACF1jC,KAAEp+B,OAAOnE,EAAU,SAAAe,GAAG,MAAmB,OAAfA,EAAIuK,SAAiBhP,OAAS,EACtD4pE,EACF3jC,KAAEp+B,OAAOnE,EAAU,SAAAe,GAAG,MAAmB,OAAfA,EAAIuK,SAAiBhP,OAAS,EACtDolE,EAAan/B,KAAE/7B,IAAItH,EAAK,WAC9B,GAAMwiE,EACF,OAAO,IAAIC,GAA4BD,GACpC,IAAKn/B,KAAE/7B,IAAItH,EAAK,gBACnB,OAAO,IAAIyiE,GACR,IAmBX,SAAqCljE,GACjC,GAAmB,kBAAf3C,GAAO5M,IACP,OAAO,EAEX,GAAIuP,EAAInC,OAAS,EAAG,OAAO,EAG3B,IAFA,IAAMyxB,EAAY3pB,KAAKC,UAAU5F,EAAI,GAAJ,kCAExBrM,EAAI,EAAGA,EAAIqM,EAAInC,OAAQlK,IAE5B,GADA2J,QAAQH,IAAR,8BAAAkB,OAAoC1K,EAApC,KAA0CqM,EAAIrM,GAAJ,uBACtCgS,KAAKC,UAAU5F,EAAIrM,GAAJ,oCAAsD27B,EACrE,OAAO,EAIf,OAAO,EAjCKo4C,CAA4B5jC,KAAE/7B,IAAItH,EAAK,YAAa,KAC5D,OAAO,IAAIyiE,GAA4B,8IACpC,GAAI3hE,EAAS1D,QAAU,EAC1B,OAAO,IAAIqlE,GAEX,IAAMl7D,EAAgB,GAOtB,OANI88C,IAAmB0iB,GACnBx/D,EAAIpU,KAAKujB,GAAQsP,OAAOkhD,+BAExB5iB,IAAW0iB,GACXz/D,EAAIpU,KAAKujB,GAAQsP,OAAOmhD,uBAExB5/D,EAAInK,OAAS,EACN,IAAIqlE,GAAsCl7D,EAAI7I,KAAK,QAG3DsB,GAoBX,IC/eKonE,GD+eC5pB,GAAS,eAAArwB,EAAArjC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAw5D,IAAA,IAAAx4D,EAAAorB,EAAAlxB,EAAAu+D,EAAAxpE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAi/D,GAAA,cAAAA,EAAA/+D,KAAA++D,EAAA9+D,MAAA,cACdoG,EADcy4D,EAAAlqE,OAAA,QAAApI,IAAAsyE,EAAA,GAAAA,EAAA,GACI,MAClBrtC,EAFcqtC,EAAAlqE,OAAA,EAAAkqE,EAAA,QAAAtyE,EAIR+T,EAJQ,eAAA0kB,EAAA3jC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAIH,SAAA25D,IAAA,IAAAxnE,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAAm/D,GAAA,cAAAA,EAAAj/D,KAAAi/D,EAAAh/D,MAAA,cAAAg/D,EAAAh/D,KAAA,EACYhb,GAAW,CAC1BQ,KAAM,aACNC,OAAQ,OACRC,KAAM,CACF0gB,UACAiuB,OAAQ,SACR7C,SAEJ/W,gBAAgB,IACjB+2B,YAVI,cACDj6C,EADCynE,EAAAtrC,KAAAsrC,EAAA/+D,OAAA,SAWA1I,GAXA,wBAAAynE,EAAA7+D,SAAA4+D,MAJG,yBAAA/5C,EAAA/e,MAAAha,KAAAoJ,YAAA,GAAAypE,EAAA9+D,KAAA,EAiBD05D,GAAcp5D,EAAI,OAAQ,YAAa,CAChDkxB,UAlBU,cAAAstC,EAAA7+D,OAAA,SAAA6+D,EAAAprC,MAAA,wBAAAorC,EAAA3+D,SAAAy+D,MAAH,yBAAAl6C,EAAAze,MAAAha,KAAAoJ,YAAA,GAsBT4pE,GAAS,eAAAl6C,EAAA1jC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA85D,IAAA,IAAA94D,EAAAorB,EAAAlxB,EAAA6+D,EAAA9pE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAAu/D,GAAA,cAAAA,EAAAr/D,KAAAq/D,EAAAp/D,MAAA,cACdoG,EADc+4D,EAAAxqE,OAAA,QAAApI,IAAA4yE,EAAA,GAAAA,EAAA,GACI,MAClB3tC,EAFc2tC,EAAAxqE,OAAA,EAAAwqE,EAAA,QAAA5yE,EAIR+T,EAJQ,eAAAinB,EAAAlmC,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAIH,SAAAi6D,IAAA,IAAA9nE,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAAy/D,GAAA,cAAAA,EAAAv/D,KAAAu/D,EAAAt/D,MAAA,cAAAs/D,EAAAt/D,KAAA,EACgChb,GAAW,CAC9CQ,KAAM,aACNC,OAAQ,OACRC,KAAM,CACF0gB,UACAiuB,OAAQ,SACR7C,QACA+tC,WAAYlvB,GAAamvB,iBAE7B/kD,gBAAgB,IACjB+2B,YAXI,cACDj6C,EADC+nE,EAAA5rC,KAAA4rC,EAAAr/D,OAAA,SAYA1I,GAZA,wBAAA+nE,EAAAn/D,SAAAk/D,MAJG,yBAAA93C,EAAAthB,MAAAha,KAAAoJ,YAAA,GAAA+pE,EAAAp/D,KAAA,EAkBD05D,GAAcp5D,EAAI,OAAQ,YAAa,CAChDkxB,UAnBU,cAAA4tC,EAAAn/D,OAAA,SAAAm/D,EAAA1rC,MAAA,wBAAA0rC,EAAAj/D,SAAA++D,MAAH,yBAAAn6C,EAAA9e,MAAAha,KAAAoJ,YAAA,GAuBT8kD,GAAyB,eAAAslB,EAAAp+E,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAs6D,EAC9Bt6E,EACAue,GAF8B,IAAArD,EAAA,OAAAV,GAAAzU,EAAA0U,KAAA,SAAA8/D,GAAA,cAAAA,EAAA5/D,KAAA4/D,EAAA3/D,MAAA,cAIxBM,EAJwB,eAAAs/D,EAAAv+E,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAInB,SAAAy6D,IAAA,IAAAnlB,EAAAolB,EAAA90E,EAAA+0E,EAAAC,EAAAzoE,EAAAykD,EAAA,OAAAp8C,GAAAzU,EAAA0U,KAAA,SAAAogE,GAAA,cAAAA,EAAAlgE,KAAAkgE,EAAAjgE,MAAA,cACD06C,EAAct1D,EAAK6E,UACnB61E,EAFC,GAAA3qE,OAEWulD,EAAM,GAAN,IAAAvlD,OAAeulD,GAAQA,GACnC1vD,EAAgB5F,EAAK4E,WACrB+1E,EAJC,GAAA5qE,OAIanK,EAAQ,EAAI,GAAZ,IAAAmK,OAAqBnK,EAAQ,GAAMA,EAAQ,GACzDg1E,EALC,GAAA7qE,OAKoB/P,EAAKqE,cALzB,KAAA0L,OAK0C4qE,EAL1C,KAAA5qE,OAKsD2qE,GALtDG,EAAAjgE,KAAA,EAMWhb,GAAW,CACzBQ,KAAM,0BACNC,OAAQ,OACRC,KAAM,CACFN,KAAM46E,EACNr8D,UAEJ8W,gBAAgB,IACjB+2B,YAdI,UAMDj6C,EANC0oE,EAAAvsC,OAeHsoB,EAA0BphB,KAAE/7B,IAAItH,EAAK,cAflC,CAAA0oE,EAAAjgE,KAAA,gBAiBC46B,KAAEyD,SAAqB2d,EAAWvL,GAAWnjB,QAC7C0uB,EAAYphB,KAAEslC,QAAoBlkB,EAAWvL,GAAWnjB,OAlBzD2yC,EAAAhgE,OAAA,SAoBI+7C,GApBJ,cAsBD,IAAIge,GACNp/B,KAAE/7B,IAAItH,EAAK,YAAc,wBAvBtB,yBAAA0oE,EAAA9/D,SAAA0/D,MAJmB,yBAAAD,EAAA35D,MAAAha,KAAAoJ,YAAA,GAAAsqE,EAAA3/D,KAAA,EA8BjB05D,GAAcp5D,EAAI,OAAQ,yBAA0B,CAC7Dlb,OACAue,WAhC0B,cAAAg8D,EAAA1/D,OAAA,SAAA0/D,EAAAjsC,MAAA,wBAAAisC,EAAAx/D,SAAAu/D,MAAH,gBAAAS,EAAAC,GAAA,OAAAX,EAAAx5D,MAAAha,KAAAoJ,YAAA,GAoCzBzM,GAAS,eAAAy3E,EAAAh/E,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAk7D,IAAA,IAAAl6D,EAAAorB,EAAA1qB,EAAAxG,EAAAigE,EAAAlrE,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAA2gE,GAAA,cAAAA,EAAAzgE,KAAAygE,EAAAxgE,MAAA,cACdoG,EADcm6D,EAAA5rE,OAAA,QAAApI,IAAAg0E,EAAA,GAAAA,EAAA,GACI,MAClB/uC,EAFc+uC,EAAA5rE,OAAA,EAAA4rE,EAAA,QAAAh0E,EAGdua,EAHcy5D,EAAA5rE,OAAA,EAAA4rE,EAAA,QAAAh0E,EAKR+T,EALQ,eAAAmgE,EAAAp/E,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAKH,SAAAs7D,IAAA,IAAAz7E,EAAAsS,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAA8gE,GAAA,cAAAA,EAAA5gE,KAAA4gE,EAAA3gE,MAAA,cACD/a,EAAe,CACjBmhB,UACAiuB,OAAQ,SACR7C,SAEE1qB,IAAQ7hB,EAAQusC,MAAMjS,UAAYzY,GANjC65D,EAAA3gE,KAAA,EAOWhb,GAEhB,CACEQ,KAAM,aACNC,OAAQ,OACRC,KAAKrE,OAAAkuB,GAAA,EAAAluB,CAAA,GAAM4D,GACXw1B,gBAAgB,IACjB+2B,YAdI,cAODj6C,EAPCopE,EAAAjtC,KAAAitC,EAAA1gE,OAAA,SAeA1I,GAfA,wBAAAopE,EAAAxgE,SAAAugE,MALG,yBAAAD,EAAAx6D,MAAAha,KAAAoJ,YAAA,GAAAmrE,EAAAxgE,KAAA,EAsBD05D,GAAcp5D,EAAI,OAAQ,YAAa,CAChD8F,UACAorB,QACA1qB,WAzBU,cAAA05D,EAAAvgE,OAAA,SAAAugE,EAAA9sC,MAAA,wBAAA8sC,EAAArgE,SAAAmgE,MAAH,yBAAAD,EAAAp6D,MAAAha,KAAAoJ,YAAA,GA6BTurE,GAAe,eAAAC,EAAAx/E,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAA07D,IAAA,IAAA17E,EAAAmS,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAAkhE,GAAA,cAAAA,EAAAhhE,KAAAghE,EAAA/gE,MAAA,cAGd5a,EAAOiF,OACR22E,SAAS,EAAG,KACZC,cACAtjE,MAAM,EAAG,IANMojE,EAAA/gE,KAAA,EAQFhb,GAEhB,CACEyiC,mBAAoBtzB,GAAO1L,cAAcK,aACzCtD,KAAM,gBACNC,OAAQ,OACRC,KAAM,CACFw5B,SAAU95B,EACV87E,OAAQ,EACRC,MAAO,KAEX1mD,gBAAgB,IACjB+2B,YApBiB,cAQdj6C,EARcwpE,EAAArtC,KAAAqtC,EAAA9gE,OAAA,SAqBb1I,GArBa,wBAAAwpE,EAAA5gE,SAAA2gE,MAAH,yBAAAD,EAAA56D,MAAAha,KAAAoJ,YAAA,GE9lBf4Y,GAAUqP,GAAgBg3B,2BAA2B8sB,kBA+BrDl5C,GAAuB,CACzBm5C,iBAAkB,KAClBC,KAAM,KACN9qD,QAAS,KACTunB,YAAa,GACbwjC,YAAa,KACbC,YAAa,KACbC,SAAU,KAEV3mD,WAAYi1B,GAAatiB,SAGvBi0C,GAA4D,CAC9D,CAACzzD,GAAQ0zD,kBAAkB/zD,QAASsiC,GAAgB0xB,WACpD,CAAC3zD,GAAQ0zD,kBAAkB7zD,UAAWoiC,GAAgB2xB,YACxDthF,IAAI,SAACuhF,EAAcr3E,GAAf,MAAsB,CACxB3J,GAAI2J,EACJmN,MAAOkqE,EAAa,GACpB72E,MAAO62E,EAAa,MAElBC,GAA2C,CAC7C,CAAC,EAAG,KADyC5sE,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAE1Cu5C,KAAE/hC,MAAM,GAAI,IAAK,IAAItY,IAAI,SAAAyhF,GAAG,MAAI,CAACA,EAAM,EAAGA,EAAM,QACrDzhF,IAAI,SAACm7D,EAAKjxD,GAAN,MAAa,CACf3J,GAAI2J,EACJmN,MAAK,GAAAzC,OAAKumD,EAAI,GAAT,KAAAvmD,OAAe8Y,GAAQwzB,GAAvB,KAAAtsC,OAA6BumD,EAAI,IACtCzwD,MAAOywD,EAAI,MAETumB,GAAyD,CAC3D,CAACh0D,GAAQi0D,aAAahoB,YAAa5K,GAAcoE,aACjD,CAACzlC,GAAQi0D,aAAa7sB,IAAK/F,GAAcmE,KACzC,CAACxlC,GAAQi0D,aAAaC,OAAQ7yB,GAAc8yB,aAC9C7hF,IAAI,SAACm7D,EAAKjxD,GAAN,MAAa,CACf3J,GAAI2J,EACJmN,MAAO8jD,EAAI,GACXzwD,MAAOywD,EAAI,MAET2mB,GAAkDznC,KAAE/hC,MAAM,EAAG,IAAItY,IACnE,SAACm7D,EAAKjxD,GAAN,MAAa,CACT3J,GAAI2J,EACJmN,MAAK,GAAAzC,OAAKumD,GACVzwD,MAAOywD,KAGT4mB,GAAsD,CACxD,CAACr0D,GAAQs0D,cAAcC,UAAWhzB,GAAcizB,YAChD,CAACx0D,GAAQs0D,cAAcG,MAAOlzB,GAAcmzB,QAC9CpiF,IAAI,SAACm7D,EAAKjxD,GAAN,MAAa,CACf3J,GAAI2J,EACJmN,MAAO8jD,EAAI,GACXzwD,MAAOywD,EAAI,MCrGAknB,eDyGX,SAAAA,EAAY92E,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA22E,IACvB72E,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAuhF,GAAAx2E,KAAAH,KAAMH,KACDa,MAALtL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAkB6mC,IAClBn8B,EAAKy2C,aAAez2C,EAAKy2C,aAAa/1C,KAAlBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACpBA,EAAK82E,sBAAwB92E,EAAK82E,sBAAsBp2E,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK+2E,uBAAyB/2E,EAAK+2E,uBAAuBr2E,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC9BA,EAAKg3E,gCAAkCh3E,EAAKg3E,gCAAgCt2E,KAArCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGvCA,EAAKi3E,oBAAsBj3E,EAAKi3E,oBAAoBv2E,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC3BA,EAAKk3E,2BAA6Bl3E,EAAKk3E,2BAA2Bx2E,KAAhCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGlCA,EAAKm3E,2BAA6Bn3E,EAAKm3E,2BAA2Bz2E,KAAhCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGlCA,EAAKo3E,wBAA0Bp3E,EAAKo3E,wBAAwB12E,KAA7BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC/BA,EAAK6rD,0BAA4B7rD,EAAK6rD,0BAA0BnrD,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAKq3E,0BAA4Br3E,EAAKq3E,0BAA0B32E,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KApBVA,gFAwBZ,IACHs3E,EAAap3E,KAAKH,MAAlBu3E,SACRp3E,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmB6mC,KACnBm7C,sDAEsBvoD,GACtB7uB,KAAKY,SAAS,CAAEiuB,+DAEI,IACZwoD,EAAiBr3E,KAAKH,MAAtBw3E,aACR,GAAIr3E,KAAKsxD,gBAAiB,CACtB,IAAM5wD,EAAQV,KAAKU,MACnB,IACI22E,EACI1oC,KAAE/7B,IAAIlS,EAAO,yBAA0B,IACvC+L,SAASkiC,KAAE/7B,IAAIlS,EAAO,aAAc,KAAM,IAC1CiuC,KAAE/7B,IAAIlS,EAAO,WACb+L,SAASkiC,KAAE/7B,IAAIlS,EAAO,cAAe,KAAM,IAC3CiuC,KAAE/7B,IAAIlS,EAAO,oBAAqB,IAClC+L,SAASkiC,KAAE/7B,IAAIlS,EAAO,oBAAqB,KAAM,IACjDiuC,KAAE/7B,IAAIlS,EAAO,iBAAkB,IAC/BiuC,KAAE/7B,IAAIlS,EAAO,eAEnB,MAAOmS,GACL1K,QAAQ3N,MAAMqY,oDAIHle,GACnB,IAAMm9C,EAAcnD,KAAE/7B,IAAIje,EAAG,eAAgB,IAC7CqL,KAAKY,SAAS,CAAEkxC,wEAEY2d,GAC5BzvD,KAAKY,SAAS,CAAEw0E,iBAAkB3lB,gDAElBA,GAChBzvD,KAAKY,SAAS,CAAEy0E,KAAM5lB,uDAECA,GACvBzvD,KAAKY,SAAS,CAAE00E,YAAa7lB,uDAENA,GACvBzvD,KAAKY,SAAS,CAAE20E,YAAa9lB,oDAETA,GACpBzvD,KAAKY,SAAS,CAAE40E,SAAU/lB,sDAEJllC,GACtBvqB,KAAKY,SAAS,CAAE2pB,oDAGJ,IAAAm7B,EAQR1lD,KAAKU,MACHs3C,EAAS,CATH0N,EAER0vB,iBAFQ1vB,EAGR2vB,KAHQ3vB,EAIRn7B,QAJQm7B,EAKR4vB,YALQ5vB,EAMR6vB,YANQ7vB,EAOR8vB,UAUE8B,EAAa3oC,KAAEp+B,OAAOynC,EAAQ,SAAAI,GAAK,OAAKzJ,KAAE57B,QAAQqlC,KAAQ1vC,OAEhE,MADc,GAAAQ,OAAI8uC,GAAQtvC,SAAW4uE,mCAGhC,IAAAz2E,EAAAb,KAAAytD,EAC2BztD,KAAKU,MAA7B6pB,EADHkjC,EACGljC,QAASsE,EADZ4+B,EACY5+B,WACXizB,EAAOnT,KAAE/7B,IAAI2X,EAAS,WAAY,IAClC+mC,EAAgBtxD,KAAKsxD,gBAC3B,OACIryD,GAAAC,EAAAC,cAAA,OAAKC,UAzLK,yBA0LNH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OAEbhJ,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACIvuC,GAAAC,EAAAC,cAAC67D,GAAD,CACI3V,YAAarlD,KAAK2rD,0BAClBz/C,KAAM8V,GAAQ+I,aAElB9rB,GAAAC,EAAAC,cAACmsC,GAAD,CACI3B,UAAU,EACVz9B,KAAM8V,GAAQ8/B,KACd9iD,MAAO8iD,IAEX7iD,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBnuC,KAAKk3E,wBACzB9oC,QAASioC,GACTnqE,KAAM8V,GAAQwzD,WAElBv2E,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBACInuC,KAAK82E,gCAET1oC,QAASqnC,GACTvpE,KAAM8V,GAAQozD,mBAElBn2E,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBnuC,KAAK+2E,oBACzB3oC,QAAS0nC,GACT5pE,KAAM8V,GAAQqzD,OAElBp2E,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBnuC,KAAKi3E,2BACzB7oC,QAASgoC,GACTlqE,KAAM8V,GAAQuzD,cAElBt2E,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBnuC,KAAKg3E,2BACzB5oC,QAAS4nC,GACT9pE,KAAM8V,GAAQszD,eAGtBr2E,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAlOd,wBAGM,iBAgOR/yD,GAAAC,EAAAC,cAAA,aAAQo4E,GAAIv1D,GAAQw1D,YAAYC,SAChCx4E,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,QAAS5e,IAAei1B,GAAa/0B,SACrC2e,YAAa,WACT7sC,EAAKs2E,0BACDrzB,GAAa/0B,WAGrB7iB,KAAM8V,GAAQw1D,YAAYE,QAC1B14E,MAAO8kD,GAAa/0B,WAExB9vB,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,QAAS5e,IAAei1B,GAAah1B,WACrC4e,YAAa,WACT7sC,EAAKs2E,0BACDrzB,GAAah1B,aAGrB5iB,KAAM8V,GAAQw1D,YAAYG,WAC1B34E,MAAO8kD,GAAah1B,aAExB7vB,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,QAAS5e,IAAei1B,GAAatiB,QACrCkM,YAAa,WACT7sC,EAAKs2E,0BACDrzB,GAAatiB,UAGrBt1B,KAAM8V,GAAQw1D,YAAYI,QAC1B54E,MAAO8kD,GAAatiB,WAG5BviC,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAnQd,wBACG,aAmQL/yD,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,OACPmqC,QAAS5pC,KAAKu2C,aACdtuC,MAAO+Z,GAAQ61D,SAEnB54E,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO6xD,EAAgB,SAAW,OAClC1nB,QACI0nB,EACMtxD,KAAK42E,sBACL,aAEV3uE,MAAO+Z,GAAQ+pC,oBA7LL1pD,cErG5B2f,GACFqP,GAAgBg3B,2BAA2ByvB,mBAAmBC,QAwBnDA,GAjBa,SAAA75E,GAAwB,IAArB85E,EAAqB95E,EAArB85E,eAC3B,OACI/4E,GAAAC,EAAAC,cAAA,OAAKC,UARiB,WASlBH,GAAAC,EAAAC,cAAA,OAAKgY,IAAK8gE,OACVh5E,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQk2D,iBACfj5E,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQjX,UACK,OAAnBitE,GACG/4E,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBACV,IADL,gEAEmD,IAC/CH,GAAAC,EAAAC,cAAA,cAAS64E,MCTvBh2D,GACFqP,GAAgBg3B,2BAA2ByvB,mBAAmBK,MAE5DC,GAAwBpmB,GAAI,CADJ,QACoB,SAC5CqmB,GAA2BrmB,GAAI,CAFP,QAEuB,YAC/CsmB,GAA4BtmB,GAAI,CAACqmB,GAAkB,aAgC1CF,GA9BW,SAACt4E,GAAkB,IACjC04E,EAAsC14E,EAAtC04E,WAAYC,EAA0B34E,EAA1B24E,QAASC,EAAiB54E,EAAjB44E,aAC7B,OACIx5E,GAAAC,EAAAC,cAAA,OAAKC,UARiB,SASlBH,GAAAC,EAAAC,cAAA,OAAKC,UAAWg5E,IACZn5E,GAAAC,EAAAC,cAAA,OAAKgY,IAAK8gE,OACVh5E,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQ/Z,QAEnBhJ,GAAAC,EAAAC,cAAA,YAAOs5E,GAAgBz2D,GAAQ02D,SAC/Bz5E,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQjX,UACZ9L,GAAAC,EAAAC,cAAA,SAAIw5E,GAAI32D,GAAQosB,UAChBnvC,GAAAC,EAAAC,cAAA,OAAKC,UAAWi5E,IACZp5E,GAAAC,EAAAC,cAAA,OAAKC,UAAWk5E,IACZr5E,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,OACPmqC,QAAS2uC,EACTtwE,MAAO+Z,GAAQ42D,WAEnB35E,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ62D,WAEhB55E,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPmqC,QAAS4uC,EACTvwE,MAAO+Z,GAAQ82D,qBCnC7BC,GAAaC,aAAWt+E,GAAOoC,OAAOC,WAAa,IAmC1Ck8E,GAvBS,SAAA/6E,GAII,IAHxBg7E,EAGwBh7E,EAHxBg7E,mBACA7Y,EAEwBniE,EAFxBmiE,eACAzE,EACwB19D,EADxB09D,YAEA,IAAKsd,IAAuBA,EAAmB9Y,aAC3C,OAAOnhE,GAAAC,EAAAC,cAAA,kDAFa,IAIhBihE,EAAmC8Y,EAAnC9Y,aAAc+Y,EAAqBD,EAArBC,SAAUzsE,EAAWwsE,EAAXxsE,OAEhC,OACIzN,GAAAC,EAAAC,cAAC2iE,GAAA,SAAD,CAAUx7B,OAAQyyC,GAAY3qC,QAAS,CAAEgyB,iBACrCnhE,GAAAC,EAAAC,cAACi6E,GAAD,CACIxd,YAAaA,EACbyE,eAAgBA,EAChBD,aAAcA,EACdE,WAAY6Y,EACZzsE,OAAQA,MLjBlBsV,GAAUqP,GAAgBg3B,2BAA2ByvB,6BAEtDpF,iIAyCL,IAAMz2C,GAAuB,CACzBo9C,iBAAkB,KAClBC,kBAAkB,EAClBC,kBAAkB,EAClBh0C,MAAO,KACP3L,QAAS,KACT4/C,iBAAkB,KAClB7gC,MAAO,CAAC+5B,GAAM+G,QAAS/G,GAAM+G,SAC7BnzC,YAAQhmC,EACRo5E,mBAAoB,IAIlBC,GAAkB3nB,GAAI,CADN,uBACsB,WACtC4nB,GAAsB,wBAE5B,SAASC,KAA4C,IAA7BC,EAA6B1wE,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAZ,GAC/B+N,EAA8ByiE,GAAYxiE,KAAK0iE,GAAU,IAC/D,OAAO3iE,EAAMA,EAAI,GAAK,OAGpB2gE,eACF,SAAAA,EAAYj4E,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA83E,IACvBh4E,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA0iF,GAAA33E,KAAAH,KAAMH,KACDk6E,oBAAsBj6E,EAAKi6E,oBAAoBv5E,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC3BA,EAAKy2C,aAAez2C,EAAKy2C,aAAa/1C,KAAlBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACpBA,EAAKk6E,eAAiBl6E,EAAKk6E,eAAex5E,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACtBA,EAAKm6E,oBAAsBn6E,EAAKm6E,oBAAoBz5E,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC3BA,EAAKo6E,eAAiBp6E,EAAKo6E,eAAe15E,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACtBA,EAAKq6E,cAAgBr6E,EAAKq6E,cAAc35E,KAAnBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACrBA,EAAKs6E,iBAAmBt6E,EAAKs6E,iBAAiB55E,KAAtBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACxBA,EAAKY,MAALtL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAkB6mC,IATKn8B,qFAWP,IAAAe,EAAAb,KAAAc,EACiBd,KAAKH,MAA9B0lC,EADQzkC,EACRykC,MAAO80C,EADCv5E,EACDu5E,cACP1hC,EAAU34C,KAAKU,MAAfi4C,MACJ/5C,EAA8B2mC,EAClC,GAAK3mC,IAAYy7E,IACbz7E,EAAS,CACLkb,KAAMugE,EACNxvD,OAAQ8jB,KAAE/7B,IAAIynE,EAAe,iBAAkB,IAC/CC,WAAY,OAEJzvD,QAKhB,GAAKjsB,EAAL,CACA,IAAM8oD,EACF9oD,EAAOkb,KAAKygE,uBACRn3B,GAAwBo3B,SAC5B57E,EAAOkb,KAAKygE,uBACRn3B,GAAwBq3B,YAC5B77E,EAAOkb,KAAKygE,uBACRn3B,GAAwBs3B,SAC1BC,EACF/7E,EAAOkb,KAAK8gE,cAAgBl3B,GAAem3B,WAC3Cj8E,EAAOkb,KAAK8gE,cAAgBl3B,GAAeo3B,sBACzCC,EACFn8E,EAAOkb,KAAKygE,uBACZn3B,GAAwBy3B,UACtBG,EACFL,GAAqBjzB,IAAoBqzB,EACzCA,EACA/6E,KAAKY,SAAS,CAAE+3C,MAAO,CAACA,EAAM,GAAI+5B,GAAMuI,WACjCD,EACPh7E,KAAKY,SACD,CACI2kC,MAAO3mC,EACP+5C,MAAO,CAAC+5B,GAAMwI,QAASxI,GAAMyI,gBAEjC,WACIt6E,EAAKq5E,mBAIbl6E,KAAKY,SAAS,CACVy4E,iBAAoBz6E,EACdi7E,GAAelrC,KAAE/7B,IAAIhU,EAAQ,oBAAqB,KAClD,KACN2mC,MAAO3mC,UArCPuJ,QAAQ3N,MAAM,uFAyCPqqD,GAAmB,IACnBu2B,EAAcv2B,EAArBtf,MACAA,EAAUvlC,KAAKH,MAAf0lC,MACHoJ,KAAE0X,QAAQ+0B,EAAW71C,IACtBvlC,KAAKY,SAAS,CACVy4E,iBAAoB9zC,EACds0C,GAAelrC,KAAE/7B,IAAI2yB,EAAO,oBAAqB,KACjD,KACNA,+KAKRvlC,KAAKY,SAAS,CAAEg5B,QAAS,KAAM4/C,iBAAkB,OACzC6B,EAAQr7E,KAAKH,MAAbw7E,MACiBr7E,KAAKU,MAAtB6kC,UAAOoT,UACVpT,yBACDp9B,QAAQ3N,MAAM,2CACdwF,KAAKY,SAAS,CAAE+3C,MAAO,CAACA,EAAM,GAAI+5B,GAAMyI,2DAGSn7E,KAAKs7E,KAALlmF,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KACjD,SAAAC,IAAA,OAAAzF,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cAAAuF,EAAAvF,KAAA,EACiBsnE,EAAIjmF,OAAAkuB,GAAA,EAAAluB,CAAA,GACVmwC,EAAMzrB,KADG,CAEZuZ,kBAAmBsb,KAAE/7B,IACjB2yB,EACA,oCACA,IAEJyyC,eAAgBzyC,EAAM1a,UAR9B,cAAAvR,EAAAtF,OAAA,SAAAsF,EAAAmuB,MAAA,wBAAAnuB,EAAApF,SAAAkF,oBADE9N,oBAaammB,4BACftpB,QAAQ3N,MAAM,0BACdwF,KAAKY,SAAS,CAAE+3C,MAAO,CAACA,EAAM,GAAI+5B,GAAMyI,4CAG5Cn7E,KAAKY,SAAS,CACVg5B,QAAStuB,EACTkuE,iBAAkBK,GAAevuE,EAAI+6B,QACrCsS,MAAO,CAACA,EAAM,GAAI+5B,GAAMwI,gSAIpBK,EAAqBv7E,KAAKH,MAA1B07E,mBAC4Bv7E,KAAKU,MAAjC44E,qBAAkB/zC,iCAEtBvlC,KAAKu2C,aAAa6M,GAAwBq3B,WAAY,CAClDxyE,MAAO+Z,GAAQsP,OAAOkqD,eACtBtvE,KAAM8V,GAAQsP,OAAOmqD,mDAGlBnC,0BACPt5E,KAAKY,SAAS,CAAE04E,kBAAkB,gDAGoBt5E,KAAKs7E,KAALlmF,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KACtD,SAAAhF,IAAA,OAAAR,GAAAzU,EAAA0U,KAAA,SAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,cAAAc,EAAAd,KAAA,EACiBwnE,EAAiBh2C,EAAM1a,QADxC,cAAAhW,EAAAb,OAAA,SAAAa,EAAA4yB,MAAA,wBAAA5yB,EAAAX,SAAAC,qBADE7I,oBAKammB,4BACfzxB,KAAKu2C,aAAa6M,GAAwBq3B,WAAY,CAClDxyE,MAAO+Z,GAAQsP,OAAOkqD,eACtBtvE,KAAM8V,GAAQsP,OAAOoqD,8CAIvBC,EACFrwE,EAAIsvE,cAAgBl3B,GAAem3B,WACnCvvE,EAAIsvE,cAAgBl3B,GAAeo3B,sBACjCc,EAAStwE,EAAIsvE,cAAgBl3B,GAAem4B,YAC5CC,EACFxwE,EAAIsvE,cAAgBl3B,GAAeg3B,UACnCpvE,EAAIsvE,cAAgBl3B,GAAe+2B,WACjC/yB,EACFp8C,EAAIivE,uBAAyBn3B,GAAwBo3B,QACrDmB,GAAaj0B,EACb1nD,KAAKk6E,iBACEyB,IAAcj0B,EACrB1nD,KAAKm6E,iBACGyB,GAAUE,EAClB97E,KAAKu2C,aAAajrC,EAAIivE,qBAAsB,CACxCtyE,MAAO+Z,GAAQsP,OAAOkqD,eACtBtvE,KAAM8V,GAAQsP,OAAOyqD,iBAEjBH,IACRzzE,QAAQ3N,MAAM,gCACdwF,KAAKu2C,aAAajrC,EAAIivE,qBAAsB,CACxCtyE,MAAO+Z,GAAQsP,OAAOkqD,eACtBtvE,KAAM8V,GAAQsP,OAAO0qD,sJAK7BC,EACAzhF,IAGA0hF,EADoBl8E,KAAKH,MAAjBq8E,SACAD,EAAezhF,6CAIvB0hF,EADoBl8E,KAAKH,MAAjBq8E,SACA94B,GAAwBo3B,qMAEV2B,iCAAyB,EACvCZ,EAAqBv7E,KAAKH,MAA1B07E,mBACmCv7E,KAAKU,MAAxC64E,qBAAkBh0C,UAAOoT,UAC5BpT,yBACDvlC,KAAKu2C,aAAa6M,GAAwBq3B,WAAY,CAClDxyE,MAAO+Z,GAAQsP,OAAO8qD,aACtBlwE,KAAM8V,GAAQsP,OAAOmqD,mDAGlBlC,0BACPv5E,KAAKY,SAAS,CAAE24E,kBAAkB,kCAGlC5gC,EAAM,KAAO+5B,GAAMwI,SACnBviC,EAAM,KAAO+5B,GAAMyI,sCAEnBn7E,KAAKY,SAAS,CAAE+3C,MAAO,CAAC+5B,GAAMwI,QAASxI,GAAMwI,uDAGSl7E,KAAKs7E,KAALlmF,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KACtD,SAAAo1D,IAAA,OAAA56D,GAAAzU,EAAA0U,KAAA,SAAA46D,GAAA,cAAAA,EAAA16D,KAAA06D,EAAAz6D,MAAA,cAAAy6D,EAAAz6D,KAAA,EACiBwnE,EAAiBh2C,EAAM1a,QADxC,cAAA2jD,EAAAx6D,OAAA,SAAAw6D,EAAA/mC,MAAA,wBAAA+mC,EAAAt6D,SAAAq6D,qBADEjjE,oBAKammB,4BACftpB,QAAQ3N,MAAM,6DAGZ4T,EAA8CugC,KAAE/7B,IAClDtH,EACA,2BAEW83C,GAAwBy3B,2BACnC76E,KAAKm6E,2CACE/rE,IAAWg1C,GAAwBo3B,yBAC1CryE,QAAQH,IAAI,oDACLoG,IAAWg1C,GAAwBq3B,iCACtC0B,EAAiB,2BACjBh0E,QAAQH,IAAI,uCACNwL,GAAM,8BACNxT,KAAKi6E,oBAAoBkC,EAAiB,mCAEhDn8E,KAAKu2C,aAAanoC,EAAQ,CACtBnG,MAAO+Z,GAAQsP,OAAO8qD,aACtBlwE,KAAM8V,GAAQsP,OAAO+qD,uDAGtBjuE,EACPpO,KAAKY,SAAS,CAAE+3C,MAAO,CAACA,EAAM,GAAI+5B,GAAMyI,kBAExChzE,QAAQ3N,MAAM,8BACdwF,KAAKu2C,aAAanoC,EAAQ,CACtBnG,MAAO+Z,GAAQsP,OAAO8qD,aACtBlwE,KAAM8V,GAAQsP,OAAO0qD,mRAKrBE,EAAYl8E,KAAKH,MAAjBq8E,QACAvjC,EAAU34C,KAAKU,MAAfi4C,MACR34C,KAAKY,SAAS,CACV+3C,MAAO,CAACA,EAAM,GAAI+5B,GAAMuI,SACxBvB,mBAAoB,cAElBlmE,GAAM,YACZ0oE,EAAQ94B,GAAwBy3B,oLAEtBxmE,mFACFioE,EAAet8E,KAAKH,MAApBy8E,aACG,YACOjoE,kBAAZ/I,SACNgxE,GAAW,qBACJhxE,iJAEQ,IACP4wE,EAAYl8E,KAAKH,MAAjBq8E,QACJl8E,KAAKU,MAAMi4C,MAAM,KAAO+5B,GAAMuI,QAC9BiB,EAAQ94B,GAAwBy3B,WAEhCqB,EAAQ94B,GAAwBo3B,0CAG/B,IAAA+B,EAAAv8E,KAAAsuD,EAMDtuD,KAAKU,MAJL24E,EAFC/qB,EAED+qB,iBACA1gC,EAHC2V,EAGD3V,MACA/e,EAJC00B,EAID10B,QACA8/C,EALCprB,EAKDorB,mBAEE8C,EAAc7jC,EAAM,GAClBq/B,EAAmBh4E,KAAKH,MAAxBm4E,eACR,OACI/4E,GAAAC,EAAAC,cAAA,OAAKC,UAhRK,wBAiRNH,GAAAC,EAAAC,cAACs9E,GAAD,CAAa7yC,QAAS5pC,KAAKo6E,mBAC1BoC,IAAgB9J,GAAM+G,SACnBx6E,GAAAC,EAAAC,cAAA,UACIC,UAAWu6E,GACX1xE,MAAM,gBACNkP,IAAKkiE,GAAoB,GACzBxkF,GAAG,gBACH6nF,OAAQ,WACJH,EAAKxC,yBAIhByC,IAAgB9J,GAAMwI,SAAWthD,GAAWA,EAAQ0M,QACjDrnC,GAAAC,EAAAC,cAACw9E,GAAD,CACIzD,mBAAoBt/C,EAAQ0M,OAC5Bs1B,YAAa,kBACT2gB,EAAKhmC,aAAa6M,GAAwBo3B,UAE9Cna,eAAgB,SAACsb,EAAWiB,GACpBjB,EAAWY,EAAKpC,gBAEhBoC,EAAK37E,SAAS,CACV+3C,MAAO,CAACA,EAAM,GAAI+5B,GAAMyI,eACxBzB,mBAAoBkD,GAAU,QAMjDJ,IAAgB9J,GAAMyI,eACnBl8E,GAAAC,EAAAC,cAAC09E,GAAD,CACItE,WAAYv4E,KAAKg6E,eACjBxB,QAASx4E,KAAKk6E,eACdzB,aAAciB,IAGrB8C,IAAgB9J,GAAMuI,SACnBh8E,GAAAC,EAAAC,cAAC29E,GAAD,CAAS9E,eAAgBA,YA7SZ31E,cMnFlBy1E,GNyY6B,SAACj4E,GAAwB,IAAAo/C,EACnCC,qBAAS,GAD0BC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAC1D/iB,EAD0DijB,EAAA,GACjDm9B,EADiDn9B,EAAA,GAGjE,OACIlgD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACV88B,GACGj9B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAACijE,GAAD,OAGRnjE,GAAAC,EAAAC,cAAC49E,GAAD3nF,OAAAgzB,OAAA,GAAwBvoB,EAAxB,CAA+By8E,WARjB,SAACjuB,GAAD,OAAsBiuB,EAAWjuB,SOlYrDrsC,GAAUqP,GAAgBg3B,2BAA2B20B,WAErD3E,GAAmBrmB,GAAI,CADP,cACuB,YCX9BgrB,GDagB,SAACn9E,GAAkB,IACtCo9E,EAAsBp9E,EAAtBo9E,OAAQC,EAAcr9E,EAAdq9E,UAChB,OACIj+E,GAAAC,EAAAC,cAAA,OAAKC,UANS,eAOVH,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQy1D,QACfx4E,GAAAC,EAAAC,cAAA,OAAKC,UAAWi5E,IACZp5E,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,OACPmqC,QAASqzC,EACTh1E,MAAO+Z,GAAQm7D,OAEnBl+E,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPmqC,QAAS,WACLszC,IACCn9B,SAAiB9tC,SAAWiB,OAAOjB,SAASojC,KAAKhkC,MAC9C,KACF,IAENpJ,MAAO+Z,GAAQo7D,sDE+D7Bp7D,GAAUqP,GAAgBg3B,2BAA2BsS,WAGrD0iB,GAAoD1uC,KAAEr6C,IACxDgpF,GACA,SAAClvE,EAAQ5P,GACL,MAAO,CACH3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAK,GAAAzC,OAAKkF,EAAOlZ,KAAZ,OAAAgU,OAAsBkF,EAAOmvE,KAClCv+E,MAAOoP,EAAOlZ,QAIpBsoF,GAAoB,IACpBC,GAAkB,IAClBC,GAAqB,GAAAx0E,OAAM8Y,GAAQg2B,OAAOtuC,WAC1Ci0E,GAAwB,GAAAz0E,OAAM8Y,GAAQg2B,OAAO4lC,cAE7CC,IADuB,GAAA30E,OAAM8Y,GAAQg2B,OAAO8lC,aAC3B,GAAA50E,OAAM8Y,GAAQg2B,OAAO+lC,QACtCC,GAAuB,GAAA90E,OAAM8Y,GAAQg2B,OAAOimC,aAC5CC,GAAuB,GAAAh1E,OAAM8Y,GAAQg2B,OAAOmmC,aAQlD,SAASC,GAASvrE,GACd,OAA2C,IAApCA,EAAIpI,QAAQ,QAAS,IAAI/B,OAGpC,IAAM21E,GAAmB,CACrBvgD,QAAS,GACTC,QAAS,GACTlT,OAAQ,GACRE,WAAY,GACZD,OAAQ,GACRE,SAAU,ICrICszD,eD0IX,SAAAA,EAAYz+E,GAAe,IAAAC,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAs+E,IACvBx+E,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAkpF,GAAAn+E,KAAAH,KAAMH,KAFF0+E,kBAAoB,KACDz+E,EAoH3BglD,qBAAuB,WACnB1vD,OAAAqL,GAAA,EAAArL,CAACA,OAAAqL,GAAA,EAAArL,CAAA0K,IAAailD,cAAcrD,eArHL5hD,EAshB3B0+E,qBAAuB,SAAC1gD,GACpBh+B,EAAKc,SAAS,CACV69E,iBAAkB3gD,KAxhBCh+B,EA4hB3B4+E,oBAAsB,SAAC/pF,GAA2C,IAEzCqK,EACjBrK,EADA+9C,cAAiB1zC,MAGrBc,EAAKc,SAAS,CACV+9E,kBAAmB3/E,KAliBAc,EAsiB3B8+E,yBAA2B,SAAC/yE,GAAa,IAAA65C,EACc5lD,EAAKY,MAAhDm+E,EAD6Bn5B,EAC7Bm5B,oBAAqBF,EADQj5B,EACRi5B,kBACvBG,EAAajzE,EAAI7M,MAAMsS,cACzBytE,EAAgBF,EAChBG,EAAcL,EAEA,WAAd9yE,EAAI7M,QACJ+/E,EAAgB,GAChBC,EAAc,IAGlBl/E,EAAKc,SAAS,CACV69E,iBAAkBK,EAClBH,kBAAmBK,EACnBH,oBAAqBE,KAjjBzB3pF,OAAAqL,GAAA,EAAArL,CAACA,OAAAqL,GAAA,EAAArL,CAAA0K,IAAailD,eAAgB,IAAIxD,IAAgByD,QAAO,GAHlC,IAKfsd,EAAgBxiE,EAAKD,MAArByiE,YALe,OAMvBxiE,EAAKY,MAAQ,CACT8pD,eAAgB,GAChBO,cAAe,GACfk0B,mBAAe3+E,EACf4+E,sBAAkB5+E,EAClB6+E,kBAAmB,GACnBC,WAAY,GACZC,iBAAkB,GAClBC,iBAAkB,GAClB30B,6BAA6B,EAC7B40B,oBAAqB,GACrBh1D,QAAS,KACTi1D,eAAgB,GAChBC,cAAe,GACfC,eAAgB,GAChBC,kBAAmB,GACnBC,kBAAmB,GACnBC,WAAY,GACZC,WAAY,GACZC,iBAAkB,GAClBC,iBAAkB,GAClBC,oBAAqB,GACrB1mB,aAAc,GACd2mB,qBAAsBz9B,GAAYxkB,GAClCkiD,qBAAsB9C,GAAc,GACpC+C,IAAK,GACLC,aAAc,GACdC,cAAe,GACf7B,iBAAkB,GAClBI,oBAAqB,GACrBF,kBAAmB,GAEnB4B,eAAgBnrE,GAAuBktD,GACjC,CACIztE,GAAI,EACJ8W,MAAO22D,EAAYG,aACnBzjE,MAAOsjE,EAAYG,cAEvB,IAGV3iE,EAAK0gF,yBAA2B1gF,EAAK0gF,yBAAyBhgF,KAA9BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGhCA,EAAKsrD,kBAAoBtrD,EAAKsrD,kBAAkB5qD,KAAvBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACzBA,EAAK2gF,2BAA6B3gF,EAAK2gF,2BAA2BjgF,KAAhCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGlCA,EAAK4gF,qBAAuB5gF,EAAK4gF,qBAAqBlgF,KAA1BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC5BA,EAAK6rD,0BAA4B7rD,EAAK6rD,0BAA0BnrD,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK6gF,oBAAsB7gF,EAAK6gF,oBAAoBngF,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC3BA,EAAK8gF,uBAAyB9gF,EAAK8gF,uBAAuBpgF,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC9BA,EAAKwrD,6BAA+BxrD,EAAKwrD,6BAA6B9qD,KAAlCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGpCA,EAAK+gF,wBAA0B/gF,EAAK+gF,wBAAwBrgF,KAA7BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC/BA,EAAKghF,iBAAmBhhF,EAAKghF,iBAAiBtgF,KAAtBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACxBA,EAAKihF,uBAAyBjhF,EAAKihF,uBAAuBvgF,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC9BA,EAAKkhF,uBAAyBlhF,EAAKkhF,uBAAuBxgF,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC9BA,EAAKqrD,mBAAqBrrD,EAAKqrD,mBAAmB3qD,KAAxBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC1BA,EAAKmhF,yBAA2BnhF,EAAKmhF,yBAAyBzgF,KAA9BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGhCA,EAAKohF,kBAAoBphF,EAAKohF,kBAAkB1gF,KAAvBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACzBA,EAAKqhF,wBAA0BrhF,EAAKqhF,wBAAwB3gF,KAA7BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC/BA,EAAKshF,wBAA0BthF,EAAKshF,wBAAwB5gF,KAA7BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC/BA,EAAKuhF,oBAAsBvhF,EAAKuhF,oBAAoB7gF,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC3BA,EAAKwxD,cAAgBxxD,EAAKwxD,cAAc9wD,KAAnBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACrBA,EAAKwhF,qBAAuB3yC,KAAE4yC,SAC1BzhF,EAAKwhF,qBAAqB9gF,KAA1BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAEJ19E,EAAK0hF,oBAAsB7yC,KAAE4yC,SACzBzhF,EAAK0hF,oBAAoBhhF,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAMJ19E,EAAK2hF,wBAA0B9yC,KAAE4yC,SAC7BzhF,EAAK2hF,wBAAwBjhF,KAA7BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAEJ19E,EAAK4hF,iBAAmB/yC,KAAE4yC,SACtBzhF,EAAK4hF,iBAAiBlhF,KAAtBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAEJ19E,EAAK6hF,uBAAyBhzC,KAAE4yC,SAC5BzhF,EAAK6hF,uBAAuBnhF,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAEJ19E,EAAK8hF,uBAAyBjzC,KAAE4yC,SAC5BzhF,EAAK8hF,uBAAuBphF,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAEJ19E,EAAK+hF,mBAAqBlzC,KAAE4yC,SACxBzhF,EAAK+hF,mBAAmBrhF,KAAxBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACA09E,IAEJ19E,EAAKisD,SAAWpd,KAAEuW,SAASplD,EAAKisD,SAAU0xB,IA5GnB39E,qFA+GvBE,KAAKisD,OAELjsD,KAAK8hF,yDAOUj9B,EAAmBqI,GACRltD,KAAKH,MAAvBwsD,cAEH1d,KAAE0X,QAAQ71C,KAAKC,UAAUy8C,GAAY18C,KAAKC,UAAUzQ,KAAKU,SAC1DV,KAAK+rD,6NAKgD/rD,KAAKH,MAAtD6gF,yBAAsBh7C,cAAW4oC,kBACAtuE,KAAKU,MAAtC2/E,iBAAcE,mBAChBnuE,EAASJ,GACX+tC,SAAS9tC,SACTiB,OAAOjB,SAASC,KAChBgB,OAAOjB,SAASE,UAGd4vE,EAAY,SAAC1gF,GAAD,OACZA,EAAKA,EAAG+b,WAAa,IAErBjD,EAAU/H,EAAOQ,IAAI,WAErBvF,EAAW+E,EAAOQ,IAAI,YACtBhE,EAAYwD,EAAOQ,IAAI,aACvB/D,EAAWuD,EAAOQ,IAAI,YACtB9D,EAAQsD,EAAOQ,IAAI,SACnB7D,EAAQqD,EAAOQ,IAAI,SACnBpE,EAAY4D,EAAOQ,IAAI,aAEvBxD,EAAuBgD,EAAOQ,IAAI,wBAClCvD,EAAe+C,EAAOQ,IAAI,gBAC1B1D,EAAckD,EAAOQ,IAAI,eACzBzD,EAAciD,EAAOQ,IAAI,eAEzBovE,EAAe5vE,EAAOQ,IAAI,gBAC1BqvE,EAAkB7vE,EAAOQ,IAAI,mBAC7BsvE,EAAY9vE,EAAOQ,IAAI,aAEvBuvE,EAKF,CACAxD,kBAAmBoD,EAAUG,GAC7B9B,IAAK2B,EAAU1yE,GACfgxE,eACAE,kBAGApmE,GAAWurB,EAAU0M,SAAS,aAC9B+vC,EAAwB9B,aAAelmE,EAAQiD,WAE/C+kE,EAAwB5B,eAAiB,CACrC1rF,GAAI,EACJ8W,MAAOwO,EACPnb,MAAOmb,KAKT/K,GAAyBC,sBAGN,MAFfrQ,EAAQyS,GAAkBrC,EAAqBgO,aAE3C1U,yCACM4lE,EAAYtvE,WAAxBsM,SACAtL,KAAK0hF,iBAAiBp2E,WAG1B62E,EAAwB/B,IAAMtnE,GAAiBxN,eAK7C02E,GACwC,WAA1CA,EAAa5kE,WAAW9L,gBACtB2wE,GACDC,oCAEkBliF,KAAa+kD,cAC3BnD,SAASqgC,EAAgB7kE,YACzBmoC,qBAFCj6C,YAKIO,EAAMP,EAAIR,KACZ,SAAA5M,GAAA,OAAAA,EAAG6sB,aACgBk3D,EAAgB7kE,aAEvC+kE,EAAwBxD,kBAAoB9yE,EACtCA,EAAImf,SACJ,iBAIR7Q,GAAavL,GAAeC,GAAcC,qCACtClO,GAASZ,KAAD5K,OAAAkuB,GAAA,EAAAluB,CAAA,CACVgqF,WAAY2C,EAAU3yE,GACtBo7C,eAAgBu3B,EAAUnzE,GAC1BsxE,qBAAsB7yE,EACtB09C,cAAeg3B,EAAUlzE,GACzBwwE,iBAAkB0C,EAAUjzE,GAC5BwwE,iBACyB,MAArB/2E,OAAOwG,GAAO,IAAwB,KAAVA,EAA5B,IAAA7F,OACU6F,GACJxG,OAAOwG,IAAU,GAE3BkwE,cAAezwE,EAAY,IAAIjR,KAAKiR,QAAalO,EACjD4+E,iBAAkB1wE,EAAY,IAAIjR,KAAKiR,QAAalO,EACpD6+E,kBAAmB4C,EAAU7yE,GAC7BixE,qBACIxxC,KAAE7jC,KACEuyE,GACA,SAACjvE,GACG,OAAOe,IAAgBf,EAAOpP,SAEjCq+E,GAAc,GACvBoB,iBAAkBsD,EAAUC,GAAc1wE,cAC1CutE,oBAAqBkD,EAAUE,IAE5BE,YAGDhoE,GACFumE,EAAqB,CACjB7rF,GAAI,EACJ8W,MAAOwO,EACPnb,MAAOmb,kQAO0Cna,KAAKH,MAA1DwsD,kBAAeq0B,yBAAsBpe,iBACvCjW,kCACIzrD,GAASZ,KAAM,CACjB2qD,6BAA8B0B,EAAc9hC,iCAE1C3pB,GAASZ,KAAM,CACjBwqD,eAAgB6B,EAAc7B,eAC9BO,cAAesB,EAActB,cAC7Bk0B,cAAe5yB,EAAc4yB,cAC7BC,iBAAkB7yB,EAAc6yB,iBAChCC,kBAAmB9yB,EAAc8yB,mBAAqB,GACtDC,WAAY/yB,EAAc+yB,YAAc,GACxCC,iBAAkBhzB,EAAcgzB,iBAChCC,iBAAkBjzB,EAAcizB,iBAChC30B,4BACI0B,EAAc1B,4BAClB40B,oBAAqBlzB,EAAckzB,oBACnCh1D,QAAS8hC,EAAc9hC,QACvB21D,qBAAsB7zB,EAAcmR,YACpC2iB,qBACIxxC,KAAE7jC,KACEuyE,GACA,SAACjvE,GACG,OAAOi+C,EAAcyxB,cAAgB1vE,EAAOpP,SAE/Cq+E,GAAc,GACvB+C,IAAK/zB,EAAc+zB,KAAO,GAC1BC,aAAch0B,EAAcg0B,cAAgB,GAC5CC,cAAetgF,KAAKU,MAAM4/E,eAAiB,GAC3C7B,iBACKpyB,EAAc61B,WACX71B,EAAc61B,UAAUpkD,SAC5B,GACJ6gD,kBACKtyB,EAAc61B,WACX71B,EAAc61B,UAAUl3D,UAC5B,GACJ6zD,oBACIxyB,EAAc61B,WACd71B,EAAc61B,UAAUn3D,WAClBshC,EAAc61B,UAAUn3D,WAAW3N,WACnC,GACVmjE,eAAgBl0B,EAAcg0B,aACvB,CACGxrF,GAAI,EACJ8W,MAAO0gD,EAAcg0B,aACrBrhF,MAAOqtD,EAAcg0B,cAEzB,YAGyB,KAA/Bh0B,EAAcg0B,cACdK,EAAqB,CACjB7rF,GAAI,EACJ8W,MAAO0gD,EAAcg0B,aACrBrhF,MAAOqtD,EAAcg0B,sBAK7BjrE,GAAuBktD,IACvBoe,EAAqB,CACjB7rF,GAAI,EACJ8W,MAAO22D,EAAYG,aACnBzjE,MAAOsjE,EAAYG,2JAIbzjE,GACd,IAAIxE,EAAQ,GAKZ,OAJK4N,GAAcpJ,GACTmK,GAAYnK,GAAO,KACzBxE,EAAQwnB,GAAQnI,OAAO+gD,mBAFApgE,EAAQwnB,GAAQnI,OAAOuoE,WAI3C5nF,2CAEMwE,GACb,IAAIxE,EAAQ,GAKZ,OAJK4N,GAAcpJ,GACTmK,GAAYnK,GAAO,KACzBxE,EAAQwnB,GAAQnI,OAAOghD,kBAFArgE,EAAQwnB,GAAQnI,OAAOuoE,WAI3C5nF,4CAEOrB,GACd,IAAIqB,EAAQ,GAKZ,OAJKgP,GAAiBrQ,KAAOqB,EAAQwnB,GAAQnI,OAAOwoE,mBAC/C74E,GAAiBrQ,KAClBqB,EAAQwnB,GAAQnI,OAAOyoE,wBAEpB9nF,+CAEUrB,GACjB,IAAIqB,EAAQ,GAKZ,OAJKqP,GAAoB1Q,KAAOqB,EAAQwnB,GAAQnI,OAAOwoE,mBAClDx4E,GAAoB1Q,KACrBqB,EAAQwnB,GAAQnI,OAAOyoE,wBAEpB9nF,+CAEUwE,GACjB,IAAIxE,EAAQ,GAEZ,OADK4N,GAAcpJ,KAAQxE,EAAQwnB,GAAQnI,OAAOuoE,YAC3C5nF,kFAGS8Q,EAAUtM,iFACtBxE,EAAQ,GACP4N,GAAcpJ,KACfxE,EAAQwnB,GAAQnI,OAAOuoE,YAEvB92E,aAAemmB,KACfj3B,EAAQwnB,GAAQnI,OAAO0oE,iCAEpB/nF,+IAESwE,GAChB,IAAIxE,EAAQ,GAQZ,OAPK4N,GAAcpJ,GAITqJ,GAAarJ,KACnBxE,EAAQwnB,GAAQnI,OAAO2oE,qBAJvBhoF,EAAQwnB,GAAQnI,OAAOuoE,WAMpB5nF,wCAGGwE,GACV,IAAIxE,EAAQ,GAIZ,OAHK4Y,GAAoBpU,KACrBxE,EAAQwnB,GAAQnI,OAAO4oE,eAEpBjoF,8CAGSwE,GAChB,IAAIxE,EAAQ,GAKZ,OAJK4N,GAAcpJ,GACTyJ,GAAazJ,KACnBxE,EAAQwnB,GAAQnI,OAAO6oE,qBAFAloF,EAAQwnB,GAAQnI,OAAOuoE,WAI3C5nF,0CAEKwE,GACZ,IAAIxE,EAAQ,GAEZ,OADIwE,EAAM0J,QAAU,IAAGlO,EAAQwnB,GAAQnI,OAAO8oE,iBACvCnoF,qDAEgB4T,GACvBpO,KAAKY,SAAS,CACVu/E,qBAAsB/xE,iDAGT2H,GACjB/V,KAAKY,SAAS,CACV2/E,eAAgBxqE,EAChB8pE,WAAY7/E,KAAK4iF,cAAc7sE,uDAGbwU,GACtBvqB,KAAKY,SAAS,CAAE2pB,6DAGKA,GACrBvqB,KAAKY,SAAS,CACV+9E,kBAAmBp0D,EAAQS,UAAY,GACvC6zD,oBAAqBt0D,EAAQQ,WACvBR,EAAQQ,WAAW3N,WACnB,GACNqhE,iBAAkB,uDAGNtlF,GACZA,aAAgBoE,MAChByC,KAAKY,SAAS,CACVq+E,cAAe9lF,EACfumF,eAAgB1/E,KAAK6iF,kBAAkB1pF,oDAI5BA,GACfA,aAAgBoE,MAChByC,KAAKY,SAAS,CACVq+E,cAAe9lF,EACfumF,eAAgB1/E,KAAK8iF,qBAAqB3pF,0DAIzBk1D,GACzBruD,KAAKY,SAAS,CACV+pD,8BAA+B0D,oDAGf15D,GACpB,IAAMqK,EAAQrK,EAAEiK,OAAOI,MACvBgB,KAAKihF,yBAAyBjiF,GAC9BgB,KAAKyhF,wBAAwBziF,sFAEVrK,mFACX25E,EAAgBtuE,KAAKH,MAArByuE,YACA8Q,EAAep/E,KAAKU,MAApB0+E,WACFpgF,EAAQyS,GAAkB9c,EAAEiK,OAAOI,OACzCgB,KAAK0hF,iBAAiB1iF,GAED,KAAjBA,EAAM0J,QAAiB1J,IAAUogF,kCACrB9Q,EAAYtvE,UAAxBsM,SACAtL,KAAK0hF,iBAAiBp2E,UAG1BtL,KAAKkhF,kBAAkBliF,EAAO8Z,GAAiBxN,uJAE5B3W,GACnB,IAAMqK,EAAQ+jF,KAAQxsB,OAAO5hE,EAAEiK,OAAOI,OACtCgB,KAAKmhF,wBAAwBniF,GAC7BgB,KAAK2hF,uBAAuB3iF,kDAETrK,GACnB,IAAMqK,E/L8Rd,WACI,OADyDoK,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAZ,IAChCqB,QAAQ,SAAU,IAAIiH,MAAM,EAAG,I+L/R1BsxE,CAAwBruF,EAAEiK,OAAOI,OAC/CgB,KAAKohF,wBAAwBpiF,GAC7BgB,KAAK4hF,uBAAuB5iF,8CAEbA,GACfgB,KAAKqhF,oBAAoBriF,GACzBgB,KAAK6hF,mBAAmB7iF,6CAEVuU,GAKd,IAAM3E,EAAoB4C,GAAsB+B,EAAO3E,WACjDC,E/LoQd,WAA0D,IAA5B7P,EAA4BoK,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAZ,GAC1C,OAAO6H,GAAiBjS,GAAO,G+LrQFikF,CAAqB1vE,EAAO1E,UACrD7O,KAAKshF,qBAAqB1yE,GAC1B5O,KAAKwhF,oBAAoB3yE,GACzB7O,KAAKY,SAAS,CACVs/E,qBAAsB3sE,EAAOlG,SAC7Bm9C,eAAgB57C,EAChBm8C,cAAel8C,qDAGE7P,GACrBgB,KAAKY,SAAS,CAAEu+E,kBAAmBngF,8CAErBA,EAAekkF,GAC7BljF,KAAKY,SAAS,CAAEw+E,WAAYpgF,EAAOohF,IAAK8C,oDAEpBlkF,GACpBgB,KAAKY,SAAS,CAAEy+E,iBAAkBrgF,oDAEdA,GACpBgB,KAAKY,SAAS,CAAE0+E,iBAAkBtgF,gDAElBA,GAChBgB,KAAKY,SAAS,CAAE2+E,oBAAqBvgF,iDAEpBA,GACjBgB,KAAKY,SAAS,CAAE4+E,eAAgBx/E,KAAKmjF,kBAAkBnkF,iDAGvCA,GAChBgB,KAAKY,SAAS,CAAE6+E,cAAez/E,KAAKojF,iBAAiBpkF,qDAGjCA,GACpBgB,KAAKY,SAAS,CAAEg/E,kBAAmB5/E,KAAKqjF,qBAAqBrkF,wFAE1CA,EAAeskF,0FACTtjF,KAAKujF,cAAcvkF,EAAOA,UAA7C8gF,SACN9/E,KAAKY,SAAS,CAAEk/E,mKAEG9gF,GACnBgB,KAAKY,SAAS,CAAEm/E,iBAAkB//E,KAAKwjF,oBAAoBxkF,oDAExCA,GACnBgB,KAAKY,SAAS,CAAEo/E,iBAAkBhgF,KAAKyjF,oBAAoBzkF,gDAE5CA,GACfgB,KAAKY,SAAS,CAAEq/E,oBAAqBjgF,KAAK0jF,gBAAgB1kF,qMAqClDouD,EAAiBptD,KAAKH,MAAtButD,eAkBJptD,KAAKU,MAhBL8pD,mBACAO,kBACAk0B,oBACAC,iBACAC,sBACAE,qBACAC,qBACAC,wBACAh1D,YAC6Bo5D,IAA7Bh5B,4BACAm1B,eACAS,mBACA9B,uBACAI,oBACAF,wBACAS,WAGEwE,EACmB,KAArBnF,GAAiD,KAAtBE,EAE3BkF,EACAzF,GAASp+E,KAAKmjF,kBAAkB34B,KAChC4zB,GAASp+E,KAAKojF,iBAAiBr4B,KAC/BqzB,GAASp+E,KAAK6iF,kBAAkB5D,KAChCb,GAASp+E,KAAK8iF,qBAAqB7D,KACnCb,GAASp+E,KAAKwjF,oBAAoBnE,KAClCjB,GAASp+E,KAAKyjF,oBAAoBnE,KAClClB,GAASp+E,KAAK4iF,cAAcrC,KAC5BqD,EAECx2B,IACDy2B,EACIA,GACAzF,GAASp+E,KAAKqjF,qBAAqBlE,MAElCW,GAEJ6D,IACDE,EACIA,GACAzF,GAASp+E,KAAK0jF,gBAAgBnE,IAClCv/E,KAAK8jF,mBAAmBv5D,sBAErBs5D,sSAG4C7jF,KAAKH,MAAhDutD,iBAAcgE,+BAmBlBpxD,KAAKU,MAjBL8pD,mBACAO,kBACAk0B,kBACAE,sBACAC,eACAC,qBACAC,uBACA30B,8BACA40B,sBACAh1D,QACA21D,yBACAC,yBACAC,UACAE,cACA3B,sBACAE,wBACAJ,8BAEkBz+E,KAAKsxD,uBAArBvoD,SACFuF,EAAgB,CAChBjB,SAAU6yE,EACVhxE,YAAaiwE,EACbrwE,MAAOuwE,EACPzwE,UAAW47C,EACX37C,SAAUk8C,EACVh8C,MAAOuwE,EACP4C,UAAU9sF,OAAAkuB,GAAA,EAAAluB,CAAA,GACHipF,GADE,CAELrzD,SAAU2zD,EACV7gD,QAAS2gD,EACT1zD,WAAY8zD,KAGhBI,aAAyB1hF,OACzB+Q,EAASE,UAAYvE,GAA0Bg1E,IAG9C7xB,GACKgyB,GAAgBgB,IAClB9xE,EAAQlZ,OAAAkuB,GAAA,EAAAluB,CAAA,GACDkZ,EADC,CAEJY,YAAaiwE,EACbhwE,YAAagxE,EAAqBnhF,MAClCoQ,qBAAsBgwE,EACtB/vE,aAAc+wE,KAK1BhvB,EAAyBroD,EAASuF,gJAEnBic,GACf,OAAmB,OAAZA,mCAEF,IAAA1pB,EAAAb,KAAAo2D,EAODp2D,KAAKH,MALLwsD,EAFC+J,EAED/J,cACAe,EAHCgJ,EAGDhJ,aACA22B,EAJC3tB,EAID2tB,qBACAr+C,EALC0wB,EAKD1wB,UACAg7C,EANCtqB,EAMDsqB,qBANC7xB,EAsCD7uD,KAAKU,MA7BL8pD,EATCqE,EASDrE,eACAO,EAVC8D,EAUD9D,cACAo0B,EAXCtwB,EAWDswB,kBACAC,EAZCvwB,EAYDuwB,WACAC,EAbCxwB,EAaDwwB,iBACAC,EAdCzwB,EAcDywB,iBAIAE,GAlBC3wB,EAeDlE,4BAfCkE,EAgBD0wB,oBAhBC1wB,EAiBDtkC,QAjBCskC,EAkBD2wB,gBACAC,EAnBC5wB,EAmBD4wB,cACAG,EApBC/wB,EAoBD+wB,kBACAE,EArBCjxB,EAqBDixB,WACAC,EAtBClxB,EAsBDkxB,iBACAC,EAvBCnxB,EAuBDmxB,iBACAC,EAxBCpxB,EAwBDoxB,oBAEAhB,GA1BCpwB,EAyBD0K,aAzBC1K,EA0BDowB,eACAC,EA3BCrwB,EA2BDqwB,iBACAQ,EA5BC7wB,EA4BD6wB,eAEAQ,GA9BCrxB,EA6BD8wB,kBA7BC9wB,EA8BDqxB,sBACAC,EA/BCtxB,EA+BDsxB,qBACAC,EAhCCvxB,EAgCDuxB,IAEAP,GAlCChxB,EAiCDyxB,cAjCCzxB,EAkCDgxB,YACApB,EAnCC5vB,EAmCD4vB,iBACAI,EApCChwB,EAoCDgwB,oBACAF,EArCC9vB,EAqCD8vB,kBAEEqF,EAAqB,CACvBp1E,UAAW4wE,EACX3wE,SAAU4wE,GAERwE,EAAqB,CACvB52E,SAAU6yE,EACVtxE,UAAW47C,EACX37C,SAAUk8C,GAGRm5B,EAAuC,WAArBzF,EAExB,OACIx/E,GAAAC,EAAAC,cAAA,WAASC,UAAW4yD,GAAI,CA/vBd,yBAgwBN/yD,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAhwBd,sBAgwB8B,kBAChC/yD,GAAAC,EAAAC,cAACglF,GAAD,CACInlF,MAAOgB,KAAKU,MAAM6/E,eAClBje,YAAatiE,KAAKH,MAAMyiE,YACxBl0B,QAASO,KAAEr6C,IACPoxC,EACA,SAAC3vB,EAAelhB,GAAhB,MAAgC,CAC5BA,KACA8W,MAAOoK,EACP/W,MAAO+W,KAGfo4B,mBAAoB,SAACp4B,GACjBlV,EAAK6/E,qBAAqB3qE,GAC1B2qE,EAAqB3qE,IAEzB7J,KAAM8V,GAAQjM,MACdg1B,aAAc/qC,KAAKU,MAAM2/E,aACzB7lF,MAAOqlF,KAIf5gF,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAtxBd,sBAsxB8B,mBAChC/yD,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM8V,GAAQoiE,SACdplF,MAAO,MACPnK,GAAI,MACJ44C,SAAU2f,EACV1f,YAAa,WACTq2C,GAAqB,MAG7B9kF,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM8V,GAAQqmD,WACdrpE,MAAO,MACPnK,GAAI,MACJ44C,QAAS2f,EACT1f,YAAa,WACTq2C,GAAqB,OAIjC9kF,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OACbhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA3yBd,sBACA,UA2yBF/yD,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CA7yBjB,sBACA,OA4yBiB,cAAA9oD,OAGGkkD,EAAe,MAAQ,UAGzCnuD,GAAAC,EAAAC,cAACu0D,GAAD,CACI75C,OAAQmqE,EACRp5C,cAAe5qC,KAAKorD,kBACpB73C,OAAQ0wE,IAEZhlF,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CAzzBrB,sBACA,OAwzBqB,cAAA9oD,OAGGkkD,EAAe,MAAQ,OACrC,iBAGJnuD,GAAAC,EAAAC,cAAA,aAAQu+E,IACPtwB,EACGnuD,GAAAC,EAAAC,cAACklF,GAAD,CACI7pF,MAAOklF,EACP3+E,aAAcf,KAAK2gF,oBACnB3hF,MAAOigF,IAGXhgF,GAAAC,EAAAC,cAACklF,GAAD,CACI7pF,MAAOklF,EACP3+E,aAAcf,KAAK4gF,uBACnB5hF,MAAOkgF,KAKnBjgF,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CAj1BrB,sBACA,OAg1BqB,cAAA9oD,OAGGkkD,EAAe,MAAQ,OACrC,qBAGJnuD,GAAAC,EAAAC,cAACwmD,GAAD,CACIvX,QAASs6B,GAAUp0E,IAAI,SAAAgwF,GAAE,MAAK,CAC1BzvF,GAAIyvF,EAAGpvF,KACPyW,MAAK,GAAAzC,OAAKo7E,EAAGjlF,MACbL,MAAOslF,EAAGjlF,QAEd8uC,mBACInuC,KAAK4+E,yBAET1yE,KAAM8V,GAAQg2B,OAAOusC,aACrBjjF,YAAY,IACZtC,MAAO,CACHA,MAAOy/E,EACP9yE,MAAO8yE,MAKlByF,GACGjlF,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CA52BzB,sBACA,OA22ByB,cAAA9oD,OAIPkkD,EAAe,MAAQ,OAE3B,iBAGJnuD,GAAAC,EAAAC,cAAC67D,GAAD,CACI3V,YAAa,SAAC68B,GACVrhF,EAAK2/E,yBACD0B,IAGRrkD,eAC4B,KAAxBghD,EACM,CACI9zD,WAAYhe,OACR8xE,GAEJh0D,OAAQ,GACRC,OAAQ,GACRE,SAAU2zD,QAEdr+E,EAEV4L,KAAK,iBAKjBjN,GAAAC,EAAAC,cAACmsC,GAAD,CACIp/B,KAAM8V,GAAQg2B,OAAOwsC,WACrB75C,SAAUu5C,EACVt5C,cAAe5qC,KAAK0+E,oBACpB1/E,MAAO2/E,KAGTvxB,GACEnuD,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAOolF,EACPh1C,cAAe5qC,KAAK6gF,wBACpB30E,KAAMyxE,GACN3+E,MAAOmgF,EACPx0C,UAAU,KAGhByiB,GACEnuD,GAAAC,EAAAC,cAACwmD,GAAD,CACI9wD,GAAG,eACHk2C,aAAco1C,EAAqBx0E,MACnCyiC,QAASivC,GACTlvC,mBAAoB,SAChB//B,GAEAvN,EAAK4/E,2BAA2BryE,IAEpCpP,MAAOmhF,EACPj0E,KAAM8V,GAAQg2B,OAAO8lC,eAG3B1wB,GACEnuD,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAOslF,EACPl1C,cAAe5qC,KAAK8gF,iBACpB50E,KAAM2xE,GACN7+E,MAAOogF,KAGbhyB,GACEnuD,GAAAC,EAAAC,cAACmsC,GAAD,CACIX,UAAU,EACVz+B,KAAM8V,GAAQkhE,IACdlkF,MAAOohF,IAGfnhF,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAOwlF,EACPp1C,cAAe5qC,KAAKghF,uBACpB90E,KAAMgyE,GACNl/E,MAAOsgF,IAEXrgF,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAOulF,EACPn1C,cAAe5qC,KAAK+gF,uBACpB70E,KAAM8xE,GACNh/E,MAAOqgF,MAInBpgF,GAAAC,EAAAC,cAAC8zD,GAAD,CACIsG,aAAc0mB,EACdpiD,eACMwuB,GACIA,EAAc9hC,cACdjqB,EAEV4yD,qBAAsBlzD,KAAKmrD,mBAC3BiI,yBAA0BpzD,KAAKsrD,6BAC/B+H,sBAAuBrzD,KAAK2rD,0BAC5Bz/C,KAAM8V,GAAQsxC,iBAAiB3nD,gBAz6BnBtJ,cEzH1B2f,GAAUqP,GAAgBg3B,2BAA2Bo8B,oBCf5CC,GDkB+B,SAAC7kF,GAAkB,IAEzD8kF,EAEA9kF,EAFA8kF,YACAC,EACA/kF,EADA+kF,YAHyD3lC,EAKbC,qBAAS,GALIC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAKtD4lC,EALsD1lC,EAAA,GAKpC2lC,EALoC3lC,EAAA,GAOvD4lC,EAAahsB,GACf4rB,GAAeC,EAAc5iE,GAAQmgC,QAAUngC,GAAQy1D,QAgB3D,OATAxkC,qBAAU,WACN,IAAM+xC,EAAe,WACjBF,EAAoB5xE,OAAO+xE,QAAU,MAIzC,OADA/xE,OAAOgyE,iBAAiB,SAAUF,GAC3B,kBAAM9xE,OAAOiyE,oBAAoB,SAAUH,KACnD,IAGC/lF,GAAAC,EAAAC,cAAA,WAASC,UA3BK,+BA2BqBshB,MAAO,CAAEyC,aAAc,QACtDlkB,GAAAC,EAAAC,cAAA,UAAK4lF,GACJF,GACO5lF,GAAAC,EAAAC,cAACiuC,GAAD,CACI1sB,MAAO,CACHM,SAAU,WACVE,OAAQ,QAEZzhB,MAAO,SACPmqC,QAvBM,WACtB12B,OAAOkyE,SAAS,CAAEtqC,IAAK,IAAKshB,SAAU,YAuBtBn0D,MAAO+Z,GAAQqjE,+BEjBjCrjE,GAAUqP,GAAgBg3B,2BAA2Bi9B,oBAErDC,GAAiBvzB,GAAI,CADL,kBACqB,UAErCwzB,IADkBxzB,GAAI,CAACuzB,GAAgB,WACvBvzB,GAAI,CAACuzB,GAAgB,UAMpC,SAASE,GACZC,GAEU,IAPW76E,EAMrBwI,EACUjK,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAD6B,KAEjC2pC,EAAqBpE,KAAEr6C,IACzBoxF,EACA,SAACC,GACG,MAAO,CAACA,EAAK,GAAGj5E,OAAQi5E,EAAK,GAAGj5E,UAGpCk5E,EAAkBj3C,KAAEk3C,UACpBH,EACA,SAACv4E,GACG,IAAMjO,EAAIiO,EAAI,GAAGtY,KAAO85C,KAAE/7B,IAAIS,EAAW,OAAQ,IAC3C3F,EAAIP,EAAI,GAAGtY,KAAO85C,KAAE/7B,IAAIS,EAAW,OAAQ,IACjD,OAAOnU,GAAKwO,KAGK,IAArBk4E,IACAA,IAvBiB/6E,EAuBiB66E,GAtB3Bh9E,OAAS,EAAIwP,KAAKC,MAAMtN,EAAInC,OAAS,GAAK,OAsBQ,GAS7D,MAAO,CACHoqC,QAAS8yC,EACT5yC,SAHkBrE,KAAEp/B,OAAOm2E,EANf,SAACnuE,EAAgBvY,GAC7B,IAAM8mF,EAAM/4E,OAAO/N,EAAM,GAAG0N,QACtBq5E,EAAMh5E,OAAO/N,EAAM,GAAG0N,QACtBs5E,EAAMF,EAAMC,EAAMD,EAAMC,EAC9B,OAAOxuE,EAASyuE,EAAMzuE,EAASyuE,GAEyB,GAIxDjzC,UAIR,SAASkzC,GACLP,EACA1mF,GAEA,IAAImO,EAUJ,OATInO,aAAiBuM,OAA0B,IAAjBvM,EAAM0J,SAChCyE,EAAMwhC,KAAE7jC,KAAK46E,EAAoB,SAACrxF,GAC9B,IAAMyxF,EAAM/4E,OAAO1Y,EAAE,GAAGqY,QAClBq5E,EAAMh5E,OAAO1Y,EAAE,GAAGqY,QAClBw5E,EAAWn5E,OAAO/N,EAAM,IACxBmnF,EAAWp5E,OAAO/N,EAAM,IAC9B,OAAO8mF,IAAQI,GAAYH,IAAQI,KAGpCh5E,GAAO,KAGlB,IClGem4E,GDkGyB,SAACzlF,GAAkB,IAEnDumF,EASAvmF,EATAumF,8BACAC,EAQAxmF,EARAwmF,sBACAC,EAOAzmF,EAPAymF,QACAC,EAMA1mF,EANA0mF,mBACAC,EAKA3mF,EALA2mF,WACAC,EAIA5mF,EAJA4mF,4BACAC,EAGA7mF,EAHA6mF,oBACAC,EAEA9mF,EAFA8mF,WACAC,EACA/mF,EADA+mF,oBAVmD3nC,EAenDC,oBAAoCunC,GAfetnC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAanD4nC,EAbmD1nC,EAAA,GAcnD2nC,EAdmD3nC,EAAA,GAAAG,EAgBfJ,oBACpCwnC,GAjBmDnnC,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAgBhDynC,EAhBgDxnC,EAAA,GAgBlCynC,EAhBkCznC,EAAA,GAAAma,EAmBCxa,qBACpD,GApBmDya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAmBhDutB,EAnBgDttB,EAAA,GAmB1ButB,EAnB0BvtB,EAAA,GAAAE,EAsBf3a,qBAAkB,GAtBH4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAsBhDstB,EAtBgDrtB,EAAA,GAsBlCstB,EAtBkCttB,EAAA,GAuBjDutB,EAAoC5B,GACtCW,EACAS,GAGES,EAA4B7B,GAC9BY,EACAU,GAGEQ,EACFnB,EAA8BiB,EAAsBv0C,UAAY,KAC9D00C,EACFnB,EAAsBiB,EAAcx0C,UAAY,KAmCpD,OACI7zC,GAAAC,EAAAC,cAAA,OAAKC,UArIS,mBAsIVH,GAAAC,EAAAC,cAACs9E,GAAD,CAAa7yC,QAAS08C,IACrBC,GAAsBH,EAA8B19E,OAAS,GAC1DzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAWmmF,IACZtmF,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,QAASw5C,EACTv5C,YA3BY,WAC5Bw5C,GAAyBD,IA2BT/6E,KAAM8V,GAAQylE,iBACdzoF,MAAOgjB,GAAQylE,mBAElBR,GACGhoF,GAAAC,EAAAC,cAAA,OAAKC,UAAWomF,IACZvmF,GAAAC,EAAAC,cAACuoF,GAADtyF,OAAAgzB,OAAA,GACQi/D,EADR,CAEIlpF,SAjDS,SAAC2xC,GAClC,IAAM3iC,EAAiC84E,GACnCG,EACAt2C,GAEJg3C,EAAwB35E,SAkDnBq5E,GAAcH,EAAsB39E,OAAS,GAC1CzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAWmmF,IACZtmF,GAAAC,EAAAC,cAAC8yD,GAAD,CACIxkB,QAAS05C,EACTz5C,YA1CI,WACpB05C,GAAiBD,IA0CDj7E,KAAM8V,GAAQ2lE,SACd3oF,MAAOgjB,GAAQ2lE,WAElBR,GACGloF,GAAAC,EAAAC,cAAA,OAAKC,UAAWomF,IACZvmF,GAAAC,EAAAC,cAACuoF,GAADtyF,OAAAgzB,OAAA,GACQk/D,EADR,CAEInpF,SA5DC,SAAC2xC,GAC1B,IAAM3iC,EAAiC84E,GACnCI,EACAv2C,GAEJk3C,EAAgB75E,SA6DZlO,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPmqC,QAAS,WA3CjB+8C,EAXqBM,EAEbJ,GAEFU,EAHA,KAIOJ,EAELJ,GAEFS,EAHA,MAmDMZ,EAAoB,CAChBS,wBACAC,mBAGRr/E,MAAO+Z,GAAQ+pC,aExMzB67B,GAAmB51B,GAAI,CADP,aACuB,YAEvChwC,GAAUqP,GAAgBg3B,2BAA2Bw/B,MAgH5CC,eA7GX,SAAAA,EAAYjoF,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA8nF,IACvBhoF,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA0yF,GAAA3nF,KAAAH,KAAMH,KACDa,MAAQ,CACTqnF,mBAAoB,GACpBC,WAAY,IAEhBloF,EAAKmoF,aAAenoF,EAAKmoF,aAAaznF,KAAlBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KANGA,8EAQd4O,EAAmB4yB,EAAetiC,GAAgB,IACnDqmD,EAAgBrlD,KAAKH,MAArBwlD,YADmDvkD,EAEAd,KAAKH,MAAxDqoF,EAFmDpnF,EAEnDonF,2BAA4BC,EAFuBrnF,EAEvBqnF,mBACvB,OAATz5E,EAAew5E,EAA2B5mD,GAAStiC,EACrC,OAAT0P,IAAey5E,EAAmB7mD,GAAStiC,GACpDqmD,EAAY6iC,EAA4BC,oCAEnC,IAAAtnF,EAAAb,KAAAk2C,EAMDl2C,KAAKH,MAJLkoF,EAFC7xC,EAED6xC,mBACAG,EAHChyC,EAGDgyC,2BACAF,EAJC9xC,EAID8xC,WACAG,EALCjyC,EAKDiyC,mBAEJ,OACIlpF,GAAAC,EAAAC,cAAA,OAAKC,UA7BK,cA8BNH,GAAAC,EAAAC,cAAA,OAAKC,UAAWwoF,IACXG,EAAmBr/E,OAAS,GACzBzJ,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACIvuC,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQosB,QAAQ6f,YAAYhmD,OACjChJ,GAAAC,EAAAC,cAAA,OAAKC,UAhCV,gBAiCU2oF,EAAmBzzF,IAChB,SAACm7D,EAAsBjxD,GACnB,IAAMivC,EACFy6C,EAA2Bx/E,QACvBlK,GACJ0pF,EAA2B1pF,GAC/B,OACIS,GAAAC,EAAAC,cAACipF,GAAD,CACI9oF,IAAKd,EACLivC,QAASA,EACTuqB,SAAU,WACNn3D,EAAKonF,aACD,KACAzpF,GACCivC,IAGTvhC,KAAMujD,EAAIniC,YACVrlB,MAAOwnD,EAAI9jD,MACXssD,UAAW,CACPtpB,KAAE/7B,IACE68C,EACA,eACA,IAEJ9gB,KAAE/7B,IACE68C,EACA,cACA,KAENzlD,KAAK,WAQlCg+E,EAAWt/E,OAAS,GACjBzJ,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACIvuC,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQosB,QAAQgb,IAAInhD,OACzBhJ,GAAAC,EAAAC,cAAA,OAAKC,UA1EV,gBA2EU4oF,EAAW1zF,IACR,SAACm7D,EAAsBjxD,GACnB,IAAMivC,EACF06C,EAAmBz/E,QAAUlK,GAC7B2pF,EAAmB3pF,GACvB,OACIS,GAAAC,EAAAC,cAACipF,GAAD,CACI9oF,IAAKd,EACLivC,QAASA,EACTuqB,SAAU,WACNn3D,EAAKonF,aACD,KACAzpF,GACCivC,IAGTvhC,KAAMujD,EAAIniC,YACVrlB,MAAOwnD,EAAI9jD,MACXssD,UACMxI,EAAI9f,QACJ8f,EAAI9f,OAAOpQ,OACXkwB,EAAI9f,OAAOnQ,KAFb,GAAAt2B,OAGSumD,EAAI9f,OAAOpQ,MAHpB,KAAAr2B,OAG6BumD,EAAI9f,OAAOnQ,MAClC,kBA/FpCn9B,cCRhB2f,GACFqP,GAAgBg3B,2BAA2BzhC,MAAMyhE,kBAgD/CC,GAAY,CACdv5D,SAAU,CAAE7yB,GAAI,CAAE8yB,KAAM,GAAIC,IAAK,IAAM5yB,GAAI,CAAE4yB,IAAK,GAAID,KAAM,KAC5DF,WAAY,CAAE5yB,GAAI,GAAIG,GAAI,IAC1BmlC,QAAS,CAAEtlC,GAAI,GAAIG,GAAI,KA6iBZksF,GA1iB6B,SAAArqF,GAOtC,IANF8vB,EAME9vB,EANF8vB,KACAw6D,EAKEtqF,EALFsqF,iBACAxtE,EAIE9c,EAJF8c,UACAytE,EAGEvqF,EAHFuqF,gCACAlC,EAEEroF,EAFFqoF,mBACAC,EACEtoF,EADFsoF,WACEvnC,EACwBC,oBAAiBopC,IADzCnpC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACKv+C,EADLy+C,EAAA,GACYv+C,EADZu+C,EAAA,GAAAG,EAE4BJ,qBAAS,GAFrCK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEKopC,EAFLnpC,EAAA,GAEeopC,EAFfppC,EAAA,GAAAma,EAGgCxa,qBAAS,GAHzCya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAGKkvB,EAHLjvB,EAAA,GAGgBkvB,EAHhBlvB,EAAA,GAAAE,EAIyC3a,qBAAS,GAJlD4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAIKivB,EAJLhvB,EAAA,GAIsBivB,EAJtBjvB,EAAA,GAMIkvB,EAAkB,SAAChuE,GACrB,IAAM6qC,EAAYyiC,GAEZW,EAAgB,SAACvxE,GACnB,IAAMwxE,EAAeluE,EAAUlQ,KAAK,SAAAqnE,GAAG,OAAIA,EAAIz6D,SAAWA,IAC1D,GAAIwxE,EAAc,CACd,IAAMl3C,EAAOm3C,EAAgBD,GAE7B,GAAIl3C,IAAS8R,GAAa/0B,SAAU,CAChC,IAAMq6D,EAAMF,EAAat6D,UAA0Brf,OAC/C,SAACC,EAAK8K,GACF,OAAOllB,OAAAkuB,GAAA,EAAAluB,CAAA,GACAoa,EADPpa,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEKsiB,EAFLtiB,OAAAkuB,GAAA,EAAAluB,CAAA,GAIWoa,EAAIkI,GAJftiB,OAAAg/D,GAAA,EAAAh/D,CAAA,GAKSklB,EAAK9N,UAAmB8N,EAAK3J,cAI1C,IAGJk1C,EAAU92B,SAAV35B,OAAAkuB,GAAA,EAAAluB,CAAA,GACOywD,EAAU92B,SACVq6D,GAIX,IACIp3C,IAAS8R,GAAah1B,YACtBkjB,IAAS8R,GAAatiB,UAElB0nD,EAAat6D,UAAW,CACxB,IAAMy6D,EAAgBH,EAAat6D,UAA0B,GAC7Di3B,EAAU7T,GAAV58C,OAAAkuB,GAAA,EAAAluB,CAAA,GACOywD,EAAU7T,GADjB58C,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEKsiB,EAAS2xE,EAAa14E,SACjB04E,EAAa14E,SAASyM,WACtB,QAOtBmpE,GACA0C,EAAc,MAGdzC,GACAyC,EAAc,MAGlBroF,EAASilD,IAwEb,GArEA5S,qBAAU,WACFj4B,GACAguE,EAAgBhuE,IAErB,CAACA,IAEJi4B,qBAAU,WACN,IAAMq2C,EAAgB,SAACC,GAAD,MACN,KAAZA,EAAGv6D,MAA0B,KAAXu6D,EAAGt6D,KAEnBu6D,EAAW,SAACt7C,GAAD,OAAkBs4C,GAAqB,KAARt4C,GAC1Cu7C,EAAY,SAACv7C,GAAD,OACdq4C,GAA6B,KAARr4C,GAErBw7C,GAAS,EAET1uE,GACAA,EAAUvP,QAAQ,SAAA0mE,GAGd,OAFagX,EAAgBhX,IAGzB,KAAKruB,GAAah1B,WACd46D,EAASt6D,QACU,OAAf+iD,EAAIz6D,OACEhX,EAAMouB,YACF26D,EAAU/oF,EAAMouB,WAAW5yB,IAC/BwE,EAAMouB,YACF06D,EAAS9oF,EAAMouB,WAAWzyB,KAGxC,MAEJ,KAAKynD,GAAatiB,QACdkoD,EAASt6D,QACU,OAAf+iD,EAAIz6D,OACEhX,EAAM8gC,SAAWioD,EAAU/oF,EAAM8gC,QAAQtlC,IACzCwE,EAAM8gC,SAAWgoD,EAAS9oF,EAAM8gC,QAAQnlC,KAElD,MAEJ,KAAKynD,GAAa/0B,SACd,IAAI46D,GAAgB,EAEhBnD,GAA6B,OAAfrU,EAAIz6D,SAClBiyE,EAAgBv6D,QACZu6D,GACIjpF,EAAMquB,UACNu6D,EAAc5oF,EAAMquB,SAAS1yB,MAGrCkqF,GAAqC,OAAfpU,EAAIz6D,SAC1BiyE,EAAgBv6D,QACZu6D,GACIjpF,EAAMquB,UACNu6D,EAAc5oF,EAAMquB,SAAS7yB,MAIzCwtF,EAASC,KAQzBhB,EAAUe,IACX,CAAChpF,KAECsa,EACD,OAAO,KAGX,IA6KM4uE,EAAgB,SAACC,EAAgBC,GAAjB,OAClBr9E,SAASo9E,EAAQ,IAAM,IAAOC,GAE5BC,EAAqB,SACvBC,EACAtyE,EACAkX,GAEA,OAAQo7D,GACJ,KAAKlmC,GAAah1B,WAClB,KAAKg1B,GAAatiB,QACd,IAAIyoD,EAAkB,KAChBjrF,EAAQ0B,EAAMspF,GACbtpF,EAAMspF,GAAkBtyE,GACzB,GACFkX,IACAq7D,EAAkBr7D,EAAU9jB,KACxB,SAAAo/E,GAAG,OAAKA,EAAI19E,YAAsBw9E,KAI1C,IAAMG,EAAgB/6D,QAClB66D,GACIA,EAAgBt5E,UAChBi5E,EAAc5qF,EAAOirF,EAAgBt5E,WAGvCnW,EACEouF,GAAuB,KAAV5pF,EACNgjB,GAAQ8rD,WAGZgb,IAAoBqB,EAApB,GAAAjhF,OACE8Y,GAAQooE,YADV,KAAAlhF,OAEG+gF,GAAmBA,EAAgBt5E,SAAnC,GAAAzH,OACS,IAAO+gF,EAAgBt5E,SADhC,QAEM,SAEVrQ,EAGV,OACIrB,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACmsC,GAAD,CACI58B,KAAK,SACLxC,KACI8V,GACe,OAAXtK,EAAkB,YAAc,YAGxC1Y,MAAOA,EACP4rC,cAAe,SAAAj2C,GAAC,OAhOH,SACjCq9C,EACAt6B,EACA1Y,GAEA4B,EAASxL,OAAAkuB,GAAA,EAAAluB,CAAA,GACFsL,EADCtL,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEH48C,EAFG58C,OAAAkuB,GAAA,EAAAluB,CAAA,GAGGsL,EAAMsxC,GAHT58C,OAAAg/D,GAAA,EAAAh/D,CAAA,GAICsiB,EAAS1Y,OAwNMqrF,CACIL,EACAtyE,EACA/iB,EAAEiK,OAAOI,QAGjBxE,MAAOA,IAGXyE,GAAAC,EAAAC,cAAA,SACK6iB,GAAQsoE,mBAAoB,IAC5BL,GAAmBA,EAAgBt5E,SAC9Bs5E,EAAgBt5E,SAChB,GAAI,IAJd,QAUZ,KAAKmzC,GAAa/0B,SACd,OACI9vB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wCACXH,GAAAC,EAAAC,cAAA,UAEQ6iB,GACe,OAAXtK,EAAkB,YAAc,aAK5CzY,GAAAC,EAAAC,cAAA,WACK,CAAC,OAAQ,OAAO7K,IAAI,SAAAQ,GACjB,IAAMy1F,EAAUz1F,EACVkK,EAAQ0B,EAAMquB,SACdruB,EAAMquB,SAASrX,GAAQ6yE,GACvB,GAEAN,EAAkBr7D,EAAU9jB,KAC9B,SAAAo/E,GAAG,OACEA,EAAI19E,aACJw9E,IAAalmC,GAAa/0B,SACrBw7D,EACAP,KAGRG,EAAgB/6D,QAClB66D,GACIA,EAAgBt5E,UAChBi5E,EACI5qF,EACAirF,EAAgBt5E,WAItBnW,EACEouF,GAAuB,KAAV5pF,EACNgjB,GAAQ8rD,WAGZgb,IAAoBqB,EAApB,GAAAjhF,OACE8Y,GAAQooE,YADV,KAAAlhF,OAEG+gF,GACAA,EAAgBt5E,SADhB,GAAAzH,OAES,IACC+gF,EAAgBt5E,SAH1B,QAIM,SAEVrQ,EAGV,OACIrB,GAAAC,EAAAC,cAAA,OACIG,IAAKxK,EACLsK,UAAU,gDAEVH,GAAAC,EAAAC,cAACmsC,GAAD,CACIhsC,IAAKxK,EACL4Z,KAAK,SACLxC,KAAM8V,GAAQuoE,GACdvrF,MAAOA,EACP4rC,cAAe,SAAAj2C,GAAC,OAxR/B,SACrB+iB,EACAhJ,EACA1P,GAdwB,IAACoqF,EAgBzBxoF,EAASxL,OAAAkuB,GAAA,EAAAluB,CAAA,GACFsL,EADC,CAEJquB,SAAS35B,OAAAkuB,GAAA,EAAAluB,CAAA,GACFkzF,GAAUv5D,SACVruB,EAAMquB,SAFL35B,OAAAg/D,GAAA,EAAAh/D,CAAA,GAGHsiB,EAHGtiB,OAAAkuB,GAAA,EAAAluB,CAAA,IAlBag0F,EAsBU1oF,EAAMquB,SAbtCq6D,GAAUd,GAAUv5D,UAa4BrX,GAJvCtiB,OAAAg/D,GAAA,EAAAh/D,CAAA,GAKCsZ,EAAO1P,SA6QoBwrF,CACI9yE,EACA6yE,EACA51F,EAAEiK,OAAOI,QAGjBxE,MAAOA,IAGXyE,GAAAC,EAAAC,cAAA,SACK6iB,GAAQsoE,mBAAoB,IAC5BL,GACDA,EAAgBt5E,SACVs5E,EAAgBt5E,SAChB,GAAI,IALd,YAe5B,QACI,OAAO,OAIb85E,EAAqB,WACvBjC,IAEIxtE,GACAguE,EAAgBhuE,IAIlBmuE,EAAkB,SAAChX,GACrB,GAAIA,EAAItjD,WACJ,OAAOsjD,EAAItjD,WAEf,IAAI67D,EAAK,GAUT,OARIvY,EAAIvjD,YAEA87D,EADyB,IAAzBvY,EAAIvjD,UAAUlmB,OACTo7C,GAAa/0B,SAEbojD,EAAIvjD,UAAU,GAAGpiB,WAAa,IAIpCk+E,GAGX,OACIzrF,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,KAAMphB,EACNqhB,iBAAe,EACf1B,YAAa88C,EACbn7C,YAAa,CAAEhvB,OAAQ,cAAeqqE,OAAQ,oBAE9C1rF,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OAEZ+S,EAAU1mB,IAAI,SAAC69E,EAAK7yE,GACjB,GACKinF,GAAqC,OAAfpU,EAAIz6D,QAC1B8uE,GAA6B,OAAfrU,EAAIz6D,OACrB,CACE,IAAMkzE,EAAWzB,EAAgBhX,GACjC,OACIlzE,GAAAC,EAAAC,cAACquC,GAAA,SAAD,CAAUluC,IAAKA,GACVyqF,EACGa,EACAzY,EAAIz6D,OACJy6D,EAAIvjD,eAOvBk6D,GACG7pF,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+CACXH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ6oE,kBAIpB5rF,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uCACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQ8oE,QACfrrF,MAAO,OACPmqC,QAAS6gD,IAEbxrF,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQ+oE,YACftrF,MAAO,SACPmqC,QA1PG,WACnB,GAAK8+C,EAKL,GAlDO1tE,EAAUzL,OAAO,SAACC,EAAK8K,GAC1B,IAAMswE,EAAWzB,EAAgB7uE,GAEjC,GAAIA,EAAKsU,WAAag8D,EAAU,CAC5B,GAAIA,IAAa9mC,GAAa/0B,SAC1B,OAAOzU,EAAKsU,UAAUrf,OAClB,SAACy7E,EAAOC,GAAR,OACI77D,QACI1uB,EAAMquB,UACF66D,EACIlpF,EAAMquB,SAASzU,EAAK5C,QAChBuzE,EAAOz+E,WAEXy+E,EAAOt6E,YAEdq6E,IACT,GAIR,IAAME,EAAgB5wE,EAAKsU,UAAU9jB,KACjC,SAAAhS,GAAA,OAAAA,EAAG0T,YAAuCo+E,IAExCO,EAAYzqF,EAAMkqF,GAExB,OAAOO,GAAaD,GAAiBA,EAAcv6E,SAC7Ci5E,EACIuB,EAAU7wE,EAAK5C,QACfwzE,EAAcv6E,WACbnB,EACLA,EAEV,OAAOA,IACR,GAiBH,CAIIs5E,GACAC,GAAgB,GAXK,IAAAqC,EA7GzBpwE,EAAUzL,OACN,SAACC,EAAK8K,GACF,IAAM03B,EAAOm3C,EAAgB7uE,GAC7B,GAAI03B,GAAiB,KAATA,EAAa,CACrB,IAAMq5C,EAA6B,WAC/B,GAAIr5C,IAAS8R,GAAa/0B,SAAU,CAChC,IAAM82B,EAAYnlD,EAAMquB,SAWxB,MAAO,CAACw1B,GAAYv1B,KAAMu1B,GAAYt1B,KAAK36B,IACvC,SAAAQ,GACI,IAAMy1F,EAAUz1F,EAChB,MAAO,CACH4iB,OAAQ4C,EAAK5C,OACblL,UAAW1X,EACX6b,SAAUlE,SACNo5C,EAAUvrC,EAAK5C,QAAQ6yE,GACvB,OAOpB,IAAMe,EACFt5C,IAAS8R,GAAah1B,WAChBy1B,GAAYz1B,WACZy1B,GAAY/iB,QACtB,MAAO,CACH,CACI9pB,OAAQ4C,EAAK5C,OACblL,UAAW8+E,EACX36E,SAAUlE,SACL/L,EAAMsxC,GAGJ13B,EAAK5C,QACR,MAzCmB,GA8CnC,MAAO,CACH2vC,SAAQ,GAAAn+C,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAMoa,EAAI63C,UAAV,CAAoB/sC,EAAK5C,SACjCkX,UAAS,GAAA1lB,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAMoa,EAAIof,WAAVx5B,OAAAsnC,GAAA,EAAAtnC,CAAwBi2F,KAIzC,MAAO,CACHhkC,SAAQ,GAAAn+C,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAMoa,EAAI63C,UAAV,CAAoB/sC,EAAK5C,SACjCkX,UAAUx5B,OAAAsnC,GAAA,EAAAtnC,CAAKoa,EAAIof,aAG3B,CAAEy4B,SAAU,GAAIz4B,UAAW,KA8DvBA,EAdiBw8D,EAcjBx8D,UAAWy4B,EAdM+jC,EAcN/jC,SACnBohC,EAAgC75D,EAAWy4B,GAtB3CwhC,GAAa,GACbE,GAAgB,GAChBJ,GAAU,GAEV8B,SAUI1B,GAAgB,QALhBF,GAAa,UCtUzB,SAAS0C,KAGY,IAFjBC,EAEiBpiF,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAFS,GAC1BqiF,EACiBriF,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAD6B,SAK9C,OAHqBoiF,EAAKj7E,OAAO,SAACk/C,GAC9B,OAAOA,EAAI/gD,OAAJ,GAAAxF,OAAgBuiF,KA2E/B,IAAMzpE,GAAUqP,GAAgBg3B,2BAA2BzhC,MAIrD8kE,GAAkC,SACpC1/E,GAEA,OAAoB,OAAhBA,EACO,GAGJ2iC,KAAEr6C,IACL0X,EACA,SAAA9N,EAAuDM,GAAM,IAA1DuN,EAA0D7N,EAA1D6N,UAAW4/E,EAA+CztF,EAA/CytF,SAAUC,EAAqC1tF,EAArC0tF,IAChBjgF,EAAQ,GACNkgF,EAAaD,EAAIx5C,SAAS,MAAb,GAAAlpC,OAAwB0iF,EAAM,KAAQA,EAEzD,OAAQ7/E,GACJ,KAAK03C,GAAwBlrC,QACzB5M,EAAK,GAAAzC,OAAM8Y,GAAQhW,YAAY8/E,QAA1B,MAAA5iF,OAAsC2iF,GAAtC3iF,OAAmDyiF,GACxD,MACJ,KAAKloC,GAAwBjrC,UACzB7M,EAAK,GAAAzC,OAAM8Y,GAAQhW,YAAY+/E,UAA1B,MAAA7iF,OAAwC2iF,GAAxC3iF,OAAqDyiF,GAC1D,MACJ,KAAKloC,GAAwB/qC,YACzB/M,EAAK,GAAAzC,OAAM8Y,GAAQhW,YAAYggF,YAA1B,MAAA9iF,OAA0C2iF,GAA1C3iF,OAAuDyiF,GAC5D,MACJ,KAAKloC,GAAwBhrC,UACzB9M,EAAK,GAAAzC,OAAM8Y,GAAQhW,YAAYigF,UAA1B,MAAA/iF,OAAwC2iF,GAAxC3iF,OAAqDyiF,GAGlE,MAAO,CAAE92F,GAAE,GAAAqU,OAAK1K,GAAKmN,QAAO3M,MAAO+M,MAKzCkwB,GAAuB,CACzBiwD,8BAA+B,GAC/BC,sBAAuB,GACvB/F,8BAA+B,GAC/BgG,sCAAuC,KACvC/F,sBAAuB,GACvBgG,8BAA+B,KAC/BC,uBAAwB,GACxBC,8BAA+B,KAC/BxE,mBAAoB,GACpBG,2BAA4B,GAC5BsE,iBAAkB,GAClBC,yBAA0B,KAC1BC,oBAAqB,GACrBC,4BAA6B,KAC7BC,eAAgB,GAChBC,sBAAuB,KACvB7E,WAAY,GACZG,mBAAoB,GACpB2E,SAAU,GACVC,iBAAkB,KAClBC,YAAa,GACbC,oBAAqB,KACrBC,kCAAmC,KACnCC,0BAA2B,KAC3BC,iBAAiB,EACjBC,sBAAsB,GAGnB,SAASC,GACZlhF,GAEA,IAAMmhF,EAAiD5+C,KAAEp/B,OAIrDnD,EACA,SAACmL,EAA8BvY,GAC3B,IAAMwuF,EACFxuF,EAAM,GAAGwN,YAAc+3C,GAAYsC,OAC7B,EACA7nD,EAAM,GAAGwN,YAAc+3C,GAAYsC,OACnC,GACC,EACL4mC,EACFzuF,EAAM,GAAGwN,YAAc+3C,GAAYmC,OAC7B,EACA1nD,EAAM,GAAGwN,YAAc+3C,GAAYmC,OACnC,GACC,EAIX,OAHI8mC,GAAe,GAAKC,GAAe,GACnCl2E,EAAO9Y,KAAK,CAACO,EAAMwuF,GAAcxuF,EAAMyuF,KAEpCl2E,GAEX,IAxBgBm2E,EA6BhB/+C,KAAEg/C,UAAUJ,EAA0B,SAACpgF,GACvC,OAAOJ,OAAOI,EAAI,GAAGT,QAAUK,OAAOI,EAAI,GAAGT,UA9B7BkhF,EAAAx4F,OAAAuhC,GAAA,EAAAvhC,CAAAs4F,EAAA,GA0BbvsE,EA1BaysE,EAAA,GA0BPxsE,EA1BOwsE,EAAA,GAgCpB,SAAA1kF,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CACO+rB,EAAK9U,KAAK,SAACnN,EAAuBwO,GACjC,OAAOX,OAAO7N,EAAE,GAAGwN,QAAUK,OAAOW,EAAE,GAAGhB,SAAW,EAAI,KAFhEtX,OAAAsnC,GAAA,EAAAtnC,CAIOgsB,EAAM/U,KACL,SAACnN,EAAuBwO,GACpB,OAAOX,OAAO7N,EAAE,GAAGwN,QAAUK,OAAOW,EAAE,GAAGhB,SAAW,EAAI,MAMxE,SAASmhF,GACL77C,EACA87C,GAEA,IAAIvkD,GAAQ,EACZ,IAAKoF,KAAEyD,SAASJ,EAAK98C,KAAM,WACvB,OAAO,EAEX,OAAQ44F,GACJ,KAAKrqC,GAAwBlrC,QACzBgxB,IAAQyI,EAAK98C,MAAO88C,EAAK98C,KAAKk9C,SAAS,aACvC,MACJ,KAAKqR,GAAwBjrC,UACzB+wB,IAAQyI,EAAK98C,MAAO88C,EAAK98C,KAAKk9C,SAAS,aACvC,MACJ,KAAKqR,GAAwB/qC,YACzB6wB,IAAQyI,EAAK98C,MAAO88C,EAAK98C,KAAKk9C,SAAS,aACvC,MACJ,KAAKqR,GAAwBhrC,UACzB8wB,IAAQyI,EAAK98C,MAAO88C,EAAK98C,KAAKk9C,SAAS,aAG/C,OAAO7I,MC9PIwkD,eDkQX,SAAAA,EAAYluF,GAAY,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA+tF,IACpBjuF,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA24F,GAAA5tF,KAAAH,KAAMH,KAsqBVmuF,uBAAyB,SAAC3hC,GAAwB,IAAA3G,EAY1C5lD,EAAKY,MAVLisF,EAF0CjnC,EAE1CinC,4BACAM,EAH0CvnC,EAG1CunC,oBACAR,EAJ0C/mC,EAI1C+mC,yBACAM,EAL0CrnC,EAK1CqnC,iBACAR,EAN0C7mC,EAM1C6mC,8BACAM,EAP0CnnC,EAO1CmnC,sBACA3E,EAR0CxiC,EAQ1CwiC,2BACAC,EAT0CziC,EAS1CyiC,mBACAJ,EAV0CriC,EAU1CqiC,mBACAC,EAX0CtiC,EAW1CsiC,WAX0ClnF,EAcHhB,EAAKD,MAAxC0mF,EAdsCzlF,EActCylF,mBAAoBC,EAdkB1lF,EAclB0lF,WAExBiD,GAAY,EACZD,GAAW,EAETyE,EAAgB,SAACxgD,GAAD,OAAsBg8C,GAAah8C,GACnDygD,EAAe,SAACzgD,GAAD,OAAsB+7C,GAAY/7C,GAEjD0gD,EAAwB,SAC1Br7C,EACArjC,GAEA,IAAMnE,EACU,OAAZwnC,GACY,OAAZrjC,GACAqjC,EAAQvY,cAAgB9qB,EAAQzQ,MAAMu7B,YAE1C,OAAe,OAARjvB,GAAwBA,GAG7B8iF,EAAqB,SACvBt7C,EACArjC,GAEA,IAAMnE,EACU,OAAZwnC,GACY,OAAZrjC,GACAqjC,EAAQj+C,KAAO4a,EAAQzQ,MAAMnK,GAEjC,OAAe,OAARyW,GAAwBA,GAG7B+iF,EAA0B,SAC5Bv7C,EACArjC,GAEA,IAAMnE,EACU,OAAZwnC,GACY,OAAZrjC,GACAqjC,IAAYrjC,EAAQzQ,MAExB,OAAe,OAARsM,GAAwBA,GAGnC,GAAIi7E,EAAoB,CACpB,IAAM+H,EAAmCH,EACrC9hC,EAAcsgC,4BACdA,GAGE4B,EAAgCH,EAClC/hC,EAAcogC,yBACdA,GAGE+B,EAA4BH,EAC9BhiC,EAAckgC,8BACdA,GAGEW,EAA+Cv+C,KAAEr6C,IACnDyzF,EACA,SAAC/1C,GACG,QAASrD,KAAE7jC,KACPuhD,EAAcoiC,2BACdz8C,KAKN08C,EAAkC//C,KAAE0X,QACtC6hC,EACAgF,GAGJzD,EAAYwE,EAAcK,GAC1B7E,EAAYwE,EAAcM,GAC1B9E,EAAYwE,EAAcO,GAC1B/E,EAAYwE,EAAcS,GAG9B,GAAIlI,EAAY,CACZ,IAAMmI,EAA2BR,EAC7B9hC,EAAc4gC,oBACdA,GAGE2B,EAAwBR,EAC1B/hC,EAAc0gC,iBACdA,GAGE8B,EAAoBR,EACtBhiC,EAAcwgC,sBACdA,GAGEM,EAAuCx+C,KAAEr6C,IAC3C0zF,EACA,SAACh2C,GACG,QAASrD,KAAE7jC,KAAKuhD,EAAcyiC,mBAAoB98C,KAIpD+8C,EAA0BpgD,KAAE0X,QAC9B8hC,EACAgF,GAGJ3D,EAAW0E,EAAaS,GACxBnF,EAAW0E,EAAaU,GACxBpF,EAAW0E,EAAaW,GACxBrF,EAAW0E,EAAaa,GAG5B,OAAOvF,GAAYC,GAxyBC3pF,EA2yBxBkvF,uBAAyB,WAAM,IACnB3B,EAAyBvtF,EAAKY,MAA9B2sF,qBAERvtF,EAAKc,SAAS,CAAEysF,sBAAuBA,KA5yBvCvtF,EAAKY,MAALtL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAkB6mC,IAClBn8B,EAAKmvF,gCAAkCnvF,EAAKmvF,gCAAgCzuF,KAArCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGvCA,EAAKovF,oCAAsCpvF,EAAKovF,oCAAoC1uF,KAAzCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAG3CA,EAAKqvF,+BAAiCrvF,EAAKqvF,+BAA+B3uF,KAApCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGtCA,EAAKsvF,kCAAoCtvF,EAAKsvF,kCAAkC5uF,KAAvCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGzCA,EAAKuvF,4BAA8BvvF,EAAKuvF,4BAA4B7uF,KAAjCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGnCA,EAAKwvF,uBAAyBxvF,EAAKwvF,uBAAuB9uF,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC9BA,EAAKyvF,0BAA4BzvF,EAAKyvF,0BAA0B/uF,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK0vF,sBAAwB1vF,EAAK0vF,sBAAsBhvF,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK2vF,gCAAkC3vF,EAAK2vF,gCAAgCjvF,KAArCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGvCA,EAAK82E,sBAAwB92E,EAAK82E,sBAAsBp2E,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK4vF,4BAA8B5vF,EAAK4vF,4BAA4BlvF,KAAjCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KA3BfA,qFAgCpBE,KAAKisD,kDAEUpH,GAAmB,IAEnB8qC,EAQX9qC,EARA7pC,UACoB40E,EAOpB/qC,EAPA0hC,mBACYsJ,EAMZhrC,EANA2hC,WACUsJ,EAKVjrC,EALAz4C,SACU2jF,EAIVlrC,EAJA5pB,SACa+0D,EAGbnrC,EAHA74C,YACgBikF,EAEhBprC,EAFAqrC,eACuBC,EACvBtrC,EADAurC,sBAT8Bl6C,EAqB9Bl2C,KAAKH,MARLmb,EAb8Bk7B,EAa9Bl7B,UACAurE,EAd8BrwC,EAc9BqwC,mBACAC,EAf8BtwC,EAe9BswC,WACAp6E,EAhB8B8pC,EAgB9B9pC,SACA6uB,EAjB8Bib,EAiB9Bjb,SACAjvB,EAlB8BkqC,EAkB9BlqC,YACAkkF,EAnB8Bh6C,EAmB9Bg6C,eACAE,EApB8Bl6C,EAoB9Bk6C,sBAcJ,IAVIT,IAAkB30E,GAClBxK,KAAKC,UAAUu/E,KAAqBx/E,KAAKC,UAAUzE,IACnDwE,KAAKC,UAAUq/E,KAAkBt/E,KAAKC,UAAUrE,IAChDoE,KAAKC,UAAUs/E,KAAkBv/E,KAAKC,UAAUwqB,IAChD40D,IAAmBrJ,GACnBoJ,IAA2BrJ,IAE3BvmF,KAAKqwF,QAAQr1E,EAAW5O,EAAU6uB,EAAUjvB,GAG5CmkF,IAA8BC,GAA0BH,IAAuBC,IAAmBA,EAAiB,CACnH,IAAMI,EAAuC3hD,KAAEr6C,IAC3C87F,EACA,SAACh9C,EAAgB50C,GAAjB,MAAgC,CAC5B3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAOynC,EAAKv+C,GACZmK,MAAOo0C,KAGTo5C,EAED8D,EAAM//E,OACP,SAAC6iC,GAAD,OACIA,EAAKp0C,MAAM0Y,SAAWyrC,GAAaoE,aAErCulC,EAA0CwD,EAAM//E,OAClD,SAAC6iC,GAAD,OACIA,EAAKp0C,MAAM0Y,SAAWyrC,GAAaqE,MAGrC+oC,EAED5hD,KAAEr6C,IACHk4F,EACA,SAACp5C,EAA8B50C,GAA/B,MAA8C,CAC1C3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAK,GAAAzC,OAAKkqC,EAAKznC,OAAVzC,OACDkqC,EAAKp0C,MAAMkO,YAAc,mBAAkB,IAE/ClO,MAAOo0C,EAAKp0C,SAIdwxF,EAAqD7hD,KAAEr6C,IACzDw4F,EACA,SAAC15C,EAA8B50C,GAA/B,MAA8C,CAC1C3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAK,GAAAzC,OAAKkqC,EAAKznC,OAAVzC,OACDkqC,EAAKp0C,MAAMkO,YAAc,mBAAkB,IAE/ClO,MAAOo0C,EAAKp0C,SAIpBgB,KAAKY,SAAS,CACV4rF,iBAAkB+D,EAClB9D,yBAA0B,KAC1BK,SAAU0D,EACVzD,iBAAkB,kEAK1B/sF,KAAKY,SAAS,CAAEwsF,iBAAiB,mCAG9B,IACK/gC,EAAkBrsD,KAAKH,MAAvBwsD,cAER,GAAMA,EAAe,CACjB,IAAM+5B,EAAsDkH,GACxDjhC,EAAc+5B,+BAGZgG,EACF//B,EAAc+/B,sCACZ/F,EAA8CiH,GAChDjhC,EAAcg6B,uBAEZgG,EACFhgC,EAAcggC,8BAEZoE,EAAoB/E,GACtBr/B,EAAcrgD,aAGZsgF,EAEDmE,EACCjE,EAAkD79C,KAAEr6C,IACtD+3D,EAAcmgC,iBACd,SAACp5C,EAAgB50C,GAAjB,MAAgC,CAC5B3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAOynC,EAAKv+C,GACZmK,MAAOo0C,KAGT05C,EAA0Cn+C,KAAEr6C,IAC9C+3D,EAAcygC,SACd,SAAC15C,EAAgB50C,GAAjB,MAAgC,CAC5B3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAOynC,EAAKv+C,GACZmK,MAAOo0C,KAGTs5C,EAAqD/9C,KAAEr6C,IACzD+3D,EAAcqgC,oBACd,SAACgE,EAAgBlyF,GAAjB,MAAgC,CAC5B3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAO+kF,EAAK/kF,OAAS,GACrB3M,MAAO0xF,KAGT1D,EAA6Cr+C,KAAEr6C,IACjD+3D,EAAc2gC,YACd,SAAC0D,EAAgBlyF,GAAjB,MAAgC,CAC5B3J,GAAE,GAAAqU,OAAK1K,GACPmN,MAAO+kF,EAAK/kF,OAAS,GACrB3M,MAAO0xF,KAGTjE,EACF99C,KAAE7jC,KAAK0hF,EAAkB,SAAC/8B,GACtB,QACMA,KACApD,EAAcogC,0BAChBh9B,EAAIzwD,MAAMnK,KACNw3D,EAAcogC,yBAAyB53F,MAE7C,KACJ83F,EACFh+C,KAAE7jC,KAAK4hF,EAAqB,SAACj9B,GACzB,QACMA,KACApD,EAAcsgC,6BAChBl9B,EAAIzwD,MAAMu7B,cACN8xB,EAAcsgC,4BACTpyD,eAEX,KACJwyD,EACFp+C,KAAE7jC,KAAKgiF,EAAU,SAACr9B,GACd,QACMA,KACApD,EAAc0gC,kBAChBt9B,EAAIzwD,MAAMnK,KAAOw3D,EAAc0gC,iBAAiBl4F,MAElD,KACJo4F,EACFt+C,KAAE7jC,KAAKkiF,EAAa,SAACv9B,GACjB,QACMA,KACApD,EAAc4gC,qBAChBx9B,EAAIzwD,MAAMu7B,cACN8xB,EAAc4gC,oBAAoB1yD,eAExC,KACNgyD,EAEO,KAELI,IACFJ,EACI59C,KAAE7jC,KACEwhF,EACA,SAACwB,GACG,QACMA,GACFzhC,EAAckgC,gCACVuB,EAAK9uF,SAGhBstF,EAAuB,IAEpC,IAAMM,EAED6D,EACD5D,EAEO,KACLI,IACFJ,EACIl+C,KAAE7jC,KACE8hF,EACA,SAACkB,GACG,QACMA,GACFzhC,EAAcwgC,wBACViB,EAAK9uF,SAGhB4tF,EAAe,IAE5B,IAAM7E,EAAwCwD,GAAcn2F,OAAAsnC,GAAA,EAAAtnC,CACrDi3D,EAAc07B,qBAEfC,EAAgCuD,GAAcn2F,OAAAsnC,GAAA,EAAAtnC,CAC7Ci3D,EAAc27B,aAEfE,EAAwCv5C,KAAEr6C,IAC5CyzF,EACA,SAAC/1C,GACG,QAASrD,KAAE7jC,KACPuhD,EAAcoiC,2BACdz8C,KAINm2C,EAAgCx5C,KAAEr6C,IACpC0zF,EACA,SAACh2C,GACG,QAASrD,KAAE7jC,KAAKuhD,EAAcyiC,mBAAoB98C,KAG1DhyC,KAAKY,SAAS,CACVwlF,gCACAgG,wCACA/F,wBACAgG,gCACAC,yBACAC,gCACAxE,qBACAG,6BACAsE,mBACAC,2BACAC,sBACAC,8BACAC,iBACAC,wBACA7E,aACAG,qBACA2E,WACAC,mBACAC,cACAC,sBACAf,8BAA+BS,GACzBA,EAA4B3tF,MAAMixB,iBAClC,GACNk8D,sBAAuBc,GACjBA,EAAoBjuF,MAAMixB,iBAC1B,kEAKdw/B,GAEAzvD,KAAKY,SAAS,CAAE2rF,8BAA+B98B,2DAG/Cg9B,GAEA,IAAI/G,EAA2C,GAEzC+G,GACAA,EAAyBztF,MAAM0mF,oBACjC+G,EAAyBztF,MAAM0mF,mBAAmBh9E,OAAS,IAE3Dg9E,EAAqB4H,GACjBb,EAAyBztF,MAAM0mF,qBAGvC1lF,KAAKY,SAAS,CACVwlF,8BAA+BV,EAC/B+G,uFAG0Bh9B,GAA6B,IAAAjC,EACTxtD,KAAKH,MAA/C8wF,EADmDnjC,EACnDmjC,mBAAoBC,EAD+BpjC,EAC/BojC,kBACtB/qC,EAA6B,KACL4J,GAAO3J,GAAkB2J,EAAIzwD,QACvCywD,IAChB5J,EAAU4mC,yBAA2B,KACrC5mC,EAAU0mC,8BAAgC,MAE9C1mC,EAAU8mC,4BAA8Bl9B,EACxC5J,EAAUunC,iBAAkB,EAC5BvnC,EAAUkiC,mBAAqBwD,GAC3B58C,KAAE/7B,IAAI68C,EAAK,wBAAyB,KAExC5J,EAAUqiC,2BAA6B,GACvCriC,EAAUqmC,8BAAgCv9C,KAAE/7B,IACxC68C,EACA,wBACA,IAEJzvD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,IACnB,IAAMv1B,EAAUqe,KAAE/7B,IAAI68C,EAAK,QAAS,MAC/B3J,GAAkBx1B,IACnBsgE,EAAkB,CAACtgE,QAASA,EAAqBlR,WAAY+jC,GAAaoE,aAG9EopC,EAAmBxtC,GAAaoE,WAAYj3B,uDAGpBm/B,GACxBzvD,KAAKY,SAAS,CAAEisF,sBAAuBp9B,mDAEpBs9B,GACnB,IAAIrH,EAA2C,GAEzCqH,GACAA,EAAiB/tF,MAAM0mF,oBACzBqH,EAAiB/tF,MAAM0mF,mBAAmBh9E,OAAS,IAEnDg9E,EAAqB4H,GACjBP,EAAiB/tF,MAAM0mF,qBAG/B1lF,KAAKY,SAAS,CACVylF,sBAAuBX,EACvBqH,uEAGkBt9B,GAA6B,IAAA2G,EACDp2D,KAAKH,MAA/C8wF,EAD2Cv6B,EAC3Cu6B,mBAAoBC,EADuBx6B,EACvBw6B,kBACtB/qC,EAA6B,KACL4J,GAAO3J,GAAkB2J,EAAIzwD,QACvCywD,IAChB5J,EAAUknC,iBAAmB,KAC7BlnC,EAAUgnC,sBAAwB,MAEtChnC,EAAUonC,oBAAsBx9B,EAChC5J,EAAUunC,iBAAkB,EAC5BvnC,EAAUmiC,WAAauD,GACnB58C,KAAE/7B,IAAI68C,EAAK,wBAAyB,KAExC5J,EAAUsiC,mBAAqB,GAC/BtiC,EAAUsmC,sBAAwBx9C,KAAE/7B,IAChC68C,EACA,wBACA,IAEJzvD,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,IACnB,IAAMv1B,EAAUqe,KAAE/7B,IAAI68C,EAAK,QAAS,MAC/B3J,GAAkBx1B,IACnBsgE,EAAkB,CAACtgE,QAASA,EAAqBlR,WAAY+jC,GAAaqE,MAG9EmpC,EAAmBxtC,GAAaqE,IAAKl3B,iDAEnB29B,EAAwB7E,GAC1CppD,KAAKY,SAAS,CACVsnF,2BAA4Bj6B,EAC5Bk6B,mBAAoB/+B,8DAIxBppD,KAAKY,SAAS,CAAEwsF,iBAAiB,oDAEb,IAAAj+B,EACmCnvD,KAAKH,MAApD0mF,EADYp3B,EACZo3B,mBAAoBC,EADRr3B,EACQq3B,WAAYG,EADpBx3B,EACoBw3B,WADpBl5B,EAiBhBztD,KAAKU,MAdL0rF,EAHgB3+B,EAGhB2+B,sCACAC,EAJgB5+B,EAIhB4+B,8BACAE,EALgB9+B,EAKhB8+B,8BACAxE,EANgBt6B,EAMhBs6B,mBACAG,EAPgBz6B,EAOhBy6B,2BACAuE,EARgBh/B,EAQhBg/B,yBACAE,EATgBl/B,EAShBk/B,4BACAE,EAVgBp/B,EAUhBo/B,sBACA7E,EAXgBv6B,EAWhBu6B,WACAG,EAZgB16B,EAYhB06B,mBACA4E,EAbgBt/B,EAahBs/B,iBACAE,EAdgBx/B,EAchBw/B,oBACAd,EAfgB1+B,EAehB0+B,sBACAD,EAhBgBz+B,EAgBhBy+B,8BAEA2E,EAAiD,KACjDC,EAAyC,KACvCC,EAAgDpiD,KAAEr6C,IACpDyzF,EACA,SAAC/1C,EAAuB1Q,GAAxB,OAAAlsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACO48C,EADP,CAEIlhB,OAAQo3D,EAA2B5mD,OAGrC0vD,EAAwCriD,KAAEr6C,IAC5C0zF,EACA,SAACh2C,EAAuB1Q,GAAxB,OAAAlsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACO48C,EADP,CAEIlhB,OAAQq3D,EAAmB7mD,OAG/BjuB,EAAiB,GACrB,GAAIkzE,GAAwBoG,EAyBxB,IAxBAkE,EAAgClE,EAA4B3tF,OAC9BixB,gBAAkB0e,KAAEr6C,IAC7Cye,mBAAQm5E,GAEH2E,EAA8B5gE,gBAD9Bi8D,EAEN,SAACl6C,GACG,IAAMzI,EAAQoF,KAAE7jC,KAAKimF,EAA4B/+C,GAEjD,OADMzI,GAASA,EAAMzY,SAAQkhB,EAAKlhB,QAAS,GACpCkhB,IAEbzhC,OAAO,SAACyhC,GACN,IAAMi/C,EAAQj/C,EAAKtjC,OAAS4zC,GAAqB4uC,IAEjD,OAAM3E,GAAiC0E,EAC5BpD,GACH77C,EACAu6C,EAA8BvtF,QAE3BiyF,IAMXnrC,GAAkB+qC,GAClBx9E,EAASje,OAAAkuB,GAAA,EAAAluB,CAAA,GACFie,EADE,CAEL89E,mBAAoBN,QAErB,KACDtE,IACAE,EAWF,YADAtkF,QAAQ3N,MAAM,2BARd6Y,EAASje,OAAAkuB,GAAA,EAAAluB,CAAA,GACFie,EADE,CAEL+9E,qBAAsB7E,EAA8BvtF,MACpDqyF,mBAAoB5E,EAAyBztF,MAC7CmyF,mBAAoBN,EACpBS,4BAA6BlF,IAOzC,GAAI5F,GAAgByG,EAoBhB,IAnBA6D,EAAwB7D,EAAoBjuF,OACtBixB,gBAAkB0e,KAAEr6C,IACrCye,mBAAQo5E,GAEH2E,EAAsB7gE,gBADtBk8D,EAEN,SAACn6C,GACG,IAAMzI,EAAQoF,KAAE7jC,KAAKkmF,EAAoBh/C,GAEzC,OADMzI,GAASA,EAAMzY,SAAQkhB,EAAKlhB,QAAS,GACpCkhB,IAEbzhC,OAAO,SAACyhC,GACN,IAAMi/C,EAAQj/C,EAAKtjC,OAAS4zC,GAAqB4uC,IACjD,OAAMrE,GAAyBoE,EACpBpD,GAAe77C,EAAM66C,EAAsB7tF,QAC3CiyF,IAKXnrC,GAAkBgrC,GAClBz9E,EAASje,OAAAkuB,GAAA,EAAAluB,CAAA,GACFie,EADE,CAELk+E,WAAYT,QAEb,KAAMjE,IAA2BE,EAUpC,YADA5kF,QAAQ3N,MAAM,2BARd6Y,EAASje,OAAAkuB,GAAA,EAAAluB,CAAA,GACFie,EADE,CAELm+E,aAAc3E,EAAsB7tF,MACpCyyF,WAAY1E,EAAiB/tF,MAC7BuyF,WAAYT,EACZY,oBAAqBrF,IAOjC1F,EAAWvxF,OAAAkuB,GAAA,EAAAluB,CAAA,GACJie,oCAIP2H,EACA5O,EACA6uB,EACAjvB,GAEA,IAAI65C,EAAiB,GAChB7qC,GAAc5O,GAAa6uB,IAC5B4qB,EAAY,CACR0mC,8BAA+B,KAC/BE,yBAA0B,KAC1BE,4BAA6B,KAC7BE,sBAAuB,KACvBE,iBAAkB,KAClBE,oBAAqB,OAI7B,IAAMwD,EAAoB/E,GAAgC1/E,GACpDsgF,EAEJl3F,OAAAsnC,GAAA,EAAAtnC,CAAOq7F,GACH7D,EAA4Dx3F,OAAAsnC,GAAA,EAAAtnC,CAC3Dq7F,GAEDjE,EAAkD,GAClDM,EAA0C,GAChDn+C,KAAEljC,QAAQW,EAAU,SAACe,EAAe3O,GAChC,IAAMkZ,EAASi3B,KAAE/7B,IAAIzF,EAAK,SAAU,IAC9BxB,EAAQgjC,KAAE/7B,IAAIzF,EAAK,MACzB,IAAKxB,EAAO,OAAO,EACnB,IAAM8jD,EAA8B,CAChC56D,GAAE,GAAAqU,OAAK1K,GACPmN,MAAK,GAAAzC,OAAKyC,GAALzC,OAAaiE,EAAID,YAAc,mBAAkB,IACtDlO,MAAOmO,GAEPuK,IAAWyrC,GAAaoE,WACxBilC,EAAiB/tF,KAAKgxD,GACf/3C,IAAWyrC,GAAaqE,KAC/BslC,EAASruF,KAAKgxD,KAGtB,IAAMi9B,EAAqD,GACrDM,EAA6C,GACnDr+C,KAAEljC,QAAQwvB,EAAU,SAAC3K,EAAmB9xB,GACpC,IAAMkZ,EAASi3B,KAAE/7B,IAAI0d,EAAS,SAAU,IAClC3kB,EAAQgjC,KAAE/7B,IAAI0d,EAAS,SAC7B,IAAK3kB,EAAO,OAAO,EACnB,IAAM8jD,EAA8B,CAChC56D,GAAE,GAAAqU,OAAK1K,GACPmN,QACA3M,MAAOsxB,GAEP5Y,IAAYyrC,GAAaoE,WACzBmlC,EAAoBjuF,KAAKgxD,GAClB/3C,IAAWyrC,GAAaqE,KAC/BwlC,EAAYvuF,KAAKgxD,KAOzB5J,EAASzwD,OAAAkuB,GAAA,EAAAluB,CAAA,GACFywD,EADE,CAELugC,8BAA+B,GAC/BgG,sCAAuC,KACvC/F,sBAAuB,GACvBgG,8BAA+B,KAC/BC,yBACAvE,mBAX0C,GAY1CG,2BAXkD,GAYlDsE,mBACAE,sBACAE,iBACA5E,WAdkC,GAelCG,mBAd0C,GAe1C2E,WACAE,cACA2E,YAAa,KACbvE,iBAAiB,EACjBb,8BAA+B,KAC/BI,4BAA6B,KAC7BF,yBAA0B,KAC1BQ,oBAAqB,KACrBF,iBAAkB,KAClBF,sBAAuB,OAE3B7sF,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,2DAEiB,IAAAqR,EACOl3D,KAAKH,MAAxC0mF,EAD4BrvB,EAC5BqvB,mBAAoBC,EADQtvB,EACRsvB,WADQoL,EAOhC5xF,KAAKU,MAJL+rF,EAHgCmF,EAGhCnF,yBACAE,EAJgCiF,EAIhCjF,4BACAI,EALgC6E,EAKhC7E,iBACAE,EANgC2E,EAMhC3E,oBAEA4E,GAAS,EACPC,EAAkChsC,GACpCnX,KAAE/7B,IAAI+5E,EAA6B,QAAS,OAE1CoF,EAA0BjsC,GAC5BnX,KAAE/7B,IAAIq6E,EAAqB,QAAS,OAgCxC,OA9BI6E,GAA0BC,EAC1BF,GAAS,EACFC,GAA0BC,EAC7BD,GAA0BtL,EAC1BqL,IACMlF,KACAM,KACAF,EACCgF,GAAkBxL,EACzBsL,IACM5E,KACAN,KACAF,EACClG,IAAuBC,EAC9BqL,IACMlF,KAAiCF,GAC/BlG,GAAsBC,IAC9BqL,IAAW5E,KAAyBF,IAGpCxG,IACAsL,EACIA,KACElF,KACAF,GAENjG,IACAqL,EAASA,KAAY5E,KAAyBF,IAG/C8E,sDAGP5jC,EACA7E,GAEAppD,KAAKY,SAAS,CACVwrF,sCAAuCn+B,EACvCo+B,8BAA+BjjC,EAC/BgkC,iBAAiB,qCA8IhB,IAAAj8B,EASDnxD,KAAKH,MAPL0mF,EAFCp1B,EAEDo1B,mBACAl6B,EAHC8E,EAGD9E,cACAm6B,EAJCr1B,EAIDq1B,WACAI,EALCz1B,EAKDy1B,oBACA5rE,EANCm2C,EAMDn2C,UACAytE,EAPCt3B,EAODs3B,gCACAuJ,EARC7gC,EAQD6gC,WARC1jC,EAiCDtuD,KAAKU,MAtBL0lF,EAXC93B,EAWD83B,8BACAgG,EAZC99B,EAYD89B,sCACA/F,EAbC/3B,EAaD+3B,sBACAgG,EAdC/9B,EAcD+9B,8BACAC,EAfCh+B,EAeDg+B,uBACAC,EAhBCj+B,EAgBDi+B,8BACAxE,EAjBCz5B,EAiBDy5B,mBACAG,EAlBC55B,EAkBD45B,2BACAsE,EAnBCl+B,EAmBDk+B,iBACAC,EApBCn+B,EAoBDm+B,yBACAC,EArBCp+B,EAqBDo+B,oBACAC,EAtBCr+B,EAsBDq+B,4BACAC,EAvBCt+B,EAuBDs+B,eACAC,EAxBCv+B,EAwBDu+B,sBACA7E,EAzBC15B,EAyBD05B,WACAG,EA1BC75B,EA0BD65B,mBACA2E,EA3BCx+B,EA2BDw+B,SACAC,EA5BCz+B,EA4BDy+B,iBACAC,EA7BC1+B,EA6BD0+B,YACAC,EA9BC3+B,EA8BD2+B,oBACAG,EA/BC9+B,EA+BD8+B,gBACAC,EAhCC/+B,EAgCD++B,qBAEE4E,EAAyBtZ,GAAG,GAAAzvE,OAC3B8Y,GAAQsO,QADmB,KAAApnB,OACR8Y,GAAQisC,cAE5BikC,EAAsBvZ,GAAG,GAAAzvE,OACxB8Y,GAAQoxB,KADgB,KAAAlqC,OACR8Y,GAAQisC,cAEzBkkC,EAAiBxZ,GAAG,GAAAzvE,OAAI8Y,GAAQsO,QAAZ,KAAApnB,OAAuB8Y,GAAQonC,MACnDgpC,EAAczZ,GAAG,GAAAzvE,OAAI8Y,GAAQoxB,KAAZ,KAAAlqC,OAAoB8Y,GAAQonC,MAC7CipC,EAAgB1Z,GAAI32D,GAAQjW,WAC5BumF,IACA3F,GACF7mC,GAAkB6mC,EAA4B3tF,OAC5CuzF,IACAtF,GACFnnC,GAAkBmnC,EAAoBjuF,OACpCwzF,EAAkCxyF,KAAKyyF,+BACvCC,EAAsCJ,EACtCtwE,GAAQ2wE,wBACRpM,IAAuBkG,EACvB99C,KAAE/7B,IAAIy5C,EAAe,4CACrB/rD,EACAsyF,EAA8BL,EAC9BvwE,GAAQ2wE,wBACRnM,IAAeuG,EACfp+C,KAAE/7B,IAAIy5C,EAAe,oCACrB/rD,EAKAuyF,GAHgB71E,aAAajC,QAAQ,aAGrBi3E,EAAW33E,KAAK,SAAArb,GAAK,OAAIA,KAE/C,OACIC,GAAAC,EAAAC,cAAA,WAASC,UA5/BC,iBA6/BNH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OACbhJ,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ8wE,SACZ7zF,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA//Bd,gBACM,iBA+/BPu0B,GACGtnF,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CAlgCrB,gBACM,cAogCI,UAGJ/yD,GAAAC,EAAAC,cAACwmD,GAAD,CACIhc,UACK48C,GAC8B,IAA/BmG,EAAoBhkF,OAExBylC,mBACInuC,KAAKovF,kCAEThhD,QAASs+C,EACTxgF,KAAM+lF,EACNjzF,MAAO2tF,IAEX1tF,GAAAC,EAAAC,cAAA,OACIC,UAAW2zF,KAAW,CAClBC,mBAAoBV,KAGxBrzF,GAAAC,EAAAC,cAACwmD,GAAD,CACIhc,UACK48C,GACD+L,GAC4B,IAA5B9F,EAAiB9jF,SAChBikF,EAELx+C,mBACInuC,KAAKmvF,+BAET/gD,QAASo+C,EACTlrF,YAAaoxF,EACbxmF,KAAMgmF,EACNlzF,MAAOytF,IAEXxtF,GAAAC,EAAAC,cAACwmD,GAAD,CACIhc,UACK48C,GACD+L,GACkC,IAAlChG,EAAuB5jF,SACtBikF,EAELx+C,mBACInuC,KAAKkvF,oCAET9gD,QAAS91B,GACLg0E,GAEJpgF,KAAMmmF,EACNrzF,MAAOutF,EACPjrF,YACIgxF,EACMtwE,GAAQ2wE,wBACR,KAGd1zF,GAAAC,EAAAC,cAAC8zF,GAAD,CACI/mF,KAAM8V,GAAQkxE,mBACdv2B,cAAe,QACftO,UACM+9B,MAMrB5F,GACGvnF,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CAzkCrB,gBACM,cA2kCI,UAGJ/yD,GAAAC,EAAAC,cAACwmD,GAAD,CACIhc,UACK68C,GAAqC,IAAvBwG,EAAYtkF,OAE/BylC,mBACInuC,KAAKuvF,0BAETnhD,QAAS4+C,EACT9gF,KAAMimF,EACNnzF,MAAOiuF,IAEXhuF,GAAAC,EAAAC,cAAA,OACIC,UAAW2zF,KAAW,CAClBC,mBAAoBT,KAGxBtzF,GAAAC,EAAAC,cAACwmD,GAAD,CACIhc,UACK68C,GACD+L,GACoB,IAApBzF,EAASpkF,SACRukF,EAEL9+C,mBACInuC,KAAKsvF,uBAETlhD,QAAS0+C,EACTxrF,YAAasxF,EACb1mF,KAAMkmF,EACNpzF,MAAO+tF,IAEX9tF,GAAAC,EAAAC,cAACwmD,GAAD,CACIhc,UACK68C,GACD+L,GAC0B,IAA1B3F,EAAelkF,SACdukF,EAEL9+C,mBACInuC,KAAKqvF,4BAETjhD,QAAS91B,GACLs0E,GAEJ1gF,KAAMmmF,EACNrzF,MAAO6tF,EACPvrF,YACIixF,EACMvwE,GAAQ2wE,wBACR,KAGd1zF,GAAAC,EAAAC,cAAC8zF,GAAD,CACI/mF,KAAM8V,GAAQkxE,mBACdv2B,cAAe,OACftO,UAAWg+B,OAM9BmG,GACGvzF,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA7oClB,gBA6oCkC,oBAChC/yD,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,OACPmqC,QAAS5pC,KAAKyvF,gCACdxnF,MAAO+Z,GAAQmxE,UAU3Bl0F,GAAAC,EAAAC,cAACi0F,GAAD,CAAez3B,UAAU,EAAMvsB,KAAMg+C,GACjCnuF,GAAAC,EAAAC,cAACk0F,GAAD,CACIjN,8BACIA,EAEJC,sBAAuBA,EACvBE,mBAAoBA,EACpBD,QAAStmF,KAAKivF,gCACdzI,WAAYA,EACZC,4BACI2F,EAEJ1F,oBAAqB2F,EACrB1F,WAAY3mF,KAAK0vF,4BACjB9I,oBAAqBA,KAG7B3nF,GAAAC,EAAAC,cAACm0F,GAAD,CACIvL,mBAAoBA,EACpBG,2BAA4BA,EAC5BF,WAAYA,EACZG,mBAAoBA,EACpB9iC,YAAarlD,KAAKwvF,0BAGnBnjC,IACErsD,KAAKguF,uBAAuB3hC,IACzBptD,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR4iB,GAAQuxE,sCAGrBt0F,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPuqC,OAAO,EACPJ,QAAS5pC,KAAK42E,sBACd3uE,MAAO+Z,GAAQ+pC,SACfpiB,SAAUkpD,IAEd5zF,GAAAC,EAAAC,cAACq0F,GAAD,CACIhN,WAAYA,EACZD,mBAAoBA,EACpBv4D,KAAMq/D,EACNryE,UAAWA,EACXwtE,iBAAkBxoF,KAAKgvF,uBACvBvG,gCACIA,YAjkCGpmF,cE9OZoxF,GAXoB,SAAC5zF,GAAsB,IAC9CR,EAAgBQ,EAAhBR,KAAML,EAAUa,EAAVb,MAEd,OACIC,GAAAC,EAAAC,cAAA,OAAKC,UANS,eAOVH,GAAAC,EAAAC,cAAA,eAAA+J,OAAU7J,EAAV,OACAJ,GAAAC,EAAAC,cAAA,YAAOH,GAAS,OCStB00F,GAAkB,SAElB1xE,GAAUqP,GAAgBg3B,2BAA2Bw/B,MAiD3D,SAAS8L,GAAWn0D,GAChB,IAAIo0D,EAAwBp0D,EAC5B,OAAQA,GACJ,KAAKklB,GAAamvC,QACdD,EAAgB,IAGxB,OAAOA,EAGX,SAASE,GAAgBv0D,GACrB,IAAIw0D,EAAyBx0D,EAAM5zB,OAAS,GAI5C,OAHM4zB,EAAMC,MAAQD,EAAMC,OAASklB,GAAasvC,WAC5CD,EAAiB,CAACA,EAAD,IAAA7qF,OAAqB8Y,GAAQiyE,UAA7B,MAA2CjqF,KAAK,MAE9D+pF,EA2BX,SAASG,GAAajsF,EAAeksF,GACjC,OACIl1F,GAAAC,EAAAC,cAAA,OAAKG,IAAK80F,KAAQC,WAAYj1F,UAAWs0F,IACrCz0F,GAAAC,EAAAC,cAAA,UAAK8I,GACJksF,GACGA,EACK5jF,OAAO,SAAA+jF,GAAE,YAAWh0F,IAAPg0F,GAAoBA,EAAG5rF,OAAS,IAC7CpU,IAAI,SAACigG,GAAD,OACDt1F,GAAAC,EAAAC,cAACq1F,GAAD,CACIl1F,IAAKi1F,EAAK,GACVl1F,KAAMk1F,EAAK,GACXv1F,MAAOu1F,EAAK,QAQxC,IAAME,GAAgB,SAAC7jD,GAAD,OAClBA,EAAWt8C,IAAI,SAAA4J,GAAA,IAAGshC,EAAHthC,EAAGshC,KAAMD,EAATrhC,EAASqhC,MAAT,MAA4B,CAA5BrhC,EAAgByN,MAAY,GAAAzC,OAEpCq2B,GAFoCr2B,OAE5Bs2B,OA0LJk1D,GAjLoB,SAAC70F,GAAsB,IAC9CymB,EAAuDzmB,EAAvDymB,MAAOre,EAAgDpI,EAAhDoI,MAAO0e,EAAyC9mB,EAAzC8mB,eAAgBG,EAAyBjnB,EAAzBinB,qBAEhC6tE,EAA+B,GAC/BC,EAA6C,GAE7CC,EAAuB,GAE7BlmD,KAAEljC,QAAQ6a,EAAMmqB,QAAS,SAACd,GAEtB,IAAM4kD,EAjEd,SAAoB5kD,GAChB,IAAMwkD,EAAgB,GAEtB,GAAMxkD,EAAOhkC,MAAO,CAChB,IAAMtM,EAAeswC,EAAOhkC,MACxB3M,EAAgB,GACd2wC,EAAOjjC,QAAYijC,EAAOnQ,OAC5BxgC,EAAQ+5D,GAAK,GAAA7vD,OAAIymC,EAAOjjC,OAAX,KAAAxD,OAAqByqF,GAAWhkD,EAAOnQ,SAExD20D,EAAM11F,KAAK,CAACY,EAAML,IAYtB,OAAOm1F,EA4CyBW,CAAWnlD,IArH/C,SAA0BA,GACtB,IAAIolD,GAAK,EACT,OAAQplD,EAAOv2C,UACX,KAAKopD,GAAYwyC,aAGjB,KAAKxyC,GAAYljB,gBAEby1D,GAAK,EAGb,OAAOA,GA4GCE,CAAiBtlD,IACbA,EAAOiB,YACP6jD,GAAc9kD,EAAOiB,YAAYnlC,QAAQ,SAAAypF,GAAC,OACtCP,EAAqBl2F,KAAKy2F,KA5G9C,SAAwB7zF,GAA+B,IAC3CjI,EAAaiI,EAAbjI,SACR,OACIA,IAAaopD,GAAYljB,iBACzBlmC,IAAaopD,GAAYwyC,cACzB57F,IAAaopD,GAAY2yC,aA4GrBC,CAAezlD,KACfklD,EAAap2F,KAAbub,MAAA66E,EAAYz/F,OAAAsnC,GAAA,EAAAtnC,CAASm/F,IAGjB5kD,EAAOv2C,UACPu2C,EAAOv2C,WAAaopD,GAAY6yC,SAC9B1lD,EAAOiB,YACTjB,EAAOiB,WAAWloC,OAAS,GAE3BimC,KAAEljC,QACEkkC,EAAOiB,WACP,SAACqjD,GACG,GACMA,EAAUtoF,OACVsoF,EAAU10D,OACV00D,EAAUz0D,KACd,CACE,IAAMxgC,EAAQ+5D,GAAK,GAAA7vD,OACZ+qF,EAAU10D,MADE,KAAAr2B,OACOyqF,GAClBM,EAAUz0D,QAGlBq1D,EAAap2F,KAAK,CACdq1F,GAAgBG,GAChBj1F,QAhIhC,SAAkC2wC,GAC9B,IAAIolD,GAAK,EACT,OAAQplD,EAAOv2C,UACX,KAAKopD,GAAY8yC,sBACjB,KAAK9yC,GAAY+yC,0BACbR,GAAK,EAGb,OAAOA,EA+HCS,CAAyB7lD,IACzBilD,EAAuBn2F,KAAKkxC,KAIpC,IA+DM8lD,EAA2Bd,EAAqBtoF,KAAK,SAACnN,EAAGwO,GAC3D,OAAIxO,EAAE,GAAKwO,EAAE,IAAY,EACrBxO,EAAE,GAAKwO,EAAE,GAAW,EACjB,IAeX,OAXIoZ,GACyB,YAAzBA,GACoC,IAApC2uE,EAAyB/sF,SAEzBoO,GAAW2+E,EAA0B,EAAG,GAED,eAAnCA,EAAyB,GAAG,IAC5B3+E,GAAW2+E,EAA0B,EAAG,IAK5Cx2F,GAAAC,EAAAC,cAAA,OAAKC,UAvQS,eAwQVH,GAAAC,EAAAC,cAAA,UAAK8I,GAxEe,WACxB,IAAMA,EACFhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAWs0F,IACZz0F,GAAAC,EAAAC,cAAA,MAAIC,UAAU,kBAAkB4iB,GAAQ6mD,OAAO6sB,UAGvD,GAA8B,IAA1B/uE,EAAeje,OAAc,CAC7B,IAAM+G,EAAUkX,EAAe,GAC/B,OACI1nB,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACKgH,EACDhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uBACXH,GAAAC,EAAAC,cAAA,SACKsQ,EAAQ/C,OADb,IACsB+C,EAAQk8E,YAO9C,IAAMgK,EA9BFrvE,EAAM5O,SAAWyrC,GAAaoE,WACvB1nD,EAAM81F,WAAWtO,sBAGxB/gE,EAAM5O,SAAWyrC,GAAaqE,IACvB3nD,EAAM81F,WAAWrO,cAErB,KAyBP,OAAmB,OAAfqO,EAEI12F,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACKgH,EAEDhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAACuoF,GAADtyF,OAAAgzB,OAAA,GAAiButE,EAAjB,CAA6Bx3F,SAAU,kBAOzB,IAA1BwoB,EAAeje,QACfie,EAAe,IACX1nB,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACKgH,EACDhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8CACXH,GAAAC,EAAAC,cAAA,SACKwnB,EAAe,GAAGja,OAAQ,IAC1Bia,EAAe,GAAGglE,SAFvB,KAEmC,IAC9BhlE,EAAe,GAAGja,OAAQ,IAC1Bia,EAAe,GAAGglE,YA6BlCiK,KAEEf,EAAansF,QACZwrF,GACIlyE,GAAQ6mD,OAAOgtB,S1Mo3BG,SAAChrF,GACnC,IAAIirF,EAAe,GACb7pC,EAAc,GAiBpB,OAhBAphD,EAAIY,QAAQ,SAAAu8C,GACR,GAAmB,wDAAfA,EAAQ,GACR,GAAqB,IAAjB8tC,EAAMptF,OACNotF,EAAQ9tC,MACL,CACH,IAAM+tC,EAAaD,EAAM,GAAGzkF,MAAM,KAC5B2kF,EAAahuC,EAAQ,GAAG32C,MAAM,KAE9BkG,EACFm6B,WAAWqkD,EAAW,IAAMrkD,WAAWskD,EAAW,IAEtDF,EAAQ,CAACA,EAAM,GAAP,GAAA5sF,OAAcqO,EAAOo6B,QAAQ,GAA7B,iBAETsa,EAAKxtD,KAAKupD,KAGrB,GAAA9+C,OAAW+iD,EAAX,CAAA72D,OAAAsnC,GAAA,EAAAtnC,CAAqB0gG,K0Mt4BLG,CAA8BpB,MAGnCF,EAAqBjsF,QACpBwrF,GACIlyE,GAAQ6mD,OAAOqtB,gBACfT,GAGPb,EAAuBtgG,IAAI,SAAAwE,GAA8B,IAA3BM,EAA2BN,EAA3BM,SAAUw3C,EAAiB93C,EAAjB83C,WACrC,GAAIx3C,EAAU,CACV,IAAM+8F,EAAMvlD,GAAc6jD,GAAc7jD,GAExC,GAAIx3C,IAAaopD,GAAY8yC,sBACzB,OAAOpB,GACHlyE,GAAQ6mD,OAAOutB,iBACfD,GAIR,GAAI/8F,IAAaopD,GAAY+yC,0BACzB,OAAOrB,GACHlyE,GAAQ6mD,OAAOwtB,kBACfF,QCtStBn0E,GAAUqP,GAAgBg3B,2BAA2Bw/B,MAErDyO,GAAkBtkC,GAAI,CADN,gBACsB,WAEtCukC,GAAuBvkC,GAAI,CADX,OAC2B,WAC3CwkC,GAAqBxkC,GAAI,CAFT,OAEyB,WACzCykC,GAAqD,CACvD,CAAE5hG,GAAI,IAAK8W,MAAOqW,GAAQ9sB,KAAKwhG,QAAS13F,MAAOglD,GAAiB2yC,SAChE,CACI9hG,GAAI,IACJ8W,MAAOqW,GAAQ9sB,KAAK0hG,YACpB53F,MAAOglD,GAAiB6yC,WAE5B,CAAEhiG,GAAI,IAAK8W,MAAOqW,GAAQ9sB,KAAK4hG,SAAU93F,MAAOglD,GAAiB+yC,WAiDrE,ICmCKC,GCtHUC,GFmFyB,SAACp3F,GAAyB,IAE1DwsD,EAMAxsD,EANAwsD,cACA98B,EAKA1vB,EALA0vB,OACA2nE,EAIAr3F,EAJAq3F,iBAEAjqB,GAEAptE,EAHAs3F,oBAGAt3F,EAFAotE,gBACA0oB,EACA91F,EADA81F,WAEEyB,EACA/qC,GAAmBA,EAAcgrC,UAC7B1oD,KAAE7jC,KAAK2rF,GAAa,SAAClmE,GACjB,OAAOA,EAAOvxB,QAAUqtD,EAAcgrC,YAE1C,KAdoDp4C,EAgBpBC,oBAEhCk4C,GAlBoDj4C,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAgBvDq4C,EAhBuDn4C,EAAA,GAgBxCo4C,EAhBwCp4C,EAAA,GAAAG,EAoBlBJ,sBACtCmN,GAAgBA,EAAcmrC,kBArB0Bj4C,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAoBvDk4C,EApBuDj4C,EAAA,GAoBrCk4C,EApBqCl4C,EAAA,GAAAma,EAwBtCxa,oBAClBmN,EAAgBA,EAAcn3D,KAAO,IAzBmBykE,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAwBvDxkE,EAxBuDykE,EAAA,GAwBjD+9B,EAxBiD/9B,EAAA,GAAAE,EA4B5B3a,oBAAiB,IA5BW4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GA4BvD89B,EA5BuD79B,EAAA,GA4B5C89B,EA5B4C99B,EAAA,GA6BxD+9B,EAAelpD,KAAE/7B,IAAI0kF,EAAe,QAAS,MAC7CQ,EAtDV,SAAqB5iG,GACjB,OAAQA,GACJ,KAAK8uD,GAAiB2yC,QAClB,OAAO30E,GAAQ9sB,KAAK6iG,YACxB,KAAK/zC,GAAiB+yC,SAClB,OAAO/0E,GAAQ9sB,KAAK8iG,aACxB,QACI,MAAO,IA+COC,CAAYJ,GAC5BK,EA5CV,SAA4BhjG,GACxB,OAAQA,GACJ,KAAK8uD,GAAiB2yC,QAClB,OAAO30E,GAAQ9sB,KAAKijG,mBACxB,KAAKn0C,GAAiB6yC,UAClB,OAAO70E,GAAQ9sB,KAAKkjG,uBACxB,KAAKp0C,GAAiB+yC,SAClB,OAAO/0E,GAAQ9sB,KAAKmjG,oBACxB,QACI,MAAO,IAmCcC,CAAmBT,GAc1CU,EAAsB,SACxB9oC,GAEAmoC,EAAa,IACbF,EAAQ,IACRH,EAAiB9nC,IAOf+oC,EAAuBnsC,EACvBA,EAAc98B,OACdA,GAAU,GACVkpE,EAAuBD,EAAS9vF,OAAS,EAAI,KAAO,OAC1D,OACIzJ,GAAAC,EAAAC,cAAA,WAASC,UA3HK,iBA4HVH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OACZuwF,EAAS9vF,OAAS,EACfzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAS,GAAA8J,OAAKotF,GAAL,KAAAptF,OAAwBuvF,IACjCD,EAASlkG,IAAI,SAACgyB,EAAe6sB,GAC1B,IAAIlrC,EAAQ,IACRqe,EAAM5O,SAAWyrC,GAAaoE,WAC9Bt/C,EAAQ+Z,GAAQisC,YACT3nC,EAAM5O,SAAWyrC,GAAaqE,MACrCv/C,EAAQ+Z,GAAQonC,KAGpB,IAAMpmB,EAAkBiqC,EAAeniE,KACnC,SAAA4tF,GAAI,OAAIA,EAAKhhF,SAAW4O,EAAM5O,SAGlC,OACIzY,GAAAC,EAAAC,cAACw5F,GAAD,CACIhyE,eACIqc,GACMA,EAAgBrc,gBAChB,GAEVrnB,IAAK6zC,EACL7sB,MAAOA,EACPre,MAAOA,EACP0tF,WAAYA,EACZ7uE,qBACIkc,EACMA,EAAgBlc,0BAChBxmB,OAO1BrB,GAAAC,EAAAC,cAACy5F,GAAD,CACI1sF,KACImlB,GAAgBg3B,2BAA2BxuC,OACtCnd,UAETuL,MACIopB,GAAgBg3B,2BAA2BxuC,OACtCg/E,eAIjB55F,GAAAC,EAAAC,cAAA,OAAKC,UAzKK,QA0KNH,GAAAC,EAAAC,cAAA,OAAKC,UAAWm3F,IACZt3F,GAAAC,EAAAC,cAACozC,GAAD,CACI9E,QAAS+pD,EACT9pD,YA9DK,SAAC/4C,GACtB4jG,EAAoB,MACpBd,GAAiBD,IA6DD3iG,GAAI,cACJqX,KAAM8V,GAAQ9sB,KAAKuiF,UAG1B+f,GACGv4F,GAAAC,EAAAC,cAAA,OAAKC,UAAWo3F,IACZv3F,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBoqD,EACpBnqD,QAASqoD,GACTz3F,MAAOs4F,IAEXr4F,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAOm9F,EACP/sD,cA/FM,SAACj2C,GAC3B,GAAsB,OAAlB2iG,EAAJ,CAIAM,EAAa,IACb,IAAMzpC,EAAYxf,KAAE/7B,IAAIje,EAAG,eAAgB,IAE3C+iG,EAAQvpC,GAER+oC,GAAiB,EAAM/oC,EAAWxf,KAAE/7B,IAAI0kF,EAAe,eARnDM,EAAa51E,GAAQ9sB,KAAK4jG,mBA8FVx3F,YAAa42F,EACbl5F,MAAO9J,KAIlBsiG,KAAsBM,GAAiB74F,GAAAC,EAAAC,cAAA,SAAI24F,MGxKtD91E,GAAUqP,GAAgBg3B,2BAA2B0wC,KAGrDC,GAAiBjgC,GAAK,GAAA7vD,OAAI8Y,GAAQisC,YAAZ,OAAA/kD,OAA6B8Y,GAAQonC,MAC3D6vC,GAAuD,CACzD,CACIpkG,GAAImtB,GAAQisC,YACZtiD,MAAOqW,GAAQisC,YACfjvD,MAAOslD,GAAmBmD,aAE9B,CACI5yD,GAAImkG,GACJrtF,MAAOqtF,GACPh6F,MAAOslD,GAAmBgD,qBAE9B,CACIzyD,GAAImtB,GAAQonC,IACZz9C,MAAOqW,GAAQonC,IACfpqD,MAAOslD,GAAmBkD,MCnEnB0xC,eDwEX,SAAAA,EAAYr5F,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAk5F,IACvBp5F,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA8jG,GAAA/4F,KAAAH,KAAMH,KACDa,MAAQ,CACTy4F,SAAU,GACVC,SAAU,GACVC,SAAU,GACVC,SAAU,GACVC,aAAc,KACdrtC,oBAAqB,MAEzBpsD,EAAK05F,4BAA8B15F,EAAK05F,4BAA4Bh5F,KAAjCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGnCA,EAAK25F,eAAiB35F,EAAK25F,eAAej5F,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACtBA,EAAK45F,eAAiB55F,EAAK45F,eAAel5F,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACtBA,EAAK65F,0BAA4B75F,EAAK65F,0BAA0Bn5F,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK82E,sBAAwB92E,EAAK82E,sBAAsBp2E,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK85F,WAAa95F,EAAK85F,WAAWp5F,KAAhBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAnBKA,qFAsBvBE,KAAKisD,OAELjsD,KAAK8hF,6CAEF,IACKz1B,EAAkBrsD,KAAKH,MAAvBwsD,cACR,GAAMA,EAAe,CACjB,IAAMH,EACFvd,KAAE7jC,KACEmuF,GACA,SAAC1oE,GACG,OACIA,EAAOvxB,QAAUqtD,EAAcH,uBAGtC,KACTlsD,KAAKY,SAAS,CACVw4F,SAAU/sC,EAAc+sC,UAAY,GACpCE,SAAUjtC,EAAcitC,UAAY,GACpCptC,+DAKE,IACF2tC,EAA0B75F,KAAKH,MAA/Bg6F,sBAQFxyC,EANSr1C,GACX+tC,SAAS9tC,SACTiB,OAAOjB,SAASC,KAChBgB,OAAOjB,SAASE,UAGIS,IAAI,iBAE5B,GAAMy0C,EAAU,CACZ,IAAMyyC,EAAmB,WACrB,IAAMC,EAAU1yC,GAAYA,EAASjqC,WAAW/L,MAAM,KAEtD,OAAI0oF,GAA8B,IAAnBA,EAAQrxF,OACZ47C,GAAmBgD,oBAGvByyC,GAAsC,OAA1BA,EAAQ,GACrBz1C,GAAmBmD,YACnBnD,GAAmBkD,IATJ,GAYzBxnD,KAAKY,SAAS,CACVsrD,oBACIvd,KAAE7jC,KACEmuF,GACA,SAAC1oE,GACG,OAAOA,EAAOvxB,QAAU86F,KAE3B,OAGTA,GAAiBD,EAAsBC,+CAI/CE,EACAC,EACAvrF,GAEA,IAAI4iD,GAAyB,EAC7B,GAAI5iD,IAAS41C,GAAmBgD,oBAAqB,CACjD,IAAM4yC,EAAcl6F,KAAKm6F,iBAAiBH,GACpCI,EAAcp6F,KAAKq6F,iBAAiBJ,GAC1C3oC,EAAgB4oC,GAAeE,OACxB1rF,IAAS41C,GAAmBmD,YACnC6J,EAAgBtxD,KAAKq6F,iBAAiBJ,GAC/BvrF,IAAS41C,GAAmBkD,MACnC8J,EAAgBtxD,KAAKm6F,iBAAiBH,IAE1C,OAAO1oC,2CAEM0oC,GACb,IAAMjxF,EAAU/I,KAAKs6F,YAAYN,GAEjC,OADKjxF,GAAS/I,KAAKY,SAAS,CAAEu4F,SAAUn3E,GAAQm3E,WACzCpwF,2CAEMkxF,GACb,IAAMlxF,EAAU/I,KAAKu6F,YAAYN,GAEjC,OADKlxF,GAAS/I,KAAKY,SAAS,CAAEy4F,SAAUr3E,GAAQq3E,WACzCtwF,wDAEyC,IAAxBu6E,EAAwBl6E,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,IAAAA,UAAA,GACxCoxF,EAAoBx6F,KAAKH,MAAzB26F,gBADwC90C,EAEI1lD,KAAKU,MAAjD04F,EAFwC1zC,EAExC0zC,SAAUE,EAF8B5zC,EAE9B4zC,SAAUptC,EAFoBxG,EAEpBwG,oBAC5B,GAA4B,OAAxBA,EAAJ,CACA,IAAIuuC,GAAe,EAEfvuC,EAAoBltD,QAAUslD,GAAmBgD,oBAEjDmzC,EACIA,GAAoC,IAApBnB,EAAS5wF,QAAoC,IAApB0wF,EAAS1wF,OAEtDwjD,EAAoBltD,QAAUslD,GAAmBmD,YAEjDgzC,EAAeA,GAAoC,IAApBnB,EAAS5wF,OACjCwjD,EAAoBltD,QAAUslD,GAAmBkD,MACxDizC,EAAeA,GAAoC,IAApBrB,EAAS1wF,SAExC46E,GAASmX,IAAcD,4CAEhB7lG,GACX,IAAIqK,EAAQ2vC,KAAE/7B,IAAIje,EAAG,eAAgB,IACrCqK,EAAQ2S,GAAiB3S,GACzBgB,KAAKH,MAAM66F,OAAOjrF,QAAUzQ,EAC5BgB,KAAKY,SAAS,CACVu4F,SAAU,GACVC,SAAUp6F,EACVu6F,aAAc,4CAGP5kG,GACX,IAAIqK,EAAQ2vC,KAAE/7B,IAAIje,EAAG,eAAgB,IACrCqK,EAAQ2S,GAAiB3S,GACzBgB,KAAKH,MAAM86F,OAAOlrF,QAAUzQ,EAC5BgB,KAAKY,SAAS,CACVy4F,SAAU,GACVC,SAAUt6F,EACVu6F,aAAc,uDAGI7qF,IAEtBmrF,EADkC75F,KAAKH,MAA/Bg6F,uBACcnrF,EAAK1P,OAC3BgB,KAAKY,SAAS,CACVsrD,oBAAqBx9C,EACrB6qF,aAAc,qDAGE,IAAA9rC,EACgCztD,KAAKU,MAAjD04F,EADY3rC,EACZ2rC,SAAUE,EADE7rC,EACF6rC,SAAUptC,EADRuB,EACQvB,oBACtBx9C,EAAkCigC,KAAE/7B,IACtCs5C,EACA,QACA,MAEEoF,EAAgBtxD,KAAK46F,mBAAmBxB,EAAUE,EAAU5qF,GAClE1O,KAAK45F,WAAWtoC,sCAETlZ,GAAoC,IACnC8T,EAAwBlsD,KAAKU,MAA7BwrD,oBACFltD,EAAQ2vC,KAAE/7B,IAAIs5C,EAAqB,SACzC,OACI9T,IAAUp5C,GAASA,IAAUslD,GAAmBgD,iGAGvCgK,iGACwCtxD,KAAKH,MAAlDuxD,6BAA0BypC,qBACkB76F,KAAKU,MAAjD04F,aAAUE,aAAUptC,wBACvBoF,yBACDF,GAAyB,iCAGvBlF,uBAEElsD,KAAKU,MAAMwrD,wCAEPlsD,KAAKU,MAAMwrD,oBAAoBltD,QAC/BslD,GAAmBmD,8CAEPozC,EAAevB,EAAU,YAArChuF,oCAEAtL,KAAKU,MAAMwrD,oBAAoBltD,QAC/BslD,GAAmBkD,sCAEPqzC,EAAe,GAAIzB,WAA/B9tF,kDAEYuvF,EAAevB,EAAUF,WAArC9tF,0DAGQuvF,EAAevB,EAAUF,WAArC9tF,iBAGAmrB,GAAY,EACZnrB,aAAemmB,IACXn4B,EAAU+3B,GAAgBC,OAAOE,QACjClmB,aAAeumB,KACfv4B,EAAUgS,EAAIhS,UAGdgS,aAAe4mB,IACf5mB,aAAe+mB,MAEf/4B,EAAUgS,EAAIhS,QACd0G,KAAKw5F,6BAA4B,IAErCx5F,KAAKY,SAAS,CAAE24F,aAAcjgG,MAE9Bm9B,GAAY,EACZz2B,KAAKY,SAAS,CAAE24F,aAAc,OAC9Bv5F,KAAKw5F,+BAETpoC,EAAyB36B,8IAGlB5hC,GACX,OAAwC,KAAjCA,EAAG4V,QAAQ,MAAO,IAAI/B,2CAErBsxF,GACR,OAAOh6F,KAAK86F,eAAed,uCAEnBC,GACR,OAAOj6F,KAAK86F,eAAeb,oCAEtB,IAAAp5F,EAAAb,KAAAk2C,EACgDl2C,KAAKH,MAAlDk7F,EADH7kD,EACG6kD,kBAAmBC,EADtB9kD,EACsB8kD,WAAYC,EADlC/kD,EACkC+kD,UADlC3sC,EASDtuD,KAAKU,MANLy4F,EAHC7qC,EAGD6qC,SACAC,EAJC9qC,EAID8qC,SACAC,EALC/qC,EAKD+qC,SACAC,EANChrC,EAMDgrC,SACAC,EAPCjrC,EAODirC,aACArtC,EARCoC,EAQDpC,oBAGJ,OACIjtD,GAAAC,EAAAC,cAAA,WAASC,UA1QC,gBA2QNH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OACbhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA5Qd,eACA,UA4QF/yD,GAAAC,EAAAC,cAACwmD,GAAD,CACIxX,mBAAoBnuC,KAAK25F,0BACzBvrD,QAAS6qD,GACT/sF,KAAI,GAAAhD,OAAK8Y,GAAQk5E,WAAbhyF,OAAyB6vD,GAAM,OACnC/5D,MAAOktD,IAEXjtD,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CApRjB,eACA,OAmRgD,UAE7ChyD,KAAKm7F,WAAW72C,GAAmBmD,cAChCxoD,GAAAC,EAAAC,cAACmsC,GAAD,CACI9wC,MAAO6+F,EACPzuD,cAAe5qC,KAAK05F,eACpBxtF,KAAI,GAAAhD,OAAK8Y,GAAQo5E,WAAblyF,OAAyB6vD,GAAM,OACnC/5D,MAAOs6F,IAGfr6F,GAAAC,EAAAC,cAAA,QACIuhB,MAAO,CACHiyC,YAAa,MACbhzC,WAAY,SAGfq7E,GAGJh7F,KAAKm7F,WAAW72C,GAAmBkD,MAChCvoD,GAAAC,EAAAC,cAACmsC,GAAD,CACI5qB,MACIu6E,EACM,CAAEj3E,UAAW,aACb1jB,EAEV9F,MAAO2+F,EACPvuD,cAAe5qC,KAAKy5F,eACpBvtF,KAAI,GAAAhD,OAAK8Y,GAAQq5E,WAAbnyF,OAAyB6vD,GAAM,OACnC/5D,MAAOo6F,IAGfn6F,GAAAC,EAAAC,cAAA,QACIuhB,MAAO,CAAEiyC,YAAa,MAAOhzC,WAAY,SAExCs7E,MAGN1B,IAAiBwB,GAChB97F,GAAAC,EAAAC,cAACy5F,GAAD,CACI1sF,KAAMqtF,EACNtxF,MAAO+Z,GAAQxnB,QAGvByE,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPuqC,OAAO,EACPJ,QAAS5pC,KAAK42E,sBACd3uE,MAAO+Z,GAAQ+pC,WAEnB9sD,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CAvUjB,eACA,OAyUM+oC,EACM,uBACA,aAGV97F,GAAAC,EAAAC,cAAA,QACIyqC,QAAS,kBAAM/oC,EAAK24F,gCAEnBx3E,GAAQs5E,eAEbr8F,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ8wC,iBA/TVzwD,cEvEX2oD,MC8DThpC,GAAUqP,GAAgBg3B,2BAA2BkzC,UAErDljB,GAAmBrmB,GAAI,CADP,oBACuB,YACvCwpC,GAAgBxpC,GAAI,CAACqmB,GAAkB,SACvCojB,GAAgBzpC,GAAI,CAACqmB,GAAkB,SClE9BqjB,GDoE4B,SAAAx9F,GAgBrC,IAfF85E,EAeE95E,EAfF85E,eACA2jB,EAcEz9F,EAdFy9F,aACAphB,EAaEr8E,EAbFq8E,qBACAqhB,EAYE19F,EAZF09F,mBACAhhB,EAWE18E,EAXF08E,YACA5H,EAUE90E,EAVF80E,UAEA6oB,GAQE39F,EATF49F,iBASE59F,EARF29F,cACA5uB,EAOE/uE,EAPF+uE,eACAijB,EAMEhyF,EANFgyF,eACAyK,EAKEz8F,EALFy8F,OACAD,EAIEx8F,EAJFw8F,OAEAxrC,GAEEhxD,EAHF8c,UAGE9c,EAFFgxD,WACA3/B,EACErxB,EADFqxB,OAKMwsE,EACFnhB,IAAgBl3B,GAAem3B,WAC/BD,IAAgBl3B,GAAeo3B,sBAC7BkhB,EACFD,KACExhB,GACFA,IAAyBn3B,GAAwBy3B,UAE/CohB,EAAkBD,EAClBh6E,GAAQq5D,IAAIpzE,MACZ+Z,GAAQk6E,KAAKj0F,MAEbk0F,EACFP,GAAsBI,EAChBhqC,GAAI,CAACypC,GAAe,eAAgB,MACpCA,GAGJ/mD,EAAwB,UADZ13B,aAAajC,QAAQ,aArBrCjiB,EA2BEo2D,GAAa,GA3BfktC,EAAAtjG,EAyBE+3D,qCAzBF,IAAAurC,EAyBkC,KAzBlCA,EAAAC,EAAAvjG,EA0BEg4D,6BA1BF,IAAAurC,EA0B0B,KA1B1BA,EA6BI1kF,EAAWs1D,EAAe5yD,KAAK,SAAAtP,GACjC,OAAO+6C,GAAkB/6C,EAASmlB,iBAGhCosE,EAAarvB,EAAesvB,MAAM,SAAAv9F,GACpC,SAAIA,EAAMqhC,gBAAiBrhC,EAAMqhC,cAAc9V,UAEA,OAAvCvrB,EAAMqhC,cAAc9V,QAAQO,aACWxqB,IAAvCtB,EAAMqhC,cAAc9V,QAAQO,SAMxC,OACI7rB,GAAAC,EAAAC,cAAA,WAASC,UAjEK,qBAkEVH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OACbhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAWi5E,IACZp5E,GAAAC,EAAAC,cAAA,OAAKC,UAAWo8F,KACV7jF,GACEu3C,IACC2B,IACAC,GACG7xD,GAAAC,EAAAC,cAAA,QAAMC,UAAU,gBAAhB,gGAKRH,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,QACPmqC,QAASopC,EACT/qE,MAAO+Z,GAAQw6E,KAAKv0F,MACpB0hC,UACKpa,GACiB,IAAlBA,EAAO7mB,SACNwnF,GACmB,OAAnByK,EAAOlrF,SACe,OAAnBirF,EAAOjrF,UACTkI,IACGk5C,IACAC,IACJwrC,MAIN/sE,GACmB,IAAlBA,EAAO7mB,SACNwnF,GACmB,OAAnByK,EAAOlrF,SAAuC,OAAnBirF,EAAOjrF,UACjCkI,IACGk5C,IACAC,IACJwrC,IACDr9F,GAAAC,EAAAC,cAAA,QAAMC,UAAW,gBAAjB,8DAKDmwB,GAA4B,IAAlBA,EAAO7mB,SAChBzJ,GAAAC,EAAAC,cAAA,QAAMC,UAAW,gBAAjB,yEAMHu8F,GACG18F,GAAAC,EAAAC,cAAA,QAAMC,UAAW,gBACZ4iB,GAAQw6E,KAAKpf,SAGtBn+E,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQw6E,KAAKC,OACpBx9F,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQw6E,KAAKE,QAExBz9F,GAAAC,EAAAC,cAAA,OAAKC,UAAW+8F,GACXznD,GACGz1C,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAOu8F,EAAc,SAAW,OAChChyD,OAAO,EACPJ,QAAS,kBAAMiyD,KACf5zF,MAAOg0F,EACPtyD,UACKpa,GACiB,IAAlBA,EAAO7mB,SACNwnF,GACmB,OAAnByK,EAAOlrF,SACe,OAAnBirF,EAAOjrF,UAKtBilC,IAAYqnD,GACT98F,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQk6E,KAAKS,QAIZ,OAAnB3kB,EACG/4E,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBAAf,gEACmD,IAC/CH,GAAAC,EAAAC,cAAA,cAAS64E,IAGb/4E,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,QErND27F,GCSiC,SAAA1+F,GAAA,IAC5C2+F,EAD4C3+F,EAC5C2+F,aACAC,EAF4C5+F,EAE5C4+F,yBACAC,EAH4C7+F,EAG5C6+F,gBAH4C,OAK5C99F,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAbF,+BAakB,OAAQ,SACtB,OAAjB6qC,QAA0Cv8F,IAAjBu8F,EACtB59F,GAAAC,EAAAC,cAAA,OACIC,UAAW4yD,GAAI,CAhBT,+BAkBF,OACA,MACA,0BAGJ/yD,GAAAC,EAAAC,cAAA,2BAAgB09F,IAGpB59F,GAAAC,EAAAC,cAAA,YAGJF,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA7BN,+BA6BsB,OAAQ,MAAO,YAC/C/yD,GAAAC,EAAAC,cAAA,YAAO49F,EAAgB,IACvB99F,GAAAC,EAAAC,cAAA,YAAO49F,EAAgB,IACvB99F,GAAAC,EAAAC,cAAA,YAAO29F,EAAyB,IAChC79F,GAAAC,EAAAC,cAAA,YAAO29F,EAAyB,iBRmFvC9F,wNA0GL,IAAMh1E,GAAUqP,GAAgBg3B,2BAC1BpgD,GAAK,GAAAiB,OAAM6vD,GAAM/2C,GAAQ/Z,OAApB,KAAAiB,OAA8B6vD,GAAM,OAApC7vD,OAA4C6vD,GACnD/2C,GAAQg7E,YAGNC,GAAgBjrC,GAAI,CADJ,+BACoB,SAIpCkrC,GAAe,SACjBroG,GADiB,IAEjBw5D,EAFiBjlD,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,IAAAA,UAAA,SAIN,CACXvU,KACAsoG,aANiB/zF,UAAAV,OAAA,EAAAU,UAAA,QAAA9I,IAMI,KACrBhB,IAAK80F,KAAQC,WACbhmC,YAEE+uC,GAAuB,kBACzB,IAAI/qF,IAAuB,CACvB,CAAC2kF,GAASr8B,WAAYuiC,GAAalG,GAASr8B,YAAY,IACxD,CAACq8B,GAAS+B,KAAMmE,GAAalG,GAAS+B,OACtC,CAAC/B,GAASpwE,MAAOs2E,GAAalG,GAASpwE,QACvC,CAACowE,GAAS1uC,UAAW40C,GAAalG,GAAS1uC,YAC3C,CAAC0uC,GAASnP,MAAOqV,GAAalG,GAASnP,QACvC,CACImP,GAASvS,oBACTyY,GAAalG,GAASvS,sBAE1B,CAACuS,GAASuE,UAAW2B,GAAalG,GAASuE,eAE7Ct/D,GAAe,CACjB+1D,WAAY,EAAC,GAAO,GACpBh3E,UAAW,KACXsf,sBAAuB,KACvB+iE,WAAYjJ,KAAQC,WACpBiJ,gBAAiB,KACjB3B,cAAc,EACd4B,2BAA4B,KAC5BxV,mBAAoB,GACpBG,2BAA4B,GAC5B1tF,MAAO,KACPyyE,eAAgB,GAChBsN,qBAAsB,KACtBijB,mBAAoB,KACpBxV,WAAY,GACZG,mBAAoB,GACpB97B,cAAe,KACfe,cAAc,EACdqwC,UAAU,EACVvhE,SAAS,EACTwhE,QAAQ,EACRnuE,OAAQ,KACRyoD,eAAgB,KAChB4C,YAAa,KACbxuE,SAAU,KACVuxF,aAAc,KACdtjB,cAAe,KACfp/C,SAAU,KACV2iE,WAAY,KACZC,eAAgB,KAChBx3E,SAAU+2E,KACVU,2BAA4B,KAC5BC,mBAAoB,KACpBC,4BAA4B,EAC5BC,yBAAyB,EACzBC,0BAA0B,EAC1BhyC,oBAAqB,KACrBgD,UAAW,KACX/0C,QAAS,GACTw7E,WAAY,CACRtO,sBAAuB,KACvBC,cAAe,MAEnB6W,SAAU,KACVC,mBAAmB,EACnBC,sBAAsB,EAEtBC,mBAAoB,GACpBpO,gBAAgB,EAChBE,sBAAuB,IS7SZ/nC,eTqTX,SAAAA,EAAYxoD,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAqoD,IACvBvoD,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAizD,GAAAloD,KAAAH,KAAMH,KALVg9F,kBAI2B,EAAA/8F,EAH3B66F,YAG2B,EAAA76F,EAF3B46F,YAE2B,EAEvB56F,EAAK+8F,aAAe,KACpB/8F,EAAK66F,OAASv4F,KAAMm8F,YACpBz+F,EAAK46F,OAASt4F,KAAMm8F,YAEpBz+F,EAAKY,MAAQiuC,KAAE6vD,UAAUviE,IACzBn8B,EAAKy7E,iBAAmBz7E,EAAKy7E,iBAAiB/6E,KAAtBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACxBA,EAAKmuE,aAAenuE,EAAKmuE,aAAaztE,KAAlBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACpBA,EAAK2+F,yBAA2B3+F,EAAK2+F,yBAAyBj+F,KAA9BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGhCA,EAAK4+F,yBAA2B5+F,EAAK4+F,yBAAyBl+F,KAA9BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGhCA,EAAKksD,eAAiBlsD,EAAKksD,eAAexrD,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACtBA,EAAK6+F,yBAA2B7+F,EAAK6+F,yBAAyBn+F,KAA9BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGhCA,EAAK8+F,uBAAyB9+F,EAAK8+F,uBAAuBp+F,KAA5BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC9BA,EAAK++F,yBAA2B/+F,EAAK++F,yBAAyBr+F,KAA9BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGhCA,EAAKg/F,gBAAkBh/F,EAAKg/F,gBAAgBt+F,KAArBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACvBA,EAAKi/F,oBAAsBj/F,EAAKi/F,oBAAoBv+F,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC3BA,EAAKk/F,0BAA4Bl/F,EAAKk/F,0BAA0Bx+F,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAKm/F,0BAA4Bn/F,EAAKm/F,0BAA0Bz+F,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK65F,0BAA4B75F,EAAK65F,0BAA0Bn5F,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAKo/F,UAAYp/F,EAAKo/F,UAAU1+F,KAAfpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACjBA,EAAKq/F,kBAAoBr/F,EAAKq/F,kBAAkB3+F,KAAvBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACzBA,EAAKs/F,YAAct/F,EAAKs/F,YAAY5+F,KAAjBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACnBA,EAAK+6F,eAAiB/6F,EAAK+6F,eAAer6F,KAApBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACtBA,EAAKu/F,2BAA6Bv/F,EAAKu/F,2BAA2B7+F,KAAhCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGlCA,EAAKw/F,qBAAuBx/F,EAAKw/F,qBAAqB9+F,KAA1BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC5BA,EAAKy/F,sBAAwBz/F,EAAKy/F,sBAAsB/+F,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK0/F,4BAA8B1/F,EAAK0/F,4BAA4Bh/F,KAAjCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGnCA,EAAK2/F,0BAA4B3/F,EAAK2/F,0BAA0Bj/F,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAK4/F,YAAc5/F,EAAK4/F,YAAYl/F,KAAjBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACnBA,EAAK6/F,kBAAoB7/F,EAAK6/F,kBAAkBn/F,KAAvBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACzBA,EAAK8/F,0BAA4B9/F,EAAK8/F,0BAA0Bp/F,KAA/BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAGjCA,EAAKu7E,IAAMv7E,EAAKu7E,IAAI76E,KAATpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACXA,EAAK+/F,MAAQ//F,EAAK+/F,MAAMr/F,KAAXpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACbA,EAAKkzE,UAAYlzE,EAAKkzE,UAAUxyE,KAAfpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACjBA,EAAKnD,UAAYmD,EAAKnD,UAAU6D,KAAfpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KACjBA,EAAKggG,sBAAwBhgG,EAAKggG,sBAAsBt/F,KAA3BpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAC7BA,EAAK8mF,oBAAsB9mF,EAAK8mF,oBAAoBpmF,KAAzBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAE3BA,EAAK2oF,gCAAkC3oF,EAAK2oF,gCAAgCjoF,KAArCpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KA7DhBA,qFAkEvB,IAAMsS,EAASJ,GACX+tC,SAAS9tC,SACTiB,OAAOjB,SAASC,KAChBgB,OAAOjB,SAASE,UAEdghB,EAA2C/gB,EAAOQ,IACpD,eAGE2J,EAAenK,EAAOQ,IAAI,gBAE1BugB,GACFnzB,KAAK+/F,WAAWx3F,OAAO4qB,IACvBnzB,KAAK68F,aAAe1pE,EACpBnzB,KAAKY,SAAS,CACVw9F,mBAAmB,KAEd7hF,GACTvc,KAAKY,SAAS,CACVwsD,aAAc7wC,IAAiBumC,GAAe9zC,wDAKvC61C,EAAmBqI,GAAmB,IAC7CyuC,EAAiB37F,KAAKU,MAAtBi7F,aACFqE,EAAmB,CACrB,eACA,QACA,UACA,iBACA,gBACA,6BACA,0BACA,4BAEEC,EAAmBtxD,KAAEwX,KAAFnsC,MAAA20B,KAAC,CAAMue,GAANhkD,OAAoB82F,IACxCE,EAAevxD,KAAEwX,KAAFnsC,MAAA20B,KAAC,CAAM3uC,KAAKU,OAAXwI,OAAqB82F,KACtCrxD,KAAE0X,QAAQ45C,EAAkBC,IAAiBvE,GAC9C37F,KAAKY,SAAS,CAAE+6F,cAAc,uCAI3BwE,GAAiB,IAAAz6C,EAapB1lD,KAAKU,MAXL48F,EAFoB53C,EAEpB43C,gBAEArwB,GAJoBvnB,EAGpB63C,2BAHoB73C,EAIpBunB,gBAEA7f,GANoB1H,EAKpB83C,mBALoB93C,EAMpB0H,cAEAitB,GARoB30B,EAOpB+3C,SAPoB/3C,EAQpB20B,eACAujB,EAToBl4C,EASpBk4C,WACAC,EAVoBn4C,EAUpBm4C,eACA3uC,EAXoBxJ,EAWpBwJ,UACA/0C,EAZoBurC,EAYpBvrC,QAGJ,IACK+0C,GACD+d,EAAevkE,QAAU,GACL,OAApB40F,EAEA,OAAO,KAEX,IAAI8C,EAAmCzxD,KAAE/7B,IACrC0qF,EACA,UACA,MAEC8C,IACDA,EAAkBzxD,KAAE/7B,IAChBq6D,EACA,0BACA,OAGR,IAAM1nC,EUnbd,SACI86D,EAKA/5E,EAGA4oC,EA8BA9gB,GASA,IAAM7I,EAAa,CACfj3B,SAAU,CACNC,QAAS8xF,EAAO/C,gBAChB5uF,KAAM2xF,EAAO9jF,aACb+jF,YAAaD,EAAOC,cAGxB/lB,GAAgC,EAChCgmB,EAAwC,KACxCC,EAAgC,KA0MpC,OAzMA7xD,KAAEljC,QAAQ6a,EAAMtL,UAAW,SAACjQ,GACxB,GACKw1F,GACDx1F,EAAS2M,SAAWyrC,GAAaoE,WAG9B,IAAKi5C,GAAez1F,EAAS2M,SAAWyrC,GAAaqE,IAGxD,OAAO,EAFPg5C,EAAcz1F,OAFdw1F,EAAsBx1F,IAQxBw1F,GAEIrxC,EAAU7H,SAASnrD,IACnBgzD,EAAU7H,SAASnrD,GAAG6jC,qBAExB4O,KAAEh8B,IACE4tF,EACA,qBACAt2F,GACIilD,EAAU7H,SAASnrD,GAAG6jC,qBAG9B4O,KAAEh8B,IACE4tF,EACA,kCACErxC,EAAU7H,SAASnrD,GAAGglC,SAE5ByN,KAAEh8B,IACE4tF,EACA,iBACArxC,EAAU7H,SAASnrD,GAAGyrD,gBAE1BhZ,KAAEh8B,IACE4tF,EACA,4CACArxC,EAAU7H,SAASnrD,GAAGwzD,UAItBR,EAAU7H,SAASnrD,GAAG29B,SACtBq1B,EAAU97B,cAAgBv9B,EAAc82D,QAExChe,KAAEh8B,IACE4tF,EACA,UACAt2F,GAA0BilD,EAAU7H,SAASnrD,GAAG29B,WAK1D2mE,GAEItxC,EAAU7H,SAAShrD,IACnB6yD,EAAU7H,SAAShrD,GAAG0jC,qBAExB4O,KAAEh8B,IACE6tF,EACA,qBACAv2F,GACIilD,EAAU7H,SAAShrD,GAAG0jC,qBAG9B4O,KAAEh8B,IACE6tF,EACA,kCACEtxC,EAAU7H,SAAShrD,GAAG6kC,SAE5ByN,KAAEh8B,IACE6tF,EACA,iBACAtxC,EAAU7H,SAAShrD,GAAGsrD,gBAE1BhZ,KAAEh8B,IACE6tF,EACA,4CACAtxC,EAAU7H,SAAShrD,GAAGqzD,UAItBR,EAAU7H,SAAShrD,GAAGw9B,SACtBq1B,EAAU97B,cAAgBv9B,EAAc82D,QAExChe,KAAEh8B,IACE6tF,EACA,UACAv2F,GAA0BilD,EAAU7H,SAAShrD,GAAGw9B,WAKhE0L,EAAMvqB,UAAY,CAACulF,EAAqBC,GAAajwF,OACjD,SAAAxF,GAAQ,OAAiB,OAAbA,IAEhB4jC,KAAEljC,QAAQ85B,EAAMvqB,UAAW,SAACjQ,GACW4jC,KAAE/7B,IACjC7H,EACA,iCAEA28C,GAAgB38C,KAAWwvE,GAAuB,GAChDrrB,EAAU97B,aACZub,KAAEh8B,IACE5H,EACA,6BACAmkD,EAAU97B,aAGZ87B,EAAUpvB,oBACZ6O,KAAEh8B,IACE5H,EACA,sBACAmkD,EAAUpvB,4BAGP/0B,EAAS+0B,oBAEpB/0B,EAASG,aAAe,GAClBkjC,EAAQwvD,YACV7yF,EAASG,aAAazM,KAAK,CACvBvJ,KAAMk5C,EAAQwvD,WAAW1oG,KACzBiW,KAAMijC,EAAQwvD,WAAWlvF,OAI7B0/B,EAAQ+xD,QAAU/xD,EAAQj0B,SAA+B,KAApBi0B,EAAQj0B,SAC7CpP,EAASG,aAAazM,KAAK,CACvBvJ,KAAMk5C,EAAQj0B,QACdhP,KAAM,YAKR+jD,EAAUjgD,UACVigD,EAAUjgD,SAAS5B,UACnB6hD,EAAUjgD,SAASL,WACnBsgD,EAAUjgD,SAASJ,UAErB9D,EAASG,aAAazM,KAAK,CACvB0M,KAAM,WACNkC,SAAU6hD,EAAUjgD,SAAS5B,SAC7BuB,UAAWsgD,EAAUjgD,SAASL,UAC9BC,SAAUqgD,EAAUjgD,SAASJ,aAIzC8/B,KAAEh8B,IAAI4yB,EAAO,+BAAgCoe,GAAckF,cAEvDqG,EAAUt1B,QAAQ6yB,MAAmC,KAA3ByC,EAAUt1B,QAAQ6yB,MAC5C9d,KAAEh8B,IAAI4yB,EAAO,4BAA6B2pB,EAAUt1B,QAAQ6yB,MAG5D8tB,GACA5rC,KAAEh8B,IAAI4yB,EAAO,uBAAwB6d,GAAwBo3B,SAEjE7rC,KAAEh8B,IACE4yB,EACA,yCACAoJ,KAAE/7B,IAAIytF,EAAQ,4BAA6B,KAE/C1xD,KAAEh8B,IACE4yB,EACA,wCACAoJ,KAAE/7B,IAAIytF,EAAQ,2BAA4B,KAExCnxC,EAAUxzC,gBAAoBwzC,EAAU1C,SAC1C7d,KAAEh8B,IACE4yB,EACA,0CACA2pB,EAAUxzC,gBAEdizB,KAAEh8B,IACE4yB,EACA,2CACA2pB,EAAU1C,OAAOn/C,UAErBshC,KAAEh8B,IACE4yB,EACA,4CACA2pB,EAAU1C,OAAO59C,WAErB+/B,KAAEh8B,IACE4yB,EACA,2CACA2pB,EAAU1C,OAAO39C,UAErB8/B,KAAEh8B,IACE4yB,EACA,yCACA2pB,EAAU1C,OAAO59C,WAErB+/B,KAAEh8B,IACE4yB,EACA,wCACA2pB,EAAU1C,OAAO39C,WAIzB8/B,KAAEh8B,IAAI4yB,EAAO,SAAU,cAEhBA,EVgL0Bk7D,CACzB,CACInD,gBAAgBloG,OAAAkuB,GAAA,EAAAluB,CAAA,GACTu5C,KAAEwX,KACDm3C,EACAlwC,EACM,CACI,cACA,cACA,uBACA,gBAEJ,IAVC,CAYX7iC,QAAS61E,IAEbE,YACIpxC,EAAUpvB,sBACNojB,GAAsB5mD,OAC1B4yD,EAAU97B,cAAgBv9B,GAAc82D,OAClCt2D,EAAaqqG,IACbrqG,EAAasqG,MACvBpkF,aAAc6wC,EACRtK,GAAe9zC,WACf8zC,GAAelN,cAEzB,CACI56B,UAAWiyD,GAEf,CACIvxD,eAAgBwzC,EAAUxzC,eAC1B8wC,OAAQ0C,EAAU1C,OAClBv9C,SAAS7Z,OAAAkuB,GAAA,EAAAluB,CAAA,GAAM85D,EAAU/H,YACzBrnB,oBAAqBovB,EAAUpvB,oBAC/BunB,SAAU,CACNnrD,GAAMgzD,EAAU2B,8BACV,CACI9wB,mBACImvB,EAAU2B,8BACd3vB,QAAWguB,EAAU2B,gCACb3B,EAAUzF,wBACZnpD,EACNqnD,iBAAkBuH,EAAUxF,0BAC5BgG,SAAUR,EAAU6B,oBACpBl3B,QAASq1B,EAAU+B,yBAEvB3wD,EACNjE,GAAM6yD,EAAU4B,sBACV,CACI/wB,mBACImvB,EAAU4B,sBACd5vB,QAASguB,EAAU4B,wBACX5B,EAAUrF,gBACZvpD,EACNqnD,iBAAkBuH,EAAUpF,kBAC5B4F,SAAUR,EAAU8B,YACpBn3B,QAASq1B,EAAUgC,iBAEvB5wD,GAEVs5B,QAAS,CACL6yB,KAAMyC,EAAUzC,MAEpBr5B,YAAa87B,EAAU97B,aAE3B,CACIwqE,WACmB,OAAfA,EACM,CACI1oG,KAAM0oG,EACNlvF,KAAMmvF,QAEVv9F,EACV6Z,UACAgmF,WAGF56D,IACFoJ,KAAEh8B,IAAI4yB,EAAO,cAAeme,GAAem4B,aACHltC,KAAEp/B,OAItCg2B,EAAMvqB,UACN,SAACzD,EAAiBvY,GACd,OAAOuY,GAAUmwC,GAAgB1oD,KAErC,IAGA2vC,KAAEh8B,IACE4yB,EACA,uBACA6d,GAAwBo3B,UAIpC,GAAMj1C,GAAW80C,EAAe,CAC5B,IAAMumB,EAAiCjyD,KAAE/7B,IACrCynE,EACA,iBACA,IAEEwmB,EAA8BlyD,KAAE/7B,IAClCynE,EACA,cACA,IAEEymB,EAAwDnyD,KAAE/7B,IAC5D+7B,KAAE7jC,KAAKuvE,EAAcr/D,UAAW,SAACjQ,GAC7B,OAAOA,EAAS2M,SAAWyrC,GAAaoE,aAE5C,kBAEEw5C,EAAgDpyD,KAAE/7B,IACpD+7B,KAAE7jC,KAAKuvE,EAAcr/D,UAAW,SAACjQ,GAC7B,OAAOA,EAAS2M,SAAWyrC,GAAaqE,MAE5C,kBAGAq5C,IAAwBn9C,GAAem4B,aACvCglB,IAAwBn9C,GAAe+2B,aAEvC9rC,KAAEh8B,IAAI4yB,EAAO,iBAAkBq7D,GAC/BjyD,KAAEh8B,IAAI4yB,EAAO,cAAes7D,GAC5BlyD,KAAEljC,QAAQ85B,EAAMvqB,UAAW,SAACjQ,EAAqBvM,GACzCuM,EAAS2M,SAAWyrC,GAAaoE,WACjC5Y,KAAEh8B,IACE4yB,EADJ,aAAAr8B,OAEiB1K,EAFjB,mBAGIsiG,GAEG/1F,EAAS2M,SAAWyrC,GAAaqE,KACxC7Y,KAAEh8B,IACE4yB,EADJ,aAAAr8B,OAEiB1K,EAFjB,mBAGIuiG,MAOpB,OAAOx7D,qFAGPpS,yFAEQ+9C,EAAmBlxE,KAAKH,MAAxBqxE,iBAC0BlxE,KAAKU,MAA/Bi9F,iBAAcxjF,qBAGK+2D,EACvBp7D,GAAgBqE,GAChBgZ,iBAJE7nB,oBAMemmB,KACXksE,GACFhvD,KAAEh8B,IAAIgrF,EAAc,mBAAoBryF,EAAIsvE,aAEhD56E,KAAKY,SAAS,CACVg6E,YAAatvE,EAAIsvE,YACjBL,qBAAsBjvE,EAAIivE,qBAC1BojB,oCAGDryF,qLAEQpW,iFACP+4E,EAAiBjuE,KAAKH,MAAtBouE,+BACDjuE,KAAKs7E,KAAKrN,EAAc,CAAC/4E,mMAGhCiE,EACAue,mFAEQw2C,EAA8BluD,KAAKH,MAAnCquD,mCAGmBluD,KAAKs7E,KAAKptB,EAA2B,CAC5D/0D,EACAue,kBAJEpM,2BAMCA,mMAGP8T,EACAguC,EACA4zC,iGAEQlzC,EAA2B9tD,KAAKH,MAAhCiuD,yBAC2B9tD,KAAKU,MAAhC25E,kBAAelgE,YACjBg3E,EACFnxF,KAAKU,MAAMo9F,4BACX99F,KAAKU,MAAMo9F,2BAA2BvjE,YACpCg3D,EACFvxF,KAAKU,MAAMq9F,oBACX/9F,KAAKU,MAAMq9F,mBAAmBxjE,YAE5B0mE,EACF7hF,IAAe+jC,GAAaoE,WACtB4pC,EACAI,EACJhsD,EACAy7D,GAAY3mB,GACRA,QACA/5E,WAGiBN,KAAKs7E,KAAKxtB,EAAwB,CACzDh4C,GAAgBqE,GAChBiF,EACAguC,EACA7nB,EACA07D,kBAPE31F,2BASCA,4JAEuB,IACtBivE,EAAyBv6E,KAAKU,MAA9B65E,qBACR,OACIv6E,KAAKkhG,iBACqB,OAAzB3mB,GACGA,IAAyBn3B,GAAwBy3B,kDAGrC,IACZD,EAAgB56E,KAAKU,MAArBk6E,YACR,OACIA,IAAgBl3B,GAAem3B,WAC/BD,IAAgBl3B,GAAeo3B,mGAGtB3nD,sHACLy9C,EAAa5wE,KAAKH,MAAlB+wE,SACAz2D,EAAYna,KAAKU,MAAjByZ,iBACyCna,KAAKs7E,KAClD1K,EACA,CAAC96D,GAAgBqE,GAAUgZ,GAC3B,SAACtgB,GACGhS,EAAKg/F,MAAM,CACPrlG,MAAO,CACHyN,MAAO+Z,GAAQnI,OAAOkmF,WACtB7zF,KAAM2G,EAAIvZ,0BAPpBgS,oBAYammB,4DACb27B,IACFze,KAAE/7B,IAAItH,EAAK,yBAA2Bw3C,GAAelN,wBAGH51C,KAAKs7E,KACvDt7E,KAAKmhG,mBACL,CAAC71F,GACD,WACIzK,EAAKD,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQnI,OAAOg/E,aACtB3sF,KAAM8V,GAAQnI,OAAOsnF,gCAP/B96E,SAYF6lC,EAAiD,KAC/ClxC,EAAgC2zB,KAAE/7B,IACpCtH,EACA,kBACA,MAEEi1F,EAA6C5xD,KAAE7jC,KACjDkQ,EACA,SAACjQ,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaoE,aAG1Ci5C,EAAqC7xD,KAAE7jC,KACzCkQ,EACA,SAACjQ,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaqE,MAI1CoI,IAAoB4wC,GADpB7wC,IAA4B4wC,IAEZ3wC,EAClB1D,EAAsB5H,GAAmBgD,oBAClCqI,EACPzD,EAAsB5H,GAAmBmD,YAClCmI,IACP1D,EAAsB5H,GAAmBkD,KAEvCP,EAAYD,GAAqBhsC,GAAa,IAC9C61C,EACF,IAAItzD,KAAKoxC,KAAE/7B,IAAI2tF,EAAqB,qBAAsB,WAC1DjgG,EACEwwD,EACF,IAAIvzD,KAAKoxC,KAAE/7B,IAAI4tF,EAAa,qBAAsB,WAAQlgG,EACxD6mD,EAAaxY,KAAE7jC,KACjB6jC,KAAE/7B,IAAItH,EAAK,4BACX,SAAC81F,GACG,OAAOA,EAAGj2F,OAASg5C,GAAOk9C,WAG5BnyC,EAAuB,CACzBpvB,oBAAqB6O,KAAE/7B,IACnBtH,EACA,yCAEJulD,gCACApH,qBAAsB9a,KAAE/7B,IACpB2tF,EACA,iCAEJzvC,wBACAjH,aAAclb,KAAE/7B,IAAI4tF,EAAa,iCACjCzvC,oBAAqBpiB,KAAE/7B,IACnB2tF,EACA,6CAEJvvC,YAAariB,KAAE/7B,IACX4tF,EACA,6CAEJ92C,0BAA2B/a,KAAE/7B,IACzB2tF,EACA,kBAEJz2C,kBAAmBnb,KAAE/7B,IAAI4tF,EAAa,kBACtC9kF,eAAgBizB,KAAE/7B,IACdtH,EACA,2CAEJmhD,KAAM9d,KAAE/7B,IAAItH,EAAK,6BACjB8nB,YAAaub,KAAE/7B,IACX2tF,EACA,8BAEJp5C,cAQE9gC,GACFrmB,KAAK6/F,MAAM,CACP7kF,YACAsiF,gBAAiB3uD,KAAE/7B,IAAItH,EAAK,2BAA6B,KACzDiyF,2BACI5uD,KAAE/7B,IAAI2tF,EAAqB,0BAA4B,KAC3DtzB,eAAgBjyD,QAAa1a,EAC7Bi6E,qBAAsB5rC,KAAE/7B,IACpBtH,EACA,6BACA,MAEJkyF,mBACI7uD,KAAE/7B,IAAI4tF,EAAa,0BAA4B,KACnDpzC,eACAqwC,UAAW9uD,KAAE/7B,IAAIoI,EAAW,mCAC5B4/D,YAAajsC,KAAE/7B,IAAItH,EAAK,oBAAqB,MAC7C+uE,cAAe/uE,EAAIi6B,MACnBq4D,WAAc32C,EAAYA,EAAU/xD,KAAO,KAC3C2oG,eAAkB52C,EAAYA,EAAUv4C,KAAO,KAC/C2X,WACA6lC,sBACAgD,YACA/0C,QAAS7O,EAAI6O,uJAKrBygE,EACAL,GAEA,IAAI+mB,EAAmBt/E,GAAQu/E,cAAcC,WACzCC,EAAqB,IACzB,OAAQ7mB,GACJ,KAAKl3B,GAAem3B,UACpB,KAAKn3B,GAAeo3B,sBAChBwmB,EAAWt/E,GAAQu/E,cAAcG,UAGzC,OAAQnnB,GACJ,KAAKn3B,GAAwBy3B,UACzB4mB,EAAaz/E,GAAQ2/E,gBAAgBD,UACrC,MACJ,KAAKt+C,GAAwBo3B,QACzBinB,EAAaz/E,GAAQ2/E,gBAAgBC,QACrC,MACJ,KAAKx+C,GAAwBs3B,SACzB+mB,EAAaz/E,GAAQ2/E,gBAAgBE,SACrC,MACJ,KAAKz+C,GAAwBq3B,WACzBgnB,EAAaz/E,GAAQ2/E,gBAAgBG,UAG7C,MAAO,CACH,CAACnpB,GAAI32D,GAAQ44D,aAAc0mB,GAC3B,CAAC3oB,GAAI32D,GAAQi6D,eAAgBwlB,gDAIjB9L,GAIhB31F,KAAKY,SAAS,CAAE+0F,8DAGGj+E,EAAsB4Y,GACzC,IAAMu1B,EAAiB,GACnBnuC,IAAWyrC,GAAaoE,YACxB1B,EAAUi4C,2BAA6BxtE,EACjCA,GAAaA,EAAQL,kBACvB41B,EAAUkiC,mBAAqBz3D,EAAQL,kBAEpCvY,IAAWyrC,GAAaqE,MAC/B3B,EAAUk4C,mBAAqBztE,EACzBA,GAAaA,EAAQL,kBACvB41B,EAAUmiC,WAAa13D,EAAQL,kBAGvCjwB,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,qDAEEuH,GACrBptD,KAAK6/F,MAAM,CAAEzyC,yDAEDr3C,GACZ/V,KAAKY,SAAS,CAAEuZ,QAASpE,EAAM/W,sDAG/BgB,KAAKY,SAAS,CAAEs9F,0BAA0B,2EAG1C7pF,EACAq5D,EACAq0B,iFAEA/hG,KAAKY,SAAS,CAAEpG,MAAO,KAAM0hC,SAAS,aACpB7nB,EAAGlU,KAAH6Z,MAAA3F,EAAE,CAAMrU,MAANkJ,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAes4E,kBAA7BpiE,oBACammB,IAAkBswE,uBACjC55F,QAAQ3N,MAAM8Q,IACRy2F,mCACIA,EAAaz2F,kCAEnBtL,KAAKY,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQnI,OAAOg/E,aACtB3sF,KAAMZ,EAAIhS,0BAK1B0G,KAAKY,SAAS,CAAEs7B,SAAS,sBAClB5wB,8JAGPmrB,EACA6mE,GAEAt9F,KAAKY,SAAS,CACV08F,kBACAj3E,SAAUrmB,KAAK2+F,yBACX3H,GAAS+B,KACTtiE,GACA,kDAKRA,EACAvhC,EACAwZ,GAEA1O,KAAKY,SAAS,CACVg9F,WAAYnnE,EAAYvhC,EAAO,KAC/B2oG,eAAgBnvF,GAAQ,8CAGjBiN,GAAkB,IACrBsxD,EAAmBjtE,KAAKU,MAAxBusE,eACRA,EAAe34E,IAAI,SAAC0tG,EAAe1gE,GAC/B2rC,EAAe3rC,GAAO3lB,SAAWA,IAErC3b,KAAKY,SAAS,CACVqsE,+GAGwB+sB,EAAcC,oJAClCzqB,EAA6BxvE,KAAKH,MAAlC2vE,2BAQJxvE,KAAKU,MALLusE,mBACA7f,iBACAlB,wBACA/xC,YACAmjF,oBAGE/W,EACFr6B,IAAwB5H,GAAmBmD,aAC3CyE,IAAwB5H,GAAmBgD,oBACzCk/B,EACFt6B,IAAwB5H,GAAmBkD,KAC3C0E,IAAwB5H,GAAmBgD,oBAC/CtnD,KAAKY,SAAS,CAAEpG,MAAO,gBAC+BwF,KAAKs7E,KACvD9L,EACA,CAAC15D,GAAgBqE,GAAU8/E,GAAO,KAAMD,GAAO,KAAM5sC,GACrD,SAACv6C,GACG0pE,EAAK37E,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQnI,OAAOpd,YACtByP,KACI2G,EAAIvZ,QACJ,kGATdgS,SAeA22F,EAA2BtzD,KAAEk3C,UAC/B5Y,EACA,SAACliE,GAEG,OAD6B4jC,KAAE/7B,IAAI7H,EAAU,YAC3Bo4C,GAAaoE,aAGjC26C,EAAmBvzD,KAAEk3C,UACvB5Y,EACA,SAACliE,GAEG,OAD6B4jC,KAAE/7B,IAAI7H,EAAU,YAC3Bo4C,GAAaqE,OAKb,IAAtBy6C,GACAtzD,KAAEh8B,IACEs6D,EAAeg1B,GACf,gCACAhI,IAIU,IAAdiI,GACAvzD,KAAEh8B,IACEs6D,EAAei1B,GACf,gCACAlI,KAIJ1uF,aAAemmB,uDAEb0wE,EAA4B72F,EAAI0P,UAChConF,EAA0B92F,EAAImjB,aAEhC8uE,EAA+C,KAC/CC,EAAuC,KACvCtN,GAAiB,iCACCjjB,wEAAXjlB,UACDrhC,EAAiBqhC,EAAQrhC,gBAAkB,QAClBrmB,IAA3B0nD,EAAQrhC,8EACGqhC,UACP,IAKW,IAJPo6C,EAAYvc,UACR,SAAAwc,GAAU,OACNA,EAAW3qF,SAAWswC,EAAQtwC,QAC9B2qF,EAAW31F,SAAWs7C,EAAQt7C,SAItC,OADAwjF,GAAiB,EACjB,WATcvpE,ibAatBupE,GAAiB,ySAKzBlwF,KAAKY,SAAS,CACVsvF,iBACAE,sBAAuBgS,IAGtBlS,qDAILvhD,KAAEljC,QAAQ02F,EAAc,SAACp3F,GAEjBw7E,GACAx7E,EAAS2M,SAAWyrC,GAAaoE,YAEjCg2C,EAA6B5uD,KAAE/7B,IAC3B7H,EACA,wBACA,MASJ4jC,KAAEh8B,IACEs6D,EAAeg1B,GACf,gCACAtzD,KAAE/7B,IAAI7H,EAAU,kCAEpB4jC,KAAEh8B,IACEs6D,EAAeg1B,GACf,wBACAtzD,KAAE/7B,IAAI7H,EAAU,0BAEpB4jC,KAAEh8B,IACEs6D,EAAeg1B,GACf,oCACAtzD,KAAE/7B,IAAI7H,EAAU,sCAEpB4jC,KAAEh8B,IACEs6D,EAAeg1B,GACf,mCACAtzD,KAAE/7B,IAAI7H,EAAU,qCAEpB4jC,KAAEh8B,IACEs6D,EAAeg1B,GACf,0BACAtzD,KAAE/7B,IAAI7H,EAAU,6BAGM,IAAtBk3F,GACCtzD,KAAE/7B,IACCq6D,EAAeg1B,GACf,0BAGJtzD,KAAEh8B,IACEs6D,EAAeg1B,GACf,wBACAtzD,KAAE/7B,IAAI7H,EAAU,2BAGjBy7E,GAAcz7E,EAAS2M,SAAWyrC,GAAaqE,MACtDg2C,EAAqB7uD,KAAE/7B,IACnB7H,EACA,wBACA,MASJ4jC,KAAEh8B,IACEs6D,EAAei1B,GACf,gCACAvzD,KAAE/7B,IAAI7H,EAAU,kCAEpB4jC,KAAEh8B,IACEs6D,EAAei1B,GACf,wBACAvzD,KAAE/7B,IAAI7H,EAAU,0BAEpB4jC,KAAEh8B,IACEs6D,EAAei1B,GACf,0BACAvzD,KAAE/7B,IAAI7H,EAAU,6BAGF,IAAdm3F,GACCvzD,KAAE/7B,IAAIq6D,EAAei1B,GAAW,0BAEjCvzD,KAAEh8B,IACEs6D,EAAei1B,GACf,wBACAvzD,KAAE/7B,IAAI7H,EAAU,6BAO1Bu3F,kBAAkBhF,GAEpBA,IACCgF,EAAmB/3E,QAAUokB,KAAE/7B,IAC5Bq6D,EAAe,GACf,wBACoB,OAApBqwB,EACOA,EAAqC/yE,aACtCjqB,IAIdN,KAAKY,SAAS,CACV28F,6BACAC,qBACAvwB,iBACAqwB,gBAAiBgF,8PAGSjvF,6HAImBrT,KAAKH,MAA9CgwE,mBAAgBQ,2BAQpBrwE,KAAKU,MANLsa,cACAoyC,iBACAjzC,YACAmkF,uBACAlO,0BACA4B,eAECh3E,GAAkC,IAArBA,EAAUtS,+DAE0B,KAElD65F,EAA4C,KAC5CC,EAAoC,KACxC7zD,KAAEljC,QAAQuP,EAAW,SAACjQ,GAEdA,EAAS2M,SAAWyrC,GAAaoE,YACjCl0C,EAAU+L,aAAe+jC,GAAaoE,WAEtCg7C,EAAoB,CAChB57E,eAAgB,GAChB5b,WACAmlB,cAAe7c,EAAUid,QACzBnR,gBAAiBm/E,EAAmBpiG,IAGxC6O,EAAS2M,SAAWyrC,GAAaqE,KACjCn0C,EAAU+L,aAAe+jC,GAAaqE,MAEtCg7C,EAAY,CACR77E,eAAgB,GAChB5b,WACAmlB,cAAe7c,EAAUid,QACzBnR,gBAAiBm/E,EAAmBjiG,OAK1C4wE,EAA8BD,GAChCu1B,EACAC,aAEkCxiG,KAAKs7E,KACvCzL,EACA,CAAC/5D,GAAgBqE,GAAU8yD,EAAgB7f,GAC3C,yBAHE9hD,SAKAmrB,IAAcnrB,aAAemmB,6DAK7BgxE,EAA2Bn3F,EAAIo3F,QAAQ,IAElCh2F,QAAUD,SAASg2F,EAAO/1F,OAAQ,KAAO,6BAC1Ci2F,EAAoB3Q,EAAW19F,IAAI,SAAC0K,EAAOsiC,GAC7C,OACIjuB,EAAU+L,aAAe+jC,GAAaoE,YAC5B,IAAVjmB,IAIAjuB,EAAU+L,aAAe+jC,GAAaqE,KAC5B,IAAVlmB,GAIGtiC,eAGL4B,GAASZ,KAAM,CACjBgyF,WAAY2Q,qDAIVA,EAAoB3Q,EAAW19F,IAAI,SAAC0K,EAAOsiC,GAC7C,OACIjuB,EAAU+L,aAAe+jC,GAAaoE,YAC5B,IAAVjmB,MAIAjuB,EAAU+L,aAAe+jC,GAAaqE,KAC5B,IAAVlmB,IAIGtiC,eAEL4B,GAASZ,KAAM,CACjBgyF,WAAY2Q,mBAIdloE,EAAsB,CACxB9pB,SAAUrF,EAAIc,SAAS,GAAGuuB,gBAAkB,EAC5CnuB,UAAYygE,EAAe,GAAGp+C,WAC9BnX,OAAQrE,EAAU+L,sBAIKpf,KAAKs7E,KAC5BjL,EACA,CACIv6D,GAAgBqE,GAChB,CAACsgB,GACD2yB,EACA,CAAC/5C,EAAU+L,aAEf,4BAVEwjF,oBAYqBnxE,8DAGrBoxE,EAA8BD,EAC/Bn0E,aACCq0E,EAAcD,EAAetG,MAC/B,SAAApvF,GAAG,OAAIA,EAAIuK,SAAWyrC,GAAaoE,aAEjCw7C,EAAYF,EAAetG,MAC7B,SAAApvF,GAAG,OAAIA,EAAIuK,SAAWyrC,GAAaqE,MAGnCw7C,EAA2C,GAC3CF,IACAE,EAA4B,GAAA95F,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CACrBg7F,EAAsB7/E,OACrB,SAAApD,GAAG,OAAIA,EAAIuK,SAAWyrC,GAAaoE,cAFfnyD,OAAAsnC,GAAA,EAAAtnC,CAIrBytG,KAIPE,IACAC,EAA4B,GAAA95F,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CACrBg7F,EAAsB7/E,OACrB,SAAApD,GAAG,OAAIA,EAAIuK,SAAWyrC,GAAaqE,OAFfpyD,OAAAsnC,GAAA,EAAAtnC,CAIrBytG,eAILjiG,GAASZ,KAAM,CACjBowF,sBAAuB4S,EACvB9S,gBAAgB,EAChB3gE,OAAQkH,EAAanrB,EAAmB,iMAGpB+H,uGAUhB3W,EAAcsD,KAAKH,MAAnBnD,YAQJsD,KAAKU,MANLsa,cACAoyC,iBACAlB,wBACA/xC,YACAmkF,yBACAb,SAECziF,GAAkC,IAArBA,EAAUtS,2DAEtB2+C,EAA2BD,GAAW8E,GACQ,OAE/Cvd,KAAEyD,SAASiV,EAAUlE,GAAaoE,cAC9Bl0C,EAAU89E,oBACdxiD,KAAEyD,SAASiV,EAAUlE,GAAaqE,OAASn0C,EAAUk+E,oCAEtD/2F,EAAQ,CACJ0R,KAAM8V,GAAQnI,OAAOopF,gBACrBh7F,MAAO+Z,GAAQnI,OAAOg/E,wBAEpBj4F,GAASZ,KAAM,CAAExF,2DAGvB+nG,EAA4C,KAC5CC,EAAoC,KACxC7zD,KAAEljC,QAAQuP,EAAW,SAACjQ,GACdA,EAAS2M,SAAWyrC,GAAaoE,WAC7BzB,GAAkBzyC,EAAU89E,oBAC5BoR,EAAoB,CAChBx3F,WACAmlB,cAAe7c,EAAU89E,mBACzBhyE,gBAAiBm/E,EAAmBpiG,IAE/BmX,EAAUg+E,qBACnBkR,EAAoB,CAChBx3F,WACA4b,eACMtT,EAAUi+E,6BACZj+E,EAAUi+E,4BAA4B5oF,OAAS,EAD/CtT,OAAAsnC,GAAA,EAAAtnC,CAEUie,EAAUi+E,6BACd,CAACj+E,EAAUg+E,oBACrBnhE,cAAe7c,EAAU89E,mBACzBhkB,kBAAmB95D,EAAU+9E,qBAC7BjyE,gBAAiBm/E,EAAmBpiG,KAGrC6O,EAAS2M,SAAWyrC,GAAaqE,MACpC1B,GAAkBzyC,EAAUk+E,YAC5BiR,EAAY,CACRz3F,WACAmlB,cAAe7c,EAAUk+E,WACzBpyE,gBAAiBm/E,EAAmBjiG,IAE/BgX,EAAUo+E,aACnB+Q,EAAY,CACRz3F,WACA4b,eACMtT,EAAUq+E,qBACZr+E,EAAUq+E,oBAAoBhpF,OAAS,EADvCtT,OAAAsnC,GAAA,EAAAtnC,CAEUie,EAAUq+E,qBACd,CAACr+E,EAAUo+E,YACrBvhE,cAAe7c,EAAUk+E,WACzBpkB,kBAAmB95D,EAAUm+E,aAC7BryE,gBAAiBm/E,EAAmBjiG,QAM9C4wE,EAA8BD,GAChCu1B,EACAC,aAEE5hG,GAASZ,KAAM,CACjBitE,iBACAi2B,iCAAiC,6BAEMljG,KAAKs7E,KAC5C5+E,EACA,CAACoZ,GAAgBqE,GAAU8yD,EAAgB7f,GAC3C,yBAHE9hD,SAKAmrB,IAAcnrB,aAAemmB,wEAK7B7wB,GAASZ,KAAM,CACjBkwF,gBAAgB,EAChB3gE,OAAQkH,EAAanrB,EAAmB,GACxC+a,SAAUrmB,KAAK2+F,yBACX3H,GAAS1uC,UACT7xB,2JAKR0sE,EACA3oG,GAEAwF,KAAKY,SAAS,CACVo9F,4BAA4B,EAC5BxjG,MAAOA,GAAS,KAChB+/E,qBAAsB4oB,0CAI1BnjG,KAAKY,SAAS,CAAEq9F,yBAAyB,gDAGzCj+F,KAAKY,SAAS,CAAEq9F,yBAAyB,gGAGzC7oB,EACAC,EACA9qD,EACAunB,EACAwjC,EACAC,EACAC,EACA3mD,yHAEA7uB,KAAKk/F,YACG1tB,EAAsBxxE,KAAKH,MAA3B2xE,oBAC+CxxE,KAAKU,MAApD0sD,iBAAclB,wBAAqB/xC,YACrCoC,EAA+B6wC,EAC/BtK,GAAe9zC,WACf8zC,GAAelN,aACf/4B,EAA6B,GAC/BqvC,IAAwB5H,GAAmBgD,qBAC3CzqC,EAAWpe,KAAK0kD,GAAaoE,YAC7B1qC,EAAWpe,KAAK0kD,GAAaqE,MACtB0E,IAAwB5H,GAAmBmD,YAClD5qC,EAAWpe,KAAK0kD,GAAaoE,YACtB2E,IAAwB5H,GAAmBkD,KAClD3qC,EAAWpe,KAAK0kD,GAAaqE,KAE3BkqB,EAAkB,CACpB70D,aACAumF,YAAa5tB,EACb6tB,cAAejuB,EACfC,OACAiuB,kBAAmB/tB,EACnBD,cACAzmD,aACAtE,WAEEolE,EAAgB3vF,KAAKU,MAAMsa,UAC3Bhb,KAAKU,MAAMsa,UAAUtJ,QACrB,aACA9Q,GAASZ,KAAM,CACjBgb,UAAW,KACX5O,SAAU,KACV6uB,SAAU,KACV6iE,2BAA4B,KAC5BC,mBAAoB,gCAGN/9F,KAAKs7E,KAAK9J,EAAmB,CAC3C17D,GAAgBqE,GAChBu3D,EACAtkB,kBAHE9hD,oBAKammB,uDAGnBzxB,KAAKY,SAAS,CACVylB,SAAUrmB,KAAK2+F,yBAAyB3H,GAASpwE,OAAO,OAMxD5mB,KAAKujG,wBAAwBj4F,uBAJ1B0P,OAAW5O,OAAUJ,OAKxB2jF,GAAiB30E,GACjBA,EAAU1mB,IAAI,SAACkZ,EAAG8zB,GAAJ,OAAclsC,OAAOgzB,OAAO5a,EAAGmiF,EAAcruD,MAE/DthC,KAAKm/F,kBACDnkF,EACA5O,EACAJ,EACAuQ,GACA,GAGAy+E,EAAa,GACbC,EAAY,GAEZjgF,KACMwoF,EAAexoF,EAAUlQ,KAC3B,SAAAC,GAAQ,MAAwB,OAApBA,EAAS2M,WAIrB8rF,EAAanjE,eACbmjE,EAAanjE,cAAc9V,UAErBk5E,EAAe,GAEjBD,EAAanjE,cAAc9V,QAAQM,QACnC44E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQM,QAIvC24E,EAAanjE,cAAc9V,QAAQO,QACnC24E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQO,QAGvC04E,EAAanjE,cAAc9V,QAAQQ,YACnC04E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQQ,YAGvCy4E,EAAanjE,cAAc9V,QAAQS,UACnCy4E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQS,UAIf,IAAxBy4E,EAAa/6F,OACb+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,KAC+B,IAAxBA,EAAa/6F,SACpB+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,MAGJzI,EAAayI,EAAaz5F,KAAK,OAG7B05F,EAAc1oF,EAAUlQ,KAC1B,SAAAC,GAAQ,MAAwB,OAApBA,EAAS2M,WAIrBgsF,EAAYrjE,eACZqjE,EAAYrjE,cAAc9V,UAEpBk5E,EAAe,GAEjBC,EAAYrjE,cAAc9V,QAAQM,QAClC44E,EAAahlG,KAAKilG,EAAYrjE,cAAc9V,QAAQM,QAGpD64E,EAAYrjE,cAAc9V,QAAQO,QAClC24E,EAAahlG,KAAKilG,EAAYrjE,cAAc9V,QAAQO,QAEpD44E,EAAYrjE,cAAc9V,QAAQQ,YAClC04E,EAAahlG,KACTilG,EAAYrjE,cAAc9V,QAAQQ,YAGtC24E,EAAYrjE,cAAc9V,QAAQS,UAClCy4E,EAAahlG,KACTilG,EAAYrjE,cAAc9V,QAAQS,UAId,IAAxBy4E,EAAa/6F,OACb+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,KAC+B,IAAxBA,EAAa/6F,SACpB+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,MAGJxI,EAAYwI,EAAaz5F,KAAK,OAGtChK,KAAKY,SAAS,CACVo6F,aACAC,kLAGkB/uC,GACtB,IAAMrG,EAAiB,CACnB7qC,UAAW,KACX+sE,mBAAoB,GACpBC,WAAY,GACZ57E,SAAU,KACV6uB,SAAU,KACV6iE,2BAA4B,KAC5BC,mBAAoB,KACpB7xC,sBACA0uB,YAAa,MAEjB56E,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAAmBywD,sDAEGpvB,EAAoBy4B,GAC1ClvD,KAAKY,SAAS,CACVsuD,UAAWz4B,EAAYy4B,EAAY,KACnC7oC,SAAUrmB,KAAK2+F,yBACX3H,GAASuE,UACT9kE,yCAKRz2B,KAAKY,SAAS,CAAEs9F,0BAA0B,wFAG1CljF,EACA5O,EACAJ,EACAuQ,EACAm1D,0FAEQG,EAAgB7xE,KAAKH,MAArBgyE,YACA13D,EAAYna,KAAKU,MAAjByZ,QACHa,GAAc5O,yBACfjE,QAAQ3N,MAAR,8CAAA0O,OACkD8R,EADlD,eAAA9R,OACyEkD,qCAIzE6uB,EAAW,cACuCj7B,KAAKs7E,KACvDzJ,EACA,CAAC/7D,GAAgBqE,GAAUa,EAAWuB,GACtC,WACIonF,EAAK/iG,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQnI,OAAOg/E,aACtB3sF,KAAM8V,GAAQnI,OAAOyM,wBAP/Bhb,oBAYammB,uDACnBwJ,EAAWj7B,KAAK4jG,yBAAyBt4F,GACzCtL,KAAKY,SAAS,CACVoa,YACAyiF,SAAU/rB,EACVtlE,WACA6uB,WACAX,sBAAuBtuB,gKAI3BV,GASA,MAAO,CAHWqjC,KAAE/7B,IAAItH,EAAK,YAAa,MACzBqjC,KAAE/7B,IAAItH,EAAK,eAAgB,MACxBqjC,KAAE/7B,IAAItH,EAAK,wBAAyB,wDAGnCA,GAErB,OADoCqjC,KAAE/7B,IAAItH,EAAK,eAAgB,sCAGL,IAAxDu4F,EAAwDz6F,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAAxB,CAAEgkD,cAAc,GAC5C02C,EAAkB1P,KAAQC,WAChCr0F,KAAKY,SAALxL,OAAAkuB,GAAA,EAAAluB,CAAA,GAEWu5C,KAAE6vD,UAAUviE,IAFvB,CAGQ5V,SAAU+2E,MACPyG,EAJX,CAKQxG,WAAYyG,IAEhB,WACI5wF,OAAOkyE,SAAS,CAAEtqC,IAAK,EAAGshB,SAAU,2FAI9Bp9D,mFACNsvE,EAAgBtuE,KAAKH,MAArByuE,YACRtuE,KAAKY,SAAS,CAAEs7B,SAAS,aACPoyC,EAAYtvE,iBAAxBsM,SACNtL,KAAKY,SAAS,CAAEs7B,SAAS,sBAClB5wB,yIAEA4wB,GACPl8B,KAAKY,SAAS,CAAEs7B,2DAEG,IAAAw1B,EASf1xD,KAAKU,MAPL68F,EAFe7rC,EAEf6rC,2BACAC,EAHe9rC,EAGf8rC,mBACAC,EAJe/rC,EAIf+rC,SACAvxC,EALewF,EAKfxF,oBACA+gB,EANevb,EAMfub,eACAi2B,EAPexxC,EAOfwxC,gCACAloF,EARe02C,EAQf12C,UAGE+oF,EAAuB92B,EAAe19D,OACxC,SAACC,EAAK8K,GAAN,OACI8U,QACI5f,GACI8K,EAAK+lB,oBACkC//B,IAAvCga,EAAK+lB,cAAclhB,mBAE/B,GAGAm9E,GAAa,EACX/V,EACFr6B,IAAwB5H,GAAmBmD,aAC3CyE,IAAwB5H,GAAmBgD,oBACzCk/B,EACFt6B,IAAwB5H,GAAmBkD,KAC3C0E,IAAwB5H,GAAmBgD,oBAE3Cm2C,IACIlX,IAAuBwd,IACvBzH,EAAaA,KAAgBiB,GAE7B/W,IAAeud,IACfzH,EAAaA,KAAgBkB,IAGrC,IAAIwG,GAAa,EAgBjB,OAdId,GAAmCloF,IAEnCgpF,EAAahpF,EAAUzL,OACnB,SAACC,EAAK8K,GAAN,OAEI8U,QACI5f,QAC4BlP,IAAxBga,EAAKqM,gBAC0B,IAA/BrM,EAAKqM,eAAeje,UAEhC,IAID4zF,GAAcyH,GAAwBC,qCAEtCplG,GAAkB,IAEnBqlG,EADejkG,KAAKU,MAAlB2lB,SACsCzT,IAAIhU,GAClD,SAAIqlG,GAEIjkG,KAAKU,MAAM25E,eACXr6E,KAAKU,MAAM25E,cAAcrC,gBACV,IAAfisB,EAAQpvG,OAKPovG,GAAWA,EAAQ51C,yDAG5B61C,EACA71C,GAQA,IANF,IADE81C,EACF/6F,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,IAAAA,UAAA,GAAAg7F,EACiDpkG,KAAKU,MAA5C+8F,EADV2G,EACU3G,SAAUp3E,EADpB+9E,EACoB/9E,SAAU4mD,EAD9Bm3B,EAC8Bn3B,eACtBo3B,EAAuC,IAAIhyF,IAAIgU,GAC/Ci+E,EAA6BlvG,OAAAsnC,GAAA,EAAAtnC,CAC5BivG,EAAa9wF,UAClBlH,KAAK,SAACnN,EAAYwO,GAAb,OAA6BxO,EAAErK,GAAK6Y,EAAE7Y,IAAM,EAAI,IAC9C2J,EAAI,EAAGA,EAAI8lG,EAAgB57F,OAAQlK,GAAQ,EAAG,CACnD,IAAMylG,EAA+BK,EAAgB9lG,GACrD,IAAKylG,EAED,OADA97F,QAAQ3N,MAAM,4BACP6rB,EAEX,GAAI7nB,IAAM0lG,EACND,EAAQ51C,QAAUA,EACd81C,IAAkBF,EAAQ9G,YAAc,UACzC,CACH,IAAMnoD,EAAkBx2C,GAAK0lG,EAC7BD,EAAQ51C,SAAWrZ,EACfA,IAAQivD,EAAQ3kG,IAAM80F,KAAQC,YAEtC,GAAI71F,IAAMw4F,GAASnP,MACfoc,EAAQ51C,QACJ41C,EAAQ51C,SACR61C,GAAiBlN,GAASuE,WAC1BltC,OACD,GAAI7vD,IAAMw4F,GAASvS,oBAAqB,CAC3C,IAAM8f,EAAsBt3B,EAAe19D,OACvC,SAACC,EAAK8K,GAAN,OACI9K,QACuBlP,IAAvBga,EAAK+lB,oBACkC//B,IAAvCga,EAAK+lB,cAAclhB,kBACvB,GAGJ8kF,EAAQ51C,QACJ41C,EAAQ51C,SAAWovC,GAAY8G,OAC5B/lG,IAAMw4F,GAASuE,YACtB0I,EAAQ51C,QACJ41C,EAAQ51C,UAAYruD,KAAKwkG,0BAEjCH,EAAa1xF,IAAIsxF,EAAQpvG,GAAIovG,GAEjC,OAAOI,uFAGP9+D,kGAEMlf,EAAW,IAAIhU,IAAuB+qF,MACxCqH,EAAuC,KACvCC,EAAmC,KACnCC,EAAqC,KACrCC,EAA6C,KAC7CC,EAAqC,cACnCp5F,GAAQ4a,EAAD,eAAAnoB,EAAA9I,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAW,SAAA63D,EAAOhyE,EAAgBM,GAAvB,OAAAqU,GAAAzU,EAAA0U,KAAA,SAAAq9D,GAAA,cAAAA,EAAAn9D,KAAAm9D,EAAAl9D,MAAA,OAAAk9D,EAAAh8D,GACZ3V,EADY2xE,EAAAl9D,KAAAk9D,EAAAh8D,KAEX+hF,GAASr8B,WAFE,EAAAsW,EAAAh8D,KAOX+hF,GAAS+B,KAPE,EAAA9nB,EAAAh8D,KAYX+hF,GAASpwE,MAZE,GAAAqqD,EAAAh8D,KAiBX+hF,GAAS1uC,UAjBE,GAAA2oB,EAAAh8D,KAyBX+hF,GAASnP,MAzBE,0BAGZ4c,EAAaK,EAAKC,wBAAwBx/D,GAC1CvmC,EAAMm+F,YAAcsH,EACpBzlG,EAAMqvD,UAAYo2C,EALNxzB,EAAAj9D,OAAA,0BAAAi9D,EAAAl9D,KAAA,EAQK+wF,EAAKE,sBAAsBz/D,EAAMA,OARtC,cAQZm/D,EARYzzB,EAAAxpC,KASZzoC,EAAMm+F,YAAcuH,EACpB1lG,EAAMqvD,UAAYq2C,EAVNzzB,EAAAj9D,OAAA,2BAAAi9D,EAAAl9D,KAAA,GAaM+wF,EAAKG,uBAAuB1/D,GAblC,eAaZo/D,EAbY1zB,EAAAxpC,KAcZzoC,EAAMm+F,YAAcwH,EACpB3lG,EAAMqvD,UAAYs2C,EAfN1zB,EAAAj9D,OAAA,2BAkBZ4wF,EAAgBE,EAAKI,2BACjB3/D,EAAMA,OAGVvmC,EAAMm+F,YAAcyH,EACpB5lG,EAAMqvD,UAAYu2C,EAvBN3zB,EAAAj9D,OAAA,2BAAAi9D,EAAAl9D,KAAA,GA0BM+wF,EAAKK,uBAAuB5/D,GA1BlC,eA0BZs/D,EA1BY5zB,EAAAxpC,KA2BZzoC,EAAMm+F,YAAc0H,EACpB7lG,EAAMqvD,UAAYw2C,EA5BN5zB,EAAAj9D,OAAA,qCAAAi9D,EAAA/8D,SAAA88D,MAAX,gBAAAo0B,EAAAC,GAAA,OAAAnnG,EAAA8b,MAAAha,KAAAoJ,YAAA,4BAgCPxI,GAASZ,KAAM,CACjBg4E,eAAgBzyC,EAAMA,MAAMyyC,gBAAkB,KAC9C4C,YAAar1C,EAAMA,MAAMq1C,aAAe,KACxCL,qBAAsBh1C,EAAMA,MAAMg1C,sBAAwB,wCAEvDl0D,yMAIPuI,EACAy4B,kGAEQgpB,EAAyBrwE,KAAKH,MAA9BwwE,uBAC0BrwE,KAAKU,MAA/ByZ,YAASizC,mCAG4CptD,KAAKs7E,KAC1DjL,EACA,CAACv6D,GAAgBqE,GAAUyU,EAAWw+B,EAAc/F,GACpD,SAACx0C,GACGyyF,EAAK1kG,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQnI,OAAOpd,YACtByP,KAAM2G,EAAIvZ,0BAPpBisG,oBAYgB9zE,4DAEhBo0B,EAAiB,GACnB0/C,EAAOjrE,wBACPurB,EAAUvrB,sBAAwBirE,EAAOjrE,uBAGzCirE,EAAO92E,eAAco3B,EAAUz5C,SAAWm5F,EAAO92E,cACjD82E,EAAOvqF,YAAW6qC,EAAU7qC,UAAYuqF,EAAOvqF,qBAE7Cpa,GAASZ,KAAD5K,OAAAkuB,GAAA,EAAAluB,CAAA,GACPywD,EADO,CAEVk4C,mBAAoB,KACpBD,2BAA4B,kEAG5BvsB,EAAAt8D,cAAewc,IACftpB,QAAQ3N,MAAM,wCACd2N,QAAQ3N,MAAR+2E,EAAAt8D,KACG9M,QAAQH,IAAI,mLAINs5B,GAAyB,IAAAkkE,EACTxlG,KAAKU,MAA9B28F,EADkCmI,EAClCnI,WAAYh3E,EADsBm/E,EACtBn/E,SAGpB,OADIg3E,EAAa1uD,KAAE/7B,IAAIyT,EAASzT,IAAI0uB,GAAQ,MAAO8yD,KAAQC,4DAGvC9uD,GACpB,IAAIzrB,EAAiC,KAErC,IAAI,IACQkB,EAAcuqB,EAAMA,MAApBvqB,UACFzM,EAAUogC,KAAE/7B,IAAI2yB,EAAO,yBAA0B,IACjDkgE,EACmB,IAArBzqF,EAAUtS,OACJsS,EAAUlQ,KACN,SAAAqnE,GAAG,OAAIA,EAAIz6D,SAAWyrC,GAAaoE,aAEvCvsC,EAAU,GAcd0qF,E5MvxBK,SAACC,EAAcC,GAClC,IAAIC,EAAQ,GACRC,EAAQ,GAWZ,OATID,EADAF,EAAG96E,OACE,GAAA3hB,OAAMy8F,EAAG96E,OAAT,KAAA3hB,OAAmBy8F,EAAG76E,OAAtB,KAAA5hB,OAAgCy8F,EAAG36E,SAAnC,KAAA9hB,OAA+Cy8F,EAAG56E,YAElD,GAAA7hB,OAAMy8F,EAAG76E,OAAT,KAAA5hB,OAAmBy8F,EAAG36E,SAAtB,KAAA9hB,OAAkCy8F,EAAG56E,YAG1C+6E,EADAF,EAAG/6E,OACE,GAAA3hB,OAAM08F,EAAG/6E,OAAT,KAAA3hB,OAAmB08F,EAAG96E,OAAtB,KAAA5hB,OAAgC08F,EAAG56E,SAAnC,KAAA9hB,OAA+C08F,EAAG76E,YAElD,GAAA7hB,OAAM08F,EAAG96E,OAAT,KAAA5hB,OAAmB08F,EAAG56E,SAAtB,KAAA9hB,OAAkC08F,EAAG76E,YAEvCva,KAAKC,UAAUo1F,KAAWr1F,KAAKC,UAAUq1F,G4M0wBzBC,CATXN,GACAA,EAAaplE,eACbolE,EAAaplE,cAAc9V,QAEJk7E,EAAaplE,cAAc9V,QAE3Bhc,EAAQgc,QAK/Bhc,EAAQgc,SAGZzQ,EAAO,CACHmqF,QAASjN,GAASr8B,WAClBnQ,eAAgBj8C,EAAQK,UACxBm8C,cAAex8C,EAAQM,SACvBowE,cAAe,IAAI1hF,KAAKgR,EAAQC,WAChC0wE,iBAAkB,IAAI3hF,KAAKgR,EAAQC,WACnC2wE,kBAAmB5wE,EAAQW,aAAe,KAC1CkwE,WAAY7wE,EAAQa,sBAAwB,KAC5CiwE,iBAAkB9wE,EAAQO,MAC1BwwE,iBAAkB/wE,EAAQQ,MAC1B47C,6BAA8BplB,EAAMA,MAAMj3B,SAASC,QAC9Cgc,QACLg1D,oBAAmB,GAAAr2E,OAAKylC,KAAE/7B,IACtBrE,EACA,iBACA,IAHe,KAAArF,OAIdylC,KAAE/7B,IAAIrE,EAAS,iBAAkB,KACtCgc,QAASm7E,OAASplG,EAAYiO,EAAQgc,QACtCizC,YAAajvD,EAAQlB,SACrBywE,YAAavvE,EAAQY,aAAe,KACpCixE,IAAK7xE,EAAQc,cAAgB,GAC7BgxE,aAAc96C,EAAMprB,QACpB+nE,UAAW3zE,EAAQ2zE,WAEzB,MAAOrvE,GACL1K,QAAQH,IAAI,wBAEhB,OAAO8R,0FAGPyrB,yFAEIzrB,EAA+B,cAEzBymF,EAA6C5xD,KAAE7jC,KACjDy6B,EAAMvqB,UACN,SAACjQ,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaoE,aAG1Ci5C,EAAqC7xD,KAAE7jC,KACzCy6B,EAAMvqB,UACN,SAACjQ,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaqE,MAG5Cw+C,EAA8C,KAC5CzF,GAAyBC,EAC3BwF,EAAmB1hD,GAAmBgD,oBAC7Bi5C,EACTyF,EAAmB1hD,GAAmBmD,YAC7B+4C,IACTwF,EAAmB1hD,GAAmBkD,KAEpCxsC,EAAyB,GACzBulF,GAAqBvlF,EAAUvc,KAAK8hG,GACpCC,GAAaxlF,EAAUvc,KAAK+hG,aAC5B5/F,GAASZ,KAAM,CAAEgb,sBACvBlB,EAAO,CACHs/E,SAAUzqD,KAAE/7B,IACR4tF,EACA,gCACA,IAEJlH,SAAU3qD,KAAE/7B,IACR2tF,EACA,gCACA,IAEJ0D,QAASjN,GAAS+B,KAClB7sC,oBAAqB85C,qDAGzB79F,QAAQH,IAAI,uDAET8R,yMAGPmsF,mKAE8CjmG,KAAKH,MAA3CwwE,yBAAsBwB,gBACtBv3C,EAA0Bt6B,KAAKU,MAA/B45B,sBACAngB,EAAmB8rF,EAAnB9rF,QAASorB,EAAU0gE,EAAV1gE,MAEbzrB,EAAgC,cAG1BosF,EAAqDv3D,KAAE7jC,KACzDy6B,EAAMvqB,UACN,SAACjQ,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaoE,aAG1C4+C,EAA6Cx3D,KAAE7jC,KACjDy6B,EAAMvqB,UACN,SAACjQ,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaqE,MAG1C4F,EACF7nB,EAAMj3B,SAASI,OAASo0C,GAAelN,aACrCyR,EAA2B,GAC3B6+C,GACF7+C,EAAS5oD,KAAK0kD,GAAaoE,YAEzB4+C,GACF9+C,EAAS5oD,KAAK0kD,GAAaqE,KAEzB54B,EAAyB,GAC/B+f,KAAEljC,QAAQ85B,EAAMvqB,UAAW,SAACjQ,GAClBA,EAAS6jB,WAAe7jB,EAAS6jB,UAAU,IAC7CA,EAAUnwB,KAAVrJ,OAAAkuB,GAAA,EAAAluB,CAAA,GACO2V,EAAS6jB,UAAU,GAD1B,CAEIlX,OAAQ3M,EAAS2M,YAKvB0uF,0CAAoB,SAAA30B,IAAA,IAAA40B,EAAAC,EAAAC,EAAAC,EAAA,OAAA7yF,GAAAzU,EAAA0U,KAAA,SAAAg+D,GAAA,cAAAA,EAAA99D,KAAA89D,EAAA79D,MAAA,UAAAsyF,EACU,CAC5BH,EACAC,GACF7xG,IACE,SAAA69E,GAAG,OACCA,GACAA,EAAI9xC,eACJ8xC,EAAI9xC,cAAclhB,kBARJmnF,EAAAlxG,OAAAuhC,GAAA,EAAAvhC,CAAAixG,EAAA,GACfE,EADeD,EAAA,GACHE,EADGF,EAAA,IAWlBC,IAAcC,EAXI,CAAA50B,EAAA79D,KAAA,eAAA69D,EAAA79D,KAAA,EAYLy7D,GACTr1D,EACAosF,EACAC,EACAp5C,GAhBc,cAAAwkB,EAAA59D,OAAA,SAAA49D,EAAAnqC,MAAA,cAAAmqC,EAAA79D,KAAA,EAoBTs8D,EACTl2D,EACAyU,EACAw+B,EACA/F,GAxBkB,cAAAuqB,EAAA59D,OAAA,SAAA49D,EAAAnqC,MAAA,wBAAAmqC,EAAA19D,SAAAu9D,qEA8BC20B,kBAFrBb,oBAIgB9zE,2BAAoB8zE,2BAGf1zB,EACvB/7D,GAAgBqE,GAChBorB,EAAMvqB,UACNoyC,EACMtK,GAAe9zC,WACf8zC,GAAelN,4BAPnB6wD,oBASiBh1E,2BAAoBg1E,UACrCC,EAEF/3D,KAAE/7B,IAAIszF,EAA6B,iBAAkB,IACnDS,EAEFh4D,KAAE/7B,IAAIuzF,EAAqB,iBAAkB,IAC7C/f,EAAsD,GACtDgG,EAAmE,KACnE/F,EAA8C,GAC9CgG,EAA2D,KACL,GACU,KACjC,GAC/BI,EAA4C,KAC1CC,EAAkC,GACpCC,EAA+C,KACD,GACU,KACjC,GACvBI,EAAoC,KAClCC,EAA0B,GAC5BC,EAAuC,KACvC2Z,EAAoD,KACpDC,EAA4C,KAChDl4D,KAAEljC,QAAQg7F,EAAQ52E,aAAc,SAAC6gE,GACzBA,EAAKh5E,SAAWyrC,GAAaoE,YAC7BmlC,EAAoBjuF,KAAKiyF,GAEnBwV,GACFngD,GACI2qC,EACAwV,EAA4Bh2E,iBAGhCy8D,EAA8B+D,IAE3BA,EAAKh5E,SAAWyrC,GAAaqE,MACpCwlC,EAAYvuF,KAAKiyF,GAEXyV,GACFpgD,GAAe2qC,EAAMyV,EAAoBj2E,iBAEzC+8D,EAAsByD,MAIlClE,EAAmB79C,KAAEp+B,OACjBg1F,EAAO92E,aACP,SAACthB,GACG,OAAOA,EAAIuK,SAAWyrC,GAAaoE,aAIA,IAAvCm/C,EAA4Bh+F,QAC1BikF,EAEFh+C,KAAEljC,QAAQ+gF,EAAkB,SAACr/E,GAEnBA,EAAIu4E,oBACN/2C,KAAEljC,QACE0B,EAAIu4E,mBACJ,SAACohB,GAC8CxgD,GACvCwgD,EACAJ,KAGAja,EAA2Bt/E,EAC3Bi5E,EACIj5E,EAAIu4E,oBAAsB,GAC9B0G,EAAwC0a,OAOd,IAAvCJ,EAA4Bh+F,SACnCk+F,EAAmCF,EAA4B,GAC/Dja,EACI99C,KAAE7jC,KAAK0hF,EAAkB,SAACr/E,GACtB,OACIA,EAAIuK,SAAWyrC,GAAaoE,YAC5Bp6C,EAAItY,KAAO6xG,EAA4B,GAAG7xG,MAE5C,MAEdi4F,EAAWn+C,KAAEp+B,OAAOg1F,EAAO92E,aAAc,SAACthB,GACtC,OAAOA,EAAIuK,SAAWyrC,GAAaqE,MAEJ,IAA/Bm/C,EAAoBj+F,QAAkBukF,EACtCt+C,KAAEljC,QAAQqhF,EAAU,SAAC3/E,GAEXA,EAAIu4E,oBACN/2C,KAAEljC,QACE0B,EAAIu4E,mBACJ,SAACohB,GAC8CxgD,GACvCwgD,EACAH,KAGA5Z,EAAmB5/E,EACnBk5E,EACIl5E,EAAIu4E,oBAAsB,GAC9B2G,EAAgCya,OAOd,IAA/BH,EAAoBj+F,SAC3Bm+F,EAA2BF,EAAoB,GAC/C5Z,EACIp+C,KAAE7jC,KAAKgiF,EAAU,SAAC3/E,GACd,OACIA,EAAIuK,SAAWyrC,GAAaqE,KAC5Br6C,EAAItY,KAAO8xG,EAAoB,GAAG9xG,MAEpC,MAERkyG,EAA+Dp4D,KAAE/7B,IACnEszF,EACA,uBACA,MAEEc,EAAuDr4D,KAAE/7B,IAC3DuzF,EACA,uBACA,MAYJ5Z,EAAgCwa,EAQhCla,EAAwBma,EAElBjf,EAAwCp5C,KAAE/7B,IAC5C+5E,EACA,kBACA,IAEEsa,EAAgDt4D,KAAE/7B,IACpDszF,EACA,gCACA,IAEEzX,EAAgD9/C,KAAEp+B,OACpD02F,EACA,SAACj1D,GACG,QACMA,EAAKlhB,UACL6d,KAAE7jC,KAAKi9E,EAAoBp5C,KAAEwX,KAAKnU,EAAM,aAIhDg2C,EAAgCr5C,KAAE/7B,IACpCq6E,EACA,kBACA,IAEEia,EAAwCv4D,KAAE/7B,IAC5CuzF,EACA,gCACA,IAEErX,EAAwCngD,KAAEp+B,OAC5C22F,EACA,SAACl1D,GACG,QACMA,EAAKlhB,UACL6d,KAAE7jC,KAAKk9E,EAAYr5C,KAAEwX,KAAKnU,EAAM,aAK9Cl4B,EAAO,CACHssE,gCACAgG,wCACA/F,wBACAgG,gCACAE,gCACAC,mBACAC,2BACAC,sBACAC,8BACA5E,qBACA0G,6BACA5B,wBACAC,WACAC,mBACAC,cACAC,sBACAjF,aACA8G,qBACAmV,QAASjN,GAASpwE,MAClBggF,mCACAC,2BACA76F,YACIu5F,EAAOjrE,uBAAyBA,qDAGpC43C,EAAAj9D,cAAewc,IACftpB,QAAQ3N,MAAM,wCACd2N,QAAQ3N,MAAR03E,EAAAj9D,KACG9M,QAAQH,IAAI,wDAGhB8R,mKAEgByrB,GACvB,IAAIzrB,EAAoC,KACxC,IACI,IAAMutC,EAA2B,GAC3BoF,EAA2BlnB,EAAMj3B,SAASszB,QAAQpmB,SAElD2rF,EASF,GAIEzrF,EAAuCizB,KAAE/7B,IAC3C2yB,EACA,2CAEEinB,EAAW9wC,EACX,CACIrO,SAAUshC,KAAE/7B,IACR2yB,EACA,2CACAkd,GAAYxkB,IAEhBrvB,UAAW+/B,KAAE/7B,IACT2yB,EACA,4CACA,IAEJ12B,SAAU8/B,KAAE/7B,IACR2yB,EACA,2CACA,UAGRjlC,EAEA6mD,EACFxY,KAAEp+B,OACEo+B,KAAE/7B,IAAI2yB,EAAO,2BAA4B,IACzC,SAAC67D,GACG,OAAOA,EAAGj2F,OAASg5C,GAAOk9C,WAEhC/sG,IAAI,SAAC8sG,GACH,OAAOzyD,KAAEy4D,KAAKhG,EAAI,CAAC,WAAY,YAAa,eAC7C,SAAM9gG,EACP0b,EAA6B2yB,KAAE/7B,IACjC2yB,EACA,gCAOEnS,EAAyCub,KAAE/7B,IAC7C2yB,EACA,0CAGE2gE,EAAqDv3D,KAAE7jC,KACzD6jC,KAAE/7B,IAAI2yB,EAAO,YAAa,IAC1B,SAACx6B,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaoE,aAG1C4+C,EAA6Cx3D,KAAE7jC,KACjD6jC,KAAE/7B,IAAI2yB,EAAO,YAAa,IAC1B,SAACx6B,GACG,OAAOA,EAAS2M,SAAWyrC,GAAaqE,MAIhD,GAAIp0B,IAAgBv9B,GAAcorC,QAAS,CACvC,GAAMilE,EAA6B,CAC/B,IAAM/sG,EAAyB,IAAIoE,KAC/BoxC,KAAE/7B,IACEszF,EACA,qBACA,KAGFx2C,EAAmC/gB,KAAE/7B,IACvCszF,EACA,6CAEE/sG,GAAUu2D,IAAa4f,MAAMn2E,EAAKyU,aACpCu5F,EAAajrG,GAAK,CACd/C,OACAu2D,aAGRrI,EAAS5oD,KAAK0kD,GAAaoE,YAE/B,GAAM4+C,EAAqB,CACvB,IAAMhtG,EAAyB,IAAIoE,KAC/BoxC,KAAE/7B,IAAIuzF,EAAqB,qBAAsB,KAE/Cz2C,EAAmC/gB,KAAE/7B,IACvCuzF,EACA,6CAEEhtG,GAAUu2D,IAAa4f,MAAMn2E,EAAKyU,aACpCu5F,EAAa9qG,GAAK,CACdlD,OACAu2D,aAGRrI,EAAS5oD,KAAK0kD,GAAaqE,MAInCjiB,EAAMvqB,UAAUvP,QAAQ,SAAA0mE,GAAG,OACvB9qB,EAAS5oD,KAAK0zE,EAAIz6D,UAGtBoC,EAAO,CACH0yC,SACA9wC,iBACA2rC,WACAztB,QAAS,CACLze,KAAMa,EACNlC,KAAM,CAAE2yC,SAEZw3C,QAASjN,GAAS1uC,UAClB53C,UAAW,CACP0iB,YAAaA,GAAev9B,GAAcorC,QAC1CkmE,aAAa/xG,OAAAkuB,GAAA,EAAAluB,CAAA,GAAM+xG,GACnBx2C,WAAa,WACT,GAAIv9B,IAAgBv9B,GAAc82D,OAAQ,CAMtC,IAAM06C,EALwB14D,KAAE/7B,IAC5B2yB,EACA,mCAKE+hE,EAAiB/hE,EAAMvqB,UAAUzL,OACnC,SAACC,EAAK8K,GAAN,OAAAllB,OAAAkuB,GAAA,EAAAluB,CAAA,GACOoa,EADPpa,OAAAg/D,GAAA,EAAAh/D,CAAA,GAEKklB,EAAK5C,OAAS,CACXmiB,QAAS,IAAIt8B,KACT+c,EAAKuf,SAETkG,mBAAoB,IAAIxiC,KACpB+c,EAAKylB,wBAIjB,IAGJ,OAAO3qC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAkyG,EADP,CAEIC,WAAYF,IAGpB,MAAO,GA7BE,IAgCjBlgD,cAEN,MAAOt0C,GACL1K,QAAQH,IAAI,2BAGhB,OAAO8R,2FAGPmsF,iGAEQvpG,EAAcsD,KAAKH,MAAnBnD,UACA6oC,EAAmB0gE,EAAnB1gE,MAAOprB,EAAY8rF,EAAZ9rF,QACXL,EAAgC,KAChCyV,EAAmB,YAEbvU,EAAyB2zB,KAAE/7B,IAAI2yB,EAAO,YAAa,IACnD6nB,EACF7nB,EAAMj3B,SAASI,OAASo0C,GAAe9zC,oBACKtS,EAC5CoZ,GAAgBqE,GAChBa,EACAoyC,WAHEo6C,oBAKoB/1E,KAAelC,EAASi4E,GAC5CvgD,EAAYD,GAAqBhsC,GAEvClB,EAAO,CACHu9E,SAAU1oD,KAAE/7B,IAAIq0C,EAAW,QAC3BuwC,mBAAoBvwC,EACpB/xD,KAAMy5C,KAAE/7B,IAAIq0C,EAAW,OAAQ,IAC/B13B,SACA00E,QAASjN,GAASnP,0FAGnB/tE,sLAEDyrB,mFACEujB,EAAc9oD,KAAKH,MAAnBipD,UACA3uC,EAAYna,KAAKU,MAAjByZ,iBACK2uC,EAAUhzC,GAAgBqE,GAAUorB,+NAGjD0oB,EACA7E,uIAEQomB,EAA6BxvE,KAAKH,MAAlC2vE,2BAE2CxvE,KAAKU,MAAhD0sD,iBAAcjzC,YAASmjF,oBACzB/gF,EAA+B6wC,EAC/BtK,GAAe9zC,WACf8zC,GAAelN,aACf6xD,EAAmBx5C,EAAcy5C,GAAGz5C,GAAe,KACnD05C,EAAWv+C,EAAMs+C,GAAGt+C,GAAO,KAC3Bk1C,EAA0B,GAC1BxvF,EAAQwuF,EAAkBA,EAAgBxuF,MAAQ,GAClDF,EAAY0uF,EAAkBA,EAAgB1uF,UAAY,GAC1DC,EAAWyuF,EAAkBA,EAAgBzuF,SAAW,GAC1C,KAAhBo/C,IAAoBqwC,EAAmBpiG,GAAK+xD,GACpC,KAAR7E,IAAYk1C,EAAmBjiG,GAAK+sD,aAElCxoD,GAASZ,KAAM,CACjBgb,UAAW,KACX5O,SAAU,KACV6uB,SAAU,KACV6iE,2BAA4B,KAC5BC,mBAAoB,KACpBO,gDAIuBt+F,KAAKs7E,KAAK9L,EAA0B,CAC3D15D,GAAgBqE,GAChBstF,GAAkB,KAClBE,GAAU,KACVv6C,EACAt+C,EACAF,EACAC,kBATEvD,oBAWammB,0BAEXnmB,aAAe+mB,IACf/mB,aAAe4mB,sCAIYlyB,KAAKs7E,KAC5BrL,GACA,CACIn6D,GAAgBqE,GAChBstF,GAAkB,KAClBE,GAAU,KACVv6C,EACAt+C,EACAF,EACAC,YAXF+4F,WAkBF5nG,KAAKujG,wBAAwBqE,uBAJ1B5sF,OAKPhb,KAAKY,SAAS,CAAEoa,+CAEb1P,oBAMPtL,KAAKujG,wBAAwBj4F,uBAJ1B0P,OAAW5O,OAAUJ,OAM5BhM,KAAKm/F,kBACCn/F,KAAK68F,aACD7hF,GACIA,EAAU1mB,IAAI,SAAAkZ,GAAC,OAAApY,OAAAkuB,GAAA,EAAAluB,CAAA,GAAUoY,EAAV,CAAamZ,eAAgB,OAChD3L,EACN5O,EACAJ,EACAuQ,GACA,GAMAvB,KACMwoF,EAAexoF,EAAUlQ,KAC3B,SAAAC,GAAQ,MAAwB,OAApBA,EAAS2M,WAIrB8rF,EAAanjE,eACbmjE,EAAanjE,cAAc9V,UAErBk5E,EAAe,GAEjBD,EAAanjE,cAAc9V,QAAQM,QACnC44E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQM,QAIvC24E,EAAanjE,cAAc9V,QAAQO,QACnC24E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQO,QAGvC04E,EAAanjE,cAAc9V,QAAQQ,YACnC04E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQQ,YAGvCy4E,EAAanjE,cAAc9V,QAAQS,UACnCy4E,EAAahlG,KACT+kG,EAAanjE,cAAc9V,QAAQS,UAIf,IAAxBy4E,EAAa/6F,OACb+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,KAC+B,IAAxBA,EAAa/6F,SACpB+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,MAGJzI,EAAayI,EAAaz5F,KAAK,OAG7B05F,EAAc1oF,EAAUlQ,KAC1B,SAAAC,GAAQ,MAAwB,OAApBA,EAAS2M,WAIrBgsF,EAAYrjE,eACZqjE,EAAYrjE,cAAc9V,UAEpBk5E,EAAe,GAEjBC,EAAYrjE,cAAc9V,QAAQM,QAClC44E,EAAahlG,KAAKilG,EAAYrjE,cAAc9V,QAAQM,QAGpD64E,EAAYrjE,cAAc9V,QAAQO,QAClC24E,EAAahlG,KAAKilG,EAAYrjE,cAAc9V,QAAQO,QAEpD44E,EAAYrjE,cAAc9V,QAAQQ,YAClC04E,EAAahlG,KACTilG,EAAYrjE,cAAc9V,QAAQQ,YAGtC24E,EAAYrjE,cAAc9V,QAAQS,UAClCy4E,EAAahlG,KACTilG,EAAYrjE,cAAc9V,QAAQS,UAId,IAAxBy4E,EAAa/6F,OACb+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,KAC+B,IAAxBA,EAAa/6F,SACpB+6F,EAAa,GAAb,GAAAv6F,OAAqBu6F,EAAa,GAAlC,MAGJxI,EAAYwI,EAAaz5F,KAAK,OAItChK,KAAKY,SAAS,CACVs7B,SAAS,EACTmiE,uBAAwBr+F,KAAK68F,aAC7BqG,kCAAmCljG,KAAK68F,aACxC5B,YACAD,iCAEGrsD,KAAE/7B,IAAIxG,EAAU,SAAU,GAAK,oRAIQpM,KAAKH,QAA3CkW,MAAgBi9D,cAAWn4D,WAC3Bm9D,EAAmBh4E,KAAKU,MAAxBs3E,gBACF2lB,EAAe39F,KAAK6nG,YAAW,MAGjClK,EAAarqE,UAAYzY,GAE7B7a,KAAKY,SAAS,CAAEpG,MAAO,OAClBmjG,0BACDx1F,QAAQ3N,MAAM,sEAELw9E,GACTrpC,KAAEh8B,IAAIgrF,EAAc,iBAAkB3lB,4BAEWh4E,KAAKs7E,KACtDtI,EACA,CAAChzE,KAAKU,MAAMyZ,QAASwjF,GACrB,SAAAmK,GACIC,EAAKnnG,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQgxD,UAAU/qE,MACzBiE,KACI47F,EAAaxuG,SACb0oB,GAAQgxD,UAAUg1B,0BAThC18F,oBAcemmB,IACjBzxB,KAAKY,SAAS,CACV+6F,cAAc,EACd3jB,eAAgBrpC,KAAE/7B,IAAItH,EAAK,cAAe,gSAKJtL,KAAKH,QAA3CkW,MAAgBpZ,cAAWke,aACM7a,KAAKU,MAAtCs3E,mBAAgB2lB,iBACxB39F,KAAKY,SAAS,CAAE+8F,aAAc,QACxBp4D,EAAuBvlC,KAAK6nG,YAAW,KAE5B7vB,GACbrpC,KAAEh8B,IAAI4yB,EAAO,iBAAkByyC,GAE7BiwB,EAAgDt5D,KAAE/7B,IACpD+qF,EACA,uCAGEp4D,GACAo4D,GACAsK,GACFt5D,KAAE0X,QAAQ9gB,EAAOoJ,KAAEwX,KAAKw3C,EAAa7jF,KAAM,gCAE3CyrB,EAAMlS,kBAAoB40E,6BAClB1iE,0BACRp9B,QAAQ3N,MAAM,oCACR0R,EAAO8V,GAAQrlB,UAAUqrG,YACzB//F,EAAQ+Z,GAAQrlB,UAAUsL,MAChCjI,KAAKY,SAAS,CAAEpG,MAAO,CAAE0R,OAAMjE,uDAIkBjI,KAAKs7E,KACtD3+E,EACA,CAACqD,KAAKU,MAAMyZ,QAASorB,EAAO1qB,GAC5B,WACIqtF,EAAKtnG,SAAS,CACVpG,MAAO,CACHyN,MAAO+Z,GAAQrlB,UAAUsL,MACzBiE,KAAM8V,GAAQrlB,UAAUqrG,+BAPlC18F,oBAYammB,uDACnBzxB,KAAKY,SAAS,CACVo3E,eAAgB1sE,EAAI6nB,aAAe,KACnCwqE,aAAc,CACV7jF,KAAMyrB,EACN1a,OAAQvf,EAAI6nB,YACZmnD,WAAYhvE,GAEhB0yF,4BAA4B,uJAIhC,IAAMwG,EAAyBxkG,KAAKwkG,yBAE9BtD,EAAelhG,KAAKkhG,eAC1BlhG,KAAKY,SAAS,CAAEpG,MAAO,OACnBgqG,IAGAtD,EACAlhG,KAAKY,SAAS,CAAEo9F,4BAA4B,IAE5Ch+F,KAAKrD,8CAGJ,IAAAwrG,EAAAnoG,KAAAooG,EAkCDpoG,KAAKU,MAhCLsa,EAFCotF,EAEDptF,UACAk0C,EAHCk5C,EAGDl5C,UACAmuC,EAJC+K,EAID/K,WACA1B,EALCyM,EAKDzM,aACAnhG,EANC4tG,EAMD5tG,MACA+/E,EAPC6tB,EAOD7tB,qBACAntB,EARCg7C,EAQDh7C,aACAqwC,EATC2K,EASD3K,SACAvhE,EAVCksE,EAUDlsE,QACA3M,EAXC64E,EAWD74E,OACAqrD,EAZCwtB,EAYDxtB,YACA5C,EAbCowB,EAaDpwB,eACA5rE,EAdCg8F,EAcDh8F,SACAuxF,EAfCyK,EAeDzK,aACA1wB,EAhBCm7B,EAgBDn7B,eACAoN,EAjBC+tB,EAiBD/tB,cACAp/C,EAlBCmtE,EAkBDntE,SACA5U,EAnBC+hF,EAmBD/hF,SACAy3E,EApBCsK,EAoBDtK,2BACAC,EArBCqK,EAqBDrK,mBACAC,EAtBCoK,EAsBDpK,2BACAC,EAvBCmK,EAuBDnK,wBACAC,EAxBCkK,EAwBDlK,yBACAhyC,EAzBCk8C,EAyBDl8C,oBACAypC,EA1BCyS,EA0BDzS,WACAr7D,EA3BC8tE,EA2BD9tE,sBACA+jE,EA5BC+J,EA4BD/J,qBACA6E,EA7BCkF,EA6BDlF,gCACA/oF,EA9BCiuF,EA8BDjuF,QACA+1E,EA/BCkY,EA+BDlY,eACAE,EAhCCgY,EAgCDhY,sBACA4B,EAjCCoW,EAiCDpW,WAGEzL,EACFr6B,IAAwB5H,GAAmBgD,qBAC3C4E,IAAwB5H,GAAmBmD,YACzC++B,EACFt6B,IAAwB5H,GAAmBgD,qBAC3C4E,IAAwB5H,GAAmBkD,IAzC1C6gD,EA6CDroG,KAAKsoG,iBAAiB1tB,EAAaL,GA7ClCguB,EAAAnzG,OAAAuhC,GAAA,EAAAvhC,CAAAizG,EAAA,GA2CDtL,EA3CCwL,EAAA,GA4CDzL,EA5CCyL,EAAA,GA8CCC,EAAwBxoG,KAAKm7F,WAAWnE,GAAS+B,MACjD0P,EAAyBzoG,KAAKm7F,WAAWnE,GAASpwE,OAClD8hF,EAA0B1oG,KAAKm7F,WAAWnE,GAAS1uC,WACnDqgD,EACF3oG,KAAKm7F,WAAWnE,GAASnP,SAAWqb,EAClC0F,EAAsC5oG,KAAKm7F,WAC7CnE,GAASvS,qBAEPokB,EAA6B7oG,KAAKm7F,WAAWnE,GAASuE,WACtDtyC,EAAmC,GACrCnD,GAAkBg4C,IAClB70C,EAAiBxqD,KAAK0kD,GAAaoE,YAEnCzB,GAAkBi4C,IAClB90C,EAAiBxqD,KAAK0kD,GAAaqE,KAEvC,IAAMs0C,EAA4B97F,KAAK8oG,uBACjCC,EAAkB/oG,KAAKkhG,eACvB8H,EACFD,IAAoB7sE,IAAYl8B,KAAKwkG,yBACnCyE,EAAqD5iF,EAASzT,IAChEokF,GAASr8B,YAELt0C,EAASzT,IAAIokF,GAASr8B,YACnBwiC,iBACL78F,EACA4oG,EAAiD7iF,EAASzT,IAC5DokF,GAAS+B,MAEL1yE,EAASzT,IAAIokF,GAAS+B,MACnBoE,iBACL78F,EACA6oG,EACA9iF,EAASzT,IAAIokF,GAASpwE,SAAWy3E,EAC3Bh4E,EAASzT,IAAIokF,GAASpwE,OACnBu2E,iBACL78F,EACJ8oG,EAEc/iF,EAASzT,IAAIokF,GAAS1uC,WAClCjiC,EAASzT,IAAIokF,GAAS1uC,WACnB60C,iBACL78F,EACA+oG,GACAhjF,EAASzT,IAAIokF,GAASnP,SAAWqb,EAC3B78E,EAASzT,IAAIokF,GAASnP,OACnBsV,iBACL78F,EACJgpG,GAA+BtpG,KAAKupG,qBACtCvS,GAASr8B,YAEP6uC,GAAyBxpG,KAAKupG,qBAAqBvS,GAAS+B,MAC5D0Q,GAA0BzpG,KAAKupG,qBACjCvS,GAASpwE,OAEP8iF,GAA8B1pG,KAAKupG,qBACrCvS,GAAS1uC,WAEPqhD,GAA0B3pG,KAAKupG,qBACjCvS,GAASnP,OAEP+hB,GAAwC5pG,KAAKupG,qBAC/CvS,GAASvS,qBAEPolB,GAA8B7pG,KAAKupG,qBACrCvS,GAASuE,WAGP1I,GAAgBb,EAAW33E,KAAK,SAAArb,GAClC,OAAOA,IAGX,OACIC,GAAAC,EAAAC,cAAA,OAAKC,UA3pFK,+BA2pFqBE,IAAK+9F,GAC/B0L,GAAmB9pG,GAAAC,EAAAC,cAAA,OAAKC,UAAW69F,KACnC/gE,GACGj9B,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA9pFlB,+BA8pFkC,uBAChC/yD,GAAAC,EAAAC,cAACijE,GAAD,OAGRnjE,GAAAC,EAAAC,cAACi0F,GAAD,CACIz3B,UAAU,EACV9mE,GAjqFI,gBAkqFJu6C,OAAQ4uD,EACR3uD,iBAAe,GAEfpwC,GAAAC,EAAAC,cAAC2qG,GAAD,CACI9xB,eAAgBA,EAChBuD,iBAAkBv7E,KAAKu7E,iBACvBW,QAASl8E,KAAKy/F,0BACdl6D,MAAOo4D,EACPtjB,cAAeA,EACfgB,IAAKr7E,KAAKq7E,OAGlBp8E,GAAAC,EAAAC,cAACi0F,GAAD,CACIz3B,UAAU,EACV9mE,GA/qFC,cAgrFDu6C,KAAM6uD,GAENh/F,GAAAC,EAAAC,cAAC4qG,GAAD,CACI9sB,OAAQj9E,KAAK2/F,kBACbziB,UAAWl9E,KAAK6/F,SAGxB5gG,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA3rFd,+BA2rF8B,YAChC/yD,GAAAC,EAAAC,cAAA,UAAK8I,IACLhJ,GAAAC,EAAAC,cAAA,OAAKgY,IAAK6yF,QAEd/qG,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CA/rFd,+BA+rF8B,UAChC/yD,GAAAC,EAAAC,cAAC8qG,GAAD,CACIpN,aAAc78F,KAAK68F,aACnBE,gBAAiBA,EACjBD,yBAA0BA,IAG9B79F,GAAAC,EAAAC,cAAC+qG,GAAD,CACI5qG,IAAKgqG,GACLj9C,cAAe48C,EACf77C,aAAcA,EACd22B,qBAAsB/jF,KAAK6+F,yBAC3BztC,yBACIpxD,KAAKq/F,2BAET/wB,YAAatuE,KAAKo/F,YAClB15D,UAAW1lC,KAAKH,MAAM6lC,UACtB48B,YAActiE,KAAKH,MAAcyiE,YACjCoe,qBAAsB1gF,KAAK8+F,kBAE/B7/F,GAAAC,EAAAC,cAACi0F,GAAD,CACIv+F,GAltFD,gBAmtFCu6C,KAAM8uD,GAENj/F,GAAAC,EAAAC,cAACgrG,GAAD,CACI/yB,SAAUp3E,KAAKk/F,UACf7nB,aAAcr3E,KAAKi/F,6BAG1BuJ,GAAyBvpG,GAAAC,EAAAC,cAACirG,GAAD,MACzB5B,GACGvpG,GAAAC,EAAAC,cAACkrG,GAAD,CACI/qG,IAAKkqG,GACLzO,kBAAmB0C,EACnBpxC,cAAe68C,EACf1O,gBAAiBx6F,KAAK++F,oBACtBpE,OAAQ36F,KAAK26F,OACbD,OAAQ16F,KAAK06F,OACbb,sBACI75F,KAAK25F,0BAETvoC,yBAA0B,SAAC36B,GACvB0xE,EAAKvnG,SAAS,CACVoxF,WAAY,EAAC,GAAO,GACpB3rE,SAAU8hF,EAAKxJ,yBACX3H,GAASpwE,MACT6P,MAIZokE,eAAgB76F,KAAK66F,eACrBG,WAAYh7F,KAAKU,MAAMs6F,WACvBC,UAAWj7F,KAAKU,MAAMu6F,YAG7BwN,GAA0BxpG,GAAAC,EAAAC,cAACirG,GAAD,MAC1B3B,GACGxpG,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACmrG,GAAD,CACIhrG,IAAKmqG,GACLzuF,UAAWA,EACXurE,mBAAoBA,EACpBC,WAAYA,EACZn6B,cAAe88C,EACfxY,mBAAoB3wF,KAAK4+F,uBACzBjY,WAAY3mF,KAAKu/F,sBACjB3O,kBACI5wF,KAAKw/F,4BAETpzF,SAAUA,EACV6uB,SAAUA,EACVi1D,eAAgBA,EAChBE,sBAAuBA,EACvBxJ,oBAAqB5mF,KAAK4mF,oBAC1B56E,YAAasuB,EACbmuD,gCACIzoF,KAAKyoF,gCAETuJ,WAAYA,IAEfa,IACG5zF,GAAAC,EAAAC,cAACy5F,GAAD,CACI1sF,KACI,kMAEJjE,MAAO,yBAKtBygG,GAA2BzpG,GAAAC,EAAAC,cAACirG,GAAD,MAC3B1B,GACGzpG,GAAAC,EAAAC,cAACorG,GAAD,CACIjrG,IAAKoqG,GACLnvE,YAAa,CACTujE,EACAC,GAEJ5jF,QAASA,EACT8uC,iBAAkBA,EAClB6E,uBACI9tD,KAAK0+F,yBAETryC,cAAe+8C,EACfh8C,aAAcA,EACdgE,yBACIpxD,KAAK4/F,0BAET1xC,0BACIluD,KAAKy+F,yBAETvyC,oBAAqBA,EACrBF,eAAgBhsD,KAAKgsD,iBAG5B28C,GAA0B1pG,GAAAC,EAAAC,cAACirG,GAAD,MAC1BzB,GACG1pG,GAAAC,EAAAC,cAACqrG,GAAD,CACIlrG,IAAKqqG,GACLt9C,cAAeg9C,GACf95E,OAAQA,EACR2nE,iBAAkBl3F,KAAKs/F,qBACvBnI,oBAAqBn3F,KAAKiuE,aAC1BhB,eAAgBA,EAChB0oB,WAAYA,IAGnBiT,GAAuC3pG,GAAAC,EAAAC,cAACirG,GAAD,MACvCxB,GACG3pG,GAAAC,EAAAC,cAACsrG,GAAD,CACInrG,IAAKsqG,GACLjlB,YAAa6B,EACb5B,YAAa2B,EACb2J,eAAgBA,EAChBvJ,WAAY3mF,KAAKg/F,0BACjBrE,OAAQ36F,KAAK26F,OACbD,OAAQ16F,KAAK06F,SAGpBmO,GAA8B5pG,GAAAC,EAAAC,cAACirG,GAAD,MAC9BvB,GACG5pG,GAAAC,EAAAC,cAACurG,GAAD,CACI1yB,eAAgBA,EAChB14E,IAAKuqG,GACLlO,aAAcA,EACdphB,qBAAsBA,EACtBqhB,mBAAoBoN,EACpBpuB,YAAaA,EACb5H,UAAWhzE,KAAKgzE,UAChB8oB,iBAAkBA,EAClBD,aAAc77F,KAAK8/F,sBACnB5P,eAAgBA,EAChB3gE,OAAQA,EACR09C,eAAgBA,EAChB0tB,OAAQ36F,KAAK26F,OACbD,OAAQ16F,KAAK06F,OACb1/E,UAAWA,EACXk0C,UAAWA,MAGhB10D,GACCyE,GAAAC,EAAAC,cAACy5F,GAAD,CAAa1sF,KAAM1R,EAAM0R,KAAMjE,MAAOzN,EAAMyN,SAGpDhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAW4yD,GAAI,CAn2Fd,+BAm2F8B,cAClC91B,GACEj9B,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,OACPmqC,QAAS5pC,KAAK0/F,YACdz3F,MAAO+Z,GAAQ69E,gBAxxFEz9F,KAAMC,WWrTzCsoG,GAAiB,UAEvB,SAASC,KACL,IAAMhjE,EAAU76B,OAAOiQ,aAAajC,QAAQ4vF,KACtCE,EAAav7B,MAAM1nC,KAAY,IAAIrqC,MAAOqQ,UAAYg6B,EAE5D,OADIijE,GAAY7tF,aAAa6qB,WAAW8iE,IACjCE,ECgEX,ICrEeC,GD6IAj/B,aAxES,SAACnrE,GAAD,MAAmC,CACvDqV,MAAOrV,EAAM27B,YAAY9F,OACzB1b,OAAQna,EAAM27B,YAAYxhB,QAAU,GACpC6qB,UAAWhlC,EAAMqlC,iBAAiBL,YAGX,SAACqlE,GACxB,MAAO,CACHC,+BAAgC,SAACC,GAC7BF,EAASrsF,GAA+BusF,OAKjC,SACfvqG,EACAqqG,EACAG,GACa,IACLF,EAAmCD,EAAnCC,+BACFG,EAAY,SAId92F,GAEA,OAAAjf,OAAA8jB,GAAA,GAAAvF,GAAAzU,EAAAia,KAAO,SAAAC,IAAA,IAAA6xF,EAAAG,EAAAhiG,UAAA,OAAAuK,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,UAGGk3F,EAAUL,KAChBI,EAA+BC,GACvBA,EALL,CAAA3xF,EAAAvF,KAAA,eAAAuF,EAAAvF,KAAA,EAKqBM,EAAE2F,WAAF,EAAAoxF,GALrB,OAAA9xF,EAAArE,GAAAqE,EAAAmuB,KAAAnuB,EAAAvF,KAAA,eAAAuF,EAAArE,GAKmC,IAAI0d,GALvC,cAAArZ,EAAAtF,OAAA,SAAAsF,EAAArE,IAAA,yBAAAqE,EAAApF,SAAAkF,OASLo+C,EAAqBpiE,OAAAkuB,GAAA,EAAAluB,CAAA,GACpBsL,EADoB,CAEvButE,aAAck9B,EAAUl9B,IACxBngB,uBAAwBq9C,EAAUr9C,IAClC0hB,yBAA0B27B,EAAU37B,IACpCa,qBAAsB86B,EAAU96B,IAChC3zE,UAAWyuG,EAAUzuG,IACrBmzE,eAAgBs7B,EAAUt7B,IAC1Be,SAAUu6B,EAAUv6B,IACpBM,eAAgBi6B,EAAUj6B,IAC1BW,YAAas5B,EAAUt5B,IACvBL,kBAAmB25B,EAAU35B,IAC7B1oB,UAAWqiD,EAAUriD,IACrBkqB,UAAWm4B,EAAUn4B,IACrB9kB,0BAA2Bi9C,EAAUj9C,IACrCogB,YAAa68B,EAAU78B,IACvB3xE,UAAWwuG,EAAUxuG,KAClBuuG,GAEDj5F,EAAW08B,KAAE/7B,IAAIs4F,EAAK,YAC5B,GAAMj5F,EAAU,CACZ,IAKMkhB,EALSnhB,GACXC,EACAiB,OAAOjB,SAASC,KAChBgB,OAAOjB,SAASE,UAEoCS,IACpD,eAEJ4kD,EAAUrkC,YAAcA,EAG5B,OAAOqkC,GAKIqU,CAIbxjB,IEjJagjD,GCOuB,SAAAntG,GAA0B,IAAvBuyC,EAAuBvyC,EAAvBuyC,QAASn3C,EAAc4E,EAAd5E,QAC9C,OACI2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAA,UAAK7F,GACL2F,GAAAC,EAAAC,cAAA,UAAKsxC,KCPXzuB,GAAUqP,GAAgBi6E,aCJjBC,GDQ4B,SAAA1rG,GACvC,OAAOZ,GAAAC,EAAAC,cAACqsG,GAAD,CAAa/6D,QAASzuB,GAAQyuB,QAASn3C,QAAS0oB,GAAQ1oB,WETpDgyG,GCQAz/B,aAHS,SAACnrE,GAAD,MAAuB,IACzB,GAEPmrE,CAGb0/B,ICVa3rG,GCmBqB,SAAAC,GAChC,IAAM8B,EAAY,CACd6vD,YAAa3xD,EAAM2xD,aASvB,OACIvyD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACVS,EAAMqM,MACHjN,GAAAC,EAAAC,cAAA,SAAOirC,QAAO,KAAAlhC,OAAOrJ,EAAMqM,OAASrM,EAAMqM,MAG7CrM,EAAM4qC,mBAAsCnqC,IAAtBT,EAAM2xD,aACzBvyD,GAAAC,EAAAC,cAAA,QACIC,UAAU,sBACVwqC,QAAS/pC,EAAM6qC,qBAEfzrC,GAAAC,EAAAC,cAAA,kBAIRF,GAAAC,EAAAC,cAAC+B,GAAAhC,EAAD,CACIuC,WAAYA,cACZD,UAAWA,aACXD,OAAO,aACPD,YAAY,aACZtC,MAAQa,EAAM2xD,YAAmB3xD,EAAM2xD,YAAX,GAC5BpwD,YAAavB,EAAM4rG,gBACnB/pG,eAAgB,CACZnC,gBA9BQ,CACpBiyD,YAAa,CACT/xD,MAAO,QACPC,gBAAiB,YA4BTiC,YACA8pC,aAAc5rC,EAAM2xD,YACpBnzD,OAAQ,KACRyD,YAAaC,QAIpBlC,EAAMrF,OAAyB,KAAhBqF,EAAMrF,OAClByE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,sBAAsBS,EAAMrF,SCjB1CkxG,GArCuB,SAAAxtG,GAMhC,IALF+J,EAKE/J,EALF+J,MAEA9J,GAGED,EAJFyrC,SAIEzrC,EAHFC,UACAwtG,EAEEztG,EAFFytG,OAEEztG,EADF6rC,UAQA,OACI9qC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAA,SACIC,UAAU,uBACVvK,GAAG,gBACH6Z,KAAK,OACLk9F,UAAQ,EACRD,OAAQA,EACRxtG,SAdS,SAACu5B,GACdA,EAAM94B,OAAOglC,MAAMl7B,OAAS,GAC5BvK,EAASu5B,EAAM94B,OAAOglC,QAalBgG,QAAS,SAAClS,GACNA,EAAM94B,OAAOI,MAAQ,QAG7BC,GAAAC,EAAAC,cAAA,SACItK,GAAG,mBACHu1C,QAAQ,gBACRhrC,UAAU,yBAEVH,GAAAC,EAAAC,cAAA,YAAO8I,MCjBjB+Z,GAAUqP,GAAgBw6E,oBAE1BC,GAA4C,CAC9C,CAAEj3G,GAAI,IAAK8W,MAAO,MAAO3M,MAAO,UAChC,CAAEnK,GAAI,IAAK8W,MAAO,MAAO3M,MAAO,YAavBurE,GAAgB,CACzBwhC,oBAAqBh5E,GAAkBkD,QACvC+1E,oBAAqBj5E,GAAkBz4B,QACvC2xG,oBAAqBl5E,GAAkBt4B,SA+W5ByxG,GA5WgC,SAAAhuG,GAMzC,IALFwnC,EAKExnC,EALFwnC,UACA48B,EAIEpkE,EAJFokE,YACAznD,EAGE3c,EAHF2c,OACApE,EAEEvY,EAFFuY,YACA01F,EACEjuG,EADFiuG,gBAEMpB,EAAWqB,eACXC,EAAsBj3F,GAAuBktD,GAC7CgqC,EAAU52F,GAAqB4sD,GAC/BiqC,IAAY91F,GAA8B,YAAhBA,EAJ9BwoC,EAmB0CC,oBAAwB,IAnBlEC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAmBKutD,EAnBLrtD,EAAA,GAmBqBstD,EAnBrBttD,EAAA,GAAAG,EAoB4CJ,oBAAwB,IApBpEK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAoBKotD,EApBLntD,EAAA,GAoBsBotD,EApBtBptD,EAAA,GAAAma,EAqBwCxa,oBAAwB,IArBhEya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAqBKkzC,EArBLjzC,EAAA,GAqBoBkzC,EArBpBlzC,EAAA,GAAAE,EAsBwC3a,oBAAwB,IAtBhE4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAsBKizC,EAtBLhzC,EAAA,GAsBoBizC,EAtBpBjzC,EAAA,GAAAG,EAuB8B/a,oBAAiB,IAvB/Cgb,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAuBK+yC,EAvBL9yC,EAAA,GAuBe+yC,EAvBf/yC,EAAA,GAAAE,EAwB0Blb,yBAA2B5+C,GAxBrD+5D,EAAAjlE,OAAAuhC,GAAA,EAAAvhC,CAAAglE,EAAA,GAwBKnnC,EAxBLonC,EAAA,GAwBe6yC,EAxBf7yC,EAAA,GAAA8yC,EAyB+CjuD,qBAAS,GAzBxDkuD,EAAAh4G,OAAAuhC,GAAA,EAAAvhC,CAAA+3G,EAAA,GAyBKE,EAzBLD,EAAA,GAyB2BE,EAzB3BF,EAAA,GAAAG,EA0BsBruD,yBAA2B5+C,GA1BjDktG,EAAAp4G,OAAAuhC,GAAA,EAAAvhC,CAAAm4G,EAAA,GA0BKr6E,EA1BLs6E,EAAA,GA0BaC,EA1BbD,EAAA,GAAAE,EA2B0CxuD,qBAAS,GA3BnDyuD,EAAAv4G,OAAAuhC,GAAA,EAAAvhC,CAAAs4G,EAAA,GA2BKE,EA3BLD,EAAA,GA2BqBE,EA3BrBF,EAAA,GAAAG,EA4B0B5uD,oBAAwB,MA5BlD6uD,EAAA34G,OAAAuhC,GAAA,EAAAvhC,CAAA04G,EAAA,GA4BKE,EA5BLD,EAAA,GA4BaE,EA5BbF,EAAA,GAAAG,EA6B0BhvD,oBAAwB,MA7BlDivD,EAAA/4G,OAAAuhC,GAAA,EAAAvhC,CAAA84G,EAAA,GA6BKE,EA7BLD,EAAA,GA6BaE,EA7BbF,EAAA,GAAAG,GA8BgCpvD,oBAC9BqtD,GAAY1xF,GAAuB,IA/BrC0zF,GAAAn5G,OAAAuhC,GAAA,EAAAvhC,CAAAk5G,GAAA,GA8BKh7E,GA9BLi7E,GAAA,GA8BgBC,GA9BhBD,GAAA,GAAAE,GAiCwCvvD,oBA5Bf,WACvB,IAAMwvD,EAAa,CACf75G,GAAI,EACJ8W,MAAO22D,EAAYG,aACnBzjE,MAAOsjE,EAAYG,cAGvB,OAAI6pC,EACO,CAACoC,GAGLrC,EAAsBqC,EAAa,GAmB5CC,IAnCAC,GAAAx5G,OAAAuhC,GAAA,EAAAvhC,CAAAq5G,GAAA,GAiCKI,GAjCLD,GAAA,GAiCoBE,GAjCpBF,GAAA,GAAAG,GAqCgD7vD,oBAEhD,IAvCA8vD,GAAA55G,OAAAuhC,GAAA,EAAAvhC,CAAA25G,GAAA,GAqCKE,GArCLD,GAAA,GAqCwBE,GArCxBF,GAAA,GAuDIG,GAbE9C,EACQwC,GAAuC7vG,MAG7B,KAAlB6vG,IAAwBO,oBAASP,IACzBA,GAA8Cv6G,IAClD,SAACuX,GAAD,OAA+BA,EAAI7M,QAIpC,GAKLqwG,GAAkC,KAAhBF,IAA6C,IAAvBA,GAAYzmG,OAcpD4mG,GAAgBhD,EAChB+C,GAZS,KAAXrB,GACoB,KAApBtB,GACmB,KAAnBF,GACW,KAAX4B,GACc,KAAd96E,SACahzB,IAAb2yB,QACW3yB,IAAX4yB,GACkB,KAAlB45E,GACsB,KAAtBmC,IACkB,KAAlBrC,GAIqByC,GAEnBE,GAAa,CACfvB,OAAQ,CACJ9hG,KAAM8V,GAAQwtF,SACdxwG,MAAOgvG,GAAU,GACjBpjE,cAAe,SAACj2C,GAAD,OAAmBs5G,EAAUt5G,EAAE+9C,cAAc1zC,QAC5DyrC,cAAc,EACdC,oBAAqB,kBAAMujE,EAAU,MAGzCz4D,GAAI,CACAtpC,KAAM,GACNslD,YAAat+B,EACbu4E,gBAAiB,SAACtyG,GAAD,OAAgBs0G,EAAMt0G,IACvCsxC,cAAc,EACdC,oBAAqB,kBAAM+iE,OAAMntG,KAGrCkL,KAAM,CACFU,KAAM,GACNslD,YAAav+B,EACbw4E,gBAAiB,SAACtyG,GAAD,OAAgB+zG,EAAQ/zG,IACzCsxC,cAAc,EACdC,oBAAqB,kBAAMwiE,OAAQ5sG,KAGvCuuG,cAAe,CACXh6G,GAAI,QACJu5C,QAASO,KAAEr6C,IAAIoxC,EAAW,SAAC3vB,EAAelhB,GAAhB,MAAgC,CACtDA,KACA8W,MAAOoK,EACP/W,MAAO+W,KAGX2sD,eAAe,EAEfv0B,mBAAoB,SAACp4B,GACjB+4F,GAAiB/4F,GACbu2F,GAASgB,GAAiB,IAElC9yG,MACI8xG,IAAY+C,IAAmBhC,EACzB,0CACA/sG,EACVtB,MAAO6vG,GACP3iG,KAAM8V,GAAQjM,MACdzU,YAAa,IACbgtC,SAAS,EACTg0B,eAGJoqC,gBAAiB,CACbxgG,KAAM8V,GAAQ0qF,gBACd1tG,MAAO0tG,EACP9hE,cAAe,SAACj2C,GAAD,OACXg4G,EAAmBh4G,EAAE+9C,cAAc1zC,QACvCyrC,cAAc,EACdC,oBAAqB,kBAAMiiE,EAAmB,MAGlDH,eAAgB,CACZtgG,KAAM8V,GAAQwqF,eACdxtG,MAAOwtG,EACP5hE,cAAe,SAACj2C,GAAD,OACX83G,EAAkB93G,EAAE+9C,cAAc1zC,QACtCyrC,cAAc,EACdC,oBAAqB,kBAAM+hE,EAAkB,MAGjDwC,kBAAmB,CACfp6G,GAAI,YACJk2C,aAAc,GACdzpC,YAAa,kBACb8sC,QAAS09D,GACT39D,mBAAoB,SAAC+gB,GACjBggD,GAAqBhgD,IAEzBlwD,MAAOiwG,GACP/iG,KAAM8V,GAAQktC,WAGlBk/C,OAAQ,CACJliG,KAAM8V,GAAQytF,WACdzwG,MAAOovG,GAAU,GACjBxjE,cAAe,SAACj2C,GAAD,OAAmB05G,EAAU15G,EAAE+9C,cAAc1zC,QAC5DyrC,cAAc,EACdC,oBAAqB,kBAAM2jE,EAAU,MAGzCzB,cAAe,CACX1gG,KAAM8V,GAAQ0tF,eACd1wG,MAAO4tG,EACPhiE,cAAe,SAACj2C,GAAD,OACXk4G,EAAiBl4G,EAAE+9C,cAAc1zC,QACrCyrC,cAAc,EACdC,oBAAqB,kBAAMmiE,EAAiB,MAGhDC,cAAe,CACX5gG,KAAM8V,GAAQlT,MACd9P,MAAO8tG,EACPliE,cAAe,SAACj2C,GAAD,OACXo4G,EAAiBp4G,EAAE+9C,cAAc1zC,QACrCyrC,cAAc,EACdC,oBAAqB,kBAAMqiE,EAAiB,MAEhDz5E,UAAW,CACPpnB,KAAM8V,GAAQsR,UACdt0B,MAAOs0B,GACPsX,cAAe,SAACj2C,GAAD,OACX65G,GAAa75G,EAAE+9C,cAAc1zC,QACjC2rC,SAAU4hE,EACV9hE,cAAe8hE,EACf7hE,oBAAqB,kBAAM8jE,GAAa,MAG5CmB,aAAc,CACV1nG,MAAO+Z,GAAQ2tF,aACflwG,MAAO6vG,GAAgB,SAAW,OAClCM,OAAO,EACPhmE,QAAS,WACL,GAAI0lE,GAoBA,OAnBAvE,EACIxgC,GAAcwhC,oBAAoB,CAC9B94E,SAAU3oB,GAAiB2oB,GAC3BC,OAAQ5oB,GAAiB4oB,GACzBpkB,MAAOg+F,EACP35E,YAAa66E,EACbp/F,UAAW89F,EACX79F,SAAU29F,EACVn5E,kBAAmB+6E,EACnBh7E,YAAa9f,GACT27F,IAEJ90F,QAASg1F,GACTpgG,MAAO69F,EACPt5E,qBAIRg6E,GAAiB,GAIjBhB,IAAY+C,IACZ/B,GAAiB,KAK7BuC,UAAW,CACP5nG,MAAO+Z,GAAQ8tF,aACfF,OAAO,EACPnwG,MAAO,OACPmqC,QAAS,WACLqkE,EAAU,IACVxB,EAAkB,IAClBE,EAAmB,IACnB0B,EAAU,IACVnB,OAAQ5sG,GACRmtG,OAAMntG,GACNusG,EAAiB,IACjBE,EAAiB,IACjBmC,GAAqB,IACrBV,GAAa,IACblB,GAAiB,GAEZjB,GACDyC,GAAiB,OA0B3BiB,GAAqB,CACvB9nG,MAAOopB,GAAgB66E,sBAAsBl0D,OAAOg4D,mBACpDJ,OAAO,EACPnwG,MAAO,SACPmqC,QAAS,WACY,KAAbojE,GACA95F,OAAO8a,KAAKhb,GAAQ,IAAIX,IAAI,CAAC,CAAC,SAAU26F,SAK9CiD,GAAoB,CACtB/jG,KAAM,GACNlN,MAAOguG,EACPpiE,cAAe,SAACj2C,GAAD,OAAmBs4G,EAAYt4G,EAAE+9C,cAAc1zC,MAAM6rE,UAGxE,OACI5rE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,WACVwW,GAAwB0sD,IACrBrjE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAACmsC,GAAgB2kE,IACjBhxG,GAAAC,EAAAC,cAACiuC,GAAiB2iE,KA3CF,WAAM,IAC9BG,EAAe7+E,GAAgB66E,sBAA/BgE,WAER,OACIjxG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,8BACR8wG,EAAWjoG,MAAO,KAGvBhJ,GAAAC,EAAAC,cAACgxG,GAAD,CACIloG,MAAOioG,EAAWE,IAClBjyG,SAAU,SAACylC,GACPuoE,EAAgBvoE,IAEpB+nE,OAAO,UAiCV0E,IAGLpxG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWvB,QAC5B/uG,GAAAC,EAAAC,cAAA,aAAQ6iB,GAAQxW,MAChBvM,GAAAC,EAAAC,cAACmxG,GAAef,GAAW/jG,MAC3BvM,GAAAC,EAAAC,cAACglF,GAAUorB,GAAWV,gBAE1B5vG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW/C,gBAC5BvtG,GAAAC,EAAAC,cAAA,aAAQ6iB,GAAQwzB,IAChBv2C,GAAAC,EAAAC,cAACmxG,GAAef,GAAW/5D,IAC3Bv2C,GAAAC,EAAAC,cAACwmD,GAAiB4pD,GAAWN,oBAGjChwG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW7C,iBAC5BztG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWnB,QAC5BnvG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWj8E,YAGhCr0B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW3C,eAC5B3tG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWzC,eAC5B7tG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWM,WAE7B5wG,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWI,eAEjC1wG,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAMw+D,GACf3uG,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLikE,GAAkB,KAGrB,KAEL5uG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRiyB,GAAgBC,OAAOE,SAG5BvyB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAb,sBACAH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACP2hC,QAAS,WACLikE,GAAkB,IAEtBpuG,MAAO,2BC1R5B8wG,GA7EG,YAAAnnG,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAA8B,IAA3B+9D,MAAH,OAAqC,SAGnDC,GAKA,gBAAAwD,GAAA,SAAA4lC,IAAA,IAAAC,EAAA3wG,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAwwG,GAAA,QAAAh4C,EAAApvD,UAAAV,OAAAglE,EAAA,IAAAniE,MAAAitD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAgV,EAAAhV,GAAAtvD,UAAAsvD,GAAA,OAAA54D,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,MAAAywG,EAAAr7G,OAAA8K,GAAA,EAAA9K,CAAAo7G,IAAArwG,KAAA6Z,MAAAy2F,EAAA,CAAAzwG,MAAAkJ,OAAAwkE,MACIhtE,MAAQ,CACJgwG,WAAW,EACXzM,QAAS,IAHjBnkG,EAMI6wG,sBAAwB,WAAM,IAClB1M,EAAYnkG,EAAKY,MAAjBujG,SAERztD,EAD2B12C,EAAKD,MAAxB22C,gBACOytD,GACfnkG,EAAKc,SAAS,CAAEqjG,QAAS,MAVjCnkG,EAaI8wG,YAAc,WAAiB,IAAA9vG,EACchB,EAAKD,MAAtC0iC,EADmBzhC,EACnByhC,eAAgBsuE,EADG/vG,EACH+vG,aACxB,QAAuBvwG,IAAnBiiC,EAA8B,OAAOsuE,EAAap2G,QAEtD,OADasS,OAAOw1B,EAAertC,OAE/B,KAAK,EACD,OAAO27G,EAAa56E,QACxB,KAAK,IACD,OAAO46E,EAAav2G,QACxB,QACI,OAAOu2G,EAAap2G,UAvBpCqF,EA2BIqsG,gBAAkB,SAAClI,GAAoB,IAC3ByM,EAAc5wG,EAAKY,MAAnBgwG,UACR5wG,EAAKc,SAAS,CAAE8vG,WAAYA,EAAWzM,aA7B/CnkG,EAgCIgxG,gBAAkB,WACdhxG,EAAKc,SAAS,CAAE8vG,WAAW,KAE3BhR,EADwB5/F,EAAKD,MAArB6/F,gBAlChB5/F,EAAA,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAAo7G,EAAA5lC,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAAo7G,EAAA,EAAAlxG,IAAA,SAAAN,MAAA,WAsCa,IACG0xG,EAAc1wG,KAAKU,MAAnBgwG,UADHK,EAEiC/wG,KAAK4wG,cAAnC3oG,EAFH8oG,EAEG9oG,MAAOqlB,EAFVyjF,EAEUzjF,YAAa5sB,EAFvBqwG,EAEuBrwG,MAFvBw1C,EAODl2C,KAAKH,MAHL42C,EAJCP,EAIDO,kBACAC,EALCR,EAKDQ,iBACAC,EANCT,EAMDS,SAEJ,OACI13C,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAACooE,GAAD,CACIn4B,KAAMshE,EACNzoG,MAAOA,EACPqlB,YAAaA,EACbmpB,kBAAmBA,EACnB/1C,MAAOA,EACP61C,aAAcv2C,KAAK8wG,gBACnBt6D,eAAgBx2C,KAAK2wG,sBACrBj6D,iBAAkBA,EAClBC,SAAUA,IAEd13C,GAAAC,EAAAC,cAACioE,EAADhyE,OAAAgzB,OAAA,GACSpoB,KAAKH,MADd,CAEIssG,gBAAiBnsG,KAAKmsG,wBA7D1CqE,EAAA,CAAqBpuG,KAAMC,aCxBzB2f,GAAUqP,GAAgB66E,sBAE1B3hC,GAAgB,CAClBymC,yBAA0BhgF,GAA2BiF,QACrDg7E,yBAA0BhgF,GAAsBgF,QAChDi7E,oBAAqBhgF,IASnBigF,GAAyBtoE,aAG7B0nE,KAH6B1nE,CAGhBqjE,ICxCAkF,GD2GAvlC,aA5ES,SAACnrE,GAAD,MAAuB,CAC3C6hC,eAAgB7hC,EAAM4kC,yBAAyB/C,eAC/C8uE,OAAQ3wG,EAAM27B,YAAY7F,oBAC1B3b,OAAQna,EAAM27B,YAAYxhB,SAyEU0vD,GAAzBsB,CA3D0B,SAAA3tE,GAQnC,IAPFokE,EAOEpkE,EAPFokE,YACAznD,EAME3c,EANF2c,OACA6qB,EAKExnC,EALFwnC,UACA2rE,EAIEnzG,EAJFmzG,OACA9uE,EAGErkC,EAHFqkC,eACA0uE,EAEE/yG,EAFF+yG,yBACAC,EACEhzG,EADFgzG,oBAYMz6F,EAAcD,GAChBxe,EAAYs5G,KACZp5G,EAAkBq5G,YAClBF,GAiBJ,OACIpyG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACgyG,GAAD,CACIzrE,UAAWA,EACX7qB,OAAQA,EACRpE,YAAaA,EACb6rD,YAAaA,EAEbuuC,aAAc7uF,GAAQutB,MACtBoH,SAAkC,QAAxBpU,EAAertC,KACzBuhD,uBAAmBn2C,EACnBiiC,eAAgBA,EAChBiU,eA1CS,SAAC5S,GACdA,EAAMl7B,OAAS,GACfsQ,GAAsB4qB,EAAM,IAAIhvC,KAAK,SAAA48G,GACjCP,EAAyB,CACrBQ,OAAQD,OAuCZ9R,YAAa,kBAAMwR,KACnBx6D,iBA5BsB,WAC9B,OAAQnU,EAAertC,MACnB,IAAK,IACL,IAAK,MACD,MAAO,CAAEuK,MAAO,UAAWkgB,WAAY,KAE3C,IAAK,MACD,MAAO,CAAElgB,MAAO,UAAWkgB,WAAY,KAE3C,QACI,MAAO,CAAElgB,MAAO,UAAWkgB,WAAY,MAkBrB+xF,QErGnBC,GCMsB,SAAAzzG,GAAe,IAC5BpF,EADgB0B,EAAY0D,EAAZ1D,MAMpC,OAAIA,GALgB1B,EAKU0B,EALVpF,OAAAgiD,GAAA,EAAAhiD,CAAA0D,GAChBmG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAA,SAAI3E,KAIL,MCZLo3G,GAAgB,SAAC/xG,GAAD,OAClBZ,GAAAC,EAAAC,cAAA,SAAA/J,OAAAgzB,OAAA,CAAQ1Z,KAAK,UAAa7O,EAA1B,CAAiCT,UAAU,SACtCS,EAAMihB,WAQT+wF,GAAoB,CAAC,EAAG,GAAI,GAAI,ICXvBC,eDcX,SAAAA,EAAYjyG,GAAY,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA8xG,IACpBhyG,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA08G,GAAA3xG,KAAAH,KAAMH,KAWVkyG,YAAc,SAACjmF,GAKX,OAJIwjD,MAAMxjD,KAENA,EAAOhsB,EAAKD,MAAMisB,MAElBhsB,EAAKD,MAAMmyG,gBAAwBlmF,EAEhC5T,KAAKujC,IAAIvjC,KAAK8tE,IAAIl6D,EAAM,GAAIhsB,EAAKD,MAAMghD,MAAQ,IAnBlC/gD,EAsBxBkhD,WAAa,SAACl1B,GAEVA,EAAOhsB,EAAKiyG,YAAYjmF,GACxBhsB,EAAKc,SAAS,CAAEkrB,SACZhsB,EAAKD,MAAMisB,OAASA,GACpBhsB,EAAKD,MAAMihD,aAAah1B,IA3BRhsB,EA+BxBmyG,UAAY,SAACt9G,GACLA,GACAA,EAAEgsE,iBAEN,IAAM70C,EAAOhsB,EAAKY,MAAMorB,KACxBhsB,EAAKkhD,WAAoB,KAATl1B,EAAchsB,EAAKD,MAAMisB,KAAOA,IAjChDhsB,EAAKY,MAAQ,CACTorB,KAAMjsB,EAAMisB,MAJIhsB,2FAQE03D,GACtBx3D,KAAKY,SAAS,CAAEkrB,KAAM0rC,EAAU1rC,wCA8B3B,IAAAjrB,EAAAb,KAAAc,EAiBDd,KAAKH,MAbLghD,GAJC//C,EAEDhM,EAFCgM,EAID+/C,OAEA/0B,EANChrB,EAMDgrB,KACAomF,EAPCpxG,EAODoxG,oBACAvlE,EARC7rC,EAQD6rC,SACA7yB,EATChZ,EASDgZ,KACAq4F,EAVCrxG,EAUDqxG,aACAC,EAXCtxG,EAWDsxG,YACAC,EAZCvxG,EAYDuxG,iBACAjzG,EAbC0B,EAaD1B,UAbCkzG,EAAAxxG,EAcDyxG,yBAdC,IAAAD,EAcmBV,GAdnBU,EAAAE,EAAA1xG,EAeD2xG,qBAfC,IAAAD,EAeeZ,GAffY,EAAAE,EAAA5xG,EAgBD6xG,sBAhBC,IAAAD,KAkBCE,EAAa94F,EAAKpR,OAElBmqG,EAAU7yG,KAAKH,MAAMmyG,gBACrBl4F,GAAQ84F,IAAejmE,EACvB3sC,KAAKH,MAAMgzG,QAEXC,EAAkBF,EAAa,GAErC,OACI3zG,GAAAC,EAAAC,cAAA,OACIC,UAAW2zG,KACP,+BACA,CAAEC,8BAA+BF,GACjC1zG,GAEJshB,MAAO1gB,KAAKH,MAAM6gB,OAElBzhB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uCACXH,GAAAC,EAAAC,cAACozG,EAAD,CACI3oE,QAAS,WACAwoE,GACLvxG,EAAKmgD,WAAWl1B,EAAO,IAE3B6d,UAAWyoE,GAEV,MAITnzG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UACXH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,aACXY,KAAKH,MAAMozG,SAAU,IACrBd,EACGlzG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAAA,SACIuP,KACwB,KAApB1O,KAAKU,MAAMorB,KACL,OACA,SAEV3tB,SAAU,SAAAxJ,GACN,IAAMu5C,EAAMv5C,EAAEiK,OAAOI,MACf8sB,EAAO/e,OAAOmhC,GAAO,EAC3B,GAAY,KAARA,EACA,OAAOrtC,EAAKD,SAAS,CAAEkrB,KAAMoiB,IAEjCrtC,EAAKD,SAAS,CACVkrB,KAAMjrB,EAAKkxG,YAAYjmF,MAG/B9sB,MACwB,KAApBgB,KAAKU,MAAMorB,KACL,GACA9rB,KAAKU,MAAMorB,KAAO,EAE5Bkf,OAAQhrC,KAAKiyG,UACbhnE,WAAY,SAAAt2C,GAEQ,KAAZA,EAAE60E,OACY,KAAd70E,EAAE40E,SAEF1oE,EAAKoxG,gBAMrBhzG,GAAAC,EAAAC,cAAA,QAAMC,UAAU,gBAAgB0sB,EAAO,GACxC,IACF6mF,EACG1zG,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACK,MAAO,IACRhC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,eACXyhD,GAAS,IAGlB,MAGR5hD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAACszG,EAAD,CACI7oE,QAAS,WACAipE,GACLhyG,EAAKmgD,WAAWl1B,EAAO,IAE3B6d,UAAWkpE,GAEV,MAGRX,GACGjzG,GAAAC,EAAAC,cAAA,QAAMC,UAAU,gCACZH,GAAAC,EAAAC,cAAA,UACIhB,SAAU,SAAAxJ,GAAC,OACP09G,EAAiBtlG,OAAOpY,EAAEiK,OAAOI,SAErCA,MAAO2tC,GAENklE,GAAkBv9G,IAAI,SAACi8B,EAAQ4iB,GAAT,OACnBl0C,GAAAC,EAAAC,cAAA,UAAQG,IAAK6zC,EAAKn0C,MAAOuxB,GACpBA,OAOrBtxB,GAAAC,EAAAC,cAAA,QAAMC,UAAU,eACZH,GAAAC,EAAAC,cAAA,uBACayzG,EAAa,EAAI,IAAM,GADpC,KAC0C,IACtC3zG,GAAAC,EAAAC,cAAA,YAAOyzG,cAxKLvwG,cELjBupC,GAAmD,SAAA1tC,GAG5D,OADEA,EADFg+B,QAIQj9B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uCAAf,2BAML,MAuHE8zG,GAAe,SAACl0G,GAAD,OACxBC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,iBACXJ,EADL,IACYC,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,eAAgB2xC,IAAI,kBC7IzCpqB,GDoDsB,SAAA/wB,GAwB/B,IAvBF+yC,EAuBE/yC,EAvBF+yC,QACA/xB,EAsBEhhB,EAtBFghB,KACA7R,EAqBEnP,EArBFmP,MACAi0B,EAoBEpjC,EApBFojC,QACA6P,EAmBEjzC,EAnBFizC,WACAC,EAkBElzC,EAlBFkzC,SACAC,EAiBEnzC,EAjBFmzC,YACAC,EAgBEpzC,EAhBFozC,kBACA1xC,EAeE1B,EAfF0B,MACA2xC,EAcErzC,EAdFqzC,aACAE,EAaEvzC,EAbFuzC,eACAjtC,EAYEtG,EAZFsG,UACAmtC,EAWEzzC,EAXFyzC,gBACAC,EAUE1zC,EAVF0zC,aACAM,EASEh0C,EATFg0C,WACAL,EAQE3zC,EARF2zC,iBACAG,EAOE9zC,EAPF8zC,WACAF,EAME5zC,EANF4zC,oBACAymE,EAKEr6G,EALFq6G,sBACAC,EAIEt6G,EAJFs6G,qBAEA9yD,GAEExnD,EAHFu6G,eAGEv6G,EAFFwnD,KACAgzD,EACEx6G,EADFw6G,eAEMC,EAAsB,SAACvyF,GAAD,OACxBmyF,GACIl0G,GAAAC,EAAAC,cAAA,OACIC,UAAS,6CAAA8J,OAA+C8X,EAA/C,MAERmyF,IAIb,OACIl0G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACV6I,GAAShJ,GAAAC,EAAAC,cAAA,UAAK8I,GACdsrG,EAAoB,OACrBt0G,GAAAC,EAAAC,cAAC0tC,GAAA,EAAD,CACIztC,UAAS,uDAAA8J,OACL9J,GAAwB,IAE5BysC,QAASA,EACT/xB,KAAMA,EACN4G,MAAO,CAAEiqE,OAAQ,QACjBrqC,IAAKA,EACLxU,gBAAiBhyB,EAAKpR,OAAS,GAAKoR,EAAKpR,OAAS,EAAI,GACtD4jC,qBAAsBD,EACtBO,WAAYA,EACZ1Q,QAASA,EACTs3E,kBAAmBnnE,EACnBT,iBAAkBA,GAClB0nE,eAAgBA,EAChBlnE,oBAAqB0lE,GACrB/lE,WAAYA,EACZqnE,qBACIA,IAA8C,EAElDK,WAAW,EACXznE,SAAUA,EACVG,aAAcA,EACdE,eAAgBA,EAChBS,WAAYA,IAEfymE,EAAoB,WAEnB/4G,GAASyxC,GACPhtC,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAOgkC,EACPxsC,MAAM,SACNmqC,QAASsC,IAGhBQ,GAAuBF,GACpBvtC,GAAAC,EAAAC,cAACkuC,GAAA,QAAD,CACIjuC,UAAU,6BACV0a,KAAM0yB,EACN9uB,QAAS6uB,EACTe,SAAUb,GAETC,KEjHNgnE,GAnBS,SACpBpzD,EACAu4B,GAEA,IAAMlrC,EAAc,SAACh5C,GACb2rD,EAAI7wC,UAAY6wC,EAAI7wC,QAAQkkG,SAASh/G,EAAEiK,SACvCi6E,KAIR5lC,qBAAU,WAGN,OAFA8M,SAASmlC,iBAAiB,QAASv3C,GAE5B,WACHoS,SAASolC,oBAAoB,QAASx3C,OCMrCimE,GAAgB,SAACxlG,GAC1B,OAAQA,GACJ,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,aACL,IAAK,YACL,IAAK,KACL,IAAK,YACL,IAAK,wBACD,MAAO,UAEX,IAAK,kBACL,IAAK,kBACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,WACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,KACL,IAAK,MACL,IAAK,UACD,MAAO,SAEX,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,aACL,IAAK,UACL,IAAK,gBACL,IAAK,aACL,IAAK,aACL,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,WACD,MAAO,UAEX,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACD,MAAO,YAEX,IAAK,cACD,MAAO,SAEX,QACI,MAAO,cCpFJylG,GDQgD,SAAA31G,GAGzD,IAFFkQ,EAEElQ,EAFFkQ,OACAM,EACExQ,EADFwQ,KAEA,OACIzP,GAAAC,EAAAC,cAAA,OAAKC,UAAS,iBAAA8J,OAAmB0qG,GAAcxlG,KAC3CnP,GAAAC,EAAAC,cAAA,OAAKC,UAAU,WACfH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,SAASwX,GAAexI,EAAQM,MEMtDsT,GAAUqP,GAAgB8a,aAkbjBA,GAjauB,SAAAjuC,GAahC,IAZFoQ,EAYEpQ,EAZFoQ,SACAwlG,EAWE51G,EAXF41G,yBACAzuE,EAUEnnC,EAVFmnC,iBACA7qC,EASE0D,EATF1D,MACA06B,EAQEh3B,EARFg3B,cACAra,EAOE3c,EAPF2c,OACAynD,EAMEpkE,EANFokE,YACAyxC,EAKE71G,EALF61G,yBACA5tE,EAIEjoC,EAJFioC,yBACA6tE,EAGE91G,EAHF81G,cACA7+E,EAEEj3B,EAFFi3B,sBACAmM,EACEpjC,EADFojC,MACE2d,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAAAG,EAEoCJ,qBAAkB,GAFtDK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEK20D,EAFL10D,EAAA,GAEkB20D,EAFlB30D,EAAA,GAAAma,EAG4Bxa,qBAAkB,GAH9Cya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAGKg3C,EAHL/2C,EAAA,GAGgBw6C,EAHhBx6C,EAAA,GAAAE,EAI8B3a,oBAAiB,IAJ/C4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAIKmzC,EAJLlzC,EAAA,GAIemzC,EAJfnzC,EAAA,GAAAG,EAM4C/a,yBAE5C5+C,GARA45D,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAMKj3B,EANLk3B,EAAA,GAMsBk6C,EANtBl6C,EAAA,GAUIm6C,EAASr1D,kBAAuB,MAEtC00D,GAAgBW,EAAQ,WAChBtsC,GAAQnJ,GAAQ,KAGxB,IAAM01C,EAAehmG,EAAS0M,UAgKxBu5F,EAAiB,WACnB,MAAO,CACH,CACIlrF,OAAQrH,GAAQqjB,iBAAiB1J,WACjC64E,SAAU,uBACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQqjB,iBAAiBn2B,YACjCslG,SAAU,qCACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQqjB,iBAAiBqnE,gBACjC8H,SAAU,yBACV5nE,YAAY,EACZllB,KAAM,SAAA/R,GAAA,IAAGu3B,EAAHv3B,EAAGu3B,SAAH,OACFjuC,GAAAC,EAAAC,cAAA,cAAA+J,OACQgkC,EAAS3H,MAAMj3B,SAASC,QAAQK,UADxC,8BAAA1F,OAEMgkC,EAAS3H,MAAMj3B,SAASC,QAAQM,aAI9C,CACIwa,OAAQrH,GAAQqjB,iBAAiB9a,QACjCiqF,SAAU,wCACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQqjB,iBAAiB7L,UACjCg7E,SAAU,+BACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQqjB,iBAAiBv2B,MACjC0lG,SAAU,+BACV5nE,YAAY,KAKlB6nE,EAAgC,SAACvnE,GACnC,OACIjuC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAA,SAAOC,UAAU,wBACbH,GAAAC,EAAAC,cAAA,aACIF,GAAAC,EAAAC,cAAA,UACK,CACG6iB,GAAQ2Z,WACR3Z,GAAQ0yF,QACR1yF,GAAQwzB,GACRxzB,GAAQ5T,QACV9Z,IAAI,SAACwnE,EAAYx6B,GAAb,OACFriC,GAAAC,EAAAC,cAAA,MAAIG,IAAKgiC,GAAQw6B,KAErB78D,GAAAC,EAAAC,cAAA,aAGRF,GAAAC,EAAAC,cAAA,aACKm1G,EACGA,EAAahgH,IAAI,SAACyW,EAAUu2B,GACxB,OACIriC,GAAAC,EAAAC,cAACquC,GAAA,SAAD,CAAUluC,IAAKgiC,GACXriC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,sBACVH,GAAAC,EAAAC,cAAA,UAAK4L,EAASC,gBACd/L,GAAAC,EAAAC,cAAA,UAAK4L,EAAS2M,QACdzY,GAAAC,EAAAC,cAAA,UACK2K,GACGiB,EAASi1B,mBAGjB/gC,GAAAC,EAAAC,cAAA,UAAK4L,EAASqD,YAM9BnP,GAAAC,EAAAC,cAAA,UACIF,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ2yF,kBAkDzC,OACI11G,GAAAC,EAAAC,cAAA,OAAKC,UAAS,iBAAA8J,OAAmBwN,GAAM4qB,GAAS,OAAS,KACrDriC,GAAAC,EAAAC,cAAA,SAAOC,UAAU,wBACbH,GAAAC,EAAAC,cAAA,aACIF,GAAAC,EAAAC,cAAA,UACK,CACG6iB,GAAQ2Z,WACR3Z,GAAQ0yF,QACR1yF,GAAQwzB,GACRxzB,GAAQ5T,QACV9Z,IAAI,SAACwnE,EAAYx6B,GAAb,OACFriC,GAAAC,EAAAC,cAAA,MAAIG,IAAKgiC,GAAQw6B,KAGrB78D,GAAAC,EAAAC,cAAA,aAGRF,GAAAC,EAAAC,cAAA,aACKm1G,EACGA,EAAahgH,IAAI,SAACyW,EAAUu2B,GACxB,OACIriC,GAAAC,EAAAC,cAACquC,GAAA,SAAD,CAAUluC,IAAKgiC,GACXriC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,sBACVH,GAAAC,EAAAC,cAAA,UAAK4L,EAASC,gBACd/L,GAAAC,EAAAC,cAAA,UACKyX,GACG7L,EAAS2M,OACT,gBAGRzY,GAAAC,EAAAC,cAAA,UACK2K,GACGiB,EAASi1B,mBAGjB/gC,GAAAC,EAAAC,cAAA,UACIF,GAAAC,EAAAC,cAACy1G,GAAD,CACIxmG,OAAQrD,EAASqD,QAAU,GAC3BM,KAAK,oBAGbzP,GAAAC,EAAAC,cAAA,UACKyW,GACG0sD,IAEArjE,GAAAC,EAAAC,cAAA,OACIC,UAAU,0BACV+X,IACI7U,GACI,uBAGR2xC,IAAI,UACJrK,QAAS,WACLg1B,GAASmJ,GACTmsC,EAAe5yE,MAI1BymC,GAAUksC,IAAgB3yE,GACvBriC,GAAAC,EAAAC,cAAA,OACImhD,IAAK+zD,EACLj1G,UAAU,UAEVH,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACLwqE,EACIrpG,GAEJopG,GAAS,GACTv1C,GAAQ,KAIR,kCAWpC3/D,GAAAC,EAAAC,cAAA,UACIF,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ2yF,gBAK5BjE,GAzX2B,WAChC,IAAMnB,EAAa,CACfsF,gBAAiB,CACb3oG,KAAM,GACNlN,MAAOguG,EACPpiE,cAAe,SAACj2C,GAAD,OACXs4G,EAAYt4G,EAAE+9C,cAAc1zC,SAGpC81G,kBAAmB,CACf7sG,MAAO,UACP2nG,OAAO,EACPnwG,MAAO,OACPmqC,QAAS,WACY,KAAbojE,IACAmH,GAAS,GACTL,EAAyB,CACrBn4E,WAAYqxE,OAM5B+H,WAAY,CACR9sG,MAAO,SACP2nG,OAAO,EACPnwG,MAAO,SACPmqC,QAAS,WACLuqE,GAAS,MAIrB,OACIl1G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAMshE,GACfzxG,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLuqE,GAAS,KAGZ,KAELl1G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SAAS4iB,GAAQm2B,YAC9Bl5C,GAAAC,EAAAC,cAAA,KAAGC,UAAU,aAAa4iB,GAAQ4nD,UAClC3qE,GAAAC,EAAAC,cAACmsC,GAAgBikE,EAAWsF,iBAE5B51G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAWwF,YAC7B91G,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAWuF,sBAwU3BE,GA/Td/1G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM50C,IAAUwnB,GAAQizF,UACjCh2G,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL1U,IACA+3E,EAAY,MAGf,KAGLhuG,GAAAC,EAAAC,cAAA,QAAMC,UAAU,mBACZH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SACR,oDAELH,GAAAC,EAAAC,cAAC+1G,GAAD,CAAc16G,MAAOA,IAErByE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,OACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACPxI,MAAM,SACNmqC,QAAS,WACLqjE,EAAY,IACZ/3E,IACAi/E,GAAS,MAIjBl1G,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,eACPxI,MAAM,OACNmqC,QAAS,WACLqjE,EAAY,IACZ/3E,IACAi/E,GAAS,SAW7Bl1G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM/J,EAAiB38B,OAAS,GACzCzJ,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL1U,IACA+3E,EAAY,MAGf,KAGLhuG,GAAAC,EAAAC,cAAA,QAAMC,UAAU,qBACZH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SACR,mDAELH,GAAAC,EAAAC,cAACg2G,GAAD,CACIr7F,KAAMurB,EACNgH,gBAAgB,EAChBO,YAAY,EACZxtC,UAAU,sBACVysC,QAAS0oE,IACTpoE,aAAc,SAAArzC,GAAA,IAAGo0C,EAAHp0C,EAAGo0C,SAAH,OACVjuC,GAAAC,EAAAC,cAAA,WAAMs1G,EAA8BvnE,QAIhDjuC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACPxI,MAAM,SACNmqC,QAAS,WACL1U,IACAi/E,GAAS,MAIjBl1G,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,YACPxI,MAAM,OACNmqC,QAAS,WACD5G,GACA+wE,EAAyB,CACrBqB,oBAAqB9mG,EAASzZ,GAC9BwgH,oBAAqBrI,EACrB9zG,YAAa8pC,EAAgBh4B,eAC7BsqG,SAAUz6F,SAmGlC5b,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,KACiC,KAA7BjJ,QAC6B7lC,IAA7B6lC,GAGJlnC,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,WACkC,YAA7BgnC,GACGlnC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ1nB,SACb2E,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQuzF,eAIU,UAA7BpvE,GACGlnC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQxnB,OACbyE,GAAAC,EAAAC,cAAA,SAAI60G,GAAiBhyF,GAAQwzF,cAIzCv2G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACPxI,MAAM,SACNmqC,QAAS,WACLuqE,GAAS,GACTh/E,IACAypC,GAAQ,GACRw1C,OAAmB9zG,WCxV7C0hB,GAAUqP,GAAgBokF,0BA4EjBC,GA3D8B,SAAAx3G,GAGvC,IAFFusE,EAEEvsE,EAFFusE,sBACA37D,EACE5Q,EADF4Q,MACEmwC,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GA0CF,OACIlgD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACLg1B,GAAQ,KAGX58C,GAAQ2zF,YA5Cb12G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM24B,GACf9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,KAGX,KAEL3/D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR4iB,GAAQ4zF,qBAEb32G,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ1oB,SACZ2F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW4iB,GAAQ6zF,aAEhC52G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,kBAAMg1B,GAAQ,IACvBn/D,MAAM,SACNwI,MAAM,WAEVhJ,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,OACNwI,MAAM,YACN2hC,QAAS,WACL6gC,EAAsB,CAClB37D,kBCnD9BkT,GAAUqP,GAAgBokF,0BAqHjBK,GAnGwC,SAAA53G,GAKjD,IAJF63G,EAIE73G,EAJF63G,gCACA98G,EAGEiF,EAHFjF,YACA+8G,EAEE93G,EAFF83G,4BAEEC,EAAA/3G,EADFg4G,oBACE,IAAAD,EADa,GACbA,EAAAh3D,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAAAG,EAEsCJ,oBAAiBg3D,GAFvD32D,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEK62D,EAFL52D,EAAA,GAEmB62D,EAFnB72D,EAAA,GAIIikC,EAAsB,SAACxkF,GACzB,IAAIxE,EAAQ,GAKZ,OAJK4N,GAAcpJ,GACTqJ,GAAarJ,KACnBxE,EAAQwnB,GAAQ2gE,iBAFOnoF,EAAQwnB,GAAQogE,WAIpC5nF,GAGL67G,EACe,KAAjBF,GAAuB3yB,EAAoB2yB,GAEzC5G,EAAa,CACf4G,aAAc,CACVn3G,MAAOm3G,EACPvrE,cAAe,SAACj2C,GAAD,OACXyhH,EAAgBzhH,EAAE+9C,cAAc1zC,QACpCxE,MAAOgpF,EAAoB2yB,IAG/BxG,aAAc,CACV1nG,MAAO,YACPxI,MAAO,OACPmwG,OAAO,EACPhmE,QAAS,WACLosE,EAA4BG,GAC5BJ,EAAgC,CAC5BlhH,GAAIoE,EACJ6V,MAAOqnG,MAKnBpB,WAAY,CACR9sG,MAAO,SACPxI,MAAO,SACPmwG,OAAO,EACPhmE,QAAS,WACLg1B,GAAQ,MAsCpB,OACI3/D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uBACXH,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACLg1B,GAAQ,KAGX58C,GAAQs0F,WAtCbr3G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM24B,GACf9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,KAGX,KAEL3/D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR4iB,GAAQ4zF,qBAEb32G,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQu0F,gBACZt3G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW4iB,GAAQw0F,aAEhCv3G,GAAAC,EAAAC,cAACmsC,GAAgBikE,EAAW4G,cAE5Bl3G,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQy0F,gBAEZx3G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sCACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAWwF,YAC5BsB,GACGp3G,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAWI,mBChEnD3tF,GAAUqP,GAAgBqlF,yBAE1B35C,GAA6C,CAC/C,CACIloE,GAAImtB,GAAQ20F,gBAAgB55C,cAAcC,GAC1CrxD,MAAOqW,GAAQ20F,gBAAgB55C,cAAcC,GAC7Ch+D,MAAOgjB,GAAQ20F,gBAAgB55C,cAAcC,IAEjD,CACInoE,GAAImtB,GAAQ20F,gBAAgB55C,cAAcE,IAC1CtxD,MAAOqW,GAAQ20F,gBAAgB55C,cAAcE,IAC7Cj+D,MAAOgjB,GAAQ20F,gBAAgB55C,cAAcE,KAEjD,CACIpoE,GAAImtB,GAAQ20F,gBAAgB55C,cAAcrpD,GAC1C/H,MAAOqW,GAAQ20F,gBAAgB55C,cAAcrpD,GAC7C1U,MAAOgjB,GAAQ20F,gBAAgB55C,cAAcrpD,KAgBrD,SAASyvE,GAAkBnkF,GACvB,IAAIxE,EAAQ,GAMZ,OALK4N,GAAcpJ,GAEPmK,GAAYnK,GAAO,KAC3BxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOghD,kBAFvCrgE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOuoE,WAIpC5nF,EAGX,SAAS4oF,GAAiBpkF,GACtB,IAAIxE,EAAQ,GAMZ,OALK4N,GAAcpJ,GAEPmK,GAAYnK,GAAO,KAC3BxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOghD,kBAFvCrgE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOuoE,WAIpC5nF,EAGX,SAASgpF,GAAoBxkF,GACzB,IAAIxE,EAAQ,GAMZ,OALK4N,GAAcpJ,GAEPqJ,GAAarJ,KACrBxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAO2oE,qBAFvChoF,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOuoE,WAIpC5nF,EAGX,SAASo8G,GAAiB53G,GACtB,IAAIxE,EAAQ,GAIZ,OAHK4Y,GAAoBpU,KACrBxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOuoE,YAEpC5nF,EAGX,SAASooF,GAAc5jF,GACnB,IAAIxE,EAAQ,GAIZ,OAHK4Y,GAAoBpU,KACrBxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOuoE,YAEpC5nF,EAGX,SAASq8G,GAAiB73G,GACtB,IAAIxE,EAAQ,GAMZ,OALK4N,GAAcpJ,GAEPmK,GAAYnK,GAAO,KAC3BxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOi9F,kBAFvCt8G,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOuoE,WAIpC5nF,EAGX,SAASu8G,GAAqB/3G,GAC1B,IAAIxE,EAAQ,GAIZ,OAHK4N,GAAcpJ,KACfxE,EAAQwnB,GAAQ20F,gBAAgB98F,OAAOm9F,sBAEpCx8G,EAGX,ICnHKy8G,GDsgBUN,GAnZ0B,SAAAz4G,GAUnC,IATF6pE,EASE7pE,EATF6pE,OACAnJ,EAQE1gE,EARF0gE,QACAs4C,EAOEh5G,EAPFg5G,WACArxE,EAME3nC,EANF2nC,mBACAvR,EAKEp2B,EALFo2B,wBACAoR,EAIExnC,EAJFwnC,UACAyxE,EAGEj5G,EAHFi5G,sBACA9gF,EAEEn4B,EAFFm4B,YACAisC,EACEpkE,EADFokE,YACErjB,EAC0CC,oBAAiB,IAD3DC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACKutD,EADLrtD,EAAA,GACqBi4D,EADrBj4D,EAAA,GAAAG,EAE4CJ,oBAAiB,IAF7DK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEKotD,EAFLntD,EAAA,GAEsBotD,EAFtBptD,EAAA,GAAAma,EAGoCxa,oBAAiB,IAHrDya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAGK29C,EAHL19C,EAAA,GAGkB29C,EAHlB39C,EAAA,GAAAE,EAI4B3a,oBAAqC,IAJjE4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAIK09C,EAJLz9C,EAAA,GAIc09C,EAJd19C,EAAA,GAAAG,EAK8B/a,oBAAqC,IALnEgb,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAKK5sD,EALL6sD,EAAA,GAKeu9C,EALfv9C,EAAA,GAAAE,EAMoDlb,oBAAiB,IANrEmb,EAAAjlE,OAAAuhC,GAAA,EAAAvhC,CAAAglE,EAAA,GAMKs9C,EANLr9C,EAAA,GAM0Bs9C,EAN1Bt9C,EAAA,GAAA8yC,EAOsDjuD,oBACpD,IARFkuD,EAAAh4G,OAAAuhC,GAAA,EAAAvhC,CAAA+3G,EAAA,GAOKyK,EAPLxK,EAAA,GAO2ByK,EAP3BzK,EAAA,GAAAG,EAU8CruD,oBAAiB,IAV/DsuD,EAAAp4G,OAAAuhC,GAAA,EAAAvhC,CAAAm4G,EAAA,GAUKuK,EAVLtK,EAAA,GAUuBuK,EAVvBvK,EAAA,GAAAE,EAWwCxuD,oBAExC,IAbAyuD,EAAAv4G,OAAAuhC,GAAA,EAAAvhC,CAAAs4G,EAAA,GAWKsK,EAXLrK,EAAA,GAWoBsK,EAXpBtK,EAAA,GAAAG,EAckC5uD,oBAChC,IAfF6uD,EAAA34G,OAAAuhC,GAAA,EAAAvhC,CAAA04G,EAAA,GAcKjuB,EAdLkuB,EAAA,GAciBmK,EAdjBnK,EAAA,GAAAG,EAiB8BhvD,oBAAiB,IAjB/CivD,EAAA/4G,OAAAuhC,GAAA,EAAAvhC,CAAA84G,EAAA,GAiBKxyG,EAjBLyyG,EAAA,GAiBegK,GAjBfhK,EAAA,GAAAG,GAkBwCpvD,oBAAiB,IAlBzDqvD,GAAAn5G,OAAAuhC,GAAA,EAAAvhC,CAAAk5G,GAAA,GAkBK8J,GAlBL7J,GAAA,GAkBoB8J,GAlBpB9J,GAAA,GAAAE,GAoBsCvvD,oBAAiB,IApBvD0vD,GAAAx5G,OAAAuhC,GAAA,EAAAvhC,CAAAq5G,GAAA,GAoBK6J,GApBL1J,GAAA,GAoBmB2J,GApBnB3J,GAAA,GAAAG,GAqBgD7vD,oBAAiB,IArBjE8vD,GAAA55G,OAAAuhC,GAAA,EAAAvhC,CAAA25G,GAAA,GAqBKyJ,GArBLxJ,GAAA,GAqBwByJ,GArBxBzJ,GAAA,GAAA0J,GAuBwCx5D,qBACrCi4D,GAxBHwB,GAAAvjH,OAAAuhC,GAAA,EAAAvhC,CAAAsjH,GAAA,GAuBKE,GAvBLD,GAAA,GAuBqBE,GAvBrBF,GAAA,GA2BF1lE,qBAAU,WACkB,KAApBy5D,GAA6C,KAAnBF,GAC1B2L,GAAW,GAAAjvG,OACJwjG,EACEoM,OAAO,GACPC,qBAHE7vG,OAGoBsjG,EACtBuM,oBACAtuG,QAAQ,IAAInB,OAAO,SAAU,OAG3C,CAACojG,EAAiBF,IArCnB,IAuCMt3G,GAAkB2wC,EAAlB3wC,KAAMoE,GAAYusC,EAAZvsC,QAER0/G,GACmC,KAArCx1B,GAAoB6zB,IACmB,KAAvCl0B,GAAkBupB,IACmB,KAArCtpB,GAAiBopB,IACc,KAA/BoK,GAAiBvpG,IACU,KAA3Bu1E,GAAc20B,IACiB,KAA/BV,GAAiBn7G,GAEfu9G,GACmC,KAArCz1B,GAAoB6zB,IACmB,KAAvCl0B,GAAkBupB,IACmB,KAArCtpB,GAAiBopB,IACc,KAA/BoK,GAAiBvpG,IACsB,KAAvC0pG,GAAqBuB,IAEnB/I,GAAa,CACfgI,QAAS,CACL1iH,GAAI,SACJu5C,QAASO,KAAEr6C,IAAIoxC,EAAW,SAAC3vB,EAAelhB,GAAhB,MAAgC,CACtDA,KACA8W,MAAOoK,EACP/W,MAAO+W,KAEXo4B,mBAAoB,SAAC+gB,GACjBsoD,EAAWtoD,IAGflwD,MAAOu4G,EACPrrG,KAAM8V,GAAQjM,MACdvb,MAAOqlF,EACPvd,eAGJkqC,eAAgB,CACZtgG,KAAM,QACNlN,MAAOwtG,EACP5hE,cAAe,SAACj2C,GACZyiH,EAAkB5lG,GAAsB7c,EAAE+9C,cAAc1zC,SAG5DxE,MAAOk9G,GAGXL,YAAa,CACTnrG,KAAM,UACNlN,MAAOm4G,EACDxoE,KAAE/7B,IAAIyjB,EAAa,yBAA0B,IAC7CghF,EACNzsE,cAAe,SAACj2C,GACZ2iH,EAAev0B,KAAQxsB,OAAO5hE,EAAE+9C,cAAc1zC,SAGlDxE,MAAO28G,EAAwB,GAAKW,EACpCntE,WAAUwsE,GAGdzK,gBAAiB,CACbxgG,KAAM,cACNlN,MAAO0tG,EACP9hE,cAAe,SAACj2C,GACZg4G,EACIn7F,GAAsB7c,EAAE+9C,cAAc1zC,SAM9CxE,MAAOo9G,GAGXvqG,SAAU,CACNxY,GAAI,gBACJk2C,aAAc,GACdqD,QAAS2uB,GACT5uB,mBAAoB,SAAC+gB,GACjBuoD,EAAYvoD,IAGhBlwD,MAAOqO,EACPnB,KAAM8V,GAAQ3U,SACd7S,MAAOw9G,GAGXt8G,SAAU,CACN7G,GAAI,WACJqX,KAAM,sBACNlN,MAAOm4G,EACDxoE,KAAE/7B,IAAIyjB,EAAa,cAAe,IAClC36B,EACNkvC,cAAe,SAACj2C,GACZ,IAAM45C,EAAa55C,EAAE+9C,cAAc1zC,MAG/B,iBAAiBsJ,KAAKimC,IACtB4pE,GAAY5pE,GACZ8pE,GAAiB,KAEjBA,GAAiB,4DAGzB79G,MAAO28G,EAAwB,GAAKiB,GACpCztE,WAAUwsE,GAGdmB,aAAc,CACVzjH,GAAI,iBACJqX,KAAM,iBACNlN,MAAOm4G,EACDxoE,KAAE/7B,IAAIyjB,EAAa,cAAe,IAClCiiF,GACN1tE,cAAe,SAACj2C,GACR,IAAI2U,OAAO,kBAAkBhB,KAAK3T,EAAE+9C,cAAc1zC,QAClDu5G,GAAgB5jH,EAAE+9C,cAAc1zC,QAMxCxE,MAAO28G,EAAwB,GAAKqB,GACpC7tE,WAAUwsE,GAGdxH,aAAc,CACV1nG,MAAO+Z,GAAQ+oE,YACftrF,MAAO,OACPmwG,OAAO,EACPhmE,QAAS,WACLiuE,EAAwB10B,GAAkBupB,IAC1CqL,EAAoBv0B,GAAoB6zB,IACxCM,EAAuBv0B,GAAiBopB,IACxCyL,EAAiBrB,GAAiBvpG,IAClC6qG,EAAct1B,GAAc20B,IAC5Bc,GAAiBxB,GAAiBn7G,IAClC+8G,GAAqB1B,GAAqBuB,KAEtCU,KACC7B,GACDyB,IAEA1B,EAAW,CACPnhG,MAAOzC,GACHikG,GAEJ3oG,UAAW89F,EACX79F,SAAU29F,EACV19F,MAAOuoG,EACPhqG,SAAUiG,GACNjG,GAEJioG,SAAU55G,IAEdkjE,GAAQ,KAERq6C,IACC9B,GACAyB,GAeMK,IAAyB9B,IAChCD,EAAW,CACP5B,SAAU3mE,KAAE/7B,IAAIyjB,EAAa,cAAe,IAC5CtgB,MAAO,GACPnH,UAAW89F,EACX79F,SAAU29F,EACV19F,MAAO6/B,KAAE/7B,IAAIyjB,EAAa,yBAA0B,IACpDhpB,SAAUiG,GACNjG,KAGRuxD,GAAQ,KAxBRs4C,EAAW,CACPnhG,MAAOzC,GACHikG,GAEJ3oG,UAAW89F,EACX79F,SAAU29F,EACV19F,MAAOuoG,EACPhqG,SAAUiG,GACNjG,GAEJioG,SAAUgD,KAEd15C,GAAQ,MAiBpBixC,UAAW,CACP5nG,MAAO+Z,GAAQk3F,YACfz5G,MAAO,SACPmwG,OAAO,EACPhmE,QAAS,WACLwtE,EAAkB,IACdzK,EAAmB,IACnB2K,EAAe,IACfE,EAAW,IACXC,EAAY,IACZ74C,GAAQ,GACR+4C,EAAuB,IACvBE,EAAwB,IACxBE,EAAoB,IACpBE,EAAiB,MAI7BkB,eAAgB,CACZlxG,MAAO+Z,GAAQk9E,UACfz/F,MAAO,OACPmwG,OAAO,EACPhmE,QAAS,WACLtV,IACA8iF,EAAkB,IACdzK,EAAmB,IACnB2K,EAAe,IACfE,EAAW,IACXC,EAAY,IACZ74C,GAAQ,GACR+4C,EAAuB,IACvBE,EAAwB,IACxBE,EAAoB,IACpBE,EAAiB,OA8CjC,OACIh5G,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM24B,GACf9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,GACRw4C,EAAkB,IACdzK,EAAmB,IACnB2K,EAAe,IACfE,EAAW,IACXC,EAAY,IACZc,GAAgB,IAChB35C,GAAQ,GACR+4C,EAAuB,IACvBE,EAAwB,IACxBE,EAAoB,IACpBE,EAAiB,IACrBQ,GAAqB,MAGxB,KAELx5G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SAAS4iB,GAAQ20F,gBAAgB1uG,QAE5CkvG,GACEl4G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM,0BACNlN,MAAO,MACPnK,GAAI,MACJ44C,QAASmrE,GACTlrE,YAAa,WACTmrE,IAAiBD,OAIzB35G,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM,qBACNlN,MAAO,MACPnK,GAAI,MACJ44C,SAAUmrE,GACVlrE,YAAa,WACTmrE,IAAiBD,QAMjC35G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4BACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW7C,iBAC5BztG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW8H,aAE3BuB,IACIzB,GACGl4G,GAAAC,EAAAC,cAACglF,GAAUorB,GAAWgI,SAG1Bt4G,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW+I,eAIpCr5G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4BACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW/C,gBAC5BvtG,GAAAC,EAAAC,cAACwmD,GAAiB4pD,GAAWliG,WAE3B8pG,GAAyByB,IACvB35G,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW7zG,YAIxCuD,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW4iB,GAAQ20F,gBAAgBr9G,SAChD2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWM,WAC7B5wG,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWI,iBAIxCz6G,IACGoE,KAAY0oB,GAAQnoB,cA1HA,WAAM,IAC1B3E,EAAkB2wC,EAAlB3wC,KAAMoE,EAAYusC,EAAZvsC,QACd,OACI2F,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,QAAMl6C,GAAQoE,IAAY0oB,GAAQnoB,eAElCoF,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLtV,IACA8iF,EAAkB,IACdzK,EAAmB,IACnB2K,EAAe,IACfE,EAAW,IACXC,EAAY,IACZ74C,GAAQ,GACR+4C,EAAuB,IACvBE,EAAwB,IACxBE,EAAoB,IACpBE,EAAiB,MAGxB,KAELh5G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRlK,IAAS0C,EAAcqjF,QAClBj5D,GAAQo3F,iBAAiBC,cACzBr3F,GAAQo3F,iBAAiBE,gBAGnCr6G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW9F,GAExB2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAW4J,mBAyFrCI,KE1gBVv3F,GAAUqP,GAAgBqlF,yBAoJjB8C,GAjI2B,SAAAt7G,GAQpC,IAPFu7G,EAOEv7G,EAPFu7G,WACAvsE,EAMEhvC,EANFgvC,SACAwsE,EAKEx7G,EALFw7G,qBACAnkF,EAIEr3B,EAJFq3B,8BACAqQ,EAGE1nC,EAHF0nC,mBACA/Q,EAEE32B,EAFF22B,wBACA8kF,EACEz7G,EADFy7G,aACE16D,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAEMjqD,EAAkB0wC,EAAlB1wC,KAAMoE,EAAYssC,EAAZtsC,QAwGd,OACI2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACXH,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACLg1B,GAAQ,KAGX58C,GAAQ43F,WAAWC,YA3GxB56G,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM24B,GACf9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,KAGX,KAEL3/D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR4iB,GAAQ43F,WAAWE,cAExB76G,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ43F,WAAWtgH,SACvB2F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,YACR4iB,GAAQ43F,WAAWG,UAGxB96G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACLg1B,GAAQ,GACR86C,GAAqB,IAEzBj6G,MAAM,SACNwI,MAAM,WAEVhJ,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,OACNwI,MAAM,YACN2hC,QAAS,WACD+vE,IACApkF,IACAmkF,GAAqB,IAEzB96C,GAAQ,GACR66C,EAAW,CACPt+F,KAAMtjB,EAAMmiH,OACZprG,UAAW+/B,KAAE/7B,IACTs6B,EAASA,SACT,YACA,IAEJr+B,SAAU8/B,KAAE/7B,IACRs6B,EAASA,SACT,WACA,IAEJooE,SAAU3mE,KAAE/7B,IACRs6B,EAASA,SACT,WACA,aA0D/Bh4C,GAAQoE,GA5CT2F,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,QAAMl6C,GAAQoE,IAAY0oB,GAAQnoB,eAElCoF,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL/U,MAGH,KAEL51B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRlK,IAAS0C,EAAcqjF,QAClBj5D,GAAQo3F,iBAAiBC,cACzBr3F,GAAQo3F,iBAAiBE,gBAGnCr6G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW9F,GAExB2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACPxI,MAAO,SACPmqC,QAAS,WACL/U,YC9H1B7S,GAAUqP,GAAgBqlF,yBAmNjBuD,GA/LoC,SAAA/7G,GAS7C,IARFkQ,EAQElQ,EARFkQ,OACAqrG,EAOEv7G,EAPFu7G,WACAvsE,EAMEhvC,EANFgvC,SACAtH,EAKE1nC,EALF0nC,mBAEArQ,GAGEr3B,EAJF22B,wBAIE32B,EAHFq3B,+BACAmkF,EAEEx7G,EAFFw7G,qBACAC,EACEz7G,EADFy7G,aACE16D,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAEwBvZ,EAAlB1wC,KAAkB0wC,EAAZtsC,QA2Jd,OACI2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACC,YAAXgP,EACGnP,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACLg1B,GAAQ,KAGX58C,GAAQ43F,WAAWM,aAGxBj7G,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACLg1B,GAAQ,KAGX58C,GAAQ43F,WAAWO,YAnI5Bl7G,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM24B,GACf9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,KAGX,KAEO,YAAXxwD,EACGnP,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR4iB,GAAQo4F,YAAYN,cAEzB76G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WACR4iB,GAAQo4F,YAAY9gH,SAEzB2F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,YACR4iB,GAAQo4F,YAAYL,UAGzB96G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,kBAAMg1B,GAAQ,IACvBn/D,MAAM,SACNwI,MAAM,WAEVhJ,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,OACNwI,MAAM,YACN2hC,QAAS,WACD+vE,IACApkF,IACAmkF,GAAqB,IAEzB96C,GAAQ,GACR66C,EAAW,CACPt+F,KAAMtjB,EAAMwiH,QACZzrG,UAAW+/B,KAAE/7B,IACTs6B,EAASA,SACT,YACA,IAEJr+B,SAAU8/B,KAAE/7B,IACRs6B,EAASA,SACT,WACA,IAEJooE,SAAU3mE,KAAE/7B,IACRs6B,EAASA,SACT,WACA,WAQxBjuC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR4iB,GAAQs4F,WAAWR,cAExB76G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WACR4iB,GAAQs4F,WAAWhhH,SAExB2F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,YACR4iB,GAAQs4F,WAAWP,UAGxB96G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,kBAAMg1B,GAAQ,IACvBn/D,MAAM,SACNwI,MAAM,WAGVhJ,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,OACNwI,MAAM,YACN2hC,QAAS,WACD+vE,IACApkF,IACAmkF,GAAqB,IAEzB96C,GAAQ,GACR66C,EAAW,CACPt+F,KAAMtjB,EAAM0iH,OACZ3rG,UAAW+/B,KAAE/7B,IACTs6B,EAASA,SACT,YACA,IAEJr+B,SAAU8/B,KAAE/7B,IACRs6B,EAASA,SACT,WACA,IAEJooE,SAAU3mE,KAAE/7B,IACRs6B,EAASA,SACT,WACA,eCrK1ClrB,GAAUqP,GAAgBqlF,yBAyQjB8D,GAtOoC,SAAAt8G,GAa7C,IAZFwnC,EAYExnC,EAZFwnC,UACAwxE,EAWEh5G,EAXFg5G,WACArxE,EAUE3nC,EAVF2nC,mBACAvR,EASEp2B,EATFo2B,wBACAqR,EAQEznC,EARFynC,mBACApQ,EAOEr3B,EAPFq3B,8BACA/6B,EAME0D,EANF1D,MACA67B,EAKEn4B,EALFm4B,YACAojF,EAIEv7G,EAJFu7G,WACA7zE,EAGE1nC,EAHF0nC,mBACA/Q,EAEE32B,EAFF22B,wBACAytC,EACEpkE,EADFokE,YACErjB,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAAAG,EAEoCJ,qBAAkB,GAFtDK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEKm7D,EAFLl7D,EAAA,GAEoBm7D,EAFpBn7D,EAAA,GAAAma,EAGoDxa,qBAClD,GAJFya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAGKihD,EAHLhhD,EAAA,GAG4B+/C,EAH5B//C,EAAA,GAAAE,EAM4C3a,qBAAkB,GAN9D4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAMK+gD,EANL9gD,EAAA,GAMsB+gD,EANtB/gD,EAAA,GAQF7mB,qBAAU,WACwB,IAA9BtN,EAAmBj9B,OAAek2D,GAAQ,GAAQA,GAAQ,GAC1D86C,EAAqB/zE,EAAmBj9B,OAAS,IAClD,CAACi9B,IACJ,IAAM0uE,EAASr1D,kBAAuB,MAEtC00D,GAAgBW,EAAQ,WAChBuG,GAAiBC,GAAmB,KAuL5C,OACI57G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,cACA,qBAAV5E,GApLDyE,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM24B,GACf9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,GACRrpC,MAGH,KAGLt2B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBAAiB4iB,GAAQm2B,YAEtCl5C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sCACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACLg1B,GAAQ,GACRrpC,KAEJ91B,MAAM,SACNwI,MAAM,WAGVhJ,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACLg1B,GAAQ,GACR87C,GAAa,GACbnlF,KAEJ91B,MAAM,OACNwI,MAAM,+BAsJrB09B,EAAmBj9B,OAAS,GA7C7BzJ,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAMurE,GACf17G,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL8vE,GAAqB,GACrBnkF,MAGH,KAGLt2B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qCACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBACR,6BAEJ2T,GAAQ4yB,IACL1mC,GAAAC,EAAAC,cAACg2G,GAAD,CACItpE,QAjHb,CACH,CACIxiB,OAAQrH,GAAQjM,MAChBy+F,SAAU,YACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQnH,OAChB25F,SAAU,WACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQwqF,eAChBgI,SAAU,WACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQ0qF,gBAChB8H,SAAU,YACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQq1F,YAChB7C,SAAU,QACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQ5T,OAChBomG,SAAU,aACV5nE,YAAY,GAEhB,CACIvjB,OAAQ,GACRmrF,SAAU,GACV5nE,YAAY,EACZllB,KAAM,SAACwlB,GACH,OACIjuC,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,OACIC,UAAU,aACV+X,IAAK7U,GAAU,aACf2xC,IAAI,UACJrK,QAAS,WACLixE,GAAoBD,MAI3BA,GACG37G,GAAAC,EAAAC,cAAA,OAAKmhD,IAAK+zD,EAAQj1G,UAAU,UACxBH,GAAAC,EAAAC,cAAC27G,GAAD,CACIpB,qBACIA,EAEJxsE,SAAUA,EACVusE,WAAYA,EACZlkF,8BACIA,EAEJqQ,mBAAoBA,EACpB/Q,wBACIA,EAEJ8kF,cAAc,IAGlB16G,GAAAC,EAAAC,cAAC47G,GAAD,CACI3sG,OAAQugC,KAAE/7B,IACNs6B,EAASA,SACT,aACA,IAEJA,SAAUA,EACVusE,WAAYA,EACZC,qBACIA,EAEJC,cAAc,EACd/zE,mBAAoBA,EACpB/Q,wBACIA,EAEJU,8BACIA,SAgChBzb,KAAM6rB,EACNvmC,UAAU,sBACVitC,gBAAgB,EAChBO,YAAY,EACZJ,aAAc7G,EACd+G,oBAAqB,KAI7BztC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8CACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACL8vE,GAAqB,GACrBnkF,KAEJ91B,MAAM,SACNwI,MAAM,cAYtBhJ,GAAAC,EAAAC,cAAC67G,GAAD,CACI3kF,YAAaA,EACb8gF,uBAAuB,EACvBpvC,OAAQ0yC,EACR77C,QAAS87C,EACTp4C,YAAaA,EACb58B,UAAWA,EACXwxE,WAAYA,EACZrxE,mBAAoBA,EACpBvR,wBAAyBA,MC3QpB2mF,eAEjB,SAAAA,EAAYp7G,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAi7G,IACtBn7G,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA6lH,GAAA96G,KAAAH,KAAMH,KAFVq7G,gBAC0B,EAAAp7G,EAM1Bq7G,kBAAoB,WAChBp7D,SAASmlC,iBAAiB,YAAaplF,EAAKs7G,qBAPtBt7G,EAU1BglD,qBAAuB,WACnB/E,SAASolC,oBAAoB,YAAarlF,EAAKs7G,qBAXzBt7G,EAc1Bu7G,cAAgB,SAACC,GACbx7G,EAAKo7G,WAAaI,GAfIx7G,EAkB1Bs7G,mBAAqB,SAAC1jF,GAAe,IACzBmhD,EAAa/4E,EAAKD,MAAlBg5E,SACJ/4E,EAAKo7G,aAAep7G,EAAKo7G,WAAWvH,SAASj8E,EAAM94B,SACnDi6E,KAlBJ/4E,EAAKo7G,WAAa,KAHIp7G,0EA0BtB,OAAOb,GAAAC,EAAAC,cAAA,OAAKmhD,IAAKtgD,KAAKq7G,eAAgBr7G,KAAKH,MAAMihB,iBA5BVze,mCCJhCk5G,GCOyB,SAAAr9G,GAKlC,IAJFs9G,EAIEt9G,EAJFs9G,aACAC,EAGEv9G,EAHFu9G,UACA36F,EAEE5iB,EAFF4iB,SACA46F,EACEx9G,EADFw9G,gBACEz8D,EACwBC,qBAAkB,GAD1CC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAAAG,EAE0BJ,oBAAiB,OAF3CK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEKh/B,EAFLi/B,EAAA,GAEao8D,EAFbp8D,EAAA,GAIIq8D,IAAgB96F,GAClB7hB,GAAAC,EAAAC,cAAA,OACIuhB,MAAO,CAAEJ,OAAQynD,EAASznD,EAAS,OACnClhB,UAAS,sCAETH,GAAAC,EAAAC,cAAA,OACImhD,IAAK,SAAC0jB,GAAD,YACO1jE,IAAR0jE,GAA6B,OAARA,EACf23C,EAAU33C,EAAIhI,wBAAwB17C,QACtC,MAEVlhB,UAAU,6CAET0hB,IAYb,OACI7hB,GAAAC,EAAAC,cAAA,OACIC,UAAW2zG,KAAG,kBAAD39G,OAAAg/D,GAAA,EAAAh/D,CAAA,MAAA8T,OACLwyG,GAAoBA,KAG5Bz8G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0CACVq8G,GAAa1zC,GAAUyzC,EAAeA,EAEtC16F,GACG7hB,GAAAC,EAAAC,cAAA,QACIC,UAAS,+CAAA8J,OACL6+D,EACM,mDACA,IAEVn+B,QAlBA,kBAAOm+B,GAJvB4zC,EAAU,YACV/8C,GAASmJ,IAGwCnJ,GAASmJ,IAmB1C58D,KAAK,UAPT,MAcPywG,IClEEC,GCOV,SAAA39G,GAAgC,IAA7B5E,EAA6B4E,EAA7B5E,QAASwiH,EAAoB59G,EAApB49G,cACb,OACI78G,GAAAC,EAAAC,cAAC48G,GAAD,CACIL,gBAAgB,mBAChBD,WAAS,EACTD,aACIv8G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,8BACR48G,KAAS1iH,EAAS,CACfoP,OAAQozG,GAAgC,OAKpD78G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,4BAA4B9F,KCkC/C0oB,GAAUqP,GAAgBokF,0BAU1B/3F,GAAU,CACZ,CAAE/R,MAAO,cAAYrM,IAAK,MAC1B,CAAEqM,MAAO,uBAAkBrM,IAAK,uBAChC,CAAEqM,MAAO,MAAOrM,IAAK,uBACrB,CAAEqM,MAAO,YAAUrM,IAAK,wBACxB,CAAEqM,MAAO,UAAWrM,IAAK,kBACzB,CAAEqM,MAAO,wBAAgBrM,IAAK,kBAC9B,CAAEqM,MAAO,QAASrM,IAAK,iBACvB,CAAEqM,MAAO,gBAAcrM,IAAK,+BAC5B,CAAEqM,MAAO,UAAWrM,IAAK,uBACzB,CAAEqM,MAAO,mBAAiBrM,IAAK,mCAC/B,CAAEqM,MAAO,SAAUrM,IAAK,wBActBirE,GAAgB,CAClBE,sBAAuBrsD,GAAmB6X,QAC1CgmF,oBAAqB19F,GACrBw3F,gCAAiC13F,GAA6B4X,QAC9DimF,wCAAyCz9F,GACzC09F,4BAA6BnnF,GAAyBiB,QACtD89E,yBAA0B9+E,GAAsBgB,QAChDf,iBACAC,yBACAf,0BACAgoF,8BAA+B9mF,GAAsBW,QACrDV,iCACAV,2BACAP,4BAsCEmhF,eACF,SAAAA,EAAY51G,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAy1G,IACtB31G,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAqgH,GAAAt1G,KAAAH,KAAMH,KA0BV00G,eAAiB,WAAM,IACXjyC,EAAgBxiE,EAAKD,MAArByiE,YACR,MAAO,CACH,CACIj5C,OAAQ6pF,GAAalxF,GAAQ2Z,YAC7B64E,SAAU,KACV5nE,YAAY,EACZvsB,MAAO,KAEX,CACIgJ,OAAQ6pF,GAAalxF,GAAQ9S,aAC7BslG,SAAU,sBACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQ0qF,iBAC7B8H,SAAU,aACV5nE,YAAY,EACZllB,KAAM,SAAAxpB,GAAoB,IAAjBc,EAAiBd,EAAjBc,MACL,GAAIA,EAAO,KAAAlG,EAIHkG,EAFA4P,EAFG9V,EAEH8V,UACAC,EAHG/V,EAGH+V,SAEJ,OACI5P,GAAAC,EAAAC,cAACk9G,GAAD,CACI/iH,QAAO,GAAA4P,OAAK0F,EAAL,KAAA1F,OAAkB2F,GACzBitG,cAAe,KAI3B,MAAO,KAGf,CACIzyF,OAAQ6pF,GAAalxF,GAAQuI,SAC7BiqF,SAAU,UACV5nE,YAAY,EACZllB,KAAM,SAAA/R,GAAoB,IAAjB3W,EAAiB2W,EAAjB3W,MACL,GAAIA,EAAO,KAAAnG,EAMHmG,EAHA6rB,EAHGhyB,EAGHgyB,OACAC,EAJGjyB,EAIHiyB,OACAg3B,EALGjpD,EAKHipD,KAGJ,OACI7iD,GAAAC,EAAAC,cAACk9G,GAAD,CACI/iH,QAAO,GAAA4P,OAAK2hB,EAAL,KAAA3hB,OAAe4hB,EAAf,KAAA5hB,OAAyB44C,GAChCg6D,cAAe,KAI3B,MAAO,KAGf,CACIzyF,OAAQ6pF,GAAalxF,GAAQwX,WAC7Bg7E,SAAU,iBACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQlT,OAC7B0lG,SAAU,gBACV5nE,YAAY,GAEhB,CACIvjB,OAAQrH,GAAQs6F,aAChB9H,SAAU,cACV5nE,YAAY,EACZwC,KAAMx5B,GAAwB0sD,GAC9BjiD,MAAO,GACPqH,KAAM,SAAAzO,GAAA,IAAGi0B,EAAHj0B,EAAGi0B,SAAH,OACFjuC,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,QACNwI,MAAO+Z,GAAQs6F,aACf1yE,QAAS,kBAAM9pC,EAAKy8G,WAAWrvE,QAI3C,CACI7jB,OAAQ,GACRmrF,SAAU,GACV5nE,YAAY,EACZwC,KAAMx5B,GAAwB0sD,GAC9BjiD,MAAO,GACPqH,KAAM,SAACwlB,GACH,OACIjuC,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,OACIC,UAAU,aACV+X,IAAK7U,GAAU,kBACf2xC,IAAI,UACJrK,QAAS,WACL9pC,EAAKs2G,gBACDznE,KAAE/7B,IACEs6B,EAASA,SACT,gBACA,KAGRptC,EAAK08G,qBACDtvE,EAASuvE,UACTvvE,MAIXptC,EAAKY,MAAMg8G,cACR58G,EAAKY,MAAMuzG,cACP/mE,EAASuvE,WACTx9G,GAAAC,EAAAC,cAACw9G,GAAD,CACI9jC,SAAU,kBACN/4E,EAAKc,SAAS,CACV87G,cAAc,MAItBz9G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UACXH,GAAAC,EAAAC,cAACy9G,GAAD,CACI9tG,MAAO6/B,KAAE/7B,IACLs6B,EAASA,SACT,gBACA,IAEJu9B,sBACI3qE,EAAKD,MACA4qE,wBAIbxrE,GAAAC,EAAAC,cAAC09G,GAAD,CACI5jH,YAAa01C,KAAE/7B,IACXs6B,EACA,cACA,IAEJgpE,aAAcvnE,KAAE/7B,IACZs6B,EAASA,SACT,gBACA,IAEJ8oE,4BACIl2G,EACKk2G,4BAETD,gCACIj2G,EAAKD,MACAk2G,kCAGb92G,GAAAC,EAAAC,cAAA,KACIyqC,QAAS,WACL9pC,EAAKD,MAAMu8G,8BACP,CACI9G,SAAU3mE,KAAE/7B,IACRs6B,EACA,cACA,IAEJp+B,MAAO,GACPF,UAAW,GACXC,SAAU,GACVkH,MAAO,GACP+mG,WAAY,OAKvB96F,GAAQ+6F,2BApM3Bj9G,EAgN1Bs2G,gBAAkB,SAACtnG,GACfhP,EAAKc,SAAS,CAAEu1G,aAAcrnG,KAjNRhP,EA+N1Bk2G,4BAA8B,SAACgH,GAC3Bl9G,EAAKc,SAAS,CAAEo8G,2BAhOMl9G,EAkO1Bm9G,oBAAsB,SAACtoH,GACnBmL,EAAKc,SAAS,CAAEs8G,SAAUvoH,EAAEiK,OAAOI,SAnObc,EAsO1Bq9G,yBAA2B,WAAM,IAEZ3iH,EACbsF,EAAKD,MADL2rE,UAAahxE,MAEjB,YAAc8F,IAAV9F,GAAuBA,IAAUwnB,GAAQo7F,UAAsB,KAAV5iH,EAEjDyE,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,UAAgB9uC,IAAV9F,GAAuBA,IAAUwnB,GAAQo7F,UAE/Cn+G,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL9pC,EAAKD,MAAMo8G,wBAGd,KAGLh9G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iBAAiB4iB,GAAQq7F,eACtCp+G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW4iB,GAAQs7F,mBAChCr+G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACL9pC,EAAKD,MAAMo8G,uBAEfx8G,MAAM,SACNwI,MAAM,WAEVhJ,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,OACNwI,MAAM,eACN2hC,QAAS,WACL9pC,EAAKD,MAAM4qE,sBAAsB,CAC7B37D,MAAOhP,EAAKY,MAAMy1G,qBAUpC,KAAV37G,EAEIyE,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAgB,KAAV50C,GACfyE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL9pC,EAAKD,MAAMo8G,wBAGd,KAELh9G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,eACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACV,uCAELH,GAAAC,EAAAC,cAAA,YACIF,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQu7F,kBAGhBt+G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACL9pC,EAAKD,MAAMo8G,uBAEfx8G,MAAM,SACNwI,MAAM,mBAzB9B,GAlRsBnI,EAoT1B09G,mCAAqC,WAAM,IAAAjyC,EAGnCzrE,EAAKD,MADL2rE,UAAapvC,EAFsBmvC,EAEtBnvC,OAAQ5hC,EAFc+wE,EAEd/wE,MAGzB,OAAIA,IAAUwnB,GAAQy7F,WAEdx+G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAM50C,IAAUwnB,GAAQy7F,YACjCx+G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,mBAAmB5E,GAChCyE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACL9pC,EAAKD,MAAMo8G,uBAEfx8G,MAAM,SACNwI,MAAM,cAO1Bm0B,IAAWpa,GAAQ07F,aAEfz+G,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAMhT,IAAWpa,GAAQ07F,cAClCz+G,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL9pC,EAAKD,MAAMq8G,4CAGd,KAGLj9G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACV,iCAELH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,mBACR4iB,GAAQ27F,wBAEb1+G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SACRU,EAAKY,MAAMs8G,uBAEhB/9G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UAAU4iB,GAAQy0F,gBAC/Bx3G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,WACL9pC,EAAKD,MAAMq8G,2CAEfz8G,MAAM,SACNwI,MAAM,mBA7B9B,GA3UsBnI,EAiX1B08G,qBAAuB,SAACtvE,EAAkB7W,GACtCv2B,EAAKc,SAAS,CACV87G,cAAe58G,EAAKY,MAAMg8G,aAC1BzI,YAAa/mE,EACb7W,iBArXkBv2B,EAyX1B89G,kCAAoC,SAAC1oH,EAAcoE,GAC/C,OACI2F,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,QAAMl6C,GAAQoE,IAAY0oB,GAAQnoB,eAElCoF,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACL9pC,EAAKD,MAAMg1B,4BAGd,KAEL51B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRlK,IAAS0C,EAAcqjF,QAClBj5D,GAAQq3F,cACRr3F,GAAQs3F,gBAGlBr6G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW9F,GAExB2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACPxI,MAAO,SACPmqC,QAAS,WACL9pC,EAAKD,MAAMg1B,iCApZb/0B,EA6Z1B+9G,kBAAoB,SAACC,GAA+B,IACxCx7C,EAAgBxiE,EAAKD,MAArByiE,YAER,OAAO1sD,GAAwB0sD,GACzB,CACI91B,aAAcsxE,EACdvxE,gBAAiB7uB,GACjBgvB,oBAAqB1qB,GAAQ+7F,cAEjC,IApaNj+G,EAAKY,MAAQ,CACTg8G,cAAc,EACdzI,aAAc,EACdkC,aAAc,GACd+G,SAAU,GACV7mF,YAAa,GACb2mF,sBAAuB,IAE3Bl9G,EAAKy8G,WAAaz8G,EAAKy8G,WAAW/7G,KAAhBpL,OAAAqL,GAAA,EAAArL,QAAAqL,GAAA,EAAArL,CAAA0K,KAVIA,qFActBoT,OAAO8qG,SAAW,kBAAMC,KAExB,IAAMxkG,EAASsmC,SAASm+D,uBAAuB,YAAY,GAErDD,EAAW,WACT/qG,OAAOirG,YAAc,IACjB1kG,GAAQA,EAAO2kG,UAAUttG,IAAI,UAE7B2I,GAAQA,EAAO2kG,UAAU7nD,OAAO,8CA8LrCrpB,GACP,IAAI8/D,EAAmB,GAEnBA,EADoB,kBAAb9/D,EACIA,EAEAyB,KAAE/7B,IAAIs6B,EAAU,KAAM,IAErC,IAAMmxE,EAAc,IAAIhsG,IAAI,CAAC,CAAC,SAAU26F,KACxC95F,OAAO8a,KAAKhb,GAAQqrG,qCA6Mf,IAAAx9G,EAAAb,KAAAc,EAQDd,KAAKH,MANLy+G,EAFCx9G,EAEDw9G,OAFCC,EAAAz9G,EAGD09G,cAAiBn5E,EAHhBk5E,EAGgBl5E,iBAAkBc,EAHlCo4E,EAGkCp4E,yBACnC4tE,EAJCjzG,EAIDizG,yBACal5F,EALZ/Z,EAKD0qE,UAAa3wD,OACbsa,EANCr0B,EAMDq0B,sBACAmtC,EAPCxhE,EAODwhE,YAPCm8C,EASqBz+G,KAAKH,MAAM6+G,gBAA7BxpH,EATHupH,EASGvpH,KAAMoE,EATTmlH,EASSnlH,QAER8rC,EAAsBhwC,OAAAsnC,GAAA,EAAAtnC,CACrBkpH,EAAO/4E,MAAMjxC,IAAI,SAAAqqH,GAAM,IAETrwG,EACTqwG,EADAp5E,MAASj3B,SAEb,MAAO,CACHic,QAAS,CACLq0F,IAAK,GACL98D,KAAMxzC,EAASC,QAAQgc,QAAQS,UAAY,GAC3C6zF,WAAY,GACZh0F,OAAQvc,EAASC,QAAQgc,QAAQM,QAAU,GAC3CE,WAAYhe,OACRuB,EAASC,QAAQgc,QAAQQ,YAC3B3N,WACF0N,OAAQxc,EAASC,QAAQgc,QAAQO,QAErCg0F,QAAS,CACL5vG,YAAaZ,EAASC,QAAQW,YAC9Bra,GAAI,GACJua,qBAAsB,GACtB2vG,WAAY,GACZC,SAAU,GACVC,QAAS,GACTC,UAAW,IAEf3wG,QAAS,CACLO,MAAOR,EAASC,QAAQO,MACxBqwG,IAAK,GACLtqH,GAAIyZ,EAAS+zB,eACb+8E,OAAQ9wG,EAASC,QAAQQ,MACzBswG,OAAQ,GACRC,OAAQ,IAEZC,iBAAkB,GAClBhjG,aAAcjO,EAASI,KACvB7Z,GAAIyZ,EAAS+zB,eACbgmC,WAAY,CACRh7D,SAAUiB,EAASC,QAAQlB,SAC3BmyG,YAAalxG,EAASC,QAAQC,UAC9BI,UAAWN,EAASC,QAAQK,UAC5B/Z,GAAIyZ,EAAS+zB,eACbxzB,SAAUP,EAASC,QAAQM,SAC3B4wG,aAAcnxG,EAASC,QAAQ2zE,UACzB,CACI08B,IAAK,GACL98D,KAAMxzC,EAASC,QAAQ2zE,UAAUl3D,SACjC6zF,WAAY,GACZh0F,OAAQvc,EAASC,QAAQ2zE,UAAUr3D,OACnCE,WACIzc,EAASC,QAAQ2zE,UAAUn3D,WAC/BD,OAAQxc,EAASC,QAAQ2zE,UAAUp3D,aAEvCxqB,GAEVo/G,SAAU,GACVC,WAAY,GACZvxG,OAAQ7Y,EAAgBqqH,SACxB5kG,UAAW2jG,EAAGp5E,MAAMvqB,UAAU1mB,IAAI,SAAAurH,GAAG,OAAAzqH,OAAAkuB,GAAA,EAAAluB,CAAA,GAC9ByqH,EAD8B,CAEjCzxG,OAAQuwG,EAAGp5E,MAAMq1C,oBAMjC,OACI37E,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACVY,KAAKm9G,2BAENl+G,GAAAC,EAAAC,cAAC+1G,GAAD,CAAc16G,MAAO8jH,EAAOhlH,UAE3B0G,KAAKw9G,qCACLx9G,KAAK49G,kCAAkC1oH,EAAMoE,GAE9C2F,GAAAC,EAAAC,cAAC2gH,GAAD,CACIp6E,UAAW1lC,KAAKH,MAAM6lC,UACtB48B,YAAaA,EACb40C,WAAYl3G,KAAKH,MAAMq3G,WACvBrxE,mBAAoB7lC,KAAKH,MAAMgmC,mBAC/BvR,wBAAyBt0B,KAAKH,MAAMy0B,wBACpCF,uBAAwBp0B,KAAKH,MAAMu0B,uBACnCqlF,WAAYz5G,KAAKH,MAAM45G,WACvB9zE,mBAAoB3lC,KAAKH,MAAM8lC,mBAC/BpQ,8BACIv1B,KAAKH,MAAM01B,8BAEf/6B,MAAOwF,KAAKH,MAAMkgH,oBAClB1pF,YAAar2B,KAAKU,MAAM21B,YACxBuP,mBAAoB5lC,KAAKH,MAAM6+G,gBAC/B7pF,wBAAyB70B,KAAKH,MAAMg1B,0BAGvC9hB,GAAQqyB,IACLnmC,GAAAC,EAAAC,cAAC6gH,GAAD,KACI/gH,GAAAC,EAAAC,cAACg2G,GAAD//G,OAAAgzB,OAAA,CACIyjB,QAAS7rC,KAAKu0G,iBACdz6F,KAAMsrB,EACNhmC,UAAU,sBACVitC,gBAAgB,EAChBO,YAAY,EACZT,aAAc,SAAAjyB,GAA8B,IAA3BgzB,EAA2BhzB,EAA3BgzB,SAAU5L,EAAiBpnB,EAAjBonB,MACvB,OACIriC,GAAAC,EAAAC,cAAC8gH,GAAD,CACI3xG,SAAU4+B,EACV5L,MAAOA,EACP0yE,cACInzG,EAAKhB,MAAM2+G,cAAchkH,MAE7B8nE,YAAaA,EACbwxC,yBACIjzG,EAAKhB,MACAs8G,4BAET92E,iBAAkBA,EAClB7qC,MAAOqG,EAAKhB,MAAM2+G,cAAchkH,MAChC06B,cAAer0B,EAAKhB,MAAMq1B,cAC1B6+E,yBACIA,EAEJl5F,OAAQA,GAAU,GAClBsrB,yBACIA,EAEJhR,sBACIA,MAKZn1B,KAAK69G,kBAAkBz4E,cAtjBf/iC,cC3IzBozG,GD0sBA5pC,aA7nBS,SAACnrE,GAAD,MAAuB,CAC3Cw/G,sBAAuBx/G,EAAM4kC,yBAC7BkmC,UAAW9qE,EAAM27B,YACjB3I,SAAUhzB,EAAMqlC,iBAAiBrS,SACjC8qF,cAAe99G,EAAM0lC,wBACrBT,mBAAoBjlC,EAAMqlC,iBAAiBJ,mBAC3Co6E,oBAAqBr/G,EAAMqlC,iBAAiBvrC,MAC5CkkH,gBAAiBh+G,EAAMqlC,iBAAiBH,mBACxC04E,OAAQ59G,EAAM+kC,aAAaD,eAunB3B+kC,GAFWsB,CAGb4pC,IE7rBIlrC,GAAgB,CAClB41C,wBAAyBvrF,GAAgBqB,QACzCmqF,6BAA8B7sF,GAAqB0C,QACnDoqF,wBAAyBhsF,GAAgB4B,QACzCqqF,sBAAuBnsF,GAAc8B,QACrCjC,uBCrBWusF,GDyDA10C,aAhDS,SAACnrE,GAAD,MAAuB,CAC3C8/G,eAAgB9/G,EAAMqlC,iBAAiBL,UACvCg5E,gBAAiBh+G,EAAMqlC,iBAAiBF,mBACxCy4E,OAAQ59G,EAAM+kC,aAAaD,aAAaD,MACxC8rE,OAAQ3wG,EAAM27B,YAAY7F,sBA4CU+zC,GAAzBsB,CA5BiC,SAAA3tE,GAO1C,IANFsiH,EAMEtiH,EANFsiH,eACAl+C,EAKEpkE,EALFokE,YACA69C,EAIEjiH,EAJFiiH,wBACAC,EAGEliH,EAHFkiH,6BACAC,EAEEniH,EAFFmiH,wBACA3B,EACExgH,EADFwgH,gBAEA,OACIz/G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACshH,GAAD,CACIn+C,YAAaA,EACb58B,UAAW86E,IAGfvhH,GAAAC,EAAAC,cAACuhH,GAAD,CACIjH,WAAY0G,EACZQ,gBAAiBP,EACjB16E,UAAW86E,EACXtJ,WAAYmJ,EACZx6E,mBAAoB64E,EACpBp8C,YAAaA,EACbtuC,mBAAoBA,kBE1B9BhS,GAAUqP,GAAgBw6E,oBAE1BC,GAA4C,CAC9C,CAAEj3G,GAAI,IAAK8W,MAAO,MAAO3M,MAAO,UAChC,CAAEnK,GAAI,IAAK8W,MAAO,MAAO3M,MAAO,YAY9BurE,GAAgB,CAClBq2C,4BAA6BziG,GAAkB8X,QAC/C4qF,4BAA6B1iG,GAAkB7jB,QAC/CwmH,4BAA6B3iG,GAAkB1jB,SC5CpCoxG,GDycAhgC,aAjaS,iBAAO,IAiaStB,GAAzBsB,CA1Z8B,SAAA3tE,GASvC,IARF6hG,EAQE7hG,EARF6hG,WACAllF,EAOE3c,EAPF2c,OACApE,EAMEvY,EANFuY,YACAivB,EAKExnC,EALFwnC,UACA48B,EAIEpkE,EAJFokE,YACAw+C,EAGE5iH,EAHF4iH,4BACAF,EAEE1iH,EAFF0iH,4BAGMvU,GADJnuG,EADF2iH,4BAE4BzrG,GAAuBktD,IAC7CgqC,EAAU52F,GAAqB4sD,GAC/By+C,EAAa/hE,oBAHjBC,EAO0CC,qBAAS,GAPnDC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAOK2uD,EAPLzuD,EAAA,GAOqB0uD,EAPrB1uD,EAAA,GAAAG,EAQkCJ,oBAElC,CAAC,CAAEvzC,MAAO,OAAQrM,IAAK,SAVvBigD,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAQK0hE,EARLzhE,EAAA,GAQiB0hE,EARjB1hE,EAAA,GAAAma,EAW4Bxa,oBAAgB,CAAC,CAAEgiE,IAAK,MAAOC,IAAK,SAXhExnD,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAWK0nD,EAXLznD,EAAA,GAWc0nD,EAXd1nD,EAAA,GA2BI4yC,IAAY91F,GAA8B,YAAhBA,EA3B9BojD,EA6B0B3a,oBAAgC,IA7B1D4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GA6BKm0C,EA7BLl0C,EAAA,GA6Bam0C,EA7Bbn0C,EAAA,GAAAG,EA8B0C/a,oBAChC,IA/BVgb,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GA8BKuyC,EA9BLtyC,EAAA,GA8BqBuyC,EA9BrBvyC,EAAA,GAAAE,EAiC4Clb,oBAClC,IAlCVmb,EAAAjlE,OAAAuhC,GAAA,EAAAvhC,CAAAglE,EAAA,GAiCKsyC,EAjCLryC,EAAA,GAiCsBsyC,EAjCtBtyC,EAAA,GAAA8yC,EAoC0BjuD,oBAAgC,IApC1DkuD,EAAAh4G,OAAAuhC,GAAA,EAAAvhC,CAAA+3G,EAAA,GAoCKiB,EApCLhB,EAAA,GAoCaiB,EApCbjB,EAAA,GAAAG,EAqCwCruD,oBAC9B,IAtCVsuD,EAAAp4G,OAAAuhC,GAAA,EAAAvhC,CAAAm4G,EAAA,GAqCKX,EArCLY,EAAA,GAqCoBX,EArCpBW,EAAA,GAAAE,EAwCwCxuD,oBAC9B,IAzCVyuD,EAAAv4G,OAAAuhC,GAAA,EAAAvhC,CAAAs4G,EAAA,GAwCKZ,EAxCLa,EAAA,GAwCoBZ,EAxCpBY,EAAA,GAAAG,EA2CgC5uD,oBAC9BqtD,GAAY1xF,GAAuB,IA5CrCkzF,EAAA34G,OAAAuhC,GAAA,EAAAvhC,CAAA04G,EAAA,GA2CKx6E,EA3CLy6E,EAAA,GA2CgBS,EA3ChBT,EAAA,GAAAG,EA+CwChvD,oBAlCf,WACvB,IAAMwvD,EAAa,CACf75G,GAAI,EACJ8W,MAAO22D,EAAYG,aACnBzjE,MAAOsjE,EAAYG,cAGvB,OAAI6pC,EACO,CAACoC,GAGLrC,EAAsBqC,EAAa,GAyB5CC,IAjDAR,EAAA/4G,OAAAuhC,GAAA,EAAAvhC,CAAA84G,EAAA,GA+CKW,GA/CLV,EAAA,GA+CoBW,GA/CpBX,EAAA,GAAAG,GAmDgDpvD,oBAEhD,IArDAqvD,GAAAn5G,OAAAuhC,GAAA,EAAAvhC,CAAAk5G,GAAA,GAmDKW,GAnDLV,GAAA,GAmDwBW,GAnDxBX,GAAA,GAAAE,GAuD0BvvD,yBAA2B5+C,GAvDrDsuG,GAAAx5G,OAAAuhC,GAAA,EAAAvhC,CAAAq5G,GAAA,GAuDKx7E,GAvDL27E,GAAA,GAuDe1B,GAvDf0B,GAAA,GAAAG,GAwDsB7vD,yBAA2B5+C,GAxDjD0uG,GAAA55G,OAAAuhC,GAAA,EAAAvhC,CAAA25G,GAAA,GAwDK77E,GAxDL87E,GAAA,GAwDavB,GAxDbuB,GAAA,GAAA0J,GA0D+Cx5D,qBAAS,GA1DxDy5D,GAAAvjH,OAAAuhC,GAAA,EAAAvhC,CAAAsjH,GAAA,GA0DKrL,GA1DLsL,GAAA,GA0D2BrL,GA1D3BqL,GAAA,GA0EIxJ,GAbE9C,EACQwC,GAAuC7vG,MAG7B,KAAlB6vG,IAAwBO,oBAASP,IACzBA,GAA8Cv6G,IAClD,SAACuX,GAAD,OAA+BA,EAAI7M,QAIpC,GAKLqwG,GAAkC,KAAhBF,IAA6C,IAAvBA,GAAYzmG,OAcpD4mG,GAAgBhD,EAChB+C,GAZS,KAAXrB,GACoB,KAApBtB,GACmB,KAAnBF,GACW,KAAX4B,GACc,KAAd96E,QACahzB,IAAb2yB,SACW3yB,IAAX4yB,IACkB,KAAlB45E,GACsB,KAAtBmC,IACkB,KAAlBrC,GAIqByC,GAEnBE,GAAa,CACfvB,OAAQ,CACJ9hG,KAAM8V,GAAQwtF,SACdxwG,MAAOgvG,EACPpjE,cAAe,SAACj2C,GAAD,OAAmBs5G,EAAUt5G,EAAE+9C,cAAc1zC,QAC5DyrC,cAAc,EACdC,oBAAqB,kBAAMujE,EAAU,MAGzCz4D,GAAI,CACAtpC,KAAM,GACNslD,YAAat+B,GACbu4E,gBAAiB,SAACtyG,GAAD,OAAgBs0G,GAAMt0G,IACvCsxC,cAAc,EACdC,oBAAqB,kBAAM+iE,QAAMntG,KAGrCkL,KAAM,CACFU,KAAM,GACNslD,YAAav+B,GACbw4E,gBAAiB,SAACtyG,GAAD,OAAgB+zG,GAAQ/zG,IACzCsxC,cAAc,EACdC,oBAAqB,kBAAMwiE,QAAQ5sG,KAGvCuuG,cAAe,CACXh6G,GAAI,QACJu5C,QAASO,KAAEr6C,IAAIoxC,EAAW,SAAC3vB,EAAelhB,GAAhB,MAAgC,CACtDA,KACA8W,MAAOoK,EACP/W,MAAO+W,KAGX2sD,eAAe,EAEfv0B,mBAAoB,SAACp4B,GACjB+4F,GAAiB/4F,GACbu2F,GAASgB,IAAiB,IAElC9yG,MACI8xG,IAAY+C,IAAmBhC,GACzB,0CACA/sG,EACVtB,MAAO6vG,GACP3iG,KAAM8V,GAAQjM,MACdzU,YAAa,IACbgtC,SAAS,EACTg0B,eAGJoqC,gBAAiB,CACbxgG,KAAM8V,GAAQ0qF,gBACd1tG,MAAO0tG,EACP9hE,cAAe,SAACj2C,GAAD,OACXg4G,EAAmBh4G,EAAE+9C,cAAc1zC,QACvCyrC,cAAc,EACdC,oBAAqB,kBAAMiiE,EAAmB,MAGlDH,eAAgB,CACZtgG,KAAM8V,GAAQwqF,eACdxtG,MAAOwtG,EACP5hE,cAAe,SAACj2C,GAAD,OACX83G,EAAkB93G,EAAE+9C,cAAc1zC,QACtCyrC,cAAc,EACdC,oBAAqB,kBAAM+hE,EAAkB,MAGjDwC,kBAAmB,CACfp6G,GAAI,YACJk2C,aAAc,GACdzpC,YAAa,kBACb8sC,QAAS09D,GACT39D,mBAAoB,SAAC+gB,GACjBggD,GAAqBhgD,IAEzBlwD,MAAOiwG,GACP/iG,KAAM8V,GAAQktC,WAGlBk/C,OAAQ,CACJliG,KAAM8V,GAAQytF,WACdzwG,MAAOovG,EACPxjE,cAAe,SAACj2C,GAAD,OAAmB05G,EAAU15G,EAAE+9C,cAAc1zC,QAC5DyrC,cAAc,EACdC,oBAAqB,kBAAM2jE,EAAU,MAGzCzB,cAAe,CACX1gG,KAAM8V,GAAQ0tF,eACd1wG,MAAO4tG,EACPhiE,cAAe,SAACj2C,GAAD,OACXk4G,EAAiBl4G,EAAE+9C,cAAc1zC,QACrCyrC,cAAc,EACdC,oBAAqB,kBAAMmiE,EAAiB,MAGhDC,cAAe,CACX5gG,KAAM8V,GAAQlT,MACd9P,MAAO8tG,EACPliE,cAAe,SAACj2C,GAAD,OACXo4G,EAAiBp4G,EAAE+9C,cAAc1zC,QACrCyrC,cAAc,EACdC,oBAAqB,kBAAMqiE,EAAiB,MAEhDz5E,UAAW,CACPpnB,KAAM8V,GAAQsR,UACdt0B,MAAOs0B,EACPsX,cAAe,SAACj2C,GAAD,OACX65G,EAAa75G,EAAE+9C,cAAc1zC,QACjC2rC,SAAU4hE,EACV9hE,cAAe8hE,EACf7hE,oBAAqB,kBAAM8jE,EAAa,MAG5CmB,aAAc,CACV1nG,MAAO+Z,GAAQ2tF,aACflwG,MAAO6vG,GAAgB,SAAW,OAClCM,OAAO,EACPhmE,QAAS,WACL,GAAI0lE,GAmBA,OAlBAvP,EAAW,CACP9sE,SAAU3oB,GAAiB2oB,IAC3BC,OAAQ5oB,GAAiB4oB,IACzBpkB,MAAOg+F,EACP35E,YAAa66E,EACbp/F,UAAW89F,EACX79F,SAAU29F,EACVn5E,kBAAmB+6E,EACnBh7E,YAAa9f,GACT27F,IAGJ90F,QAASg1F,GACTpgG,MAAO69F,EACPt5E,mBAGJg6E,IAAiB,GAIjBhB,IAAY+C,IACZ/B,IAAiB,KAK7BuC,UAAW,CACP5nG,MAAO+Z,GAAQ8tF,aACfF,OAAO,EACPnwG,MAAO,OACPmqC,QAAS,WACLqkE,EAAU,IACVxB,EAAkB,IAClBE,EAAmB,IACnB0B,EAAU,IACVnB,QAAQ5sG,GACRmtG,QAAMntG,GACNusG,EAAiB,IACjBE,EAAiB,IACjBmC,GAAqB,IACrBV,EAAa,IACblB,IAAiB,GAEZjB,GACDyC,GAAiB,OAM3BwS,GAAuB,SAACC,GAC1B,IAAM7jG,EAAiD,GAOvD,OANA6jG,EAAajtH,IAAI,SAAAmlB,GACb,IAAM+nG,EAAY,CAAE71G,MAAO,GAAIrM,IAAK,IACpCkiH,EAAU71G,MAAQ8N,EAClB+nG,EAAUliH,IAAMma,EAChBiE,EAAQjf,KAAK+iH,KAEV9jG,GAGL+jG,GAAoB,SAACC,GACvB,IAAMhkG,EAAUgkG,EAAa,GAAGrwG,MAAM,KAUtC,OATAqwG,EAAaC,QACAD,EAAaptH,IAAI,SAAAstH,GAC1B,IAAMC,EAAcD,EAAIvwG,MAAM,KACxBywG,EAAiB,GAIvB,OAHAD,EAAYvtH,IAAI,SAACytH,EAAMzgF,GACnB,OAAQwgF,EAAS,GAAA54G,OAAIwU,EAAQ4jB,KAAYygF,IAEtCD,KAKTE,GAAsB,eAAAlpH,EAAA1D,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAG,SAAAC,IAAA,IAAA6oG,EAAAC,EAAAR,EAAAhkG,EAAA5D,EAAA,OAAAnG,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cAC3B6sG,EAA4B,MADDtnG,EAAAvF,KAAA,EAEA4gE,KAFA,UAErBstC,EAFqB3oG,EAAAmuB,KAAA,CAAAnuB,EAAAvF,KAAA,eAIvB+sG,EAA4B,MAC5BjT,GAAkB,GALKv0F,EAAAtF,OAAA,SAMhB,MANgB,YAQvBiuG,aAAmBl0C,IARI,CAAAz0D,EAAAvF,KAAA,gBASvBw2D,GAAcu2C,4BAA4B,MAC1CjT,GAAkB,GAVKv0F,EAAAtF,OAAA,SAWhB,MAXgB,eAarBkuG,EAAa1xG,KAAKrC,MAAMqC,KAAKC,UAAUwxG,IACvCP,EAAeQ,EAAWpoG,KAAKzI,MAAM,MAErCqM,EAAU4jG,GAAqBI,EAAa,GAAGrwG,MAAM,MACrDyI,EAAO2nG,GAAkBC,GAE/BL,EAAWvnG,GACXmnG,EAAcvjG,GACVqjG,GAAcA,EAAWtxG,SAAWsxG,EAAWtxG,QAAQ6nC,OACvDizB,GAAcs2C,4BAA4B,MAC1CE,EAAWtxG,QAAQ6nC,KAAK6qE,SAvBD7oG,EAAAtF,OAAA,SAyBpB,CAAE0J,UAAS5D,SAzBS,yBAAAR,EAAApF,SAAAkF,MAAH,yBAAAtgB,EAAAkhB,MAAAha,KAAAoJ,YAAA,GA8B5B,OACInK,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWvB,QAC5B/uG,GAAAC,EAAAC,cAAA,aAAQ6iB,GAAQxW,MAChBvM,GAAAC,EAAAC,cAACmxG,GAAef,GAAW/jG,MAC3BvM,GAAAC,EAAAC,cAACglF,GAAUorB,GAAWV,eACQ,UAA7BvsC,EAAYG,cACTxjE,GAAAC,EAAAC,cAAA,OAAKC,UAAW,mBACZH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,iCACPxI,MAAO,SACPmqC,QAASo4E,OAKzB/iH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW/C,gBAC5BvtG,GAAAC,EAAAC,cAAA,aAAQ6iB,GAAQwzB,IAChBv2C,GAAAC,EAAAC,cAACmxG,GAAef,GAAW/5D,IAC3Bv2C,GAAAC,EAAAC,cAACwmD,GAAiB4pD,GAAWN,oBAGjChwG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW7C,iBAC5BztG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWnB,QAC5BnvG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWj8E,YAGhCr0B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW3C,eAC5B3tG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWzC,eAC5B7tG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWM,WAE7B5wG,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWI,eAEjC1wG,GAAAC,EAAAC,cAACkuC,GAAA,QAAD,CACIiT,IAAKygE,EACL3hH,UA3CF,6BA4CE0a,KAAMsnG,EACN9zE,SA5CH,oBA6CGnjC,UAAW,IACXuT,QAASsjG,EACToB,cAAc,IAElBnjH,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,KAAMw+D,GACf3uG,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLikE,GAAkB,KAGrB,KAEL5uG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRiyB,GAAgBC,OAAOE,SAG5BvyB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAb,sBACAH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO,SACP2hC,QAAS,WACLikE,GAAkB,IAEtBpuG,MAAO,mBbtbrCuiB,GAAUqP,GAAgBgxF,WAAWl2E,uBAOtC8qE,gDAKL,IAyIe9qE,GAzIuB,SAAAjuC,GAAsB,IAAnBqnC,EAAmBrnC,EAAnBqnC,MAAOjE,EAAYpjC,EAAZojC,MAC5C,OACIriC,GAAAC,EAAAC,cAAA,OAAKC,UAAS,iBAAA8J,OAAmBwN,GAAM4qB,GAAS,OAAS,KACrDriC,GAAAC,EAAAC,cAAA,SAAOC,UAAU,wBACbH,GAAAC,EAAAC,cAAA,aACIF,GAAAC,EAAAC,cAAA,UACK,CACG6iB,GAAQ9oB,YACR8oB,GAAQsgG,UACRtgG,GAAQugG,gBAERvgG,GAAQqe,cACRre,GAAQ5C,WACR4C,GAAQpnB,QACRonB,GAAQuI,SACVj2B,IAAI,SAACwnE,EAAYx6B,GAAb,OACFriC,GAAAC,EAAAC,cAAA,MAAIG,IAAKgiC,GAAQw6B,KAErB78D,GAAAC,EAAAC,cAAA,aAGRF,GAAAC,EAAAC,cAAA,aACKwvC,KAAE/7B,IAAI2yB,EAAO,kBAAmB,IAC7BoJ,KAAE/7B,IAAI2yB,EAAO,kBAAmB,IAAIjxC,IAChC,SAACyW,EAAeu2B,GACZ,OACIriC,GAAAC,EAAAC,cAACquC,GAAA,SAAD,CAAUluC,IAAKgiC,GACXriC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,sBACVH,GAAAC,EAAAC,cAAA,UACKwvC,KAAE/7B,IACC7H,EACA,iBACA,KAGR9L,GAAAC,EAAAC,cAAA,eAKUmB,IAJLquC,KAAE/7B,IACC7H,EACA,qBACA,IAEEjB,GACE6kC,KAAE/7B,IACE7H,EACA,qBACA,KAGN,IAEV9L,GAAAC,EAAAC,cAAA,eAKUmB,IAJLquC,KAAE/7B,IACC7H,EACA,UACA,IAEEjB,GACE6kC,KAAE/7B,IACE7H,EACA,UACA,KAGN,IAEV9L,GAAAC,EAAAC,cAAA,UACKwvC,KAAE/7B,IACC7H,EACA,gCACA,KAGR9L,GAAAC,EAAAC,cAAA,UACKyX,GACG+3B,KAAE/7B,IACE7H,EACA,SACA,IAEJ,gBAGR9L,GAAAC,EAAAC,cAAA,UAKU,YAJLwvC,KAAE/7B,IACC7H,EACA,6BACA,IAEEksG,GAAah2E,QACbg2E,GAAatqD,QAEvB1tD,GAAAC,EAAAC,cAAA,UACKwvC,KAAE/7B,IACC7H,EACA,+BACA,IAHH,GAAA7B,OAKQylC,KAAE/7B,IACH7H,EACA,+BACA,IARP,KAUK,GACL4jC,KAAE/7B,IACC7H,EACA,+BACA,IAfR,OAkBK4jC,KAAE/7B,IACC7H,EACA,mCACA,IArBR,OAwBK4jC,KAAE/7B,IACC7H,EACA,iCACA,SAS5B9L,GAAAC,EAAAC,cAAA,UACIF,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ2yF,kBe5InC6N,GAAoB,SAACtjH,EAAQwO,GAAT,OACtBxO,EAAEyM,MAAQ+B,EAAE/B,MAAQ,EAAI+B,EAAE/B,MAAQzM,EAAEyM,OAAS,EAAI,GCTtC82G,GDWuB,SAAAvkH,GAAA,IAClCwkH,EADkCxkH,EAClCwkH,cACA1jH,EAFkCd,EAElCc,MACAb,EAHkCD,EAGlCC,SACAiwC,EAJkClwC,EAIlCkwC,QAJkC,OAMlCnvC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,oBAAqB2xC,IAAI,qBAE7Ch1C,GAAAC,EAAAC,cAAA,UAAQH,MAAOA,EAAOb,SAAUA,GAC5Bc,GAAAC,EAAAC,cAAA,UAAQH,MAAM,OAAO0jH,GACpBt0E,EACI/hC,KAAKm2G,IACLluH,IAAI,SAAAwE,EAAmBwoC,GAAnB,IAAGtiC,EAAHlG,EAAGkG,MAAO2M,EAAV7S,EAAU6S,MAAV,OACD1M,GAAAC,EAAAC,cAAA,UAAQG,IAAKgiC,EAAOtiC,MAAOA,GACtB2M,QEQnBqW,GAAUqP,GAAgBqlF,yBAuEhC,IA4DeiM,GA5DiC,SAAAzkH,GAG1C,IAFF+nC,EAEE/nC,EAFF+nC,0BACA28E,EACE1kH,EADF0kH,+BAGQ1tH,EAAkB+wC,EAAlB/wC,KAAMoE,EAAY2sC,EAAZ3sC,QAERi2G,EAAa,CAEf4J,eAAgB,CACZlxG,MAAO+Z,GAAQk9E,UACfz/F,MAAO,OACPmwG,OAAO,EACPhmE,QAAS,WACLg5E,OAqCZ,OACI3jH,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACK/L,GACGoE,IAAY0oB,GAAQnoB,cAnCA,WAAM,IAC1B3E,EAAkB+wC,EAAlB/wC,KAAMoE,EAAY2sC,EAAZ3sC,QAEd,OACI2F,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,QAAMl6C,GAAQoE,IAAY0oB,GAAQnoB,eAElCoF,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg5E,MAGH,KAEL3jH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRlK,IAAS0C,EAAcqjF,QAClBj5D,GAAQo3F,iBAAiBC,cACzBr3F,GAAQo3F,iBAAiBE,gBAGnCr6G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW9F,GAExB2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAW4J,mBAWrCI,KCpIVv3F,GAAUqP,GAAgBgxF,WAC1Bv6G,GAAiBupB,GAAgBtpB,QAOjCwiE,GAAgB,CAAEn2C,2BAoBlB1W,GAAU,CACZ,CAAE/R,MAAO,SAAUrM,IAAK,WACxB,CAAEqM,MAAO,mBAAiBrM,IAAK,kBAC/B,CAAEqM,MAAO,gBAAcrM,IAAK,kBAC5B,CAAEqM,MAAO,aAAcrM,IAAK,aAC5B,CAAEqM,MAAO,SAAUrM,IAAK,eACxB,CAAEqM,MAAO,cAAerM,IAAK,wBAE7B,CAAEqM,MAAO,iBAAerM,IAAK,eAC7B,CAAEqM,MAAO,MAAOrM,IAAK,YACrB,CAAEqM,MAAO,YAAUrM,IAAK,aACxB,CAAEqM,MAAO,OAAQrM,IAAK,SACtB,CAAEqM,MAAO,MAAOrM,IAAK,kBACrB,CAAEqM,MAAO,QAASrM,IAAK,oBACvB,CAAEqM,MAAO,cAAerM,IAAK,sBAC7B,CAAEqM,MAAO,wBAAgBrM,IAAK,SAC9B,CAAEqM,MAAO,kBAAmBrM,IAAK,gBACjC,CAAEqM,MAAO,sBAAuBrM,IAAK,oBACrC,CAAEqM,MAAO,+BAA6BrM,IAAK,sBAC3C,CAAEqM,MAAO,YAAarM,IAAK,aAC3B,CAAEqM,MAAO,cAAYrM,IAAK,uBAC1B,CAAEqM,MAAO,YAAarM,IAAK,2BAC3B,CAAEqM,MAAO,mBAAiBrM,IAAK,qBAG7BujH,eACF,SAAAA,EAAYhjH,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA6iH,IACtB/iH,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAytH,GAAA1iH,KAAAH,KAAMH,KAQV00G,eAAiB,SAAChvE,GAAe,IACrB+8B,EAAgBxiE,EAAKD,MAArByiE,YAEFwgD,EACA9gG,GAAQu4D,qBAEd,MAAO,CACH,CACIlxD,OAAQ6pF,GAAalxF,GAAQjM,OAC7By+F,SAAU,UAEVuO,aAAc,SAACxyG,EAAaqxG,GACxB,QAAOA,EAAIznG,SACLynG,EAAIznG,QAAQi4B,SAAS7hC,EAAOvR,SAI1C,CACIqqB,OAAQ6pF,GAAalxF,GAAQghG,SAC7BxO,SAAU,uBACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQihG,WAC7BzO,SAAU,kBAEVuO,aAAc,SAACxyG,EAAaqxG,GACxB,QAAOA,EAAI,oBACLA,EAAI,mBAAmBxvE,SAAS7hC,EAAOvR,SAIrD,CACIqqB,OAAQ6pF,GAAalxF,GAAQkhG,kBAC7B1O,SAAU,sCACV9sF,KAAM,SAAAxpB,GAAA,IAAGc,EAAHd,EAAGc,MAAH,OAAoB8K,GAAiB9K,IAC3C+jH,aAAc,SAACxyG,EAAaqxG,GACxB,QAAOA,EAAI,wCACLA,EAAI,uCAAuCxvE,SACvC7hC,EAAOvR,SAKzB,CACIqqB,OAAQ6pF,GAAalxF,GAAQ5T,QAC7BomG,SAAU,oBACV9sF,KAAM,SAAA5uB,GAAoB,IAAjBkG,EAAiBlG,EAAjBkG,MACL,YAAiBsB,IAAVtB,GAAiC,KAAVA,EAC1BC,GAAAC,EAAAC,cAACy1G,GAAD,CAAQxmG,OAAQpP,EAAO0P,KAAK,gBAC5B,MAGRq0G,aAAc,SAACxyG,EAAaqxG,GACxB,MAAqB,QAAjBrxG,EAAOvR,OAGJ4iH,EAAI,uBAAyBrxG,EAAOvR,OAG/CmkH,OAAQ,SAAAxtG,GAAA,IAAGpF,EAAHoF,EAAGpF,OAAQpS,EAAXwX,EAAWxX,SAAX,OACJc,GAAAC,EAAAC,cAACikH,GAAD,CACIV,cAAe,OACfvkH,SAAU,SAACu5B,GAAD,OACNv5B,EAASu5B,EAAMgb,cAAc1zC,QAEjCA,MAAOuR,EAASA,EAAOvR,MAAQ,MAC/BovC,QAAStmC,GAAe8yE,gBAKpC,CACIvxD,OAAQ6pF,GAAa4P,GACrBtO,SAAU,QACV9sF,KAAM,SAAA7uB,GAAoB,IAAjBmG,EAAiBnG,EAAjBmG,MACL,OAAKA,EAGqB,cAAtBA,EAAM47E,YACC,KAEwB,QAA/B57E,EAAMsP,SAASgyF,YACRrhG,GAAAC,EAAAC,cAACy1G,GAAD,CACClmG,KAAM,aACNN,OAAQ,gBAGhBpP,EAAMu7E,qBAEFt7E,GAAAC,EAAAC,cAACy1G,GAAD,CACIxmG,OAAQpP,EAAMu7E,qBACd7rE,KAAM,yBAGP1P,EAAMqkH,8BAETpkH,GAAAC,EAAAC,cAACy1G,GAAD,CACIxmG,OAAQpP,EAAMqkH,8BACd30G,KAAM,kCAIP,KA1BA,MA6Bfy0G,OAAQ,SAAAlqG,GAAA,IAAG1I,EAAH0I,EAAG1I,OAAQpS,EAAX8a,EAAW9a,SAAX,OACJc,GAAAC,EAAAC,cAACikH,GAAD,CACIV,cAAe,OACfvkH,SAAU,SAACu5B,GAAD,OACNv5B,EAASu5B,EAAMgb,cAAc1zC,QAEjCA,MAAOuR,EAASA,EAAOvR,MAAQ,MAC/BovC,QAAStmC,GAAeu7G,kCAIpC,CACIh6F,OAAQ6pF,GAAalxF,GAAQwqF,gBAC7BgI,SAAU,kCACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQ0qF,iBAC7B8H,SAAU,mCACV5nE,YAAY,GAehB,CACIvjB,OAAQ6pF,GAAalxF,GAAQ0tF,gBAC7B8E,SAAU,+BACV5nE,YAAY,GAEhB,CACI4nE,SAAU,cACV5nE,YAAY,EACZwC,KAAMx5B,GAAwB0sD,GAC9BjiD,MAAO,GACPqH,KAAM,SAAAxN,GAAA,IAAGgzB,EAAHhzB,EAAGgzB,SAAH,OACFjuC,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,QACPwI,MAAO+Z,GAAQshG,YACf15E,QAAS,WACL,IAAMzW,EAAkCwb,KAAE/7B,IACtCs6B,EACA,wBAEJ,GAAM/Z,EAAa,CACf,IAAMjhB,EAAOc,GACT,IAAIX,IAAI,CAAC,CAAC,cAAe8gB,KACzB,CAAC,SAELjgB,OAAO8a,KAAK9b,SAMhC,CACImX,OAAQrH,GAAQuhG,oBAChB32E,YAAY,EACZm2E,aAAc,SAACxyG,EAAaqxG,GAExB,OADA9hH,EAAK0jH,iBAAiB5B,KACfA,EAAI,+BACLA,EAAI,8BAA8BxvE,SAC9B7hC,EAAOvR,QAIrBqhB,MAAO,IACPqH,KAAM,SAAA8F,GAAuB,IAApB0f,EAAoB1f,EAApB0f,SACL,MAAmC,gBAA/BA,EAAS3H,MAAMq1C,YAEX37E,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,QACPwI,MAAO+Z,GAAQyhG,kBACf75E,QAAOx0C,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAAE,SAAAC,IAAA,IAAA9N,EAAA,OAAAqI,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cAAAuF,EAAAvF,KAAA,EACai/D,GACd9lC,EAAS/yB,QACT+yB,EAAS3H,OAHR,QACCj6B,EADDgO,EAAAmuB,gBAKchW,IACf3xB,EAAKc,SAAS,CACVtH,QAASgS,EAAIhS,QACboqH,yBAAyB,EACzBvwF,YACI+Z,EAAS3H,MACJyyC,iBAEb/jE,WAAW,WACPnU,EAAKc,SAAS,CACV8iH,yBAAyB,KAE9B,OAEH5jH,EAAKc,SAAS,CACVtH,QAAO,4BACPoqH,yBAAyB,EACzBvwF,YAAa7nB,EAAI6nB,cAErBlf,WAAW,WACPnU,EAAKc,SAAS,CACV8iH,yBAAyB,KAE9B,MA5BF,wBAAApqG,EAAApF,SAAAkF,QAgCbna,GAAAC,EAAAC,cAAA,WACCW,EAAKY,MAAMgjH,yBACR5jH,EAAKY,MAAMyyB,cACP+Z,EAAS3H,MAAMyyC,gBACf/4E,GAAAC,EAAAC,cAAA,QACIuhB,MAAO,CACHO,SAAU,OACV+G,SAAU,SACVC,WAAY,WAGfnoB,EAAKY,MAAMpH,WAOD,cAA/B4zC,EAAS3H,MAAMq1C,aACgB,0BAA/B1tC,EAAS3H,MAAMq1C,cAEV96E,EAAK0jH,iBAAiBt2E,EAAS3H,OAGO,QAAxC2H,EAAS3H,MAAMj3B,SAASgyF,YAChB,KAGPrhG,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,QACPwI,MAAO+Z,GAAQ2hG,eACf/5E,QAAS,WACL,IAAMzW,EAEYwb,KAAE/7B,IAChBs6B,EACA,wBAEJ,GAAM/Z,EAAa,CACf,IAAMn6B,EAAgC,CAClCC,YAAak6B,EACbhY,KAAM,SAEVrb,EAAKD,MAAM+zB,kBAAkB56B,OAM1C,SAvRG8G,EAiT1B8jH,0BAA4B,WAKxB,OAJkB9jH,EAAKD,MAAf0lC,MAKHjxC,IAAI,SAAAo7B,GAAwB,IAArBvV,EAAqBuV,EAArBvV,QAASorB,EAAY7V,EAAZ6V,MAETvqB,EAgBAuqB,EAhBAvqB,UAFqB6oG,EAkBrBt+E,EAfAj3B,SACIC,QACIW,EALa20G,EAKb30G,YACAN,EANai1G,EAMbj1G,UACAC,EAPag1G,EAObh1G,SACA0b,EARas5F,EAQbt5F,QACAxb,EATa80G,EASb90G,MACAD,EAVa+0G,EAUb/0G,MAIRkpE,GAIAzyC,EALAu+E,WAKAv+E,EAJAyyC,gBACA4C,EAGAr1C,EAHAq1C,YAKE7c,EAAU,CACZ5jD,UACA69D,iBACA1kD,UALAiS,EAFAjS,UAQAsnD,cACAL,qBAPAh1C,EADAg1C,qBASArrE,cACAN,YACAC,WACA0b,UACAxb,QACAD,SAGJ,OAAKkM,EAIEA,EAAU1mB,IAAI,SAAAyW,GAAY,IAEzBC,EAUAD,EAVAC,eACA0M,EASA3M,EATA2M,OACAsoB,EAQAj1B,EARAi1B,iBACAD,EAOAh1B,EAPAg1B,mBALyBgkF,EAYzBh5G,EANAs1B,cACqB6uB,EAPI60D,EAOrBnpH,QAAW8T,KACXqyB,EARqBgjF,EAQrBhjF,oBACAC,EATqB+iF,EASrB/iF,wBAEJb,EACAp1B,EADAo1B,iBAGE6jF,EACS,OAAXtsG,EAAkB,iBAAgB,MAEtC,OAAOtiB,OAAAkuB,GAAA,EAAAluB,CAAA,GACA2oE,EADP,CAEIimD,eACAhkF,mBACAD,qBACAmvB,YACAnuB,sBACAC,0BACAb,mBACAn1B,qBA7BG+yD,IAiCdkmD,QA3XiBnkH,EA8X1B+9G,kBAAoB,WAAM,IACdv7C,EAAgBxiE,EAAKD,MAArByiE,YACR,OAAO1sD,GAAwB0sD,GACzB,CACI91B,aAAc1sC,EAAK8jH,4BACnBr3E,gBAAiB7uB,GACjBgvB,oBAAqB,wBACrBD,iBAAkB,0BAEtB,IArYN3sC,EAAKY,MAAQ,CACTgjH,yBAAyB,EACzBpqH,QAAS,GACT65B,YAAa,IALKrzB,kFA6RTylC,GACb,GAAIA,EAAO,CACP,IACKA,EAAM89E,gCACN99E,EAAMg1C,qBAEP,OAAO,EAEX,GACmC,YAA/Bh1C,EAAMg1C,sBACyB,eAA/Bh1C,EAAMg1C,sBACkC,eAAxCh1C,EAAM89E,+BACkC,YAAxC99E,EAAM89E,8BAEN,OAAO,EAGf,OAAO,mCA4FF,IACG99E,EAAUvlC,KAAKH,MAAf0lC,MAER,OACItmC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gCACXH,GAAAC,EAAAC,cAAC+1G,GAAD,CAAc16G,MAAOwF,KAAKH,MAAMhG,eAE/BkZ,GAAQwyB,IACLtmC,GAAAC,EAAAC,cAAC6gH,GAAD,KACI/gH,GAAAC,EAAAC,cAACg2G,GAAD//G,OAAAgzB,OAAA,CACIyjB,QAAS7rC,KAAKu0G,eAAev0G,KAAKH,MAAM0lC,OACxCzrB,KAAMyrB,EACNnmC,UAAU,sBACVitC,gBAAgB,EAChBO,YAAY,EACZT,aAAc,SAAA1c,GAAA,IAAGyd,EAAHzd,EAAGyd,SAAU5L,EAAb7R,EAAa6R,MAAb,OACVriC,GAAAC,EAAAC,cAAC+kH,GAAD,CAAc5iF,MAAOA,EAAOiE,MAAO2H,MAEnCltC,KAAK69G,uBAIrB5+G,GAAAC,EAAAC,cAACglH,GAAD,CACIl+E,0BACIjmC,KAAKH,MAAMomC,0BAEf28E,+BACI5iH,KAAKH,MAAMukH,4BAtaV/hH,cA8aVwpE,gBAheS,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,YACjBxiC,aAAc6G,EAAM+kC,aAAansC,UA8dGixE,GAAzBsB,CAAwCg3C,ICxejDt4C,GAAgB,CAClB85C,uBAAwBvxF,GAAgBmD,QACxCqqF,sBAAuBnsF,GAAc8B,QACrCquF,kCAAmC3wF,GAAiCsC,QACpErC,sBC3BW2wF,GD6EA14C,aAjES,SAACnrE,GAAD,MAAuB,CAC3C8jH,WAAY9jH,EAAM+kC,aAAaF,MAC/Bk/E,uBAAwB/jH,EAAMwlC,yBAAyB5sC,QACvD2sC,0BACIvlC,EAAMwlC,yBAAyBD,0BACnCu6E,eAAgB9/G,EAAMqlC,iBAAiBL,UACvCnP,OAAQ71B,EAAM27B,YAAY9F,OAC1B86E,OAAQ3wG,EAAM27B,YAAY7F,oBAC1B3b,OAAQna,EAAM27B,YAAYxhB,SAyDU0vD,GAAzBsB,CA1CoB,SAAA3tE,GAY7B,IAXFmmH,EAWEnmH,EAXFmmH,uBACAG,EAUEtmH,EAVFsmH,WACAhE,EASEtiH,EATFsiH,eACAF,EAQEpiH,EARFoiH,sBACAmE,EAOEvmH,EAPFumH,uBACAx+E,EAME/nC,EANF+nC,0BACArS,EAKE11B,EALF01B,kBACA0uC,EAIEpkE,EAJFokE,YACAznD,EAGE3c,EAHF2c,OACAw2F,EAEEnzG,EAFFmzG,OACAiT,EACEpmH,EADFomH,kCAEM7tG,EAAcD,GAChBxe,EAAYs5G,KACZp5G,EAAkBq5G,YAClBF,GAGJ,OACIpyG,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAACulH,GAAD,CACI3kB,WAAYskB,EACZ3+E,UAAW86E,EACX/pG,YAAaA,EACboE,OAAQA,EACRynD,YAAaA,IAGjBrjE,GAAAC,EAAAC,cAACwlH,GAAD,CACIriD,YAAaA,EACb/8B,MAAOi/E,EACPI,SAAUtE,EACV1sF,kBAAmB0wF,EACnBG,uBAAwBA,EACxBx+E,0BAA2BA,EAC3Bm+E,kBAAmBxwF,OE5C7B5R,GAAUqP,GAAgBqlF,yBAsBhC,IA+Te0C,GA9S2B,SAAAl7G,GAQpC,IzQg9BuB2mH,EyQv9BzB98C,EAOE7pE,EAPF6pE,OACAnJ,EAME1gE,EANF0gE,QACAkmD,EAKE5mH,EALF4mH,YACAh/E,EAIE5nC,EAJF4nC,oBACAJ,EAGExnC,EAHFwnC,UACA48B,EAEEpkE,EAFFokE,YACAtuC,EACE91B,EADF81B,mBAEM+wF,EAAiBziD,EAAYhtD,YAAcxd,EAAQyd,QADvD0pC,EAGgCC,oBAC9B6lE,EAAiBjvG,GAAgBwsD,EAAYG,cAAgB,IAJ/DtjB,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAGK+lE,EAHL7lE,EAAA,GAGgB8lE,EAHhB9lE,EAAA,GAAAG,EAM8BJ,oBAAiB,IAN/CK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAMK4lE,EANL3lE,EAAA,GAMe4lE,EANf5lE,EAAA,GAAAma,EAOmCxa,oBAAc,IAPjDya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAOK0rD,EAPLzrD,EAAA,GAOkB0rD,EAPlB1rD,EAAA,GAAAE,EAQmC3a,qBAAkB,GARrD4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAQKyrD,EARLxrD,EAAA,GAQwByrD,EARxBzrD,EAAA,GAAAG,EASuC/a,yBAEvC5+C,GAXA45D,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GASKurD,EATLtrD,EAAA,GAS0BurD,EAT1BvrD,EAAA,GAaMhlE,EAAkB4wC,EAAlB5wC,KAAMoE,EAAYwsC,EAAZxsC,QAKRosH,EAAmB,iBACR,KAAbR,EAAA,GAAAh8G,OAAqB87G,EAArB,KAAA97G,OAAkCg8G,GAAaF,GAE7CW,EAAe,WACjB,IAAMroG,EAAqB,GAErBsoG,EAzDd,SAA2B5mH,GACvB,IAAIxE,EAAQ,GAIZ,OAHK4N,GAAcpJ,KACfxE,EAAQwnB,GAAQo3F,iBAAiBv/F,OAAOuoE,YAErC5nF,EAoDkBqrH,CAAkBb,GACjCc,EACFf,GAA+B,KAAbG,EACZljG,GAAQo3F,iBAAiBv/F,OAAOksG,cAChC,GAEJC,EACFV,QAA6ChlH,IAAxBklH,EACfxjG,GAAQo3F,iBAAiBv/F,OAAOosG,UAChC,GACJC,EA3DgB,SAAC7U,GAC3B,IAAI72G,EAAQ,GAaZ,OAXI62G,IACwBA,EAAO9hG,OAC3B,SAACC,EAAK8K,GAAN,OAAe9K,GAAO8K,EAAKhE,QAAQ5N,OAAS,IAC5C,KAIAlO,EAAQwnB,GAAQo3F,iBAAiBv/F,OAAOssG,eAIzC3rH,EA6CwB4rH,CAAsBZ,GAE7Ca,GAAc,EAqBlB,MAnBqB,KAAjBT,IACAtoG,EAAcgpG,MAAQV,GAGN,KAAhBE,IACAxoG,EAAcipG,UAAYT,GAGN,KAApBE,IACA1oG,EAAckpG,KAAOR,EACrBK,GAAc,GAGS,KAAvBH,GAA6BG,IAC7B/oG,EAAcmpG,SAAWP,GAG7Bb,EAAc/nG,GAEwB,IAA/BnoB,KAAKmoB,GAAe5U,QAGzB2+D,EAAmB,WACjB09C,EACAI,EAAY,KAEZA,EAAY,IACZF,EAAa,KAEjBI,OAAc/kH,GACds+D,GAAQ,GACR6mD,OAAUnlH,IAGRivG,EAAa,CACf2V,SAAU,CACNh5G,KAAM,GACNlN,MAAOkmH,EACPt6E,cAAe,SAACj2C,GACZwwH,EAAYxwH,EAAE+9C,cAAc1zC,MAAMsS,gBAEtC9W,MAAO4qH,EAAcA,EAAYmB,eAAYjmH,GAEjDqvG,aAAc,CACV1nG,MAAO+Z,GAAQ+oE,YACftrF,MAAO,OACPmwG,OAAO,EACPhmE,QAAS,WACL,IAAM88E,EAAKhB,IAEkBC,MAGzBb,EAAY,CACR/uG,MAAO2wG,EAAG77C,OACVr0C,oBAAqB8uF,EACdE,OACDllH,IAEV+mE,OAKZwoC,UAAW,CACP5nG,MAAO+Z,GAAQk3F,YACfz5G,MAAO,SACPmwG,OAAO,EACPhmE,QAAS,WACLy9B,MAIR8xC,eAAgB,CACZlxG,MAAO+Z,GAAQk9E,UACfz/F,MAAO,SACPmwG,OAAO,EACPhmE,QAAS,WACLy9B,IACArzC,OAkCN2yF,EAASnxG,GAAoB8sD,GAsE7Bj3C,EAAWq6F,IAEjB,OACIzmH,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAC8nE,GAAD,CACI33B,YAAa,CACThvB,OAAQglG,EAAoB,MAAQ,MACpCjlG,MAAOilG,EAAoB,MAAQ,MACnCsB,OAAQ,KACRC,SAAU,QAEdznH,UAAU,qBACVgwC,KAAM24B,GAEN9oE,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLg1B,GAAQ,KAGX,KAEL3/D,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SAAS4iB,GAAQo3F,iBAAiBnxG,OAE/ChJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gDACXH,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,SA/BpBwnH,EACM3kG,GAAQo3F,iBAAiB0N,iBACzB9kG,GAAQo3F,iBAAiB2N,aA8BX9nH,GAAAC,EAAAC,cAACwmD,GAAD,CACIvX,SzQstBHy2E,EyQttBgCn/E,EzQutBzDshF,KACI1yH,KAAIuwH,EAAQ,SAAC9uG,EAAelhB,GACxB,IAAMoyH,EAAOnxG,GAAgBC,GAC7B,MAAO,CACHlhB,KACA8W,MAAOs7G,EACPjoH,MAAOioH,KAGf,UyQ/tBwB3lH,YAAY,IACZspC,cAAe,SAAC5rC,GAAD,OACXA,EAAMsS,eAEV68B,mBAAoB,SAACtuC,GACbA,GAASA,EAAMb,OACfimH,EAAaplH,EAAMb,MAAMsS,eAEf,OAAVzR,GACAolH,EAAa,KAGrB52E,YAAas4E,EACbnsH,MACI4qH,EAAcA,EAAYkB,WAAQhmH,EAEtCyqC,aAAci6E,EACdhmH,MAAOgmH,EACPr7E,SAAUo7E,KAIlB9lH,GAAAC,EAAAC,cAAA,WAhEhBmjE,EAAYjtD,eAAiBvd,EAAQ2d,MACjCxW,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQo3F,iBAAiB8N,aAC7BjoH,GAAAC,EAAAC,cAACmsC,GAAgBikE,EAAW2V,aAgEvB75F,GAAYpsB,GAAAC,EAAAC,cAAA,0BAAkBksB,GA1H3Cs7F,GACI1nH,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,SACR4iB,GAAQo3F,iBAAiB+N,qBAE9BloH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACXH,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM,gBACNlN,MAAO,UACPnK,GAAI,UACJ44C,SAAU63E,EACV53E,YAAa,WACT63E,GAASD,MAIjBrmH,GAAAC,EAAAC,cAAC8yD,GAAD,CACI/lD,KAAM,gBACNlN,MAAO,WACPnK,GAAI,WACJ44C,QAAS63E,EACT53E,YAAa,WACT63E,GAASD,OAKpBA,GACGrmH,GAAAC,EAAAC,cAACioH,GAAD,CACI/iD,uBAAwBohD,KAMvB,WACjB,IAAM4B,EAAiB,GAOvB,OANAlyH,KAAKiwH,GAAa35G,QAAQ,SAAAnM,GACV,UAARA,GAA2B,cAARA,GACnB+nH,EAAK5oH,KAAK2mH,EAAY9lH,MAK1BL,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACKomH,EAAK/yH,IAAI,SAACue,EAAKsgC,GAAN,OACNl0C,GAAAC,EAAAC,cAAA,KAAGG,IAAK6zC,EAAK/zC,UAAU,sBAClByT,MA8EJy0G,GAEDroH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wCACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAWM,WAC7B5wG,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAWI,iBAIxCz6G,GACGoE,IAAY0oB,GAAQnoB,cAtKC,WAAM,IAC3B3E,EAAkB4wC,EAAlB5wC,KAAMoE,EAAYwsC,EAAZxsC,QACd,OACI2F,GAAAC,EAAAC,cAAC8nE,GAAD,CAAa73B,MAAM,GACfnwC,GAAAC,EAAAC,cAAA,QACIC,UAAU,YACVwqC,QAAS,WACLy9B,IACArzC,MAGH,KAEL/0B,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,QACRlK,IAAS0C,EAAcqjF,QAClBj5D,GAAQo3F,iBAAiBC,cACzBr3F,GAAQo3F,iBAAiBE,gBAGnCr6G,GAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAW9F,GAExB2F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,EAAW4J,mBAgJrCoO,KCxVVvlG,GAAUqP,GAAgBm2F,4BAE1BC,GAA4C,CAC9C,CAAE5yH,GAAI,IAAK8W,MAAO,QAAS3M,MAAO,WAClC,CAAEnK,GAAI,IAAK8W,MAAO,UAAW3M,MAAO,aAuQzBwoH,GA9OsC,SAAAtpH,GAa/C,IAZFyiH,EAYEziH,EAZFyiH,gBACAj7E,EAWExnC,EAXFwnC,UACAgiF,EAUExpH,EAVFwpH,2BACAC,EASEzpH,EATFypH,0BACAzQ,EAQEh5G,EARFg5G,WACApxE,EAOE5nC,EAPF4nC,oBACAD,EAME3nC,EANF2nC,mBACA7R,EAKE91B,EALF81B,mBACAM,EAIEp2B,EAJFo2B,wBACAwwF,EAGE5mH,EAHF4mH,YACAzuF,EAEEn4B,EAFFm4B,YACAisC,EACEpkE,EADFokE,YAEM+pC,EAAsBj3F,GAAuBktD,GAE7C+d,EAAegsB,EACf,CACIx3G,GAAI,EACJ8W,MAAO22D,EAAYG,aACnBzjE,MAAOsjE,EAAYG,cAEvB,GATJxjB,EAW4BC,oBAC1BmhC,GAZFlhC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAWKs4D,EAXLp4D,EAAA,GAWcq4D,EAXdr4D,EAAA,GAAAG,EAc0BJ,oBAAiB,IAd3CK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAcKzkC,EAdL0kC,EAAA,GAcaqoE,EAdbroE,EAAA,GAAAma,EAe0Cxa,oBAAiB,IAf3Dya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAeK8yC,EAfL7yC,EAAA,GAeqB8yC,EAfrB9yC,EAAA,GAAAE,EAgB4C3a,oBAAiB,IAhB7D4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAgBK6yC,EAhBL5yC,EAAA,GAgBsB6yC,EAhBtB7yC,EAAA,GAAAG,EAiBwC/a,oBAAiB,IAjBzDgb,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAiBK2yC,EAjBL1yC,EAAA,GAiBoB2yC,EAjBpB3yC,EAAA,GAAAE,EAkBwClb,oBAAiB,IAlBzDmb,EAAAjlE,OAAAuhC,GAAA,EAAAvhC,CAAAglE,EAAA,GAkBK0yC,EAlBLzyC,EAAA,GAkBoB0yC,EAlBpB1yC,EAAA,GAAA8yC,EAmB0BjuD,oBAAoC,IAnB9DkuD,EAAAh4G,OAAAuhC,GAAA,EAAAvhC,CAAA+3G,EAAA,GAmBK/+F,EAnBLg/F,EAAA,GAmBaya,EAnBbza,EAAA,GAAAG,EAoBoCruD,qBAAkB,GApBtDsuD,EAAAp4G,OAAAuhC,GAAA,EAAAvhC,CAAAm4G,EAAA,GAoBKkN,EApBLjN,EAAA,GAoBoBkN,EApBpBlN,EAAA,GAAAE,EAqBsCxuD,qBAAkB,GArBxDyuD,EAAAv4G,OAAAuhC,GAAA,EAAAvhC,CAAAs4G,EAAA,GAqBKoa,EArBLna,EAAA,GAqBqBoa,EArBrBpa,EAAA,GAAAG,EAsB4B5uD,qBAAmBmtD,GAtB/C0B,EAAA34G,OAAAuhC,GAAA,EAAAvhC,CAAA04G,EAAA,GAsBKnjE,EAtBLojE,EAAA,GAsBeia,GAtBfja,EAAA,GAwBIka,GACU,KAAZ1Q,GACW,KAAX18F,GACoB,KAApB6xF,GACmB,KAAnBF,GACkB,KAAlBM,GACW,KAAX1+F,GACkB,KAAlBw+F,EACE2C,GAAa,CACfgI,QAAS,CACL1iH,GAAI,SACJu5C,QAASO,KAAEr6C,IAAIoxC,EAAW,SAAC3vB,EAAelhB,GAAhB,MAAgC,CACtDA,KACA8W,MAAOoK,EACP/W,MAAO+W,KAEXo4B,mBAAoB,SAAC+gB,GACjB84D,IAAU,GACVxQ,EAAWtoD,IAEflwD,MAAOu4G,EACPrrG,KAAM8V,GAAQjM,MACdusD,eAEJsqC,cAAe,CACX1gG,KAAM8V,GAAQ0tF,eACd1wG,MAAO4tG,EACPhiE,cAAe,SAACj2C,GAAD,OACXk4G,EAAiBl4G,EAAE+9C,cAAc1zC,QACrCyrC,cAAc,EACdC,oBAAqB,kBAAMmiE,EAAiB,MAGhDhyF,OAAQ,CACJ3O,KAAM8V,GAAQnH,OACd7b,MAAO6b,EACP+vB,cAAe,SAACj2C,GAAD,OAAmBizH,EAAUjzH,EAAE+9C,cAAc1zC,QAC5DyrC,cAAc,EACdC,oBAAqB,kBAAMk9E,EAAU,MAEzC9a,cAAe,CACX5gG,KAAM8V,GAAQq1F,YACdr4G,MAAO8tG,EACPliE,cAAe,SAACj2C,GAAD,OACXo4G,EAAiBp4G,EAAE+9C,cAAc1zC,QACrCyrC,cAAc,EACdC,oBAAqB,kBAAMqiE,EAAiB,MAGhDL,gBAAiB,CACbxgG,KAAM8V,GAAQ0qF,gBACd1tG,MAAO0tG,EACP9hE,cAAe,SAACj2C,GAAD,OACXg4G,EAAmBh4G,EAAE+9C,cAAc1zC,QACvCyrC,cAAc,EACdC,oBAAqB,kBAAMiiE,EAAmB,KAC9ChiE,YAGJ6hE,eAAgB,CACZtgG,KAAM8V,GAAQwqF,eACdxtG,MAAOwtG,EACP5hE,cAAe,SAACj2C,GAAD,OACX83G,EAAkB93G,EAAE+9C,cAAc1zC,QACtCyrC,cAAc,EACdC,oBAAqB,kBAAM+hE,EAAkB,KAC7C9hE,YAGJv8B,OAAQ,CACJvZ,GAAI,SACJk2C,aAAc,GACdqD,QAASq5E,GACTt5E,mBAAoB,SAAC//B,GACjBy5G,EAAUz5G,IAEdpP,MAAOoP,EACP9M,YAAa,kBACb4K,KAAM8V,GAAQ5T,QAGlBuhG,aAAc,CACV1nG,MAAO+Z,GAAQ+oE,YACftrF,MAAOwoH,GAAkB,SAAW,OACpCrY,OAAO,EACPhmE,QAAS,WACDq+E,IACAtH,EAAgB,CACZrL,SAAUz6F,EAAOgwD,OACjB/7D,MAAOg+F,EAAcjiC,OACrBj8D,UAAW89F,EAAgB7hC,OAC3Bh8D,SAAU29F,EAAe3hC,OACzB90D,MAAOzC,GACHikG,GAEJuF,WAAYxpG,GACRlF,OAOpByhG,UAAW,CACP5nG,MAAO+Z,GAAQk3F,YACftJ,OAAO,EACPnwG,MAAO,OACPmqC,QAAS,WACL4tE,EAAW,IACXoQ,EAAU,IACVnb,EAAkB,IAClBE,EAAmB,IACnBE,EAAiB,IACjBE,EAAiB,IACjB8a,EAAU,IACVG,IAAU,KAIlBE,iBAAkB,CACdjgH,MAAO+Z,GAAQ8iG,YACflV,OAAO,EACPnwG,MAAO,SACPkqC,SAAU+9E,EACV99E,QAAS,WACLm+E,GAAc,KAItBI,gBAAiB,CACblgH,MAAO+Z,GAAQk1F,WACfvtE,SAAUg+E,EACV/X,OAAO,EACPnwG,MAAO,SACPmqC,QAAS,WACL8wE,GAAa,MAKzB,OACIz7G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iCACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAW2Y,kBAC7BjpH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAW4Y,kBAGjClpH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4CACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iDACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wDACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW10F,QAC5B5b,GAAAC,EAAAC,cAACglF,GAAUorB,GAAWgI,UAG1Bt4G,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wDACXH,GAAAC,EAAAC,cAACwmD,GAAiB4pD,GAAWnhG,QAC7BnP,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW7C,iBAC5BztG,GAAAC,EAAAC,cAAA,KAAGC,UAAU,qBAEL,gGAKZH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wDACXH,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAWzC,eAC5B7tG,GAAAC,EAAAC,cAACmsC,GAAgBikE,GAAW/C,kBAIpCvtG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWM,WAC7B5wG,GAAAC,EAAAC,cAACiuC,GAAiBmiE,GAAWI,gBAIrC1wG,GAAAC,EAAAC,cAAC67G,GAAD,CACI3kF,YAAaA,EACb8gF,uBAAuB,EACvBpvC,OAAQ0yC,EACR77C,QAAS87C,EACTh1E,UAAWA,EACX48B,YAAaA,EACb40C,WAAYA,EACZrxE,mBAAoBA,EACpBvR,wBAAyBA,IAG7Br1B,GAAAC,EAAAC,cAACipH,GAAD,CACIrgD,OAAQ+/C,EACRlpD,QAASmpD,EACTzlD,YAAaA,EACbwiD,YAAaA,EACbp/E,UAAWA,EACXI,oBAAqBA,EACrB9R,mBAAoBA,MClQ9BhS,GAAUqP,GAAgBqlF,yBAK1BnsC,GAAgB,CAClB11C,4BA0BE6hF,eACF,SAAAA,EAAY72G,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA02G,IACtB52G,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAshH,GAAAv2G,KAAAH,KAAMH,KAYV00G,eAAiB,WAAM,IACX8T,EAA4CvoH,EAAKD,MAAjDwoH,wCAER,MAAO,CACH,CACIh/F,OAAQ6pF,GAAalxF,GAAQjM,OAC7By+F,SAAU,QACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQnH,QAC7B25F,SAAU,WACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQ0qF,iBAC7B8H,SAAU,YACV5nE,YAAY,GAGhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQwqF,gBAC7BgI,SAAU,WACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQq1F,aAC7B7C,SAAU,QACV5nE,YAAY,GAEhB,CACIvjB,OAAQ6pF,GAAalxF,GAAQ5T,QAC7BomG,SAAU,aACV5nE,YAAY,EACZvsB,MAAO,IACPqH,KAAM,SAAAxpB,GAAA,IAAGc,EAAHd,EAAGc,MAAH,YACQsB,IAAVtB,GAAiC,KAAVA,EACnBC,GAAAC,EAAAC,cAAA,OAAKgY,IAAKN,GAAsB7X,GAAQi1C,IAAI,KAC5C,OAEZ,CACI5qB,OAAQ,GACRmrF,SAAU,GACVplE,KAAMi5E,EACNz7E,YAAY,EACZvsB,MAAO,GACPqH,KAAM,SAACwlB,GACH,OACIjuC,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,OACIC,UAAU,aACV+X,IAAK7U,GAAU,kBACf2xC,IAAI,UACJrK,QAAS,WACL9pC,EAAKwoH,gBAAgBp7E,EAASuvE,cAIrC38G,EAAKY,MAAM6nH,WACRzoH,EAAKY,MAAMuzG,cACP/mE,EAASuvE,WACTx9G,GAAAC,EAAAC,cAACw9G,GAAD,CACI9jC,SAAU,kBACN/4E,EAAKc,SAAS,CACV2nH,WAAW,MAInBtpH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UACXH,GAAAC,EAAAC,cAAC27G,GAAD,CACIpB,qBACI55G,EAAKD,MACA65G,qBAETxsE,SAAUA,EACVusE,WACI35G,EAAKD,MAAM45G,WAEflkF,8BACIz1B,EAAKD,MACA01B,8BAETV,wBACI/0B,EAAKD,MACAg1B,wBAET+Q,mBACI9lC,EAAKD,MACA+lC,mBAET+zE,cAAc,IAGlB16G,GAAAC,EAAAC,cAAC47G,GAAD,CACI3sG,OAAQugC,KAAE/7B,IACNs6B,EAASA,SACT,aACA,IAEJA,SAAUA,EACVusE,WACI35G,EAAKD,MAAM45G,WAEf7zE,mBACI9lC,EAAKD,MACA+lC,mBAET8zE,qBACI55G,EAAKD,MACA65G,qBAETC,cAAc,EACd9kF,wBACI/0B,EAAKD,MACAg1B,wBAETU,8BACIz1B,EAAKD,MACA01B,uCAnI3Bz1B,EAgJ1B8+D,QAAU,SAAC5/D,GACPc,EAAKc,SAAS,CAAEmnE,OAAQ/oE,KAjJFc,EAmJ1B0oH,kBAAoB,SAACxpH,GACjBc,EAAKc,SAAS,CAAEknH,eAAgB9oH,KApJVc,EAsJ1BwoH,gBAAkB,SAACp7E,GACfptC,EAAKc,SAAS,CACV2nH,WAAYzoH,EAAKY,MAAM6nH,UACvBtU,YAAa/mE,KAzJKptC,EA6J1B+9G,kBAAoB,WAAM,IAAA/8G,EAIlBhB,EAAKD,MAFL6zB,EAFkB5yB,EAElB4yB,SAIJ,OANsB5yB,EAGlBunH,wCAIE,CACI77E,aAAc9Y,EACdgZ,oBAAqB,wBACrBD,iBAAkB,kBAEtB,IAvKN3sC,EAAKY,MAAQ,CACTqnE,QAAQ,EACR+/C,gBAAgB,EAChBS,WAAW,EACXtU,aAAc,GANIn0G,0EA4KjB,IACG4zB,EAAa1zB,KAAKH,MAAlB6zB,SADH+qF,EAEqBz+G,KAAKH,MAAM+lC,mBAA7BtsC,EAFHmlH,EAEGnlH,QAASpE,EAFZupH,EAEYvpH,KACjB,OACI+J,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACV2T,GAAQ2gB,IACLz0B,GAAAC,EAAAC,cAAC6gH,GAAD,KACI/gH,GAAAC,EAAAC,cAACg2G,GAAD//G,OAAAgzB,OAAA,CACIyjB,QAAS7rC,KAAKu0G,iBACdz6F,KAAM4Z,EACNt0B,UAAU,sBACVitC,gBAAgB,EAChBO,YAAY,GACR5sC,KAAK69G,uBAIpBvkH,GA7NM,mBA6NKpE,GACR+J,GAAAC,EAAAC,cAAC+1G,GAAD,CAAc16G,MAAOlB,YA/LF8I,KAAMC,WAsM9BwpE,gBAnOS,SAACnrE,GAAD,MAAuB,IAqO3C6pE,GAFWsB,CAGb6qC,ICjOInsC,GAAgB,CAClB61C,6BAA8B7sF,GAAqB0C,QACnDwyF,yBAA0B10F,GAAiBkC,QAC3CjC,sBACAM,2BACAgsF,sBAAuBnsF,GAAc8B,QACrCoqF,wBAAyBhsF,GAAgB4B,QACzCkqF,wBAAyBvrF,GAAgBqB,SCrC9ByyF,GDwHA78C,aAnGS,SAACnrE,GAAD,MAAuB,CAC3CioH,eAAgBjoH,EAAMqlC,iBAAiBrS,SACvC8sF,eAAgB9/G,EAAMqlC,iBAAiBL,UACvCg5E,gBAAiBh+G,EAAMqlC,iBAAiBF,mBACxC+iF,iBAAkBloH,EAAMqlC,iBAAiBD,oBACzC+iF,YAAanoH,EAAMqlC,iBAAiBH,mBACpCpP,oBAAqB91B,EAAM27B,YAAY7F,sBA6FH+zC,GAAzBsB,CAxEiC,SAAA3tE,GAkB1C,IAjBFkiH,EAiBEliH,EAjBFkiH,6BACAuI,EAgBEzqH,EAhBFyqH,eACAF,EAeEvqH,EAfFuqH,yBACAz0F,EAcE91B,EAdF81B,mBACAM,EAaEp2B,EAbFo2B,wBACAgsF,EAYEpiH,EAZFoiH,sBACAE,EAWEtiH,EAXFsiH,eACAH,EAUEniH,EAVFmiH,wBACAF,EASEjiH,EATFiiH,wBACAzB,EAQExgH,EARFwgH,gBACAhF,EAOEx7G,EAPFw7G,qBACAnkF,EAMEr3B,EANFq3B,8BACAqzF,EAKE1qH,EALF0qH,iBACAC,EAIE3qH,EAJF2qH,YACAlP,EAGEz7G,EAHFy7G,aACAr3C,EAEEpkE,EAFFokE,YACA9rC,EACEt4B,EADFs4B,oBAEM6xF,E5Qo+B8B,SACpCpyG,EACAC,EACAC,GAEA,IAAMC,EAAWD,EAAWrL,KAAK,SAAAlB,GAAC,OAAIA,EAAE+B,QAAUsK,IAElD,GAAIG,EAAU,CACV,IAAMC,EAAcD,EAASE,QAAQxL,KACjC,SAAAyL,GAAE,OAAIA,EAAG5K,QAAUuK,IAGvB,QAAOG,GACDA,EAAYR,aAAe9d,EAAY0d,KAIjD,OAAO,E4Qr/ByCqzG,CAC5C9wH,EAAY+wH,eACZ9wH,EAA4B+wH,aAC5BxyF,GAGEkxF,EAA6B1xG,GAC/Bhe,EAAY+wH,eACZ9wH,EAA4BgxH,aAC5BzyF,GAGEmxF,EAA4B3xG,GAC9Bhe,EAAY+wH,eACZ9wH,EAA4BixH,YAC5B1yF,GAGJ,OACIv3B,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAACgqH,GAAD,CACIxI,gBAAiBP,EACjB16E,UAAW86E,EACXl+C,YAAaA,EACb40C,WAAYmJ,EACZx6E,mBAAoB64E,EACpB54E,oBAAqB8iF,EACrB50F,mBAAoBA,EACpB0zF,2BAA4BA,EAC5BC,0BAA2BA,EAC3B7C,YAAa2D,EACbn0F,wBAAyBA,EACzBiB,8BAA+BA,IAGnCt2B,GAAAC,EAAAC,cAACiqH,GAAD,CACI1P,qBAAsBA,EACtBhmF,SAAUi1F,EACVN,wCACIA,EAEJnzF,cAAelB,EACf4wF,SAAUtE,EACV56E,UAAW86E,EACX/G,WAAY0G,EACZv6E,mBAAoBijF,EACpBtzF,8BAA+BA,EAC/BokF,aAAcA,OE5F9B,SAAS0P,GAAartF,GAClB,OAAQA,GACJ,IAAK,YACD,OAAO0sF,GACX,IAAK,mBACD,OAAOnI,GACX,IAAK,OACD,OAAOzV,GACX,IAAK,aACD,OAAOyZ,GAEX,QACI,OAAOjZ,IAuCnB,IA8BMge,GAAiBpiD,KA9BiB,SAACrnE,GACrC,OACIZ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UAAUvK,GAAG,iBACxBoK,GAAAC,EAAAC,cAACoqH,GAAA,EAAD,KAtCZ,SAAoB1pH,GAgChB,OA/BeA,EAAM22B,oBAAqBliC,IAAI,SAAA8E,GAC1C,MAAO,CACH6O,MAAO7O,EAASuS,MAChBpS,KAAM,IACN07C,MAAK,GAAA/rC,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CACEu5C,KAAEq4E,OAAO5tH,EAASkd,QAAS,QAAQhiB,IAClC,SAAA4J,GAAqC,IAAlC89B,EAAkC99B,EAAlC89B,KAAMrwB,EAA4BzN,EAA5ByN,MAAU22D,EAAkBltE,OAAAu4B,EAAA,EAAAv4B,CAAA8I,EAAA,kBACjC,MAAO,CACH3E,KAAMyiC,EACNwtF,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,WAAMwM,IACrBuW,KAAMmnG,GAAartF,GACnB/zB,MAAO0D,EACP22D,YAAYltE,OAAAkuB,GAAA,EAAAluB,CAAA,GACLktE,EADI,CAEPG,aAAc5iE,EAAMkW,YAVnC,CAgBD,CACIxc,KAAM,IACNiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,oBACf+iB,KAAM6qD,GACN9kE,MAAO,OACPq6D,YAAa,SAahBmnD,CAAW5pH,GAAOvL,IAAI,SAACygD,GAAD,OACnBA,EAAME,MAAM3gD,IACR,SAAC4gD,EAAyB5T,GACtB,IAAMj/B,EAED6yC,EAAShzB,KACd,OACIjjB,GAAAC,EAAAC,cAACuqH,GAAA,EAAD,CACIpqH,IAAKgiC,EACL/nC,KAAMw7C,EAAMx7C,KAAO27C,EAAS37C,KAC5BowH,OAAK,GAGL1qH,GAAAC,EAAAC,cAACkD,EAAD,CACIigE,YAAaptB,EAASotB,uBAmBxDiI,GAAgB,CAClBq/C,wBAAyBtrG,IAKvBurG,yLACO,IAAA/oH,EAWMd,KAAKH,MAXXiqH,EAAAhpH,EAEDipH,aAAgBx7G,EAFfu7G,EAEev7G,QAAS8zB,EAFxBynF,EAEwBznF,eAFxBkpC,EAAAzqE,EAGD0qE,UACItvC,EAJHqvC,EAIGrvC,QACAC,EALHovC,EAKGpvC,aACA3F,EANH+0C,EAMG/0C,oBACA3b,EAPH0wD,EAOG1wD,OACA0b,EARHg1C,EAQGh1C,OAEJqzF,EAVC9oH,EAUD8oH,wBAuBE/pH,EAAQ,CACV40C,OArBWje,EAAoBliC,IAAI,SAAA8E,GACnC,MAAO,CACH6O,MAAO7O,EAASuS,MAChBpS,KAAM,IACN07C,MAAO77C,EAASkd,QAAShiB,IACrB,SAAAwE,GAAqC,IAAlCkjC,EAAkCljC,EAAlCkjC,KAAMrwB,EAA4B7S,EAA5B6S,MAAU22D,EAAkBltE,OAAAu4B,EAAA,EAAAv4B,CAAA0D,EAAA,kBACjC,MAAO,CACHS,KAAMyiC,EACNwtF,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,WAAMwM,IACrBuW,KAAM,kBAAMmnG,GAAartF,IACzB/zB,MAAO0D,EACP22D,YAAYltE,OAAAkuB,GAAA,EAAAluB,CAAA,GACLktE,EADI,CAEPG,aAAclsC,GAAU,WAS5C3nB,UAAWL,EAAQI,iBAAiBC,UACpCC,SAAUN,EAAQI,iBAAiBE,SACnC5V,YAAaopC,EACbxnB,SACA0b,SACAme,SAAS,EACTH,aAAc,kBAAMq1E,MAGxB,OADiBpgF,GAAYkiC,kBAKzBzsE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBACXH,GAAAC,EAAAC,cAAC6qH,GAAYnqH,GACbZ,GAAAC,EAAAC,cAACmqH,GAAD,CACI9yF,oBAAqBA,EACrBzgB,MAAOwgB,GAAU,GACjB2F,QAASA,EACTC,aAAcA,EACdkrC,iBAAkB,WACd79B,GAAYgL,SACZ30C,EAAM00C,mBAIlBt1C,GAAAC,EAAAC,cAAC8qH,GAAD,OAjBGhrH,GAAAC,EAAAC,cAACysE,GAAA,EAAD,CAAUp2B,GAAI,CAAEljC,SAAU,mBA9C1BlQ,KAAM8nH,eAqEVr+C,gBAhFS,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,YACjB0tF,aAAcrpH,EAAMkiC,iBA8EgB2nC,GAAzBsB,CAAwCg+C,ICpLjDjiH,GAAgBypB,GAAgBxpB,OA2EvBsiH,GAtDI,YAAA/gH,UAAAV,OAAA,QAAApI,IAAA8I,UAAA,GAAAA,UAAA,GAA8B,IAA3B+9D,MAAH,OAAqC,SACpDC,GAIA,gBAAAwD,GAAA,SAAA4lC,IAAA,IAAAC,EAAA3wG,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAwwG,GAAA,QAAAh4C,EAAApvD,UAAAV,OAAAglE,EAAA,IAAAniE,MAAAitD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAgV,EAAAhV,GAAAtvD,UAAAsvD,GAAA,OAAA54D,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,MAAAywG,EAAAr7G,OAAA8K,GAAA,EAAA9K,CAAAo7G,IAAArwG,KAAA6Z,MAAAy2F,EAAA,CAAAzwG,MAAAkJ,OAAAwkE,MACIz+B,aAAe,SAACjkC,IAEZo/G,EAD+BtqH,EAAKD,MAA5BuqH,oBACWp/G,IAH3BlL,EAAA,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAAo7G,EAAA5lC,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAAo7G,EAAA,EAAAlxG,IAAA,SAAAN,MAAA,WAMa,IAAA8B,EASDd,KAAKH,MAPLmb,EAFCla,EAEDka,UACAzM,EAHCzN,EAGDyN,QACAgO,EAJCzb,EAIDyb,aACAtU,EALCnH,EAKDmH,MACA86B,EANCjiC,EAMDiiC,uBACAsnF,EAPCvpH,EAODupH,uBACAC,EARCxpH,EAQDwpH,YAEEv/G,EACFiQ,EAAUlQ,KACN,SAAC0C,GAAD,OACIA,EAAExC,iBAAmB+3B,KACxB/nB,EAAU,GACnB,OACI/b,GAAAC,EAAAC,cAAA,OAAKC,UAAU,oBACV6I,GACGhJ,GAAAC,EAAAC,cAAA,MAAIC,UAAU,2BAA2B6I,GAG7ChJ,GAAAC,EAAAC,cAACooE,GAAD,CACIn4B,UAAsB9uC,IAAhBgqH,EACNriH,MAAOL,GAAc2iH,cAActiH,MACnCqlB,YAAa1lB,GAAc2iH,cAAcj9F,YACzC5sB,MAAO,EACP61C,aAAc8zE,IAGlBprH,GAAAC,EAAAC,cAACqrH,GAAD,CACIxnF,gBAAiBj4B,EACjBiQ,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd0yB,aAAcjvC,KAAKivC,eAEvBhwC,GAAAC,EAAAC,cAACioE,EAAqBpnE,KAAKH,YA1C3C2wG,EAAA,CAAqBpuG,KAAMC,aC/BhBooH,iNCoBX/pH,MAAQ,CACJgwG,WAAW,EACXga,QAAS,GACTziH,MAAO,MAGX0iH,aAAe,WAAM,IAAAjlE,EACqB5lD,EAAKY,MAAnCgwG,EADShrD,EACTgrD,UAAWga,EADFhlE,EACEglE,QAASziH,EADXy9C,EACWz9C,MAE5B,OAAKyoG,EAKDzxG,GAAAC,EAAAC,cAAC8nE,GAAD,CACI73B,KAAMshE,EACN/iE,YAAa,kBAAM7tC,EAAKqsG,gBAAgB,GAAI,MAE5CltG,GAAAC,EAAAC,cAAA,UACIgY,IAAG,iCAAAjO,OAAmCwhH,EAAnC,eACHE,YAAY,IACZC,iBAAe,EACf5iH,MAAOA,EACPoY,MAAM,OACNC,OAAO,UAdR,QAoBfwqG,UAAY,WACR,IAAMzkF,EAAS0Z,SAASgrE,cAAc,UAChCC,EAAQjrE,SAASgrE,cAAc,SACrC,GAAe,OAAX1kF,EAAiB,CACjB,IAAM4kF,EAAY5kF,EAAOlvB,IACzBkvB,EAAOlvB,IAAM8zG,EAEH,OAAVD,GACAA,EAAME,WAId/e,gBAAkB,SAACue,EAAiBziH,GAAkB,IAC1CyoG,EAAc5wG,EAAKY,MAAnBgwG,UACR5wG,EAAKc,SAAS,CAAE8vG,WAAYA,EAAWga,UAASziH,UAC5CyoG,GACA5wG,EAAKgrH,uFAIJ,IAAAjqH,EAAAb,KAAAc,EACwBd,KAAKH,MAA1Bw3C,EADHv2C,EACGu2C,SAAU8zE,EADbrqH,EACaqqH,OAElB,OACIlsH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACVY,KAAK2qH,eACN1rH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACV+rH,EAAO72H,IAAI,SAACob,EAAgB4xB,GACzB,IAAMopF,EjR+IT,SAACpzE,GAClB,IAAMruC,EAAIquC,EAAKjmC,MAAM,MACrB,GAAIpI,EAAEP,OAAS,EACX,MAAO,GAEX,IAAI0iH,EAAWniH,EAAE,GACXoiH,EAAoBD,EAAS7hH,QAAQ,KAI3C,OAH2B,IAAvB8hH,IACAD,EAAWA,EAASr5G,UAAU,EAAGs5G,IAE9BD,EiRzJ6BE,CAAa57G,EAAK4nC,MAClC,OACIr4C,GAAAC,EAAAC,cAAA,OACIG,IAAKgiC,EACLliC,UAAU,4CAEVH,GAAAC,EAAAC,cAAA,OACIC,UAAU,mDACV+L,KAAK,SACLy+B,QAAS,kBACL/oC,EAAKsrG,gBACDue,EACAh7G,EAAKzH,SAIbhJ,GAAAC,EAAAC,cAAA,OACIgY,IAAG,8BAAAjO,OAAgCwhH,EAAhC,UACHrqG,MAAM,OACNC,OAAO,UAGfrhB,GAAAC,EAAAC,cAAA,SAAIuQ,EAAKzH,WAKzBhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qCACVi4C,EAAS/iD,IAAI,SAACob,EAAgB4xB,GAC3B,OACIriC,GAAAC,EAAAC,cAAA,OACIG,IAAKgiC,EACLliC,UAAU,8CAEVH,GAAAC,EAAAC,cAAA,KACIk2C,KAAM3lC,EAAK4nC,KACX14C,OAAO,SACP02C,IAAI,uBAEH5lC,EAAKzH,OAEVhJ,GAAAC,EAAAC,cAAA,eAAO2K,GAAiB4F,EAAKvW,MAAQ,iBApGjCiJ,KAAMC,WCdpC2f,GAAUqP,GAAgBk6F,uBCLjBA,GDWiC,SAAArtH,GAAgB,IAAb4P,EAAa5P,EAAb4P,OAC/C,GAAIA,GAA4B,IAAlBA,EAAOpF,OACjB,OAAO,KAEX,IAAMoR,ElRoZoB,SAC1BhM,GAEA,IAAIiG,EACAy3G,EACJ,QAAelrH,IAAXwN,EACA,MAAO,CACHiG,OACAy3G,QAGR,IAAMx9G,EAAeF,EAAOzB,KAAKoB,IAC3BQ,GAAc,IAAI1Q,MAAOqQ,UAW/B,OAVAI,EAAavC,QAAQ,SAACyC,GAClB,IAAMu9G,EAAa,IAAIluH,KAAK2Q,EAAMP,2BAA2BC,UACzD69G,EAAax9G,QAAwB3N,IAATyT,IAC5BA,EAAO7F,GAEPu9G,EAAax9G,IACbu9G,EAAOt9G,KAIR,CACH6F,OACAy3G,QkR7aSE,CAAsB59G,GAEnC,OACI7O,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4BACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ2pG,aACZ1sH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yCACV0a,GAAQA,EAAK0xG,KACVvsH,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,aAAA+J,OAAS4Q,EAAK0xG,KAAoB9+G,QAC7BoN,EAAK0xG,KAAoB9+G,OAD9B,YAEAzN,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+CAAb,MACQ0a,EAAK0xG,KAAKryH,OAItB8F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+CACR4iB,GAAQ4pG,YAKzB3sH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ6pG,aACZ5sH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yCACV0a,GAAQA,EAAK/F,KACV9U,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,aAAA+J,OAAQ4Q,EAAK/F,KAAKrH,OAAlB,YACAzN,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+CAAb,MAAA8J,OAAkEY,GAC9DgQ,EAAK/F,KAAK5a,SAIlB8F,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+CACR4iB,GAAQ4pG,cE5C/B5pG,GAAUqP,GAAgB6uC,eCLjBA,GD2BuC,SAAAhiE,GAI3B,IAHvB4tH,EAGuB5tH,EAHvB4tH,YACA18E,EAEuBlxC,EAFvBkxC,KACA28E,EACuB7tH,EADvB6tH,WAEMhhB,EAAWqB,eADMntD,EAEeC,oBAAS,CAAErsC,IAAK,GAAIvY,SAAS,IAF5C6kD,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAEhB+sE,EAFgB7sE,EAAA,GAEH8sE,EAFG9sE,EAAA,GAGf3kD,EAAU0xH,aAAY,SAACxrH,GAAD,MAAuB,CACjDlG,MAAOkG,EAAMmmC,iBAAiBrsC,SAD1BA,MAHe2xH,EAOoCD,aACvD,SAACxrH,GAAD,MAAuB,CACnB4lC,OAAQ5lC,EAAMmmC,iBAAiBP,OAC/BvD,uBACIriC,EAAMuiC,gBAAgBF,uBAC1BV,eAAgB3hC,EAAMkiC,eAAeP,kBALrCiE,EAPe6lF,EAOf7lF,OAAQvD,EAPOopF,EAOPppF,uBAAwBV,EAPjB8pF,EAOiB9pF,eASlCu5B,EAAc,WAChBmvC,EAASr1E,MACTq2F,IACAhhB,EACIzrF,GAAoB2W,QAAQ,CACxB/8B,YAAa6pC,EACb9pC,YAAaopC,EACblnB,KAAM,cAKZixG,EAAc,WACZN,IACA/gB,EAASr1E,MACTu2F,EAAe,CAAEp5G,IAAK,GAAIvY,SAAS,IACnCywG,EACIt1E,GAAqBQ,QAAQ,CACzB4D,SAAS,IAAIt8B,MAAO6f,WACpBwc,QAASkyF,OAsEzB,OACI7sH,GAAAC,EAAAC,cAAC8nE,GAAD,CACI7nE,UAAU,mBACViwC,iBAAe,EACfD,KAAMA,EACNzB,YAAaiuB,GAEb38D,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ/Z,OA3BH,WAClB,OAAKq+B,GAAW9rC,EAOZA,GAASwxH,EAAYn5G,KArDRA,EAsDMrY,GAAgBwxH,EAAYn5G,IArDnD5T,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK8gE,KACLhkC,IAAI,aACJvzB,MAAO,CAAEL,MAAO,OAAQC,OAAQ,UAGpCrhB,GAAAC,EAAAC,cAAA,SAAI0T,GACJ5T,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mBACfH,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPmqC,QAASwiF,EACTnkH,MAAO+Z,GAAQ82D,UA4CnBkzC,EAAY1xH,QAtChB2E,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACXH,GAAAC,EAAAC,cAAA,OACIgY,IAAK8gE,KACLhkC,IAAI,eACJvzB,MAAO,CAAEL,MAAO,OAAQC,OAAQ,UAEpCrhB,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQgY,gBAAgB1/B,SAC5B2E,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAO,SACPmqC,QAASgyB,EACT3zD,MAAO+Z,GAAQmgD,mBAMvBljE,GAAAC,EAAAC,cAACw9E,GAAD,CACIzD,mBAAoB5yC,EACpBs1B,YAAaA,EACbyE,eAAgB,SAAC/lE,EAASuY,GACTo5G,EAAT3xH,EAAwB,CAAEuY,IAAK,GAAIvY,SAAS,GAC5B,CAAEuY,IAAKA,EAAMvY,SAAS,OAQ1C2E,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACXH,GAAAC,EAAAC,cAACijE,GAAD,OAjDI,IAACvvD,EA0ERw5G,MEzIXrqG,GAAUqP,GAAgBi7F,mBAiB1BC,GAAW,CACb,CAAEnkE,OAAQ,IAAI7qD,MAAK,IAAIA,MAAOia,SAAQ,IAAIja,MAAOS,UAAY,KAC7D,CAAEiE,MAAO,IAAI1E,MAAK,IAAIA,MAAOia,SAAQ,IAAIja,MAAOS,UAAY,MAC5D,CACIqtC,WAAY,CAAC,EAAG,KAIXmhF,GAAY,SAAAtuH,GAKH,IAJlBgQ,EAIkBhQ,EAJlBgQ,MACAu+G,EAGkBvuH,EAHlBuuH,sBACAtgB,EAEkBjuG,EAFlBiuG,gBACAugB,EACkBxuH,EADlBwuH,gBACkBztE,EACsBC,qBAAkB,GADxCC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACX0tE,EADWxtE,EAAA,GACGytE,EADHztE,EAAA,GAAAG,EAEoBJ,yBAAc5+C,GAFlCi/C,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEXkS,EAFWjS,EAAA,GAEEstE,EAFFttE,EAAA,GAclB,OACItgD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,kDAAhB,KAGAH,GAAAC,EAAAC,cAAA,oCACuB+O,EAAM4+G,cAD7B,OACgD5+G,EAAM/U,KADtD,aACiE,IADjE,cAEgB+U,EAAMxB,OAFtB,iCAMJzN,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQ2nD,QAEVgjD,GACE1tH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kCACXH,GAAAC,EAAAC,cAAC4tH,GAAD,CACI5hF,gBAAiBqmB,EACjB7lB,gBA5BI,SAACxyC,GACjBA,EAAKoyC,qBAAuB,IAAIhuC,MAAK,IAAIA,MAAOia,SAAQ,IAAIja,MAAOS,UAAY,IAAIutC,sBAAwBpyC,EAAKoyC,qBAAuB,IAAIhuC,MAAK,IAAIA,MAAOia,SAAQ,IAAIja,MAAOS,UAAY,KAAKutC,uBAG/LpyC,EAAKyU,WAAY,IAAIrQ,MAAOqQ,YtRoItB,SAACzU,GACf,OAAyB,IAAlBA,EAAK8e,UAAoC,IAAlB9e,EAAK8e,SsRrIe+0G,CAAU7zH,IACpD0zH,EAAe1zH,GAEnBszH,EAAsBv+G,EAAO/U,EAAKoyC,wBAsBlBvpC,aAAcuqH,KAGlBttH,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,OACNwI,MAAO+Z,GAAQirG,YACfrjF,QAAS,kBAAMgjF,GAAgB,MAEnC3tH,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,WAAuBa,IAAhBkxD,EAA4B,SAAW,OAC9CvpD,MAAO+Z,GAAQkrG,WACftjF,aACoBtpC,IAAhBkxD,EACM,kBAAM26C,EAAgB,KACtB,iBAKlBltG,GAAAC,EAAAC,cAAA,WAGQF,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,SACNwI,MAAO+Z,GAAQmrG,aACfvjF,QAAS,kBAAMgjF,GAAgB,MAMnC3tH,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,SACNwI,MAAO+Z,GAAQorG,gBACfxjF,QAAS,kBAAM8iF,EAAgBx+G,EAAO,UAkGnDo+G,GA5EY,SAAAxzH,GAIL,IAHlBgV,EAGkBhV,EAHlBgV,OACA2+G,EAEkB3zH,EAFlB2zH,sBACAtgB,EACkBrzG,EADlBqzG,gBAEMpB,EAAWqB,eADC1yC,EAEoBxa,sBAFpBya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAEXoyD,EAFWnyD,EAAA,GAEE0zD,EAFF1zD,EAAA,GAAAE,EAGoB3a,qBAAS,GAH7B4a,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAGXyzD,EAHWxzD,EAAA,GAGEyzD,EAHFzzD,EAAA,GAKZ0zD,EAAwB,SAACt/G,GAC3Bq/G,GAAe,GACfF,EAAen/G,GACf68F,EACIt1E,GAAqBQ,QAAQ,CACzB4D,SAAS,IAAIt8B,MAAO6f,WACpBwc,QAAS1rB,MAKrB,GAAIJ,GAAUA,EAAOpF,OAAS,EAAG,CAC7B,IAAM+kH,EAA8B,GA2BpC,OA1BA3/G,EAAOrC,QAAQ,SAACpX,GAEK,mBAAbA,EAAE+Z,QAIG/Z,EAAE8qC,yBACC1yB,SAASpY,EAAE8qC,wBAAyB,IAAM,GAC7C9qC,EAAE+qC,4BACC3yB,SAASpY,EAAE+qC,2BAA4B,IAAM,GAQrD/qC,GACAo5H,EAAWhvH,KAAK,CACZyP,MAAO7Z,EACPq5H,mBAL2B,EAM3BC,iBAPyB,MAajC1uH,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACKwsH,GAAcA,EAAW/kH,OAAS,GAC/BzJ,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ4rG,qBAEhBH,EAAWn5H,IAAI,SAACu5H,EAAmBvsF,GAChC,OACIriC,GAAAC,EAAAC,cAAC2uH,GAAD,CACIxuH,IAAKgiC,EACLpzB,MAAO2/G,EAAG3/G,MACVu+G,sBAAuBA,EACvBtgB,gBAAiBA,EACjBugB,gBAAiBc,MAK7BvuH,GAAAC,EAAAC,cAAC4uH,GAAD,CACIhC,WAAY,kBAAMwB,GAAe,IACjCn+E,KAAMk+E,EACNxB,YAAaA,KAK7B,OAAO,gBCtML9pG,GAAUqP,GAAgBknB,gBAAgBy1E,oBAuFjCA,GA/E8B,SAAA9vH,GAIvC,IAHF8vB,EAGE9vB,EAHF8vB,KACAkqB,EAEEh6C,EAFFg6C,YACAxgC,EACExZ,EADFwZ,OAEMu2G,EAAkBjsG,GAAQksG,SAASx2G,GACnCy2G,EAAcnsG,GAAQlI,KAAKpC,GAC3B02G,EAAgBpsG,GAAQd,OAAOxJ,GAE/Bg+B,EACS,OAAXh+B,EACMpV,GAAU,oBACVA,GAAU,mBAEdqzC,EAAO,SAACn3C,GAAD,OACTS,GAAAC,EAAAC,cAAA,QAAMC,UAAiB,IAANZ,EAAU,aAAe,IAAKA,EAAI,EAAnD,MAGJ,OAAKwvB,EAID/uB,GAAAC,EAAAC,cAAC8nE,GAAD,CACI7nE,UAAU,wBACVgwC,KAAMphB,EACNqhB,iBAAe,EACf1B,YAAauK,GAEbj5C,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,gCACT4iB,GAAQC,OAAOvK,IAGpBzY,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACXH,GAAAC,EAAAC,cAAA,SAAI8uH,EAAgBhmH,OAEpBhJ,GAAAC,EAAAC,cAAA,UACK8uH,EAAgBI,KAAK/5H,IAAI,SAACD,EAAGmK,GAAJ,OACtBS,GAAAC,EAAAC,cAAA,MAAIG,IAAKd,GACJm3C,EAAKn3C,GACLnK,MAKb4K,GAAAC,EAAAC,cAAA,OAAKgY,IAAKu+B,EAAQzB,IAAI,cAG1Bh1C,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAAA,UACKgvH,EAAY75H,IAAI,SAAAwE,EAAkBw1H,GAAlB,IAAGrmH,EAAHnP,EAAGmP,MAAOomH,EAAVv1H,EAAUu1H,KAAV,OACbpvH,GAAAC,EAAAC,cAAA,MAAIG,IAAKgvH,GACLrvH,GAAAC,EAAAC,cAAA,SACKw2C,EAAK24E,GADV,IACmBrmH,GAEnBhJ,GAAAC,EAAAC,cAAA,UACKkvH,EAAK/5H,IAAI,SAACQ,EAAGq+C,GAAJ,OACNl0C,GAAAC,EAAAC,cAAA,MAAIG,IAAK6zC,GAAMr+C,WAQvCmK,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iCACXH,GAAAC,EAAAC,cAAA,SACKivH,EAAclsG,KAAM,IACrBjjB,GAAAC,EAAAC,cAAA,KAAGk2C,KAAM+4E,EAAc92E,MAClB82E,EAAcG,UACd,IACJH,EAAcI,QApDxB,MCNTxsG,GAAUqP,GAAgBknB,gBAC1Bk2E,GAAgBp9F,GAAgBq9F,YAAY58E,YAE5CjG,GAAU,CACZ,CACIxiB,OAAQolG,GAAct1H,KACtBq7G,SAAU,gBACV9sF,KAAM,SAAC7nB,GAAD,OAAgBZ,GAAAC,EAAAC,cAAA,YAAO2K,GAAiBjK,EAAMb,SACpDqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAcrsG,QACtBoyF,SAAU,qBACVn0F,MAAO,KAEX,CACIgJ,OAAQolG,GAAc/9G,UACtB8jG,SAAU,YACV9sF,KAAM,SAAC7nB,GAAD,OAAgBZ,GAAAC,EAAAC,cAAA,YAAO2K,GAAiBjK,EAAMb,SACpDqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAcx+G,QACtBukG,SAAU,UACV9sF,KAAM,SAAC7nB,GAAD,OAAgBZ,GAAAC,EAAAC,cAAA,YAAO2K,GAAiBjK,EAAMb,SACpDqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc99G,SACtB6jG,SAAU,WACV9sF,KAAM,SAAC7nB,GAAD,OAAgBZ,GAAAC,EAAAC,cAAA,YAAOU,EAAMb,QACnCqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAcjiH,UACtBgoG,SAAU,YACV9sF,KAAM,SAAC7nB,GAAD,OAAgBZ,GAAAC,EAAAC,cAAA,YAAOU,EAAMb,QACnCqhB,MAAO,MAqBTsuG,GAAqB,SAACx+G,GACxB,OACIlR,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mCACV+Q,EAAO7b,IAAI,SAACsV,EAAqB03B,GAAtB,OACRriC,GAAAC,EAAAC,cAAA,OACIG,IAAKgiC,EACLliC,UAAU,wCAEVH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,+CAChBH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,kDAChBH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,oDAChBH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,oDAChBH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,qDACXwK,EAAEkoC,aAEP7yC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,oDxRsMVoN,EwRrMgB5C,EAAE4C,UxRsMjC5E,GAAcgnH,qBAAqBpiH,MADrB,IAACA,MwRjLpB0mC,GAAoB,SACtBnoC,EACA4zC,EACAvyC,GAEA,GAAIrB,EAASs1B,cAAcS,mBAAqB/qC,EAAkBwiB,QAC9D,OAAO,KAEX,IAAMsgC,ExRwnBkB,SACxB8F,EACAvyC,EACArN,GAEA,GAA4B,KAAxB4/C,EAAaj2C,QAAqC,KAApB0D,EAAS1D,OACvC,OAAO,EAEX,IAAMkB,EAAc,IAAV7K,EAAc,GAAKA,EAAQ,EACrC,OAAOgO,QAA2B,IAAlB4xC,EAAa/0C,GAAYwC,EAASxC,IAAI+nC,QAAQ,IwRjoB7Ck9E,CAAoBlwE,EAAcvyC,EAAU,IACvD0iH,EACkB,OAApB/jH,EAAS2M,OACHpV,GAAU,cACVA,GAAU,aACpB,OACIrD,GAAAC,EAAAC,cAAC4vH,GAAD,CACIp2E,MAAO,IACPE,SAAUA,EACVO,QAAS01E,KAqBRE,GAAQ5sH,KAAM6sH,KACvB,SAAA/wH,GAAuD,IAApD6M,EAAoD7M,EAApD6M,SAAUoF,EAA0CjS,EAA1CiS,OAAQ++G,EAAkChxH,EAAlCgxH,gBACXC,ExRubK,SAACh/G,GAAD,OACfA,EAAO9D,KAAK,SAACnN,EAAewO,GACxB,IAAMpB,EAAI,IAAI/O,KAAK2B,EAAE+Q,SAASrC,UACxBrB,EAAI,IAAIhP,KAAKmQ,EAAEuC,SAASrC,UAC9B,OAAItB,EAAIC,EACG,EAEPD,EAAIC,GAAW,EACZ,IwR/bY6iH,CAAWj/G,GAExBk/G,ExRgce,SACzBl/G,EACArD,GAEA,IAAM6xC,EAAyBpzC,MAAM,IAAI4wC,KAAK,GACxCyC,EAAkBrzC,MAAM,IAAI4wC,KAAK,GACjC0C,EAAiBtzC,MAAM,IAAI4wC,KAAK,GAChC2C,EAAuBvzC,MAAM,IAAI4wC,KAAK,GACxC/vC,EAAqB,GAEzB,GAAIU,EACA,GAAkB,IAAdA,EAAGpE,OACH0D,EAAWb,MAAM,IAAI4wC,KAAKrvC,EAAG,GAAGwiH,qBAC7B,CACH,IAAMh8E,EAASxmC,EAAGhC,KAAK,SAAAzW,GAAC,OAAIA,EAAEmY,YAAcxW,EAAW6wD,SACjDtT,EAASzmC,EAAGhC,KAAK,SAAAzW,GAAC,OAAIA,EAAEmY,YAAcxW,EAAW0wD,SACjD6oE,EAAKj8E,EAASA,EAAOg8E,gBAAkB,EACvCE,EAAKj8E,EAASA,EAAO+7E,gBAAkB,EAC7CljH,EAAW,CAACojH,EAAIA,EAAIA,EAAID,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAIC,EAAIA,GAIhE,IAAMhxE,EAAmB,GAErBixE,EAAW,IAAIlyH,KACf4S,EAAOzH,OAAS,IAChB+mH,EAAWthH,aAAMgC,EAAO,GAAGF,QAAS,aAAc,IAAI1S,OAG1DkyH,EAASC,YAAYD,EAASjyH,cAAgB,GAC9C,IAAMmyH,EAAeF,EAAS7hH,UA3BVgiH,GAAA,EAAAC,GAAA,EAAAC,OAAAxvH,EAAA,IA6BpB,QAAAyvH,EAAAC,EAAsB7/G,EAAtB2E,OAAAC,cAAA66G,GAAAG,EAAAC,EAAAj8G,QAAAiB,MAAA46G,GAAA,EAA8B,KACpBhmH,EADoBmmH,EAAA/wH,MAGpBixH,EAAQ9hH,aAAMvE,EAAE8G,UAAW,aAAc,IAAInT,MAEnD,GAAIoyH,EAAeM,EAAMriH,UAAW,CAChC,IAAM4gH,EAAMrgH,aAAMvE,EAAEqG,QAAS,aAAc,IAAI1S,MACzC2yH,EAAaD,EAAMlyH,WACnBoyH,EAAW3B,EAAIzwH,WAEfszC,EAAQznC,EAAEwmH,WACZxmH,EAAEwmH,UAAUtlH,KAAK,SAAAwB,GAAC,OAAIA,EAAEE,YAAcxW,EAAWg5B,QAAU,CAC3D8iB,YAAa,GAEXR,EAAO1nC,EAAEwmH,WACXxmH,EAAEwmH,UAAUtlH,KAAK,SAAAwB,GAAC,OAAIA,EAAEE,YAAcxW,EAAWi5B,OAAS,CAC1D6iB,YAAa,GAEXV,EAAaxnC,EAAEwmH,WACjBxmH,EAAEwmH,UAAUtlH,KACR,SAAAwB,GAAC,OAAIA,EAAEE,YAAcxW,EAAW84B,cAC9B,CAAEgjB,YAAa,GAEzB,GAAIloC,EAAEk3B,mBAAqB9pC,EAAoBuhB,QAC3ComC,EAAawxE,IAAaz+E,WAAW9nC,EAAE+G,UACvC6tC,EAAO//C,KAAKmL,EAAEqG,SACd2uC,EAAMuxE,IAAa9+E,EAAKS,YACxB+M,EAAKsxE,IAAa7+E,EAAIQ,YACtBgN,EAAWqxE,IAAa/+E,EAAUU,iBAC/B,GAAIo+E,IAAeC,EACtBxxE,EAAauxE,IAAex+E,WAAW9nC,EAAE+G,UACzC6tC,EAAO//C,KAAKmL,EAAEqG,SACd2uC,EAAMsxE,IAAe7+E,EAAKS,YAC1B+M,EAAKqxE,IAAe5+E,EAAIQ,YACxBgN,EAAWoxE,IAAe9+E,EAAUU,gBACjC,CACH,IAAIojC,EAAQi7C,EAAWD,EACvB1xE,EAAO//C,KAAKmL,EAAEqG,SACVilE,EAAQ,IACRA,GAAS,IAEb,IAAK,IAAIm7C,EAAI,EAAGA,GAAKn7C,EAAOm7C,GAAK,EAAG,CAChC,IAAMC,EACFL,EAAMzyH,eAAiB0yH,EAAaG,EAAI,GAAK,EAAI,GAE/CE,GAAML,EAAaG,GAAK,GAExBpnH,EAAU,IAANonH,EAAUJ,EAAQ,IAAI1yH,KAAK+yH,EAAWC,EAAI,GAE9CC,EACe,KAAjBvnH,EAAElL,WAAoBuyH,EAAY,EAAIA,EAOpCG,KAJFJ,IAAMn7C,EACAs5C,EACA,IAAIjxH,KAAKizH,GAAeD,EAAK,GAAK,GAAI,KAExBtnH,KAAOulH,GAAOyB,GAEtCtxE,EAAa4xE,IAAO7+E,WAAW9nC,EAAE+G,UAAY8/G,EAE7C7xE,EAAM2xE,IAAOl/E,EAAKS,YAAc2+E,EAChC5xE,EAAK0xE,IAAOj/E,EAAIQ,YAAc2+E,EAC9B3xE,EAAWyxE,IAAOn/E,EAAUU,YAAc2+E,MA5FtC,MAAA59G,GAAAg9G,GAAA,EAAAC,EAAAj9G,EAAA,YAAA+8G,GAAA,MAAAI,EAAA96G,QAAA86G,EAAA96G,SAAA,WAAA26G,EAAA,MAAAC,GAiGpB,IAAMY,EAAoBlyE,EAAOlqD,IAAI,SAAAqX,GAAK,OACtCwC,aAAMxC,EAAO,aAAc,IAAIpO,QAEnCmzH,EAAkBrkH,KAAK,SAACnN,EAAGwO,GAAJ,OAAUxO,EAAE0O,UAAYF,EAAEE,YAOjD,IALA,IAAM+iH,EAAmBD,EAAkBp8H,IAAI,SAAA6E,GAAI,OAAIA,EAAKyU,YAEtDgjH,EAAe14G,KAAKujC,IAALzhC,MAAA9B,KAAI9iB,OAAAsnC,GAAA,EAAAtnC,CAAQu7H,IAE3BE,EAAa,IAAItzH,KAAKqzH,GACrBF,EAAkBhoH,QAAU,IAAI,CACnC,IAAMooH,EAAU,IAAIvzH,KAAKszH,GACzBC,EAAQliE,SAASkiE,EAAQ/yH,WAAa,GACtC2yH,EAAkBK,QAAQD,GAC1BD,EAAWz4G,QAAQ04G,EAAQljH,WAG/B8iH,EAAkBrkH,KAAK,SAACnN,EAAGwO,GAAJ,OAAUxO,EAAE0O,UAAYF,EAAEE,YACjD,IAAIojH,EAAkBN,EAAkBp8H,IAAI,SAAA6E,GAAI,OAC5CA,EAAKoyC,mBAAmB,QAAS,CAAExsC,MAAO,UAAWD,KAAM,cAI/D,GADAkyH,GADAA,EAAe57H,OAAAsnC,GAAA,EAAAtnC,CAAO,IAAIkb,IAAI0gH,KACIt/G,OAAO,IACrCvB,EAAOzH,OAAS,EAAG,CACnB,IACMi5G,GADW,IAAIpkH,KAAK4S,EAAO,GAAGF,SAASlS,WACnB,GAAK,GACzBkzH,EAAoBthH,GACtBgvC,EACA,EACAgjE,GAEEuP,EAAavhH,GAAWivC,EAAO,EAAG+iE,GAClCwP,EAAYxhH,GAAWkvC,EAAM,EAAG8iE,GAChCyP,EAAkBzhH,GAAWmvC,EAAY,EAAG6iE,GAC5C0P,EAAcL,EAGpB,MAAO,CACH5kH,SAHiBuD,GAAWvD,EAAU,EAAGu1G,GAIzChjE,aAAcsyE,EACdryE,MAAOsyE,EACPryE,KAAMsyE,EACNryE,WAAYsyE,EACZ5yE,OAAQ6yE,GAIhB,MAAO,CAAEjlH,WAAUuyC,eAAcC,QAAOC,OAAMC,aAAYN,UwRnlB5B8yE,CACtBnC,EACApkH,EAAS4b,gBAEPg4B,EAAe0wE,EAAkB1wE,aAAarqD,IAAI,SAAAgY,GAAC,OACrD4L,KAAKimC,MAAM7xC,KAGTsyC,EAAQywE,EAAkBzwE,MAAMtqD,IAAI,SAAAgY,GAAC,OAAI4L,KAAKimC,MAAM7xC,KACpDuyC,EAAOwwE,EAAkBxwE,KAAKvqD,IAAI,SAAAgY,GAAC,OAAI4L,KAAKimC,MAAM7xC,KAClDwyC,EAAauwE,EAAkBvwE,WAAWxqD,IAAI,SAAAgY,GAAC,OAAI4L,KAAKimC,MAAM7xC,KAC9DkyC,EAAS6wE,EAAkB7wE,OAC3BpyC,EAAWijH,EAAkBjjH,SAEnC,OAA0B,IAAtB+iH,EAAWzmH,OACJ,KAIPzJ,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACoyH,GAAD,CACInlH,SAAUA,EACVuyC,aAAcA,EACdC,MAAOA,EACPC,KAAMA,EACNC,WAAYA,EACZN,OAAQA,IAEX0wE,GACGh8E,GAAkBnoC,EAAU4zC,EAAcvyC,MA0F/ColH,GApF+B,SAAA14H,GASxC,IARFqX,EAQErX,EARFqX,OACA6nC,EAOEl/C,EAPFk/C,OACAjtC,EAMEjS,EANFiS,SACAy4B,EAKE1qC,EALF0qC,iBACAC,EAIE3qC,EAJF2qC,kBACAylC,EAGEpwE,EAHFowE,iBACAjxB,EAEEn/C,EAFFm/C,kBACAk0D,EACErzG,EADFqzG,gBACEltD,EACwBC,qBAAS,GADjCC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK8oB,EADL5oB,EAAA,GACayf,EADbzf,EAAA,GAEIjH,EAAc,kBAAM0mB,EAAQ,SAAA6yD,GAAC,OAAKA,KAElCnkG,EAAW,GAAApkB,OAAM8Y,GAAQ0vG,aAAaC,aAA3B,KAAAzoH,OACb8uC,EAAO,GAAGlN,UADG,MAAA5hC,OAGb8Y,GAAQ0vG,aAAR,gBAAAxoH,OACoB6B,EAAS2M,UAM3B80B,ExR8jByB,SAACr8B,GAGhC,IAFA,IAAM2J,EAAuB,GAEpBtb,EAAI,EAAGA,EAAI2R,EAAOzH,OAAQlK,GAAK,EAAG,CACvC,IAAMoL,EAAIuG,EAAO3R,GAEjBsb,EAAKrb,KAAK,CACNmjH,IAAKpjH,EACLrF,KAAM2Q,GAAiBF,EAAEgoH,gBAAkB,GAC3CxvG,QAASxY,EAAEioH,mBACXnhH,UAAW5G,GAAiBF,EAAE8G,YAAc,GAC5CT,QAASnG,GAAiBF,EAAEqG,UAAY,GACxC6hC,YAAaloC,EAAE+G,WAIvB,OAAOmJ,EwR9kBcg4G,CAA2B3hH,GAC1C4hH,EAAmB/vG,GAAQsyB,QAAQ7H,iBACnCF,EAAkBvqB,GAAQsyB,QAAQ/H,gBAClCF,EAAiBl8B,EAAOzH,OAAS,GAEvC,OACIzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,yBACXH,GAAAC,EAAAC,cAAC6vH,GAAD,CAAOjkH,SAAUA,EAAUoF,OAAQA,EAAQ++G,iBAAiB,IAE5DjwH,GAAAC,EAAAC,cAAC6yH,GAAD,CACI/pH,MAAO+Z,GAAQ0vG,aAAazpH,MAC5BkwC,WACIn2B,GAAQgsG,oBAAoB/rG,OACxBlX,EAAS2M,QAGjB4V,YAAaA,EACb2e,YAAajqB,GAAQ0vG,aAAazlF,YAClC+L,OAAQA,EACRC,kBAAmBA,EACnB/L,kBAAmB,WACXg9B,KACAijC,EAAgB,KAGxB3xG,MAAOgpC,EACP0U,YAAaA,IAEjBj5C,GAAAC,EAAAC,cAAC8yH,GAAD,CACIn4G,KAAM3J,EACN07B,QAASA,GACTC,gBAAiB,GACjBa,SAAUx8B,EAAOzH,OACjBsjC,UAAU,EACVK,eAAgBA,EAChBC,qBAAsBD,EACtBpkC,MAAO+Z,GAAQsyB,QAAQrsC,MACvBykC,oBACIv8B,EAAOzH,OAAS,EAAIsZ,GAAQsyB,QAAQrI,iBAAc3rC,EAEtDisC,gBAAiBA,EACjBC,aAAcA,EACdC,iBAAkBslF,EAClBhmF,WAAY/pB,GAAQ+pB,WACpBvxC,MAAOipC,EACPrkC,UAAW+Q,EAAOzH,OAAS,EAAI,WAAa,GAC5C0jC,oBAAqBC,EAAiBuU,QAAatgD,EACnD6rC,aAAc,SAACy1E,GACX,OAAO+M,GAAmBx+G,EAAOyxG,EAAItgF,OAAO8uF,cAIpDnxH,GAAAC,EAAAC,cAAC+yH,GAAD,CACIlkG,KAAM+5C,EACN7vB,YAAaA,EACbxgC,OAAQ3M,EAAS2M,WChQ3BsK,GAAUqP,GAAgB8gG,SAgEjBC,GAtDwB,SAAAl0H,GAQjC,IAPFiS,EAOEjS,EAPFiS,OACApF,EAME7M,EANF6M,SACA+C,EAKE5P,EALF4P,OACA2+G,EAIEvuH,EAJFuuH,sBACAtgB,EAGEjuG,EAHFiuG,gBACA5vF,EAEEre,EAFFqe,aACA8lB,EACEnkC,EADFmkC,eAEMgwF,EACFvkH,GACAA,EAAOhD,KACH,SAAAzW,GAAC,MACsC,eAAnCA,EAAE2qC,8BACW,gBAAb3qC,EAAE+Z,SAKd,OACInP,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,4BAA4B4iB,GAAQ4nD,UAElD3qE,GAAAC,EAAAC,cAACmzH,GAAD,CACIvnH,SAAUA,EACVwR,aAAcA,EACdrO,MAAOmkH,IAGXpzH,GAAAC,EAAAC,cAACozH,GAAD,CAAwBzkH,OAAQA,IAEhC7O,GAAAC,EAAAC,cAACqzH,GAAD,CACInwF,eAAgBA,EAChBv0B,OAAQA,EACR/C,SAAUA,EACV0hH,sBAAuBA,EACvBtgB,gBAAiBA,IAGrBltG,GAAAC,EAAAC,cAAC6vH,GAAD,CACIjkH,SAAUA,EACVoF,OAAQA,EACR++G,iBAAiB,IAGrBjwH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQywG,kBACbxzH,GAAAC,EAAAC,cAACuzH,GAAD,CACIr7E,SAAUA,GAASA,SACnB8zE,OAAQ9zE,GAAS8zE,WCrC3BnpG,GAAUqP,GAAgB8gG,SAE1BQ,GAAc9pF,aAMhBshF,KACA5Z,KAPgB1nE,CAQlBupF,IAUI7nD,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrC48F,kBAAmBvzG,GAAoB2W,QACvC68F,sBAAuBlmG,GAAmBqJ,QAC1C88F,0BAA2B/zG,GAAuBiX,QAClD+8F,2BAA4B16H,GAC5B26H,sBAAuBr0G,GACvBs0G,oBAAqBr0G,GACrBs0G,qBAAsB54G,GAAkB0b,SAStCk8F,eACF,SAAAA,EAAYtyH,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAmyH,IACtBryH,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA+8H,GAAAhyH,KAAAH,KAAMH,KAsDVuqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAOzChB,EAAKD,MALYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBACAL,EANyC/xH,EAMzC+xH,kBAEE75H,EAAU,CACZC,YAAaopC,EACbnpC,YAAa8R,GAEXD,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB55H,GAErB65H,EAAkB,CACd35H,YAAa8R,EACb/R,YAAaopC,EACblnB,KAAM,aA5EYrb,EAgF1B2sH,sBAAwB,SAAC4G,EAAgBzgE,GAAe,IAC5CiW,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOhvC,QAAU+4B,EACjBiW,EAAO36D,MAAQmlH,EACfvzH,EAAKc,SAAS,CAAEioE,YApFM/oE,EAuF1BwzH,aAAe,WAAM,IACTzqD,EAAW/oE,EAAKY,MAAhBmoE,QAERiqD,EADkChzH,EAAKD,MAA/BizH,uBACcjqD,GACtBA,EAAOhvC,QAAU,GACjB/5B,EAAKc,SAAS,CAAEioE,YA5FM/oE,EA+F1B4/F,YAAc,WAAM,IAAAxpD,EAMZp2C,EAAKD,MAJLgzH,EAFY38E,EAEZ28E,kBACAG,EAHY98E,EAGZ88E,2BACgB3wF,EAJJ6T,EAIZ6zE,aAAgB1nF,eACCU,EALLmT,EAKZk9E,cAAiBrwF,uBAGrBiwF,IACAH,EAAkB,CACd35H,YAAa6pC,EACb9pC,YAAaopC,EACblnB,KAAM,aAzGVrb,EAAKY,MAAQ,CACTmoE,OAAQ,CACJhvC,QAAS,GACT3rB,MAAOgwB,KALOp+B,qFAWtB,IACM+a,EADM,IAAIlgB,IAAIuY,OAAOjB,SAASojC,MACjB7iC,aAAaI,IAAI,UAChCiI,IACAC,eAAe0C,QAAQ,gBAAiB3C,IAExCs4G,EADiCnzH,KAAKH,MAA9BszH,sBACa,CAAEl6H,YAAa4hB,gDAIzBgqC,GACf,GACIA,EAAUuuE,cAAcrwF,yBACxB/iC,KAAKH,MAAMuzH,cAAcrwF,uBAC3B,KAAAyqB,EAOaxtD,KAAKH,MAPlB0zH,EAAA/lE,EAEM4lE,cAAiBrwF,EAFvBwwF,EAEuBxwF,uBAAwB/nB,EAF/Cu4G,EAE+Cv4G,UACzBqnB,EAHtBmrB,EAGMu8D,aAAgB1nF,eAEhB0wF,EALNvlE,EAKMulE,0BACAF,EANNrlE,EAMMqlE,kBAGE9nH,EAAWJ,GACbo4B,EACA/nB,GAMJ+3G,EAA0B,CACtB75H,YAAa6pC,EACb5jB,gBAAiBpU,EAASs1B,cAAclhB,gBACxC4Y,YAAaxtB,KACb6U,WAAYrU,EAAS2M,SAEzBm7G,EAAkB,CACd35H,YAAa6pC,EACb9pC,YAAaopC,EACblnB,KAAM,8CA6DT,IAAAi7C,EAQMp2D,KAAKH,MARX2zH,EAAAp9D,EAED2zD,aAAgBx7G,EAFfilH,EAEejlH,QAASgO,EAFxBi3G,EAEwBj3G,aAAc8lB,EAFtCmxF,EAEsCnxF,eAFtCoxF,EAAAr9D,EAGDg9D,cAAiBp4G,EAHhBy4G,EAGgBz4G,UAAW+nB,EAH3B0wF,EAG2B1wF,uBAAwBvoC,EAHnDi5H,EAGmDj5H,MACpC+nC,EAJf6zB,EAIDs9D,aAAgBnxF,eACH2B,EALZkyB,EAKDu9D,UAAazvF,SACO/zB,EANnBimD,EAMDw9D,iBAAoBzjH,OACpB8iH,EAPC78D,EAOD68D,sBAGEloH,EAAWJ,GACbo4B,EACA/nB,GAGJ,OACI/b,GAAAC,EAAAC,cAACwzH,GAAD,CACI5nH,SAAUA,EACVs3B,eAAgBA,EAChBlyB,OAAQD,GAAsBC,GAC9BrC,OAAQo2B,EACRuoF,sBAAuBzsH,KAAKysH,sBAE5BxkH,MAAO+Z,GAAQ/Z,MACfqiH,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9BlwF,uBAAwBA,EACxB/nB,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAa1/F,KAAK0/F,qBAnJXt9F,KAAMC,WC3Ed8vH,GDoOAtmD,aAlLS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrBywF,aAAchzH,EAAM8jC,eACpBovF,iBAAkBlzH,EAAMgjC,mBACxBiwF,UAAWjzH,EAAMyjC,cA6KmBomC,GAAzBsB,CAAwCsmD,IE9LxC0B,GAjCY,SAACh0H,GAAoB,IACpCi0H,EAAqBj0H,EAArBi0H,SAAUC,EAAWl0H,EAAXk0H,OAmBlB,OAlBA9gF,qBAAU,WACN,IAAM+gF,EAASj0E,SAAS5gD,cAAc,UACtC60H,EAAO78G,IAAI,yCACX4oC,SAAStmD,KAAKw6H,YAAYD,GAE1BA,EAAO9uC,iBAAiB,OAAQ,WAExBhyE,OAAOghH,OAEPhhH,OAAOghH,MAAMC,MAAMn0G,OAAO,CACtB8zG,SAAUA,EACVC,OAAQA,EACRn1H,OAAQ,oBAIrB,IAGCK,GAAAC,EAAAC,cAAA,WACIF,GAAAC,EAAAC,cAAA,OAAKtK,GAAG,kBCpBdmtB,GAAkCqP,GAAgB+iG,SAsHzCC,GAzGO,SAAAn2H,GAKT,IAJT2qE,EAIS3qE,EAJT2qE,OAIS5pB,GAAA/gD,EAHTiwC,mBAGSjwC,EAFTo2H,qBAESp2H,EADTiuG,gBAE0BjtD,qBAAkB,IADnCC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GAAAE,EAAA,GAAAA,EAAA,GAIe,KAApB0pB,EAAOzvE,UACgB,KAAvByvE,EAAOxvE,aACPwvE,EAAOvvE,QAEY0oB,GAAQuyG,WAAWzpH,KACtC,SAAC0C,GAAD,OAAqBA,EAAExO,QAAU6pE,EAAOzvE,WAGjB,KAAvByvE,EAAOxvE,aACP2oB,GAAQ3oB,YAAYwvE,EAAOzvE,WAC3B4oB,GAAQ3oB,YAAYwvE,EAAOzvE,UAAU0R,KACjC,SAAC0C,GAAD,OAAqBA,EAAExO,QAAU6pE,EAAOxvE,cAGhD,OACI4F,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wBACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQwyG,KAAKza,UAClB96G,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQwyG,KAAKC,YAClBx1H,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQwyG,KAAKE,YAClBz1H,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQwyG,KAAK3pG,QACjB5rB,GAAAC,EAAAC,cAAA,YAAO6iB,GAAQwyG,KAAKG,WACpB11H,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQwyG,KAAKI,OACjB31H,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQwyG,KAAK1lH,QAGrB7P,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ6yG,qBAKb51H,GAAAC,EAAAC,cAAC21H,GAAD,CACIhB,SAAU5rH,GAAO9K,gBACjB22H,OAAQ7rH,GAAO7K,kBCrCzB2kB,GAAUqP,GAAgB+iG,SAQ1B7pD,GAAgB,CAClBwqD,oBAAqBv8H,GAAiBy9B,QACtC28F,iBAAkBj0G,GAAmBsX,QACrC++F,yBAA0B18H,GAC1B46H,oBAAqBr0G,IAKZo2G,GAAcpsF,aAMvBshF,KACA5Z,KAPuB1nE,CAQzBwrF,IAWWD,GAAb,SAAAxpD,GACI,SAAAwpD,EAAYv0H,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAo0H,IACtBt0H,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAg/H,GAAAj0H,KAAAH,KAAMH,KAUVsuC,mBAAqB,SAACz+B,EAAoBhB,GAAiB,IAC/Cm6D,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOn6D,GAAQgB,EAAK1Q,MACP,aAAT0P,IACAm6D,EAAOxvE,YAAc,IAEzByG,EAAKc,SAAS,CAAEioE,YAjBM/oE,EAoB1Bw0H,qBAAuB,SAAC3/H,GAAkB,IAC9Bk0E,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOvvE,QAAU3E,EAAE+9C,cAAc1zC,MACjCc,EAAKc,SAAS,CAAEioE,YAvBM/oE,EA0B1BsqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAMzChB,EAAKD,MAJYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBAEEnoH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,KAvCClL,EA4C1BwzH,aAAe,SAACrvB,GAAoB,IACxBp7B,EAAW/oE,EAAKY,MAAhBmoE,OADwB3yB,EAMrBp2C,EAAKD,MAHZkqH,EAH4B7zE,EAG5B6zE,aACAqJ,EAJ4Bl9E,EAI5Bk9E,eAIJ2B,EARgC7+E,EAK5B6+E,qBAGgB,CAChB77H,YAAak6H,EAAcrwF,uBAC3B9pC,YAAa8wH,EAAa1nF,eAC1BlpC,KAAMoR,KACNnR,SAAUyvE,EAAOzvE,SACjBC,YAAawvE,EAAOxvE,YACpBC,QAASuvE,EAAOvvE,UAGpBuvE,EAAOxvE,YAAc,GACrBwvE,EAAOzvE,SAAW,GAClByvE,EAAOvvE,QAAU,GACjBwG,EAAKc,SAAS,CAAEioE,YA9DhB/oE,EAAKY,MAAQ,CACTmoE,OAAQ,CACJzvE,SAAU,GACVC,YAAa,GACbC,QAAS,KANKwG,EAD9B,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAAg/H,EAAAxpD,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAAg/H,EAAA,EAAA90H,IAAA,SAAAN,MAAA,WAoEa,IACG6pE,EAAW7oE,KAAKU,MAAhBmoE,OADHrb,EAOMxtD,KAAKH,MAPXq1H,EAAA1nE,EAGDu8D,aAAgBx7G,EAHf2mH,EAGe3mH,QAASgO,EAHxB24G,EAGwB34G,aAHxBg3G,EAAA/lE,EAID4lE,cAAiBp4G,EAJhBu4G,EAIgBv4G,UAAW+nB,EAJ3BwwF,EAI2BxwF,uBACdR,EALbirB,EAKD2nE,WAAc5yF,eACdyyF,EANCxnE,EAMDwnE,yBAEJ,OACI/1H,GAAAC,EAAAC,cAAC81H,GAAD,CACIpsD,OAAQA,EACR16B,mBAAoBnuC,KAAKmuC,mBACzBmmF,qBAAsBt0H,KAAKs0H,qBAE3BrsH,MAAO+Z,GAAQ/Z,MACf86B,uBAAwBA,EACxB/nB,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAas1B,QA5F7BZ,EAAA,CAA8BhyH,KAAMC,WC7DrB+xH,GD+JAvoD,aApIS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrBkyF,WAAYz0H,EAAM4iC,eAmIlBinC,GAFWsB,CAGbuoD,IE9JIpyG,GAAUqP,GAAgBm3B,YA4CjB4sE,GAnCV,SAAAl3H,GAAA,IACDm3H,EADCn3H,EACDm3H,WACAttE,EAFC7pD,EAED6pD,UACA7b,EAHChuC,EAGDguC,kBACAopF,EAJCp3H,EAIDo3H,mBACAC,EALCr3H,EAKDq3H,qBACAC,EANCt3H,EAMDs3H,iBANC,OAQDv2H,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACKo0H,EACGp2H,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,SACNwI,MAAO+Z,GAAQyzG,QAAQ31E,OACvBlW,QAASsC,IAGbjtC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8BACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQyzG,QAAQ59C,OACvBjuC,QAAS0rF,EACT71H,MAAO,UAGT+1H,GACEv2H,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQyzG,QAAQ1pE,SACvBniB,QAAS2rF,EACT91H,MAAOsoD,EAAY,SAAW,YC3BhD/lC,GAAUqP,GAAgBqkG,SAC1BjH,GAAgBp9F,GAAgBq9F,YAAYiH,KAuKnCC,GA1JwB,SAAA13H,GAQjC,IAPF4b,EAOE5b,EAPF4b,KACA8nB,EAME1jC,EANF0jC,QACA72B,EAKE7M,EALF6M,SACA8qH,EAIE33H,EAJF23H,kBACAC,EAGE53H,EAHF43H,mBACA3pB,EAEEjuG,EAFFiuG,gBACA4pB,EACE73H,EADF63H,6BAEMC,EAAe,CACjB,CACI3sG,OAAQolG,GAAc55H,GACtB2/G,SAAU,iBACV9sF,KAAM,SAACuuG,GAAD,OAAoBh3H,GAAAC,EAAAC,cAAA,YAAO82H,EAAUj3H,QAC3CqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAct1H,KACtBq7G,SAAU,eACV9sF,KAAM,SAACuuG,GAAD,OAAoBh3H,GAAAC,EAAAC,cAAA,YAAO82H,EAAUj3H,QAC3CqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc50F,QACtB26E,SAAU,mBACV9sF,KAAM,SAACuuG,GAAD,OAAoBh3H,GAAAC,EAAAC,cAAA,YAAO82H,EAAUj3H,QAC3CqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc//G,KACtB8lG,SAAU,mCACV9sF,KAAM,SAACuuG,GAAD,OAAoBh3H,GAAAC,EAAAC,cAAA,YAAO82H,EAAUj3H,QAC3CqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc/9E,YACtB8jE,SAAU,8BACV9sF,KAAM,SAAA5uB,GAAuB,IAApBo0C,EAAoBp0C,EAApBo0C,SACL,MAA8B,eAA1BA,EAAS3O,aACDt/B,GAAAC,EAAAC,cAAA,iBAAS+tC,EAASvO,4BAAlB,WAEJ1/B,GAAAC,EAAAC,cAAA,YAAO+tC,EAASvO,4BAAhB,YAEZte,MAAO,KAEX,CACIgJ,OAAQolG,GAAcyH,cACtB1hB,SAAU,iCACV9sF,KAAM,SAACuuG,GAAD,OAAoBh3H,GAAAC,EAAAC,cAAA,YAAO82H,EAAUj3H,MAAjB,YAC1BqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAcrgH,OACtBomG,SAAU,iCAMV9sF,KAAM,SAACuuG,GACH,OAAsC,IAAlCxpH,SAASwpH,EAAUj3H,MAAO,IACnBC,GAAAC,EAAAC,cAAA,wBAEPsN,SAASwpH,EAAUj3H,MAAO,IAAM,EACzBC,GAAAC,EAAAC,cAAA,0BAEPsN,SAASwpH,EAAUj3H,MAAO,IAAM,EACzBC,GAAAC,EAAAC,cAAA,kCADX,GAKJkhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc0H,SACtB3hB,SAAU,iBACV9sF,KAAM,SAACuuG,GACH,OACIh3H,GAAAC,EAAAC,cAAA,KACIk2C,KAAM,IACNzL,QAAS,kBAAMksF,EAAmBG,EAAUj3H,SAFhD,YAQRqhB,MAAO,MAIf,OACIphB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,0BAA0B4iB,GAAQtV,QAChDzN,GAAAC,EAAAC,cAAC8yH,GAAD,CACIpmF,QAASmqF,EACTl8G,KAAMA,EACNgyB,gBAAiBhyB,GAAQA,EAAKpR,OAC9BsjC,UAAU,EACVD,WAAY/pB,GAAQ+pB,aAGxB9sC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,0BACT4iB,GAAQpG,YAAY3T,OAEzBhJ,GAAAC,EAAAC,cAAA,OACIC,UAAS,yBAAA8J,OACJ04B,EAAQw0F,0BAEH,SADA,aAIVn3H,GAAAC,EAAAC,cAAA,QAAMC,UAAU,0BACX4iB,GAAQpG,YAAYjQ,OAGvBi2B,EAAQw0F,0BAQNn3H,GAAAC,EAAAC,cAACwmD,GAAD,CACI9wD,GAAG,kBACHk2C,aAAcnJ,EAAQM,mBACtBkM,QAASpsB,GAAQpG,YAAYrI,OAC7B46B,mBAAoB,SAACx5C,GAAD,OAChBkhI,EAAkBlhI,EAAEqK,QAExBA,MAAO4iC,EAAQM,qBAdnBjjC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,0BjSyPN,SAACwc,GAC5B,IAAM5c,EAAQ4c,EAId,OAHYlU,GAAcguH,SAAS95G,YAAYrI,OAAOzI,KAClD,SAAC0C,GAAD,OAAqBA,EAAExO,QAAUA,KAChC,CAAE2M,MAAO,KACHA,MiS7Pc0qH,CACGtrH,EAAS62B,QACJM,qBAejBjjC,GAAAC,EAAAC,cAACm3H,GAAD,CACIjB,YAAazzF,EAAQw0F,0BACrBruE,WAAW,EACXytE,kBAAkB,EAClBtpF,kBAAmB,kBACf6pF,GAA6B,IAEjCT,mBAAoB,kBAChBS,GAA6B,IAEjCR,qBAAsB,WAClBppB,EAAgB,kBCrItCnqF,GAAUqP,GAAgBqkG,SAQ1BnrD,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QAErC48F,kBAAmBvzG,GAAoB2W,QACvCi9F,oBAAqBr0G,GACrB03G,sBAAuB57G,GAAmBsb,QAC1CugG,2BAA4Bl+H,IAW1Bm+H,GAAc5tF,aAMhB0nE,KACA4Z,KAPgBthF,CAQlB+sF,IAEIF,eACF,SAAAA,EAAY71H,GAAc,IAAAC,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA01H,IACtB51H,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAsgI,GAAAv1H,KAAAH,KAAMH,KAoCVuqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAQzChB,EAAKD,MANYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAEhB6wF,EANyCpyH,EAMzCoyH,oBACAL,EAPyC/xH,EAOzC+xH,kBAEE9nH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,IAMrB6nH,EAAkB,CACd35H,YAAa8R,EACb/R,YAAaopC,EACblnB,KAAM,aA7DYrb,EAiE1Bg2H,mBAjE0B,eAAA53H,EAAA9I,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KAiEL,SAAAC,EAAO9Z,GAAP,IAAAtG,EAAA+0B,EAAA2oG,EAAA,OAAA/iH,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,cACX/a,EAAU,CACZ29H,WAAYr3H,EACZs3H,aAAc3/H,EAAW2tC,SAEhB,iBALItrB,EAAAvF,KAAA,EAMEszB,GAAoBruC,EAD1B,kBALI,QAMX+0B,EANWzU,EAAAmuB,QAQPivF,EAAU/7H,IAAIszB,gBAAgBF,GACpC7a,OAAO8a,KAAK0oG,IATC,wBAAAp9G,EAAApF,SAAAkF,MAjEK,gBAAAgoD,GAAA,OAAAljE,EAAA8b,MAAAha,KAAAoJ,YAAA,GAAAtJ,EA8E1BwzH,aAAe,WAAM,IAAAp9E,EAKNp2C,EAAKD,MAHZkqH,EAFa7zE,EAEb6zE,aACAwM,EAHargF,EAGbqgF,sBACAnD,EAJal9E,EAIbk9E,cAEIxxF,EAAY9hC,EAAKY,MAAjBkhC,QAgBR20F,EAf4C,CACxCv6G,YAAa,CACTb,KAAM1kB,EAAmBqlB,aACzB5iB,YAAak6H,EAAcrwF,uBAC3BnnB,YAAagmB,EAAQM,oBAEzBxK,MAAO,CACHz+B,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3B3pC,SAAU,gBACVD,KAAMoR,KACNlR,YAAa,yBACbC,QAAS0oB,GAAQpG,YAAYi7G,qBAAqBlrH,UAjGpC7L,EAuG1B+1H,kBAAoB,SAAC72H,GAAkB,IAC3B4iC,EAAY9hC,EAAKY,MAAjBkhC,QACRA,EAAQM,mBAAqBljC,EAC7Bc,EAAKc,SAAS,CAAEghC,aA1GM9hC,EA6G1Bg3H,YAAc,WAAM,IAAAC,EAGLj3H,EAAKD,MADZuzH,cAAiBp4G,EAFL+7G,EAEK/7G,UAAW+nB,EAFhBg0F,EAEgBh0F,uBAEhC,OAAOp4B,GAAqBo4B,EAAwB/nB,IAjH9B,IAEdo4G,EAAkBtzH,EAAKD,MAAvBuzH,cAKFxxF,EAAU,CACZM,mBALav3B,GACbyoH,EAAcrwF,uBACdqwF,EAAcp4G,WAID4mB,QAAQM,oBACjB5rC,EAAoB8nC,MACxBg4F,2BAA2B,GAXT,OActBt2H,EAAKY,MAAQ,CACTkhC,WAfkB9hC,qFAmBN,IAAA0tD,EAMLxtD,KAAKH,MAJKkjC,EAFLyqB,EAEZ4lE,cAAiBrwF,uBACDV,EAHJmrB,EAGZu8D,aAAgB1nF,gBAQpBwwF,EAXgBrlE,EAKZqlE,mBAMc,CACd35H,YAAa6pC,EACb9pC,YAAaopC,EACblnB,KAAM,6CAmFL,IAAAta,EAAAb,KAAAo2D,EAMMp2D,KAAKH,MANX2zH,EAAAp9D,EAED2zD,aAAgBx7G,EAFfilH,EAEejlH,QAASgO,EAFxBi3G,EAEwBj3G,aAAcgmB,EAFtCixF,EAEsCjxF,eAFtCkxF,EAAAr9D,EAGDg9D,cAAiBp4G,EAHhBy4G,EAGgBz4G,UAAW+nB,EAH3B0wF,EAG2B1wF,uBACfa,EAJZwyB,EAIDu9D,UAAa/vF,MACb4yF,EALCpgE,EAKDogE,2BAEI50F,EAAY5hC,KAAKU,MAAjBkhC,QACFqC,EAAWL,EAAM5J,gBACjB4J,EAAM5J,gBAAgBziB,OAAOusB,aAC7B,GAoBN,OACI7kC,GAAAC,EAAAC,cAACs3H,GAAD,CACI38G,KAAMmqB,EACN6xF,mBAAoB91H,KAAK81H,mBACzBD,kBAAmB71H,KAAK61H,kBACxBj0F,QAASA,EACT72B,SAAU/K,KAAK82H,cACff,6BA1B6B,SAAC/2H,GAClC6B,EAAKD,SAAS,SAAAssD,GAAS,MAAK,CACxBtrB,QAAQxsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACD83D,EAAUtrB,QADV,CAEHw0F,0BAA2Bp3H,QAwB/BiJ,MAAO+Z,GAAQ/Z,MACf+S,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBACzBrnF,uBAAwBA,EAExB8tE,aAAc7uF,GAAQpG,YAAY2zB,MAClChN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YA7BY,WAChB82B,IACA31H,EAAKD,SAAS,SAAAssD,GAAS,MAAK,CACxBtrB,QAAQxsC,OAAAkuB,GAAA,EAAAluB,CAAA,GACD83D,EAAUtrB,QADV,CAEHw0F,2BAA2B,iBA9IxBh0H,KAAMC,WC3EdqzH,GDuPA7pD,aA7MS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrB0wF,UAAWjzH,EAAMyjC,cA0MmBomC,GAAzBsB,CAAwC6pD,IEjPjD1zG,GAAUqP,GAAgB2lG,SAC1BvI,GAAgBp9F,GAAgBq9F,YAAYr1G,KCPnC49G,GDgBwB,SAAAp3H,GACnC,IAAMm2H,EAAe,CAOjB,CACI3sG,OAAQolG,GAAc//G,KACtB8lG,SAAU,eACV9sF,KAAM,SAACuuG,GAAD,OACFrqH,GAAgBqqH,EAAUj3H,MAAOgjB,GAAQk1G,kBACzC,YAEJ72G,MAAO,KAEX,CACIgJ,OAAQolG,GAAcv1H,YACtBs7G,SAAU,cACVn0F,MAAO,KAEX,CACIgJ,OAAQolG,GAAc/2G,OACtB88F,SAAU,aACVn0F,MAAO,KAEX,CACIgJ,OAAQolG,GAAc0H,SACtB3hB,SAAU,cACV9sF,KAAM,SAACuuG,GAAmB,IACdj3H,EAAoBi3H,EAApBj3H,MAAOkuC,EAAa+oF,EAAb/oF,SAET7tC,EAAOuM,GACTshC,EAASiqF,aACTn1G,GAAQk1G,iBAGZ,OACIj4H,GAAAC,EAAAC,cAAA,KACIk2C,KAAI,mBAAAnsC,OAAqB7J,EACpB05G,oBACAtuG,QAAQ,IAAK,MAClBm/B,QAAS,kBACL/pC,EAAMu3H,mBACFp4H,EACAkuC,EAASiqF,gBAPrB,YAeR92G,MAAO,MAIf,OACIphB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,wBAAwB4iB,GAAQ3I,MAC9Cpa,GAAAC,EAAAC,cAAC8yH,GAAD,CACIpmF,QAASmqF,EACTl8G,KAAMja,EAAMia,KACZgyB,gBAAiBjsC,EAAMia,MAAQja,EAAMia,KAAKpR,OAC1CqjC,WAAY/pB,GAAQ+pB,WACpBC,UAAU,IAGd/sC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,6BACR4iB,GAAQsL,YAAY+pG,iBAAkB,IACvCp4H,GAAAC,EAAAC,cAAA,KACIk2C,KAAMhkB,GAAgBxpB,OAAOyvH,OAC7B14H,OAAO,SACP02C,IAAI,uBAEHtzB,GAAQsL,YAAYiqG,YAExBv1G,GAAQsL,YAAY22E,QACrBhlG,GAAAC,EAAAC,cAAA,SACK,IACDF,GAAAC,EAAAC,cAAA,KACIk2C,KAAMrzB,GAAQw1G,QACd54H,OAAO,SACP02C,IAAI,uBAEHtzB,GAAQsL,YAAYmqG,MAjBjC,KAsBAx4H,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,SACNwI,MAAO+Z,GAAQyzG,QAAQiC,iBACvB3tF,UAAWlqC,EAAMkqC,UACjBH,QACK/pC,EAAMkqC,UAED,KADAlqC,EAAM83H,mCEvG1BC,GAAe,SAACC,EAAoBC,GACtC,IAAMC,EAbkB,SAACF,GAKzB,IAJA,IAAMG,EAAe9kH,OAAO+kH,KAAKJ,GAC3BK,EAAYF,EAAatvH,OACzByvH,EAAQ,IAAIC,WAAWF,GAEpB15H,EAAI,EAAGA,EAAI05H,EAAW15H,IAAK,CAChC,IAAM65H,EAAQL,EAAaM,WAAW95H,GACtC25H,EAAM35H,GAAK65H,EAEf,OAAOF,EAIMI,CAAoBV,GAC3B9pG,EAAO,IAAIyqG,KAAK,CAACT,GAAO,CAAErpH,KAAMopH,IACtC5kH,OAAO8a,KAAKrzB,IAAIszB,gBAAgBF,GAAO,WCWrC/L,GAAUqP,GAAgB2lG,SAQ1BzsD,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrC48F,kBAAmBvzG,GAAoB2W,QACvCg9F,sBAAuBr0G,GACvBs0G,oBAAqBr0G,IAKZ45G,GAActO,KAAa8M,IAM3BD,GAAb,SAAApsD,GACI,SAAAosD,EAAYn3H,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAg3H,IACtBl3H,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA4hI,GAAA72H,KAAAH,KAAMH,KAoBVuqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAOzChB,EAAKD,MALYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBACAL,EANyC/xH,EAMzC+xH,kBAEE75H,EAAU,CACZC,YAAaopC,EACbnpC,YAAa8R,EACbmQ,KAAM,YAEJpQ,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,IAGrB6nH,EAAkB75H,IA3CI8G,EA8C1Bs3H,mBAAqB,SAAC93H,EAAaD,GAC/BS,EAAK44H,iBACD,CACIC,YAAar5H,GAEjB,eACAD,IApDkBS,EAwD1B63H,+BAAiC,WAAY,IAAAzhF,EAQrCp2C,EAAKD,MARgC+4H,EAAA1iF,EAErCk9E,cAAiBrwF,EAFoB61F,EAEpB71F,uBAAwB/nB,EAFJ49G,EAEI59G,UAFJ69G,EAAA3iF,EAGrC6zE,aACI1nF,EAJiCw2F,EAIjCx2F,eACA9lB,EALiCs8G,EAKjCt8G,aALiCu8G,EAAAD,EAMjCtqH,QAAWI,EANsBmqH,EAMtBnqH,iBAIb5D,GAVmC+tH,EAMJvuG,QAIpB5f,GACbo4B,EACA/nB,IAEE9P,EAAeH,EAASG,aACxB6tH,EAAe,CACjB1rH,SAAU,KACVuB,UAAW,GACXC,SAAU,IAEd,GAAI3D,EAAc,CACd,IAAM+D,EAAW/D,EAAaJ,KAAK,SAAAzW,GAAC,MAAe,aAAXA,EAAE8W,OACtC8D,GAAYA,EAAS5B,UAAY4B,EAASL,YAC1CmqH,EAAa1rH,SAAW4B,EAAS5B,SACjC0rH,EAAanqH,UAAYK,EAASL,UAClCmqH,EAAalqH,SAAWI,EAASJ,UAAY,IAIrD,IAAM7V,EAAyC,CAC3CmiB,KAAM,mBACNjiB,YAAa6pC,EACb9pC,YAAaopC,EACb9lB,eACAy8G,cAAerqH,GAAgBvZ,OAAAkuB,GAAA,EAAAluB,CAAA,GAASwoC,IACxCm7F,eACA35G,WAAYrU,EAAS2M,OACrBsoB,iBAAkBj1B,EAASi1B,iBAC3Bi5F,gBAAiB,CACbpuG,OAAQ9f,EAASs1B,cAAc9V,QAAQM,OACvCC,OAAQ/f,EAASs1B,cAAc9V,QAAQO,OACvCiT,QAAShzB,EAASs1B,cAAc9V,QAAQwT,QACxChT,WAAYhgB,EAASs1B,cAAc9V,QAAQQ,WAC3CC,SAAUjgB,EAASs1B,cAAc9V,QAAQS,SACzC8S,QAAS/yB,EAASs1B,cAAc9V,QAAQuT,SAE5C3e,gBAAiBpU,EAASs1B,cAAclhB,iBAG5Crf,EAAKo5H,0BAA0BlgI,GAE/B8G,EAAKc,SAAS,CAAEmpC,WAAW,KA3GLjqC,EA8G1Bo5H,0BAA4B,SAAClgI,GAAD,OACxBD,GAAW,CACPQ,KAAM,0BACNC,OAAQ,OACRC,KAAMT,IAELusD,YACA3wD,KAAK,SAAC0W,GACHxL,EAAKc,SAAS,CAAEmpC,WAAW,IAC3B6tF,GAAatsH,EAAK,sBAvHJxL,EA0H1B44H,iBA1H0B,eAAAx6H,EAAA9I,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KA0HP,SAAAC,EAAOpgB,EAAcO,EAAc4/H,GAAnC,IAAAprG,EAAA2oG,EAAA,OAAA/iH,GAAAzU,EAAA0U,KAAA,SAAA0F,GAAA,cAAAA,EAAAxF,KAAAwF,EAAAvF,MAAA,UACXolH,IAAY/gI,EAAUghI,4BADX,CAAA9/G,EAAAvF,KAAA,eAAAuF,EAAAvF,KAAA,EAELjU,EAAKu5H,oBAAoBrgI,EAAQ2/H,aAF5B,cAAAr/G,EAAAtF,OAAA,SAGJlU,EAAKc,SAAS,CAAEmpC,WAAW,KAHvB,cAAAzwB,EAAAvF,KAAA,EAMIszB,GAAoBruC,EAASO,GANjC,QAMTw0B,EANSzU,EAAAmuB,QASLivF,EAAU/7H,IAAIszB,gBAAgBF,GAEpC7a,OAAO8a,KAAK0oG,IAEhB52H,EAAKc,SAAS,CAAEmpC,WAAW,IAbZ,wBAAAzwB,EAAApF,SAAAkF,MA1HO,gBAAAgoD,EAAA4M,EAAAtmC,GAAA,OAAAxpC,EAAA8b,MAAAha,KAAAoJ,YAAA,GAAAtJ,EA0I1Bu5H,oBA1I0B,eAAAvgI,EAAA1D,OAAA8jB,GAAA,EAAA9jB,CAAAue,GAAAzU,EAAAia,KA0IJ,SAAA1F,EAAOnU,GAAP,OAAAqU,GAAAzU,EAAA0U,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAG,OAAA,SAClB5f,EAAA,IAAAA,CAAO,KAAA8U,OAA0B5J,IAAO1K,KAAK,SAAAykB,GACzCnG,OAAO8a,KAAK3U,EAAKmY,YAFH,wBAAA3d,EAAAK,SAAAT,MA1II,gBAAAsG,GAAA,OAAAjhB,EAAAkhB,MAAAha,KAAAoJ,YAAA,GAAAtJ,EA+I1Bw5H,YAAc,WAAM,IAAAvC,EAGLj3H,EAAKD,MADZuzH,cAAiBp4G,EAFL+7G,EAEK/7G,UAAW+nB,EAFhBg0F,EAEgBh0F,uBAG1BC,EAAkBhoB,EAAUlQ,KAC9B,SAAAyuH,GAAE,OAAIA,EAAGvuH,iBAAmB+3B,IAGhC,GAAIC,GAAmBA,EAAgBtrB,SAAWriB,EAAQ6G,GACtD,OAAOk2C,oBAASpP,EAAgB9S,cAAcqK,YAAa,QACrDyI,OACA1iC,GA3JYR,EAiK1B05H,oCAAsC,SAAC51F,GACnC,IAAM61F,EAAe35H,EAAKw5H,cAE1B,QAAqBh5H,IAAjBm5H,EAA4B,CAC5B,IAAM17D,EAAe,CACjBo5D,aAAc/+H,EAAUghI,4BACxBT,YAAa32G,GAAQ03G,gCACrBxgI,YAAaugI,EAAazuH,eAC1BoU,WAAYq6G,EAAa/hH,QAE7B,OAAKksB,EACL,CAAQm6B,GAAR70D,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAoBwuC,IADD,CAACm6B,GAGxB,OAAKn6B,GAAc,IA9KG9jC,EAkL1B65H,UAAY,SAACtgH,GACT,OAAIA,EACOA,EAAKhN,KAAK,SAACnN,EAAWwO,GACzB,OAAIxO,EAAE06H,aAAelsH,EAAEksH,cACX,EAER16H,EAAE06H,aAAelsH,EAAEksH,aACZ,EAEJ,IAGR,IA9Le95H,EAiM1B+5H,iBAAmB,SAACC,GAChB,OAAOh6H,EAAK65H,UAAU75H,EAAK05H,oCAAoCM,KAhM/Dh6H,EAAKY,MAAQ,CACTqpC,WAAW,GAHOjqC,EAD9B,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAA4hI,EAAApsD,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAA4hI,EAAA,EAAA13H,IAAA,oBAAAN,MAAA,WAQwB,IAAAwuD,EAKLxtD,KAAKH,MAHKkjC,EAFLyqB,EAEZ4lE,cAAiBrwF,wBAKrB8vF,EAPgBrlE,EAGZqlE,mBAIc,CACd35H,YAAa6pC,EACb9pC,YATYu0D,EAIZu8D,aAAgB1nF,eAMhBlnB,KAAM,eAlBlB,CAAA7b,IAAA,SAAAN,MAAA,WAsMa,IAAAo3D,EAMMp2D,KAAKH,MANX2zH,EAAAp9D,EAED2zD,aAAgBx7G,EAFfilH,EAEejlH,QAASgO,EAFxBi3G,EAEwBj3G,aAFxBk3G,EAAAr9D,EAGDg9D,cAAiBp4G,EAHhBy4G,EAGgBz4G,UAAW+nB,EAH3B0wF,EAG2B1wF,uBAAwBvoC,EAHnDi5H,EAGmDj5H,MACvCopC,EAJZwyB,EAIDu9D,UAAa/vF,MACbqvF,EALC78D,EAKD68D,sBAGIlpF,GADInG,EAAMC,cACI7jC,KAAKU,MAAnBqpC,WACR,OACI9qC,GAAAC,EAAAC,cAACs5H,GAAD,CACI3+G,KAAM9Z,KAAK65H,iBAAiBj2F,EAAMC,eAClCkG,UAAWA,EACX4tF,+BACI33H,KAAK23H,+BAETP,mBAAoBp3H,KAAKo3H,mBAEzBnvH,MAAO+Z,GAAQ/Z,MACfqiH,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9Bj4G,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBACzBrnF,uBAAwBA,QA/NxCi0F,EAAA,CAA8B50H,KAAMC,WC/CrB20H,GDoRAnrD,aA1PS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrB0wF,UAAWjzH,EAAMyjC,cAuPmBomC,GAAzBsB,CAAwCmrD,IE1PxC+C,GAnBiC,SAAA77H,GAAsB,IAAnBrE,EAAmBqE,EAAnBrE,aACzCkxG,EAAWqB,eAEXxwC,EAAco+D,uBAAY,WAC5BjvB,EAASt+E,OACV,IAEH,OACIxtB,GAAAC,EAAAC,cAACooE,GAAD,CACI7mE,MAAO,EACP0uC,UAAuB9uC,IAAjBzG,EACNoO,MAAO,+CACPqlB,YAAazzB,GAAgB,GAC7Bw1C,iBAAe,EACfkH,aAAcqlB,KCApB55C,GAAUqP,GAAgBumB,YAC1B62E,GAAgBp9F,GAAgBq9F,YAAY90F,QAE5CqgG,GAAgB,SAAC/rH,GACnB,IAAME,EAASF,EAAME,OAEjB8rH,GAAyB,EACzBhsH,EAAMisH,uBAEND,EAAmC,SADrBhsH,EAAMisH,qBAAqBzoH,MAAM,EAAG,IAItD,OAAQtD,GACJ,IAAK,OACD,MAAO,WACX,IAAK,aACD,MAAO,WACX,IAAK,iBACD,MAAO,YACX,IAAK,SACD,MAA2B,aAAvBF,EAAMksH,aAAoC,eAC1CF,EAA+B,WACD,QAA9BhsH,EAAM+wB,oBAAsC,WACzC,WACX,QACI,MAAO,KAmNJo7F,GAtM2B,SAAAn8H,GASpC,IARF4P,EAQE5P,EARF4P,OACA/C,EAOE7M,EAPF6M,SACA0hH,EAMEvuH,EANFuuH,sBACAtgB,EAKEjuG,EALFiuG,gBACA9pE,EAIEnkC,EAJFmkC,eACAkC,EAGErmC,EAHFqmC,mBACA+1F,EAEEp8H,EAFFo8H,cACAC,EACEr8H,EADFq8H,iBAEMC,EAAiBC,mBAAQ,WAC3B,OAAK3sH,GAEDA,EAAOyC,OAAO,SAAAurD,GACV,MAC0B,KAAtBm+D,GAAcn+D,MAETA,EAAG38B,yBACA1yB,SAASqvD,EAAG38B,wBAAyB,IAAM,GAC9C28B,EAAG18B,4BACA3yB,SAASqvD,EAAG18B,2BAA4B,IAAM,MAT9C,IAcrB,CAACtxB,IAEEkoH,EAAe,CACjB,CACI3sG,OAAQolG,GAAct1H,KACtBq7G,SAAU,OAEV9sF,KAAM,SAAA5uB,GAAA,IAAGkG,EAAHlG,EAAGkG,MAAH,OAAoBC,GAAAC,EAAAC,cAAA,YAAOH,IACjCqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc55H,GACtB2/G,SAAU,gBACV9sF,KAAM,SAAA/R,GAAA,IAAG3W,EAAH2W,EAAG3W,MAAH,OAAoBC,GAAAC,EAAAC,cAAA,YAAOH,IACjCqhB,MAAO,KAEX,CACIgJ,OAAQolG,GAAc//G,KACtB8lG,SAAU,+BACV9sF,KAAM,SAAA7uB,GAAA,IAAGmG,EAAHnG,EAAGmG,MAAH,OAEFC,GAAAC,EAAAC,cAAA,YAAOH,IAEXqhB,MAAO,KASX,CACIgJ,OAAQolG,GAAc/9E,YACtB8jE,SAAU,SACV9sF,KAAM,SAAAzO,GAAuB,IAApBi0B,EAAoBj0B,EAApBi0B,SACL,MAA8B,aAA1BA,EAASktF,aACDn7H,GAAAC,EAAAC,cAAA,iBAAS+tC,EAASxgC,OAAlB,WAEJzN,GAAAC,EAAAC,cAAA,YAAO+tC,EAASxgC,OAAhB,YAEZ2T,MAAO,KAQX,CACIgJ,OAAQolG,GAAcrgH,OACtBomG,SAAU,SACV9sF,KAAM,SAACuuG,GAAD,OACFgE,GAAchE,EAAU/oF,WAI5B7sB,MAAO,KAGX,CACIgJ,OAAQ,WACJ,OACIpqB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACVqvH,GAAciM,MAAO,IACrBn2F,EAAmBrI,SAChBj9B,GAAAC,EAAAC,cAAA,OACIC,UAAU,sBACV+X,IAAK7U,GAAU,iBAMnCkyG,SAAU,SACV9sF,KAAM,SAAAxN,GAAuB,IACnByqB,EADmBzqB,EAApBgzB,SAEL,MAA+B,aAA3B+sF,GAAct1F,GAEV1lC,GAAAC,EAAAC,cAACiuC,GAAD,CACI3tC,MAAM,SACNwI,MAAM,gCACN0hC,SAAUpF,EAAmBrI,QAC7B0N,QAAS,kBACL0wF,EAAc,CACVvvH,WACAmD,MAAOy2B,OAOpB,MAGXtkB,MAAO,MA6Bf,OACIphB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mBACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,WACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ24G,cACb17H,GAAAC,EAAAC,cAACy7H,GAAD,wBAEJ37H,GAAAC,EAAAC,cAAA,OAAKC,UAAU,YACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQ64G,SAAS5yH,MACxBxI,MAAM,SACNkqC,aAlBZ5+B,GAAaA,EAAS+b,uBACnB/b,GAAYA,EAAS4b,gBAkBZijB,QAAS,WACL2wF,EAAiB,CACbxvH,WACA+C,OAAQ0sH,SAO5Bv7H,GAAAC,EAAAC,cAAA,cAAM6iB,GAAQ/Z,MAAd,KACAhJ,GAAAC,EAAAC,cAAC8yH,GAAD,CACIpmF,QAASmqF,EACTl8G,KAAM0gH,EACN1uF,gBAAiB0uF,EAAiBA,EAAe9xH,OAAS,EAC1DsjC,UAAU,EACVD,WAAY/pB,GAAQ+pB,aAGxB9sC,GAAAC,EAAAC,cAACozH,GAAD,CAAwBzkH,OAAQ0sH,IAEhCv7H,GAAAC,EAAAC,cAACqzH,GAAD,CACIznH,SAAUA,EACVs3B,eAAgBA,EAChBv0B,OAAQ0sH,EACR/N,sBAAuBA,EACvBtgB,gBAAiBA,IAGrBltG,GAAAC,EAAAC,cAAC27H,GAAD,CACIjhI,aAAc0qC,EAAmB1qC,2DCvPjD0lB,KAAKC,SAAS,CACVC,OAAQ,aACRC,MAAO,CACH,CACIC,WAAY,IACZxI,IAAKyI,MAET,CACID,WAAY,IACZxI,IAAK0I,MAET,CACIF,WAAY,IACZxI,IAAK4jH,sBCXXj7G,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,MACfxgB,gBAAiB,UACjBygB,WAAY,SACZ4I,QAAS,OACTrH,eAAgB,eAChBd,KAAM,GAEVR,IAAK,CACDC,MAAO,QACPC,OAAQ,OACRC,QAAS,YAEbrU,KAAM,CACF8uH,cAAe,YACfr7G,WAAY,YACZiC,WAAY,gBAIdq5G,GAAgBj5G,GAAQvI,OAEfyhH,GAAA,kBACXj8H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAO+uH,GAAchzH,OACzChJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOC,MAAOZ,GAAOM,IAAKjJ,IAAKwJ,SC/BjCyB,GAAUC,yBAA6B,IAEhC84G,GAAmB/4G,GAAQG,SAEzBH,MCDA,SAASg5G,KACpB,OAAO34G,sBAAW44G,ICEtB,IAAMr5G,GAAUqP,GAEVvR,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPC,cAAe,SACf6I,QAAS,OACTsyB,YAAa,EACbY,YAAa,UACb32B,aAAc,KACdjF,MAAO,MACP2D,UAAW,GACXs3G,WAAY,MACZ/6G,QAAS,GAEbg7G,kBAAmB,CACfl7G,MAAO,MACP0I,QAAS,OACT5I,WAAY,UAEhBq7G,iBAAkB,CACdt7G,cAAe,SACfC,WAAY,WACZE,MAAO,MACPuB,WAAY,aACZ0C,YAAa,EACbrD,SAAU,GACVtB,WAAY,QAEhB87G,kBAAmB,CACfv7G,cAAe,SACfC,WAAY,aACZE,MAAO,MACPi7G,WAAY,GACZ15G,WAAY,aACZX,SAAU,GACVtB,WAAY,KAEhB+7G,UAAW,CACPx7G,cAAe,OAEnByC,UAAW,CACPtC,MAAO,GACPC,OAAQ,GACR0D,UAAW,IAEf23G,SAAU,CACN33G,UAAW,MA4CJ43G,GAxCW,WAAM,IAAAC,EACYT,KAAhC9sH,EADoButH,EACpBvtH,SAAUic,EADUsxG,EACVtxG,QAASxf,EADC8wH,EACD9wH,SAE3B,OACI9L,GAAAC,EAAAC,cAACquC,GAAA,SAAD,KACIvuC,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO47G,WAChBz8H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOy7G,mBAChBt8H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOC,MAAOZ,GAAO6C,UAAWxL,IAAKyM,QAEzC3kB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO07G,kBAChBv8H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOuB,GAAQ85G,kBAAkBvxG,SACjCtrB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOuB,GAAQ85G,kBAAkB/wG,YACjC9rB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOuB,GAAQ85G,kBAAkB9wG,UACjC/rB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOuB,GAAQ85G,kBAAkBx7D,YACjCrhE,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOuB,GAAQ85G,kBAAkBxjB,cACjCr5G,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO67G,UACf35G,GAAQ85G,kBAAkB9wH,iBAGnC/L,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO27G,mBAChBx8H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACK8J,EAAQM,OADb,IACsBN,EAAQO,QAE9B7rB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAO8J,EAAQQ,YACf9rB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAO8J,EAAQS,UACf/rB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACKnS,EAASjP,KAAKwP,SADnB,IAC8BP,EAASjP,KAAKuP,WAE5C3P,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOnS,EAASrV,aAChBgG,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO67G,UACf5wH,EAASC,+BC7EhC+wH,GAAI1qG,GAAgB2qG,kBAEpBl8G,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACP8I,QAAS,OACT5I,WAAY,UAEhB87G,aAAc,CACVlzG,QAAS,OACT5I,WAAY,UAEhBjU,KAAM,CACF0V,WAAY,aACZjC,WAAY,OACZsB,SAAU,GACV+C,UAAW,IAEfk4G,cAAe,CACXnzG,QAAS,OACT7I,cAAe,MACfwB,eAAgB,iBAEpBy6G,uBAAwB,CACpBn4G,UAAW,GACX+E,QAAS,OACT7I,cAAe,MACfwB,eAAgB,iBAEpBvoB,KAAM,CACFyoB,WAAY,aACZjC,WAAY,OACZsB,SAAU,GACVq6G,WAAY,IAEhBc,SAAU,CACNx6G,WAAY,aACZjC,WAAY,OACZsB,SAAU,MA4FHo7G,GAxFW,WAAM,IAAAR,EACGT,KAAvBl3F,EADoB23F,EACpB33F,SAAUn5B,EADU8wH,EACV9wH,SACZ+O,EAAOjM,GAAmBq2B,GAC1BlE,EAAmB,IAAIziC,KAAKwN,EAASi1B,kBACrCD,EAAqB,IAAIxiC,KAAKwN,EAASg1B,oBAIvClG,EAAU/f,EAAK/L,UACfI,aACI2L,EAAK/L,UAAUJ,0BACf,aACA,IAAIpQ,MAERwN,EAASk1B,cACT,IAAI1iC,KAAKwN,EAASk1B,eAClBF,EAEAu8F,EAAevxH,EAASk1B,cACxB,IAAI1iC,KAAKwN,EAASk1B,eAClB,IAAI1iC,KAAKwiC,GAEXh1B,EAASk1B,cAELs8F,aACIpuH,aAAMpD,EAASk1B,cAAe,aAAc,IAAI1iC,MAChDs8B,GAGJyiG,EAAa5M,YAAY71F,EAAQr8B,cAAgB,GAEjD8+H,EAAa5M,YAAY71F,EAAQr8B,eAGjC++H,aAAWx8F,EAAoBlG,GAC/ByiG,EAAa5M,YAAY71F,EAAQr8B,cAAgB,GAEjD8+H,EAAa5M,YAAY71F,EAAQr8B,eAIzC,IAAMg/H,EAAQ,GAAAtzH,OAAM6yH,GAAEU,aAAR,KAAAvzH,OAAwB2wB,EAAQ6iG,eAAe,UAAW,CACpE39H,MAAO,OACPD,KAAM,YAFI,KAAAoK,OAGR6yH,GAAEvmF,GAHM,KAAAtsC,OAGAozH,EAAaI,eAAe,UAAW,CACjD39H,MAAO,OACPD,KAAM,YALI,OAAAoK,OAMN6yH,GAAEY,MAEV,OACI19H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOswH,GAC3Bv9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOm8G,cAChBh9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACIxhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOq8G,wBAChBl9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOs8G,UACfL,GAAE/7F,iBADP,MAGA/gC,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO3mB,MACf6mC,EAAiBuL,uBAG1BtsC,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOo8G,eAChBj9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOs8G,UACfL,GAAEa,kBADP,MAGA39H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO3mB,MACf4mC,EAAmBwL,uBAG3BxgC,EAASk1B,eACNhhC,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOo8G,eAChBj9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOs8G,UAApB,4BAGAn9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO3mB,MACf,IAAIoE,KACDwN,EAASk1B,eACXsL,qCCpG1B/kB,GAAoCxE,GAApCwE,iBAAkBq2G,GAAkB76G,GAAlB66G,cAEpB/8G,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPI,MAAO,MACPi7G,WAAY,MACZt3G,UAAW,IAEfvK,OAAQ,CACJ/Z,gBAAiB,UACjB6gB,QAAS,QACTqB,WAAY,aACZjC,WAAY,IACZsB,SAAU,IAEdxnB,KAAM,CACF8mB,QAAS,YAEbqJ,SAAU,CACNlqB,gBAAiB,UACjBkiB,WAAY,aACZjC,WAAY,KAEhBghC,MAAO,CACHtgC,MAAO,OACP0I,QAAS,OACT7I,cAAe,MACfyqE,OAAQ,kBACRjpE,eAAgB,aAChBvB,WAAY,SACZG,OAAQ,GACR0D,UAAW,GACXtkB,gBAAiB,WAErBo9H,WAAY,CACRz8G,MAAO,MACPE,QAAS,MACTmB,eAAgB,aAChBvB,WAAY,aACZyB,WAAY,aACZjC,WAAY,IACZsB,SAAU,GACVX,OAAQ,QAEZy8G,WAAY,CACR18G,MAAO,MACPqB,eAAgB,SAChBvB,WAAY,SACZyB,WAAY,aACZjC,WAAY,IACZsB,SAAU,GACVX,OAAQ,OACRuI,WAAY,kBACZnpB,gBAAiB,WAErBs9H,KAAM,CACFj0G,QAAS,OACTrH,eAAgB,SAChBsC,UAAW,EACXpC,WAAY,aACZ1B,cAAe,MACfe,SAAU,EACVZ,MAAO,QAEX48G,OAAQ,CACJt9G,WAAY,KAEhBu9G,SAAU,CACNv9G,WAAY,OAoPLw9G,GAhPO,WAAM,IAAAtB,EACOT,KAAvBl3F,EADgB23F,EAChB33F,SAAUn5B,EADM8wH,EACN9wH,SACZqyH,EAAiBvvH,GAAmBq2B,GAAUn2B,UAC9C8rB,EAAUujG,EACTA,EAA8Bl+F,4BAC/Bn0B,EAASg1B,mBAKTs9F,EACFtyH,EAAS4b,gBAAmB5b,EAAS4b,eAAe,GAClDqrB,EAAOqrF,EAAgBA,EAAc3wH,OAAS,EAE9Cod,EAAgB,IAAIve,MACtB+xH,EAAe,EAEbvxH,EAAY,WACd,OAAQhB,EAAS+b,sBACb,IAAK,UACD,OAAO,EACX,IAAK,YACD,OAAO,EACX,IAAK,YACD,OAAO,EACX,IAAK,cACD,OAAO,EACX,QACI,OAAO,IAgCby2G,EAAa,SACf7lH,EACAs6B,EACAlrB,EACA3tB,EACAuT,GAEA,MAAO,CACH0S,YA3BY1Q,EA2BWgJ,EA1BpB,OAAShJ,EAAO,iBAAgB,OA2BnCsjC,OACAlrB,qBACIN,GAAiBM,GACrB3tB,OACAqkI,YAAa9wH,GAhCF,IAACgC,GAoCd+uH,EAAmB,SAAC1+H,GACtB,GAAIgM,EAAS4b,iBAAmB5b,EAAS4b,eAAe,GACpD,OAAOla,SAASulC,EAAM,IAE1B,IAAM0rF,EACF3yH,EAAS4b,gBAAmB5b,EAAS4b,eAAe,GAClDg3G,EACFN,EAAc7wH,YAAcxW,EAAW6wD,OACjCw2E,EAAc3wH,OACdgxH,EAAoBhxH,OACxBkxH,EACFP,EAAc7wH,YAAcxW,EAAW0wD,OACjC22E,EAAc3wH,OACdgxH,EAAoBhxH,OAC9B,OAAO3N,GAAS,GAAKA,GAAS,EAAI4+H,EAAcC,GAG9CC,EAAwB,SAAC9+H,GAG3B,IAFA,IAAI2N,EAAiB,EACjBlO,EAAYO,EACTP,EAAIO,EAAQgN,KACfW,EAASK,OAAOL,GAAUK,OAAO0wH,EAAiBj/H,EAAI,KACtDA,EAAIuO,OAAOvO,GAAK,EAGpB,OADA8+H,EAAevwH,OAAOuwH,GAAgBvwH,OAAOL,GACtCA,GAyFX,OAJI2wH,GAAiBtyH,GAlFH,WACd,IAAI+yH,EAAY/xH,IACZ5S,EAAO,IAAIoE,KACfpE,EAAOgV,aAAM0rB,EAAS,aAAc,IAAIt8B,MACpC6/H,GAOAU,EAA0B,KAJ1BA,EAhFmB,SAAC7N,EAAYzB,GACpC,IAAM99G,EAAkBvC,aAAM8hH,EAAO,aAAc,IAAI1yH,MACjD0S,EAAgB9B,aAAMqgH,EAAK,aAAc,IAAIjxH,MAC7CwgI,EAAmB7lH,KAAKwjC,IAC1BzrC,EAAQrC,UAAY8C,EAAU9C,WAElC,OAAOsK,KAAKimC,MAAM4/E,EAAQ,MAA2B,IA0ErCC,CACRZ,EAAel+F,4BACfk+F,EAAezvH,4BAEW,EAAImwH,EAClCR,EAAevwH,OAAOuwH,GAAgBvwH,OAAOqwH,EAAe1wH,QAC5Dod,EAAcrrB,KACV8+H,EACIxyH,EAAS2M,OACT3K,OAAOkxH,UAAUb,EAAe1wH,OAASoxH,GACnCV,EAAe1wH,OAASoxH,EACxBpsF,YACK0rF,EAAe1wH,OAASoxH,GAAWnsF,QAAQ,IA/E7C,SAAC3yC,GACtB,OAAQA,GACJ,KAAK,EACD,MAAO,UACX,KAAK,EACD,MAAO,YACX,KAAK,EACD,MAAO,YACX,KAAK,EACD,MAAO,cACX,QACI,MAAO,YAsEHk/H,CAAiBJ,GACjBV,EAAejkI,KACfikI,EAAe1wH,OAAO2E,MAAM,KAAK,MAIzCyY,EAAcrrB,KACV8+H,EACIxyH,EAAS2M,OACT+lH,EAAiBtkI,EAAK4E,YACtBgN,EAAS+b,qBACT3tB,EAAKoyC,qBACLsyF,EAAsB1kI,EAAK4E,cAKvC,IAAMkS,EAAU,IAAI1S,KAChBwN,EAASk1B,cACHl1B,EAASk1B,cACTl1B,EAASg1B,oBAEnB9vB,EAAQy/G,YAAYz/G,EAAQzS,cAAgB,GAC5C,IAAM2gI,EAAiBC,aAAmBnuH,EAAS9W,GAAQ,EAE3DA,EAAKqe,QAAQre,EAAK6E,UAAY,GAC9B7E,EAAO,IAAIoE,KACPpE,EAAKqE,cACLrE,EAAK4E,WAAa+/H,EAClBrxH,SAAS1B,EAAS62B,QAAQjmB,SAAU,KAExCmO,EAAcrrB,KACV8+H,EACIxyH,EAAS2M,OACT+lH,EAAiBtkI,EAAK4E,YACtBgN,EAAS+b,qBACT3tB,EAAKoyC,qBACLsyF,EAAsB1kI,EAAK4E,cAInC,IADA,IAAIS,EAAY,EACTA,EAAI2/H,EAAiBpyH,KACxB5S,EAAO,IAAIoE,KACPpE,EAAKqE,cACLrE,EAAK4E,WAAagO,IAClBU,SAAS1B,EAAS62B,QAAQjmB,SAAU,KAExCmO,EAAcrrB,KACV8+H,EACIxyH,EAAS2M,OACT+lH,EAAiBtkI,EAAK4E,YACtBgN,EAAS+b,qBACT3tB,EAAKoyC,qBACLsyF,EAAsB1kI,EAAK4E,cAGnCS,EAAIuO,OAAOvO,GAAK,EAMpB6/H,GAIAp/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAAC8qB,GAAD,CAAOnQ,KAAMgQ,GACT7qB,GAAAC,EAAAC,cAAC+qB,GAAD,CAAQ7I,UAAU,SAASX,MAAOZ,GAAOrG,QACrCxa,GAAAC,EAAAC,cAACgrB,GAAD,gBACAlrB,GAAAC,EAAAC,cAACgrB,GAAD,gBACAlrB,GAAAC,EAAAC,cAACgrB,GAAD,0CACAlrB,GAAAC,EAAAC,cAACgrB,GAAD,kCACAlrB,GAAAC,EAAAC,cAACgrB,GAAD,gCAEJlrB,GAAAC,EAAAC,cAACirB,GAAD,CAAM1J,MAAOZ,GAAOrmB,MAChBwF,GAAAC,EAAAC,cAACkrB,GAAD,CAAUhJ,UAAU,SAASqG,KAAM,SAAA4C,GAAC,OAAIA,EAAElL,cAC1CngB,GAAAC,EAAAC,cAACkrB,GAAD,CAAUhJ,UAAU,SAASqG,KAAM,SAAA4C,GAAC,OAAIA,EAAE0nB,QAC1C/yC,GAAAC,EAAAC,cAACkrB,GAAD,CACIhJ,UAAU,SACVqG,KAAM,SAAA4C,GAAC,OAAIA,EAAExD,wBAEjB7nB,GAAAC,EAAAC,cAACkrB,GAAD,CAAUhJ,UAAU,SAASqG,KAAM,SAAA4C,GAAC,OAAIA,EAAEnxB,QAE1C8F,GAAAC,EAAAC,cAACkrB,GAAD,CAAUhJ,UAAU,SAASqG,KAAM,SAAA4C,GAAC,OAAIA,EAAEkzG,iBAGlDv+H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO6gC,OAChB1hD,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOg9G,YAChB79H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAOo8G,GAAcl8E,QAEzB1hD,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOi9G,YAChB99H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KAAO68G,KAGfr+H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOk9G,MAChB/9H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOm9G,QAApB,SACAh+H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOo9G,UAChBj+H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,iLAKAxhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,6ICnUdX,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACPo7B,YAAa,EACbY,YAAa,UACb32B,aAAc,KACdjF,MAAO,MACPE,QAAS,GACTyD,UAAW,IAEfI,iBAAkB,CACdlE,cAAe,MACfC,WAAY,SACZI,QAAS,WAEb8D,UAAW,CACPhE,MAAO,KAEXD,IAAK,CACDC,MAAO,GACPC,OAAQ,GACRgE,YAAa,GAEjBpY,KAAM,CACF+U,SAAU,GAEdu7G,SAAU,CACNv7G,SAAU,GACVS,eAAgB,SAChB45G,WAAY,IAEhBgD,YAAa,CACTr9G,SAAU,GACVS,eAAgB,SAChB45G,WAAY,GACZt3G,UAAW,IAEflB,OAAQ,CACJ7B,SAAU,EACVV,QAAS,WAEbgE,SAAU,CACNP,UAAW,EACXzD,QAAS,UACTU,SAAU,GAEds9G,cAAe,CACXx1G,QAAS,OACT7I,cAAe,MACfwB,eAAgB,gBAEpB88G,KAAM,CACFx9G,SAAU,WACVE,OAAQ,GACRC,KAAM,EACNC,MAAO,KAIToD,GAAwD,SAAAtmB,GAAA,IAC1DiZ,EAD0DjZ,EAC1DiZ,IACAjL,EAF0DhO,EAE1DgO,KACA4U,EAH0D5iB,EAG1D4iB,SAH0D,OAK1D7hB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOsE,kBAChBnlB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAOtJ,IAAKA,EAAKuJ,MAAOZ,GAAOM,MAC9BU,GAAYA,EACZ5U,GAAQjN,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOA,KAItCuyH,GAAcz8G,GAAQ08G,aAEbA,GAAA,kBACXz/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO0+G,MAChBv/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACIxhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOw+G,aAAcG,GAAYE,QAC9C1/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO08G,UAAWiC,GAAYG,QAC3C3/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO08G,UAAWiC,GAAYI,SAE/C5/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOy+G,eAChBt/H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOG,WAChBhhB,GAAAC,EAAAC,cAAC2/H,GAAD,CAAW3nH,IAAKyN,KAAU1Y,KAAMuyH,GAAYh7G,OAC5CxkB,GAAAC,EAAAC,cAAC2/H,GAAD,CAAW3nH,IAAK6N,KAAc9Y,KAAMuyH,GAAYx5G,WAChDhmB,GAAAC,EAAAC,cAAC2/H,GAAD,CAAW3nH,IAAK0N,MACZ5lB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,KACIxhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAAOuyH,GAAY1vH,OACvC9P,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAKtrB,OAAAkuB,GAAA,EAAAluB,CAAA,GAAO0qB,GAAO5T,KAAS4T,GAAOuE,YACpCo6G,GAAY35G,wBC3FnChF,GAASC,KAAWC,OAAO,CAC7BC,UAAW,CACP8I,QAAS,OACT7I,cAAe,SACfC,WAAY,SACZa,SAAU,WACVE,OAAQ,EACRC,KAAM,EACNC,MAAO,EACPd,OAAQ,OACR5gB,gBAAiB,UACjB6gB,QAAS,GAEbH,IAAK,CACDC,MAAO,QACPC,OAAQ,OACRC,QAAS,YAEbrU,KAAM,CACF+U,SAAU,GACVtB,WAAY,OACZiC,WAAY,cAEhBm9G,UAAW,CACP99G,SAAU,KAIH+9G,GAAA,kBACX//H,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMgB,OAAK,EAACf,MAAOZ,GAAOG,WACtBhhB,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAO5T,MAApB,gCACAjN,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMC,MAAOZ,GAAOi/G,WAApB,uDCfFj/G,GAASC,KAAWC,OAAO,CAC7B8L,KAAM,KAoBKmzG,GAjBqB,SAAAp/H,GAChC,OACIZ,GAAAC,EAAAC,cAACg8H,GAAD,CAAkBn8H,MAAK5J,OAAAkuB,GAAA,EAAAluB,CAAA,GAAOyK,IAC1BZ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAUyL,OAAO,aAAajkB,MAAM,cAChChJ,GAAAC,EAAAC,cAACshB,GAAA,EAAD,CAAMpV,KAAK,KAAKqV,MAAOZ,GAAOgM,MAC1B7sB,GAAAC,EAAAC,cAAC+7H,GAAD,MACAj8H,GAAAC,EAAAC,cAAC+/H,GAAD,MACAjgI,GAAAC,EAAAC,cAACggI,GAAD,MACAlgI,GAAAC,EAAAC,cAACigI,GAAD,MACAngI,GAAAC,EAAAC,cAACu/H,GAAD,MACAz/H,GAAAC,EAAAC,cAAC6/H,GAAD,UC/BLK,GAAA,SAASx/H,GACpB+tB,aAAI3uB,GAAAC,EAAAC,cAACmgI,GAAaz/H,IACbiuB,SACAl5B,KAAK,SAAAm5B,GACF7a,OAAO8a,KAAKrzB,IAAIszB,gBAAgBF,OCiCtC/L,GAAUqP,GAAgBumB,YAS1B2yB,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QAErC48F,kBAAmBvzG,GAAoB2W,QACvC68F,sBAAuBlmG,GAAmBqJ,QAC1C+8F,2BAA4B16H,GAC5B26H,sBAAuBr0G,GACvBs0G,oBAAqBr0G,GACrB0gH,+BAAgCzyG,GAA4BmJ,SAK1DupG,GAAiB32F,aAMnBshF,KACA5Z,KAPmB1nE,CAQrBwxF,IAgBIziF,eACF,SAAAA,EAAY/3C,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA43C,IACtB93C,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAwiD,GAAAz3C,KAAAH,KAAMH,KAUVs7G,kBAAoB,WAAM,IAAAr6G,EAMXhB,EAAKD,MAJKkjC,EAFCjiC,EAElBsyH,cAAiBrwF,uBAEjB8vF,EAJkB/xH,EAIlB+xH,kBACgBxwF,EALEvhC,EAKlBipH,aAAgB1nF,eASpBwwF,EAAkB,CACd35H,YAAa6pC,EACb9pC,YAAaopC,EACblnB,KAAM,aA5BYrb,EAgC1BsqH,mBAAqB,SAACp/G,GAA2B,IAAAkrC,EAQzCp2C,EAAKD,MANYmb,EAFwBk7B,EAEzCk9E,cAAiBp4G,UACDqnB,EAHyB6T,EAGzC6zE,aAAgB1nF,eAChBuwF,EAJyC18E,EAIzC08E,iBAEAM,EANyCh9E,EAMzCg9E,oBACAL,EAPyC38E,EAOzC28E,kBAEE75H,EAAU,CACZE,YAAa8R,EACb/R,YAAaopC,GAEXt3B,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB55H,GAErB65H,EAAkB,CACd35H,YAAa8R,EACb/R,YAAaopC,EACblnB,KAAM,aAtDYrb,EA0D1B2sH,sBAAwB,SAAC4G,EAAgBzgE,GAAe,IAC5CiW,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOhvC,QAAU+4B,EACjBiW,EAAO36D,MAAQmlH,EACfvzH,EAAKc,SAAS,CAAEioE,YA9DM/oE,EAiE1BwzH,aAAe,WAAM,IACTzqD,EAAW/oE,EAAKY,MAAhBmoE,QAERiqD,EADkChzH,EAAKD,MAA/BizH,uBACcjqD,GACtBA,EAAOhvC,QAAU,GAEjB/5B,EAAKc,SAAS,CAAEioE,YAvEM/oE,EA0E1Bw6H,cAAgB,SAACz6H,GAA8B,IAAA2tD,EACc1tD,EAAKD,MAAtD0/H,EADmC/xE,EACnC+xE,+BAAgCxV,EADGv8D,EACHu8D,aADG0V,EAMvC1V,EAHAx7G,QAAWI,EAH4B8wH,EAG5B9wH,iBAAkB4b,EAHUk1G,EAGVl1G,QAASzb,EAHC2wH,EAGD3wH,MAAOC,EAHN0wH,EAGM1wH,MAC7CwN,EAEAwtG,EAFAxtG,aACA8lB,EACA0nF,EADA1nF,eAGIt3B,EAAoBlL,EAApBkL,SAAUmD,EAAUrO,EAAVqO,MAEbA,GAELqxH,EAA+B,CAC3BpkH,KAAM,iBACNjiB,YAAa6R,EAASC,eACtBguH,cAAerqH,EACf4N,eACA6C,WAAYrU,EAAS2M,OACrBgoH,eAAgBxxH,EAAMrZ,GACtB8qI,UAAWhnH,GAAmBzK,EAAM8wB,8BACpC/lC,YAAaopC,EACb42F,gBAAiB1uG,EACjByV,iBAAkBj1B,EAASi1B,iBAC3B+4F,aAAchuH,EAASG,aAAaJ,KAChC,SAAAs2F,GAAE,MAAgB,aAAZA,EAAGj2F,OAEbuiB,YAAa,CACT3iB,SAAUlL,EAAMkL,SAChBmD,MAAOrO,EAAMqO,MACbI,SAAU,CACNjP,KAAMsP,EACN1V,YAAaopC,EACbvzB,QACAC,SAEJwb,cA7GczqB,EAkH1By6H,iBAAmB,SAAC16H,GAAiC,IAAAu2D,EACbt2D,EAAKD,MAAjCkqH,EADyC3zD,EACzC2zD,aAAc4J,EAD2Bv9D,EAC3Bu9D,UAD2BiM,EAO7C7V,EAHAx7G,QAAWI,EAJkCixH,EAIlCjxH,iBAAkB4b,EAJgBq1G,EAIhBr1G,QAE7B8X,GACA0nF,EAFAxtG,aAEAwtG,EADA1nF,gBAEI6B,EAAayvF,EAAbzvF,SACAn5B,EAAalL,EAAbkL,SAERs0H,GAAoB,CAChBt0H,WACAm5B,WACA51B,SAAU,CACNjP,KAAM,CACFuP,UAAWD,EAAiBC,UAC5BC,SAAUF,EAAiBE,UAE/B5V,YAAaopC,GAEjB9X,QAAS,CACLM,OAAQN,EAAQM,OAChBC,OAAQP,EAAQO,OAChBiT,QAASxT,EAAQwT,QACjBhT,WAAYR,EAAQQ,WACpB+S,QAASvT,EAAQuT,QACjB9S,SAAUT,EAAQS,aA7IJlrB,EAkJ1B4/F,YAAc,WAAM,IAAAvwC,EAMZrvD,EAAKD,MAJLgzH,EAFY1jE,EAEZ0jE,kBACAG,EAHY7jE,EAGZ6jE,2BACgB3wF,EAJJ8sB,EAIZ46D,aAAgB1nF,eACCU,EALLosB,EAKZikE,cAAiBrwF,uBAGrBiwF,IACAH,EAAkB,CACd35H,YAAa6pC,EACb9pC,YAAaopC,EACblnB,KAAM,aA3JVrb,EAAKY,MAAQ,CACTmoE,OAAQ,CACJhvC,QAAS,GACT3rB,MAAOgwB,KANOp+B,0EAkKjB,IAAAo3D,EAQMl3D,KAAKH,MARXggI,EAAA3oE,EAED6yD,aAAgBx7G,EAFfsxH,EAEetxH,QAASgO,EAFxBsjH,EAEwBtjH,aAAc8lB,EAFtCw9F,EAEsCx9F,eAFtCy9F,EAAA5oE,EAGDk8D,cAAiBp4G,EAHhB8kH,EAGgB9kH,UAAW+nB,EAH3B+8F,EAG2B/8F,uBAAwBvoC,EAHnDslI,EAGmDtlI,MAHnDulI,EAAA7oE,EAIDw8D,aAAgBnxF,EAJfw9F,EAIex9F,eAAgBgC,EAJ/Bw7F,EAI+Bx7F,mBACnBL,EALZgzB,EAKDy8D,UAAazvF,SAEb+uF,GAPC/7D,EAMD87D,2BANC97D,EAOD+7D,uBAGEloH,EAAWJ,GACbo4B,EACA/nB,GAGJ,OACI/b,GAAAC,EAAAC,cAACqgI,GAAD,CACI1xH,OAAQo2B,EACR7B,eAAgBA,EAChBt3B,SAAUA,EACV0hH,sBAAuBzsH,KAAKysH,sBAC5BloF,mBAAoBA,EACpB+1F,cAAet6H,KAAKs6H,cACpBC,iBAAkBv6H,KAAKu6H,iBAEvBtyH,MAAO+Z,GAAQ/Z,MACfqiH,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9Bj4G,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBACzBrnF,uBAAwBA,EAExB8tE,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAa1/F,KAAK0/F,qBAxMRt9F,KAAMC,WCtFjBu1C,GDoSAi0B,aA1PS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrBywF,aAAchzH,EAAM8jC,eACpBmvF,UAAWjzH,EAAMyjC,cAsPmBomC,GAAzBsB,CAAwCj0B,IE9RjD51B,GAAUqP,GAAgBm3B,YAE1Bw3E,GAA4B,CAC9B,CACInrI,GAAI,IACJ8W,MAAOqW,GAAQywB,IAAIvjC,YACnBlQ,MAAO,eAEX,CACInK,GAAI,IACJ8W,MAAOqW,GAAQywB,IAAIwtF,qBACnBjhI,MAAO,eAEX,CACInK,GAAI,IACJ8W,MAAOqW,GAAQywB,IAAIpjC,aACnBrQ,MAAO,gBAEX,CACInK,GAAI,IACJ8W,MAAOqW,GAAQywB,IAAIrjC,qBACnBpQ,MAAO,yBA6GAkhI,GAnGV,SAAAhiI,GAA8D,IACxCiiI,EADnB5xH,EAA2DrQ,EAA3DqQ,QAAS6xH,EAAkDliI,EAAlDkiI,QAASp1H,EAAyC9M,EAAzC8M,eAAgB0D,EAAyBxQ,EAAzBwQ,KAAM6N,EAAmBre,EAAnBqe,aAYxC/O,EAQA,CACAH,SAAUkB,EAAQlB,SAClBuB,UAAWL,EAAQK,UACnBC,SAAUN,EAAQM,SAClBC,MAAOP,EAAQO,MACfC,MAAOR,EAAQQ,MACfP,UAAWD,EAAQC,UACnB+b,QAAShc,EAAQgc,SAYrB,MAVa,YAAT7b,IACAlB,EAAI,CACAH,SAAU+yH,EAAQ/yH,SAClBuB,UAAWwxH,EAAQxxH,UACnBC,SAAUuxH,EAAQvxH,SAClBC,MAAOsxH,EAAQtxH,MACfyb,QAAS61G,EAAQ71G,UAKrBtrB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+CACD,YAATsP,EACGzP,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ8vB,YAAY7pC,OAEzBhJ,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQo+G,QAAQn4H,OAExBuF,EAAEoB,WACC3P,GAAAC,EAAAC,cAAA,YAAA+J,OAAOkE,GAAiBI,EAAEH,UAA1B,KAAAnE,OAAuCsE,EAAEoB,UAAzC,KAAA1F,OACIsE,EAAEqB,WAGA,YAATH,EACGzP,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UAAU4iB,GAAQ8vB,YAAYhjC,OAE3C7P,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UAAU4iB,GAAQo+G,QAAQtxH,OAE1CtB,EAAEsB,OAAS7P,GAAAC,EAAAC,cAAA,SAAIqO,EAAEsB,OACjBtB,EAAEuB,OACC9P,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UACR4iB,GAAQjT,MADb,IACqBvB,EAAEuB,OAGV,KAAhBvB,EAAEgB,gBAAoClO,IAAhBkN,EAAEgB,WACrBvP,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UAAb,uBAA2CoO,EAAEgB,WAEhD+N,IAAiBjnB,EAAcsgD,eAjErBuqF,EAkEO5xH,EAjEnByxH,GAAU1rI,IAAI,SAACm+C,EAAmBnR,GAApB,OACjBriC,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,CAAgB3B,IAAKgiC,GAChB6+F,EAAI1tF,EAAIzzC,QACLC,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UACRqzC,EAAI9mC,MADT,IACiBw0H,EAAI1tF,EAAIzzC,YA8D5Bud,IAAiBjnB,EAAc0Z,YAC5BT,EAAQu+C,kBACRv+C,EAAQw+C,mBACsB,KAA9Bx+C,EAAQw+C,mBACJ9tD,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UAAb,iBACmB,IACdgO,GAAiBmB,EAAQu+C,kBAAmB,IAC5Cv+C,EAAQw+C,oBAIzB9tD,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2CACD,YAATsP,EACGzP,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ8vB,YAAYuuF,cAEzBphI,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQo+G,QAAQ7xH,QAAQgc,SAEhCvf,GACG/L,GAAAC,EAAAC,cAAA,KAAGC,UAAU,YAAb,iBAAA8J,OAAuC8B,IAE3C/L,GAAAC,EAAAC,cAAA,KAAGC,UAAU,UACRoO,EAAE+c,QAAQM,OADf,IACwBrd,EAAE+c,QAAQO,QAElC7rB,GAAAC,EAAAC,cAAA,KAAGC,UAAU,YACRoO,EAAE+c,QAAQQ,WADf,IAC4Bvd,EAAE+c,QAAQS,aC5HhDhJ,GAAUqP,GAAgBm3B,YA8BjB83E,GA1BV,SAAApiI,GAAiB,IACZ+N,EADY/N,EAAd0jC,SACiB,GACrB,OACI3iC,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,4CACT4iB,GAAQipC,cAAchjD,OAE3BhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4CACXH,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQipC,cAAcjvC,aAC1B/c,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQipC,cAAcs1E,cAC1BthI,GAAAC,EAAAC,cAAA,SAAI6iB,GAAQipC,cAAcniD,OAE9B7J,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2CACXH,GAAAC,EAAAC,cAAA,SzT0XQ,SAAC6c,GACzB,IAAMhd,EAAQgd,EAId,OAHYtU,GAAc4F,SAASq7C,aAAa79C,KAC5C,SAAC0C,GAAD,OAAqBA,EAAExO,QAAUA,KAChC,CAAE2M,MAAO,KACHA,MyT/XS60H,CAAoBv0H,EAAE+P,cAC1B/c,GAAAC,EAAAC,cAAA,SACK,IACA8M,EAAE0P,SAFP,IAEkB0V,GAAgBxpB,OAAO44H,gBAEzCxhI,GAAAC,EAAAC,cAAA,SAAI8M,EAAEuP,cCrBpBwG,GAAUqP,GAAgBm3B,YAmEjBk4E,GA1DV,SAAAxiI,GASC,IAAAyiI,EAAAziI,EARF2qE,OACIt6D,QAAWu+C,EAOb6zE,EAPa7zE,iBAAkBC,EAO/B4zE,EAP+B5zE,kBAEtB6zE,EAKT1iI,EALFisC,QAAWy2F,cACXh4C,EAIE1qF,EAJF0qF,UACAi4C,EAGE3iI,EAHF2iI,qBACA5oF,EAEE/5C,EAFF+5C,kBACA6oF,EACE5iI,EADF4iI,oBAEA,OACI7hI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,+BACXH,GAAAC,EAAAC,cAACozC,GAAD,CACI19C,GAAImtB,GAAQ++G,SACZ70H,KAAM8V,GAAQ++G,SACdtzF,QAASmzF,EACTlzF,YAAa,WACTozF,EAAoBh0E,EAAkBC,MAG7C6zE,GACG3hI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,wCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,gDACXH,GAAAC,EAAAC,cAACwmD,GAAD,CACI9wD,GAAG,WACHk2C,aACI+hB,GAAsC,KAE1C1e,QAASpsB,GAAQ3U,SAASkG,OAC1B46B,mBAAoB,SAACx5C,GAAD,OAChBksI,EAAqB,UAAWlsI,EAAEqK,QAEtCA,MAAO8tD,IAEX7tD,GAAAC,EAAAC,cAACmsC,GAAD,CACIhqC,YAAa0gB,GAAQ/S,SAASL,UAC9B5P,MAAO+tD,GAAqB,GAC5BniB,cAAe,SAACj2C,GAAD,OACXsjD,EACItjD,EACA,UACA,sBAGR6F,MACIouF,IAAcz/E,GAAY4jD,GACpB/qC,GAAQxnB,MAAM+T,QAAQK,eACtBtO,KAIlBrB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mDCrD7B4iB,GAAUqP,GAAgBm3B,YA0IjBw4E,GA3HV,SAAA9iI,GAWC,I3T+IeuuD,E2TzJjBoc,EAUE3qE,EAVF2qE,OAEA5wB,GAQE/5C,EATF0qF,UASE1qF,EARF+5C,mBACA+T,EAOE9tD,EAPF8tD,eACAi1E,EAME/iI,EANF+iI,qBACAC,EAKEhjI,EALFgjI,qBACAC,EAIEjjI,EAJFijI,uBACAh1B,EAGEjuG,EAHFiuG,gBACAi1B,EAEEljI,EAFFkjI,cACAC,EACEnjI,EADFmjI,kBAEMC,EAAyC,SAAzBJ,EAChBK,EAA6C,cAAzBL,EAC1B,OACIjiI,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,4CACXH,GAAAC,EAAAC,cAAA,OACIC,UAAS,kDAAA8J,OACJo4H,EAA0B,GAAV,UAGrBriI,GAAAC,EAAAC,cAAA,OACIC,UAAU,WACVwqC,QAAS,kBAAMq3F,EAAqB,UAEpChiI,GAAAC,EAAAC,cAACozC,GAAD,CACI9E,QAAS6zF,EACT5zF,YAAa,aACbxhC,KAAM8V,GAAQipC,cAAcniD,QAIpC7J,GAAAC,EAAAC,cAACmsC,GAAD,CACIhqC,YAAa0gB,GAAQipC,cAAcjT,OAAOlvC,KAC1C9J,O3TuHHytD,E2TvHsBoc,EAAOu3D,QAAQ3zE,K3TwHtDA,EAAKn7C,cAAc7G,QAAQ,aAAc,K2TvHrBmgC,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,UAAW,SAEpC6F,OACKqO,GAAYggE,EAAOu3D,QAAQ3zE,OAC5Boc,EAAOu3D,QAAQ3zE,KAAK/jD,QAAU,GACxBsZ,GAAQxnB,MAAM4lI,QAAQ3zE,KACtB,GAEV9iB,UAAW23F,IAEdA,GACGriI,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQyzG,QAAQ1pE,SACvBpiB,UAAWy3F,EAAcI,gBACzB53F,QAAS,WACDw3F,EAAcI,kBACdL,EAAuB,QACvBh1B,EAAgB,QAChBk1B,EAAkB,QAAQ,KAGlC5hI,MACI2hI,EAAcI,gBACR,SACA,UAKtBviI,GAAAC,EAAAC,cAAA,OACIC,UAAS,yEAAA8J,OACVq4H,EAA8B,GAAV,QADV,yCAKTtiI,GAAAC,EAAAC,cAAA,OACIC,UAAU,WACVwqC,QAAS,kBAAMq3F,EAAqB,eAEpChiI,GAAAC,EAAAC,cAACozC,GAAD,CACI9E,QAAS8zF,EACT7zF,YAAa,aACbxhC,KAAM8V,GAAQipC,cAAcw2E,iBAIpCxiI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kEACV4iB,GAAQipC,cAAcC,cAAc52D,IAAI,SAAAs+D,GAAE,OACvC3zD,GAAAC,EAAAC,cAAC8yD,GAAD,CACI3yD,IAAKszD,EACLnlB,QAASmlB,IAAOiW,EAAOltD,SACvBzP,KAAMzB,KACFuX,GAAQipC,cAAc4H,cACtB,cACAD,GAEJ5zD,MAAO4zD,EACPllB,YAAa,kBACT6zF,GAAqBv1E,EAAe4G,SAMnD2uE,GACGtiI,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQyzG,QAAQ1pE,SACvBniB,QAAS,WACDw3F,EAAcM,kBACdP,EAAuB,YACvBh1B,EAAgB,cAGxB1sG,MACI2hI,EAAcM,gBACR,SACA,aCnIhC1/G,GAAUqP,GAAgBm3B,YAoDjBm5E,GA9CV,SAAA9hI,GAAS,IAAA+hI,EAON/hI,EALAgpE,OACIt6D,QAAWO,EAHT8yH,EAGS9yH,MAAOC,EAHhB6yH,EAGgB7yH,MAEtBkpC,EAEAp4C,EAFAo4C,kBACA2wC,EACA/oF,EADA+oF,UAGEi5C,EAAer3H,GAA0BuE,GAC/C,OACI9P,GAAAC,EAAAC,cAAA,OAAKC,UAAU,6BACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sCACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQ8vB,YAAY7pC,OACzBhJ,GAAAC,EAAAC,cAACmsC,GAAD,CACIhqC,YAAa0gB,GAAQ8vB,YAAYkG,OAAOlpC,MACxC87B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,UAAW,UAEpCqK,MAAO8P,EACPtU,OACK6N,GAAayG,IAAU85E,EAClB5mE,GAAQxnB,MAAMsU,WACdxO,IAGdrB,GAAAC,EAAAC,cAACmsC,GAAD,CACIhqC,YAAa0gB,GAAQ8vB,YAAYkG,OAAOjpC,MACxC67B,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,UAAW,UAEpCk2C,UAAW,GACXC,UAAW,GACX9rC,MAAO6iI,EACPrnI,OACKiO,GAAao5H,IAAiBj5C,EACzB5mE,GAAQxnB,MAAMuU,WACdzO,KAIlBrB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uCClDrB4iB,GAAUqP,GAAgBm3B,YAgJjBs5E,GA/HV,SAAA5jI,GAQC,IAPF2qE,EAOE3qE,EAPF2qE,OACA1+B,EAMEjsC,EANFisC,QACA8N,EAKE/5C,EALF+5C,kBACAopC,EAIEnjF,EAJFmjF,oBACA0gD,EAGE7jI,EAHF6jI,qBACAlB,EAEE3iI,EAFF2iI,qBACAmB,EACE9jI,EADF8jI,gBAEQ5B,EAAYv3D,EAAZu3D,QACA6B,EAAqB93F,EAArB83F,iBAEFC,EAA0B,CAC5B,CACI5gI,YAAa0gB,GAAQo+G,QAAQ7xH,QAAQM,SACrC7P,MAAOohI,EAAQvxH,SACflD,MAAO,WACPnR,MACyB,KAArB4lI,EAAQvxH,UAAmBozH,EACrBjgH,GAAQxnB,MAAM4lI,QAAQvxH,cACtBvO,GAEd,CACIgB,YAAa0gB,GAAQo+G,QAAQ7xH,QAAQK,UACrC5P,MAAOohI,EAAQxxH,UACfjD,MAAO,YACPnR,MAC0B,KAAtB4lI,EAAQxxH,WAAoBqzH,EACtBjgH,GAAQxnB,MAAM4lI,QAAQxxH,eACtBtO,GAEd,CACIgB,YAAa0gB,GAAQo+G,QAAQ7xH,QAAQO,MACrC9P,MAAOohI,EAAQtxH,MACfnD,MAAO,QACPnR,MACIynI,IAAqB55H,GAAa+3H,EAAQtxH,OACpCkT,GAAQxnB,MAAM4lI,QAAQtxH,WACtBxO,IAGlB,OACIrB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qCACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8CACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQo+G,QAAQn4H,OACrBhJ,GAAAC,EAAAC,cAACwmD,GAAD,CACI9wD,GAAG,WACHk2C,aAAcq1F,EAAQ/yH,SACtB+gC,QAASpsB,GAAQ3U,SAASkG,OAC1B46B,mBAAoB,SAACx5C,GAAD,OAChBksI,EAAqB,UAAWlsI,EAAEqK,QAEtCA,MAAOohI,EAAQ/yH,SACf7S,MAC2C,KAAvC4S,GAAiBgzH,EAAQ/yH,WACzB40H,EACMjgH,GAAQxnB,MAAM2nI,cACd7hI,IAGb4hI,EAAW5tI,IAAI,SAAC0oI,EAAiB17F,GAAlB,OACZriC,GAAAC,EAAAC,cAACmsC,GAAD,CACIhsC,IAAKgiC,EACLhgC,YAAa07H,EAAK17H,YAClBtC,MAAOg+H,EAAKh+H,MACZ4rC,cAAe,SAACj2C,GAAD,OACXsjD,EAAkBtjD,EAAG,UAAWqoI,EAAKrxH,QAEzCm/B,UAA0B,UAAfkyF,EAAKrxH,MAAoB,GAAK,IACzCnR,MAAOwiI,EAAKxiI,WAIxByE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,8CACXH,GAAAC,EAAAC,cAAA,UAAK6iB,GAAQo+G,QAAQ7xH,QAAQgc,SAC7BtrB,GAAAC,EAAAC,cAACmsC,GAAD,CACItsC,MAAOmrC,EAAQi4F,YAAc,GAC7B9gI,YAAa0gB,GAAQo+G,QAAQ7xH,QAAQgc,QACrCqgB,cAAe,SAACj2C,GAAD,OACX0sF,EAAoB1sF,EAAE+9C,cAAc1zC,MAAO,YAE/CxE,MAC2B,KAAvB2vC,EAAQi4F,YAAqBH,EACvBjgH,GAAQxnB,MAAM4lI,QAAQ71G,aACtBjqB,IAIdrB,GAAAC,EAAAC,cAAC0vC,GAAA,EAAD,CACIzvC,UAAU,SACVqvC,gBAAgB,eAChBntC,YAAa0gB,GAAQo+G,QAAQ7xH,QAAQwc,WACrC6f,cAAe,SAACsD,GACZmzC,EAAoBnzC,EAAK,eAE7B/vC,SAAU4jI,EACVxzF,WAAYpE,EAAQsb,GACpBsQ,QAASisE,EACT5zF,QAASjE,EAAQk4F,YACjBrjI,MAAOohI,EAAQkC,kBACfv3F,aAAcq1F,EAAQkC,kBACtBxiH,OAAQ,CACJxe,YAAa,iBAAO,CAChB7B,MACmC,KAA/B2gI,EAAQ71G,QAAQQ,WACV,QACA,eAIU,KAA/Bq1G,EAAQ71G,QAAQQ,YAAqBk3G,GAClChjI,GAAAC,EAAAC,cAAA,KAAGC,UAAU,+DACR4iB,GAAQxnB,MAAM4lI,QAAQr1G,YAI/B9rB,GAAAC,EAAAC,cAACmsC,GAAD,CACItsC,MAAOohI,EAAQ71G,QAAQS,UAAY,GACnC2f,UAAU,EACVrpC,YAAa0gB,GAAQo+G,QAAQ7xH,QAAQuzC,KACrClX,cAAe,kBCpH7B5oB,GAAUqP,GAAgBm3B,YAuNjB+5E,GAxL2B,SAAArkI,GAoBpC,IAnBF6kC,EAmBE7kC,EAnBF6kC,uBACA/nB,EAkBE9c,EAlBF8c,UACAuB,EAiBEre,EAjBFqe,aACAimH,EAgBEtkI,EAhBFskI,eACApC,EAeEliI,EAfFkiI,QACAv3D,EAcE3qE,EAdF2qE,OACA1+B,EAaEjsC,EAbFisC,QACA43F,EAYE7jI,EAZF6jI,qBACAC,EAWE9jI,EAXF8jI,gBACA3gD,EAUEnjF,EAVFmjF,oBACAy/C,EASE5iI,EATF4iI,oBACA30B,EAQEjuG,EARFiuG,gBACAg1B,EAOEjjI,EAPFijI,uBACAlpF,EAME/5C,EANF+5C,kBACA4oF,EAKE3iI,EALF2iI,qBACA70E,EAIE9tD,EAJF8tD,eACAi1E,EAGE/iI,EAHF+iI,qBACAI,EAEEnjI,EAFFmjI,kBACA7+F,EACEtkC,EADFskC,mBA+CMz3B,EACFiQ,EAAUlQ,KACN,SAAC0C,GAAD,OAAkBA,EAAExC,iBAAmB+3B,KACtC/nB,EAAU,GAEbynH,EAlDwB,WAAe,IAAAC,EAGrC75D,EADAt6D,QAAWO,EAF0B4zH,EAE1B5zH,MAAOC,EAFmB2zH,EAEnB3zH,MAAO+9C,EAFY41E,EAEZ51E,iBAAkBC,EAFN21E,EAEM31E,kBAEzC41E,EACF71E,GAAoBC,EACd5jD,GAAY4jD,IACX5iB,EAAQy2F,cACnB,OACIv4H,GAAayG,IACbrG,GAAa+B,GAA0BuE,KACvC4zH,EAuCeC,GACjBC,EApCwB,WAAe,IAAAC,EAMrCj6D,EAAOu3D,QAJPtxH,EAFqCg0H,EAErCh0H,MACAF,EAHqCk0H,EAGrCl0H,UACAC,EAJqCi0H,EAIrCj0H,SAJqCk0H,EAAAD,EAKrCv4G,QAAWQ,EAL0Bg4G,EAK1Bh4G,WAAYD,EALci4G,EAKdj4G,OAAQE,EALM+3G,EAKN/3G,SAEnC,OACI5iB,GAAcwG,IACdxG,GAAcyG,IACdxG,GAAayG,IACE,KAAfic,GACW,KAAXD,GACa,KAAbE,EAuBeg4G,GACjBxB,EApBqB,WAAe,IAEvB/0E,EACXoc,EADAu3D,QAAW3zE,KAEf,OAAO5jD,GAAY4jD,GAgBCw2E,GAClBvB,EAbmB74D,EAAbltD,WAEY5Q,EAAS62B,QAAQjmB,SAazC,OACI1c,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,+BAA+B4iB,GAAQkhH,UACnD1gG,EAAmBC,mBASjBxjC,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACgkI,GAAD,CACIt6D,OAAQA,EACR5wB,kBAAmBA,EACnB2wC,UAAWz+C,EAAQi5F,oBAEtB7mH,IAAiBjnB,EAAc0Z,YAC5B/P,GAAAC,EAAAC,cAACkkI,GAAD,CACIx6D,OAAQA,EACR1+B,QAASA,EACTy+C,UAAWz+C,EAAQi5F,kBACnBvC,qBAAsBA,EACtB5oF,kBAAmBA,EACnB6oF,oBAAqBA,KArBjC7hI,GAAAC,EAAAC,cAACmkI,GAAD,CACI50H,KAAK,UACL1D,eAAgBD,EAASC,eACzBuD,QAASi0H,EACTpC,QAASA,EACT7jH,aAAcA,IAqBtBtd,GAAAC,EAAAC,cAACm3H,GAAD,CACIjB,YAAa7yF,EAAmBC,mBAChCslB,UAAW06E,EACXv2F,kBAAmB,kBAAMm1F,EAAkB,WAAW,IACtD/L,mBAAoB,kBAAM+L,EAAkB,WAAW,IACvD9L,qBACIkN,EACM,kBAAMt2B,EAAgB,YACtB,kBAAMg1B,EAAuB,cAG3CliI,GAAAC,EAAAC,cAAA,QAAMC,UAAU,4BACdojC,EAAmBE,mBAUjBzjC,GAAAC,EAAAC,cAACokI,GAAD,CACI16D,OAAQA,EACR1+B,QAASA,EACT02F,qBAAsBA,EACtBkB,qBAAsBA,EACtB1gD,oBAAqBA,EACrBppC,kBAAmBA,EACnB+pF,gBAAiBA,IAhBrB/iI,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAACmkI,GAAD,CACI50H,KAAK,UACLH,QAASi0H,EACTpC,QAASA,EACTp1H,eAAgBD,EAASC,kBAcrC/L,GAAAC,EAAAC,cAACm3H,GAAD,CACIjB,YAAa7yF,EAAmBE,mBAChCqlB,UAAW86E,EACX32F,kBAAmB,kBAAMm1F,EAAkB,WAAW,IACtD/L,mBAAoB,kBAAM+L,EAAkB,WAAW,IACvD9L,qBACIsN,EACM,kBAAM12B,EAAgB,YACtB,kBAAMg1B,EAAuB,cAG3CliI,GAAAC,EAAAC,cAAA,QAAMC,UAAU,4BACdojC,EAAmBG,gBAGjB1jC,GAAAC,EAAAC,cAACqkI,GAAD,CACI36D,OAAQA,EACRw4D,kBAAmBA,EACnBz4C,UAAWz+C,EAAQs5F,cACnBxrF,kBAAmBA,EACnB+T,eAAgBA,EAChBk1E,qBAAsB/2F,EAAQ+2F,qBAC9BD,qBAAsBA,EACtBG,cAAe,CACXI,kBACAE,mBAEJv1B,gBAAiBA,EACjBg1B,uBAAwBA,IAf5BliI,GAAAC,EAAAC,cAACukI,GAAD,CAAS9hG,QAAS72B,EAAS62B,UAkB/B3iC,GAAAC,EAAAC,cAACm3H,GAAD,CACIjB,YAAa7yF,EAAmBG,gBAChColB,UAAWy5E,EACXhM,kBAAkB,EAClBtpF,kBAAmB,kBAAMm1F,EAAkB,QAAQ,IACnD/L,mBAAoB,WAChB+L,EAAkB,QAAQ,GAC1BJ,EAAqB,SAEzB1L,qBAAsB,iBC7LhCvzG,GAAUqP,GAAgBm3B,YAO1B+hB,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrC0tG,uBAAwBjpH,GAAoBub,QAC5C2tG,oBAAqBtrI,GACrBi+H,sBAAuB57G,GAAmBsb,QAC1Cg9F,sBAAuBr0G,GACvBs0G,oBAAqBr0G,IAenBglH,GAAiBh7F,aAMnBshF,KACA5Z,KAPmB1nE,CAQrB05F,IAEI/5E,eAGF,SAAAA,EAAY3oD,GAAc,IAAAC,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAwoD,IACtB1oD,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAozD,GAAAroD,KAAAH,KAAMH,KAHVklD,mBAE0B,EAAAjlD,EAqH1BuhF,oBAAsB,SAACriF,EAAe0P,GAAiB,IAAAg3C,EACvB5lD,EAAKY,MAAzBypC,EAD2Cub,EAC3Cvb,QAAS0+B,EADkCnjB,EAClCmjB,OACjB,GAAa,eAATn6D,EACAy7B,EAAQsb,GAAKzmD,EAAMyL,QAAQ,UAAW,IACtC0/B,EAAQ25F,mBAAoB,EAC5BhkI,EAAKilD,cAAcxyC,OAAOvT,GAC1Bc,EAAKc,SAAS,CAAEupC,gBACb,CACHA,EAAQi4F,WAAapjI,EACrB,IAAM+kI,EAAW/kI,EAAMqS,MAAM,KACT,KAAhB0yH,EAAS,IACTA,EAASpiB,QAEb94C,EAAOu3D,QAAQ71G,QAAQM,OAASk5G,EAAS,GACzCA,EAASpiB,QACT94C,EAAOu3D,QAAQ71G,QAAQO,OAASi5G,EAAS/5H,KAAK,KAAK6gE,OACnD/qE,EAAKc,SAAS,CAAEioE,SAAQ1+B,cArINrqC,EAyI1BiiI,qBAAuB,SAAA7jI,GAKJ,IAJfc,EAIed,EAJfc,MACAglI,EAGe9lI,EAHf8lI,UACAC,EAEe/lI,EAFf+lI,UACAC,EACehmI,EADfgmI,aACez2E,EACa3tD,EAAKY,MAAzBmoE,EADOpb,EACPob,OAAQ1+B,EADDsjB,EACCtjB,QAChB0+B,EAAOu3D,QAAQ71G,QAAQwT,QAAUmmG,EACjCr7D,EAAOu3D,QAAQ71G,QAAQQ,WAAai5G,EACpCn7D,EAAOu3D,QAAQ71G,QAAQS,SAAWi5G,EAClCp7D,EAAOu3D,QAAQkC,kBAAoB,CAC/BtjI,QACA2M,MAAK,GAAAzC,OAAK86H,GACVA,YACAC,YACAC,gBAEJ/5F,EAAQk4F,YAAc,GACtBviI,EAAKc,SAAS,CAAEioE,SAAQ1+B,aA3JFrqC,EA8J1BkiI,gBAAkB,WAAM,IAAApwC,EACQ9xF,EAAKY,MAAzBypC,EADYynD,EACZznD,QAAS0+B,EADG+oB,EACH/oB,OACyB,KAAtCA,EAAOu3D,QAAQ71G,QAAQQ,aACvBof,EAAQsb,GAAKojB,EAAOu3D,QAAQ71G,QAAQQ,YAExCjrB,EAAKc,SAAS,CAAEupC,aAnKMrqC,EAsK1Bm4C,kBAAoB,SAACtjD,EAAesvG,EAAiBv1F,GAAiB,IAC1Dm6D,EAAW/oE,EAAKY,MAAhBmoE,OAERA,EADsB,SAAZo7B,EAAqB,UAAYA,GACjCv1F,GAAQ/Z,EAAE+9C,cAAc1zC,MAClCc,EAAKc,SAAS,CAAEioE,YA1KM/oE,EA6K1BksD,eAAiB,SAAChtD,GAAkB,IACxB6pE,EAAW/oE,EAAKY,MAAhBmoE,OAERA,EAAOltD,SAAW3c,EAClBc,EAAKc,SAAS,CAAEioE,YAjLM/oE,EAoL1BmhI,qBAAuB,SAACh9B,GAAmC,IAAA31C,EAC3BxuD,EAAKY,MAAzBypC,EAD+CmkB,EAC/CnkB,QAAS0+B,EADsCva,EACtCua,OACjB1+B,EAAQ+2F,qBAAuBj9B,EAFwB,IAI/CmvB,EAAkBtzH,EAAKD,MAAvBuzH,cACFroH,EAAWJ,GACbyoH,EAAcrwF,uBACdqwF,EAAcp4G,WAIF,SAAZipF,GACAp7B,EAAOltD,WAAa5Q,EAAS62B,QAAQjmB,WAErCktD,EAAOltD,SAAW5Q,EAAS62B,QAAQjmB,UAGvC7b,EAAKc,SAAS,CAAEupC,UAAS0+B,YArMH/oE,EAwM1B+gI,qBAAuB,SAAC58B,EAAiBjlG,GAAkB,IAC/C6pE,EAAW/oE,EAAKY,MAAhBmoE,OACQ,YAAZo7B,EACAp7B,EAAOo7B,GAASn3C,iBAAmB9tD,EAEnC6pE,EAAOo7B,GAAS52F,SAAWrO,EAE/Bc,EAAKc,SAAS,CAAEioE,YA/MM/oE,EAkN1BghI,oBAAsB,SAACzzH,EAAmBuB,GAAuB,IAAAigD,EACjC/uD,EAAKY,MAAzBmoE,EADqDha,EACrDga,OAAQ1+B,EAD6C0kB,EAC7C1kB,QACXA,EAAQy2F,eAIT/3D,EAAOt6D,QAAQu+C,iBAAmBn3D,EAAUsoC,GAC5C4qC,EAAOt6D,QAAQw+C,uBAAoBzsD,IAJnCuoE,EAAOt6D,QAAQu+C,iBAAmBz/C,EAClCw7D,EAAOt6D,QAAQw+C,kBAAoBn+C,GAKvCu7B,EAAQy2F,eAAiBz2F,EAAQy2F,cACjC9gI,EAAKc,SAAS,CAAEioE,SAAQ1+B,aA5NFrqC,EA+N1BsqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAMzChB,EAAKD,MAJYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBAEEnoH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,KA5OClL,EAiP1BwzH,aAAe,SAACrvB,GAAoB,IAAA70C,EACJtvD,EAAKY,MAAzBmoE,EADwBzZ,EACxByZ,OAAQ1+B,EADgBilB,EAChBjlB,QADgB+L,EAOrBp2C,EAAKD,MAJZ8jI,EAH4BztF,EAG5BytF,uBACA5Z,EAJ4B7zE,EAI5B6zE,aACAwM,EAL4BrgF,EAK5BqgF,sBACAnD,EAN4Bl9E,EAM5Bk9E,cAEJ,OAAQnvB,GACJ,IAAK,UACD,IAAMjrG,EAA+C,CACjDsV,SAAU,CACNrV,YAAa8wH,EAAa1nF,eAC1BvzB,MAAO+5D,EAAOt6D,QAAQO,MACtBC,MAAOrE,GAAmBm+D,EAAOt6D,QAAQQ,OACzCsoB,UAAW0yF,EAAax7G,QAAQ8oB,UAChCC,WAAYyyF,EAAax7G,QAAQ+oB,YAErCroB,cAAU3O,EACVo3B,MAAO,CACHz+B,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3B3pC,SAAU4oB,GAAQmiH,eAClBhrI,KAAMoR,KACNlR,YACI2oB,GAAQoiH,cAAcC,yBACjBrlI,MACT1F,QACI0oB,GAAQoiH,cAAcC,yBACjB14H,QAGjB,GACIk9D,EAAOt6D,QAAQu+C,kBACf+b,EAAOt6D,QAAQw+C,mBACsB,KAArC8b,EAAOt6D,QAAQw+C,mBACe,iBAA9Bg9D,EAAaxtG,aAEbvjB,EAAQiW,SAAW,CACfkM,KAAM,iBAENjiB,YAAak6H,EAAcrwF,uBAC3B11B,SAAUw7D,EAAOt6D,QAAQu+C,iBACzBl+C,UAAWi6D,EAAOt6D,QAAQw+C,mBAE9B/zD,EAAQ0+B,MAAMp+B,QACV0oB,GAAQoiH,cAAcC,yBAAyBC,gBAChD,CACH,IAAMv5H,EAAWJ,GACbyoH,EAAcrwF,uBACdqwF,EAAcp4G,WAEZ/L,EAAWhE,GAAaF,GAC1BkE,GAAYA,EAASL,YACrB5V,EAAQiW,SAAW,CACfkM,KAAM,SACNjiB,YAAak6H,EAAcrwF,uBAE3B11B,SAAU4B,EAAS5B,SACnBuB,UAAWK,EAASL,WAAa,IAErC5V,EAAQ0+B,MAAMp+B,QACV0oB,GAAQoiH,cAAcC,yBAAyBE,eACnDp6F,EAAQy2F,eAAgB,EACxB9gI,EAAKc,SAAS,CAAEupC,aAGxBw5F,EAAuB3qI,GACvB,MAGJ,IAAK,UAyBDu9H,EAxB4C,CACxCv6G,YAAa,CACTb,KAAM1kB,EAAmB+tI,gBACzBvrI,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3BrnB,eAAgBmtD,EAAOu3D,QAAQ71G,QAC/B5b,iBAAkB,CACdtB,SAAUw7D,EAAOu3D,QAAQ/yH,SACzBuB,UAAWi6D,EAAOu3D,QAAQxxH,UAC1BC,SAAUg6D,EAAOu3D,QAAQvxH,UAE7BC,MAAO+5D,EAAOu3D,QAAQtxH,OAE1B4oB,MAAO,CACHz+B,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3B3pC,SAAU4oB,GAAQmiH,eAClBhrI,KAAMoR,KACNlR,YACI2oB,GAAQoiH,cAAcK,uBAAuBzlI,MACjD1F,QACI0oB,GAAQoiH,cAAcK,uBAAuB94H,SAIzD,MAGJ,IAAK,OAAQ,IACDqP,EAAsCo4G,EAAtCp4G,UAAW+nB,EAA2BqwF,EAA3BrwF,uBACbh4B,EAAWJ,GACbo4B,EACA/nB,GAoBJu7G,EAjB4C,CACxCv6G,YAAa,CACTb,KAAM1kB,EAAmBqS,KACzB7P,YAAa8wH,EAAa1nF,eAC1B7mB,SAAUqtD,EAAOu3D,QAAQ3zE,KACzBhxC,QAAS1Q,EAAS62B,QAAQnmB,SAE9Bic,MAAO,CACHz+B,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3B3pC,SAAU4oB,GAAQmiH,eAClBhrI,KAAMoR,KACNlR,YACI2oB,GAAQoiH,cAAcM,kBAAkB1lI,MAC5C1F,QAAS0oB,GAAQoiH,cAAcM,kBAAkB/4H,SAIzD,MAEJ,IAAK,WAoBD4qH,EAnB4C,CACxCv6G,YAAa,CACTb,KAAM1kB,EAAmBolB,UACzB5iB,YAAam6H,EAAcrwF,uBAC3BpnB,SAAUktD,EAAOltD,SACjBziB,YAAak6H,EAAcrwF,wBAE/BrL,MAAO,CACHz+B,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3B3pC,SAAU4oB,GAAQmiH,eAClBhrI,KAAMoR,KACNlR,YACI2oB,GAAQoiH,cAAcM,kBAAkB1lI,MAC5C1F,QACI0oB,GAAQoiH,cAAcM,kBACjBC,oBAjYH7kI,EA6Y1BqhI,uBAAyB,SAACl9B,GAA0B,IACxC95D,EAAYrqC,EAAKY,MAAjBypC,QACQ,YAAZ85D,EACA95D,EAAQ83F,kBAAmB,EACR,YAAZh+B,EACP95D,EAAQi5F,mBAAoB,EAE5Bj5F,EAAQs5F,eAAgB,EAE5B3jI,EAAKc,SAAS,CAAEupC,aAtZMrqC,EA6Z1B8kI,WAAa,SAAC75H,GAAkC,IAExBwD,EAChBzO,EAAKD,MADLkqH,aAAgBx7G,QAEdqzB,EAAU72B,EAAS62B,QACnBw+F,EAAU,CACZ/yH,SAAUkB,EAAQI,iBAAiBtB,SACnCuB,UAAWL,EAAQI,iBAAiBC,UACpCC,SAAUN,EAAQI,iBAAiBE,SACnCC,MAAOP,EAAQO,MACfC,MAAOR,EAAQQ,MACf09C,KAAM,GACNliC,QAAShc,EAAQgc,SAqBrB,OAnBIqX,IACAw+F,EAAQ3zE,KAAO7qB,EAAQpmB,SACnBomB,EAAQK,iBACRm+F,EAAQtxH,MAAQ8yB,EAAQK,eAAenzB,MACvCsxH,EAAQrxH,MAAQ6yB,EAAQK,eAAelzB,MACnC6yB,EAAQK,eAAetzB,mBACvByxH,EAAQ/yH,SACJu0B,EAAQK,eAAetzB,iBAAiBtB,UACxC+yH,EAAQ/yH,SACZ+yH,EAAQxxH,UACJgzB,EAAQK,eAAetzB,iBAAiBC,UAC5CwxH,EAAQvxH,SACJ+yB,EAAQK,eAAetzB,iBAAiBE,UAE5C+yB,EAAQK,eAAe1X,UACvB61G,EAAQ71G,QAAUqX,EAAQK,eAAe1X,WAI9C61G,GA9betgI,EAqc1B+kI,WAAa,SAAC95H,GAAkC,IAExBwD,EAChBzO,EAAKD,MADLkqH,aAAgBx7G,QAEdrD,EAAeH,EAASG,aACxBs3H,EAA2B,CAC7Bn1H,SAAUkB,EAAQI,iBAAiBtB,SACnCuB,UAAWL,EAAQI,iBAAiBC,UACpCC,SAAUN,EAAQI,iBAAiBE,SACnCC,MAAOP,EAAQO,MACfC,MAAOR,EAAQQ,MACfP,UAAWD,EAAQC,UACnB+b,QAAShc,EAAQgc,QACjBrb,YAAaX,EAAQW,YACrBC,YAAaZ,EAAQY,YACrBE,aAAcd,EAAQc,aACtBD,qBAAsBb,EAAQa,sBAElC,GAAIlE,EAAc,CACd,IAAM+D,EAAW/D,EAAaJ,KAAK,SAAAzW,GAAC,MAAe,aAAXA,EAAE8W,QAAwB,CAC9DkC,SAAU1X,EAAUsoC,GACpBrvB,eAAWtO,GAEfkiI,EAAe11E,iBAAmB79C,EAAS5B,SAC3Cm1H,EAAez1E,kBAAoB99C,EAASL,UAEhD,OAAO4zH,GA/de1iI,EAie1BuhI,kBAAoB,SAACp9B,EAAiBjlG,GAClB,YAAZilG,EACAnkG,EAAKc,SAAS,SAAAssD,GAAS,MAAK,CACxB1qB,mBAAmBptC,OAAAkuB,GAAA,EAAAluB,CAAA,GACZ83D,EAAU1qB,mBADC,CAEdC,mBAAoBzjC,OAGT,YAAZilG,EACPnkG,EAAKc,SAAS,SAAAssD,GAAS,MAAK,CACxB1qB,mBAAmBptC,OAAAkuB,GAAA,EAAAluB,CAAA,GACZ83D,EAAU1qB,mBADC,CAEdE,mBAAoB1jC,OAGT,SAAZilG,GACPnkG,EAAKc,SAAS,SAAAssD,GAAS,MAAK,CACxB1qB,mBAAmBptC,OAAAkuB,GAAA,EAAAluB,CAAA,GACZ83D,EAAU1qB,mBADC,CAEdG,gBAAiB3jC,QApfP,IAAAwuD,EAGkB1tD,EAAKD,MAArCkqH,EAHcv8D,EAGdu8D,aAAcqJ,EAHA5lE,EAGA4lE,cAChBroH,EAAWJ,GACbyoH,EAAcrwF,uBACdqwF,EAAcp4G,WAEZzM,EAAoB,CACtBlB,SAAU08G,EAAax7G,QAAQI,iBAAiBtB,SAChDuB,UAAWm7G,EAAax7G,QAAQI,iBAAiBC,UACjDC,SAAUk7G,EAAax7G,QAAQI,iBAAiBE,SAChDL,UAAWu7G,EAAax7G,QAAQC,UAChC+b,QAASw/F,EAAax7G,QAAQgc,QAC9Bzb,MAAOi7G,EAAax7G,QAAQO,MAC5BC,MAAOg7G,EAAax7G,QAAQQ,OAE1BE,EAAWhE,GAAaF,GAC1BkE,GACAV,EAAQu+C,iBAAmB79C,EAAS5B,SACpCkB,EAAQw+C,kBAAoB99C,EAASL,WAErCL,EAAQu+C,iBAAmBn3D,EAAUsoC,GAtBnB,IAwBdgE,EAAmBl3B,EAAS62B,QAA5BK,eACFm+F,EAAU,CACZ/yH,SAAUkB,EAAQlB,UAAY1X,EAAUsoC,GACxCrvB,UAAWL,EAAQK,WAAa,GAChCC,SAAUN,EAAQM,UAAY,GAC9BC,MAAOP,EAAQO,OAAS,GACxB29C,KAAM,GACNliC,QAASn1B,OAAOgzB,OAAO,GAAI7Z,EAAQgc,UAA1Bn1B,OAAAkuB,GAAA,EAAAluB,CAAA,GACFyoC,IAEPykG,kBAAmB,CACf32H,MAAO4C,EAAQgc,QAAQQ,YAAc,GACrC/rB,MAAOuP,EAAQgc,QAAQQ,YAAc,GACrCi5G,UAAWz1H,EAAQgc,QAAQQ,YAAc,GACzCk5G,UAAW11H,EAAQgc,QAAQS,UAAY,GACvCk5G,aAAc31H,EAAQgc,QAAQwT,SAAW,KAUjD,GAPAqiG,EAAQ3zE,KAAO1hD,EAAS62B,QAAQpmB,UAAY,GACxCymB,GAAkBA,EAAetzB,mBACjCyxH,EAAQ/yH,SACJ40B,EAAetzB,iBAAiBtB,UAAY+yH,EAAQ/yH,SACxD+yH,EAAQxxH,UAAYqzB,EAAetzB,iBAAiBC,UACpDwxH,EAAQvxH,SAAWozB,EAAetzB,iBAAiBE,UAEnDozB,GAAkBA,EAAe1X,QAAS,CAC1C61G,EAAQ71G,QAAU0X,EAAe1X,QACjC,IAAM+3G,EAAoB,CACtB32H,MAAOs2B,EAAe1X,QAAQQ,WAC9B/rB,MAAOijC,EAAe1X,QAAQQ,WAC9Bi5G,UAAW/hG,EAAe1X,QAAQQ,WAClCk5G,UAAWhiG,EAAe1X,QAAQS,SAClCk5G,aAAcjiG,EAAe1X,QAAQwT,SAEzCqiG,EAAQkC,kBAAoBA,EAE5Bv3H,EAAS62B,QAAQK,iBACjBm+F,EAAQtxH,MAAQ/D,EAAS62B,QAAQK,eAAenzB,OAEpD,IAAM8xH,OACWtgI,IAAb2O,QACsB3O,IAAtB2O,EAAS5B,eACc/M,IAAvB2O,EAASL,UAlES,OAmEtB9O,EAAKY,MAAQ,CACTmoE,OAAQ,CACJ79D,eAAgB,GAChBq3B,eAAgB,GAChB9zB,UACA6xH,UACAzkH,SACI5Q,EAAS62B,QAAQjmB,UACjBqG,GAAQipC,cAAcC,cAAc,IAE5C/gB,QAAS,CACL25F,mBAAmB,EACnB1B,WAAU,GAAAl5H,OAAKk3H,EAAQ71G,QAAQM,OAArB,KAAA3hB,OAA+Bk3H,EAAQ71G,QAAQO,QACzDu3G,YAAa,GACb58E,GAAI,GACJw8E,kBAAkB,EAClBmB,mBAAmB,EACnBK,eAAe,EACf7C,gBACAM,qBAAsB,QAE1B1+F,mBAAoB,CAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,iBAAiB,IAIzB7iC,EAAKilD,cAAgB,IAAIxD,GA/FHzhD,qFAkGN,IAAAe,EAAAb,KAChBA,KAAK+kD,cAAc+/E,aAAa5mH,UAAU,SAAC5S,GAAa,IAC5C6+B,EAAYtpC,EAAKH,MAAjBypC,QACRA,EAAQk4F,YAAc/2H,EAAIhX,IAAI,SAAC+M,GAAD,MAAc,CACxCsK,MAAK,GAAAzC,OAAK7H,EAAGnM,KAAR,WAAAgU,OAAsB7H,EAAGygD,MAC9B9iD,MAAK,GAAAkK,OAAK7H,EAAGnM,KAAR,MAAAgU,OAAiB7H,EAAGygD,MACzBkiF,UAAW3iI,EAAGnM,KACd+uI,UAAW5iI,EAAGygD,KACdoiF,aAAc7iI,EAAG08B,WAErBoM,EAAQ25F,mBAAoB,EAC5BjjI,EAAKD,SAAS,CAAEupC,6DAKpBnqC,KAAK+kD,cAAcrD,+CAwYd,IAAA66B,EAAAv8E,KAAAo2D,EAMMp2D,KAAKH,MANX2zH,EAAAp9D,EAED2zD,aAAgBx7G,EAFfilH,EAEejlH,QAASg0B,EAFxBixF,EAEwBjxF,eAAgBhmB,EAFxCi3G,EAEwCj3G,aAFxCk3G,EAAAr9D,EAGDg9D,cAAiBp4G,EAHhBy4G,EAGgBz4G,UAAW+nB,EAH3B0wF,EAG2B1wF,uBAAwBvoC,EAHnDi5H,EAGmDj5H,MACpDopI,EAJCxtE,EAIDwtE,oBACA3Q,EALC78D,EAKD68D,sBALC5hE,EAQ2CrxD,KAAKU,MAA7CypC,EARHknB,EAQGlnB,QAAS0+B,EARZxX,EAQYwX,OAAQrmC,EARpB6uB,EAQoB7uB,mBACnBz3B,EAAWJ,GACbo4B,EACA/nB,GAEEolH,EAAUpgI,KAAK4kI,WAAW75H,GAC1By3H,EAAiBxiI,KAAK6kI,WAAW95H,GAcvC,OACI9L,GAAAC,EAAAC,cAAC0kI,GAAD,CACI15F,QAASA,EACT0+B,OAAQA,EACR25D,eAAgBA,EAChBpC,QAASA,EACTiB,kBAAmBrhI,KAAKqhI,kBACxBppF,kBAAmBj4C,KAAKi4C,kBACxB4oF,qBAAsB7gI,KAAK6gI,qBAC3BC,oBAAqB9gI,KAAK8gI,oBAC1BiB,qBAAsB/hI,KAAK+hI,qBAC3B1gD,oBAAqBrhF,KAAKqhF,oBAC1B2gD,gBAAiBhiI,KAAKgiI,gBACtBb,uBAAwBnhI,KAAKmhI,uBAC7Bn1E,eAAgBhsD,KAAKgsD,eACrBi1E,qBAAsBjhI,KAAKihI,qBAC3Bz+F,mBAAoBA,EAEpBv6B,MAAO+Z,GAAQ/Z,MACfqiH,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9BlwF,uBAAwBA,EACxB/nB,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YA1CY,WAChBkkC,IACArnD,EAAK37E,SAAS,SAAAssD,GAAS,MAAK,CACxB1qB,mBAAmBptC,OAAAkuB,GAAA,EAAAluB,CAAA,GACZ83D,EAAU1qB,mBADC,CAEdC,oBAAoB,EACpBC,oBAAoB,EACpBC,iBAAiB,iBAphBXvgC,KAAMC,WCvFjBmmD,GDopBAqjB,aAjmBS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,kBA+lBesnC,GAAzBsB,CAAwCrjB,IE/oBjDxmC,GAAUqP,GAAgB0zG,cAuDjBC,GA3C2B,SAAA9mI,GAKpC,IAAA+mI,EAAA/mI,EAJF2qE,OAAU/5D,EAIRm2H,EAJQn2H,MAAOtU,EAIfyqI,EAJezqI,MACjBy9C,EAGE/5C,EAHF+5C,kBACAixB,EAEEhrE,EAFFgrE,iBACAijC,EACEjuG,EADFiuG,gBAEM9iC,EAAUhhE,GAAayG,GAE7B,OACI7P,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,+BAA+B4iB,GAAQ4nD,UACrD3qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,gCACR4iB,GAAQkjH,eAEbjmI,GAAAC,EAAAC,cAAA,KAAGC,UAAU,iCACR4iB,GAAQmjH,YAEblmI,GAAAC,EAAAC,cAACmsC,GAAD,CACIhqC,YAAa0gB,GAAQojH,gBACrBpmI,MAAO8P,EACPtU,MAAOA,EACPowC,cAAe,SAACj2C,GAAD,OAAmBsjD,EAAkBtjD,EAAG,YAE3DsK,GAAAC,EAAAC,cAAA,KACIC,UAAU,0BACVi2C,KAAK,+CACLz2C,OAAO,UAENojB,GAAQqjH,iBAEbpmI,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQsjH,YACf7lI,MAAO4pE,EAAU,SAAW,OAC5Bz/B,QAAS,WACDs/B,KACAijC,EAAgB,SC1BlCnqF,GAAUqP,GAAgB0zG,cAO1Bx6D,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrCsvG,sBAAuB9qH,GAAmBwb,QAC1CuvG,cAAeltI,GACf46H,oBAAqBr0G,IAKnB4mH,GAAmB58F,aAMrBshF,KACA5Z,KAPqB1nE,CAQvB68F,IAUIC,eACF,SAAAA,EAAY9lI,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA2lI,IACtB7lI,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAuwI,GAAAxlI,KAAAH,KAAMH,KAUVo4C,kBAAoB,SAACtjD,EAAe+Z,GAAiB,IACzCm6D,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAOn6D,GAAQ/Z,EAAE+9C,cAAc1zC,MAC/Bc,EAAKc,SAAS,CAAEioE,YAdM/oE,EAiB1BopE,iBAAmB,WAAe,IACtBL,EAAW/oE,EAAKY,MAAhBmoE,OAER,OAAIxgE,GAAawgE,EAAO/5D,QACpB+5D,EAAOruE,WAAQ8F,EACfR,EAAKc,SAAS,CAAEioE,YACT,IAEXA,EAAOruE,MAAQwnB,GAAQ4jH,WACvB9lI,EAAKc,SAAS,CAAEioE,YACT,IA3Be/oE,EA8B1BsqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAMzChB,EAAKD,MAJYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBAEEnoH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,KA3CClL,EAgD1BwzH,aAAe,WAAM,IACTzqD,EAAW/oE,EAAKY,MAAhBmoE,OADS3yB,EAUbp2C,EAAKD,MAVQg5H,EAAA3iF,EAGb6zE,aACI1nF,EAJSw2F,EAITx2F,eAJSy2F,EAAAD,EAKTtqH,QACII,iBAAoBC,EANfkqH,EAMelqH,UAAWC,EAN1BiqH,EAM0BjqH,UAK3C02H,EAXiBrvF,EASbqvF,uBAEkB,CAClBvsG,UAAWqJ,EACXpJ,iBAAkBrqB,EAClBsqB,gBAAiBrqB,EACjBsqB,YAAa0vC,EAAO/5D,QAExB+5D,EAAO/5D,MAAQ,GACfhP,EAAKc,SAAS,CAAEioE,YA/DhB/oE,EAAKY,MAAQ,CACTmoE,OAAQ,CACJ/5D,MAAO,GACPtU,WAAO8F,IANOR,0EAqEjB,IACG+oE,EAAW7oE,KAAKU,MAAhBmoE,OADHrb,EAMMxtD,KAAKH,MANXq1H,EAAA1nE,EAGDu8D,aAAgBx7G,EAHf2mH,EAGe3mH,QAASg0B,EAHxB2yF,EAGwB3yF,eAAgBhmB,EAHxC24G,EAGwC34G,aAHxCg3G,EAAA/lE,EAID4lE,cAAiBp4G,EAJhBu4G,EAIgBv4G,UAAW+nB,EAJ3BwwF,EAI2BxwF,uBAC5ByiG,EALCh4E,EAKDg4E,cAEJ,OACIvmI,GAAAC,EAAAC,cAACsmI,GAAD,CACI58D,OAAQA,EACR5wB,kBAAmBj4C,KAAKi4C,kBACxBixB,iBAAkBlpE,KAAKkpE,iBAEvBjhE,MAAO+Z,GAAQ/Z,MACf86B,uBAAwBA,EACxB/nB,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAa8lC,WA7FHpjI,KAAMC,WC5DjBsjI,GD+JA95D,aAnIS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,kBAmIrBsnC,GAFWsB,CAGb85D,IE/JI3jH,GAAUqP,GAAgBw0G,YAInBC,GAAY,SAACC,EAAYC,GAClC,OAAOD,EAAIj7H,KAAK,SAAAwB,GAAC,OAAIA,EAAEtN,QAAUgnI,IAC3BD,EAAIj7H,KAAK,SAAAwB,GAAC,OAAIA,EAAEtN,QAAUgnI,IAAOr6H,MACjC,IASJs6H,GAAU,SAAC/mI,EAAQwO,GAAT,OACZxO,EAAEyM,MAAQ+B,EAAE/B,MAAQ,EAAI+B,EAAE/B,MAAQzM,EAAEyM,OAAS,EAAI,GAE/Cu6H,GAAqB,SAACC,GAAD,OACvBA,EACK95H,KAAK45H,IACL3xI,IACG,SAAA4J,EASIoB,GATJ,IAEQqM,EAFRzN,EAEQyN,MACA3M,EAHRd,EAGQc,MAHR,OAWIC,GAAAC,EAAAC,cAAA,UAAQG,IAAKA,EAAKN,MAAOA,GACpB2M,MAKfqqH,GAAe,CACjB,CACI3sG,OAAQ,kBACRmrF,SAAU,WACVn0F,MAAO,KAEX,CACIgJ,OAAQ,eACRmrF,SAAU,gBACV9sF,KAAM,SAAC7nB,GACH,OAAOimI,GAAU9jH,GAAQuyG,WAAY10H,EAAMb,QAE/C+jH,aAAc,SAACxyG,EAAaqxG,GACxB,MAAqB,QAAjBrxG,EAAOvR,OAGJ4iH,EAAI3nH,gBAAkBsW,EAAOvR,OAExCmkH,OAAQ,SAAArqH,GAAA,IAAGyX,EAAHzX,EAAGyX,OAAQpS,EAAXrF,EAAWqF,SAAX,OACJc,GAAAC,EAAAC,cAAA,UACIhB,SAAU,SAAAu5B,GAAK,OAAIv5B,EAASu5B,EAAM94B,OAAOI,QACzC0hB,MAAO,CAAEL,MAAO,QAChBrhB,MAAOuR,EAASA,EAAOvR,MAAQ,OAE/BC,GAAAC,EAAAC,cAAA,UAAQH,MAAM,OAAd,4BACCknI,GAAmBlkH,GAAQuyG,eAIxC,CACIlrG,OAAQ,oBACRmrF,SAAU,mBACV9sF,KAAM,SAAC7nB,GACH,OAAOimI,GAAU9jH,GAAQoiH,cAAevkI,EAAMb,QAGlD+jH,aAAc,SAACxyG,EAAaqxG,GACxB,MAAqB,QAAjBrxG,EAAOvR,OAGJ4iH,EAAI1nH,mBAAqBqW,EAAOvR,OAE3CmkH,OAAQ,SAAAxtG,GAAA,IAAGpF,EAAHoF,EAAGpF,OAAQpS,EAAXwX,EAAWxX,SAAX,OACJc,GAAAC,EAAAC,cAAA,UACIhB,SAAU,SAAAu5B,GAAK,OAAIv5B,EAASu5B,EAAM94B,OAAOI,QACzC0hB,MAAO,CAAEL,MAAO,QAChBrhB,MAAOuR,EAASA,EAAOvR,MAAQ,OAE/BC,GAAAC,EAAAC,cAAA,UAAQH,MAAM,OAAd,iCACCknI,GAAmBlkH,GAAQoiH,kBAIxC,CACI/6G,OAAQ,OACRmrF,SAAU,gBACV5nE,YAAY,EACZllB,KAAM,SAAC7nB,GACH,OAAO45C,GAAyB55C,EAAMb,QAE1CqhB,MAAO,KAEX,CACIgJ,OAAQ,SACRmrF,SAAU,kBACV9sF,KAAM,SAAC7nB,GACH,OAAOimI,GAAU9jH,GAAQokH,YAAavmI,EAAMb,QAEhD+jH,aAAc,SAACxyG,EAAaqxG,GACxB,MAAqB,QAAjBrxG,EAAOvR,OAGJ4iH,EAAIxnH,kBAAoBmW,EAAOvR,OAE1CmkH,OAAQ,SAAAtqH,GAAA,IAAG0X,EAAH1X,EAAG0X,OAAQpS,EAAXtF,EAAWsF,SAAX,OACJc,GAAAC,EAAAC,cAAA,UACIhB,SAAU,SAAAu5B,GAAK,OAAIv5B,EAASu5B,EAAM94B,OAAOI,QACzC0hB,MAAO,CAAEL,MAAO,QAChBrhB,MAAOuR,EAASA,EAAOvR,MAAQ,OAE/BC,GAAAC,EAAAC,cAAA,UAAQH,MAAM,OAAd,oBACCknI,GAAmBlkH,GAAQokH,eAGpC/lH,MAAO,MC/HAgmH,GDqIV,SAAAptH,GAAc,IAAXa,EAAWb,EAAXa,KACJ,OACI7a,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,gCAAgC4iB,GAAQ4nD,UAEtD3qE,GAAAC,EAAAC,cAAC8yH,GAAD,CACIpmF,QAASmqF,GACTppF,YAAY,EACZ9yB,KAAMA,EACNgyB,gBAAiBhyB,EAAKpR,OAAS,GAAK,GAAKoR,EAAKpR,OAC9CqjC,WAAY/pB,GAAQ+pB,WACpBC,UAAU,EACV5sC,UAAU,sBACV+sC,aAAc,SAACy1E,GACX,OACI3iH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACVwiH,EAAI10E,SAAS5zC,QACd2F,GAAAC,EAAAC,cAAA,QAAMC,UAAU,eE1ItC4iB,GAAUqP,GAAgBw0G,YAQ1Bt7D,GAAgB,CAClB+7D,cAAe5tI,GAAgBu9B,QAC/B28F,iBAAkBj0G,GAAmBsX,QACrCi9F,oBAAqBr0G,IAKZ0nH,GAAepc,KAAakc,IAE5BG,GAAb,SAAAC,GAAA,SAAAD,IAAA,IAAA/1B,EAAA3wG,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAwmI,GAAA,QAAAhuE,EAAApvD,UAAAV,OAAAglE,EAAA,IAAAniE,MAAAitD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAgV,EAAAhV,GAAAtvD,UAAAsvD,GAAA,OAAA54D,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,MAAAywG,EAAAr7G,OAAA8K,GAAA,EAAA9K,CAAAoxI,IAAArmI,KAAA6Z,MAAAy2F,EAAA,CAAAzwG,MAAAkJ,OAAAwkE,MAcI08C,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAOzChB,EAAKD,MALYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChBikG,EALyCxlI,EAKzCwlI,cACApT,EANyCpyH,EAMzCoyH,oBAEEl6H,EAAU,CACZC,YAAaopC,EACbnpC,YAAa8R,GAEXD,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB55H,GAErBstI,EAActtI,IAhCtB8G,EAAA,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAAoxI,EAAAC,GAAArxI,OAAAk2E,GAAA,EAAAl2E,CAAAoxI,EAAA,EAAAlnI,IAAA,oBAAAN,MAAA,WACwB,IAAAk3C,EAKLl2C,KAAKH,MAHZkqH,EAFY7zE,EAEZ6zE,aACAqJ,EAHYl9E,EAGZk9E,eAIJkT,EAPgBpwF,EAIZowF,eAGU,CACVptI,YAAak6H,EAAcrwF,uBAC3B9pC,YAAa8wH,EAAa1nF,mBAVtC,CAAA/iC,IAAA,SAAAN,MAAA,WAmCa,IAAAwuD,EAKMxtD,KAAKH,MAHEwjC,EAFbmqB,EAED2nE,WAAc9xF,OAFb6xF,EAAA1nE,EAGDu8D,aAAgBx7G,EAHf2mH,EAGe3mH,QAASgO,EAHxB24G,EAGwB34G,aAHxBg3G,EAAA/lE,EAID4lE,cAAiBp4G,EAJhBu4G,EAIgBv4G,UAAW+nB,EAJ3BwwF,EAI2BxwF,uBAE1BjpB,EAAOupB,GAAUA,EAAO36B,OAAS,EAAI26B,EAAS,GACpD,OACIpkC,GAAAC,EAAAC,cAAConI,GAAD,CACIzsH,KAAMA,EAEN7R,MAAO+Z,GAAQ/Z,MACf+S,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBACzBrnF,uBAAwBA,QAnDxCyjG,EAAA,CAA+BnkI,cC/BhBmkI,GDwFA36D,aAzES,SAACnrE,GAAD,MAAuB,CAC3Cy0H,WAAYz0H,EAAM4iC,aAClBymF,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,kBAwErBsnC,GAFWsB,CAGb26D,IEvFIxkH,GAAUqP,GAAgBq1G,SCHjBC,GDSwB,SAAA9mI,GACnC,OACIZ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,yBAAyB4iB,GAAQ/Z,OAC/ChJ,GAAAC,EAAAC,cAAA,MAAIC,UAAU,6BAA6B4iB,GAAQ4nD,UAEnD3qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,2BAA2B4iB,GAAQ2F,SAEhD1oB,GAAAC,EAAAC,cAACiuC,GAAD,CACIxD,QAAS,kBAAM/pC,EAAM8tC,eACrBluC,MAAM,SACNwI,MAAO+Z,GAAQsjH,cAEnBrmI,GAAAC,EAAAC,cAAA,WAEAF,GAAAC,EAAAC,cAAA,KAAGC,UAAU,2BAAb,GAAA8J,OACQ8Y,GAAQ4kH,cADhB,KAAA19H,OACiC8Y,GAAQ6kH,SADzC,KAEI5nI,GAAAC,EAAAC,cAAA,KACIk2C,KAAI,GAAAnsC,OAAK8Y,GAAQs1B,MACjB14C,OAAO,SACP02C,IAAI,uBAEHtzB,GAAQ8kH,eAPjB,OEVNJ,iNACF/4F,YAAc,WAAM,IAAA7sC,EASZhB,EAAKD,MATOiqH,EAAAhpH,EAEZipH,aACIx7G,EAHQu7G,EAGRv7G,QACA+zB,EAJQwnF,EAIRxnF,qBACAD,EALQynF,EAKRznF,eACA9lB,EANQutG,EAMRvtG,aAEavB,EARLla,EAQZsyH,cAAiBp4G,UAEf1M,EAAsB,CACxBg0B,uBACA/zB,UACA8zB,iBACA0kG,eAAgBxxI,EAAgBqqH,SAChClxG,KAAM6N,GAEJrR,EAAe8P,EAAU,GAAG9P,aAC5BosC,EAAOjpC,GAAUC,EAAUpD,GACjCgI,OAAO8a,KAAKspB,8EAIZ,OAAOr4C,GAAAC,EAAAC,cAAC6nI,GAAD,CAAer5F,YAAa3tC,KAAK2tC,qBAxBzBvrC,KAAMC,WCddqkI,GD0CA76D,aAnCS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,kBAiCV4oC,CAAyB66D,IEpClC1kH,GAAUqP,GAAgB1pB,YAC1BC,GAAgBypB,GAAgBxpB,OAShCq2H,GAA8Ct2H,GAAcmE,UChBnDk7H,GDkB6B,SAAA/oI,GAKtC,IAJFg+B,EAIEh+B,EAJFg+B,QACAgrG,EAGEhpI,EAHFgpI,gBACA5sG,EAEEp8B,EAFFo8B,sBACAn8B,EACED,EADFC,SAEA,OACIc,GAAAC,EAAAC,cAAA,OAAKC,UAAU,uBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,8BACR4iB,GAAQoxB,KAAKrnC,UAAU9D,OAG5BhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kCACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,yCACR4iB,GAAQoxB,KAAKrnC,UAAUm3H,UAE5BjkI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0CACVk7B,EACGA,EAAsBhmC,IAClB,SAAAwE,EAA+BwoC,GAAU,IAAtCv1B,EAAsCjT,EAAtCiT,UAAW6/E,EAA2B9yF,EAA3B8yF,IAAKD,EAAsB7yF,EAAtB6yF,SACThgF,EAAQuyH,GAAiBnyH,GAC/B,OACI9M,GAAAC,EAAAC,cAAC8yD,GAAD,CACI3yD,IAAKgiC,EACLp1B,KAAMP,EACN3M,MAAO+M,EACPlX,GAAE,OAAAqU,OAASo4B,EAAT,MAAAp4B,OAAmB6C,GACrBuhB,YAAW,GAAApkB,OAAK0iF,GAAL1iF,OAAWyiF,GACtBl+C,QAASy5F,IAAoBn7H,EAC7B2hC,YAAavvC,MAM7Bc,GAAAC,EAAAC,cAAA,SACK+8B,EACKt0B,GAAcmiC,UACdniC,GAAc+7B,iCE3C1C3hB,GAAUqP,GAAgB1pB,YAC1BC,GAAgBypB,GAAgBxpB,OAehCs/H,GAAiB,SAAAjpI,KACnBkpI,aADmBlpI,EAEnBmpI,WAFmB,IAGnBvmH,EAHmB5iB,EAGnB4iB,SACGjhB,EAJgBzK,OAAAu4B,EAAA,EAAAv4B,CAAA8I,EAAA,iDAKZe,GAAAC,EAAAC,cAAA,OAAUU,EAAQihB,IAEvBwmH,GAAY,kBACdroI,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,iBAAkB2xC,IAAI,mBAExCszF,GAAY,kBACdtoI,GAAAC,EAAAC,cAAA,OAAKgY,IAAK7U,GAAU,iBAAkB2xC,IAAI,mBCxC/BuzF,GD2CyB,SAAA1uI,GAW3B,IAVTojC,EAUSpjC,EAVTojC,QACA9vB,EASStT,EATTsT,SACA2mC,EAQSj6C,EARTi6C,OACAjD,EAOSh3C,EAPTg3C,OACA7iC,EAMSnU,EANTmU,UACAw6H,EAKS3uI,EALT2uI,aACAC,EAIS5uI,EAJT4uI,kBACAC,EAGS7uI,EAHT6uI,sBACAC,EAES9uI,EAFT8uI,mBACAC,EACS/uI,EADT+uI,6BAEIjiD,EAAkB,EAClB91C,GAAUA,EAAOpnC,OAAS,IAI1Bk9E,GAAuC,KAHvCA,EAAkB7yC,EAAO8yC,UACrB,SAAAv7D,GAAC,OAAIA,EAAE,KAAOwlB,EAAO,IAAMxlB,EAAE,KAAOwlB,EAAO,MAEJ,EAAI81C,GAEnD,IAIMkiD,EAAgB/0F,EAAOxjC,OAJb,SAACw4H,EAAkBt4H,GAC/B,IAAMu2E,EAAMv2E,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAC3D,OAAOs4H,EAAc/hD,EAAM+hD,EAAc/hD,GAEA,GAEvCgiD,EAAa57H,GAAYA,EAAS1D,OAAS,EAEjD,OACIzJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mBACXH,GAAAC,EAAAC,cAAA,KAAGC,UAAU,0BAA0B4iB,GAAQoxB,KAAKC,MAAMprC,OAE1DhJ,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0BACXH,GAAAC,EAAAC,cAAA,SACItK,GAAG,OACH6Z,KAAK,QACL++B,SAAUg6F,EACVtpI,SAAU,kBAAMupI,GAAkB,MAEtCzoI,GAAAC,EAAAC,cAAA,SACItK,GAAG,OACH6Z,KAAK,QACL++B,QAASg6F,EACTtpI,SAAU,kBAAMupI,GAAkB,MAGtCzoI,GAAAC,EAAAC,cAAA,UACIF,GAAAC,EAAAC,cAAA,MAAIC,UAAU,QACVH,GAAAC,EAAAC,cAAA,SAAOirC,QAAQ,QAAQpoB,GAAQoxB,KAAKC,MAAM40F,OAE9ChpI,GAAAC,EAAAC,cAAA,MAAIC,UAAU,QACVH,GAAAC,EAAAC,cAAA,SAAOirC,QAAQ,QAAQpoB,GAAQoxB,KAAKC,MAAM60F,QAIlDjpI,GAAAC,EAAAC,cAAA,eACMsoI,EA4EExoI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,QACVgN,G9UujCD,WACxB,IAAM+7H,EAAYnrH,aAAajC,QAAQ,aAEvC,OAAkB,OAAdotH,GAEGjgI,GAAOlL,0BAA0BuS,OACpC,SAACC,EAAK8K,GAAN,OAAe9K,GAAO24H,EAAU/1F,SAAS93B,KACzC,G8U9jCiC8tH,IACTnpI,GAAAC,EAAAC,cAACwmD,GAAD,CACIvX,QAAShiC,EAAS9X,IAAI,SAAA6Y,GAAG,MAAK,CAC1BtY,GAAE,GAAAqU,OAAKiE,EAAItY,IACX8W,MAAK,GAAAzC,OAAKiE,EAAItY,IAATqU,OACDiE,EAAID,YACE,mBACA,IAEVlO,MAAOmO,KAEXghC,mBAAoB,SAACtuC,GACjBgoI,EAA6B,CACzBhoI,EAAMb,WAKrB+zC,EAAOrqC,OAAS,GAAKqqC,EAAO,GAAGrqC,OAAS,EACrCzJ,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAACuoF,GAAD,CACI50C,QAAS8yC,EACT5yC,SAAU80F,EACV/0F,OAAQA,EACR50C,SAAU,SAAC9J,GACPuzI,EAAmBvzI,OAK/B4K,GAAAC,EAAAC,cAAA,SAAIyI,GAAc+7B,SA1G1B1kC,GAAAC,EAAAC,cAACF,GAAAC,EAAM+B,SAAP,KACIhC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,QACVgN,EACGnN,GAAAC,EAAAC,cAAA,OAAKC,UAAS,2BACVH,GAAAC,EAAAC,cAACkpI,GAAAnpI,EAAD,CACIopI,MAAO,IACPC,aACIP,EACM,EACC57H,EAAiB1D,OAE5B8/H,eAAgB,EAChBC,OAAQT,EACRU,UACIzpI,GAAAC,EAAAC,cAACwpI,GAAD,KACI1pI,GAAAC,EAAAC,cAACypI,GAAD,OAGRC,UACI5pI,GAAAC,EAAAC,cAACwpI,GAAD,KACI1pI,GAAAC,EAAAC,cAAC2pI,GAAD,SAINd,E9UijCf,SAAC57H,GAC5B,IAAM6/C,EAAO,CAAC,IAEV88E,EAAkB,EAClBC,EAAkB,EAElBC,EAAyB,GAE7B78H,EAASX,QAAQ,SAAA0B,GACT47H,EAAkB,GAClB98E,EAAK+8E,GAAiBvqI,KAAK0O,GAEtBA,EAAYD,cACb+7H,EAAkB,CAACD,EAAiBD,IAExCA,GAAmB,IAEnB98E,EAAKxtD,KAAK,IAGVsqI,EAAkB,EAElB98E,EAHA+8E,GAAmB,GAGGvqI,KAAK0O,GAEtBA,EAAYD,cACb+7H,EAAkB,CAACD,EAAiBD,OAKhD,IAAIG,EAAoB,GACpB/pE,EAAe,GACfgqE,GAAoB,EAWxB,OATAl9E,EAAKxgD,QAAQ,SAACZ,EAAKsoC,GACXA,IAAQ81F,EAAgB,KACxBE,GAAoB,GAGpBA,EAAmBD,EAAU,GAAAhgI,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAO8zI,GAAP9zI,OAAAsnC,GAAA,EAAAtnC,CAAsByV,IAClDs0D,EAAK,GAAAj2D,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAO+pE,GAAP/pE,OAAAsnC,GAAA,EAAAtnC,CAAiByV,MAG/B,GAAA3B,OAAA9T,OAAAsnC,GAAA,EAAAtnC,CAAW8zI,GAAX9zI,OAAAsnC,GAAA,EAAAtnC,CAA0B+pE,I8U3lCoBiqE,CACIh9H,GAEJA,GACJ9X,IACE,SAAAqhB,EAEI2rB,GAFJ,IACM50B,EADNiJ,EACMjJ,OAAQ7X,EADd8gB,EACc9gB,GAAIqY,EADlByI,EACkBzI,YADlB,OAIIjO,GAAAC,EAAAC,cAACkqI,GAAD,CACI/pI,IAAKgiC,EACL/B,MAAO7yB,EACPmnC,OACIh/C,IAAOoY,EAEXC,YACIA,EAEJ08B,QAAS,WACL+9F,EACI9yI,UAS5BoK,GAAAC,EAAAC,cAAA,SACK+8B,EACKt0B,GAAcmiC,UACdniC,GAAc+7B,SAKhC1kC,GAAAC,EAAAC,cAAA,OACIC,UAAU,QACVwqC,QAAS,aAITY,SAAU,EACVr/B,KAAK,UAEJ6W,GAAQoxB,KAAKk2F,yBE/JxCtnH,GAAUqP,GAAgB1pB,YAqMjB4hI,GA9KkC,SAAArrI,GAW3C,IAVFuR,EAUEvR,EAVFuR,QACAysB,EASEh+B,EATFg+B,QACA9vB,EAQElO,EARFkO,SACA2mC,EAOE70C,EAPF60C,OACAzY,EAMEp8B,EANFo8B,sBACAkvG,EAKEtrI,EALFsrI,oBACAC,EAIEvrI,EAJFurI,mBACAjzF,EAGEt4C,EAHFs4C,eACAqxF,EAEE3pI,EAFF2pI,6BACA6B,EACExrI,EADFwrI,oBACEzqF,EACwCC,qBAAkB,GAD1DC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK0qF,EADLxqF,EAAA,GACoByqF,EADpBzqF,EAAA,GAAAG,EAEgCJ,qBAAkB,GAFlDK,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAEKuqF,EAFLtqF,EAAA,GAEgBuqF,EAFhBvqF,EAAA,GAAAma,EAGsCxa,qBAAkB,GAHxDya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAGK+tE,EAHL9tE,EAAA,GAGmBowE,EAHnBpwE,EAAA,GAAAE,EAIgC3a,oBAAiBzvC,EAAQ1D,WAJzD+tD,EAAA1kE,OAAAuhC,GAAA,EAAAvhC,CAAAykE,EAAA,GAIK9tD,EAJL+tD,EAAA,GAIgBkwE,EAJhBlwE,EAAA,GAAAG,EAKgC/a,oBAAiBzvC,EAAQxC,WALzDitD,EAAA9kE,OAAAuhC,GAAA,EAAAvhC,CAAA6kE,EAAA,GAKKhtD,EALLitD,EAAA,GAKgB+vE,EALhB/vE,EAAA,GAAAE,EAM0Blb,oBAAmBzvC,EAAQqgC,QANrDuqB,EAAAjlE,OAAAuhC,GAAA,EAAAvhC,CAAAglE,EAAA,GAMKtqB,EANLuqB,EAAA,GAMa6vE,EANb7vE,EAAA,GAQF,IAAKwvE,IAAcF,EACf,OACI1qI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,0CACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQoxB,KAAKC,MAAMpH,YAC1BxsC,MAAM,SACNmqC,QAAS,WACLkgG,GAAa,GACbG,EAAax6H,EAAQxC,WACrBu8H,GAAoB,GACpBC,OAGRxqI,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQoxB,KAAKrnC,UAAUkgC,YAC9BxsC,MAAM,SACNmqC,QAAS,WACLggG,GAAiB,GACjBI,EAAav6H,EAAQ1D,WACrBy9H,GAAoB,OA8ExC,OACIvqI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2CACVuqI,EACG1qI,GAAAC,EAAAC,cAACgrI,GAAD,CACIjuG,QAASA,EACTgrG,gBAAiBn7H,EACjBuuB,sBAAuBA,GAAyB,GAChDn8B,SAAU,SAAC2vF,GACPk8C,EAAal8C,EAAKp7C,cAAc1zC,UAIxCC,GAAAC,EAAAC,cAACirI,GAAD,CACIluG,QAASA,EACT9vB,SAAUA,EACV2mC,OAAQA,EACRjD,OAAQA,EACR7iC,UAAWA,EACXw6H,aAAcA,EACdC,kBAAmB,SAAAr0F,GACf02F,EAAgB12F,GACZA,GAAS5jC,EAAQqgC,OAAOpnC,OAAS,GACjCwhI,EAAUn3F,EAAO,KAGzB40F,sBAAuB,SAAC3oI,GAAD,OACnBirI,EAAajrI,IAEjB4oI,mBAAoB,SAAC5oI,GAAD,OAAqBkrI,EAAUlrI,IACnD6oI,6BAA8BA,IAItC5oI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,mDACXH,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQoxB,KAAKC,MAAM4D,aAC1Bx3C,MAAM,OACNmqC,QAAS,WACLkgG,GAAa,GACbF,GAAiB,GACjBJ,GAAoB,MAG5BvqI,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQoxB,KAAKC,MAAM6D,eAC1Bz3C,MAAM,SACNmqC,QAAS,WACLkgG,GAAa,GACbF,GAAiB,GACjBJ,GAAoB,GAxHZ,WACxB,IAAIvlC,EAAU,GAEVjrG,EAA0B,CAC1BmiB,KAAMzkB,EAAiB+5B,uBAE3B,GAAIk5G,EACA1lC,EAAU,YAEVjrG,EAAU,CACN+S,UAAWA,EACXoP,KAAMzkB,EAAiB+5B,4BAExB,GAAIg3G,EAAc,CACrBxjC,EAAU,SAKV,IACIomC,EADA3kD,EAA+C,GAgBnD,KAZI2kD,EADAX,EACiB18H,GACb08H,EAAoB,GAAG70I,GACvBuX,GAGaY,GACbyC,EAAQxC,UACRb,GACA,KAIeqD,EAAQ66H,gBAAiB,CAC5C,IAAMhwH,EAAO7K,EAAQ66H,gBAAgBx/H,KACjC,SAAAy/H,GAAE,OAAIA,EAAG11I,KAAO4a,EAAQxC,YAG5By4E,EAAqBprE,EAAOA,EAAKorE,wBAAqBplF,OAEtDolF,EAAqB2kD,EACfA,EAAe3kD,wBACfplF,EAOVtH,EAAU,CACN2tB,eALmBha,GACnBmjC,EACA41C,GAIAvqE,KAAMzkB,EAAiBg6B,aAExB,CACHuzE,EAAU,YAEV,IAAMomC,EAAiBr9H,GAAgBC,EAAWb,GAAU,GAI5DpT,EAAU,CACN2tB,eAJmB0jH,EACjB,CAACA,QACD/pI,EAGF6a,KAAMzkB,EAAiBg6B,SAI/B8lB,EAAeytD,EAASjrG,GAqDRwxI,SCxKlBxoH,GAAUqP,GAAgB1pB,YA6QjB8iI,GA5P2B,SAAAvsI,GAapC,IAZF8mC,EAYE9mC,EAZF8mC,eACAC,EAWE/mC,EAXF+mC,aACAl6B,EAUE7M,EAVF6M,SACAkwB,EASE/8B,EATF+8B,SACA3U,EAQEpoB,EARFooB,MACAla,EAOElO,EAPFkO,SACAkuB,EAMEp8B,EANFo8B,sBACAmvG,EAKEvrI,EALFurI,mBAEAiB,GAGExsI,EAJFq4B,OAIEr4B,EAHFwsI,kBACAv+B,EAEEjuG,EAFFiuG,gBACAw+B,EACEzsI,EADFysI,yBACE1rF,EAC0CC,oBAAwB,MADlEC,EAAA/pD,OAAAuhC,GAAA,EAAAvhC,CAAA6pD,EAAA,GACK2rF,EADLzrF,EAAA,GACqB0rF,EADrB1rF,EAAA,GAAAG,EAGoDJ,yBAEpD5+C,GALAi/C,EAAAnqD,OAAAuhC,GAAA,EAAAvhC,CAAAkqD,EAAA,GAGKoqF,EAHLnqF,EAAA,GAG0BurF,EAH1BvrF,EAAA,GAAAma,EAMkCxa,qBAAkB,GANpDya,EAAAvkE,OAAAuhC,GAAA,EAAAvhC,CAAAskE,EAAA,GAMKqxE,EANLpxE,EAAA,GAMiBqxE,EANjBrxE,EAAA,GAOIvrB,EAA6BrjC,EAASmlB,cAAcD,gBACpDllB,EAASmlB,cAAcD,gBAAgB1f,OACnC,SAAA+Z,GAAC,OAAIA,EAAE5b,OAAS9X,EAAYq0I,SAEhC,GACAh7F,EAAqC7B,EACtC79B,OAAO,SAAA+Z,GAAC,OAAIA,EAAEwG,SACdx8B,IAAI,SAAAg2B,GAAC,OAAIA,EAAE3e,QAEVqkC,EAAgC/U,EACjC1qB,OAAO,SAAAlc,GAAC,OAAIA,EAAEkmC,cAAgBxvB,EAASmlB,cAAcqK,cACrDjmC,IAAI,SAAAD,GAAC,OAAIA,EAAEkmC,cAEV5T,EAAiB5b,EAAS4b,eAC1B1Z,EACF0Z,GAA4C,IAA1BA,EAAeje,OAC3Bie,EAAe,GAAG9xB,GAClB,GACJi7C,EAAmBnpB,EACnBA,EAAeryB,IAAI,SAAAD,GAAC,OAAI0Y,OAAO1Y,EAAEqY,UACjC,GACFqmC,EAAqB,CAAC,IAE1B,GAAI22F,GAAsD,IAA/BA,EAAoBhhI,OAC3CqqC,EAAS5mC,GACLu9H,EAAoB,GAAGhkD,yBAExB,GAAI/+D,GAA4C,IAA1BA,EAAeje,OACxCqqC,EAAS5mC,GACLwa,EAAe,GAAG++D,yBAGtB,GAAIt5E,EAAU,CACV,IAAM8+H,EAAmB9+H,EAAStB,KAAK,SAAAzW,GAAC,OAAIA,EAAE6Y,cAC9C6lC,EAASm4F,EACH/+H,GACI++H,EAAiBxlD,oBAErB,CAAC,IAIfzyC,qBAAU,WACN,IAAMk4F,EAAWnuH,aAAajC,QAAQ,aACtC8vH,EAAkBM,IACnB,IAEH,IAAM17H,EAAU,CACZ66H,gBAAiB3jH,EACjB1Z,YACA6iC,SACA/jC,UAAWhB,EAAS+b,sBAGlBurB,EAAe,WACjB,IAAMhS,EAAgBt1B,EAASs1B,cACzBoQ,EAAU,GACZ26F,EAAkB,GAgBtB,GAfIrgI,EAAS2M,SAAWriB,EAAQ6G,GAC5Bu0C,EAAQhyC,KAAK,CACTwJ,MAAO+Z,GAAQqpH,kBAAkBpxC,IACjCj7F,MAAOqhC,EAAclhB,kBAGzBsxB,EAAQhyC,KAAK,CACTwJ,MAAO+Z,GAAQqpH,kBAAkBrxC,IACjCh7F,MAAOqhC,EAAclhB,kBAG7BsxB,EAAQhyC,KAAK,CACTwJ,MAAO+Z,GAAQqpH,kBAAkBC,UACjCtsI,MAAO8K,GAAiBiB,EAASg1B,qBAAuB,KAExDh1B,EAAS2M,SAAWriB,EAAQ6G,GAAI,CAChC,IAAM2yB,EjViJQ,SAACA,GAIvB,OAHUpnB,GAAe+vE,YAAY1sE,KAAK,SAAAwf,GAAC,OAAIA,EAAEtrB,QAAU6vB,KAAe,CACtE3iB,KAAM,KAEDA,KiVrJkBq/H,CAAkBxgI,EAAS8jB,YAC9Cu8G,EAAkB,CACd,CACInjI,MAAO+Z,GAAQqpH,kBAAkBG,sBACjCxsI,MAAK,GAAAkK,OAAKm3B,EAAcU,oBAAnB,KAAA73B,OAA0Cm3B,EAAcW,0BAEjE,CACI/4B,MAAO+Z,GAAQqpH,kBAAkBnzG,aACjCl5B,MAAOqhC,EAAcM,aAEzB,CACI14B,MAAO+Z,GAAQqpH,kBAAkBI,YACjCzsI,MAAO6vB,SAIfu8G,EAAkB,CACd,CACInjI,MAAO+Z,GAAQqpH,kBAAkB3qG,QACjC1hC,MAAOqhC,EAAcK,SAEzB,CACIz4B,MAAO+Z,GAAQqpH,kBAAkBnzG,aACjCl5B,MAAOqhC,EAAcM,aAEzB,CACI14B,MAAO+Z,GAAQqpH,kBAAkBI,YACjCzsI,MAAOqhC,EAAcG,WAGzBz1B,EAAS6jB,WAAa7jB,EAAS6jB,UAAUlmB,OAAS,GAClD0iI,EAAgBra,QAAQ,CACpB9oH,MAAO+Z,GAAQqpH,kBAAkBK,sBACjC1sI,MAAK,GAAAkK,OAAK6B,EAAS6jB,UAAU,GAAGje,SAA3B,KAAAzH,OAAuC8Y,GAAQqpH,kBAAkBM,6BAIlF,IAAM7qG,EAAmBh1B,GACrBu0B,EAAcS,kBAGZha,EAAuBhb,GACzBf,EAAS+b,sBAEP4a,EAAsB51B,GACxBf,EAAS22B,qBAqBb,OAlBA+O,EAAQhyC,KAARub,MAAAy2B,EAAOr7C,OAAAsnC,GAAA,EAAAtnC,CACAg2I,GADAliI,OAEA,CACC,CACIjB,MAAO+Z,GAAQqpH,kBAAkBvqG,iBACjC9hC,MAAO8hC,GAEX,CACI74B,MAAO+Z,GAAQqpH,kBAAkBvkH,qBACjC9nB,MAAO8nB,GAEX,CACI7e,MAAO+Z,GAAQqpH,kBAAkB3pG,oBACjC1iC,MAAO0iC,MAKZziC,GAAAC,EAAAC,cAACysI,GAAD,CAAcn7F,QAASA,KAG5Bo3F,EAA+B,SAAC16H,GAClC29H,EAAuB39H,IAGrBqpC,EAAiB,SAACytD,EAAiBjrG,GACrC2xI,EAAyB1mC,GACzBkI,EAAgBlI,GAChBymC,EAAiB1xI,IA0DrB,OACIiG,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACV2L,EAAS60B,iBAAmB9oC,EAAgB+oC,WACzB,OAAnB+qG,GAA8C,KAAnBA,EAzDhC3rI,GAAAC,EAAAC,cAAAF,GAAAC,EAAA+B,SAAA,KACIhC,GAAAC,EAAAC,cAAA,MAAIC,UAAU,+BAA+B4iB,GAAQkhH,UAErDjkI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,2BACXH,GAAAC,EAAAC,cAAC0sI,GAAD,CACI3vG,QAAS+I,EACT6K,OAAQA,EACRxpB,MAAOA,EACP2U,SAAUA,EACV8U,kBAAmB3B,EACnB4B,oBAAqBA,EACrBC,yBAA0BA,EAC1BE,eAAe,EACfD,aAAcsG,EACdnG,gBAAiBtlC,EAASmlB,gBAE9BjxB,GAAAC,EAAAC,cAAA,OAAKC,UAAU,kCACVizC,IACA04F,GAAc38F,GAAWA,EAAQ1lC,OAAS,GACvCzJ,GAAAC,EAAAC,cAAC2sI,GAAD,CACIvyF,SAAUxuC,EAAS2M,OACnB02B,QAASA,EACTkL,eAAgBrJ,EAChBC,aAAcsG,IAGDzrC,EjVwRzBwiE,kBiVvRQ93E,EAAamyD,kBACb3oD,GAAAC,EAAAC,cAAC4sI,GAAD,CACIt8H,QAASA,EACTysB,QAAS8I,EACT54B,SAAUA,EACV2mC,OAAQA,EACRzY,sBAAuBA,EACvBkvG,oBAAqB,SAACxqI,GAClBgsI,EAAchsI,IAElByqI,mBAAoBA,EACpBjzF,eAAgBA,EAChBqxF,6BACIA,EAEJ6B,oBAAqBA,OAgBjCzqI,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qCACXH,GAAAC,EAAAC,cAAA,SACK4L,EAAS60B,iBACN9oC,EAAgBk1I,sBACpBjhI,EAAS60B,iBAAmB9oC,EAAgBm1I,UAC5ClhI,EAAS60B,iBACL9oC,EAAgBo1I,aACpBnhI,EAAS60B,iBACL9oC,EAAgBq1I,eACdnqH,GAAQ4d,eAAe4hE,WACvBx/E,GAAQ4d,eAAewsG,kBCjQ/CpqH,GAAUqP,GAAgB1pB,YAS1B4iE,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrCo2G,qBAAsBn+G,GAAkB+H,QACxCq2G,qBAAsBn+G,GAAkB8H,QACxCs2G,sBAAuBl+G,GAAmB4H,QAC1Cg9F,sBAAuBr0G,GACvBglH,oBAAqBtrI,GACrB46H,oBAAqBr0G,IAKnB2tH,GAAiB3jG,aAMnBshF,KACA5Z,KAPmB1nE,CAQrB4hG,IAUI9iI,eACF,SAAAA,EAAY9H,GAAc,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA2H,IACtB7H,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAuS,GAAAxH,KAAAH,KAAMH,KA6CV4pI,mBAAqB,WAAM,IAAA3oI,EAKnBhB,EAAKD,MAHLwsI,EAFmBvrI,EAEnBurI,qBACgB9vH,EAHGzb,EAGnBipH,aAAgBxtG,aAHGw6G,EAAAj2H,EAInBsyH,cAAiBp4G,EAJE+7G,EAIF/7G,UAAW+nB,EAJTg0F,EAISh0F,uBAE1Bh4B,EAAWJ,GACbo4B,EACA/nB,GAGEyxH,EACF1hI,EAAS6jB,WACT7jB,EAAS6jB,UAAUt6B,IAAI,SAACK,GACpB,OAAOS,OAAAkuB,GAAA,EAAAluB,CAAA,GACAT,EADP,CAEI+iB,OAAQ3M,EAAS2M,WAI7B20H,EAAqB,CACjBthI,SAAUA,EACVwR,aAAcA,EACdrjB,YAAa6pC,EACbnU,UAAW69G,EACX/0H,OAAQ3M,EAAS2M,OACjByiB,UAAWpvB,EAASs1B,cAAclhB,gBAClCob,YAAaxvB,EAASmlB,iBAzEJpwB,EA6E1B4sI,aAAe,WAAM,IACT1zI,EAAY8G,EAAKY,MAAjB1H,QADSk9C,EAKbp2C,EAAKD,MAFWwiC,EAHH6T,EAGb6zE,aAAgB1nF,eACCU,EAJJmT,EAIbk9E,cAAiBrwF,uBAGjB1pC,EAAc,GACdC,EAAU,GAEd,GAAIN,EACA,OAAQA,EAAQmiB,MACZ,KAAKzkB,EAAiB+5B,sBAClBp3B,EACI2oB,GAAQoiH,cAAcuI,oBAAoB3tI,MAC9C1F,EAAU0oB,GAAQoiH,cAAcuI,oBAAoBhhI,MACpD,MAGJ,KAAKjV,EAAiBg6B,QAEd13B,EAAQ2tB,gBAC0B,IAAlC3tB,EAAQ2tB,eAAeje,QAEvBrP,EACI2oB,GAAQoiH,cAAcwI,qBAAqB5tI,MAC/C1F,EACI0oB,GAAQoiH,cAAcwI,qBAAqBjhI,QAE/CtS,EAAc2oB,GAAQoiH,cAAcyI,cAAc7tI,MAClD1F,EAAU0oB,GAAQoiH,cAAcyI,cAAclhI,OAGlD,MAGJ,KAAKjV,EAAiBk6B,QAClB,GAAI53B,EAAQu3B,OACR,OAAQv3B,EAAQu3B,OAAO5kB,OACnB,KAAKqW,GAAQ8qH,kBAAkBC,SAC3B1zI,EAAcL,EAAQu3B,OAAOO,OACvB9O,GAAQoiH,cAAc4I,YAAYhuI,MAClCgjB,GAAQoiH,cAAc6I,aAAajuI,MAEzC1F,EAAUN,EAAQu3B,OAAOO,OACnB9O,GAAQoiH,cAAc4I,YAAYrhI,MAClCqW,GAAQoiH,cAAc6I,aAAathI,MACzC,MAEJ,KAAKqW,GAAQ8qH,kBAAkBI,MAC3B7zI,EAAcL,EAAQu3B,OAAOO,OACvB9O,GAAQoiH,cAAc+I,SAASnuI,MAC/BgjB,GAAQoiH,cAAcgJ,UAAUpuI,MAEtC1F,EAAUN,EAAQu3B,OAAOO,OACnB9O,GAAQoiH,cAAc+I,SAASxhI,MAC/BqW,GAAQoiH,cAAcgJ,UAAUzhI,MACtC,MAEJ,KAAKqW,GAAQ8qH,kBAAkBO,QAC3Bh0I,EAAcL,EAAQu3B,OAAOO,OACvB9O,GAAQoiH,cAAckJ,WAAWtuI,MACjCgjB,GAAQoiH,cAAcmJ,YAAYvuI,MAExC1F,EAAUN,EAAQu3B,OAAOO,OACnB9O,GAAQoiH,cAAckJ,WAAW3hI,MACjCqW,GAAQoiH,cAAcmJ,YAAY5hI,MACxC,MAEJ,QACIrS,EAAU0oB,GAAQoiH,cAAc5yG,QAAQ7lB,MACxCtS,EAAc,GAI1B,MAEJ,KAAK3C,EAAiBi6B,QAClBt3B,EAAc2oB,GAAQoiH,cAAcoJ,YAAYxuI,MAChD1F,EAAU0oB,GAAQoiH,cAAcoJ,YAAY7hI,MAQxD,MAAO,CACH1S,YAAaopC,EACbnpC,YAAa6pC,EACb3pC,SAAU4oB,GAAQmiH,eAClBhrI,KAAMoR,KACNlR,cACAC,YA1KkBwG,EA8K1BwzH,aAAe,WAAM,IACTt6H,EAAY8G,EAAKY,MAAjB1H,QACR,GAAIA,EAAS,KAAAw0D,EAKL1tD,EAAKD,MAHWwiC,EAFXmrB,EAELu8D,aAAgB1nF,eAFXkxF,EAAA/lE,EAGL4lE,cAAiBp4G,EAHZu4G,EAGYv4G,UAAW+nB,EAHvBwwF,EAGuBxwF,uBAC5BwpG,EAJK/+E,EAIL++E,sBAEExhI,EAAWJ,GACbo4B,EACA/nB,GAGE0c,EAAQ53B,EAAK4sI,eAEnBH,EAAsBn3I,OAAAkuB,GAAA,EAAAluB,CAAA,CAClB6D,YAAaopC,EACbt3B,WACA2sB,SACG1+B,MAjMW8G,EAsM1BsqH,mBAAqB,SAACp/G,GAA2B,IAAAorD,EAMzCt2D,EAAKD,MAJYmb,EAFwBo7C,EAEzCg9D,cAAiBp4G,UACjB43G,EAHyCx8D,EAGzCw8D,iBACgBvwF,EAJyB+zB,EAIzC2zD,aAAgB1nF,eAChB6wF,EALyC98D,EAKzC88D,oBAEEnoH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,KAnNClL,EAwN1B2tI,yBAA2B,WAEvB,MAAqB,WADC3tI,EAAKY,MAAnBgtI,UACwB1rH,GAAQ2rH,aAAe3rH,GAAQutB,OA1NzCzvC,EA6N1B6qI,yBAA2B,SAACxvH,GACxBrb,EAAKc,SAAS,CAAE8sI,UAAWvyH,KA5N3Brb,EAAKY,MAAQ,CACT0tC,QAAS,GACT2B,kBAAmB,GACnB/2C,aAASsH,EACTotI,UAAW,aANO5tI,qFAUN,IAAAqvD,EAKZnvD,KAAKH,MAHLysI,EAFYn9E,EAEZm9E,qBACgB/vH,EAHJ4yC,EAGZ46D,aAAgBxtG,aAHJqxH,EAAAz+E,EAIZikE,cAAiBp4G,EAJL4yH,EAIK5yH,UAAW+nB,EAJhB6qG,EAIgB7qG,uBAOhCupG,EAAqB,CACjB/vH,aAAcA,EACdvB,UAAW,CAPErQ,GACbo4B,EACA/nB,iDASW6pC,GAAkB,IACzBuuE,EAAkBvuE,EAAlBuuE,cADyBl8D,EAM7Bl3D,KAAKH,MAHLysI,EAH6Bp1E,EAG7Bo1E,qBACgB/vH,EAJa26C,EAI7B6yD,aAAgBxtG,aAJaujH,EAAA5oE,EAK7Bk8D,cAAiBp4G,EALY8kH,EAKZ9kH,UAAW+nB,EALC+8F,EAKD/8F,uBAE5BA,IAA2BqwF,EAAcrwF,wBAKzCupG,EAAqB,CACjB/vH,eACAvB,UAAW,CANErQ,GACbo4B,EACA/nB,uCA4LH,IAAAna,EAAAb,KAAAmxD,EAiBMnxD,KAAKH,MAjBXguI,EAAA18E,EAED44D,aAAgBx7G,EAFfs/H,EAEet/H,QAASgO,EAFxBsxH,EAEwBtxH,aAFxBuxH,EAAA38E,EAGDiiE,cAAiBp4G,EAHhB8yH,EAGgB9yH,UAAW+nB,EAH3B+qG,EAG2B/qG,uBAAwBvoC,EAHnDszI,EAGmDtzI,MACvC+7B,EAJZ46B,EAIDqa,UAAaj1C,OAJZw3G,EAAA58E,EAKD68E,aACIhpG,EANH+oG,EAMG/oG,eACAC,EAPH8oG,EAOG9oG,aACA93B,EARH4gI,EAQG5gI,IACA8tB,EATH8yG,EASG9yG,SACA3U,EAVHynH,EAUGznH,MACAgU,EAXHyzG,EAWGzzG,sBACAiI,EAZHwrG,EAYGxrG,eACAjV,EAbHygH,EAaGzgH,YAEJs2G,EAfCzyE,EAeDyyE,oBACA3Q,EAhBC9hE,EAgBD8hE,sBAGEloH,EAAWJ,GACbo4B,EACA/nB,GAGE5O,EAAWe,EAAI41B,GACfkrG,EAAeljI,EAASub,OAASA,EAAMyc,GACvCoC,EAAK7K,EAAsByI,GAEjC,OACI9jC,GAAAC,EAAAC,cAACqtI,GAAD,CACI7B,yBAA0B3qI,KAAK2qI,yBAC/B3lG,eAAgBA,EAChBC,aAAcA,EACdl6B,SAAUA,EACVqB,SAAUA,EACV6uB,SAAUA,EACV1E,OAAQA,EACR+D,sBAAuB6K,EACvB7e,MAAO2nH,EACPxE,mBAAoBzpI,KAAKypI,mBACzBiB,iBAAkB,SAAC1xI,GAAD,OACd6H,EAAKD,SAAS,CACV5H,QAAQ5D,OAAAkuB,GAAA,EAAAluB,CAAA,GACD4D,EADA,CAEHujB,oBAKZtU,MAAO+Z,GAAQ/Z,MACfqiH,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9BlwF,uBAAwBA,EACxB/nB,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7wG,KAAKytI,2BACnBh3F,kBAAmBnpB,EACnBiV,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAa,kBAAMkkC,cAhSTxhI,KAAMC,WCzEjBsF,GD+WAkkE,aA3US,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,YACjB0tF,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrB+qG,aAActtI,EAAMwkC,iBAuUgBqlC,GAAzBsB,CAAwClkE,IE1WjDqa,GAAUqP,GAAgB68G,YAiIjBC,GAlG2B,SAAAtuI,GACtC,IAAMuuI,GpVwCepvI,EoVxCca,EAAMgpE,OAAOptE,SAAS4yI,SpVyC3C/tI,IAAVtB,KAGAA,EAAM0J,OAAS,IAGL,wDACDJ,KAAKtJ,IoV/CZsvI,EACFzuI,EAAMgpE,OAAOptE,SAAS4yI,MAAQxuI,EAAMgpE,OAAOptE,SAAS2hF,QAElDr0E,EAG4B,KAA9BlJ,EAAMgpE,OAAOptE,SAAS8yI,KAAcH,GAAcE,EpViClC,IAACtvI,EoV/BrB,OACIC,GAAAC,EAAAC,cAAA,OAAKC,UAAU,qBACXH,GAAAC,EAAAC,cAAA,MAAIC,UAAU,+BAA+B4iB,GAAQ4nD,UACrD3qE,GAAAC,EAAAC,cAAA,KAAGC,UAAU,mCACR4iB,GAAQ8mD,OAAO7gE,OAEpBhJ,GAAAC,EAAAC,cAAC05D,GAAD,CACIprB,QAAS5tC,EAAMgpE,OAAO2lE,QAAQC,cAC9BviI,KAAM8V,GAAQ8mD,OAAO2lE,cACrB/gG,YAAa,kBAAM7tC,EAAMqwC,aAAa,oBAE1CjxC,GAAAC,EAAAC,cAAC05D,GAAD,CACI3sD,KAAM8V,GAAQ8mD,OAAO4lE,gBACrBjhG,QAAS5tC,EAAMgpE,OAAO2lE,QAAQE,gBAC9BhhG,YAAa,kBAAM7tC,EAAMqwC,aAAa,sBAG1CjxC,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQsjH,YACf7lI,MAAO,SACPmqC,QAAS,kBAAM/pC,EAAMssG,gBAAgB,eAEzCltG,GAAAC,EAAAC,cAAA,MAAIC,UAAU,qCACT4iB,GAAQvmB,SAASwM,OAEtBhJ,GAAAC,EAAAC,cAAA,KAAGC,UAAU,wCACR4iB,GAAQvmB,SAASmuE,UAEtB3qE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sCACXH,GAAAC,EAAAC,cAAA,QAAMC,UAAU,6CACX4iB,GAAQvmB,SAAS8yI,KAEtBtvI,GAAAC,EAAAC,cAACmsC,GAAD,CACI58B,KAAK,WACL1P,MAAOa,EAAMgpE,OAAOptE,SAAS8yI,IAC7B3jG,cAAe,SAACj2C,GAAD,OACXkL,EAAM8uI,YAAYh6I,EAAG,QAEzB2M,YAAa0gB,GAAQvmB,SAAS6F,cAElCrC,GAAAC,EAAAC,cAAA,QAAMC,UAAU,6CACX4iB,GAAQvmB,SAAS4yI,KAEtBpvI,GAAAC,EAAAC,cAACmsC,GAAD,CACI58B,KAAK,WACL1P,MAAOa,EAAMgpE,OAAOptE,SAAS4yI,IAC7BzjG,cAAe,SAACj2C,GAAD,OACXkL,EAAM8uI,YAAYh6I,EAAG,QAEzB2M,YAAa0gB,GAAQvmB,SAAS6F,YAC9B0pC,OAAQ,kBAAMnrC,EAAM+uI,YAAY,eAAgBR,IAChD5zI,MACIqF,EAAMga,OAAOg1H,YACP7sH,GAAQvmB,SAASjB,MAAM6zI,SACvB/tI,IAGdrB,GAAAC,EAAAC,cAAA,QAAMC,UAAU,6CACX4iB,GAAQvmB,SAAS2hF,SAEtBn+E,GAAAC,EAAAC,cAACmsC,GAAD,CACI58B,KAAK,WACL1P,MAAOa,EAAMgpE,OAAOptE,SAAS2hF,QAC7BxyC,cAAe,SAACj2C,GAAD,OACXkL,EAAM8uI,YAAYh6I,EAAG,YAEzB2M,YAAa0gB,GAAQvmB,SAAS6F,YAC9B0pC,OAAQ,kBACJnrC,EAAM+uI,YAAY,mBAAoBN,IAE1C9zI,MACIqF,EAAMga,OAAOi1H,gBACP9sH,GAAQvmB,SAASjB,MAAM4iF,aACvB98E,KAIlBrB,GAAAC,EAAAC,cAACiuC,GAAD,CACInlC,MAAO+Z,GAAQ+sH,aACftvI,MAAOsJ,EAAU,SAAW,OAC5B6gC,QAAS,kBACL7gC,EAAUlJ,EAAMssG,gBAAgB,YAAc,UClG5DnqF,GAAUqP,GAAgB68G,YAqB1B3jE,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrC0tG,uBAAwBjpH,GAAoBub,QAC5C+4G,uBAAwBx0H,GAAoByb,QAC5C2tG,oBAAqBtrI,GACrB26H,sBAAuBr0G,GACvBs0G,oBAAqBr0G,IAKZowH,GAAiBpmG,aAM1BshF,KACA5Z,KAP0B1nE,CAQ5BslG,IAWWD,GAAb,SAAAtjE,GACI,SAAAsjE,EAAYruI,GAAY,IAAAC,EAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAAkuI,IACpBpuI,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAA84I,GAAA/tI,KAAAH,KAAMH,KAuBVqwC,aAAe,SAACxhC,GAAiB,IACrBm6D,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAO2lE,QAAQ9/H,IAASm6D,EAAO2lE,QAAQ9/H,GACvC5O,EAAKc,SAAS,CAAEioE,YA3BI/oE,EA8BxB6uI,YAAc,SAACh6I,EAAe+Z,GAAiB,IACnCm6D,EAAW/oE,EAAKY,MAAhBmoE,OACA7pE,EAAUrK,EAAE+9C,cAAZ1zC,MACR6pE,EAAOptE,SAASiT,GAAQ1P,EACxBc,EAAKc,SAAS,CAAEioE,YAlCI/oE,EAqCxB8uI,YAAc,SAAClgI,EAAcw/B,GAAiB,IAClCr0B,EAAW/Z,EAAKY,MAAhBmZ,OACRA,EAAOnL,GAAQw/B,EACfpuC,EAAKc,SAAS,CAAEiZ,YAxCI/Z,EA2CxBsqH,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAMzChB,EAAKD,MAJYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBAEEnoH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,KAxDDlL,EA6DxBwzH,aAAe,SAACrvB,GAAoB,IACxBp7B,EAAW/oE,EAAKY,MAAhBmoE,OADwB3yB,EAO5Bp2C,EAAKD,MAJL8jI,EAH4BztF,EAG5BytF,uBACA5Z,EAJ4B7zE,EAI5B6zE,aACAilB,EAL4B94F,EAK5B84F,uBACA5b,EAN4Bl9E,EAM5Bk9E,cAGJ,GAAgB,aAAZnvB,EACA0/B,EAAuB,CACnBr1H,SAAU,CACNrV,YAAa8wH,EAAa1nF,eAC1BvzB,MAAOi7G,EAAax7G,QAAQO,MAC5BC,MAAOg7G,EAAax7G,QAAQQ,MAC5BsoB,UAAWwxC,EAAO2lE,QAAQE,gBAC1Bp3G,WAAYuxC,EAAO2lE,QAAQC,eAG/B/2G,MAAO,CACHz+B,YAAa8wH,EAAa1nF,eAC1BnpC,YAAak6H,EAAcrwF,uBAC3B3pC,SAAUi4B,GAAgBm3B,YAAY27E,eACtChrI,KAAMoR,KACNlR,YACIg4B,GAAgBm3B,YAAY47E,cACvBC,yBAAyBrlI,MAClC1F,QACI+3B,GAAgBm3B,YAAY47E,cACvBC,yBAAyB14H,aAGvC,CACH,IAAMyqB,EAAQpZ,aAAajC,QAAQ,eAC/Bqb,GACA44G,EAAuB,CACnB54G,QACAD,KAAM4zF,EAAa1nF,eACnB1J,YAAakwC,EAAOptE,SAAS8yI,IAC7B31G,YAAaiwC,EAAOptE,SAAS4yI,MAIrCxlE,EAAOptE,SAAS2hF,QAAU,GAC1BvU,EAAOptE,SAAS4yI,IAAM,GACtBxlE,EAAOptE,SAAS8yI,IAAM,GAE1BzuI,EAAKc,SAAS,CAAEioE,YA5GI,IAGZkhD,EAAwBjqH,EAAKD,MAA7BkqH,aAHY,OAKpBjqH,EAAKY,MAAQ,CACTmoE,OAAQ,CACJptE,SAAU,CACN8yI,IAAK,GACLF,IAAK,GACLjxD,QAAS,IAEboxD,QAAS,CACLE,gBAAiB3kB,EAAax7G,QAAQ8oB,UACtCo3G,cAAe1kB,EAAax7G,QAAQ+oB,aAG5Czd,OAAQ,CACJg1H,aAAa,EACbC,iBAAiB,IAnBLhvI,EAD5B,OAAA1K,OAAAu8B,GAAA,EAAAv8B,CAAA84I,EAAAtjE,GAAAx1E,OAAAk2E,GAAA,EAAAl2E,CAAA84I,EAAA,EAAA5uI,IAAA,SAAAN,MAAA,WAgHa,IAAA0mD,EACsB1lD,KAAKU,MAAxBmoE,EADHnjB,EACGmjB,OAAQhvD,EADX6rC,EACW7rC,OADX2zC,EAOMxtD,KAAKH,MAPXq1H,EAAA1nE,EAGDu8D,aAAgBx7G,EAHf2mH,EAGe3mH,QAASg0B,EAHxB2yF,EAGwB3yF,eAAgBhmB,EAHxC24G,EAGwC34G,aAHxCg3G,EAAA/lE,EAID4lE,cAAiBp4G,EAJhBu4G,EAIgBv4G,UAAW+nB,EAJ3BwwF,EAI2BxwF,uBAAwBvoC,EAJnD+4H,EAImD/4H,MACpDopI,EALCp2E,EAKDo2E,oBACA3Q,EANCzlE,EAMDylE,sBAEJ,OACIh0H,GAAAC,EAAAC,cAAC8vI,GAAD,CACIpmE,OAAQA,EACRhvD,OAAQA,EACRq2B,aAAclwC,KAAKkwC,aACnBy+F,YAAa3uI,KAAK2uI,YAClBC,YAAa5uI,KAAK4uI,YAElB3mI,MAAO+Z,GAAQ/Z,MACfqiH,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9BlwF,uBAAwBA,EACxB/nB,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAakkC,QA5I7BsK,EAAA,CAAiC9rI,KAAMC,WChFxB6rI,GDkOAriE,aArLS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,kBAqLrBsnC,GAFWsB,CAGbqiE,IEhMIlsH,GAAUqP,GAAgBknB,gBAQ1BgyB,GAAgB,CAClBqoD,iBAAkBj0G,GAAmBsX,QACrCi5G,mBAAoBnwH,GAAsBkX,QAC1Ck5G,oBAAqBlwH,GAAiBgX,QACtCg9F,sBAAuBr0G,GACvBwwH,yBAA0BtwH,GAC1Bo0G,oBAAqBr0G,IAKnBwwH,GAAqBxmG,aAMvBshF,KACA5Z,KAPuB1nE,CAQzB2oF,IAQIj5E,iNAGF73C,MAAQ,CACJmoE,OAAQ,CACJ7wB,OAAQ,CACJ,CACIrsC,MAAO,GACP3M,MAAO,GACP8rC,UAAW,EACX3sC,SAAU,SAACxJ,WAiE3B26I,gBAAkB,WAAM,IACZzmE,EAAW/oE,EAAKY,MAAhBmoE,OADY0mE,EAIhBzvI,EAAKD,MADL+zH,iBAAoB/kG,EAHJ0gH,EAGI1gH,WAAY0U,EAHhBgsG,EAGgBhsG,UAe9ByU,GAXFnpB,IAAe54B,EAAY84B,SACpB/M,GAAQ0vG,aAAat5E,MAAMo3F,QAC3B3gH,IAAe54B,EAAY64B,WAC3B9M,GAAQ0vG,aAAat5E,MAAMhH,UAE3B,CACH,CACIzlC,MAAO,MAICrX,IAAI,SAAC8jD,EAAO9W,GAC5B,IAEMhgC,EAAc8J,GAAmBm4B,GACvC,OAAOnuC,OAAAkuB,GAAA,EAAAluB,CAAA,GACAgjD,EADP,CAEIj6C,SALa,SAACxJ,GAAD,OACbmL,EAAKm4C,kBAAkBtjD,EAAG2sC,IAK1BhgC,cACAtC,MAAO,GACP8rC,UAAWvH,MAGnBslC,EAAO7wB,OAASA,EAEhBl4C,EAAKc,SAAS,CAAEioE,cAGpB5wB,kBAAoB,SAACtjD,EAAew+C,GAAgB,IACxC01B,EAAW/oE,EAAKY,MAAhBmoE,OACRA,EAAO7wB,OAAO7E,GAAKn0C,MAAQrK,EAAE+9C,cAAc1zC,MAAMyL,QAAQ,QAAS,IAClE3K,EAAKc,SAAS,CAAEioE,cAGpBuhD,mBAAqB,SAACp/G,GAA2B,IAAAlK,EAMzChB,EAAKD,MAJYmb,EAFwBla,EAEzCsyH,cAAiBp4G,UACjB43G,EAHyC9xH,EAGzC8xH,iBACgBvwF,EAJyBvhC,EAIzCipH,aAAgB1nF,eAChB6wF,EALyCpyH,EAKzCoyH,oBAEEnoH,EAAWJ,GAAqBK,EAAgBgQ,GAClDjQ,EAASm4B,UACTgwF,EAAoB,CAAEnoH,aAEtB6nH,EAAiB,CACb35H,YAAaopC,EACbnpC,YAAa8R,OAKzBsoH,aAAe,SAACrvB,GAAoB,IAAA/tD,EAK5Bp2C,EAAKD,MALuB+4H,EAAA1iF,EAE5Bk9E,cAAiBrwF,EAFW61F,EAEX71F,uBAAwB/nB,EAFb49G,EAEa59G,UACrB2lB,EAHQuV,EAG5B09E,iBAAoBjzF,YACpBwuG,EAJ4Bj5F,EAI5Bi5F,oBAEJ,GAA+B,KAA3BpsG,EAAJ,CAGA,IAAMh4B,EAAWJ,GACbo4B,EACA/nB,GAEJ,GAAIjQ,EAUAokI,EAAoB,CAChB92G,WAVev4B,EAAKY,MAAhBmoE,OACkB7wB,OAAO1jD,IAAI,SAAA8jD,GACjC,MAAO,CACHzX,cACA8uG,aAAc,GACdzwI,MAAOo5C,EAAMp5C,MACb0wI,cAAehkI,GAAsB0sC,EAAMzsC,UAK/CzS,YAAa6pC,EACb5jB,gBAAiBpU,EAASs1B,cAAclhB,gBACxC4Y,YAAaxtB,KACb6U,WAAYrU,EAAS2M,aAKjCwxD,iBAAmB,WAAe,IACtBL,EAAW/oE,EAAKY,MAAhBmoE,OAIR,OADkBA,EAAO7wB,OAAOzoC,OAFhB,SAACC,EAAcC,GAAf,OACZD,GAAOC,EAAQzQ,MAAM0J,SAAW+G,EAAQq7B,YACI,IAehD+9B,EAAO7wB,OAAS6wB,EAAO7wB,OAAO1jD,IAAI,SAAA8jD,GAC9B,OAAOhjD,OAAAkuB,GAAA,EAAAluB,CAAA,GACAgjD,EADP,CAEI59C,WAAO8F,MAIfR,EAAKc,SAAS,CAAEioE,YACT,IArBHA,EAAO7wB,OAAS6wB,EAAO7wB,OAAO1jD,IAAI,SAAA8jD,GAC9B,IAAM59C,EACF49C,EAAMp5C,MAAM0J,SAAW0vC,EAAMtN,UAA7B,uBAAA5hC,OAC6BkvC,EAAMtN,UADnC,2BAEMxqC,EACV,OAAOlL,OAAAkuB,GAAA,EAAAluB,CAAA,GACAgjD,EADP,CAEI59C,YAGRsF,EAAKc,SAAS,CAAEioE,YACT,yFAxKK,IAAArb,EAIZxtD,KAAKH,MAJO0zH,EAAA/lE,EAEZ4lE,cAAiBrwF,EAFLwwF,EAEKxwF,uBAAwB/nB,EAF7Bu4G,EAE6Bv4G,UACzCk0H,EAHY1hF,EAGZ0hF,mBAQJ,GAJIlvI,KAAKH,MADL+zH,iBAAoB/kG,aAEL54B,EAAYurC,SAC3BxhC,KAAKsvI,kBAEsB,KAA3BvsG,EAAJ,CAGA,IAAMh4B,EAAWJ,GACbo4B,EACA/nB,GAEAjQ,GACAmkI,EAAmB,CACfh2I,YAAa6pC,EACb5jB,gBAAiBpU,EAASs1B,cAAclhB,gBACxC4Y,YAAaxtB,KACb6U,WAAYrU,EAAS2M,qDAKdmtC,EAAkBqI,GAAkB,IAAAkJ,EAM/Cp2D,KAAKH,MAHLqvI,EAH+C94E,EAG/C84E,mBAH+Czb,EAAAr9D,EAI/Cg9D,cAAiBp4G,EAJ8By4G,EAI9Bz4G,UAAW+nB,EAJmB0wF,EAInB1wF,uBACRlU,EAL2BunC,EAK/Cw9D,iBAAoB/kG,WAUxB,GANyC,KAArCq+B,EAAU2b,OAAO7wB,OAAO,GAAGrsC,OAC3BkjB,IAAeg2B,EAAU+uE,iBAAiB/kG,YAE1C7uB,KAAKsvI,kBAGLvsG,IADsB8hB,EAAlBuuE,cACqCrwF,uBAAwB,CACjE,IAAMh4B,EAAWJ,GACbo4B,EACA/nB,GAEAjQ,GACAmkI,EAAmB,CACfh2I,YAAa6pC,EACb5jB,gBAAiBpU,EAASs1B,cAAclhB,gBACxC4Y,YAAaxtB,KACb6U,WAAYrU,EAAS2M,2CAgI5B,IAAAy3C,EAYMnvD,KAAKH,MAZX8vI,EAAAxgF,EAED46D,aAAgBx7G,EAFfohI,EAEephI,QAASgO,EAFxBozH,EAEwBpzH,aAFxBqxH,EAAAz+E,EAGDikE,cAAiBp4G,EAHhB4yH,EAGgB5yH,UAAW+nB,EAH3B6qG,EAG2B7qG,uBAAwBvoC,EAHnDozI,EAGmDpzI,MAHnDo1I,EAAAzgF,EAIDykE,iBACIzjH,EALHy/H,EAKGz/H,OACAoyB,EANHqtG,EAMGrtG,eACAiB,EAPHosG,EAOGpsG,iBACAC,EARHmsG,EAQGnsG,kBAEJ2rG,EAVCjgF,EAUDigF,yBACAnc,EAXC9jE,EAWD8jE,sBAIUj7E,EACVh4C,KAAKU,MADLmoE,OAAU7wB,OAGRjtC,EAAWJ,GACbo4B,EACA/nB,GAGJ,OACI/b,GAAAC,EAAAC,cAACkwI,GAAD,CACIl/H,OAAQD,GAAsBC,GAC9B6nC,OAAQA,EACRjtC,SAAUA,EACVktC,kBAAmBj4C,KAAKi4C,kBACxBixB,iBAAkBlpE,KAAKkpE,iBACvB1lC,iBAAkBA,EAClBC,kBAAmBA,EAEnBx7B,MAAO+Z,GAAQ/Z,MACf86B,uBAAwBA,EACxBunF,YAAa9vH,EACb6vH,uBAAwB,kBAAM4I,KAC9Bj4G,UAAWA,EACXzM,QAASA,EACTgO,aAAcA,EACd6tG,mBAAoBpqH,KAAKoqH,mBAEzBvZ,aAAc7uF,GAAQutB,MACtBhN,eAAgBA,EAChBiU,eAAgBx2C,KAAKszH,aACrB5zB,YAAa0vC,EACb34F,kBAAmBlU,EAAejpC,iBAnPpB8I,KAAMC,WCxErBk2C,GDiUAszB,aA1RS,SAACnrE,GAAD,MAAuB,CAC3CqpH,aAAcrpH,EAAMkiC,eACpBwwF,cAAe1yH,EAAMuiC,gBACrB2wF,iBAAkBlzH,EAAMgjC,qBAuRY6mC,GAAzBsB,CAAwCtzB,IElTjDs3F,GAAgBx+G,GAAgB8iB,SAASC,QAAQK,OAExCq7F,GAAA,CACX,CACI7nI,MAAO4nI,GAAcE,KAAK9nI,MAC1B1O,KAAMs2I,GAAcE,KAAKx2I,KACzB07C,MAAO,CACH,CACI17C,KAAMs2I,GAAcE,KAAK96F,MAAM17C,KAC/BowH,OAAO,EACPH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,6BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAC6wI,GAAD,OACZ/nI,MAAO4nI,GAAcE,KAAK96F,MAAMhtC,SAI5C,CACIA,MAAO4nI,GAAc/9F,YAAY7pC,MACjC1O,KAAMs2I,GAAc/9F,YAAYv4C,KAChC07C,MAAO,CACH,CACI17C,KAAMs2I,GAAc/9F,YAAYmD,MAAMX,QAAQ/6C,KAC9CiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,6CACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAC8wI,GAAD,OACZhoI,MAAO4nI,GAAc/9F,YAAYmD,MAAMX,QAAQrsC,SAgB3D,CACIA,MAAO4nI,GAAcvpH,MAAMre,MAC3B1O,KAAMs2I,GAAcvpH,MAAM/sB,KAC1B07C,MAAO,CACH,CACI17C,KAAMs2I,GAAcvpH,MAAM2uB,MAAMyK,QAAQnmD,KACxCiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,2BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAC+wI,GAAD,OACZjoI,MAAO4nI,GAAcvpH,MAAM2uB,MAAMyK,QAAQz3C,SAgBrD,CACIA,MAAO4nI,GAAcnvG,QAAQz4B,MAC7B1O,KAAMs2I,GAAcnvG,QAAQnnC,KAC5B07C,MAAO,CACH,CACI17C,KAAMs2I,GAAcnvG,QAAQuU,MAAMk7F,YAAY52I,KAC9CiwH,QAAS,kBACLvqH,GAAAC,EAAAC,cAAA,sDAEJ+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACixI,GAAD,OACZnoI,MAAO4nI,GAAcnvG,QAAQuU,MAAMk7F,YAAYloI,OAEnD,CACI1O,KAAMs2I,GAAcnvG,QAAQuU,MAAM9K,QAAQ5wC,KAC1CiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,6BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACkxI,GAAD,OACZpoI,MAAO4nI,GAAcnvG,QAAQuU,MAAM9K,QAAQliC,OAE/C,CACI1O,KAAMs2I,GAAcnvG,QAAQuU,MAAMq7F,YAAY/2I,KAC9CiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,0BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACoxI,GAAD,OACZtoI,MAAO4nI,GAAcnvG,QAAQuU,MAAMq7F,YAAYroI,OAEnD,CACI1O,KAAMs2I,GAAcnvG,QAAQuU,MAAMu7F,KAAKj3I,KACvCiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,iCACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACsxI,GAAD,OACZxoI,MAAO4nI,GAAcnvG,QAAQuU,MAAMu7F,KAAKvoI,SAIpD,CACIA,MAAO4nI,GAAc9vF,SAAS93C,MAC9B1O,KAAMs2I,GAAc9vF,SAASxmD,KAC7B07C,MAAO,CACH,CACI17C,KAAMs2I,GAAc9vF,SAAS9K,MAAMrR,MAAMrqC,KACzCiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,4BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACuxI,GAAD,OACZzoI,MAAO4nI,GAAc9vF,SAAS9K,MAAMrR,MAAM37B,OAE9C,CACI1O,KAAMs2I,GAAc9vF,SAAS9K,MAAM07F,MAAMp3I,KACzCiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,4BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACyxI,GAAD,OACZ3oI,MAAO4nI,GAAc9vF,SAAS9K,MAAM07F,MAAM1oI,OAE9C,CACI1O,KAAMs2I,GAAc9vF,SAAS9K,MAAM/Q,SAAS3qC,KAC5CiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,6BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAC0xI,GAAD,OACZ5oI,MAAO4nI,GAAc9vF,SAAS9K,MAAM/Q,SAASj8B,SAIzD,CACIA,MAAO4nI,GAActhI,QAAQtG,MAC7B1O,KAAMs2I,GAActhI,QAAQhV,KAC5B07C,MAAO,CACH,CACI17C,KAAMs2I,GAActhI,QAAQ0mC,MAAM67F,iBAAiBv3I,KACnDiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,uCACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAC4xI,GAAD,OACZ9oI,MAAO4nI,GAActhI,QAAQ0mC,MAAM67F,iBAAiB7oI,OAExD,CACI1O,KAAMs2I,GAActhI,QAAQ0mC,MAAM+7F,SAASz3I,KAC3CiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,4BACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAC8xI,GAAD,OACZhpI,MAAO4nI,GAActhI,QAAQ0mC,MAAM+7F,SAAS/oI,OAEhD,CACI1O,KAAMs2I,GAActhI,QAAQ0mC,MAAMG,IAAI77C,KACtC0O,MAAO4nI,GAActhI,QAAQ0mC,MAAMG,IAAIntC,MACvCuhH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,mBACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAAA,gBAIxB,CACI8I,MAAO4nI,GAAcqB,SAASjpI,MAC9B1O,KAAMs2I,GAAcqB,SAAS33I,KAC7By7C,QAAQ,EACRC,MAAO,CACH,CACI17C,KAAMs2I,GAAcqB,SAASj8F,MAAMzjB,QAAQj4B,KAC3CiwH,QAAS,kBAAMvqH,GAAAC,EAAAC,cAAA,mCACf+iB,KAAM,kBAAMjjB,GAAAC,EAAAC,cAACgyI,GAAD,OACZlpI,MAAO4nI,GAAcqB,SAASj8F,MAAMzjB,QAAQvpB,UCpJtDP,GAAgBsa,GAAQna,OAiBxByhH,GAAiBpiD,KAfP,kBACZjoE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,UAAUvK,GAAG,WACvB4/C,GAAOngD,IAAI,SAACygD,GAAD,OACRA,EAAME,MAAM3gD,IAAI,SAAC4gD,EAAyB5T,GAA1B,OACZriC,GAAAC,EAAAC,cAACuqH,GAAA,EAAD,CACIpqH,IAAKgiC,EACL/nC,KAAMw7C,EAAMx7C,KAAO27C,EAAS37C,KAC5BowH,MAAOz0E,EAASy0E,MAChBpqD,UAAWrqB,EAAShzB,cAclCqoD,GAAgB,CAClBq/C,wBAAyBtrG,GACzBslH,oBAAqBtrI,IAKnBuxH,yLACO,IAAA/oH,EAMMd,KAAKH,MANXiqH,EAAAhpH,EAEDipH,aAAgBx7G,EAFfu7G,EAEev7G,QAAS8zB,EAFxBynF,EAEwBznF,eAAgBE,EAFxCunF,EAEwCvnF,eAFxCgpC,EAAAzqE,EAGD0qE,UAAatvC,EAHZqvC,EAGYrvC,QAASC,EAHrBovC,EAGqBpvC,aACtBytF,EAJC9oH,EAID8oH,wBACAga,EALC9iI,EAKD8iI,oBAGE/jI,EAAQ,CACV40C,UACA7lC,UAAWL,EAAQI,iBAAiBC,UACpCC,SAAUN,EAAQI,iBAAiBE,SACnC5V,YAAaopC,EACbkS,aAAc,kBAAMq1E,MAGxB,OADiBpgF,GAAYkiC,kBAMzBzsE,GAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,GAAAC,EAAAC,cAAA,OAAKC,UAAU,sBACXH,GAAAC,EAAAC,cAAC6qH,GAAYnqH,GACbZ,GAAAC,EAAAC,cAACiyI,GAAD,CACIl1G,QAASA,EACTC,aAAcA,EACdkrC,iBAAkB,WAEd79B,GAAYgL,SACZ30C,EAAM00C,kBAIdt1C,GAAAC,EAAAC,cAACooE,GAAD,CACIt/D,MAAOP,GAAc2pI,aAAappI,MAClCqlB,YACIiV,EAAejpC,SACfoO,GAAc2pI,aAAa/jH,YAE/B5sB,MAAO,EACP0uC,KAC4B,QAAxB7M,EAAertC,MACS,MAAxBqtC,EAAertC,KAEnBqhD,aAAc,WACVrjC,OAAOo+H,QACP1N,QAIZ3kI,GAAAC,EAAAC,cAAC8qH,GAAD,OAlCGhrH,GAAAC,EAAAC,cAACysE,GAAA,EAAD,CAAUp2B,GAAI,CAAEljC,SAAU,mBAlB1BlQ,KAAMC,WA0DVwpE,gBAtES,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,YACjB0tF,aAAcrpH,EAAMkiC,iBAoEgB2nC,GAAzBsB,CAAwCg+C,ICjGjDt/C,GAAgB,CAClBq/C,wBAAyBtrG,GACzBgiG,sBAAuBnsF,GAAc8B,SAWnC4zF,eACF,SAAAA,EAAYhqH,GAAe,IAAAC,EAAA,OAAA1K,OAAA2K,GAAA,EAAA3K,CAAA4K,KAAA6pH,IACvB/pH,EAAA1K,OAAA6K,GAAA,EAAA7K,CAAA4K,KAAA5K,OAAA8K,GAAA,EAAA9K,CAAAy0H,GAAA1pH,KAAAH,KAAMH,KACDa,MAAQ,CACTg0C,SAAS,GAHU50C,qFAMP,IACRy2B,EAAWv2B,KAAKH,MAAM2rE,UAAtBj1C,OADQz1B,EAE4Cd,KAAKH,MAApC0xI,EAFbzwI,EAER0wI,oBAA0BlxB,EAFlBx/G,EAEkBw/G,sBAE9B/pF,QAAgCj2B,IAAtBixI,EAAI3+H,IAAI,WAClB0tG,IACAtgH,KAAKY,SAAS,CAAE8zC,SAAS,KAClBne,QAAgCj2B,IAAtBixI,EAAI3+H,IAAI,UACzB5S,KAAKY,SAAS,CAAE8zC,SAAS,IAEzB10C,KAAKY,SAAS,CAAE8zC,SAAS,wDAMdp0C,IADIN,KAAKH,MAAM2rE,UAAtBj1C,QAEJv2B,KAAKY,SAAS,CAAE8zC,SAAS,qCAIxB,IACwB68F,EAAQvxI,KAAKH,MAAlC2xI,oBACA98F,EAAY10C,KAAKU,MAAjBg0C,QACF+8F,EAAcF,EAAI1gI,IAAI,aAAe0gI,EAAI3+H,IAAI,UAEnD,OACI3T,GAAAC,EAAAC,cAACuqH,GAAA,EAAD,CACInwH,KAAK,IACLgmE,UAAW7qB,IAAY+8F,EAAcC,GAAYC,YApC9CvvI,KAAMC,WA0CVwpE,gBA3DS,SAACnrE,GAAD,MAAuB,CAC3C8qE,UAAW9qE,EAAM27B,cA0DmBkuC,GAAzBsB,CAAwCg+C,IClCnD+nB,IAAkB,EAClBJ,GAAsB,IAAIn/H,IAoD9Bw/H,KAAStwH,OACLtiB,GAAAC,EAAAC,cAAC2yI,GAAA,EAAD,CAAU9oG,MAAOA,IACb/pC,GAAAC,EAAAC,cAAC4yI,GAAA,EAAD,KACI9yI,GAAAC,EAAAC,cAACoqH,GAAA,EAAD,KACItqH,GAAAC,EAAAC,cAACuqH,GAAA,EAAD,CAAOC,OAAK,EAACpwH,KAAK,SAASgmE,UAAWoJ,KACtC1pE,GAAAC,EAAAC,cAACuqH,GAAA,EAAD,CACIC,OAAK,EACLpwH,KAAK,kBACLgmE,UAAWuM,KAEf7sE,GAAAC,EAAAC,cAlDmC,SAAAjB,GAG7C,IAFSmE,EAETnE,EAFFqhE,UACGyyE,EACD58I,OAAAu4B,EAAA,EAAAv4B,CAAA8I,EAAA,eACIutE,EAAWjiC,GAAYkiC,kBAC7B,OACIzsE,GAAAC,EAAAC,cAACuqH,GAAA,EAADt0H,OAAAgzB,OAAA,GACQ4pH,EADR,CAEIzwH,OAAQ,SAAA1hB,GAcJ,OAbI+xI,KACAA,IAAkB,EAClBJ,GAAsBx/H,GAClBnS,EAAMoS,SACNiB,OAAOjB,SAASC,KAChBgB,OAAOjB,SAASE,YAInBs5D,GAAY+lE,GAAoB3gI,IAAI,YACrC2gI,GAAsB,IAAIn/H,KAGvBo5D,EACHxsE,GAAAC,EAAAC,cAACkD,EAADjN,OAAAgzB,OAAA,GACQvoB,EADR,CAEI2xI,oBAAqBA,MAGzBvyI,GAAAC,EAAAC,cAACysE,GAAA,EAAD,CACIp2B,GAAI,CACAljC,SAAU,SACV5R,MAAO,CAAE8K,KAAM3L,EAAMoS,kBAmBjC,CAAc1Y,KAAK,IAAIgmE,UAAW0yE,QAI9ClyF,SAASC,eAAe,SAG5B73C,QAAQH,IAAI,aAAc8+B,MpRgCpB,kBAAmBorG,WACrBA,UAAUC,cAAcC,MAAMx9I,KAAK,SAAAy9I,GACjCA,EAAaC","file":"static/js/main.e46ee704.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/ic-logo-wekiwi.b6bd8e11.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-wekiwi-popup-orange.5a995c92.png\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-ExtraBold.19ba7aa5.ttf\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ic-email.e7c796e6.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-phone.a2d20162.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ic-logo-sidebar.dbf359c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-logo-login.2d6f9f77.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-off.12e4e0ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-on.634b8b52.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-green.8121e048.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-gas-off.6f87deaa.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-gas-on.f94bf669.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-logout-sidebar.b15a1177.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-wekiwi-popup.89869ab8.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ic-avatar.00dd7701.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-linkedin.0495632f.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-instagram.9c8e481b.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-facebook.601d1384.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-youtube.893bee49.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-twitter.2fbbf272.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-certification.b5c45a59.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu.83ae48b9.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu-h.1181d8d6.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-triangle.90a41417.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-cross.f3230201.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-check-validate.84e7c4ec.svg\";","module.exports = __webpack_public_path__ + \"static/media/filter-symbol.1386b01c.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEkAAAAgCAYAAABeiFVOAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALNSURBVHgB3ZrLccIwEIaFUwAdQAUcuUEFUAFUABXALTeoACqAIyeoADqgAqgAjpwSPmV2hnj80MqWeXwzTDxBsaVfq91fcmqXy+XH3Dmfz2a5XJrdbmevW62WGQwGZjQamU/ner3asa/Xazv2RqNhOp2OmUwm9rqGSHzR7XZt4ziItVqtbONPhLH3+337Mw5j3m63fyIh0PF4TL2RNP40obIEEoio2ul0+mk2myaPTxPqcDiY4XCYuHriRC6NQJZkVsS9C+QeIsh17BGR4Rod3BShSHLvynw+N+Px2Lk9yy3iYrFYGA3T6dQ+7N2gz5p+1+t1q40VCbX2+739ZagHPhuiR9PfxxxcE58ELtk+Dj5qNpuZV4UUQYImUbsSL1JR1pcukJ80SbBKZNI1AuEL4xpE8UYiFI1doRMkdE0EhkYE0lRj0k5SkERJjUWoXq9ntJ16BaEQRtsXtmCMOSkvR2l/RGO2I5q9m8/slQ1RrRWIPVpWhY9MDiRlbuKKCMVGuWq0JhEYW974vu4Nvk0OrFVwTYC3281sNhsbje1221QB5R3/poHocVkp/yxAHsyUxq2Cy0wVxcckaoqTSiSQpFh2SPvCpDF5rvjYHLVI4FPJqB7a7U8WZZhEV7xEAh+hxKhptj+v8Ozc6paGj+lkqRY1nb5RXGRyvEUCEYpOuFLEdPqYRKoXy7xI9BYSCeQ4wcdLaUwnvsvHJJax+S4skqCtYHLS6XKAR3l3PWoVtCY4C+/EnQaD1po6li3LgvwmlQcRqVzcTyMOkY1AmhSQR+kiAUsD/1L18YnWJLpS2nJ7hNODqt+s8CxOV8sWCIKIBEmHV6EI/bormEhQxbs6JoMICvmMoCKBLIMyE6lAste+wPAhSOJOg40o5bzo6SXC483kCCc0lYok+IqFKERkiKjM4ikiCThuvBAfBOMjtoElxAdhyDtUzGf9H8Ivn3f+V+7Kre8AAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/arrow-subscription.1c72a81b.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu-orange.bfc33742.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-menu-orange-creu.cd88b5c6.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-arrow-back.f722c6cc.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-arrow-next.1442ff55.svg\";","module.exports = __webpack_public_path__ + \"static/media/ic-image-background-accueil.d24fc0df.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACcAAAAnCAYAAACMo1E1AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPRSURBVHgBzZhNbFRVFMf/574ZhrEWijauNE6/rIqfMSz8SLCtwKILtizcmFQSW42EqInoig0GMS0qExurCze6YaEBNkKxJrpRIyQUaJgyQwKs+GyZtjN99x7OfWWgLS2dmfumnd9mzrsfL/859757zzmEMuDJhiehVRuYXoMH+VX1gL8WINsLo2lceUhpjWHt6yMwOBGrz5xFiVApgznb0gk2O0H0ujzFip5IbFhjMO/zN6vXpX8reloxg3g8sRHKGxCzGY74mkeyY9Rd9/jo4FJjHyiOryfqEFuVBPQ2Wa2SvLwUxnD/5Qv5XU88d/EaShXH4y3PQJkjYiZQMTg9ls1vXvvYxdRCvQuK4xutDYj6/4j5KCoOZ8QJbRTPZOb3qPuGTjU1i7DB5RFmoYTx1X+5K7JS83tmPzA/+wgmpv6V5gYsO+LBvHmZ1mVuFFrmem4it2dlhFkoMUUqOaelYPDkUx1yeh7FSmPMRqpN/2nNWZ7zv0U14KmBghmI47HEVhh6GtUAo4WzjZ3WnPGcp95HNUG0M/i5c9gOA+XfAHt7NWpqgJ7tHsLAMHLKM60RMV90EWY5ddpgcIgxPQ3s6HEXqAgxPUXtSnzXCUd++j6KjjcJ+/ZrfJ3UCAOK0Kuy52g9QuC7/VFseUthb5/Gvj53gUqhTTyHJoRAPA78kIxgS4dCn3iv74CbQGbUE2ebDBBeOJTLAd07fPx+3ODwwSieX1/2q40KU5glJvHxhz1KDnrg9FmGA8qKc3rDfGQ50P+jCezWFqf/zVbcTYSEFbbnKx+/HjJ4r0vhpRfKF8cG4xFZ1Cviuzo4YoV9vMvHLwcN3t6m8NknEbhAhFElwo7DkcBjX84Is7fEF7vdhFm04WEr7m848vluH8kBg+3vKHz6UThXmEfmsIJnrOdycECSZ3S/G54wQb6o6Mlgx/JE4zHJ3ttRPRylmtFNMyGT7/WiitB5CgLfe2H6RNM52X/OGb0zzCP08Pkg8L0XpmvqQnXQUzDuiqPa1JD48WesJAr94rVjhce5eautjazy/kdFSxCLQJyGn9tAay5dLTTNyVuDhNaQDT6vYjkhW5KgzbOFBc0LjeVJqZWwlCR4OTzI1/CQeYWoiFqJheIjaenZJBdcGpUVlkHEe2MhYVhMnIVWj6YQj2ywmxSVwH58tjYSO3dm8SFFwLcaO2RPHJBlboU7KSl7dFFtZmipgaXVhMeat8rm/UC82V7i3JyM/gs+99Ka84eKnVRWNBgk4jbftWklBdmbTZJqUSinkwSwLF+8kXDMiprWf8hJkEGJ3AYaH188d/MWhgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/logo.891955d6.png\";","module.exports = __webpack_public_path__ + \"static/media/ok.b2b67f1b.png\";","module.exports = __webpack_public_path__ + \"static/media/error.1cf1f272.png\";","module.exports = __webpack_public_path__ + \"static/media/waiting.442ea3fa.png\";","module.exports = __webpack_public_path__ + \"static/media/abandonned.80d4d51f.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-elec-counters.5b8de3ed.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-gas-counters.f6c95cb0.png\";","module.exports = __webpack_public_path__ + \"static/media/ic-copy-clipboard.0681c160.svg\";","module.exports = __webpack_public_path__ + \"static/media/loader.0408da18.svg\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Black.27e3649b.ttf\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Web.2a3b4345.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAABz0lEQVRoQ+2YO04DMRCGPyNaJDqOwAmoKLgJd4CWPi3cgYsgCipOwBFoEIgOkUVDdpGzOOvH2OtV5K2i7Mzv/zG2oxj25DF7ooMmZGlJtkRaIoUcaKNVyNhk2JZIsnWFGlsiCmM7qzebkdmAAoX9ipBFLTVZOGQBCRQhZcK/M2AsIfLxIALDWTq3kEGMi4yKi6pZ4aK9T2yYZD7JjQoRQ+t6NGLD90mckpoyiBggNsmMdn//TdQytYX8HQAO8lHcooqjLIorVu+ZpQj5d5pZ0xbE0Ve0y6mx31K3Wdtg6OSakOti8hnfJ1PFPqzJPx+E1NYVHDctfXUOjA3UpJipl7vTMAa6qbCCEgnyxfJBbv+di/oiCx2tIFKKokPgWzV7isVjWy+AB0fTEfDpA/Ml4uvP9V7Ifjgux2PgPWSRJQgRsm892eFnvmyyc+ApRIT3JAgFUdTJ7H85+s+A5xjcmonI2msH2WvgNkZE7URcJ+INsIoVUVOIS8Q9cJkiopYQl4hHQI7f5GfuPeIS8QKcJivoG2sLeQVOtCJqj9YVcJdDRC0hubhv4cw9WkVEtESK2aoAbqOlMK9Ia0ukiK0K0JaIwrwirS2RIrYqQPcmkR+qoT8zYuylSQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Thin.43dd5b7a.ttf\";","module.exports = __webpack_public_path__ + \"static/media/Montserrat-Light.409c7f79.ttf\";","var map = {\n\t\"./Explanations_Offer_Capacity.pdf\": [\n\t\t939,\n\t\t3\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 922;\nmodule.exports = webpackAsyncContext;","export enum EEnergy {\n EL = 'EL',\n NG = 'NG',\n}\n\nexport enum ECustomerType {\n INDIVIDUAL = 'INDIVIDUAL',\n PROFESSIONAL = 'PROFESSIONAL',\n}\n\nexport enum ECustomerStatus {\n PROSPECT = 'PROSPECT',\n CUSTOMER = 'CUSTOMER',\n}\n\nexport enum ECustomerCategoryCode {\n CUSTOMERB2B = 'customerB2B',\n CUSTOMERB2C = 'customerB2C',\n}\n\nexport enum EBillingMode {\n PAYMENT_SCHEDULE = 'PAYMENT_SCHEDULE',\n CYCLICAL_BILLING = 'CYCLICAL_BILLING',\n}\n\nexport enum EProfile {\n RES1 = 'RES1',\n RES11 = 'RES11',\n RES2 = 'RES2',\n P011 = 'P011',\n P012 = 'P012',\n PRO1 = 'PRO1',\n PRO2 = 'PRO2',\n RES3 = 'RES3',\n RES4 = 'RES4',\n RES5 = 'RES5',\n}\n\nexport enum ECivility {\n MR = 'MR',\n MS = 'MS',\n MRS = 'MRS',\n}\n\nexport enum EAppointmentTimeslot {\n MORNING = 'MORNING',\n AFTERNOON = 'AFTERNOON',\n DAY = 'DAY',\n NONE = 'NONE',\n}\n\nexport enum EProcessTypes {\n MOVE_IN = 'MOVE_IN',\n SWITCH = 'SWITCH',\n}\n\nexport enum EFrequency {\n BIMONTHLY = 'BIMONTHLY',\n QUARTERLY = 'QUARTERLY',\n FOURMONTHLY = 'FOURMONTHLY',\n BIANNUAL = 'BIANNUAL',\n}\n\nexport enum EReadingFrequency {\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n BIANNUAL = 'BIANNUAL',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum ETimeframe {\n TOTAL_HOUR = 'TOTAL_HOUR',\n LOW = 'LOW',\n HIGH = 'HIGH',\n WINTER = 'WINTER',\n SUMMER = 'SUMMER',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum ERateOption {\n TOTAL_HOUR = 'TOTAL_HOUR',\n HIGH_LOW = 'HIGH_LOW',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum EIntermediate {\n SLIMPAY = 'slimpay',\n BANK = 'bank',\n BALANCE = 'balance',\n}\n\nexport enum ETransactionStatus {\n INITIALIZED = 'initialized',\n TRANSMITTED = 'transmitted',\n TRANSFER_FAILURE = 'transferFailure',\n TRANSACTION_FAILURE = 'transactionFailure',\n DETECTED_ANOMALY = 'detectedAnomaly',\n SUCCESS = 'success',\n CANCELLED = 'cancelled',\n DISPUTED = 'disputed',\n}\n\nexport enum EEffectiveStartRange {\n NOW = 'NOW',\n LATER = 'LATER',\n}\n\nexport enum EtypePayment {\n SDD = 'SDD',\n OTHER = 'OTHER',\n}\n\nexport enum EInvoiceRoutingMode {\n EMAIL = 'EMAIL',\n MAIL = 'MAIL',\n BOTH = 'BOTH',\n}\n\nexport enum EPaymentMode {\n CHECK = 'CHECK',\n DIRECT_DEBIT = 'DIRECT_DEBIT',\n BANK_TRANSFER = 'BANK_TRANSFER',\n}\n\nexport enum EPaymentModeKey {\n DIRECT_DEBIT = 'directDebit',\n CHECK = 'check',\n BANK_TRANSFER = 'bankTransfer',\n BANK_CARD = 'bankCard',\n CASH = 'cash',\n}\n\nexport enum EModeUpdateBilling {\n BILLING_ADDRESS = 'BILLING_ADDRESS',\n IBAN = 'IBAN',\n DEBIT_DAY = 'DEBIT_DAY',\n ROUTING_MODE = 'ROUTING_MODE',\n}\n\nexport enum EModeManageOffer {\n INSTALLMENT_FREQUENCY = 'INSTALLEMENT_FREQUENCY',\n PRODUCT = 'PRODUCT',\n PACKAGE = 'PACKAGE',\n OPTIONS = 'OPTIONS',\n}\n\nexport enum EAmountCategory {\n TOTAL_AMOUNT = 'TOTAL_AMOUNT',\n ADDITIONAL_RATE = 'ADDITIONAL_RATE',\n TOTAL_BUDGET = 'TOTAL_BUDGET',\n ECONOMY = 'ECONOMY',\n}\n\nexport enum EAmountType {\n FEE = 'FEE',\n OPTION = 'OPTION',\n DISCOUNT = 'DISCOUNT',\n}\n\nexport enum CreatePasswordMode {\n RESET = 'RESET',\n VALIDATION = 'VALIDATION',\n}\n\nexport enum EContractStatus {\n WAITING = 'waiting',\n RECOVERY = 'recovery',\n INITIALIZED = 'initialized',\n CANCELLED = 'canceled',\n ABONDONED = 'abandonned',\n REJECTED = 'rejected',\n SENT_TO_MARKET = 'sent_to_market',\n EFFECTIVE = 'effective',\n TERMINATED = 'terminated',\n VALIDATION_REJECTED = 'terminated',\n WAITING_FOURTEEN_DAY = 'waiting-14d',\n ACCEPTED = 'accepted',\n PAYMENT_FAILURE = 'paymentFailure',\n}\n\nexport enum EConsumptionStatus {\n ACTUAL = 'ACTUAL',\n RECTIFIED = 'RECTIFIED',\n}\n\nexport enum EMeterReadFrequency {\n HALF_YEAR = 'HALF_YEAR',\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n}\n\nexport enum EPieceType {\n INVOICE = 'in',\n PREPAYMENT = 'pp',\n ADHOC = 'adhocPieces',\n}\n/**\n * List of all enums for kiwi pay api\n */\n\nexport enum EPAYPaymentMode {\n CHECK = 'check',\n DIRECT_DEBIT = 'directDebit',\n BANK_TRANSFER = 'bankTransfer',\n BANK_CARD = 'bankCard',\n CASH = 'cash',\n}\n\nexport enum EPAYTransactionStatus {\n INITIALIZED = 'initialized',\n TRANSMITTED = 'transmitted',\n TRANSFER_FAILURE = 'transferFailure',\n TRANSACTION_FAILURE = 'transactionFailure',\n DETECTED_ANOMALY = 'detectedAnomaly',\n SUCCESS = 'success',\n CANCELLED = 'cancelled',\n DISPUTED = 'disputed',\n}\n\nexport enum EPAYInvoiceStatus {\n NOT_SETTLED = 'notSettled',\n SETTLED = 'settled',\n CANCELLED = 'cancelled',\n RECOVERY_ONE = 'recovery1',\n RECOVERY_TWO = 'recovery2',\n LATE_PAYMENT = 'latePayment',\n}\n\nexport enum EPAYPrepaymentStatus {\n NOT_SETTLED = 'notSettled',\n SETTLED = 'settled',\n DROPPED = 'dropped',\n INCIDENT = 'incident',\n}\n\nexport enum EPAYContractStatus {\n WAITING_FOURTEEN_DAY = 'waiting-14d',\n RECOVERY = 'recovery',\n INITIALIZED = 'initialized',\n WAITING = 'waiting',\n CANCELLED = 'cancelled',\n ABONDONED = 'abandoned',\n VALIDATION_REJECTED = 'validationReject',\n REJECTED = 'rejected',\n SEND_TO_MARKET = 'sendToMkt',\n ACCEPTED = 'accepted',\n EFFECTIVE = 'effective',\n TERMINATED = 'terminated',\n}\n\nexport enum EPAYProcessStatus {\n PROCESSING = 'processing',\n DROPPED = 'dropped',\n TERMINATED = 'terminated',\n}\n\nexport enum EPAYProcessNature {\n IN = 'IN',\n PP = 'PP',\n ENERGY_CHECK = 'ENERCGYCHECK',\n REFUNDABLE_OVERCHARGE = 'REFUNDABLEOVERCHARGE',\n NONREFUNDABLE_OVERCHARGE = 'NONREFUNDABLEOVERCHARGE',\n RECOVERY = 'RECOVRY',\n}\n\nexport enum EPAYAccountingType {\n DEBIT = 'debit',\n CREDIT = 'credit',\n BALANCE = 'balance',\n}\n\nexport enum EPAYIntermediate {\n SLIMPAY = 'slimpay',\n BANK = 'bank',\n}\n\nexport enum EErrorsType {\n CUSTOMER_CONTRACT = 'CUSTOMER_CONTRACT',\n}\n\nexport enum EResponseCode {\n SUCCESS = '200',\n}\n\nexport enum EMode {\n DELETE = 'delete',\n ENABLE = 'enable',\n DISABLE = 'disable',\n}\n\nexport enum EGroups {\n FULL = 'FULL',\n LIMITED = 'LIMITED',\n}\n\nexport enum EActionMode {\n READ_ONLY = 'READ_ONLY',\n FULL = 'FULL',\n}\n\nexport enum EMenuLabels {\n ADMINISTRATION = 'Administration des utilisateurs',\n CASE = 'Affaires',\n CLIENT_CONTRACT = 'Client/contrat',\n}\n\nexport enum ESubMenuAdministrationLabel {\n CREATE_USER = 'Créer un utilisateur',\n CREATE_GROUP = 'Créer un groupe',\n MANAGE_USERS = 'Gérer les utilisateurs',\n}\n\nexport enum ESubMenuCaseLabel {\n CREATE_CASE = 'Créer une affaire',\n SEARCH_CASE = 'Rechercher une affaire',\n}\n\nexport enum EConsumptionContext {\n PERIODIC_METERING = 'PERIODIC_METERING',\n}\n\nexport enum EFileName {\n CONTRACT = 'CONTRACT',\n SEPA_MANDATE = 'SEPA_MANDATE',\n CONTRACT_AMENDMENT = 'CONTRACT_AMENDMENT',\n EL = 'EL',\n NG = 'NG',\n EXPLANATIONS_OFFER_CAPACITY = 'EXPLANATIONS_OFFER_CAPACITY',\n}\n\nexport enum ENature {\n INVOICE = 'in',\n PREPAYMENT = 'pp',\n BALANCE = 'balance',\n RECOVERY = 'recovery',\n ENERGY_CHEQUE = 'energyCheck',\n ACTIVATION = 'contractActivation',\n SECURITY_DEPOSIT = 'securityDeposit',\n EXTERNAL_RECOVERY_INVOICE = 'externalRecoveryOnIn',\n EXTERNAL_RECOVERY_PREPAYMENT = 'externalRecoveryOnPP',\n}\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TEvent, TResponse } from 'Models';\n\nimport {\n FETCH_EVENT_REQUEST,\n FETCH_EVENT_SUCCESS,\n FETCH_EVENT_FAILURE,\n CREATE_EVENT_FAILURE,\n CREATE_EVENT_REQUEST,\n CREATE_EVENT_SUCCESS,\n CREATE_EVENT_RESET,\n} from './actionTypes';\n\ninterface IPayload {\n customerNbr: string;\n contractNbr: string;\n}\n\nexport interface ICreateEventPayload {\n customerNbr: string;\n contractNbr: string;\n date: string;\n category: string;\n subCategory: string;\n message: string;\n}\n\nexport interface ICreateEventResponse {\n eventNbr: string;\n code: string;\n message: string;\n}\n\nconst resetUpdate = createStandardAction(CREATE_EVENT_RESET)();\n\nconst createEventAsync = createAsyncAction(\n CREATE_EVENT_REQUEST,\n CREATE_EVENT_SUCCESS,\n CREATE_EVENT_FAILURE,\n)();\n\nconst fetchEventAsync = createAsyncAction(\n FETCH_EVENT_REQUEST,\n FETCH_EVENT_SUCCESS,\n FETCH_EVENT_FAILURE,\n)();\n\nexport type EventAction =\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayload = ({\n contractNbr,\n customerNbr,\n}: {\n contractNbr: string;\n customerNbr: string;\n}) => {\n return {\n contractNbr,\n customerNbr,\n };\n};\n\nconst prepareCreateEventPayload = ({\n customerNbr,\n contractNbr,\n date,\n category,\n subCategory,\n message,\n}: ICreateEventPayload) => {\n return {\n customerNbr,\n contractNbr,\n date,\n category,\n subCategory,\n message,\n };\n};\n\nconst mapGetEvents = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayload(action.payload);\n return apiRequest({\n path: '/getEvent',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TEvent[] & { errorMessage: string }) => {\n if (response) {\n // Check timeout always\n if (response.errorMessage) {\n return throwError({\n code: '200',\n message: response.errorMessage,\n });\n }\n return of(fetchEventAsync.success(response));\n }\n return throwError({ code: '200', message: response });\n }),\n catchError(error => of(fetchEventAsync.failure(error))),\n );\n};\n\nconst fetchEventEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchEventAsync.request)),\n mergeMap(action => mapGetEvents(action, dependency)),\n );\n\nconst mapCreateEvent = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareCreateEventPayload(action.payload);\n return apiRequest({\n path: '/createEvent',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap(\n (response: ICreateEventResponse & { errorMessage: string }) => {\n if (response) {\n // Check timeout always\n if (response.errorMessage) {\n return throwError({\n code: '200',\n message: response.errorMessage,\n });\n }\n const prepareToStore = {\n eventNbr: response.eventNbr,\n eventCategory: payload.category,\n eventSubcategory: payload.subCategory,\n referenceDate: payload.date,\n eventStatusCode: 'NEW',\n message: payload.message,\n };\n return of(createEventAsync.success(prepareToStore));\n }\n return throwError({ code: '200', message: response });\n },\n ),\n catchError(error => of(fetchEventAsync.failure(error))),\n );\n};\n\nconst createEventEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createEventAsync.request)),\n mergeMap(action => mapCreateEvent(action, dependency)),\n );\n\nexport {\n fetchEventAsync,\n fetchEventEpic,\n mapGetEvents,\n createEventAsync,\n createEventEpic,\n resetUpdate,\n mapCreateEvent,\n};\n","export const FETCH_LOGIN_REQUEST = 'FETCH_LOGIN_REQUEST';\nexport const FETCH_LOGIN_SUCCESS = 'FETCH_LOGIN_SUCCESS';\nexport const FETCH_LOGIN_FAILURE = 'FETCH_LOGIN_FAILURE';\nexport const REDUX_RESET_STATE = 'REDUX_RESET_STATE';\nexport const REMOVE_ERROR = 'REMOVE_ERROR';\nexport const REMOVE_REINIT_SUBSCRIPTION_MESSAGE =\n 'REMOVE_REINIT_SUBSCRIPTION_MESSAGE';\n\nexport const REINIT_SUBSCRIPTION_EMAIL_REQUEST =\n 'REINIT_SUBSCRIPTION_EMAIL_REQUEST';\nexport const REINIT_SUBSCRIPTION_EMAIL_SUCCESS =\n 'REINIT_SUBSCRIPTION_EMAIL_SUCCESS';\nexport const REINIT_SUBSCRIPTION_EMAIL_FAILURE =\n 'REINIT_SUBSCRIPTION_EMAIL_FAILURE';\n\nexport const RESET_PASSWORD_REQUEST = 'RESET_PASSWORD_REQUEST';\nexport const RESET_PASSWORD_SUCCESS = 'RESET_PASSWORD_SUCCESS';\nexport const RESET_PASSWORD_FAILURE = 'RESET_PASSWORD_FAILURE';\n\nexport const UPDATE_PASSWORD_REQUEST = 'UPDATE_PASSWORD_REQUEST';\nexport const UPDATE_PASSWORD_SUCCESS = 'UPDATE_PASSWORD_SUCCESS';\nexport const UPDATE_PASSWORD_FAILURE = 'UPDATE_PASSWORD_FAILURE';\n\nexport const FETCH_CONTEXT_REQUEST = 'FETCH_CONTEXT_REQUEST';\nexport const FETCH_CONTEXT_SUCCESS = 'FETCH_CONTEXT_SUCCESS';\nexport const FETCH_CONTEXT_FAILURE = 'FETCH_CONTEXT_FAILURE';\n\nexport const FETCH_CONTRACT_REQUEST = 'FETCH_CONTRACT_REQUEST';\nexport const FETCH_CONTRACT_SUCCESS = 'FETCH_CONTRACT_SUCCESS';\nexport const FETCH_CONTRACT_FAILURE = 'FETCH_CONTRACT_FAILURE';\nexport const RESET_CONTRACT_STATE = 'RESET_CONTRACT_STATE';\nexport const SET_CONTRACT = 'SET_CONTRACT';\n\nexport const FETCH_EVENT_REQUEST = 'FETCH_EVENT_REQUEST';\nexport const FETCH_EVENT_SUCCESS = 'FETCH_EVENT_SUCCESS';\nexport const FETCH_EVENT_FAILURE = 'FETCH_EVENT_FAILURE';\n\nexport const CREATE_EVENT_REQUEST = 'CREATE_EVENT_REQUEST';\nexport const CREATE_EVENT_SUCCESS = 'CREATE_EVENT_SUCCESS';\nexport const CREATE_EVENT_FAILURE = 'CREATE_EVENT_FAILURE';\nexport const CREATE_EVENT_RESET = 'CREATE_EVENT_RESET';\n\nexport const UPDATE_CUSTOMER_REQUEST = 'UPDATE_CUSTOMER_REQUEST';\nexport const UPDATE_CUSTOMER_SUCCESS = 'UPDATE_CUSTOMER_SUCCESS';\nexport const UPDATE_CUSTOMER_FAILURE = 'UPDATE_CUSTOMER_FAILURE';\nexport const UPDATE_CUSTOMER_RESET = 'UPDATE_CUSTOMER_RESET';\n\nexport const UPDATE_BILLING_REQUEST = 'UPDATE_BILLING_REQUEST';\nexport const UPDATE_BILLING_SUCCESS = 'UPDATE_BILLING_SUCCESS';\nexport const UPDATE_BILLING_FAILURE = 'UPDATE_BILLING_FAILURE';\n\nexport const FETCH_METER_CONFIG_REQUEST = 'FETCH_METER_CONFIG_REQUEST';\nexport const FETCH_METER_CONFIG_SUCCESS = 'FETCH_METER_CONFIG_SUCCESS';\nexport const FETCH_METER_CONFIG_FAILURE = 'FETCH_METER_CONFIG_FAILURE';\nexport const FETCH_METER_READING_REQUEST = 'FETCH_METER_READING_REQUEST';\nexport const FETCH_METER_READING_SUCCESS = 'FETCH_METER_READING_SUCCESS';\nexport const FETCH_METER_READING_FAILURE = 'FETCH_METER_READING_FAILURE';\n\nexport const CREATE_INDEX_REQUEST = 'CREATE_INDEX_REQUEST';\nexport const CREATE_INDEX_SUCCESS = 'CREATE_INDEX_SUCCESS';\nexport const CREATE_INDEX_FAILURE = 'CREATE_INDEX_FAILURE';\nexport const CREATE_INDEX_RESET = 'CREATE_INDEX_RESET';\n\nexport const CREATE_SPONSOR_REQUEST = 'CREATE_SPONSOR_REQUEST';\nexport const CREATE_SPONSOR_SUCCESS = 'CREATE_SPONSOR_SUCCESS';\nexport const CREATE_SPONSOR_FAILURE = 'CREATE_SPONSOR_FAILURE';\n\nexport const FETCH_LIST_FILES_REQUEST = 'FETCH_LIST_FILES_REQUEST';\nexport const FETCH_LIST_FILES_SUCCESS = 'FETCH_LIST_FILES_SUCCESS';\nexport const FETCH_LIST_FILES_FAILURE = 'FETCH_LIST_FILES_FAILURE';\n\nexport const FETCH_PIECES_REQUEST = 'FETCH_PIECES_REQUEST';\nexport const FETCH_PIECES_SUCCESS = 'FETCH_PIECES_SUCCESS';\nexport const FETCH_PIECES_FAILURE = 'FETCH_PIECES_FAILURE';\nexport const FETCH_EPINVOICES_REQUEST = 'FETCH_EPINVOICES_REQUEST';\nexport const FETCH_EPINVOICES_SUCCESS = 'FETCH_EPINVOICES_SUCCESS';\n\nexport const CREATE_PAYMENT_REQUEST = 'CREATE_PAYMENT_REQUEST';\nexport const CREATE_PAYMENT_SUCCESS = 'CREATE_PAYMENT_SUCCESS';\nexport const CREATE_PAYMENT_FAILURE = 'CREATE_PAYMENT_FAILURE';\nexport const CREATE_PAYMENT_RESET = 'CREATE_PAYMENT_RESET';\n\nexport const FETCH_BALANCE_REQUEST = 'FETCH_BALANCE_REQUEST';\nexport const FETCH_BALANCE_SUCCESS = 'FETCH_BALANCE_SUCCESS';\nexport const FETCH_BALANCE_FAILURE = 'FETCH_BALANCE_FAILURE';\nexport const FETCH_PACKAGE_REQUEST = 'FETCH_PACKAGE_REQUEST';\nexport const FETCH_PACKAGE_SUCCESS = 'FETCH_PACKAGE_SUCCESS';\nexport const FETCH_PACKAGE_FAILURE = 'FETCH_PACKAGE_FAILURE';\nexport const FETCH_PRODUCT_REQUEST = 'FETCH_PRODUCT_REQUEST';\nexport const FETCH_PRODUCT_SUCCESS = 'FETCH_PRODUCT_SUCCESS';\nexport const FETCH_PRODUCT_FAILURE = 'FETCH_PRODUCT_FAILURE';\nexport const FETCH_OFFER_REQUEST = 'FETCH_OFFER_REQUEST';\nexport const FETCH_OFFER_SUCCESS = 'FETCH_OFFER_SUCCESS';\nexport const FETCH_OFFER_FAILURE = 'FETCH_OFFER_FAILURE';\nexport const UPDATE_PACKAGE_REQUEST = 'UPDATE_PACKAGE_REQUEST';\nexport const UPDATE_PACKAGE_SUCCESS = 'UPDATE_PACKAGE_SUCCESS';\nexport const UPDATE_PACKAGE_FAILURE = 'UPDATE_PACKAGE_FAILURE';\nexport const UPDATE_PACKAGE_RESET = 'UPDATE_PACKAGE_RESET';\n\nexport const FETCH_ORDER_REQUEST = 'FETCH_ORDER_REQUEST';\nexport const FETCH_ORDER_SUCCESS = 'FETCH_ORDER_SUCCESS';\nexport const FETCH_ORDER_FAILURE = 'FETCH_ORDER_FAILURE';\n\nexport const SEARCH_USER_GROUP_REQUEST = 'SEARCH_USER_GROUP_REQUEST';\nexport const SEARCH_USER_GROUP_SUCCESS = 'SEARCH_USER_GROUP_SUCCESS';\nexport const SEARCH_USER_GROUP_FAILURE = 'SEARCH_USER_GROUP_FAILURE';\nexport const RESET_USER_GROUP_RESPONSE = 'RESET_USER_GROUP_RESPONSE';\n\nexport const CREATE_GROUP_REQUEST = 'CREATE_GROUP_REQUEST';\nexport const CREATE_GROUP_SUCCESS = 'CREATE_GROUP_SUCCESS';\nexport const CREATE_GROUP_FAILURE = 'CREATE_GROUP_FAILURE';\nexport const RESET_RESPONSE = 'RESET_RESPONSE';\nexport const GET_GROUP_REQUEST = 'GET_GROUP_REQUEST';\nexport const GET_GROUP_SUCCESS = 'GET_GROUP_SUCCESS';\nexport const GET_GROUP_FAILURE = 'GET_GROUP_FAILURE';\nexport const RESET_GROUP_RESPONSE = 'RESET_GROUP_RESPONSE';\n\nexport const CREATE_USER_REQUEST = 'CREATE_USER_REQUEST';\nexport const CREATE_USER_SUCCESS = 'CREATE_USER_SUCCESS';\nexport const CREATE_USER_FAILURE = 'CREATE_USER_FAILURE';\nexport const RESET_CREATE_USER_RESPONSE = 'RESET_CREATE_USER_RESPONSE';\n\nexport const MANAGE_USER_REQUEST = 'MANAGE_USER_REQUEST';\nexport const MANAGE_USER_SUCCESS = 'MANAGE_USER_SUCCESS';\nexport const MANAGE_USER_FAILURE = 'MANAGE_USER_FAILURE';\n\nexport const FETCH_CUSTOMER_CONTRACT_REQUEST =\n 'FETCH_CUSTOMER_CONTRACT_REQUEST';\nexport const FETCH_CUSTOMER_CONTRACT_SUCCESS =\n 'FETCH_CUSTOMER_CONTRACT_SUCCESS';\nexport const FETCH_CUSTOMER_CONTRACT_FAILURE =\n 'FETCH_CUSTOMER_CONTRACT_FAILURE';\n\nexport const TRANSFER_GET_CONTRACT_REQUEST = 'TRANSFER_GET_CONTRACT_REQUEST';\nexport const TRANSFER_GET_CONTRACT_SUCCESS = 'TRANSFER_GET_CONTRACT_SUCCESS';\nexport const TRANSFER_GET_CONTRACT_FAILURE = 'TRANSFER_GET_CONTRACT_FAILURE';\nexport const REMOVE_GET_TRANSFER_CONTRACT_MESSAGE =\n 'REMOVE_GET_TRANSFER_CONTRACT_MESSAGE';\n\nexport const TRANSFER_CONTRACT_REQUEST = 'TRANSFER_CONTRACT_REQUEST';\nexport const TRANSFER_CONTRACT_SUCCESS = 'TRANSFER_CONTRACT_SUCCESS';\nexport const TRANSFER_CONTRACT_FAILURE = 'TRANSFER_CONTRACT_FAILURE';\nexport const REMOVE_TRANSFER_CONTRACT_MESSAGE =\n 'REMOVE_TRANSFER_CONTRACT_MESSAGE';\n\nexport const REFRESH_SESSION_EXPIRATION_STATUS = 'CHECK_SESSION_EXPIRATION';\n\nexport const RESET_AUTH_ERRORS = 'RESET_AUTH_ERRORS';\n\nexport const ADMIN_CLIENT_SPACE_REQUEST = 'ADMIN_CLIENT_SPACE_REQUEST';\nexport const ADMIN_CLIENT_SPACE_SUCCESS = 'ADMIN_CLIENT_SPACE_SUCCESS';\nexport const ADMIN_CLIENT_SPACE_FAILURE = 'ADMIN_CLIENT_SPACE_FAILURE';\nexport const ADMIN_CLIENT_SPACE_RESET_RESPONSE =\n 'ADMIN_CLIENT_SPACE_RESET_RESPONSE';\n\nexport const SEARCH_USER_REQUEST = 'SEARCH_USER_REQUEST';\nexport const SEARCH_USER_SUCCESS = 'SEARCH_USER_SUCCESS';\nexport const SEARCH_USER_FAILURE = 'SEARCH_USER_FAILURE';\n\nexport const CASES_EXTRACT_REQUEST = 'ADMIN_CLIENT_SPACE_REQUEST';\nexport const CASES_EXTRACT_SUCCESS = 'ADMIN_CLIENT_SPACE_SUCCESS';\nexport const CASES_EXTRACT_FAILURE = 'ADMIN_CLIENT_SPACE_FAILURE';\n\nexport const PAYMENT_CB_REQUEST = 'PAYMENT_CB_REQUEST';\nexport const PAYMENT_CB_FAILURE = 'PAYMENT_CB_FAILURE';\nexport const PAYMENT_CB_SUCCESS = 'PAYMENT_CB_SUCCESS';\nexport const RESET_PAYMENT_CB_MODAL = 'RESET_PAYMENT_CB_MODAL';\n\nexport const GET_SUPPORTING_DOCUMENTS_REQUEST =\n 'GET_SUPPORTING_DOCUMENTS_REQUEST';\nexport const GET_SUPPORTING_DOCUMENTS_FAILURE =\n 'GET_SUPPORTING_DOCUMENTS_FAILURE';\nexport const GET_SUPPORTING_DOCUMENTS_SUCCESS =\n 'GET_SUPPORTING_DOCUMENTS_SUCCESS';\n\nexport const RESET_SUPPORTING_DOCUMENT = 'RESET_SUPPORTING_DOCUMENT';\n\nexport const UPLOAD_AMENDMENTS_REQUEST = 'UPLOAD_AMENDMENTS_REQUEST';\nexport const UPLOAD_AMENDMENTS_SUCCESS = 'UPLOAD_AMENDMENTS_SUCCESS';\nexport const UPLOAD_AMENDMENTS_FAILURE = 'UPLOAD_AMENDMENTS_FAILURE';\nexport const RESET_UPLOAD_AMENDMENTS = 'RESET_UPLOAD_AMENDMENTS';\n\nexport const CREATE_PASSWORD_REQUEST = 'CREATE_PASSWORD_REQUEST';\nexport const CREATE_PASSWORD_SUCCESS = 'CREATE_PASSWORD_SUCCESS';\nexport const CREATE_PASSWORD_FAILURE = 'CREATE_PASSWORD_FAILURE';\n\nexport const RETRY_FIRST_PAYMENT_REQUEST = 'RETRY_FIRST_PAYMENT_REQUEST';\nexport const RETRY_FIRST_PAYMENT_SUCCESS = 'RETRY_FIRST_PAYMENT_SUCCESS';\nexport const RETRY_FIRST_PAYMENT_FAILURE = 'RETRY_FIRST_PAYMENT_FAILURE';\nexport const RETRY_FIRST_PAYMENT_RESET_RESPONSE = 'RETRY_FIRST_PAYMENT_RESET_RESPONSE';\n\n\n","export default {\n URL: process.env.REACT_APP_BACKEND_HOST,\n URL_SUBSCRIPTION: process.env.REACT_APP_SUBSCRIPTION_BACKEND_HOST,\n URL_GET_SIRET: 'https://api.insee.fr/api-sirene/3.11/siret',\n URL_PAY: process.env.REACT_APP_PAYMENT,\n URL_ENERGYPAID: process.env.REACT_APP_ENERGYPAID,\n SUBSCRIPTION_LINK: process.env.REACT_APP_SUBSCRIPTION_URL,\n ApiKey: process.env.REACT_APP_API_KEY,\n SouscriptionApiKey: process.env.REACT_APP_API_KEY_SOUSCRIPTION,\n HOME_PAGE_LINK: 'https://wekiwi.fr/',\n ENV: process.env.REACT_APP_ENV,\n ExpiredSessionTimeout: 3600,\n\n EnergyPaid: {\n password: process.env.REACT_APP_ENERGYPAID_KEY,\n username: process.env.REACT_APP_ENERGYPAID_USER,\n },\n\n aws: {\n region: 'eu-west-3',\n apiVersion: '2015-03-31',\n accessKeyId: process.env.REACT_APP_LAMBDA_ACCESS_KEY,\n secretAccessKey: process.env.REACT_APP_LAMBDA_SECRET_KEY,\n },\n\n EffectiveStartDate: {\n NOW: {\n EL: {\n businessDays: 0,\n calendarDays: 14,\n },\n NG: {\n businessDays: 0,\n calendarDays: 14,\n },\n },\n LATER: {\n EL: {\n businessDays: 0,\n calendarDays: 14,\n },\n NG: {\n businessDays: 0,\n calendarDays: 14,\n },\n },\n },\n DefaultSwitchDueDate: {\n NOW: {\n EL: 0,\n NG: 0,\n },\n LATER: {\n EL: 0,\n NG: 0,\n },\n },\n\n FunctionNames: {\n getPackages: process.env.REACT_APP_FUNCTION_GET_PACKAGES,\n getOffers: process.env.REACT_APP_FUNCTION_GET_OFFERS,\n signOrder: process.env.REACT_APP_FUNCTION_SIGN_ORDER,\n searchOrder: process.env.REACT_APP_FUNCTION_SEARCH_ORDER,\n casesExtract: process.env.REACT_APP_FUNCTION_CASES_EXTRACT,\n },\n\n Stripe: {\n publicKey: process.env.REACT_APP_STRIPE_PUBLIC_KEY,\n },\n\n GroupsCanSelectAllPackage: ['ADMIN', 'COMDATA'],\n\n ChannelsFixSwitchLater: [\n /^UBER-SWITCH_VENTEDOMICILE$/,\n /^PIOUI$/,\n /^PIOUI_.+/,\n /^KOMPAR-ENERGIE$/,\n /^KOMPAR-ENERGIE_.+/,\n ],\n\n ChannelsDoorToDoor: ['C2E', 'DEPANN', 'GROUPE-POWER', 'POWER-DISTRIB'],\n\n ChannelInformationDocument: ['WEB', 'WEB-ADS'],\n\n HubspotPortalId : process.env.REACT_APP_HUBSPOT_PORTAL_ID,\n HubspotFormId : process.env.REACT_APP_HUBSPOT_FORM_ID,\n\n};\n","import React from 'react';\n\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport 'react-day-picker/lib/style.css';\n\nimport moment from 'moment';\n\nimport MomentLocaleUtils, {\n parseDate,\n formatDate,\n} from 'react-day-picker/moment';\nimport 'moment/locale/fr';\n\nconst currentYear = new Date().getFullYear();\n\n// const fromMonth_ = new Date(currentYear - 70, 0);\n// const toMonth_ = new Date(currentYear - 18, 11);\n\nconst FROM_MONTH = 120;\nconst TO_MONTH = 18;\nconst DEFAULT = currentYear - 1975;\nconst fromMonth_ = new Date(currentYear - FROM_MONTH, 0);\nconst toMonth_ = new Date(currentYear - TO_MONTH, 11);\n\nexport const renderValueDate = (date: any) => {\n const pDate = new Date(date);\n return pDate.getFullYear() === currentYear - FROM_MONTH\n ? new Date(currentYear - DEFAULT, pDate.getMonth(), pDate.getDate())\n : pDate;\n};\n\nexport const YearMonthForm = ({ date, onChange }: any) => {\n moment.locale('fr');\n const months = moment.months();\n const years = [];\n for (\n let i = fromMonth_.getFullYear();\n i <= toMonth_.getFullYear();\n i += 1\n ) {\n years.push(i);\n }\n\n const handleChange_ = (e: any) => {\n const { year, month } = e.target.form;\n onChange(new Date(year.value, month.value));\n };\n\n return (\n
\n \n {months.map((month: any, i: any) => (\n \n ))}\n \n \n {years.map(year => (\n \n ))}\n \n \n );\n};\n\ntype Props = {\n value: any;\n onDateChange?: any;\n maxDate?: string;\n error?: string;\n};\n\ntype State = {\n month_: any;\n};\n\nconst modifiersStyles = {\n highlighted: {\n color: 'white',\n backgroundColor: '#ffb40a',\n },\n\n outside: { color: '#8954ba', backgroundColor: 'white' },\n};\n\nclass CustomDate extends React.Component {\n constructor(props: Props) {\n super(props);\n this.handleYearMonthChange = this.handleYearMonthChange.bind(this);\n this.state = {\n month_: this.renderStateFromMonth(),\n };\n }\n\n /**\n * Function to set month onChange\n * @param {Date} month_ The month to display in the calendar.\n */\n handleYearMonthChange(month: any) {\n this.setState({ month_: month });\n }\n\n renderStateFromMonth = () =>\n fromMonth_.getFullYear() === currentYear - 80 // 1939\n ? new Date(currentYear - DEFAULT, 1, 1)\n : fromMonth_;\n\n renderDate = (date: any, value: any) =>\n (value === '' || value === undefined) &&\n date.getFullYear() === currentYear - FROM_MONTH\n ? new Date(currentYear - DEFAULT, 0, 1)\n : date;\n\n render() {\n const { onDateChange, value, maxDate, error } = this.props;\n const { month_ } = this.state;\n\n return (\n \n {\n onDateChange(renderValueDate(dt));\n }}\n placeholder=\"JJ/MM/AAAA\"\n format=\"DD/MM/YYYY\"\n value={\n value !== '' && value !== undefined\n ? renderValueDate(value)\n : undefined\n }\n parseDate={parseDate}\n formatDate={formatDate}\n dayPickerProps={{\n locale: 'fr',\n modifiers: {\n highlighted: new Date(value),\n },\n modifiersStyles,\n month: month_,\n fromMonth: fromMonth_,\n toMonth: toMonth_,\n localeUtils: MomentLocaleUtils as any,\n disabledDays: {\n after: new Date(maxDate ? maxDate : ''),\n },\n\n captionElement: ({ date }: any) => (\n \n ),\n }}\n />\n {error && error !== '' && (\n

{error}

\n )}\n
\n );\n }\n}\n\nexport { fromMonth_, toMonth_ };\nexport default CustomDate;\n","import IconLogoSideBar from '../assets/icons/ic-logo-sidebar.svg';\nimport IconLogoLogin from '../assets/icons/ic-logo-login.svg';\nimport IconElecOff from '../assets/icons/ic-elec-off.svg';\nimport IconElecOn from '../assets/icons/ic-elec-on.svg';\nimport IconElecGreen from '../assets/icons/ic-elec-green.svg';\nimport IconGasOff from '../assets/icons/ic-gas-off.svg';\nimport IconGasOn from '../assets/icons/ic-gas-on.svg';\nimport IconLogOut from '../assets/icons/ic-logout-sidebar.svg';\nimport IconWekiwi from '../assets/icons/ic-wekiwi-popup.png';\nimport IconWekiwiOrange from '../assets/icons/ic-wekiwi-popup-orange.png';\nimport IconWekiwiNew from '../assets/icons/logo-wekiwi-new.png';\nimport IconAvatar from '../assets/icons/ic-avatar.svg';\nimport IconLinkedin from '../assets/icons/ic-linkedin.svg';\nimport IconInstagram from '../assets/icons/ic-instagram.svg';\nimport IconFacebook from '../assets/icons/ic-facebook.svg';\nimport IconYoutube from '../assets/icons/ic-youtube.svg';\nimport IconTwitter from '../assets/icons/ic-twitter.svg';\nimport IconCertification from '../assets/icons/ic-certification.svg';\nimport IcMenu from '../assets/icons/ic-menu.svg';\nimport IcMenuH from '../assets/icons/ic-menu-h.svg';\nimport IcTriangle from '../assets/icons/ic-triangle.svg';\nimport IcCross from '../assets/icons/ic-cross.svg';\nimport IcCheckValidate from '../assets/icons/ic-check-validate.svg';\nimport IcFilterSymbol from '../assets/icons/filter-symbol.svg';\nimport IcArrowDown from '../assets/icons/arrow-down.png';\nimport IcArrowSubscription from '../assets/icons/arrow-subscription.svg';\n\nimport IcMenuOrange from '../assets/icons/ic-menu-orange.svg';\nimport IcMenuOrangeCreu from '../assets/icons/ic-menu-orange-creu.svg';\n\nimport IconArrowBack from '../assets/icons/ic-arrow-back.svg';\nimport IconArrowNext from '../assets/icons/ic-arrow-next.svg';\nimport IconAccueilNewWekiwi from '../assets/icons/ic-image-background-accueil.png';\nimport IconArrowOpenMenu from '../assets/icons/icon-arrow-open-menu.png';\n\n// timline status\nimport IconTimelineLogo from '../assets/icons/timeline-status/logo.png';\nimport IconTimelineOk from '../assets/icons/timeline-status/ok.png';\nimport IconTimelineError from '../assets/icons/timeline-status/error.png';\nimport IconTimelineWaiting from '../assets/icons/timeline-status/waiting.png';\nimport IconTimelineAbandonned from '../assets/icons/timeline-status/abandonned.png';\n\nimport IconElecCounters from '../assets/icons/ic-elec-counters.png';\nimport IconGasCounters from '../assets/icons/ic-gas-counters.png';\n\nimport IconCopyClipboard from '../assets/icons/ic-copy-clipboard.svg';\nimport IconLoader from '../assets/loader.svg';\n\nexport default {\n 'ic-elec-counters': IconElecCounters,\n 'ic-gas-counters': IconGasCounters,\n 'ic-logo-sidebar': IconLogoSideBar,\n 'ic-timeline-status-ok': IconTimelineOk,\n 'ic-timeline-status-logo': IconTimelineLogo,\n 'ic-timeline-status-error': IconTimelineError,\n 'ic-timeline-status-waiting': IconTimelineWaiting,\n 'ic-timeline-status-abandonned': IconTimelineAbandonned,\n 'ic-logo-login': IconLogoLogin,\n 'ic-elec-off': IconElecOff,\n 'ic-elec-on': IconElecOn,\n 'ic-elec-green': IconElecGreen,\n 'ic-gas-on': IconGasOn,\n 'ic-gas-off': IconGasOff,\n 'ic-logout-sidebar': IconLogOut,\n 'ic-wekiwi-popup': IconWekiwi,\n 'ic-wekiwi-popup-orange': IconWekiwiOrange,\n 'ic-avatar': IconAvatar,\n 'ic-linkedin': IconLinkedin,\n 'ic-instagram': IconInstagram,\n 'ic-facebook': IconFacebook,\n 'ic-youtube': IconYoutube,\n 'ic-twitter': IconTwitter,\n 'ic-certification': IconCertification,\n 'ic-menu': IcMenu,\n 'ic-menu-h': IcMenuH,\n 'ic-menu-orange': IcMenuOrange,\n 'ic-menu-orange-creu': IcMenuOrangeCreu,\n 'ic-triangle': IcTriangle,\n 'ic-cross': IcCross,\n 'ic-check-validate': IcCheckValidate,\n 'ic-filter-symbol': IcFilterSymbol,\n 'ic-arrow-back': IconArrowBack,\n 'ic-arrow-next': IconArrowNext,\n 'ic-loader': IconLoader,\n 'ic-copy-clipboard': IconCopyClipboard,\n 'ic-wekiwi-new': IconWekiwiNew,\n 'ic-new-logo-accueil-background': IconAccueilNewWekiwi,\n 'ic-arrow-open-menu': IconArrowOpenMenu,\n 'ic-arrow-down': IcArrowDown,\n 'ic-arrow-subscribtion': IcArrowSubscription,\n};\n","import * as H from 'history';\nimport IBAN from 'iban';\nimport Papa from 'papaparse';\n\nimport {\n TAddress,\n TContract,\n TCustomer,\n TEPInvoice,\n TMeterRead,\n TPackage,\n TScheme,\n TThirdParty,\n TTransaction,\n TWordingItem,\n} from 'Models';\n\nimport {\n EActionMode,\n EBillingMode,\n ECivility,\n ECustomerType,\n EFrequency,\n EGroups,\n EInvoiceRoutingMode,\n EMeterReadFrequency,\n EPaymentMode,\n EPAYTransactionStatus,\n EPieceType,\n ERateOption,\n ETimeframe,\n} from './enums';\n\nimport uniqBy from 'lodash/uniqBy';\n\nimport Config from './config';\nimport WordingCommon from './wording.json';\nimport { fromMonth_, toMonth_ } from '../components/CustomDate/CustomDate';\nimport { SelectOption, TSchemaProps } from 'Types';\nimport map from 'lodash/map';\nimport get from 'lodash/get';\nimport resources from './resources';\nimport { isNil } from 'lodash';\nimport { parse } from 'date-fns';\n\nconst PackageWording = WordingCommon.PackagePage;\nconst CommonWording = WordingCommon.Common;\n\nconst WordingMapping = WordingCommon.mapping;\n\nconst log = (title: string, message: any) => {\n if (Config.ENV === 'PREPRODUCTION') {\n console.log(title, message);\n }\n};\n\nconst isValidString = (value?: string): boolean => {\n return value !== undefined && value !== '';\n};\n\nconst isValidEmail = (value?: string): boolean => {\n if (value === undefined) {\n return false;\n }\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return regex.test(String(value).toLowerCase());\n};\n\nconst isValidPhone = (value?: string): boolean => {\n if (value && value.length === 10) {\n const sub = value.substr(0, 2);\n if (sub === '06' || sub === '07') {\n const regex = /^((06)|(07))[0-9]{8}$/;\n return regex.test(String(value));\n }\n }\n return false;\n};\n\nconst isValidPassword = (value?: string): boolean => {\n if (value === undefined) {\n return false;\n }\n if (value.length < 6) {\n return false;\n }\n const regex = /[^\\w\\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))/;\n return regex.test(value);\n};\n\nconst isValidIban = (value?: string): boolean => {\n if (value === undefined) {\n return false;\n }\n return IBAN.isValid(value);\n};\n\nconst pad = (s: number) => {\n return s < 10 ? `0${s}` : s;\n};\n\nconst isValidName = (\n value: string = '',\n allowSpecialChars: boolean = false,\n): boolean => {\n if (value === undefined) {\n return false;\n }\n if (allowSpecialChars) {\n return new RegExp(/^[a-zA-Z\\' \\-]+/g).test(value);\n }\n return value.indexOf(' ') >= 0;\n};\n\nconst isValidBirthDate = (value: Date | null | undefined): boolean => {\n if (!value) return false;\n const today = new Date();\n const birthDate = value;\n let age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age = age - 1;\n }\n if (age >= 72) return false;\n const year = value.getFullYear();\n const isInRange =\n year <= toMonth_.getFullYear() && year >= fromMonth_.getFullYear();\n return isInRange;\n};\n\nconst isValidBirthDatePro = (value: Date | null | undefined): boolean => {\n if (!value) return false;\n const today = new Date();\n const birthDate = value;\n let age = today.getFullYear() - birthDate.getFullYear();\n const m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age = age - 1;\n }\n if (age >= 101) return false;\n const year = value.getFullYear();\n const isInRange =\n year <= toMonth_.getFullYear() && year >= fromMonth_.getFullYear();\n return isInRange;\n};\n\nconst getFormattedDate = (date?: string | Date) => {\n if (!date) {\n return '';\n }\n\n const d = new Date(date);\n return d\n ? [pad(d.getDate()), pad(d.getMonth() + 1), d.getFullYear()].join('/')\n : undefined;\n};\n\nconst getFormattedDateToBackEnd = (\n d: Date,\n reversed: boolean = false,\n separator: string = '-',\n): string => {\n let units = [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())];\n if (reversed) units = units.reverse();\n return units.join(separator);\n};\n\nconst getDateFormatted = (d: Date | undefined): string | undefined => {\n if (d !== undefined) {\n return [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join(\n '-',\n );\n }\n return undefined;\n};\n\nconst getTodayDate = (): string => {\n const d = new Date();\n return [d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join('-');\n};\n\nconst isWeekend = (date: Date): boolean => {\n return date.getDay() === 6 || date.getDay() === 0;\n};\n\nconst displayIban = (iban: string): string =>\n iban.toUpperCase().replace(/[^A-Z0-9]/g, '');\n\nconst displayNumberOnly = (value: string): string =>\n value.replace(/[^\\d ]/g, '');\n\nconst displayPhoneWithoutPrefix = (value: string): string =>\n value.replace(/[^\\d ][3]{2}/g, '0');\n\nconst getPhoneWithPrefix = (value: string) => value.replace(/^(0)/, '+33');\n\nconst findContractByNumber = (nbr: string, arr: TContract[]): TContract => {\n const object =\n arr.find((contract: TContract) => contract.contractNumber === nbr) ||\n arr[0];\n return object;\n};\n\nconst findCoholder = (contract?: TContract): TThirdParty | undefined => {\n if (contract && contract.thirdParties) {\n return contract.thirdParties.find(\n (e: TThirdParty) => e.role === 'COHOLDER',\n );\n }\n return undefined;\n};\n\nconst displayPlaceholder = (size: number): string => {\n let res = '';\n if (size > 0) {\n const list = Array.from(Array(size).keys());\n list.forEach(i => {\n res += `${i + 1}`;\n });\n }\n return res;\n};\n\nconst getYoutubeId = (link: string): string => {\n const s = link.split('v=');\n if (s.length < 1) {\n return '';\n }\n let video_id = s[1];\n const ampersandPosition = video_id.indexOf('&');\n if (ampersandPosition !== -1) {\n video_id = video_id.substring(0, ampersandPosition);\n }\n return video_id;\n};\n\nconst getTimeframeFromLabel = (label: string): string => {\n switch (label) {\n case 'Base':\n return 'TOTAL_HOUR';\n case 'Heure pleine':\n return 'HIGH';\n case 'Heure creuse':\n return 'LOW';\n default:\n return '';\n }\n};\n\nconst getLabelByValue = (\n value: string,\n arr: Array<{\n value: string;\n label: string;\n }>,\n): string => {\n const objFind = arr.find(\n (obj: { value: string; label: string }) => obj.value === value,\n ) || {\n value: '',\n label: '',\n };\n return objFind.label;\n};\n\nconst transformPriceLabel = (label: string): string => {\n if (label === PackageWording.price.totalhour.label) {\n return PackageWording.price.totalhour.text;\n }\n if (label === PackageWording.price.high.label) {\n return PackageWording.price.high.text;\n }\n if (label === PackageWording.price.low.label) {\n return PackageWording.price.low.text;\n }\n if (label === PackageWording.price.paymentFrequency.label) {\n return PackageWording.price.paymentFrequency.text;\n }\n return label;\n};\n\nconst displayFrequency = (frequency: EFrequency): string => {\n const freq = PackageWording.frequencies.find(\n f => f.value === frequency,\n ) || {\n text: '',\n };\n return freq.text;\n};\n\nconst displayRateOption = (rateOption: ERateOption): string => {\n const f = PackageWording.rateOptions.find(r => r.value === rateOption) || {\n text: '',\n };\n return f.text;\n};\n\nconst displayTimeframe = (timeframe: ETimeframe): string => {\n return CommonWording.timeframeConsumption[timeframe];\n};\n\nconst displayDateFromNumber = (d: {\n date: number;\n month: number;\n year: number;\n}): string => {\n const { date, month, year } = d;\n const dayLabel = `${date < 10 ? `0${date}` : date}`;\n const monthLabel = `${month + 1 < 10 ? `0${month + 1}` : month + 1}`;\n return `${dayLabel}/${monthLabel}/${year}`;\n};\n\nconst transformAuthorizedPackages = (packages?: TPackage[][]): number[][] => {\n if (packages === undefined) {\n return [[]];\n }\n const res = packages\n .map(p => {\n if (p && p.length === 2) {\n return p\n .sort((x: TPackage, y: TPackage) =>\n x.timeframe < y.timeframe ? -1 : 1,\n )\n .map((x: TPackage) => parseInt(x.amount, 0));\n }\n return [0, 0];\n })\n .sort((x, y) => (x[0] < y[0] ? -1 : 1));\n return res;\n};\n\nconst transformAuthorizedPackagesToPackages = (\n packages?: TPackage[][],\n): TPackage[][] => {\n if (packages === undefined) {\n return [[]];\n }\n const res = packages\n .map(p => {\n if (p && p.length === 2) {\n return p\n .sort((x: TPackage, y: TPackage) =>\n x.timeframe < y.timeframe ? -1 : 1,\n )\n .map((x: TPackage) => x);\n }\n return [p[0], p[0]];\n })\n .sort((x, y) =>\n parseInt(x[0].amount, 0) < parseInt(y[0].amount, 0) ? -1 : 1,\n );\n return res;\n};\n\nconst findPackagesByRange = (\n range: number[],\n packages?: TPackage[][],\n): TPackage[] => {\n if (packages === undefined) {\n return [];\n }\n const r = transformAuthorizedPackagesToPackages(packages);\n return (\n r.find(\n (ps: TPackage[]) =>\n Number(ps[0].amount) === range[0] &&\n Number(ps[1].amount) === range[1],\n ) || []\n );\n};\n\nconst findPackageById = (\n packageID: string,\n packages?: TPackage[],\n recommended?: boolean,\n): TPackage | undefined => {\n if (packages === undefined) {\n return undefined;\n }\n const pkg = packages.find(p => p.id === packageID);\n if (pkg === undefined && recommended) {\n return packages.find(p => p.recommended);\n }\n\n return pkg;\n};\n\nconst getLabelCivility = (civility: ECivility): string => {\n const value = civility as string;\n const res = WordingCommon.EnumItem.civilities.find(\n (c: TWordingItem) => c.value === value,\n ) || { label: '' };\n return res.label;\n};\n\nconst getLabelInvoiceRouting = (routingMode: EInvoiceRoutingMode): string => {\n const value = routingMode as string;\n const res = WordingCommon.BillPage.routingMode.values.find(\n (c: TWordingItem) => c.value === value,\n ) || { label: '' };\n return res.label;\n};\n\nconst getLabelPaymentMode = (paymentMode: EPaymentMode): string => {\n const value = paymentMode as string;\n const res = WordingCommon.EnumItem.paymentModes.find(\n (c: TWordingItem) => c.value === value,\n ) || { label: '' };\n return res.label;\n};\n\nconst comparePieces = (a: TEPInvoice, b: TEPInvoice): number => {\n const x = new Date(a.invoicing_period_end_date).getTime();\n const y = new Date(b.invoicing_period_end_date).getTime();\n if (x < y) {\n return -1;\n }\n if (x > y) return 1;\n return 0;\n};\n\nconst findNextAndLastPieces = (\n pieces?: TEPInvoice[],\n): { next: TEPInvoice | undefined; last: TEPInvoice | undefined } => {\n let next: TEPInvoice | undefined;\n let last: TEPInvoice | undefined;\n if (pieces === undefined) {\n return {\n next,\n last,\n };\n }\n const sortedPieces = pieces.sort(comparePieces);\n const currentDate = new Date().getTime();\n sortedPieces.forEach((piece: TEPInvoice) => {\n const piecesDate = new Date(piece.invoicing_period_end_date).getTime();\n if (piecesDate > currentDate && next === undefined) {\n next = piece;\n }\n if (piecesDate < currentDate) {\n last = piece;\n }\n });\n\n return {\n next,\n last,\n };\n};\n\nconst findLastValidPiece = (\n pieces?: TEPInvoice[],\n): { lastValid: TEPInvoice | undefined } => {\n let lastValid: TEPInvoice | undefined;\n\n if (pieces === undefined) {\n return {\n lastValid,\n };\n }\n const sortedPieces = pieces;\n const currentDate = new Date().getTime();\n sortedPieces.forEach((piece: TEPInvoice) => {\n const dd = parse(\n piece.invoicing_period_end_date,\n 'dd/MM/yyyy',\n new Date(),\n );\n const piecesDate = dd.getTime();\n if (\n piecesDate < currentDate &&\n // à remplacer par ('reconciled' || 'Reconciled')\n piece.status === ('reconciled' || 'Reconciled')\n // && piece.internal_invoice_nature_code === 'instalment'\n ) {\n lastValid = piece;\n }\n // if (\n // piecesDate < currentDate &&\n // piece.status === ('reconciled' || 'Reconciled')\n // && piece.internal_invoice_nature_code === 'settlement'\n // ) {\n // tmp = piece;\n // }\n });\n\n return {\n lastValid,\n };\n};\n\nconst validTransactionStatus = (status: EPAYTransactionStatus) => {\n if (\n status === EPAYTransactionStatus.SUCCESS ||\n status === EPAYTransactionStatus.INITIALIZED ||\n status === EPAYTransactionStatus.TRANSMITTED ||\n status === EPAYTransactionStatus.TRANSACTION_FAILURE ||\n status === EPAYTransactionStatus.DETECTED_ANOMALY ||\n status === EPAYTransactionStatus.DISPUTED\n ) {\n return true;\n }\n return false;\n};\n\nconst findLastValidTransaction = (\n transactions?: TTransaction[],\n): { lastValidTransaction: TTransaction | undefined } => {\n let lastValidTransaction: TTransaction | undefined;\n if (transactions === undefined) {\n return {\n lastValidTransaction,\n };\n }\n const sortedTrans = transactions.sort(compareTransaction);\n const currentDate = new Date().getTime();\n sortedTrans.forEach((transaction: TTransaction) => {\n const transactionDate = new Date(transaction.dueDate).getTime();\n if (\n transactionDate < currentDate &&\n validTransactionStatus(transaction.status)\n ) {\n lastValidTransaction = transaction;\n }\n });\n return {\n lastValidTransaction,\n };\n};\n\nconst findBillingModeCode = (cntt: any) => {\n return cntt.billingModeCode as EBillingMode;\n};\n\nconst concatUrl = (\n customer: TCustomer,\n thirdParties: TThirdParty[] | undefined,\n): string => {\n const contact = customer.contact;\n const birthdate = contact.birthdate\n ? `&birthdate=${contact.birthdate}`\n : '';\n const url = `${Config.SUBSCRIPTION_LINK}/?customerType=${customer.type}&civility=${contact.customerFullName.civility}&firstName=${contact.customerFullName.firstName}&lastName=${contact.customerFullName.lastName}&email=${contact.email}&phone=${contact.phone}${birthdate}`;\n\n if (customer.type === ECustomerType.INDIVIDUAL) {\n const coholder = thirdParties\n ? thirdParties.find(p => p.role === 'COHOLDER')\n : undefined;\n if (\n coholder &&\n coholder.civility &&\n coholder.firstName &&\n coholder.lastName\n ) {\n return `${url}&coholderCivility=${coholder.civility}&coholderFirstName=${coholder.firstName}&coholderLastName=${coholder.lastName}`;\n }\n return url;\n }\n return `${url}&companyName=${contact.companyName}&companyType=${contact.companyType}&identificationNumber=${contact.identificationNumber}&activityCode=${contact.activityCode}`;\n};\n\nconst filteredArr = (arr: any[], type: string): any[] =>\n arr.reduce((acc, current) => {\n const x = acc.find((item: any) => item[type] === current[type]);\n if (!x) {\n return acc.concat([current]);\n }\n return acc;\n }, []);\n\nconst compareTransaction = (a: TTransaction, b: TTransaction): number => {\n const x = new Date(a.dueDate).getTime();\n const y = new Date(b.dueDate).getTime();\n if (x < y) {\n return -1;\n }\n if (x > y) return 1;\n return 0;\n};\n\nconst getLatestTransaction = (\n trans?: TTransaction[],\n): TTransaction | undefined => {\n if (trans && trans.length > 0) {\n const sortedTrans = trans.sort(compareTransaction);\n return sortedTrans[sortedTrans.length - 1];\n }\n return undefined;\n};\n\ntype EnergyConsumption = {\n consumptions: number[];\n highs: number[];\n lows: number[];\n totalhours: number[];\n packages: number[];\n labels: string[];\n};\n\nconst sortMeters = (meters: TMeterRead[]) =>\n meters.sort((a: TMeterRead, b: TMeterRead) => {\n const x = new Date(a.endDate).getTime();\n const y = new Date(b.endDate).getTime();\n if (x < y) {\n return 1;\n }\n if (x > y) return -1;\n return 0;\n });\n\nconst getEnergyConsumption = (\n meters: TMeterRead[],\n ps?: TPackage[],\n): EnergyConsumption => {\n const consumptions: number[] = Array(12).fill(0);\n const highs: number[] = Array(12).fill(0);\n const lows: number[] = Array(12).fill(0);\n const totalhours: number[] = Array(12).fill(0);\n let packages: number[] = [];\n\n if (ps) {\n if (ps.length === 1) {\n packages = Array(12).fill(ps[0].quantityMonthly);\n } else {\n const summer = ps.find(p => p.timeframe === ETimeframe.SUMMER);\n const winter = ps.find(p => p.timeframe === ETimeframe.WINTER);\n const sp = summer ? summer.quantityMonthly : 0;\n const wp = winter ? winter.quantityMonthly : 0;\n packages = [wp, wp, wp, sp, sp, sp, sp, sp, sp, sp, wp, wp];\n }\n }\n\n const labels: string[] = [];\n\n let lastYear = new Date();\n if (meters.length > 0) {\n lastYear = parse(meters[0].endDate, 'yyyy-MM-dd', new Date());\n }\n\n lastYear.setFullYear(lastYear.getFullYear() - 1);\n const lastYearDate = lastYear.getTime();\n // Use for loop instead of forEach for better performance\n for (const element of meters) {\n const m = element;\n\n const start = parse(m.startDate, 'yyyy-MM-dd', new Date());\n\n if (lastYearDate < start.getTime()) {\n const end = parse(m.endDate, 'yyyy-MM-dd', new Date());\n const startMonth = start.getMonth();\n const endMonth = end.getMonth();\n\n const high = (m.meterRead &&\n m.meterRead.find(x => x.timeframe === ETimeframe.HIGH)) || {\n consumption: 0,\n };\n const low = (m.meterRead &&\n m.meterRead.find(x => x.timeframe === ETimeframe.LOW)) || {\n consumption: 0,\n };\n const totalhour = (m.meterRead &&\n m.meterRead.find(\n x => x.timeframe === ETimeframe.TOTAL_HOUR,\n )) || { consumption: 0 };\n\n if (m.readingFrequency === EMeterReadFrequency.MONTHLY) {\n consumptions[endMonth] += parseFloat(m.quantity);\n labels.push(m.endDate);\n highs[endMonth] += high.consumption;\n lows[endMonth] += low.consumption;\n totalhours[endMonth] += totalhour.consumption;\n } else if (startMonth === endMonth) {\n consumptions[startMonth] += parseFloat(m.quantity);\n labels.push(m.endDate);\n highs[startMonth] += high.consumption;\n lows[startMonth] += low.consumption;\n totalhours[startMonth] += totalhour.consumption;\n } else {\n let limit = endMonth - startMonth;\n labels.push(m.endDate);\n if (limit < 0) {\n limit += 12;\n }\n for (let j = 0; j <= limit; j += 1) {\n const startYear =\n start.getFullYear() + (startMonth + j > 11 ? 1 : 0);\n\n const sj = (startMonth + j) % 12;\n\n const s = j === 0 ? start : new Date(startYear, sj, 1);\n\n const controlYearE =\n s.getMonth() === 11 ? startYear + 1 : startYear;\n\n const e =\n j === limit\n ? end\n : new Date(controlYearE, (sj + 1) % 12, 1);\n\n const fraction = (+e - +s) / (+end - +start);\n\n consumptions[sj] += parseFloat(m.quantity) * fraction;\n\n highs[sj] += high.consumption * fraction;\n lows[sj] += low.consumption * fraction;\n totalhours[sj] += totalhour.consumption * fraction;\n }\n }\n }\n }\n const labelsDateObjects = labels.map(label =>\n parse(label, 'yyyy-MM-dd', new Date()),\n );\n labelsDateObjects.sort((a, b) => a.getTime() - b.getTime());\n\n const labelsTimestamps = labelsDateObjects.map(date => date.getTime());\n\n const minTimestamp = Math.min(...labelsTimestamps);\n\n const oldestDate = new Date(minTimestamp);\n while (labelsDateObjects.length <= 12) {\n const newDate = new Date(oldestDate);\n newDate.setMonth(newDate.getMonth() - 1);\n labelsDateObjects.unshift(newDate);\n oldestDate.setTime(newDate.getTime());\n }\n\n labelsDateObjects.sort((a, b) => a.getTime() - b.getTime());\n let sortFinalLabels = labelsDateObjects.map(date =>\n date.toLocaleDateString('fr-FR', { month: '2-digit', year: 'numeric' }),\n );\n sortFinalLabels = [...new Set(sortFinalLabels)];\n sortFinalLabels = sortFinalLabels.slice(-12);\n if (meters.length > 0) {\n const endMonth = new Date(meters[0].endDate).getMonth();\n const shift = (endMonth + 1) % 12;\n const consumptionsArray = shiftArray(\n consumptions,\n 0,\n shift,\n ) as number[];\n const highsArray = shiftArray(highs, 0, shift) as number[];\n const lowsArray = shiftArray(lows, 0, shift) as number[];\n const totalhoursArray = shiftArray(totalhours, 0, shift) as number[];\n const labelsArray = sortFinalLabels;\n const packageArray = shiftArray(packages, 0, shift) as number[];\n\n return {\n packages: packageArray,\n consumptions: consumptionsArray,\n highs: highsArray,\n lows: lowsArray,\n totalhours: totalhoursArray,\n labels: labelsArray,\n };\n }\n\n return { packages, consumptions, highs, lows, totalhours, labels };\n};\n\nconst getEnergyPercentage = (\n consumptions: number[],\n packages: number[],\n month: number,\n): number => {\n if (consumptions.length !== 12 || packages.length !== 12) {\n return 0;\n }\n const m = month === 0 ? 11 : month - 1;\n return Number(((consumptions[m] * 100) / packages[m]).toFixed(2));\n};\n\ntype StringOrNumber = number | string;\n\nconst shiftArray = (\n arr: StringOrNumber[],\n direction: number,\n n: number,\n): StringOrNumber[] => {\n const times = n > arr.length ? n % arr.length : n;\n return arr.concat(\n arr.splice(0, direction > 0 ? arr.length - times : times),\n );\n};\n\ntype DownloadData = {\n row: number;\n date: string;\n context: string;\n startDate: string;\n endDate: string;\n consumption: string;\n};\n\nconst getConsumptionDownloadData = (meters: TMeterRead[]): DownloadData[] => {\n const data: DownloadData[] = [];\n\n for (let i = 0; i < meters.length; i += 1) {\n const m = meters[i];\n\n data.push({\n row: i,\n date: getFormattedDate(m.meterReadDate) || '',\n context: m.consumptionContext,\n startDate: getFormattedDate(m.startDate) || '',\n endDate: getFormattedDate(m.endDate) || '',\n consumption: m.quantity,\n });\n }\n\n return data;\n};\n\nconst compareMeterRead = (a: TMeterRead, b: TMeterRead): number => {\n const x = new Date(a.endDate).getTime();\n const y = new Date(b.endDate).getTime();\n if (x < y) {\n return 1;\n }\n if (x > y) return -1;\n return 0;\n};\n\nconst sortedConsumptionList = (meters?: TMeterRead[]): TMeterRead[] => {\n if (meters) {\n const noDuplicateMeters = removeDuplicateConsumptionList(meters);\n return noDuplicateMeters.sort(compareMeterRead);\n }\n return [];\n};\n\nconst removeDuplicateConsumptionList = (\n meters?: TMeterRead[],\n): TMeterRead[] => {\n if (meters) {\n const seen = new Set();\n return meters.filter(e => {\n const obj = JSON.stringify({\n startDate: e.startDate,\n endDate: e.endDate,\n quantity: e.quantity,\n });\n const duplicate = seen.has(obj);\n seen.add(obj);\n return !duplicate;\n });\n }\n return [];\n};\n\nconst compare = (a: any, b: any, property: string) => {\n if (a[property] < b[property]) return -1;\n if (a[property] > b[property]) return 1;\n return 0;\n};\n\nconst displayCustomerNumber = (nbr: string) => {\n const regex = /\\bADMIN:/;\n return regex.test(nbr) ? nbr.replace('ADMIN:', '') : nbr;\n};\n\nconst buildClassName = (nodes: string[], separator: string = '__') => {\n return nodes.join(separator);\n};\n\nconst capitalizeFirstLetter = (str: string = ''): string => {\n const arr = str.split('');\n if (!!arr[0]) arr[0] = arr[0].toUpperCase();\n return arr.join('');\n};\n\nconst formatNameString = (\n str: string = '',\n setInitialCap?: boolean,\n): string => {\n let fmt = str.replace(/[^\\a-zA-Z -- ç é è]/g, '');\n if (!!setInitialCap) fmt = capitalizeFirstLetter(fmt);\n return fmt;\n};\n\nfunction formatFirstNameString(value: string = ''): string {\n return formatNameString(value, true);\n}\n\nfunction formatLastNameString(value: string = ''): string {\n return formatNameString(value, true);\n}\n\nfunction formatGroupNameString(value: string = ''): string {\n return formatNameString(value, true);\n}\n\nfunction formatSIRETString(value: string = ''): string {\n return value.replace(/[^\\d]/g, '').slice(0, 14);\n}\n\nfunction formatPhoneNumberString(value: string = ''): string {\n return value.replace(/[^\\d]/g, '').slice(0, 10);\n}\n\nfunction formatGroupString(value: string = ''): string {\n return value.replace(/\\s/, '').slice(0, 10);\n}\n\nfunction formatAddressString(value: string = ''): string {\n return value.replace(/[^a-z^A-Z^0-9^.^\\-^' ]/g, '');\n}\n\nfunction formatPostalCodeString(value: string = ''): string {\n return value.replace(/[^\\d]/g, '').slice(0, 5);\n}\n\nfunction formatSiteString(value: string = '') {\n let fmt = value.replace(/[^\\d]/g, '').slice(0, 14);\n if (fmt.length === 14) {\n const chunks: string[] = [];\n let i = fmt.length;\n while (i > 0) {\n const startIndex = i - 3 >= 0 ? i - 3 : 0;\n const nextChunk = fmt.substring(startIndex, i);\n chunks.push(nextChunk);\n i = startIndex;\n }\n fmt = chunks.reverse().join(' ');\n }\n return fmt;\n}\n\nfunction formatAlphanumericString(value: string, upper: boolean = false) {\n let str = value.replace(/[^a-z0-9]/gi, '');\n if (upper) str = str.toUpperCase();\n return str;\n}\n\nconst httpSuccessRegexp = new RegExp(/^2[\\d]{2}$/g);\n\nfunction isHttpSuccess(code: any) {\n return httpSuccessRegexp.test(`${code}`);\n}\n\nfunction parseQueryParams(\n location: H.Location | Location,\n host: string,\n protocol: string,\n): Map {\n const params = new Map();\n try {\n const path = location.pathname;\n const search = location.search;\n const url = new URL(`${protocol}//${host}${path}${search}`);\n const entries = url.searchParams;\n entries.forEach((value, key) => {\n let typedValue: string | number = value;\n const numberValue = Number(value);\n if (!!numberValue) typedValue = numberValue;\n\n if (params.has(key)) {\n params.set(\n key,\n `${params.get(key) as string}|${typedValue as string}`,\n );\n } else params.set(key, typedValue);\n });\n } catch (err) {\n console.error(err);\n params.clear();\n return params;\n }\n return params;\n}\n\nconst formatCustomerContract = (customersContract: any[]): any[] => {\n let arr: any[] = [];\n arr = [\n ...arr,\n ...customersContract.map(value => {\n return { ...value };\n }),\n ];\n return arr;\n};\n\nconst isEmpty = (arr: any[]) => arr && arr.length !== 0;\n\nfunction getHost(\n params: Map = new Map(),\n extendedPath: string[] = [],\n): string {\n const protocol = location.protocol;\n const slashes = protocol.concat('//');\n const host = slashes.concat(window.location.host);\n let paramStr: string = '';\n if (params.size > 0) {\n paramStr = '?';\n params.forEach((value: string, key: string) => {\n paramStr += `${key}=${value}`;\n });\n }\n const url = `${host}/${extendedPath.join('/')}${paramStr}`;\n return url;\n}\n\nconst isEmptySelectOption = (\n selection?: string | SelectOption,\n): boolean => {\n return selection !== undefined && selection !== '';\n};\n\nfunction getSelectOptionValue(status: SelectOption): string {\n return status !== null ? (Object.values(status)[2] as string) : '';\n}\n\nasync function sleep(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\ntype ArrayOrMap = V[] | Map;\nasync function forEach(\n collection: ArrayOrMap,\n fn: (value: V, index: K | number, collection: ArrayOrMap) => void,\n) {\n if (collection instanceof Array) {\n const length: number = collection.length;\n for (let i = 0; i < length; i = i + 1) {\n await fn(collection[i], i, collection);\n }\n } else if (collection instanceof Map) {\n const entries = collection.entries();\n for (const entry of entries) {\n await fn(entry[1], entry[0], collection);\n }\n }\n}\n\nconst isLimitedAuthorization = ({ subGroupMode, groupMode }: TSchemaProps) => {\n return groupMode === EGroups.LIMITED && subGroupMode === EGroups.LIMITED;\n};\n\nconst isFullAuthorization = ({ subGroupMode, groupMode }: TSchemaProps) => {\n return groupMode === EGroups.FULL && subGroupMode === EGroups.FULL;\n};\n\nconst isMixedAuthorization = ({ subGroupMode, groupMode }: TSchemaProps) => {\n return groupMode === EGroups.LIMITED && subGroupMode === EGroups.FULL;\n};\n\nconst isHaveActionsPermission = ({ actionMode }: TSchemaProps) => {\n return actionMode === EActionMode.FULL;\n};\n\nconst getInitialGroup = (group: string) => group.split('_')[0];\n\nconst getAllInitialGroups = (groups: string[]) =>\n uniqBy(\n map(groups, (group: string, id: number) => {\n const inGr = getInitialGroup(group);\n return {\n id,\n label: inGr,\n value: inGr,\n };\n }),\n 'value',\n );\n\nconst isHaveActionsPermissionBySchema = (\n menuLabel: string,\n subMenuLabel: string,\n authSchema: TScheme[],\n) => {\n const currMenu = authSchema.find(m => m.label === menuLabel);\n\n if (currMenu) {\n const currSubMenu = currMenu.subMenu.find(\n sm => sm.label === subMenuLabel,\n );\n\n return currSubMenu\n ? currSubMenu.actionMode === EActionMode.FULL\n : false;\n }\n\n return false;\n};\n\nconst isLimitedAuthorizationBySchema = (\n menuLabel: string,\n subMenuLabel: string,\n authSchema: TScheme[],\n) => {\n const currMenu = authSchema.find(m => m.label === menuLabel);\n\n if (currMenu) {\n const currSubMenu = currMenu.subMenu.find(\n sm => sm.label === subMenuLabel,\n );\n\n return currSubMenu\n ? currSubMenu.groupMode === EGroups.LIMITED &&\n currSubMenu.subGroupMode === EGroups.LIMITED\n : false;\n }\n\n return false;\n};\n\nconst isUserLimitedBySchema = (\n menuLabel: string,\n subMenuLabel: string,\n authSchema: TScheme[],\n) => {\n const currMenu = authSchema.find(m => m.label === menuLabel);\n\n if (currMenu) {\n const currSubMenu = currMenu.subMenu.find(\n sm => sm.label === subMenuLabel,\n );\n\n if (currSubMenu) {\n return currSubMenu.userLimited\n ? currSubMenu.userLimited\n : undefined;\n }\n }\n\n return undefined;\n};\n\nconst isOdd = (num: number): boolean => (num % 2 ? false : true);\n\ntype MappingTypes =\n | 'energyTypes'\n | 'contractStatus'\n | 'orderStatus'\n | 'firstPaymentCBStatus'\n | 'firstPaymentSlimCollectStatus'\n | 'paymentSDD';\nconst getLabelByType = (value: string, type: MappingTypes) => {\n return getLabelByValue(value, WordingMapping[type]);\n};\n\ntype TUserStatus = 'ENABLED' | 'DISABLED';\nconst getImgSrcByUserStatus = (status: TUserStatus) => {\n switch (status) {\n case 'ENABLED':\n return resources['ic-check-validate'];\n\n case 'DISABLED':\n return resources['ic-cross'];\n\n default:\n return resources['ic-cross'];\n }\n};\n\nconst isHtml = (str: string) =>\n str.includes('') || str.includes('

');\n\nconst compareAddress = (a1: TAddress, a2: TAddress) => {\n let addr1 = '';\n let addr2 = '';\n if (a1.number) {\n addr1 = `${a1.number} ${a1.street}-${a1.townName}-${a1.postalCode}`;\n } else {\n addr1 = `${a1.street}-${a1.townName}-${a1.postalCode}`;\n }\n if (a2.number) {\n addr2 = `${a2.number} ${a2.street}-${a2.townName}-${a2.postalCode}`;\n } else {\n addr2 = `${a2.street}-${a2.townName}-${a2.postalCode}`;\n }\n return JSON.stringify(addr1) === JSON.stringify(addr2);\n};\n\ntype Line = [string, string];\n\nconst additionalRatesDuplicateValue = (arr: Line[]): Line[] => {\n let fined: any[] = [];\n const init: any[] = [];\n arr.forEach(element => {\n if (element[0] === 'Frais lié à la fréquence de prépaiement') {\n if (fined.length === 0) {\n fined = element;\n } else {\n const prevAmount = fined[1].split(' ');\n const nextAmount = element[1].split(' ');\n\n const result =\n parseFloat(prevAmount[0]) + parseFloat(nextAmount[0]);\n\n fined = [fined[0], `${result.toFixed(2)} €`];\n }\n } else init.push(element);\n });\n\n return [...init, [...fined]];\n};\n\nconst buildPackagesForSlider = (packages: []) => {\n const init = [[]];\n\n let nbrElmInSection = 0;\n let countSectionNbr = 0;\n\n let recommendedInfo: any[] = [];\n\n packages.forEach(pkg => {\n if (nbrElmInSection < 4) {\n init[countSectionNbr].push(pkg);\n\n if ((pkg as any).recommended) {\n recommendedInfo = [countSectionNbr, nbrElmInSection];\n }\n nbrElmInSection += 1;\n } else {\n init.push([]);\n\n countSectionNbr += 1;\n nbrElmInSection = 1;\n\n init[countSectionNbr].push(pkg);\n\n if ((pkg as any).recommended) {\n recommendedInfo = [countSectionNbr, nbrElmInSection];\n }\n }\n });\n\n let finalBuild: any[] = [];\n let first: any[] = [];\n let isRecommendedPush = false;\n\n init.forEach((arr, idx) => {\n if (idx === recommendedInfo[0]) {\n isRecommendedPush = true;\n }\n\n if (isRecommendedPush) finalBuild = [...finalBuild, ...arr];\n else first = [...first, ...arr];\n });\n\n return [...finalBuild, ...first];\n};\n\nconst array_move = (arr: any[], old_index: number, new_index: number) => {\n if (new_index >= arr.length) {\n let k = new_index - arr.length + 1;\n // tslint:disable-next-line:no-increment-decrement\n while (k--) {\n arr.push(undefined);\n }\n }\n arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\n return arr;\n};\n\nconst canSelectAllPackage = () => {\n const userGroup = localStorage.getItem('userGroup');\n\n if (userGroup === null) return false;\n\n return Config.GroupsCanSelectAllPackage.reduce(\n (acc, curr) => acc || userGroup.includes(curr),\n false,\n );\n};\n\nconst addSelectAllToSelect = (opt: any[]) => [\n {\n id: 'select-all',\n label: 'Tout sélectionner',\n value: 'select-all',\n },\n ...opt,\n];\n\nconst parseSrcIframe = (dt: string): string => {\n const iframeRegex: RegExp = / {\n let nDays = days;\n const now = new Date(date);\n const dayOfTheWeek = now.getDay();\n const deliveryDay = dayOfTheWeek + days;\n let calendarDays = days;\n let deliveryWeeks;\n if (deliveryDay >= 6) {\n nDays -= 6 - dayOfTheWeek;\n calendarDays += 2;\n deliveryWeeks = Math.floor(nDays / 5);\n calendarDays += deliveryWeeks * 2;\n }\n now.setTime(now.getTime() + calendarDays * 24 * 60 * 60 * 1000);\n return now;\n};\n\nconst addDays = (date: string | Date, days: number) => {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n};\n\n/**\n *\n * @param {Date} date\n * @param {'EL' | 'NG'} energy\n * @param {'NOW' | 'LATER'} type\n * @param {boolean} isCyclic\n *\n * *SWITCH_NOW (default dueDate +0)\n * ---------- EL => dueDate + 7 business + 2 calenders days\n * ---------- NG => dueDate + 7 business + 4 calenders days\n *\n * *SWITCH_LATER (default dueDate +14)\n * ---------- EL => dueDate + 7 business + 2 calenders\n * ---------- NG => dueDate + 7 business + 4 calenders\n */\nconst prepareEffectiveStartDate = (\n date: Date,\n energy: 'EL' | 'NG',\n type: 'NOW' | 'LATER',\n isCyclic: boolean = false,\n) => {\n const { EffectiveStartDate } = Config;\n\n const { businessDays, calendarDays } = EffectiveStartDate[type][energy];\n if (isCyclic || type === 'NOW') {\n return date;\n } else {\n const nextBusinessDate = addBusinessDays(businessDays, date);\n return addDays(nextBusinessDate, calendarDays);\n }\n};\n\nconst prepareFrequenciesToDisplay = (arr: any[]) => {\n const predicate = (a: any, b: any) => {\n const map = {\n MONTHLY: 0,\n BIMONTHLY: 1,\n QUARTERLY: 2,\n FOURMONTHLY: 3,\n } as any;\n\n if (map[a.value] < map[b.value]) {\n return -1;\n }\n\n if (map[a.value] > map[b.value]) {\n return 1;\n }\n\n return 0;\n };\n\n return arr.sort(predicate);\n};\n\nconst addMonth = (date: Date, nmMonth: number) =>\n new Date(date.setMonth(date.getMonth() + nmMonth));\n\nconst transformPieceType = (pt: string) => {\n switch (pt) {\n case EPieceType.ADHOC:\n return 'adhoc';\n\n default:\n return pt;\n }\n};\nconst getAPEFromObject = (obj: any) =>\n (get(\n obj,\n 'etablissement.uniteLegale.activitePrincipaleUniteLegale',\n '',\n ) as any).replaceAll('.', '');\n\nconst parseUploadAmendments = async (file: File): Promise =>\n new Promise((resolve, reject) =>\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n complete(results: any) {\n if (results.errors.length === 0) return resolve(results.data);\n\n console.error('Parsing errors: ', results.errors);\n return reject(results.errors);\n },\n }),\n );\n\nconst checkIsDisableSwitchSelect = ({ channel }: { channel: string }) => {\n if (isNil(channel)) return false;\n\n return Config.ChannelsFixSwitchLater.some(curr => curr.test(channel));\n};\n\nexport {\n compare,\n checkIsDisableSwitchSelect,\n parseUploadAmendments,\n transformPieceType,\n addMonth,\n getAPEFromObject,\n prepareFrequenciesToDisplay,\n parseSrcIframe,\n prepareEffectiveStartDate,\n addSelectAllToSelect,\n canSelectAllPackage,\n array_move,\n buildPackagesForSlider,\n isOdd,\n isHtml,\n getImgSrcByUserStatus,\n displayCustomerNumber,\n additionalRatesDuplicateValue,\n compareAddress,\n getLabelByType,\n isHaveActionsPermission,\n getAllInitialGroups,\n isMixedAuthorization,\n isHaveActionsPermissionBySchema,\n log,\n isLimitedAuthorizationBySchema,\n findBillingModeCode,\n isFullAuthorization,\n getInitialGroup,\n filteredArr,\n isValidPhone,\n isValidEmail,\n isValidPassword,\n isValidIban,\n isValidName,\n isValidString,\n isValidBirthDate,\n isValidBirthDatePro,\n findCoholder,\n getLabelCivility,\n getLabelInvoiceRouting,\n getLabelPaymentMode,\n getFormattedDate,\n findContractByNumber,\n displayIban,\n isLimitedAuthorization,\n isUserLimitedBySchema,\n displayNumberOnly,\n getTodayDate,\n displayPlaceholder,\n getYoutubeId,\n getTimeframeFromLabel,\n getLabelByValue,\n getFormattedDateToBackEnd,\n transformPriceLabel,\n displayFrequency,\n displayDateFromNumber,\n displayRateOption,\n displayTimeframe,\n transformAuthorizedPackages,\n findPackageById,\n findPackagesByRange,\n findNextAndLastPieces,\n findLastValidPiece,\n findLastValidTransaction,\n displayPhoneWithoutPrefix,\n getPhoneWithPrefix,\n concatUrl,\n isWeekend,\n getLatestTransaction,\n getEnergyConsumption,\n getEnergyPercentage,\n shiftArray,\n getConsumptionDownloadData,\n sortedConsumptionList,\n removeDuplicateConsumptionList,\n buildClassName,\n formatNameString,\n capitalizeFirstLetter,\n formatFirstNameString,\n formatLastNameString,\n formatSIRETString,\n formatPhoneNumberString,\n formatAddressString,\n formatPostalCodeString,\n formatSiteString,\n formatCustomerContract,\n isEmpty,\n getDateFormatted,\n isEmptySelectOption,\n formatAlphanumericString,\n isHttpSuccess,\n parseQueryParams,\n getHost,\n getSelectOptionValue,\n formatGroupString,\n sleep,\n formatGroupNameString,\n forEach,\n addDays,\n sortMeters,\n};\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin, throwError } from 'rxjs';\nimport {\n mergeMap,\n catchError,\n filter,\n switchMap,\n timeout,\n} from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n getType,\n} from 'typesafe-actions';\n\nimport {\n mapCreateEvent,\n ICreateEventPayload,\n createEventAsync,\n} from './event.actions';\nimport { RootAction, RootState, Services } from 'Types';\nimport {\n TCustomer,\n TContract,\n TCustomerFullName,\n TAddress,\n TThirdParty,\n TResponse,\n} from 'Models';\n\nimport { getTodayDate } from '../utils/helpers';\nimport { EModeUpdateBilling } from '../utils/enums';\n\nimport {\n FETCH_CONTEXT_REQUEST,\n FETCH_CONTEXT_SUCCESS,\n FETCH_CONTEXT_FAILURE,\n UPDATE_CUSTOMER_REQUEST,\n UPDATE_CUSTOMER_SUCCESS,\n UPDATE_CUSTOMER_FAILURE,\n UPDATE_CUSTOMER_RESET,\n UPDATE_BILLING_REQUEST,\n UPDATE_BILLING_SUCCESS,\n UPDATE_BILLING_FAILURE,\n UPDATE_PASSWORD_REQUEST,\n UPDATE_PASSWORD_SUCCESS,\n UPDATE_PASSWORD_FAILURE,\n CREATE_SPONSOR_REQUEST,\n CREATE_SPONSOR_SUCCESS,\n CREATE_SPONSOR_FAILURE,\n} from './actionTypes';\nimport { fetchLoginAsync } from './auth.actions';\nimport { isEmpty } from 'lodash';\n\nexport interface IContext {\n customer: TCustomer;\n contracts: TContract[];\n message?: string;\n errorMessage?: string;\n}\n\nexport interface IContextRequest {\n customerNbr: string;\n}\n\nconst resetUpdate = createStandardAction(UPDATE_CUSTOMER_RESET)();\n\nconst fetchContextAsync = createAsyncAction(\n FETCH_CONTEXT_REQUEST,\n FETCH_CONTEXT_SUCCESS,\n FETCH_CONTEXT_FAILURE,\n)();\n\nexport interface IPassword {\n user: string;\n oldPassword: string;\n newPassword: string;\n token: string;\n}\n\nconst updatePasswordAsync = createAsyncAction(\n UPDATE_PASSWORD_REQUEST,\n UPDATE_PASSWORD_SUCCESS,\n UPDATE_PASSWORD_FAILURE,\n)();\n\nexport interface ISponsor {\n sponsorId: string;\n sponsorFirstName: string;\n sponsorLastName: string;\n targetEmail: string;\n}\n\nconst createSponsorAsync = createAsyncAction(\n CREATE_SPONSOR_REQUEST,\n CREATE_SPONSOR_SUCCESS,\n CREATE_SPONSOR_FAILURE,\n)();\n\ninterface IRequestUpdateCoholder {\n mode: string;\n civility: string;\n firstName: string;\n customerNbr?: string;\n contractNbr: string;\n}\n\ninterface IRequestUpdateCustomer {\n customerNbr: string;\n email: string;\n phone: string;\n marketing: boolean;\n newsletter: boolean;\n}\n\nexport interface IRequestUpdateCustomerCoholderEvent {\n customer: IRequestUpdateCustomer;\n coholder?: IRequestUpdateCoholder;\n event: ICreateEventPayload;\n}\n\ninterface IResponseUpdateCoholder {\n code: string;\n message: string;\n mode?: string;\n civility?: string;\n firstName?: string;\n}\ninterface IResponseUpdateCustomer {\n code: string;\n message: string;\n email?: string;\n phone?: string;\n marketing?: boolean;\n newsletter?: boolean;\n}\n\ntype IResponseUpdateCustomerCoholder = IResponseUpdateCoholder &\n IResponseUpdateCustomer;\n\nconst updateCustomerAsync = createAsyncAction(\n UPDATE_CUSTOMER_REQUEST,\n UPDATE_CUSTOMER_SUCCESS,\n UPDATE_CUSTOMER_FAILURE,\n)<\n IRequestUpdateCustomerCoholderEvent,\n IResponseUpdateCustomerCoholder,\n IResponseUpdateCustomerCoholder\n>();\n\nexport interface IRequestUpdateBillingEvent {\n paymentMode: IRequestUpdateBilling;\n event: ICreateEventPayload;\n}\n\ninterface IRequestUpdateBilling {\n mode: EModeUpdateBilling;\n customerNbr?: string;\n contractNbr?: string;\n ibanCode?: string;\n rumCode?: string;\n billingAddress?: TAddress;\n customerFullName?: TCustomerFullName;\n email?: string;\n debitDay?: string;\n routingMode?: string;\n}\n\ninterface IResponseUpdateBilling {\n code: string;\n message: string;\n mode: EModeUpdateBilling;\n billingAddress?: TAddress;\n customerFullName?: TCustomerFullName;\n contractNbr?: string;\n ibanCode?: string;\n email?: string;\n debitDay?: string;\n routingMode?: string;\n}\n\nconst updateBillingAsync = createAsyncAction(\n UPDATE_BILLING_REQUEST,\n UPDATE_BILLING_SUCCESS,\n UPDATE_BILLING_FAILURE,\n)();\n\nexport type ProfileAction =\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadGetContext = ({ customerNbr }: { customerNbr: string }) => {\n return { customerNbr };\n};\n\nconst mapGetContext = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadGetContext(action.payload);\n return apiRequest({\n path: '/getContext',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IContext) => {\n const userId = sessionStorage.getItem('currentClient');\n if (response && response.customer && !isEmpty(response.contracts)) {\n if (userId) {\n return of(\n fetchLoginAsync.success({\n userId,\n }),\n fetchContextAsync.success(response),\n );\n }\n return of(fetchContextAsync.success(response));\n }\n const message =\n response.message ||\n response.errorMessage ||\n 'Une erreur est survenue';\n return of(\n fetchContextAsync.failure({\n code: userId ? '505' : '500',\n message,\n }),\n );\n }),\n catchError(error => of(fetchContextAsync.failure(error))),\n );\n};\n\nconst preparePayloadUpdateCustomer = ({\n customerNbr,\n email,\n phone,\n marketing,\n newsletter,\n}: IRequestUpdateCustomer) => {\n return {\n customerNbr,\n email,\n phone,\n marketing,\n newsletter,\n };\n};\n\nconst mapUpdateCustomer = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdateCustomer(action.payload.customer);\n return apiRequest({\n path: '/updateCustomer',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IResponseUpdateCustomer) => {\n const prepareToStore = {\n code: response ? response.code : '500',\n message: response ? response.message : 'failure',\n email: payload.email,\n phone: payload.phone,\n marketing: payload.marketing,\n newsletter: payload.newsletter,\n };\n return of(prepareToStore);\n }),\n catchError(error => of(error)),\n );\n};\n\nconst preparePayloadUpdateCoholder = ({\n mode,\n contractNbr,\n civility,\n firstName,\n}: {\n mode: string;\n civility: string;\n firstName: string;\n contractNbr: string;\n}) => {\n const prepareObject: TThirdParty = {\n civility,\n firstName,\n role: 'COHOLDER',\n effectiveDate: getTodayDate(),\n code: '',\n lastName: '',\n contractNbr: '', \n };\n return {\n mode,\n contractNbr,\n coholder: [prepareObject],\n };\n};\n\nconst mapUpdateCoholder = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdateCoholder(action.payload.coholder);\n return apiRequest({\n path: '/manageCoholder',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IResponseUpdateCoholder) => {\n return of({\n code: response ? response.code : '500',\n message: response ? response.message : 'failure',\n mode: action.payload.coholder.mode,\n civility: action.payload.coholder.civility,\n firstName: action.payload.coholder.firstName,\n });\n }),\n catchError(error => of(error)),\n );\n};\n\nconst fetchContextEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchContextAsync.request)),\n mergeMap(action => mapGetContext(action, dependency)),\n );\n\nconst updateCustomerEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updateCustomerAsync.request)),\n switchMap(\n (action: RootAction) => mapUpdateCustomer(action, dependency),\n (action: RootAction, r: IResponseUpdateCustomerCoholder) => [\n action,\n r,\n ],\n ),\n switchMap(([action, customerResponse]) => {\n if (action.payload.coholder && customerResponse.code === '200') {\n return forkJoin(\n of(action),\n of(customerResponse),\n mapUpdateCoholder(action, dependency),\n );\n }\n\n return forkJoin(of(action), of(customerResponse));\n }),\n switchMap(([action, customerResponse, coholderResponse]) => {\n if (customerResponse.code !== '200') {\n return throwError(customerResponse);\n }\n\n const modifiedAction = {\n type: getType(createEventAsync.request),\n payload: {\n ...action.payload.event,\n },\n };\n if (coholderResponse) {\n return forkJoin(\n of(customerResponse),\n of(coholderResponse),\n mapCreateEvent(modifiedAction, dependency),\n );\n }\n return forkJoin(\n of(customerResponse),\n mapCreateEvent(modifiedAction, dependency),\n );\n }),\n\n switchMap(([customerResponse, coholderResponse, eventResponse]) => {\n if (coholderResponse) {\n return of(\n updateCustomerAsync.success({\n ...customerResponse,\n ...coholderResponse,\n }),\n );\n }\n\n return of(updateCustomerAsync.success(customerResponse));\n }),\n catchError(error => {\n return of(\n updateCustomerAsync.failure({\n code: error.code,\n message: error.message,\n }),\n );\n }),\n );\n\nconst preparePayloadUpdateBilling = ({\n customerNbr,\n contractNbr,\n mode,\n ibanCode,\n rumCode,\n billingAddress,\n customerFullName,\n email,\n debitDay,\n routingMode,\n}: IRequestUpdateBilling) => {\n switch (mode) {\n case EModeUpdateBilling.IBAN:\n return {\n mode,\n customerNbr,\n ibanCode,\n rumCode,\n };\n\n case EModeUpdateBilling.DEBIT_DAY: {\n return {\n mode,\n contractNbr,\n debitDay,\n };\n }\n\n case EModeUpdateBilling.ROUTING_MODE: {\n return {\n mode,\n contractNbr,\n routingMode,\n };\n }\n\n default:\n return {\n mode,\n customerNbr,\n contractNbr,\n customerFullName,\n email,\n billingAddress,\n };\n }\n};\n\nconst mapUpdateBilling = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdateBilling(action.payload.paymentMode);\n return apiRequest({\n path: '/updateBillingData',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IResponseUpdateBilling) => {\n if (response && response.code === '200') {\n return of({\n code: response.code,\n message: response.message,\n mode: payload.mode,\n customerNbr: payload.customerNbr,\n ibanCode: payload.ibanCode,\n billingAddress: payload.billingAddress,\n customerFullName: payload.customerFullName,\n email: payload.email,\n debitDay: payload.debitDay,\n routingMode: payload.routingMode,\n });\n }\n return of({\n code: '500',\n message: 'failure',\n });\n }),\n catchError(error => of(error)),\n );\n};\n\nconst updateBillingEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updateBillingAsync.request)),\n switchMap(\n (action: RootAction) => mapUpdateBilling(action, dependency),\n (action: RootAction, r: IResponseUpdateBilling) => [action, r],\n ),\n switchMap(([action, billingResponse]) => {\n if (billingResponse.code !== '200') {\n return forkJoin([of(billingResponse), of(undefined)]);\n }\n const modifiedAction = {\n type: getType(createEventAsync.request),\n payload: {\n ...action.payload.event,\n },\n };\n return forkJoin([\n of(billingResponse),\n mapCreateEvent(modifiedAction, dependency),\n ]);\n }),\n switchMap(([billingResponse, eventResponse]) => {\n if (billingResponse.code !== '200') {\n return of(\n updateBillingAsync.failure({\n code: billingResponse.code,\n message: billingResponse.message,\n }),\n );\n }\n return of(updateBillingAsync.success(billingResponse));\n }),\n catchError(error => {\n return of(\n updateBillingAsync.failure({\n code: error.code,\n message: error.message,\n }),\n );\n }),\n );\n\nconst preparePayloadUpdatePassword = ({\n user,\n oldPassword,\n newPassword,\n token,\n}: IPassword) => {\n return {\n user,\n oldPassword,\n newPassword,\n token,\n };\n};\n\nconst mapUpdatePassword = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdatePassword(action.payload);\n return apiRequest({\n path: '/changePassword',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TResponse) => {\n return of(updatePasswordAsync.success(''));\n }),\n catchError(error => of(updatePasswordAsync.failure(error))),\n );\n};\n\nconst updatePasswordEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updatePasswordAsync.request)),\n mergeMap(action => mapUpdatePassword(action, dependency)),\n );\n\nconst preparePayloadCreateSponsor = ({\n sponsorId,\n sponsorFirstName,\n sponsorLastName,\n targetEmail,\n}: ISponsor) => {\n return {\n sponsorId,\n sponsorFirstName,\n sponsorLastName,\n targetEmail,\n };\n};\n\nconst mapCreateSponsor = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreateSponsor(action.payload);\n return apiRequest({\n path: '/sponsoring',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TResponse) => {\n return of(createSponsorAsync.success(''));\n }),\n catchError(error => of(createSponsorAsync.failure(error))),\n );\n};\n\nconst createSponsorEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createSponsorAsync.request)),\n mergeMap(action => mapCreateSponsor(action, dependency)),\n );\n\nexport {\n fetchContextEpic,\n fetchContextAsync,\n mapGetContext,\n updateCustomerAsync,\n updateCustomerEpic,\n mapUpdateCustomer,\n resetUpdate,\n updateBillingEpic,\n updateBillingAsync,\n mapUpdateBilling,\n mapUpdateCoholder,\n updatePasswordAsync,\n updatePasswordEpic,\n createSponsorAsync,\n createSponsorEpic,\n};\n","import { throwError } from 'rxjs';\nimport { ajax } from 'rxjs/ajax';\nimport { map, catchError } from 'rxjs/operators';\n\nimport config from '../utils/config';\nimport { log as consoleLog } from '../utils/helpers';\n\ntype TPayloadLogger = Partial<{\n tag: string;\n customerType: string;\n triggerButton: string;\n serviceCalled: string;\n statusAction: string;\n logMessage: string;\n returnCode: string;\n energyList: string;\n customerIdentificationKey: string;\n environnement: string;\n timestamp: string;\n app: string;\n channel: string;\n}>;\n\ntype TRequestLogStreaming = {\n jsonLog: string;\n};\n\ntype TPropsLogger = Partial<{\n tag: string;\n customerType: string;\n triggerButton: string;\n serviceCalled: string;\n statusAction: string;\n logMessage: string;\n returnCode: string;\n energyList: string[];\n customerIdentificationKey: string;\n}>;\n\nconst prepareEnergyList = (arrEnergies: string[]) =>\n arrEnergies.length === 2 ? 'EL/NG' : arrEnergies[0];\n\nconst controlData = (dt: any, slDt: any, custom?: string) => {\n if (custom) {\n switch (custom) {\n case 'energyList':\n return dt && prepareEnergyList(dt);\n\n default:\n return undefined;\n }\n }\n\n if (dt !== undefined) return dt;\n if (slDt !== undefined) return slDt;\n\n return undefined;\n};\n\nconst prepareObject = (props: TPropsLogger): TPayloadLogger => {\n const {\n tag,\n customerType,\n triggerButton,\n serviceCalled,\n statusAction,\n logMessage,\n returnCode,\n energyList,\n customerIdentificationKey,\n } = props;\n const dataLS = localStorage.getItem('log_streaming');\n const localStorageData = dataLS ? JSON.parse(dataLS) : {};\n\n const prepareData = {\n tag: controlData(tag, localStorageData.tag),\n customerType: controlData(customerType, localStorageData.customerType),\n triggerButton: controlData(\n triggerButton,\n localStorageData.triggerButton,\n ),\n serviceCalled: controlData(\n serviceCalled,\n localStorageData.serviceCalled,\n ),\n logMessage: controlData(logMessage, localStorageData.logMessage),\n // ( success => RAS, fail => stacktrace)$\n returnCode: controlData(returnCode, localStorageData.returnCode),\n statusAction: controlData(statusAction, localStorageData.statusAction),\n\n energyList: controlData(\n energyList,\n localStorageData.energyList,\n 'energyList',\n ),\n\n customerIdentificationKey: controlData(\n customerIdentificationKey,\n localStorageData.customerIdentificationKey,\n ),\n\n environnement: config.ENV,\n timestamp: Date.now().toString(),\n app: 'CLIENT-SPACE',\n channel: 'WEB',\n };\n\n const channel = localStorage.getItem('channel');\n if (channel) {\n prepareData.channel = channel;\n }\n\n return prepareData;\n};\n\nconst log = ({\n tag,\n customerType,\n triggerButton,\n serviceCalled,\n statusAction,\n logMessage,\n returnCode,\n energyList,\n customerIdentificationKey,\n}: TPropsLogger) => {\n const prepareData = prepareObject({\n tag,\n customerType,\n triggerButton,\n serviceCalled,\n statusAction,\n logMessage,\n returnCode,\n energyList,\n customerIdentificationKey,\n });\n\n const payload: TRequestLogStreaming = {\n jsonLog: JSON.stringify(prepareData),\n };\n\n localStorage.setItem('log_streaming', payload.jsonLog);\n\n const settings = {\n method: 'POST',\n url: `${config.URL_SUBSCRIPTION}/getLogsStreaming`,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': config.ApiKey,\n },\n responseType: 'json',\n crossDomain: true,\n body: payload,\n };\n\n consoleLog(`Prepare Object /getLogsStreaming => `, prepareData);\n consoleLog(`FO Data: POST /getLogsStreaming ====> `, payload);\n\n const call = ajax(settings).pipe(\n catchError(({ message, response, status }) => {\n const error = {\n ajaxError: message,\n code: status,\n message,\n };\n if (response) {\n error.code = response.code;\n error.message = response.message;\n }\n\n return throwError(error);\n }),\n map(({ response }) => {\n consoleLog(`BO Response: POST /getLogsStreaming ====> `, response);\n return response;\n }),\n );\n\n const subscribe = call.subscribe(\n err =>\n err && consoleLog(`Error from API /getLogsStreaming ====> `, err),\n res =>\n res !== null &&\n consoleLog(`BO Response: POST /getLogsStreaming ====> `, res),\n );\n\n return subscribe;\n};\n\nexport { log };\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin } from 'rxjs';\nimport { mergeMap, catchError, filter, switchMap } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n getType,\n} from 'typesafe-actions';\nimport { RootAction, RootState, Services } from 'Types';\n\nimport { mapGetContext, fetchContextAsync } from './profile.actions';\n\nimport {\n FETCH_LOGIN_REQUEST,\n FETCH_LOGIN_SUCCESS,\n FETCH_LOGIN_FAILURE,\n RESET_PASSWORD_REQUEST,\n RESET_PASSWORD_SUCCESS,\n RESET_PASSWORD_FAILURE,\n REDUX_RESET_STATE,\n REMOVE_ERROR,\n REINIT_SUBSCRIPTION_EMAIL_REQUEST,\n REINIT_SUBSCRIPTION_EMAIL_SUCCESS,\n REINIT_SUBSCRIPTION_EMAIL_FAILURE,\n REMOVE_REINIT_SUBSCRIPTION_MESSAGE,\n REFRESH_SESSION_EXPIRATION_STATUS,\n CASES_EXTRACT_REQUEST,\n CASES_EXTRACT_SUCCESS,\n CASES_EXTRACT_FAILURE,\n RESET_AUTH_ERRORS,\n} from './actionTypes';\nimport Config from '../utils/config';\nimport { log } from '../services/logger';\nimport { TScheme } from 'Models';\n\ninterface IPayload {\n user?: string;\n password?: string;\n email?: string;\n userId?: string;\n token?: string;\n accessToken?: string;\n error?: string;\n message?: string;\n groupe?: string;\n autorizationsScheme?: TScheme[];\n code?: string;\n reinit?: string;\n validated?: string;\n}\n\ninterface IPayloadReinitSubscription {\n id: string;\n email: string;\n message?: string;\n code?: string;\n}\n\nconst fetchLoginAsync = createAsyncAction(\n FETCH_LOGIN_REQUEST,\n FETCH_LOGIN_SUCCESS,\n FETCH_LOGIN_FAILURE,\n)();\n\nconst casesExtractAsync = createAsyncAction(\n CASES_EXTRACT_REQUEST,\n CASES_EXTRACT_SUCCESS,\n CASES_EXTRACT_FAILURE,\n)();\n\nconst resetPasswordAsync = createAsyncAction(\n RESET_PASSWORD_REQUEST,\n RESET_PASSWORD_SUCCESS,\n RESET_PASSWORD_FAILURE,\n)();\n\nconst reinitSubscriptionEmailAsync = createAsyncAction(\n REINIT_SUBSCRIPTION_EMAIL_REQUEST,\n REINIT_SUBSCRIPTION_EMAIL_SUCCESS,\n REINIT_SUBSCRIPTION_EMAIL_FAILURE,\n)();\n\nconst resetReduxStore = createStandardAction(REDUX_RESET_STATE)();\nconst removeError = createStandardAction(REMOVE_ERROR)();\nconst resetAuthErrors = createStandardAction(RESET_AUTH_ERRORS)();\nconst removeReinitSubscriptionMessage = createStandardAction(\n REMOVE_REINIT_SUBSCRIPTION_MESSAGE,\n)();\n\nconst refreshSessionExpirationStatus = createStandardAction(\n REFRESH_SESSION_EXPIRATION_STATUS,\n)();\n\nexport type AuthAction =\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadLogin = ({ user, password }: IPayload) => {\n return {\n user,\n password,\n };\n};\n\nconst mapPostLogin = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadLogin(action.payload);\n return apiRequest({\n path: '/login',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayload) => {\n if (response && response.token) {\n const currentUser = (payload.user as string).replace(\n 'ADMIN:',\n '',\n );\n if (\n response.email &&\n response.email !== currentUser &&\n response.user !== currentUser\n ) {\n return of({\n error: 'Erreur de connexion: Veuillez réessayer',\n });\n }\n if (!response.email && response.user !== currentUser) {\n return of({\n error: 'Erreur de connexion: Veuillez réessayer',\n });\n }\n const user = {\n userId: response.user,\n token: response.token,\n accessToken: response.accessToken,\n groupe: response.groupe,\n autorizationsScheme: response.autorizationsScheme,\n };\n if (user.token && user.accessToken) {\n localStorage.setItem('token', user.token);\n\n localStorage.setItem('accessToken', user.accessToken);\n const dt = String(\n new Date().getTime() +\n 1000 * Config.ExpiredSessionTimeout,\n );\n localStorage.setItem('expires', dt);\n }\n return of(user);\n }\n const user = {\n userId: response.user,\n validated: response.validated,\n };\n if (user.validated) {\n localStorage.setItem('isValidated', String(user.validated));\n }\n if (user.userId) {\n localStorage.setItem(\n 'userIdCreatePassword',\n String(user.userId),\n );\n }\n\n const message = response.message || 'Une erreur est survenue';\n return of({ error: message });\n }),\n catchError(error => {\n return of({ error: error.message });\n }),\n );\n};\n\nconst fetchLoginEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchLoginAsync.request)),\n switchMap(\n (action: RootAction) => mapPostLogin(action, dependency),\n (action: RootAction, r: IPayload) => [action, r],\n ),\n switchMap(([action, loginResponse]) => {\n if (loginResponse.error) {\n return forkJoin(\n of(loginResponse),\n of(\n fetchContextAsync.failure({\n code: '500',\n message: 'Erreur de connexion: Veuillez réessayer',\n }),\n ),\n );\n }\n const modifiedAction = {\n ...action,\n payload: {\n ...action.payload,\n customerNbr: loginResponse.userId,\n },\n };\n return forkJoin(\n of(loginResponse),\n mapGetContext(modifiedAction, dependency),\n );\n }),\n switchMap(([loginResponse, contextResponse]) => {\n if (\n loginResponse &&\n loginResponse.groupe !== undefined &&\n loginResponse.autorizationsScheme !== undefined\n ) {\n if (loginResponse.token && loginResponse.userId) {\n localStorage.setItem('userId', loginResponse.userId);\n }\n\n if (loginResponse.token && loginResponse.groupe) {\n localStorage.setItem('userGroup', loginResponse.groupe);\n }\n return of(fetchLoginAsync.success(loginResponse));\n }\n if (\n loginResponse &&\n loginResponse.token &&\n contextResponse.type === getType(fetchContextAsync.success)\n ) {\n if (loginResponse.token && loginResponse.userId) {\n localStorage.setItem('userId', loginResponse.userId);\n }\n\n log({\n triggerButton: 'validate-button',\n tag: 'auth-connexion-page',\n customerIdentificationKey: loginResponse.userId,\n serviceCalled: '/login',\n returnCode: '200',\n statusAction: 'SUCCESS',\n });\n return of(\n fetchLoginAsync.success(loginResponse),\n fetchContextAsync.success(contextResponse.payload),\n );\n }\n const message = loginResponse.error || 'Une erreur est survenue';\n const errResponse = loginResponse.error\n ? { code: 'Error', message: loginResponse.error }\n : { code: 'Error', message: 'Une erreur est survenue' };\n\n log({\n triggerButton: 'validate-button',\n tag: 'auth-connexion-page',\n serviceCalled: '/login',\n returnCode: errResponse.code,\n logMessage: errResponse.message,\n statusAction: 'Failure',\n });\n return of(\n fetchLoginAsync.failure({\n error: message,\n }),\n );\n }),\n catchError(error => {\n log({\n triggerButton: 'validate-button',\n tag: 'auth-connexion-page',\n serviceCalled: '/login',\n returnCode: '500',\n logMessage: 'FAILURE',\n statusAction: 'Failure',\n });\n return of(\n fetchLoginAsync.failure({\n error: error.message,\n }),\n );\n }),\n );\n\nconst preparePayloadResetPassword = ({ email }: IPayload) => {\n return {\n customerNbr: email,\n mode: 'RESET',\n };\n};\n\nconst mapPostResetPassword = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadResetPassword(action.payload);\n return apiRequest({\n path: '/resetPassword',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayload) => {\n if (\n response.code &&\n (response.code === 'MISSING_PARAMETER' ||\n response.code === 'UNEXPECTED_ERROR' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER')\n ) {\n return of(\n resetPasswordAsync.failure(\n response.message || 'Une erreur est survenue',\n ),\n );\n }\n return of(resetPasswordAsync.success(response.message || ''));\n }),\n catchError(error => {\n return of(resetPasswordAsync.failure(error.message));\n }),\n );\n};\n\nconst resetPasswordEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(resetPasswordAsync.request)),\n mergeMap(action => mapPostResetPassword(action, dependency)),\n );\n\nconst preparePayloadReinitSubscriptionEmail = ({\n id,\n email,\n}: IPayloadReinitSubscription) => {\n return {\n customerNbr: id,\n email,\n };\n};\n\nconst mapReinitSubscriptionEmail = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadReinitSubscriptionEmail(action.payload);\n return apiRequest({\n path: '/reinitSubscriptionEmail',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayloadReinitSubscription) => {\n if (response.code !== '500') {\n return of(reinitSubscriptionEmailAsync.success('OK'));\n }\n return of(\n reinitSubscriptionEmailAsync.failure(\n response.message as string,\n ),\n );\n }),\n catchError(error => {\n return of(reinitSubscriptionEmailAsync.failure(error.message));\n }),\n );\n};\n\nconst reinitSubscriptionEmailEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(reinitSubscriptionEmailAsync.request)),\n mergeMap(action => mapReinitSubscriptionEmail(action, dependency)),\n );\n\nexport {\n fetchLoginEpic,\n fetchLoginAsync,\n resetPasswordAsync,\n resetPasswordEpic,\n resetReduxStore,\n removeError,\n reinitSubscriptionEmailEpic,\n reinitSubscriptionEmailAsync,\n removeReinitSubscriptionMessage,\n refreshSessionExpirationStatus,\n casesExtractAsync,\n resetAuthErrors,\n};\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TContract, TResponse } from 'Models';\n\nimport {\n FETCH_CONTRACT_REQUEST,\n FETCH_CONTRACT_SUCCESS,\n FETCH_CONTRACT_FAILURE,\n RESET_CONTRACT_STATE,\n SET_CONTRACT,\n} from './actionTypes';\n\ninterface IPayload {\n customerNbr: string;\n contractNbr: string;\n contract?: TContract;\n error?: string;\n}\n\ninterface IPayloadSetContract {\n contract: TContract;\n}\n\nconst fetchContractAsync = createAsyncAction(\n FETCH_CONTRACT_REQUEST,\n FETCH_CONTRACT_SUCCESS,\n FETCH_CONTRACT_FAILURE,\n)();\n\nconst resetContractState = createStandardAction(RESET_CONTRACT_STATE)();\n\nconst setContract = createStandardAction(SET_CONTRACT)();\n\nexport type ContractAction =\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadGetContract = ({ customerNbr, contractNbr }: IPayload) => {\n return { customerNbr, contractNbr };\n};\n\nconst mapGetContract = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadGetContract(action.payload);\n return apiRequest({\n path: '/getContract',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayload) => {\n if (response) {\n return of(\n fetchContractAsync.success({\n ...response,\n contractNbr: action.payload.contractNbr,\n }),\n );\n }\n return throwError({ code: '200', message: response });\n }),\n catchError(error => {\n return of(fetchContractAsync.failure(error));\n }),\n );\n};\n\nconst fetchContractEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchContractAsync.request)),\n mergeMap(action => mapGetContract(action, dependency)),\n );\n\nexport {\n fetchContractEpic,\n fetchContractAsync,\n mapGetContract,\n resetContractState,\n setContract,\n};\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin, throwError, Observable } from 'rxjs';\nimport { mergeMap, switchMap, catchError, filter, merge } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TMeterRead, TResponse } from 'Models';\nimport { ERateOption } from '../utils/enums';\n\nimport {\n FETCH_METER_CONFIG_REQUEST,\n FETCH_METER_CONFIG_SUCCESS,\n FETCH_METER_CONFIG_FAILURE,\n FETCH_METER_READING_REQUEST,\n FETCH_METER_READING_SUCCESS,\n FETCH_METER_READING_FAILURE,\n CREATE_INDEX_REQUEST,\n CREATE_INDEX_SUCCESS,\n CREATE_INDEX_FAILURE,\n CREATE_INDEX_RESET,\n} from './actionTypes';\n\ninterface IPayload {\n contractNbr: string;\n pointOfDelivery: string;\n readingDate?: string;\n energyType?: string;\n meterReads?: Array<{\n meterNumber: string;\n registerName: string;\n timeframeCode: string;\n value: string;\n }>;\n}\n\nexport interface IMeterConfigResponse {\n rateOption: ERateOption;\n digitSize: number;\n meterNumber: string;\n error?: string;\n code?: string;\n message?: string;\n}\n\nconst resetCreateIndex = createStandardAction(CREATE_INDEX_RESET)();\n\nconst fetchMeterConfigAsync = createAsyncAction(\n FETCH_METER_CONFIG_REQUEST,\n FETCH_METER_CONFIG_SUCCESS,\n FETCH_METER_CONFIG_FAILURE,\n)();\n\nconst fetchMeterReadingAsync = createAsyncAction(\n FETCH_METER_READING_REQUEST,\n FETCH_METER_READING_SUCCESS,\n FETCH_METER_READING_FAILURE,\n)();\n\nconst createIndexAsync = createAsyncAction(\n CREATE_INDEX_REQUEST,\n CREATE_INDEX_SUCCESS,\n CREATE_INDEX_FAILURE,\n)();\n\nexport type ConsumptionAction =\n | ActionType\n | ActionType\n | ActionType\n | ActionType;\n\nconst preparePayloadMeterReading = ({\n contractNbr,\n pointOfDelivery,\n energyType,\n}: IPayload) => {\n return {\n contractNbr,\n pointOfDelivery,\n energyType,\n };\n};\n\nconst preparePayloadMeterConfig = ({\n contractNbr,\n pointOfDelivery,\n readingDate,\n}: IPayload) => {\n return {\n contractNbr,\n pointOfDelivery,\n readingDate,\n };\n};\n\nconst mapGetMeterReading = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable<{\n reads: TMeterRead[];\n error?: string;\n code?: string;\n message?: string;\n}> => {\n const payload = preparePayloadMeterReading(action.payload);\n return apiRequest({\n path: '/getMeterReads',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: any) => {\n if (response && !response.code) {\n return of({\n reads: response,\n code: '200',\n });\n }\n const message = 'Une erreur est survenue';\n return of({\n message,\n reads: [],\n code: '500',\n });\n }),\n catchError(error => {\n return of({\n reads: [],\n error: error.message,\n code: error.code,\n message: error.message,\n });\n }),\n );\n};\n\nconst mapGetMeterConfig = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable => {\n const payload = preparePayloadMeterConfig(action.payload);\n return apiRequest({\n path: '/getMeterConfiguration',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IMeterConfigResponse) => {\n if (response && !response.code) {\n return of({\n ...response,\n code: '200',\n });\n }\n const message = response.message || 'Une erreur est survenue';\n return of({ code: '500', message });\n }),\n catchError(error => {\n return of({\n error: error.message,\n code: error.code,\n message: error.message,\n });\n }),\n );\n};\n\nconst fetchMeterEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchMeterConfigAsync.request)),\n switchMap(\n (action: RootAction) => mapGetMeterConfig(action, dependency),\n (action: RootAction, r: IMeterConfigResponse | TResponse) => [\n action,\n r,\n ],\n ),\n switchMap(([action, response]) => {\n if (response.code !== '200') {\n throwError({ code: response.code, message: response.message });\n }\n return forkJoin(\n of(response),\n mapGetMeterReading(action, dependency),\n );\n }),\n switchMap(([meterConfigResponse, meterReadingResponse]) => {\n let meterConfig;\n let meterReading;\n\n if (meterConfigResponse.code !== '200') {\n meterConfig = fetchMeterConfigAsync.failure(\n meterConfigResponse,\n );\n } else {\n meterConfig = fetchMeterConfigAsync.success(\n meterConfigResponse,\n );\n }\n if (meterReadingResponse.code && meterReadingResponse.message) {\n meterReading = fetchMeterReadingAsync.failure({\n code: meterReadingResponse.code,\n message: meterReadingResponse.message,\n });\n } else {\n meterReading = fetchMeterReadingAsync.success(\n meterReadingResponse.reads,\n );\n }\n return of(meterConfig, meterReading);\n }),\n catchError(error => of(fetchMeterConfigAsync.failure(error))),\n );\n\nconst fetchMeterReadingEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(fetchMeterReadingAsync.request)),\n switchMap(\n (action: RootAction) => mapGetMeterReading(action, dependency),\n (action, r) => [action, r],\n ),\n switchMap(([action, response]) => {\n if (response && response.code === '200') {\n return of(fetchMeterReadingAsync.success(response.reads));\n }\n const message = response.message || 'Une erreur est survenue';\n return of(\n fetchMeterReadingAsync.failure({\n code: response.code || '500',\n message,\n }),\n );\n }),\n catchError(error => of(fetchMeterReadingAsync.failure(error))),\n );\n\nconst preparePayloadIndex = ({\n contractNbr,\n pointOfDelivery,\n readingDate,\n meterReads,\n energyType,\n}: IPayload) => {\n return {\n energyType,\n contractNbr,\n pointOfDelivery,\n readingDate,\n meterReads,\n };\n};\n\nconst mapPostIndex = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadIndex(action.payload);\n return apiRequest({\n path: '/createIndex',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: any) => {\n if (response.code !== undefined && response.code !== '200') {\n return of(\n createIndexAsync.failure({\n code: response.code,\n message: response.message,\n }),\n );\n }\n\n return of(createIndexAsync.success('success'));\n }),\n catchError(error => {\n return of(createIndexAsync.failure(error));\n }),\n );\n};\n\nconst createIndexEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createIndexAsync.request)),\n mergeMap(action => mapPostIndex(action, dependency)),\n );\n\nexport {\n fetchMeterConfigAsync,\n fetchMeterReadingAsync,\n fetchMeterEpic,\n fetchMeterReadingEpic,\n resetCreateIndex,\n createIndexAsync,\n createIndexEpic,\n};\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport { createAsyncAction, isActionOf, ActionType } from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport { TFile, TResponse } from 'Models';\n\nimport {\n FETCH_LIST_FILES_REQUEST,\n FETCH_LIST_FILES_SUCCESS,\n FETCH_LIST_FILES_FAILURE,\n} from './actionTypes';\nimport isArray from 'lodash/isArray';\n\ninterface IFetchFileListRequest {\n customerNbr: string;\n contractNbr: string;\n mode: string;\n}\n\nconst fetchFilesListAsync = createAsyncAction(\n FETCH_LIST_FILES_REQUEST,\n FETCH_LIST_FILES_SUCCESS,\n FETCH_LIST_FILES_FAILURE,\n)();\n\nexport type FileActions = ActionType;\n\nconst preparePayloadListFile = ({\n contractNbr,\n customerNbr,\n mode = 'DOCUMENT',\n}: IFetchFileListRequest) => {\n return {\n contractNbr,\n customerNbr,\n mode,\n };\n};\n\nconst mapGetFiles = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadListFile(action.payload);\n return apiRequest({\n path: '/getDocumentsList',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: TFile) => {\n if (response) {\n return of(fetchFilesListAsync.success(response));\n }\n return throwError({ code: '200', message: response });\n }),\n catchError(error => of(fetchFilesListAsync.failure(error))),\n );\n};\n\nconst fetchFileEpic: Epic = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchFilesListAsync.request)),\n mergeMap(action => mapGetFiles(action, dependency)),\n );\n\nexport { fetchFilesListAsync, mapGetFiles, fetchFileEpic };\n","import { Font } from '@react-pdf/renderer';\n\nimport Montserrat400 from '../../../assets/fonts/Montserrat/Montserrat-Black.ttf';\nimport Montserrat800 from '../../../assets/fonts/Montserrat/Montserrat-ExtraBold.ttf';\n\nFont.register({\n family: 'Montserrat',\n fonts: [\n {\n fontWeight: 400,\n src: Montserrat400,\n },\n {\n fontWeight: 800,\n src: Montserrat800,\n },\n ],\n});\n","import React from 'react';\n\nimport { Image, View, StyleSheet } from '@react-pdf/renderer';\n\nimport Logo from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#ffb40a',\n alignItems: 'center',\n },\n img: {\n width: '110px',\n height: '55px',\n padding: '10px 0px',\n },\n});\n\nexport default () => (\n \n \n \n);\n","import React, { FC } from 'react';\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n container: {\n padding: 20,\n flex: 1,\n flexDirection: 'column',\n },\n});\n\nconst Container: FC = ({ children }) => (\n {children}\n);\n\nexport default Container;\n","import React from 'react';\n\nimport { StyleSheet, Text } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n pageNumber: {\n position: 'absolute',\n fontSize: 12,\n bottom: 30,\n left: 0,\n right: 0,\n textAlign: 'center',\n color: 'grey',\n },\n});\nconst PageNumber = () => (\n `${pageNumber} / ${totalPages}`}\n fixed\n />\n);\nexport default PageNumber;\n","import React from 'react';\n\nimport { View, StyleSheet, Text } from '@react-pdf/renderer';\nimport Wording from '../../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n primary: {\n fontWeight: 800,\n fontSize: 30,\n color: '#000000',\n fontFamily: 'Montserrat',\n },\n secondary: {\n fontWeight: 800,\n fontSize: 10,\n color: '#5e5e5e',\n fontFamily: 'Montserrat',\n },\n});\n\nexport default () => {\n const {\n titles: { main, sub_title },\n } = Wording;\n\n return (\n \n {main}\n {sub_title}\n \n );\n};\n","import { createContext } from 'react';\nimport { ProofPaymentProps } from '../type';\n\nconst context = createContext({} as any);\n\nexport const ProofOfPaymentProvider = context.Provider;\n\nexport default context;\n","import { useContext } from 'react';\n\nimport ProofContext from './ProofOfPaymentContext';\n\nimport { ProofPaymentProps } from '../type';\n\nexport default function useProof(): ProofPaymentProps {\n return useContext(ProofContext);\n}\n","import React, { FC } from 'react';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\n\nimport ElecIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-elec.png';\nimport GasIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-gas.png';\n\nimport Wording from '../../wording.json';\nimport { useProof } from '../../lib';\nimport { getFormattedDate } from '../../../../../utils/helpers';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#D5D5D5',\n },\n energyImg: {\n width: 30,\n height: 65,\n paddingBottom: 20,\n paddingTop: 5,\n margin: 'auto',\n },\n textContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n infoTitle: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 9,\n },\n infoValue: {\n fontSize: 9,\n },\n infoMargin: {\n marginBottom: 10,\n },\n});\n\ntype InfoProps = {\n style?: any;\n title: string;\n value: string;\n};\n\nconst Info: FC = ({ title, value, style = {} }) => (\n \n {title}: \n {value}\n \n);\n\nconst {\n customerInfo: { dateOfIssue, customerNbr, contractNbr, phone, mail },\n} = Wording;\n\nconst CustomerInfo = () => {\n const { customer, contract } = useProof();\n\n const getImageSrcByEnergy = (energy: 'EL' | 'NG') =>\n energy === 'EL' ? ElecIcon : GasIcon;\n return (\n \n \n \n \n \n\n \n \n \n );\n};\n\nexport default CustomerInfo;\n","import React, { FC } from 'react';\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\n\nimport ArrowIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/arrow.png';\nimport Wording from '../../wording.json';\n\nconst { beneficiaryInfo } = Wording;\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: 110,\n marginBottom: 10,\n marginTop: 10,\n },\n\n img: {\n objectFit: 'cover',\n width: 25,\n height: 30,\n },\n\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n },\n});\n\nconst BeneficiaryTitle: FC = () => (\n \n \n\n {beneficiaryInfo.title}\n \n);\n\nexport default BeneficiaryTitle;\n","import React, { FC } from 'react';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\n\nimport MailIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-email.png';\nimport PhoneIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/ic-phone.png';\nimport FacebookIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/Facebook.png';\nimport WebIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/Web.png';\nimport YoutubeIcon from '../../../../../assets/icons/PDFs/ProofOfPayment/Youtube.png';\n\nimport { beneficiaryInfo } from '../../wording.json';\n\nimport Title from '../titles/BeneficiaryTitle';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n marginTop: 10,\n padding: '10px 0px',\n },\n\n imgTextContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 0px',\n },\n phoneText: {\n width: 120,\n },\n\n img: {\n width: 18,\n height: 18,\n marginRight: 5,\n },\n text: {\n fontSize: 9,\n },\n\n margin: {\n fontSize: 9,\n padding: '6px 0px',\n },\n moreText: {\n marginTop: 5,\n padding: '5px 0px',\n fontSize: 9,\n },\n});\n\nconst ImageText: FC<{ src: any; text?: string; elm?: any }> = ({\n src,\n text,\n\n children,\n}) => (\n \n \n {children && children}\n {text && {text}}\n \n);\n\nconst BeneficiaryInfo: FC = () => {\n return (\n \n \n\n <ImageText src={MailIcon} text={beneficiaryInfo.email} />\n <ImageText src={PhoneIcon}>\n <View>\n <Text style={styles.text}>{beneficiaryInfo.phone}</Text>\n <Text style={{ ...styles.text, ...styles.phoneText }}>\n {beneficiaryInfo.phoneDescription}\n </Text>\n </View>\n </ImageText>\n\n <Text style={styles.moreText}>{beneficiaryInfo.more}</Text>\n\n <ImageText src={FacebookIcon} text={beneficiaryInfo.facebook} />\n <ImageText src={WebIcon}>\n <View>\n <Text style={styles.text}>{beneficiaryInfo.url}</Text>\n <Text style={styles.text}>{beneficiaryInfo.urlfq}</Text>\n </View>\n </ImageText>\n\n <ImageText src={YoutubeIcon} text={beneficiaryInfo.youtube} />\n </View>\n );\n};\n\nexport default BeneficiaryInfo;\n","import React from 'react';\n\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport CustomerInfo from './CustomerInfo';\nimport BeneficiaryInfo from './BeneficiaryInfo';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#D5D5D5',\n padding: 10,\n borderRadius: 15,\n height: '100%',\n },\n});\n\nconst LeftColumn = () => {\n return (\n <View style={styles.container}>\n <CustomerInfo />\n\n <BeneficiaryInfo />\n </View>\n );\n};\n\nexport default LeftColumn;\n","import React, { FC } from 'react';\n\nimport { View, Text, StyleSheet } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n container: {\n borderBottom: 3,\n borderBottomColor: '#000',\n marginTop: 5,\n },\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 12,\n },\n});\n\ntype Props = {\n title: string;\n};\n\nconst Section: FC<Props> = ({ title }) => (\n <View style={styles.container}>\n <Text style={styles.text}>{title}</Text>\n </View>\n);\nexport default Section;\n","import React from 'react';\n\nimport { StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nconst styles = StyleSheet.create({\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 15,\n marginBottom: 10,\n },\n});\n\nconst ObjectTitle = () => {\n return <Text style={styles.text}>{Wording.object}</Text>;\n};\n\nexport default ObjectTitle;\n","import React, { FC } from 'react';\n\nimport { StyleSheet, Text, View } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n padding: '8px 0px',\n },\n title: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 10,\n },\n\n value: {\n fontSize: 10,\n },\n});\n\ntype Props = {\n title: string;\n data: {\n name: string;\n number_street: string;\n zip_code_city: string;\n };\n};\n\nconst Adresse: FC<Props> = ({\n title,\n data: { name, number_street, zip_code_city },\n}) => (\n <View style={styles.container}>\n <Text style={styles.title}> {title} : </Text>\n <Text style={styles.value}> {name} </Text>\n <Text style={styles.value}> {number_street} </Text>\n <Text style={styles.value}> {zip_code_city} </Text>\n </View>\n);\n\nexport default Adresse;\n","import React, { FC } from 'react';\n\nimport { View, StyleSheet, Text } from '@react-pdf/renderer';\n\nconst styles = StyleSheet.create({\n textValueContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n title: {\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 10,\n },\n value: {\n fontSize: 10,\n },\n});\n\nexport const TextValue: FC<{ title: string; value: string }> = ({\n title,\n value,\n}) => (\n <View style={styles.textValueContainer}>\n <Text style={styles.title}>{title} : </Text>\n <Text style={styles.value}>{value}</Text>\n </View>\n);\n\nexport default TextValue;\n","import React from 'react';\n\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nimport TextValue from './TextValue';\nimport { useProof } from '../../lib';\n\nconst styles = StyleSheet.create({\n container: {\n padding: '10px 0px',\n },\n});\n\ntype Frequencies =\n | 'MONTHLY'\n | 'BIMONTHLY'\n | 'QUARTERLY'\n | 'FOURMONTHLY'\n | 'BIANNUAL'\n | 'UNKNOWN';\n\nconst {\n sections: {\n offer: { type, frequency, modulation, EL, NG, frequencyMapping },\n },\n} = Wording;\n\nconst mappingEnergy = (energy: 'EL' | 'NG') => (energy === 'EL' ? EL : NG);\nconst modulationCheck = (chosenPackages: any[] | undefined) => {\n if (!chosenPackages) return '';\n return chosenPackages.length > 1 ? 'Oui' : 'Non';\n};\n\nconst Offer = () => {\n const {\n contract: { energy, installmentFrequency, chosenPackages },\n } = useProof();\n\n return (\n <View style={styles.container}>\n <TextValue title={type} value={mappingEnergy(energy)} />\n <TextValue\n title={frequency}\n value={frequencyMapping[installmentFrequency as Frequencies]}\n />\n <TextValue\n title={modulation}\n value={modulationCheck(chosenPackages)}\n />\n </View>\n );\n};\n\nexport default Offer;\n","import React from 'react';\n\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nimport TextValue from './TextValue';\nimport { useProof } from '../../lib';\nimport { getFormattedDate } from '../../../../../utils/helpers';\n\nconst styles = StyleSheet.create({\n container: {\n padding: '10px 0px',\n },\n});\n\nconst {\n sections: {\n summary: {\n transactionDate,\n paymentMode,\n paymentRef,\n paymentModeMapping,\n },\n },\n} = Wording;\n\nconst Summary = () => {\n const {\n piece: { payment_method_name: piecePaymentMode, date: paymentDate, id },\n } = useProof();\n\n // const transactionDueDate =\n // processusList && processusList[0] && processusList[0].transactions\n // ? processusList[0].transactions[0].dueDate\n // : undefined;\n\n const findPaymentMode = paymentModeMapping.find(\n pm => pm.value === piecePaymentMode,\n ) || { label: '' };\n return (\n <View style={styles.container}>\n <TextValue title={transactionDate} value={paymentDate || ''} />\n <TextValue title={paymentMode} value={piecePaymentMode} />\n <TextValue title={paymentRef} value={id} />\n </View>\n );\n};\n\nexport default Summary;\n","import ReactPDF, { Text, View } from '@react-pdf/renderer';\nimport React, { FC } from 'react';\n\nexport type TableCellProps = {\n weighting?: number;\n\n style?: ReactPDF.Style;\n\n textAlign?: 'left' | 'center' | 'right';\n\n isHeader?: boolean;\n\n fontSize?: number | string;\n};\n\nexport const Cell: FC<TableCellProps> = props => {\n let content: any;\n\n if (typeof props.children === 'string') {\n content = <Text>{props.children}</Text>;\n } else if (typeof props.children === 'number') {\n content = <Text>{props.children.toString()}</Text>;\n } else {\n content = props.children;\n }\n\n const defaultStyle: ReactPDF.Style = {\n flex: props.weighting || 1,\n // @ts-ignore\n justifyContent: 'stretch',\n textAlign: props.textAlign || 'left',\n fontSize: props.fontSize || (props.isHeader === true ? 14 : 12),\n borderRight: '1pt solid black',\n wordWrap: 'break-word',\n whiteSpace: 'pre-wrap',\n };\n\n const mergedStyles: ReactPDF.Style[] = [defaultStyle, props.style || {}];\n return (\n <View style={mergedStyles} wrap={true}>\n {content}\n </View>\n );\n};\n\nexport default Cell;\n","import React, { FC } from 'react';\n\nimport Cell, { TableCellProps } from './Cell';\n\nexport type DataTableCellProps = {\n data?: any;\n Cell: (data: any) => React.ReactNode | JSX.Element | string | number;\n} & TableCellProps;\n\nexport const DataCell: FC<DataTableCellProps> = props => {\n return (\n <Cell\n {...props}\n style={{\n ...props.style,\n ...(props.data.style || {}),\n }}\n >\n {props.Cell(props.data)}\n </Cell>\n );\n};\n\nexport default DataCell;\n","import { View } from '@react-pdf/renderer';\nimport React, { FC } from 'react';\n\nexport type TableRowProps = {\n fontSize?: number | string;\n textAlign?: 'left' | 'center' | 'right';\n data?: any;\n style?: any;\n};\n\nexport const Row: FC<TableRowProps> = props => {\n const rowCells: any[] = React.Children.toArray(props.children);\n\n let remainingWeighting = 1;\n let numberOfWeightingsDefined = 0;\n rowCells.forEach((i: any) => {\n if (i.props.weighting !== undefined) {\n remainingWeighting -= i.props.weighting;\n // tslint:disable-next-line:no-increment-decrement\n numberOfWeightingsDefined++;\n }\n });\n\n const weightingsPerNotSpecified = Math.ceil(\n remainingWeighting / (rowCells.length - numberOfWeightingsDefined),\n );\n return (\n <View\n // @ts-ignore\n style={{\n borderBottom: '1pt solid black',\n borderRight: '1pt solid black',\n borderLeft: '1pt solid black',\n borderTop: '1pt solid black',\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'stretch',\n }}\n >\n {rowCells.map((rc, columnIndex) =>\n React.cloneElement(rc, {\n weighting: rc.props.weighting || weightingsPerNotSpecified,\n data: props.data,\n key: columnIndex,\n fontSize: props.fontSize,\n textAlign: rc.props.textAlign || props.textAlign,\n includeLeftBorder: columnIndex === 0,\n includeRightBorder: columnIndex !== rowCells.length - 1,\n style: rc.props.style || props.style,\n }),\n )}\n </View>\n );\n};\n\nexport default Row;\n","import React, { FC } from 'react';\n\nimport Row, { TableRowProps } from './Row';\n\nexport const Header: FC<TableRowProps> = props => {\n const rowCells: any[] = React.Children.toArray(props.children);\n\n return (\n <Row {...props} key={'header'}>\n {rowCells.map((rc, columnIndex) =>\n React.cloneElement(rc, {\n key: columnIndex,\n isHeader: true,\n fontSize: props.fontSize,\n textAlign: props.textAlign,\n style: {\n ...(props.style || {}),\n ...(rc.props.style || {}),\n },\n }),\n )}\n </Row>\n );\n};\n\nexport default Header;\n","import React, { FC } from 'react';\nimport Row, { TableRowProps } from './Row';\n\nexport type TableBodyProps = {\n data?: any[];\n} & TableRowProps;\n\nexport const Body: FC<TableBodyProps> = props => {\n const rowCells: any[] = React.Children.toArray(props.children);\n\n const dataRows = props.data || [];\n\n return dataRows.map((data: any, rowIndex: any) => (\n <Row {...props} key={rowIndex} data={data}>\n {rowCells}\n </Row>\n ));\n};\n\nexport default Body;\n","import React, { FC } from 'react';\n\nimport Header from './Header';\nimport Body from './Body';\nimport { View } from '@react-pdf/renderer';\n\ntype TableProps = {\n data?: any[];\n};\n\nexport const Table: FC<TableProps> = props => {\n let tableHeader: any = null;\n let tableBody: any = null;\n\n React.Children.forEach(props.children, (c: any) => {\n if (c.type === Header) {\n tableHeader = c;\n } else if (c.type === Body) {\n tableBody = React.cloneElement(c, {\n data: c.props.data || props.data || [],\n });\n }\n });\n return (\n <View\n style={{\n width: '100%',\n }}\n >\n {tableHeader}\n {tableBody}\n </View>\n );\n};\n\nexport default Table;\n","import { View, StyleSheet } from '@react-pdf/renderer';\nimport React from 'react';\n\nimport { Enums } from '../../../../../utils/wording.json';\nimport { useProof } from '../../lib';\n\nimport { Table, Header, Cell, DataCell, Body } from '../Table';\n\nconst styles = StyleSheet.create({\n header: {\n backgroundColor: '#ffb40a',\n padding: '5px 0',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n },\n\n body: {\n padding: '3px 10px',\n },\n\n rowStyle: {\n backgroundColor: '#D5D5D5',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n },\n});\n\nconst CustomTable = () => {\n const { piece }: any = useProof();\n\n const { amount, internal_invoice_nature_text } = piece;\n /*\n const tableAmount =\n piece.type === 'pp'\n ? parseFloat((piece as any).totalAmount) -\n parseFloat(piece.amountToPay as any)\n : piece.amountPaid;\n\n const process =\n processusList && processusList[0] && processusList[0].transactions\n ? processusList[0]\n : undefined;\n\n const mappedProcessNature =\n process && process.nature\n ? Enums.processNature.find(pr => pr.value === process.nature)\n : { label: '' };\n*/\n const dataToDisplay = [\n {\n transactionName: internal_invoice_nature_text,\n amount: `${amount}€`,\n },\n\n {\n style: styles.rowStyle,\n\n transactionName: 'Total',\n amount: `${amount}€`,\n },\n ];\n return (\n <View>\n <Table data={dataToDisplay}>\n <Header textAlign=\"center\" style={styles.header}>\n <Cell>Type de transaction</Cell>\n <Cell>Montant</Cell>\n </Header>\n <Body style={styles.body}>\n <DataCell Cell={r => r.transactionName} />\n <DataCell Cell={r => r.amount} textAlign=\"right\" />\n </Body>\n </Table>\n </View>\n );\n};\n\nexport default CustomTable;\n","import React from 'react';\nimport { View, StyleSheet } from '@react-pdf/renderer';\n\nimport Wording from '../../wording.json';\n\nimport Section from '../titles/Section';\nimport Object from '../titles/Object';\nimport Adresse from './Adresse';\n\nimport Offer from './Offer';\nimport Summary from './Summary';\n\nimport CustomTable from './CustomTable';\nimport { useProof } from '../../lib';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n backgroundColor: '#fff',\n padding: '10px 20px',\n width: '73.5%',\n },\n});\n\nconst {\n address: { beneficiary, clientTitle },\n sections: { offer, summary },\n} = Wording;\n\nconst RightColumn = () => {\n const {\n customer: { name },\n address,\n } = useProof();\n\n return (\n <View style={styles.container}>\n <Object />\n\n <Adresse\n title={clientTitle}\n data={{\n name: `${name.civility} ${name.firstName} ${name.lastName}`,\n number_street: `${address.number} ${address.street}`,\n zip_code_city: `${address.postalCode} ${address.townName}`,\n }}\n />\n\n <Adresse title={beneficiary.title} data={beneficiary.data} />\n\n <Section title={offer.title} />\n <Offer />\n\n <Section title={summary.title} />\n <Summary />\n\n <CustomTable />\n </View>\n );\n};\n\nexport default RightColumn;\n","import React from 'react';\n\nimport { View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport { bottom } from '../wording.json';\nimport { getFormattedDate } from '../../../../utils/helpers';\nimport { useProof } from '../lib';\n\nconst styles = StyleSheet.create({\n container: {},\n fullName: {\n padding: '10px 0',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 13,\n },\n\n text: {\n fontSize: 13,\n },\n});\n\nconst BottomText = () => {\n const {\n piece,\n customer: { name },\n } = useProof();\n\n // const transactionDueDate =\n // processusList && processusList[0] && processusList[0].transactions\n // ? processusList[0].transactions[0].dueDate\n // : undefined;\n\n return (\n <View style={styles.container}>\n <Text style={styles.text}>\n {bottom.attestDate}\n {piece.date || ''} :\n </Text>\n <Text\n style={styles.fullName}\n >{`${name.civility} ${name.firstName} ${name.lastName} `}</Text>\n\n <Text style={styles.text}>{bottom.text}</Text>\n </View>\n );\n};\n\nexport default BottomText;\n","import React from 'react';\n\nimport { View, StyleSheet, Image, Text } from '@react-pdf/renderer';\n\nimport LogoWekiwi from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-wekiwi.png';\n\nimport { footer } from '../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n position: 'relative',\n },\n\n img: {\n width: 90,\n height: 90,\n position: 'absolute',\n right: 0,\n opacity: 0.1,\n },\n\n textContainer: {\n position: 'absolute',\n right: 0,\n bottom: -60,\n alignItems: 'flex-end',\n },\n\n text: {\n fontSize: 13,\n },\n});\n\nconst Footer = () => (\n <View style={styles.container}>\n <Image src={LogoWekiwi} style={styles.img} />\n\n <View style={styles.textContainer}>\n <Text style={styles.text}>{footer.text1}</Text>\n <Text style={styles.text}>{footer.text2}</Text>\n </View>\n </View>\n);\n\nexport default Footer;\n","import React, { FC } from 'react';\n\nimport { Document, Page, View, StyleSheet } from '@react-pdf/renderer';\n\nimport './fonts';\n\nimport Header from './components/Header';\nimport Container from './components/Container';\nimport PageNumber from './components/PageNumber';\n\nimport MainTitle from './components/titles/Main';\n\nimport LeftColumn from './components/LeftColumn';\nimport RightColumn from './components/RightColumn';\n\nimport BottomText from './components/BottomText';\n\nimport Footer from './components/Footer';\n\nimport { ProofPaymentProps } from './type';\nimport { ProofOfPaymentProvider } from './lib';\n\nconst media: any = {\n '@media max-width: 400': {\n flexDirection: 'column',\n },\n};\n\nconst styles = StyleSheet.create({\n page: {},\n container: {\n padding: 20,\n flex: 1,\n flexDirection: 'column',\n ...media,\n },\n columnsContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginTop: 40,\n marginBottom: 20,\n },\n});\n\nconst ProofOfPayment: FC<ProofPaymentProps> = props => {\n return (\n <ProofOfPaymentProvider value={{ ...props }}>\n <Document author=\"Wekiwi SAS\" title=\"JUSTIFICATIF-DE-PAIEMENT\">\n <Page size=\"A4\" style={styles.page}>\n <Header />\n\n <Container>\n <MainTitle />\n\n <View style={styles.columnsContainer}>\n <LeftColumn />\n <RightColumn />\n </View>\n\n <BottomText />\n\n <Footer />\n </Container>\n\n <PageNumber />\n </Page>\n </Document>\n </ProofOfPaymentProvider>\n );\n};\n\nexport default ProofOfPayment;\n","import { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter, switchMap } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n} from 'typesafe-actions';\nimport {\n TResponse,\n TInvoice,\n TPrepayment,\n TTransaction,\n TAdhoc,\n TEPInvoice,\n} from 'Models';\nimport { RootAction, RootState, Services } from 'Types';\nimport Config from '../utils/config';\nimport {\n FETCH_PIECES_FAILURE,\n FETCH_PIECES_SUCCESS,\n FETCH_PIECES_REQUEST,\n CREATE_PAYMENT_REQUEST,\n CREATE_PAYMENT_SUCCESS,\n CREATE_PAYMENT_FAILURE,\n CREATE_PAYMENT_RESET,\n FETCH_BALANCE_REQUEST,\n FETCH_BALANCE_SUCCESS,\n FETCH_BALANCE_FAILURE,\n GET_SUPPORTING_DOCUMENTS_REQUEST,\n GET_SUPPORTING_DOCUMENTS_FAILURE,\n GET_SUPPORTING_DOCUMENTS_SUCCESS,\n RESET_SUPPORTING_DOCUMENT,\n FETCH_EPINVOICES_REQUEST,\n FETCH_EPINVOICES_SUCCESS,\n} from './actionTypes';\nimport { ProofPaymentProps } from '../components/PDFs/ProofOfPayment/type';\n\nimport { generateProofOfPayment } from '../components/PDFs/ProofOfPayment';\nimport { config } from 'process';\nexport type GetSupportingDocumentsRequest = Partial<{\n mode: 'proofOfResidence' | 'proofOfPayment';\n contractNbr: string;\n customerNbr: string;\n customerType: string;\n cunstomerName: {\n civility: string;\n firstName: string;\n lastName: string;\n };\n coholderName: {\n civility: string;\n firstName: string;\n lastName: string;\n };\n energyType: string;\n subscriptionDate: string;\n residenceAdress: {\n number: string;\n street: string;\n netArea: string;\n postalCode: string;\n country: string;\n townName: string;\n };\n pieceReference: string;\n pieceType: string;\n pointOfDelivery: string;\n\n actionProps: ProofPaymentProps;\n}>;\n\ninterface IResubmitCollectionRequest {\n dueDate: string;\n piece: TEPInvoice;\n}\ninterface IResubmitCollectionResponse {\n status: string;\n}\n\ninterface IBalanceRequest {\n customerNbr: string;\n contractNbr: string;\n invoiceNbr?: string;\n mode?: string;\n}\n\ninterface IBalanceResponse {\n customerBalance: string;\n contractBalance: string;\n invoiceBalance: string;\n code?: string;\n message?: string;\n}\n\nconst resetUpdate = createStandardAction(CREATE_PAYMENT_RESET)();\nconst resetSupportingDocumentError = createStandardAction(\n RESET_SUPPORTING_DOCUMENT,\n)();\n\ninterface IPieceRequest {\n contractNbr: string;\n invoiceId?: string;\n}\ninterface IPieceResponse {\n invoices: TInvoice[];\n prepayments: TPrepayment[];\n adhocPieces: TAdhoc[];\n error?: TResponse;\n}\n\ninterface IEPInvoiceRequest {\n customerNbr: string;\n contractNbr: string;\n}\n\ninterface IEPInvoiceResponse {\n epInvoice: TEPInvoice[];\n error?: TResponse;\n}\n\nconst fetchPiecesAsync = createAsyncAction(\n FETCH_PIECES_REQUEST,\n FETCH_PIECES_SUCCESS,\n FETCH_PIECES_FAILURE,\n)<IPieceRequest, IPieceResponse, TResponse>();\n\nconst fetchEPInvoicesAsync = createAsyncAction(\n FETCH_EPINVOICES_REQUEST,\n FETCH_EPINVOICES_SUCCESS,\n FETCH_PIECES_FAILURE,\n)<IEPInvoiceRequest, IEPInvoiceResponse, TResponse>();\n\nconst createPaymentAsync = createAsyncAction(\n CREATE_PAYMENT_REQUEST,\n CREATE_PAYMENT_SUCCESS,\n CREATE_PAYMENT_FAILURE,\n)<IResubmitCollectionRequest, IResubmitCollectionResponse, TResponse>();\n\nconst fetchBalanceAsync = createAsyncAction(\n FETCH_BALANCE_REQUEST,\n FETCH_BALANCE_SUCCESS,\n FETCH_BALANCE_FAILURE,\n)<IBalanceRequest, IBalanceResponse, IBalanceResponse>();\n\nconst getSupportingDocumentsAsync = createAsyncAction(\n GET_SUPPORTING_DOCUMENTS_REQUEST,\n GET_SUPPORTING_DOCUMENTS_SUCCESS,\n GET_SUPPORTING_DOCUMENTS_FAILURE,\n)<GetSupportingDocumentsRequest, any, string>();\n\nexport type PiecesAction =\n | ActionType<typeof createPaymentAsync>\n | ActionType<typeof fetchPiecesAsync>\n | ActionType<typeof fetchEPInvoicesAsync>\n | ActionType<typeof resetUpdate>\n | ActionType<typeof getSupportingDocumentsAsync>\n | ActionType<typeof resetSupportingDocumentError>\n | ActionType<typeof fetchBalanceAsync>;\n\nconst prepareBalancePayload = ({\n contractNbr,\n customerNbr,\n}: {\n contractNbr: string;\n customerNbr: string;\n}): IBalanceRequest => {\n return {\n contractNbr,\n customerNbr,\n mode: 'CONTRACT_BALANCE',\n };\n};\n\nconst mapGetBalance = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareBalancePayload(action.payload);\n return apiRequest<IBalanceResponse>({\n path: '/getBalance',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IBalanceResponse) => {\n if (response) return of(fetchBalanceAsync.success(response));\n return throwError({ code: '200', message: response });\n }),\n catchError(error => of(fetchBalanceAsync.failure(error))),\n );\n};\n\nconst fetchBalanceEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchBalanceAsync.request)),\n mergeMap(action => mapGetBalance(action, dependency)),\n );\n\nconst preparePiecesPayload = ({ contractNbr, invoiceId }: IPieceRequest) => {\n if (invoiceId) {\n return {\n invoiceId,\n contractId: contractNbr,\n };\n }\n return {\n contractId: contractNbr,\n };\n};\n\nconst mapGetPiece = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePiecesPayload(action.payload);\n return apiRequest<IPieceResponse>({\n path: '/financialPieces',\n method: 'post',\n body: payload,\n isPay: true,\n }).pipe(\n mergeMap((response: IPieceResponse) => {\n if (response && response.error === undefined) {\n return of(fetchPiecesAsync.success(response));\n }\n let message = 'failure';\n if (response.error) {\n message = response.error.description || 'failure';\n }\n return of(fetchPiecesAsync.failure({ code: '500', message }));\n }),\n catchError(error => of(fetchPiecesAsync.failure(error))),\n );\n};\n\nconst prepareEPInvoicesPayload = ({\n contractNbr,\n customerNbr,\n}: IEPInvoiceRequest) => {\n return {\n jsonrpc: '2.0',\n id: 'EC01',\n params: {\n username: Config.EnergyPaid.username,\n password: Config.EnergyPaid.password,\n customer_ref: customerNbr,\n contract_ref: contractNbr,\n },\n };\n};\n\nconst mapGetEPInvoice = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareEPInvoicesPayload(action.payload);\n return apiRequest<IEPInvoiceResponse>({\n path: '/ws_portal_get_customer_invoice_list/wsportal',\n method: 'post',\n body: payload,\n isPay: false,\n isPayEP: true,\n }).pipe(\n mergeMap((response: IEPInvoiceResponse) => {\n if (response && response.error === undefined) {\n return of(fetchEPInvoicesAsync.success(response));\n }\n let message = 'failure';\n if (response.error) {\n message = response.error.description || 'failure';\n }\n return of(fetchEPInvoicesAsync.failure({ code: '500', message }));\n }),\n catchError(error => of(fetchEPInvoicesAsync.failure(error))),\n );\n};\n\nconst mapGetSupportingDocuments = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const {\n payload: { actionProps, ...apiPayload },\n }: any = action;\n\n return apiRequest<any>({\n path: '/getSupportingDocuments',\n method: 'post',\n body: apiPayload,\n }).pipe(\n mergeMap((response: any) => {\n if (response && typeof response === 'string') {\n generateProofOfPayment(actionProps);\n\n return of(getSupportingDocumentsAsync.success(response));\n }\n\n return of(getSupportingDocumentsAsync.failure(response.message));\n }),\n catchError(error =>\n of(getSupportingDocumentsAsync.failure(error.message)),\n ),\n );\n};\n\nconst getSupportingDocumentsEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(getSupportingDocumentsAsync.request)),\n mergeMap(action => mapGetSupportingDocuments(action, dependency)),\n );\n\nconst fetchPiecesEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchPiecesAsync.request)),\n mergeMap(action => mapGetPiece(action, dependency)),\n );\n\nconst fetchEPInvoiceEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchEPInvoicesAsync.request)),\n mergeMap(action => mapGetEPInvoice(action, dependency)),\n );\n\nconst prepareCreatePaymentPayload = ({\n piece,\n dueDate,\n}: IResubmitCollectionRequest) => {\n return {\n payment: piece,\n dueDate,\n mode: 'CREATE_PAYMENT',\n customerNbr: piece.partner_ref,\n contractNbr: piece.contract,\n };\n};\n\nconst mapResubmit = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareCreatePaymentPayload(action.payload);\n return apiRequest<any>({\n path: '/getDocumentsList',\n method: 'post',\n body: payload,\n }).pipe(\n switchMap((response: any) => {\n if (response && response.financialPieces) {\n if (response.financialPieces.result.status === 'ok') {\n return of(\n createPaymentAsync.success({\n status: 'ok',\n }),\n );\n }\n const message = response.error\n ? response.description\n : 'Erreur';\n return of(createPaymentAsync.failure({ code: '500', message }));\n }\n return of(\n createPaymentAsync.failure({ code: '500', message: 'Erreur' }),\n );\n }),\n catchError(error => {\n return of(\n createPaymentAsync.failure({\n code: error.code,\n message: error.message,\n }),\n );\n }),\n );\n};\n\nconst createPaymentEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createPaymentAsync.request)),\n mergeMap(action => mapResubmit(action, dependency)),\n );\n\nexport {\n mapGetPiece,\n mapGetEPInvoice,\n fetchPiecesAsync,\n fetchEPInvoicesAsync,\n fetchPiecesEpic,\n fetchEPInvoiceEpic,\n createPaymentEpic,\n createPaymentAsync,\n resetUpdate,\n mapGetBalance,\n fetchBalanceAsync,\n fetchBalanceEpic,\n getSupportingDocumentsEpic,\n getSupportingDocumentsAsync,\n resetSupportingDocumentError,\n};\n","import { pdf } from '@react-pdf/renderer';\nimport React from 'react';\nimport ProofOfPayment from './ProofOfPayment';\nimport { ProofPaymentProps } from './type';\n\nexport default function(props: ProofPaymentProps) {\n pdf(<ProofOfPayment {...props} />)\n .toBlob()\n .then(blob => {\n window.open(URL.createObjectURL(blob));\n });\n}\n","import { Epic } from 'redux-observable';\nimport { of, forkJoin, Observable, throwError } from 'rxjs';\nimport { mergeMap, switchMap, catchError, filter, merge } from 'rxjs/operators';\nimport {\n createAsyncAction,\n createStandardAction,\n isActionOf,\n ActionType,\n getType,\n} from 'typesafe-actions';\n\nimport { RootAction, RootState, Services } from 'Types';\nimport {\n TPackage,\n TPrepaymentFrequency,\n TContract,\n TProduct,\n TOffer,\n TResponse,\n TEstimate,\n} from 'Models';\nimport {\n EEnergy,\n ECustomerType,\n EModeManageOffer,\n EFrequency,\n ETimeframe,\n ERateOption,\n} from '../utils/enums';\nimport {\n FETCH_PACKAGE_REQUEST,\n FETCH_PACKAGE_SUCCESS,\n FETCH_PACKAGE_FAILURE,\n FETCH_PRODUCT_REQUEST,\n FETCH_PRODUCT_SUCCESS,\n FETCH_PRODUCT_FAILURE,\n FETCH_OFFER_REQUEST,\n FETCH_OFFER_SUCCESS,\n FETCH_OFFER_FAILURE,\n UPDATE_PACKAGE_REQUEST,\n UPDATE_PACKAGE_SUCCESS,\n UPDATE_PACKAGE_FAILURE,\n UPDATE_PACKAGE_RESET,\n} from './actionTypes';\nimport { getTodayDate } from '../utils/helpers';\nimport {\n mapCreateEvent,\n ICreateEventPayload,\n createEventAsync,\n} from './event.actions';\nimport { getNewAdditionalRates } from '../utils/network/request';\n\ninterface IPayloadPackage {\n contractNbr: string;\n estimates?: TEstimate[];\n customerType?: ECustomerType;\n energy?: EEnergy;\n reference?: string;\n packagesList?: TPackage[];\n prepaymentFrequencies?: TPrepaymentFrequency[];\n error?: string;\n productCode?: TProduct;\n contracts?: TContract[];\n contract?: TContract;\n}\n\ninterface IPayloadPackDynamicRequest {\n contracts: TContract[];\n}\n\ninterface IPayloadPackDynamicResponse {\n packages: TPackage[];\n}\n\ninterface IPayloadProduct {\n customerType?: ECustomerType;\n contracts?: TContract[];\n productsList?: TProduct[];\n error?: string;\n}\n\ninterface IPayloadOffer {\n customerType?: ECustomerType;\n contracts?: TContract[];\n offers?: TOffer[];\n products?: TProduct[];\n contractNbr?: string;\n error?: string;\n code?: string;\n message?: string;\n}\n\nexport interface IPayloadUpdatePackage {\n customerType?: string;\n customerNbr?: string;\n contract?: TContract;\n mode?: EModeManageOffer;\n chosenPackages?: TPackage[];\n frequency?: EFrequency;\n product?: TProduct;\n option?: {\n label: string;\n active: boolean;\n };\n offer?: TOffer;\n contractNbr?: string;\n code?: string;\n message?: string;\n description?: string;\n event?: ICreateEventPayload;\n}\n\nconst resetUpdate = createStandardAction(UPDATE_PACKAGE_RESET)();\n\nconst fetchPackageAsync = createAsyncAction(\n FETCH_PACKAGE_REQUEST,\n FETCH_PACKAGE_SUCCESS,\n FETCH_PACKAGE_FAILURE,\n)<IPayloadPackage, IPayloadPackage, TResponse>();\n\nconst fetchProductAsync = createAsyncAction(\n FETCH_PRODUCT_REQUEST,\n FETCH_PRODUCT_SUCCESS,\n FETCH_PRODUCT_FAILURE,\n)<IPayloadProduct, IPayloadProduct, TResponse>();\n\nconst fetchOfferAsync = createAsyncAction(\n FETCH_OFFER_REQUEST,\n FETCH_OFFER_SUCCESS,\n FETCH_OFFER_FAILURE,\n)<IPayloadOffer, IPayloadOffer, TResponse>();\n\nconst updatePackageAsync = createAsyncAction(\n UPDATE_PACKAGE_REQUEST,\n UPDATE_PACKAGE_SUCCESS,\n UPDATE_PACKAGE_FAILURE,\n)<IPayloadUpdatePackage, IPayloadUpdatePackage, TResponse>();\n\nexport type PackageAction =\n | ActionType<typeof fetchPackageAsync>\n | ActionType<typeof fetchProductAsync>\n | ActionType<typeof fetchOfferAsync>\n | ActionType<typeof updatePackageAsync>\n | ActionType<typeof resetUpdate>;\n\nconst preparePayloadFetchPackage = ({\n energy,\n reference,\n customerType,\n estimates,\n}: IPayloadPackage) => {\n return {\n customerType,\n mode: 'POINT_OF_DELIVERY',\n estimates,\n pointOfDeliveryList: [\n {\n energy,\n reference,\n },\n ],\n };\n};\n\nconst preparePayloadFetchPackageEstimates = ({\n customerType,\n estimates,\n}: IPayloadPackage) => {\n return {\n customerType,\n mode: 'ESTIMATE',\n estimates,\n };\n};\n\nconst preparePayloadFetchPackDynamic = ({ contract }: any) => {\n return {\n contracts: [\n {\n ...contract,\n },\n ],\n };\n};\n\nconst mapFetchPackage = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadFetchPackage(action.payload);\n return apiRequest<IPayloadPackage>({\n path: '/getPackages',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadPackage) => {\n if (!response) {\n return of(\n fetchPackageAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n }),\n );\n }\n return of(\n fetchPackageAsync.success({\n packagesList: response.packagesList,\n prepaymentFrequencies: response.prepaymentFrequencies,\n contractNbr: action.payload.contractNbr,\n productCode: action.payload.productCode,\n contracts: response.contracts && response.contracts,\n contract: action.payload.contract,\n }),\n );\n }),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n};\n\nconst mapFetchPackageEstimates = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const estimate = [\n {\n timeFrame: ETimeframe.TOTAL_HOUR,\n quantity: action.payload.packagesList[0].packageQuantity + 1,\n energy: action.payload.packagesList[0].energy,\n },\n ];\n\n const payload = preparePayloadFetchPackageEstimates({\n ...action.payload,\n estimates: estimate,\n });\n\n return apiRequest<IPayloadPackage>({\n path: '/getPackages',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadPackage) => {\n if (!response) {\n return of(\n fetchPackageAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n }),\n );\n }\n return of(\n fetchPackageAsync.success({\n packagesList: response.packagesList,\n prepaymentFrequencies: response.prepaymentFrequencies,\n contractNbr: action.payload.contractNbr,\n productCode: action.payload.productCode,\n contracts: response.contracts && response.contracts,\n }),\n );\n }),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n};\n\nconst mapFetchPackDynamic = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadFetchPackDynamic(action.payload);\n return apiRequest<IPayloadPackDynamicResponse>({\n path: '/getPack',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadPackDynamicResponse) => {\n if (!response) {\n return of(\n fetchPackageAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n }),\n );\n }\n return of(\n fetchPackageAsync.success({\n packagesList: response.packages,\n contractNbr: action.payload.contractNbr,\n customerType: action.payload.contracts[0].customerType,\n contract: action.payload.contract,\n }),\n );\n }),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n};\n\nconst fetchPackageEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchPackageAsync.request)),\n switchMap(action =>\n mapFetchPackage(action, dependency).pipe(\n switchMap(response => mapFetchPackDynamic(response, dependency).pipe(\n switchMap(response =>\n mapFetchPackageEstimates(response, dependency),\n ),\n )),\n ),\n ),\n catchError(error => of(fetchPackageAsync.failure(error))),\n );\n\nconst getEstimates = (contract?: TContract): TEstimate[] => {\n if (contract === undefined) {\n return [];\n }\n const estimates = contract.estimates;\n if (estimates && estimates[0].quantity > 0) {\n return estimates;\n }\n if (contract.rateOption === ERateOption.TOTAL_HOUR) {\n return [\n {\n energy: contract.energy,\n timeframe: ETimeframe.TOTAL_HOUR,\n quantity: 1,\n },\n ];\n }\n if (contract.rateOption === ERateOption.HIGH_LOW) {\n return [\n {\n energy: contract.energy,\n timeframe: ETimeframe.HIGH,\n quantity: 1,\n },\n {\n energy: contract.energy,\n timeframe: ETimeframe.LOW,\n quantity: 1,\n },\n ];\n }\n return [];\n};\n\nconst preparePayloadFetchOffer = ({\n contracts,\n customerType,\n}: IPayloadOffer) => {\n const modifiedContracts =\n contracts &&\n contracts.map(contract => {\n const estimates = getEstimates(contract);\n return {\n ...contract,\n estimates,\n };\n });\n return {\n customerType,\n contracts: modifiedContracts,\n\n contractChannel: Boolean(\n modifiedContracts &&\n modifiedContracts[0] &&\n modifiedContracts[0].channel,\n )\n ? (modifiedContracts as any)[0].channel\n : null,\n };\n};\n\nconst mapFetchOffer = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable<IPayloadOffer> => {\n const payload = preparePayloadFetchOffer(action.payload);\n return apiRequest<IPayloadOffer>({\n path: '/getOffers',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadOffer) => {\n if (response && response.code !== 'UNEXPECTED_ERROR') {\n const contractNbr = action.payload.contracts[0].contractNumber;\n return of({\n contractNbr,\n offers: response.offers,\n });\n }\n return of({\n code: '500',\n message: 'failure',\n error: 'failure',\n });\n }),\n catchError(error =>\n of({\n code: '500',\n message: 'failure',\n error: 'failure',\n }),\n ),\n );\n};\n\nconst fetchOfferEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchOfferAsync.request)),\n mergeMap(action => mapFetchOffer(action, dependency)),\n );\n\nconst preparePayloadFetchProduct = ({\n customerType,\n contracts,\n}: IPayloadProduct) => {\n return {\n customerType,\n contracts,\n contextOfUse: 'MARKET',\n contractChannel: Boolean(\n contracts && contracts[0] && contracts[0].channel,\n )\n ? (contracts as any)[0].channel\n : null,\n };\n};\n\nconst mapFetchProduct = (\n action: RootAction,\n { apiRequest }: Services,\n): Observable<IPayloadProduct> => {\n const payload = preparePayloadFetchProduct(action.payload);\n return apiRequest<IPayloadProduct>({\n path: '/getProducts',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: IPayloadProduct) => {\n if (response.productsList) {\n return of({ productsList: response.productsList });\n }\n return of({\n error: 'failure',\n code: '200',\n message: 'Erreur serveur',\n });\n }),\n catchError(error =>\n of({\n error: error.message,\n code: error.code,\n message: error.message,\n }),\n ),\n );\n};\n\nconst fetchProductEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchProductAsync.request)),\n switchMap(\n (action: RootAction) => mapFetchProduct(action, dependency),\n (action: RootAction, r: IPayloadProduct) => [action, r],\n ),\n switchMap(([action, productResponse]) => {\n if (productResponse.code === '401') {\n return forkJoin(\n of(productResponse),\n mapFetchOffer(action, dependency),\n );\n // return throwError(productResponse);\n }\n const { contracts }: IPayloadProduct = action.payload;\n if (contracts && contracts[0].offer) {\n return forkJoin(of(productResponse));\n }\n return forkJoin(\n of(productResponse),\n mapFetchOffer(action, dependency),\n );\n }),\n switchMap(([productResponse, offerResponse]) => {\n const promiseProduct = productResponse.error\n ? fetchProductAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n })\n : fetchProductAsync.success({\n productsList: productResponse.productsList,\n });\n if (!offerResponse) {\n return of(promiseProduct);\n }\n const promiseOffer = offerResponse.error\n ? fetchOfferAsync.failure({\n code: '500',\n message: 'Erreur serveur',\n })\n : fetchOfferAsync.success({\n products: productResponse.productsList,\n offers: offerResponse.offers,\n contractNbr: offerResponse.contractNbr,\n });\n\n return of(promiseProduct, promiseOffer);\n }),\n catchError(error => {\n return of(fetchProductAsync.failure(error));\n }),\n );\n\nconst createProduct = ({\n payloadProduct,\n contract,\n}: {\n payloadProduct: any;\n contract: any;\n}) => ({\n ...payloadProduct,\n additionalRates:\n contract.chosenProduct.additionalRates ||\n payloadProduct.additionalRates,\n});\n\nconst preparePayloadUpdatePackage = ({\n customerNbr,\n contract,\n mode,\n product,\n chosenPackages,\n frequency,\n option,\n}: IPayloadUpdatePackage) => {\n if (contract === undefined) {\n return {\n customerNbr,\n mode,\n contract,\n };\n }\n const modifiedContract: TContract = { ...contract };\n switch (mode) {\n case EModeManageOffer.INSTALLMENT_FREQUENCY: {\n if (frequency) {\n modifiedContract.installmentFrequency = frequency;\n }\n break;\n }\n\n case EModeManageOffer.PACKAGE: {\n if (chosenPackages) {\n modifiedContract.chosenPackages = chosenPackages;\n }\n break;\n }\n\n case EModeManageOffer.PRODUCT: {\n if (product) {\n const today = getTodayDate();\n modifiedContract.chosenProduct = {\n ...createProduct({ contract, payloadProduct: product }),\n effectiveDate: today,\n };\n // modifiedContract.effectiveStartDate = today;\n }\n break;\n }\n\n case EModeManageOffer.OPTIONS: {\n if (option) {\n let additionalRates =\n modifiedContract.chosenProduct.additionalRates;\n if (additionalRates) {\n additionalRates = additionalRates.map(r => {\n if (r.label !== option.label) {\n if (r.updated) delete r.updated;\n return r;\n }\n return {\n ...r,\n active: option.active,\n updated: true,\n };\n });\n }\n modifiedContract.chosenProduct = {\n ...modifiedContract.chosenProduct,\n additionalRates,\n };\n }\n break;\n }\n\n default:\n break;\n }\n return {\n customerNbr,\n mode,\n contract: modifiedContract,\n };\n};\n\nconst mapUpdatePackage = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadUpdatePackage(action.payload);\n return apiRequest<IPayloadUpdatePackage>({\n path: '/manageOffer',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: IPayloadUpdatePackage) => {\n // Server might respond with code and description\n // It should always return code and message\n\n if (response) {\n if (response.code === 'OK') {\n return of({\n code: response.code,\n contract: payload.contract,\n });\n }\n if (response.code === 'KO') {\n return of({\n code: response.code,\n description: response.description,\n });\n }\n }\n\n return of({\n code: '500',\n message: 'Erreur serveur',\n });\n }),\n catchError(error => of(error)),\n );\n};\n\nconst updatePackageEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(updatePackageAsync.request)),\n switchMap(\n (action: RootAction) => {\n if (action.payload.mode === EModeManageOffer.PRODUCT) {\n const modifiedAction = {\n ...action,\n payload: {\n ...action.payload,\n contracts: [\n {\n ...action.payload.contract,\n chosenProduct: createProduct({\n payloadProduct: action.payload.product,\n contract: action.payload.contract,\n }),\n },\n ],\n },\n };\n return mapFetchOffer(modifiedAction, dependency);\n }\n return mapUpdatePackage(action, dependency);\n },\n (action: RootAction, r: IPayloadUpdatePackage) => [action, r],\n ),\n switchMap(([action, packageResponse]) => {\n if (packageResponse.offers) {\n const modifiedAction = {\n ...action,\n payload: {\n ...action.payload,\n contract: {\n ...action.payload.contract,\n\n chosenProduct: createProduct({\n payloadProduct: action.payload.product,\n contract: action.payload.contract,\n }),\n offer: packageResponse.offers[0],\n },\n },\n };\n return forkJoin(\n of(action),\n mapUpdatePackage(modifiedAction, dependency),\n of(packageResponse),\n );\n }\n return forkJoin(of(action), of(packageResponse));\n }),\n switchMap(([action, firstResponse, secondResponse]) => {\n const newActionEvent = {\n type: getType(createEventAsync.request),\n payload: { ...action.payload.event },\n };\n if (\n firstResponse.code !== 'KO' &&\n secondResponse &&\n secondResponse.offers\n ) {\n return forkJoin(\n of(firstResponse),\n of({\n offers: secondResponse.offers,\n contractNbr: secondResponse.contractNbr,\n }),\n mapCreateEvent(newActionEvent, dependency),\n );\n }\n\n if (firstResponse.code === 'OK') {\n return forkJoin(\n of(firstResponse),\n of(undefined),\n mapCreateEvent(newActionEvent, dependency),\n );\n }\n return forkJoin(of(firstResponse));\n }),\n switchMap(([firstResponse, secondResponse, eventResponse]) => {\n if (\n firstResponse.code === '401' ||\n firstResponse.code === '500' ||\n firstResponse.code === '0'\n ) {\n return of(updatePackageAsync.failure(firstResponse));\n }\n\n if (secondResponse) {\n return of(\n updatePackageAsync.success(firstResponse),\n fetchOfferAsync.success(secondResponse),\n );\n }\n\n return of(updatePackageAsync.success(firstResponse));\n }),\n catchError(error => {\n return of(updatePackageAsync.failure(error));\n }),\n );\n\nexport {\n fetchPackageAsync,\n fetchPackageEpic,\n fetchProductAsync,\n fetchProductEpic,\n fetchOfferAsync,\n fetchOfferEpic,\n updatePackageAsync,\n updatePackageEpic,\n resetUpdate,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n FETCH_CUSTOMER_CONTRACT_FAILURE,\n FETCH_CUSTOMER_CONTRACT_REQUEST,\n FETCH_CUSTOMER_CONTRACT_SUCCESS,\n RESET_UPLOAD_AMENDMENTS,\n UPLOAD_AMENDMENTS_FAILURE,\n UPLOAD_AMENDMENTS_REQUEST,\n UPLOAD_AMENDMENTS_SUCCESS,\n} from './actionTypes';\nimport { Epic } from 'redux-observable';\n\nimport { TCustomer } from '../constants/key-system';\n\nexport type TCustomerContractPayload = Partial<{\n customerId: string;\n contractId: string;\n clientFirstName: string;\n clientLastName: string;\n companyName: string;\n fromDate: string;\n toDate: string;\n}>;\n\nexport type TUploadAmendmentsPayload = {\n riders: Array<{\n contractNbr: string;\n customerNbr: string;\n riderEffectiveStartDate: string;\n productCode: string;\n productType: string;\n refDateForFixedPrice: string;\n p0_hc: string;\n p0: string;\n indice: string;\n }>;\n};\ninterface IResponseClient {\n customers: TCustomer[];\n}\n\nconst fetchCustomerContractAsync = createAsyncAction(\n FETCH_CUSTOMER_CONTRACT_REQUEST,\n FETCH_CUSTOMER_CONTRACT_SUCCESS,\n FETCH_CUSTOMER_CONTRACT_FAILURE,\n)<TCustomerContractPayload, IResponseClient, ReducerError>();\n\nconst uploadAmendmentsAsync = createAsyncAction(\n UPLOAD_AMENDMENTS_REQUEST,\n UPLOAD_AMENDMENTS_SUCCESS,\n UPLOAD_AMENDMENTS_FAILURE,\n)<TUploadAmendmentsPayload, any, ReducerError>();\n\nconst resetUploadAmendments = createStandardAction(RESET_UPLOAD_AMENDMENTS)();\n\nexport type CustomersContractAction =\n | ActionType<typeof fetchCustomerContractAsync>\n | ActionType<typeof resetUploadAmendments>\n | ActionType<typeof uploadAmendmentsAsync>;\n\nconst preparePayloadCustomerContract = (\n payload: TCustomerContractPayload,\n): TCustomerContractPayload => {\n return { ...payload };\n};\n\nconst mapGetCustomerContract = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadCustomerContract(action.payload);\n return apiRequest<IResponseClient>({\n path: '/customerAndContract',\n method: 'post',\n body: payload,\n isPay: true,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n fetchCustomerContractAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(fetchCustomerContractAsync.success(response));\n }),\n catchError(error => {\n return of(\n fetchCustomerContractAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst mapUploadAmendments = (action: RootAction, { apiRequest }: Services) => {\n return apiRequest<any>({\n path: '/uploadAmendments',\n method: 'post',\n body: action.payload,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n uploadAmendmentsAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(uploadAmendmentsAsync.success(response));\n }),\n catchError(error => {\n return of(\n uploadAmendmentsAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst uploadAmendmentsEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(uploadAmendmentsAsync.request)),\n mergeMap(action => mapUploadAmendments(action, dependency)),\n );\n\nconst customerContractEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(fetchCustomerContractAsync.request)),\n mergeMap(action => mapGetCustomerContract(action, dependency)),\n );\n\nexport {\n fetchCustomerContractAsync,\n customerContractEpic,\n mapGetCustomerContract,\n uploadAmendmentsAsync,\n uploadAmendmentsEpic,\n resetUploadAmendments,\n};\n","import WordingConstant from '../wording.json';\n\nconst Wording = WordingConstant.Errors;\nconst defaultMessage = Wording.default;\n\n// Generics\n\nexport class RequestError extends Error {\n public code: number | null | string;\n public data: any | null;\n constructor(\n message: string = defaultMessage,\n code: number | null | string = null,\n data: any | null = null,\n ) {\n super(message);\n this.code = code;\n this.data = data;\n }\n}\n\nexport class ParsingError extends RequestError {\n constructor() {\n super(Wording.parsing, null, null);\n }\n}\n\nexport class FunctionNameError extends RequestError {\n constructor() {\n super(Wording.fnName, null, null);\n }\n}\n\nexport function parseError(res: any) {\n // TODO\n return new RequestError(defaultMessage);\n}\n\n// Specifics\n\nexport class ExternalError extends RequestError {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport class NoDaysListError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noDaysList);\n }\n}\n\nexport class NoPackageListError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noPackageList);\n }\n}\n\nexport class NoMatchingPackagesError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noMatchingPackages);\n }\n}\n\nexport class NoEnergySelectionError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.noEnergySelection);\n }\n}\n\nexport class SessionExpiredError extends RequestError {\n constructor(message?: string) {\n super(message || Wording.sessionExpired);\n }\n}\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport { createAsyncAction, ActionType, isActionOf } from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services } from 'Types';\nimport {\n FETCH_ORDER_REQUEST,\n FETCH_ORDER_SUCCESS,\n FETCH_ORDER_FAILURE,\n SEARCH_USER_REQUEST,\n SEARCH_USER_SUCCESS,\n SEARCH_USER_FAILURE,\n} from './actionTypes';\nimport { TContract, TFinance, TOrder } from 'Models';\nimport { Epic } from 'redux-observable';\n\nimport { RequestError } from '../utils/network/errors';\n\nimport config from '../utils/config';\nimport {\n EFirstPaymentCBStatuses,\n EOrderStatuses,\n TAddress,\n TBirthTown,\n} from '../utils/network/types';\nimport { ECivility, ECustomerType } from '../utils/enums';\nimport { log } from '../utils/helpers';\n\nexport type TOrderPayload = Partial<{\n fromDate: string | null;\n toDate: string | null;\n email: string | null;\n orderNumber: string | null;\n firstName: string | null;\n lastName: string | null;\n processType: string | null;\n phone: string | null;\n externalReference: string | null;\n channel: string | null | string[];\n createdBy: string | null;\n}>;\n\nexport type TOrderResponse = {\n order: {\n orderReference: string;\n externalReference: string;\n orderStatus: EOrderStatuses;\n firstPaymentCBStatus: EFirstPaymentCBStatuses;\n customer: {\n customerNumber: string;\n type: ECustomerType;\n contact: {\n civility: ECivility;\n firstName: string;\n lastName: string;\n birthdate: string;\n address: TAddress;\n birthTown: Partial<TBirthTown> &\n Required<Pick<TBirthTown, 'townName' | 'country'>>;\n email: string;\n phone: string;\n companyName: string;\n };\n finance: Partial<TFinance>;\n };\n contracts: TContract[];\n };\n channel: string;\n};\n\nconst fetchOrderAsync = createAsyncAction(\n FETCH_ORDER_REQUEST,\n FETCH_ORDER_SUCCESS,\n FETCH_ORDER_FAILURE,\n)<TOrderPayload, TOrder[], ReducerError>();\n\nconst searchClientAsync = createAsyncAction(\n SEARCH_USER_REQUEST,\n SEARCH_USER_SUCCESS,\n SEARCH_USER_FAILURE,\n)<TOrderPayload, TOrderResponse[], ReducerError>();\n\nexport type FetchOrderAction = ActionType<\n typeof fetchOrderAsync | typeof searchClientAsync\n>;\n\nconst preparePayloadOrder = (payload: TOrderPayload): TOrderPayload => {\n return {\n fromDate: payload.fromDate || null,\n toDate: payload.toDate || null,\n email: payload.email || null,\n orderNumber: payload.orderNumber || null,\n firstName: payload.firstName || null,\n lastName: payload.lastName || null,\n processType: payload.processType || null,\n phone: payload.phone || null,\n externalReference: payload.externalReference || null,\n channel: payload.channel || null,\n createdBy: payload.createdBy || null,\n };\n};\n\nconst mapGetOrder = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadOrder(action.payload);\n\n return apiRequest<TOrder[]>({\n isSubscription: true,\n method: 'POST',\n path: '/searchOrder',\n body: payload,\n lambdaFunctionName: config.FunctionNames.searchOrder,\n }).pipe(\n mergeMap((response: any | RequestError) => {\n if (\n response instanceof RequestError &&\n response.code !== undefined\n ) {\n return of(\n fetchOrderAsync.failure({\n code: response.code as string,\n message: response.message,\n }),\n );\n }\n\n if (response) {\n try {\n const res = JSON.parse(JSON.stringify(response));\n return of(fetchOrderAsync.success(res));\n } catch (e) {\n return of(\n fetchOrderAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }\n }\n\n return of(\n fetchOrderAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }),\n catchError(error => {\n return of(\n fetchOrderAsync.failure({\n code: error.code,\n message:\n error.code === '0'\n ? error.message\n : JSON.parse(error.message).message,\n }),\n );\n }),\n );\n};\n\nconst orderEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(fetchOrderAsync.request)),\n mergeMap(action => mapGetOrder(action, dependency)),\n );\n\nconst mapGetSearchedClients = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadOrder(action.payload);\n\n return apiRequest<TOrder[]>({\n isSubscription: true,\n method: 'POST',\n path: '/searchOrder',\n body: payload,\n lambdaFunctionName: config.FunctionNames.searchOrder,\n }).pipe(\n mergeMap((response: any | RequestError) => {\n if (\n response instanceof RequestError &&\n response.code !== undefined\n ) {\n return of(\n searchClientAsync.failure({\n code: response.code as string,\n message: response.message,\n }),\n );\n }\n\n if (response) {\n try {\n const res = JSON.parse(JSON.stringify(response));\n\n return of(searchClientAsync.success(res));\n } catch (e) {\n return of(\n searchClientAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }\n }\n\n return of(\n searchClientAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }),\n catchError(error => {\n return of(\n searchClientAsync.failure({\n code: error.code,\n message:\n error.code === '0'\n ? error.message\n : JSON.parse(error.message).message,\n }),\n );\n }),\n );\n};\n\nconst searchClientEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(searchClientAsync.request)),\n mergeMap(action => mapGetSearchedClients(action, dependency)),\n );\n\nexport {\n fetchOrderAsync,\n searchClientAsync,\n orderEpic,\n mapGetOrder,\n searchClientEpic,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n SEARCH_USER_GROUP_REQUEST,\n SEARCH_USER_GROUP_SUCCESS,\n SEARCH_USER_GROUP_FAILURE,\n} from './actionTypes';\nimport { TUser } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TUserPayload = Partial<{\n userName: string;\n email: string;\n firstName: string;\n lastName: string;\n group: string;\n userStatus: string;\n}>;\n\ninterface IResponseClient {\n userList: TUser[];\n code?: string;\n message?: string;\n}\n\nconst searchUserGroupAsync = createAsyncAction(\n SEARCH_USER_GROUP_REQUEST,\n SEARCH_USER_GROUP_SUCCESS,\n SEARCH_USER_GROUP_FAILURE,\n)<TUserPayload, IResponseClient, ReducerError>();\n\nexport type searchUserGroupAction = ActionType<typeof searchUserGroupAsync>;\n\nconst preparePayloadSearchUserGroup = (payload: TUserPayload): TUserPayload => {\n return { ...payload };\n};\n\nconst mapGetSearchUserGroup = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadSearchUserGroup(action.payload);\n return apiRequest<IResponseClient>({\n path: '/searchUserGroup',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n searchUserGroupAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n } else if (response.code === 'EMPTY_RESPONSE') {\n return of(\n searchUserGroupAsync.success({\n userList: [],\n code: response.code,\n message: response.message,\n }),\n );\n }\n return of(searchUserGroupAsync.success(response));\n }),\n catchError(error => {\n return of(\n searchUserGroupAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst searchUserGroupEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(searchUserGroupAsync.request)),\n mergeMap(action => mapGetSearchUserGroup(action, dependency)),\n );\n\nexport { searchUserGroupAsync, searchUserGroupEpic, mapGetSearchUserGroup };\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n RETRY_FIRST_PAYMENT_REQUEST,\n RETRY_FIRST_PAYMENT_SUCCESS,\n RETRY_FIRST_PAYMENT_FAILURE,\n RETRY_FIRST_PAYMENT_RESET_RESPONSE,\n} from './actionTypes';\nimport { TUser } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TRetryPaymentPayload = Partial<{\n customerNbr: string;\n mode: string;\n}>;\n\ninterface IResponseClient {\n status: string,\n message: string,\n}\n\nconst caseResultRetryFirstPaymentAsync = createAsyncAction(\n RETRY_FIRST_PAYMENT_REQUEST,\n RETRY_FIRST_PAYMENT_SUCCESS,\n RETRY_FIRST_PAYMENT_FAILURE,\n RETRY_FIRST_PAYMENT_RESET_RESPONSE,\n)<TRetryPaymentPayload, IResponseClient, ReducerError>();\n\nconst retryFirstPayment = createStandardAction(\n RETRY_FIRST_PAYMENT_RESET_RESPONSE,\n)();\n\nexport type RetryFirstPaymentAction =\n | ActionType<typeof caseResultRetryFirstPaymentAsync>\n | ActionType<typeof retryFirstPayment>;\n\nconst preparePayloadClientSpace = (payload: TRetryPaymentPayload): TRetryPaymentPayload => {\n return { ...payload };\n};\n\nconst mapGetRetryFirstPayment = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadClientSpace(action.payload);\n return apiRequest<IResponseClient>({\n path: '/retryFirstPayment',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n caseResultRetryFirstPaymentAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(caseResultRetryFirstPaymentAsync.success(response));\n }),\n catchError(error => {\n return of(\n caseResultRetryFirstPaymentAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst RetryFirstPaymentEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(caseResultRetryFirstPaymentAsync.request)),\n mergeMap(action => mapGetRetryFirstPayment(action, dependency)),\n );\n\nexport {\n caseResultRetryFirstPaymentAsync,\n RetryFirstPaymentEpic,\n mapGetRetryFirstPayment,\n retryFirstPayment,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n CREATE_GROUP_REQUEST,\n CREATE_GROUP_SUCCESS,\n CREATE_GROUP_FAILURE,\n RESET_GROUP_RESPONSE,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TAuthorizationSchemaSubMenu = {\n id: string;\n label: string;\n root: string;\n groupMode: string;\n subGroupMode: string;\n actionMode: string;\n userLimited?: string;\n};\n\nexport type TAuthorizationSchema = {\n id: string;\n label: string;\n subMenu: TAuthorizationSchemaSubMenu[];\n};\n\nexport type TGroupPayload = Partial<{\n group: string;\n autorizationsScheme: TAuthorizationSchema[];\n}>;\n\nconst createGroupAsync = createAsyncAction(\n CREATE_GROUP_REQUEST,\n CREATE_GROUP_SUCCESS,\n CREATE_GROUP_FAILURE,\n)<TGroupPayload, TResponse, ReducerError>();\n\nconst resetGroupResponse = createStandardAction(RESET_GROUP_RESPONSE)();\n\nexport type CreateGroupAction =\n | ActionType<typeof createGroupAsync>\n | ActionType<typeof resetGroupResponse>;\n\nconst preparePayloadCreateGroup = (payload: TGroupPayload): TGroupPayload => {\n return { ...payload };\n};\n\nconst mapCreateGroup = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreateGroup(action.payload);\n return apiRequest<TResponse>({\n path: '/createGroup',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n createGroupAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(createGroupAsync.success(response));\n }),\n catchError(error => {\n return of(\n createGroupAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst createGroupEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createGroupAsync.request)),\n mergeMap(action => mapCreateGroup(action, dependency)),\n );\n\nexport {\n createGroupAsync,\n createGroupEpic,\n mapCreateGroup,\n resetGroupResponse,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n GET_GROUP_REQUEST,\n GET_GROUP_SUCCESS,\n GET_GROUP_FAILURE,\n RESET_USER_GROUP_RESPONSE,\n} from './actionTypes';\nimport { Epic } from 'redux-observable';\n\ninterface IResponseClient {\n groupList: [];\n}\n\nexport type TGetGroupPayload = Partial<{\n group: string;\n}>;\n\nconst getGroupAsync = createAsyncAction(\n GET_GROUP_REQUEST,\n GET_GROUP_SUCCESS,\n GET_GROUP_FAILURE,\n RESET_USER_GROUP_RESPONSE,\n)<undefined, IResponseClient, ReducerError>();\n\nconst resetGroupListResponse = createStandardAction(\n RESET_USER_GROUP_RESPONSE,\n)();\n\nexport type getGroupAction =\n | ActionType<typeof getGroupAsync>\n | ActionType<typeof resetGroupListResponse>;\n\nconst preparePayloadGetGroup = (payload: string): string => {\n return payload;\n};\n\nconst mapGetGroup = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadGetGroup(action.payload);\n return apiRequest<IResponseClient>({\n path: '/getGroup',\n method: 'post',\n body: 'group',\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n getGroupAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(getGroupAsync.success(response));\n }),\n catchError(error => {\n return of(\n getGroupAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst getGroupEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(getGroupAsync.request)),\n mergeMap(action => mapGetGroup(action, dependency)),\n );\n\nexport { getGroupAsync, getGroupEpic, mapGetGroup, resetGroupListResponse };\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n CREATE_USER_REQUEST,\n CREATE_USER_SUCCESS,\n CREATE_USER_FAILURE,\n RESET_CREATE_USER_RESPONSE,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TCreateUserPayload = Partial<{\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n userName?: string;\n}>;\n\nconst createUserAsync = createAsyncAction(\n CREATE_USER_REQUEST,\n CREATE_USER_SUCCESS,\n CREATE_USER_FAILURE,\n)<TCreateUserPayload, TResponse, ReducerError>();\n\nconst resetCreateUserResponse = createStandardAction(\n RESET_CREATE_USER_RESPONSE,\n)();\n\nexport type CreateUserAction =\n | ActionType<typeof createUserAsync>\n | ActionType<typeof resetCreateUserResponse>;\n\nconst preparePayloadCreateUser = (\n payload: TCreateUserPayload,\n): TCreateUserPayload => {\n return { ...payload };\n};\n\nconst mapCreateUser = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreateUser(action.payload);\n return apiRequest<TResponse>({\n path: '/createUser',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n createUserAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(createUserAsync.success(response));\n }),\n catchError(error => {\n return of(\n createUserAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst createUserEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createUserAsync.request)),\n mergeMap(action => mapCreateUser(action, dependency)),\n );\n\nexport {\n createUserAsync,\n createUserEpic,\n mapCreateUser,\n resetCreateUserResponse,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport { createAsyncAction, ActionType, isActionOf } from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n CREATE_PASSWORD_FAILURE,\n CREATE_PASSWORD_SUCCESS,\n CREATE_PASSWORD_REQUEST,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\nimport { CreatePasswordMode } from '../utils/enums';\n\nexport type TCreatePasswordPayload = Partial<{\n customerNbr: string;\n temporaryPassword: string;\n newPassword: string;\n mode: CreatePasswordMode;\n}>;\n\nconst createPasswordAsync = createAsyncAction(\n CREATE_PASSWORD_FAILURE,\n CREATE_PASSWORD_SUCCESS,\n CREATE_PASSWORD_REQUEST,\n)<TCreatePasswordPayload, TResponse, ReducerError>();\n\nexport type CreatePasswordAction = ActionType<typeof createPasswordAsync>;\n\nconst preparePayloadCreatePssword = (\n payload: TCreatePasswordPayload,\n): TCreatePasswordPayload => {\n return { ...payload };\n};\n\nconst mapCreatePassword = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadCreatePssword(action.payload);\n return apiRequest<TResponse>({\n path: '/resetPassword',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: TResponse | TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'UNEXPECTED_ERROR' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n createPasswordAsync.failure({\n code: response.code,\n message: response.message,\n }),\n );\n }\n return of(createPasswordAsync.success(response as TResponse));\n }),\n catchError(error => {\n return of(\n createPasswordAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst createPasswordEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createPasswordAsync.request)),\n mergeMap(action => mapCreatePassword(action, dependency)),\n );\n\nexport { createPasswordAsync, createPasswordEpic, mapCreatePassword };\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n MANAGE_USER_REQUEST,\n MANAGE_USER_SUCCESS,\n MANAGE_USER_FAILURE,\n RESET_RESPONSE,\n} from './actionTypes';\nimport { TResponse } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TManageUserPayload = Partial<{\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}>;\n\nconst manageUserAsync = createAsyncAction(\n MANAGE_USER_REQUEST,\n MANAGE_USER_SUCCESS,\n MANAGE_USER_FAILURE,\n)<TManageUserPayload, TResponse, ReducerError>();\n\nconst resetManageUserResponse = createStandardAction(RESET_RESPONSE)();\n\nexport type ManageUserAction =\n | ActionType<typeof manageUserAsync>\n | ActionType<typeof resetManageUserResponse>;\n\nconst preparePayloadManageUser = (\n payload: TManageUserPayload,\n): TManageUserPayload => {\n return { ...payload };\n};\n\nconst mapManageUser = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadManageUser(action.payload);\n return apiRequest<TResponse>({\n path: '/manageUser',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n manageUserAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(manageUserAsync.success(response));\n }),\n catchError(error => {\n return of(\n manageUserAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst manageUserEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(manageUserAsync.request)),\n mergeMap(action => mapManageUser(action, dependency)),\n );\n\nexport {\n manageUserAsync,\n manageUserEpic,\n mapManageUser,\n resetManageUserResponse,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n TRANSFER_GET_CONTRACT_REQUEST,\n TRANSFER_GET_CONTRACT_SUCCESS,\n TRANSFER_GET_CONTRACT_FAILURE,\n REMOVE_GET_TRANSFER_CONTRACT_MESSAGE,\n TRANSFER_CONTRACT_REQUEST,\n TRANSFER_CONTRACT_SUCCESS,\n TRANSFER_CONTRACT_FAILURE,\n REMOVE_TRANSFER_CONTRACT_MESSAGE,\n} from './actionTypes';\nimport { Epic } from 'redux-observable';\n\nimport { TCustomer } from '../constants/key-system';\nimport config from '../utils/config';\nimport { TOrderPayload } from './searchOrder.actions';\nimport { TOrder } from 'Models';\nimport { RequestError } from '../utils/network/errors';\n\nexport type TCustomerContractPayload = Partial<{\n customerId: string;\n contractId: string;\n clientFirstName: string;\n clientLastName: string;\n companyName: string;\n fromDate: string;\n toDate: string;\n}>;\n\nexport interface ITransferContract {\n customerNbrOutdated: string;\n customerNbrTargeted: string;\n contractNbr: string;\n userName: string;\n}\n\ninterface IResponseClient {\n customers: TCustomer[];\n}\n\nconst transferGetContractAsync = createAsyncAction(\n TRANSFER_GET_CONTRACT_REQUEST,\n TRANSFER_GET_CONTRACT_SUCCESS,\n TRANSFER_GET_CONTRACT_FAILURE,\n)<TCustomerContractPayload, TOrder[], ReducerError>();\n\nconst transferContractAsync = createAsyncAction(\n TRANSFER_CONTRACT_REQUEST,\n TRANSFER_CONTRACT_SUCCESS,\n TRANSFER_CONTRACT_FAILURE,\n)<ITransferContract, any, ReducerError>();\n\nconst resetResponse = createStandardAction(\n REMOVE_GET_TRANSFER_CONTRACT_MESSAGE,\n)();\n\nconst resetResponseTransfer = createStandardAction(\n REMOVE_TRANSFER_CONTRACT_MESSAGE,\n)();\n\nexport type TransferContractAction =\n | ActionType<typeof transferGetContractAsync>\n | ActionType<typeof transferContractAsync>\n | ActionType<typeof resetResponseTransfer>\n | ActionType<typeof resetResponse>;\n\nconst preparePayloadGetTransferContract = (\n payload: TCustomerContractPayload,\n): TCustomerContractPayload => {\n return { ...payload };\n};\n\nconst preparePayloadOrder = (customerNumber: string): TOrderPayload => {\n return {\n fromDate: '',\n toDate: '',\n email: '',\n orderNumber: customerNumber,\n firstName: '',\n lastName: '',\n processType: '',\n phone: '',\n externalReference: '',\n channel: '',\n createdBy: '',\n };\n};\n\nconst mapGetTransferContract = (\n action: RootAction,\n { apiRequest }: Services,\n) => {\n const payload = preparePayloadOrder(action.payload.customerId);\n\n return apiRequest<TOrder[]>({\n isSubscription: true,\n method: 'POST',\n path: '/searchOrder',\n body: payload,\n lambdaFunctionName: config.FunctionNames.searchOrder,\n }).pipe(\n mergeMap((response: any | RequestError) => {\n if (\n response instanceof RequestError &&\n response.code !== undefined\n ) {\n return of(\n transferGetContractAsync.failure({\n code: response.code as string,\n message: response.message,\n }),\n );\n }\n\n if (response) {\n try {\n const res = JSON.parse(JSON.stringify(response));\n return of(transferGetContractAsync.success(res));\n } catch (e) {\n return of(\n transferGetContractAsync.failure({\n code: '500',\n message: 'erreur interne',\n }),\n );\n }\n }\n return of(transferGetContractAsync.success(response));\n }),\n catchError(error => {\n return of(\n transferGetContractAsync.failure({\n code: '400',\n message: 'Données indisponibles',\n }),\n );\n }),\n );\n};\nconst preparePayloadTransferContract = (\n payload: ITransferContract,\n): ITransferContract => {\n return { ...payload };\n};\nconst mapTransferContract = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadTransferContract(action.payload);\n return apiRequest<any>({\n path: '/transferContract',\n method: 'post',\n body: payload,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === '400' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n transferContractAsync.failure({\n code: response.code,\n message: response.description || response.message,\n }),\n );\n }\n return of(transferContractAsync.success(response));\n }),\n catchError(error => {\n return of(\n transferContractAsync.failure({\n code: error.code,\n message: error.description || error.message,\n }),\n );\n }),\n );\n};\n\nconst transferGetContractEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(transferGetContractAsync.request)),\n mergeMap(action => mapGetTransferContract(action, dependency)),\n );\n\nconst transferContractEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(transferContractAsync.request)),\n mergeMap(action => mapTransferContract(action, dependency)),\n );\n\nexport {\n transferGetContractAsync,\n transferGetContractEpic,\n mapGetTransferContract,\n resetResponse,\n mapTransferContract,\n transferContractAsync,\n resetResponseTransfer,\n transferContractEpic,\n};\n","import { of } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\nimport {\n createAsyncAction,\n ActionType,\n isActionOf,\n createStandardAction,\n} from 'typesafe-actions';\nimport { ReducerError, RootAction, RootState, Services, TError } from 'Types';\nimport {\n ADMIN_CLIENT_SPACE_REQUEST,\n ADMIN_CLIENT_SPACE_SUCCESS,\n ADMIN_CLIENT_SPACE_FAILURE,\n ADMIN_CLIENT_SPACE_RESET_RESPONSE,\n} from './actionTypes';\nimport { TUser } from 'Models';\nimport { Epic } from 'redux-observable';\n\nexport type TUserPayload = Partial<{\n userName: string;\n email: string;\n firstName: string;\n lastName: string;\n group: string;\n userStatus: string;\n}>;\n\ninterface IResponseClient {\n userList: TUser[];\n}\n\nconst adminClientSpaceAsync = createAsyncAction(\n ADMIN_CLIENT_SPACE_REQUEST,\n ADMIN_CLIENT_SPACE_SUCCESS,\n ADMIN_CLIENT_SPACE_FAILURE,\n ADMIN_CLIENT_SPACE_RESET_RESPONSE,\n)<TUserPayload, IResponseClient, ReducerError>();\n\nconst resetAdminClientSpaceResponse = createStandardAction(\n ADMIN_CLIENT_SPACE_RESET_RESPONSE,\n)();\n\nexport type AdminClientSpaceAction =\n | ActionType<typeof adminClientSpaceAsync>\n | ActionType<typeof resetAdminClientSpaceResponse>;\n\nconst preparePayloadClientSpace = (payload: TUserPayload): TUserPayload => {\n return { ...payload };\n};\n\nconst mapGetClientSpace = (action: RootAction, { apiRequest }: Services) => {\n const payload = preparePayloadClientSpace(action.payload);\n return apiRequest<IResponseClient>({\n path: '/searchUserGroup',\n method: 'post',\n body: payload,\n isPay: false,\n isSubscription: false,\n }).pipe(\n mergeMap((response: any & TError) => {\n if (\n response.code === 'MISSING_PARAMETER' ||\n response.code === 'NO_RESPONSE_FROM_PARTNER'\n ) {\n return of(\n adminClientSpaceAsync.failure({\n code: response.code,\n message: response.description,\n }),\n );\n }\n return of(adminClientSpaceAsync.success(response));\n }),\n catchError(error => {\n return of(\n adminClientSpaceAsync.failure({\n code: error.code,\n message: error.description,\n }),\n );\n }),\n );\n};\n\nconst adminClientSpaceEpic: Epic<\n RootAction,\n RootAction,\n RootState,\n Services\n> = (action$, state$, dependency) =>\n action$.pipe(\n filter(isActionOf(adminClientSpaceAsync.request)),\n mergeMap(action => mapGetClientSpace(action, dependency)),\n );\n\nexport {\n adminClientSpaceAsync,\n adminClientSpaceEpic,\n mapGetClientSpace,\n resetAdminClientSpaceResponse,\n};\n","import { TEPInvoice } from 'Models';\nimport { Epic } from 'redux-observable';\nimport { of, throwError } from 'rxjs';\nimport { mergeMap, catchError, filter } from 'rxjs/operators';\n\nimport { RootAction, RootState, Services } from 'Types';\n\nimport {\n createAsyncAction,\n isActionOf,\n ActionType,\n createAction,\n} from 'typesafe-actions';\nimport {\n PAYMENT_CB_FAILURE,\n PAYMENT_CB_REQUEST,\n PAYMENT_CB_SUCCESS,\n RESET_PAYMENT_CB_MODAL,\n} from './actionTypes';\n\nexport type TPaymentCBRequest = {\n dueDate: string;\n payment: TEPInvoice;\n};\n\nexport type TPaymentCBResponse = {\n adhocPaymentId: string;\n stripe: {\n billName: string;\n amount: string;\n clientSecret: string;\n };\n iframe: string;\n transactionId: string;\n};\n\nconst createPaymentCBAsync = createAsyncAction(\n PAYMENT_CB_REQUEST,\n PAYMENT_CB_SUCCESS,\n PAYMENT_CB_FAILURE,\n)<TPaymentCBRequest, TPaymentCBResponse, any>();\n\nconst resetModal = createAction(RESET_PAYMENT_CB_MODAL);\n\nexport type PaymentCBAction =\n | ActionType<typeof createPaymentCBAsync>\n | ActionType<typeof resetModal>;\n\nconst prepareCreatePaymentPayload = ({\n payment,\n dueDate,\n}: TPaymentCBRequest) => {\n return {\n payment,\n dueDate,\n mode: 'CREATE_PAYMENT',\n customerNbr: payment.partner_ref,\n contractNbr: payment.contract,\n };\n};\n\nconst mapCreateCBPayment = (action: RootAction, { apiRequest }: Services) => {\n const payload = prepareCreatePaymentPayload(action.payload);\n return apiRequest<TPaymentCBResponse>({\n path: '/paymentCB',\n method: 'post',\n body: payload,\n isSubscription: true,\n }).pipe(\n mergeMap((response: TPaymentCBResponse) => {\n if (response) return of(createPaymentCBAsync.success(response));\n return throwError({ code: '400', message: response });\n }),\n catchError(error => {\n return of(createPaymentCBAsync.failure(error));\n }),\n );\n};\n\nconst createCBPaymentEpic: Epic<RootAction, RootAction, RootState, Services> = (\n action$,\n state$,\n dependency,\n) =>\n action$.pipe(\n filter(isActionOf(createPaymentCBAsync.request)),\n mergeMap(action => mapCreateCBPayment(action, dependency)),\n );\n\nexport {\n createCBPaymentEpic,\n mapCreateCBPayment,\n createPaymentCBAsync,\n resetModal,\n};\n","import { combineEpics } from 'redux-observable';\n\nimport {\n fetchLoginEpic,\n resetPasswordEpic,\n reinitSubscriptionEmailEpic,\n} from '../_actions/auth.actions';\nimport {\n fetchContextEpic,\n updateCustomerEpic,\n updateBillingEpic,\n updatePasswordEpic,\n createSponsorEpic,\n} from '../_actions/profile.actions';\nimport { fetchContractEpic } from '../_actions/contract.actions';\nimport { fetchEventEpic, createEventEpic } from '../_actions/event.actions';\nimport {\n fetchMeterEpic,\n fetchMeterReadingEpic,\n createIndexEpic,\n} from '../_actions/consumption.actions';\nimport { fetchFileEpic } from '../_actions/file.actions';\nimport {\n fetchPiecesEpic,\n fetchEPInvoiceEpic,\n createPaymentEpic,\n fetchBalanceEpic,\n getSupportingDocumentsEpic,\n} from '../_actions/payment.actions';\nimport {\n fetchPackageEpic,\n fetchProductEpic,\n fetchOfferEpic,\n updatePackageEpic,\n} from '../_actions/package.actions';\n\nimport {\n customerContractEpic,\n uploadAmendmentsEpic,\n} from '../_actions/customerContract.actions';\nimport { orderEpic, searchClientEpic } from '../_actions/searchOrder.actions';\nimport { searchUserGroupEpic } from '../_actions/searchUserGroup.actions';\nimport { RetryFirstPaymentEpic } from '../_actions/caseResult.action';\nimport { createGroupEpic } from '../_actions/createGroup.actions';\nimport { getGroupEpic } from '../_actions/getGroup.actions';\nimport { createUserEpic } from '../_actions/createUser.actions';\nimport { createPasswordEpic } from '../_actions/createPassword.actions';\nimport { manageUserEpic } from '../_actions/manageUser.actions';\nimport {\n transferGetContractEpic,\n transferContractEpic,\n} from '../_actions/transferContract.actions';\nimport { adminClientSpaceEpic } from '../_actions/administrationClientSpace.actions';\n\nimport { createCBPaymentEpic } from '../_actions/paymentCB.actions';\n\nexport default combineEpics(\n fetchLoginEpic,\n resetPasswordEpic,\n getSupportingDocumentsEpic,\n fetchContextEpic,\n fetchContractEpic,\n fetchEventEpic,\n createEventEpic,\n updateCustomerEpic,\n updateBillingEpic,\n fetchMeterEpic,\n fetchMeterReadingEpic,\n createIndexEpic,\n uploadAmendmentsEpic,\n updatePasswordEpic,\n createSponsorEpic,\n fetchFileEpic,\n fetchPiecesEpic,\n fetchEPInvoiceEpic,\n transferContractEpic,\n createPaymentEpic,\n fetchBalanceEpic,\n fetchPackageEpic,\n fetchProductEpic,\n fetchOfferEpic,\n updatePackageEpic,\n customerContractEpic,\n reinitSubscriptionEmailEpic,\n orderEpic,\n searchUserGroupEpic,\n createGroupEpic,\n getGroupEpic,\n createUserEpic,\n manageUserEpic,\n transferGetContractEpic,\n adminClientSpaceEpic,\n createCBPaymentEpic,\n searchClientEpic,\n createPasswordEpic,\n RetryFirstPaymentEpic,\n);\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/auth.actions';\nimport * as contractActions from '../_actions/contract.actions';\nimport * as profileActions from '../_actions/profile.actions';\nimport * as eventActions from '../_actions/event.actions';\nimport * as consumptionActions from '../_actions/consumption.actions';\nimport * as fileActions from '../_actions/file.actions';\nimport * as paymentActions from '../_actions/payment.actions';\nimport * as packageActions from '../_actions/package.actions';\nimport * as customerContractActions from '../_actions/customerContract.actions';\nimport * as orderActions from '../_actions/searchOrder.actions';\nimport * as userGroupActions from '../_actions/searchUserGroup.actions';\nimport * as createGroupActions from '../_actions/createGroup.actions';\nimport * as getGroupActions from '../_actions/getGroup.actions';\nimport * as createUserActions from '../_actions/createUser.actions';\nimport * as manageUserActions from '../_actions/manageUser.actions';\nimport * as transferContractActions from '../_actions/transferContract.actions';\nimport * as adminClientSpaceActions from '../_actions/administrationClientSpace.actions';\nimport * as paymentCBActions from '../_actions/paymentCB.actions';\nimport * as createPasswordActions from '../_actions/createPassword.actions';\nimport * as caseResultActions from '../_actions/caseResult.action';\n\nimport { TScheme } from 'Models';\n\nexport type AuthState = Readonly<{\n loading: boolean;\n error?: string;\n message?: string;\n token?: string;\n userId?: string;\n unauthorized: boolean;\n autorizationsScheme: TScheme[];\n groupe?: string;\n reinit?: string;\n}>;\n\nconst initialScheme: TScheme = {\n id: '',\n label: '',\n subMenu: [\n {\n id: '',\n label: '',\n root: '',\n groupMode: '',\n subGroupMode: '',\n actionMode: '',\n },\n ],\n};\n\nexport const initialState: AuthState = {\n loading: false,\n error: undefined,\n token: undefined,\n message: undefined,\n userId: undefined,\n unauthorized: false,\n groupe: undefined,\n autorizationsScheme: [{ ...initialScheme }],\n reinit: undefined,\n};\n\ntype Actions =\n | actions.AuthAction\n | contractActions.ContractAction\n | profileActions.ProfileAction\n | eventActions.EventAction\n | consumptionActions.ConsumptionAction\n | fileActions.FileActions\n | paymentActions.PiecesAction\n | packageActions.PackageAction\n | customerContractActions.CustomersContractAction\n | userGroupActions.searchUserGroupAction\n | createGroupActions.CreateGroupAction\n | getGroupActions.getGroupAction\n | createUserActions.CreateUserAction\n | manageUserActions.ManageUserAction\n | transferContractActions.TransferContractAction\n | orderActions.FetchOrderAction\n | paymentCBActions.PaymentCBAction\n | adminClientSpaceActions.AdminClientSpaceAction\n | createPasswordActions.CreatePasswordAction\n | caseResultActions.RetryFirstPaymentAction;\n\nconst authReducer: Reducer<AuthState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.resetAuthErrors):\n return {\n ...state,\n error: undefined,\n message: undefined,\n code: undefined,\n };\n case getType(actions.refreshSessionExpirationStatus):\n return {\n ...state,\n unauthorized: action.payload.valueOf(),\n };\n case getType(actions.removeReinitSubscriptionMessage):\n return {\n ...state,\n reinit: '',\n };\n case getType(actions.removeError):\n return {\n ...state,\n error: 'no errors occurred',\n };\n case getType(actions.fetchLoginAsync.request):\n case getType(actions.reinitSubscriptionEmailAsync.request):\n case getType(createPasswordActions.createPasswordAsync.request):\n case getType(caseResultActions.caseResultRetryFirstPaymentAsync.request):\n case getType(actions.resetPasswordAsync.request): {\n return {\n ...state,\n loading: true,\n error: undefined,\n message: undefined,\n code: undefined,\n };\n }\n\n case getType(createPasswordActions.createPasswordAsync.success):\n return {\n ...state,\n loading: false,\n message: action.payload.message,\n error: undefined,\n code: action.payload.code,\n };\n case getType(caseResultActions.caseResultRetryFirstPaymentAsync.success):\n return {\n ...state,\n loading: false,\n message: action.payload.message,\n error: undefined,\n code: action.payload.status,\n };\n case getType(caseResultActions.caseResultRetryFirstPaymentAsync.failure):\n return {\n ...state,\n loading: false,\n message: action.payload.message,\n error: undefined,\n code: action.payload.code,\n };\n case getType(createPasswordActions.createPasswordAsync.failure):\n return {\n ...state,\n loading: false,\n error: action.payload.message,\n message: undefined,\n code: action.payload.code,\n };\n\n case getType(actions.fetchLoginAsync.failure): {\n return {\n ...state,\n loading: false,\n error: action.payload.error,\n };\n }\n\n case getType(actions.fetchLoginAsync.success): {\n return {\n ...state,\n loading: false,\n token: action.payload.token,\n userId: action.payload.userId,\n groupe: action.payload.groupe,\n autorizationsScheme:\n action.payload.autorizationsScheme !== undefined\n ? [...action.payload.autorizationsScheme]\n : [{ ...initialScheme }],\n };\n }\n\n case getType(actions.resetPasswordAsync.failure): {\n return {\n ...state,\n loading: false,\n message: undefined,\n error: action.payload,\n };\n }\n\n case getType(actions.resetPasswordAsync.success): {\n return {\n ...state,\n loading: false,\n error: undefined,\n message: action.payload,\n };\n }\n\n case getType(actions.reinitSubscriptionEmailAsync.failure): {\n return {\n ...state,\n loading: false,\n error: action.payload,\n };\n }\n\n case getType(actions.reinitSubscriptionEmailAsync.success): {\n return {\n ...state,\n loading: false,\n reinit: action.payload,\n };\n }\n case getType(paymentCBActions.createPaymentCBAsync.request):\n case getType(actions.casesExtractAsync.request):\n case getType(contractActions.fetchContractAsync.request):\n case getType(eventActions.createEventAsync.request):\n case getType(adminClientSpaceActions.adminClientSpaceAsync.request):\n case getType(eventActions.fetchEventAsync.request):\n case getType(orderActions.searchClientAsync.request):\n case getType(consumptionActions.fetchMeterConfigAsync.request):\n case getType(consumptionActions.fetchMeterReadingAsync.request):\n case getType(consumptionActions.createIndexAsync.request):\n case getType(profileActions.fetchContextAsync.request):\n case getType(profileActions.updatePasswordAsync.request):\n case getType(profileActions.updateCustomerAsync.request):\n case getType(profileActions.updateBillingAsync.request):\n case getType(fileActions.fetchFilesListAsync.request):\n case getType(paymentActions.createPaymentAsync.request):\n case getType(paymentActions.fetchPiecesAsync.request):\n case getType(paymentActions.fetchEPInvoicesAsync.request):\n case getType(profileActions.createSponsorAsync.request):\n case getType(packageActions.fetchPackageAsync.request):\n case getType(createGroupActions.createGroupAsync.request):\n case getType(getGroupActions.getGroupAsync.request):\n case getType(packageActions.fetchProductAsync.request):\n case getType(manageUserActions.manageUserAsync.request):\n case getType(createUserActions.createUserAsync.request):\n case getType(\n customerContractActions.fetchCustomerContractAsync.request,\n ):\n case getType(customerContractActions.uploadAmendmentsAsync.request):\n case getType(orderActions.fetchOrderAsync.request):\n case getType(userGroupActions.searchUserGroupAsync.request):\n case getType(transferContractActions.transferGetContractAsync.request):\n case getType(transferContractActions.transferContractAsync.request):\n case getType(packageActions.updatePackageAsync.request): {\n return {\n ...state,\n loading: true,\n };\n }\n case getType(paymentCBActions.createPaymentCBAsync.success):\n case getType(actions.casesExtractAsync.success):\n case getType(contractActions.fetchContractAsync.success):\n case getType(eventActions.fetchEventAsync.success):\n case getType(eventActions.createEventAsync.success):\n case getType(consumptionActions.fetchMeterConfigAsync.success):\n case getType(consumptionActions.fetchMeterReadingAsync.success):\n case getType(consumptionActions.createIndexAsync.success):\n case getType(profileActions.fetchContextAsync.success):\n case getType(profileActions.updatePasswordAsync.success):\n case getType(orderActions.searchClientAsync.success):\n case getType(profileActions.updateCustomerAsync.success):\n case getType(profileActions.updateBillingAsync.success):\n case getType(profileActions.createSponsorAsync.success):\n case getType(fileActions.fetchFilesListAsync.success):\n case getType(paymentActions.createPaymentAsync.success):\n case getType(paymentActions.fetchPiecesAsync.success):\n case getType(paymentActions.fetchEPInvoicesAsync.request):\n case getType(packageActions.fetchPackageAsync.success):\n case getType(packageActions.fetchProductAsync.success):\n case getType(userGroupActions.searchUserGroupAsync.success):\n case getType(getGroupActions.getGroupAsync.success):\n case getType(createUserActions.createUserAsync.success):\n case getType(manageUserActions.manageUserAsync.success):\n case getType(transferContractActions.transferGetContractAsync.success):\n case getType(transferContractActions.transferContractAsync.success):\n case getType(adminClientSpaceActions.adminClientSpaceAsync.success):\n case getType(createGroupActions.createGroupAsync.success):\n case getType(\n customerContractActions.fetchCustomerContractAsync.success,\n ):\n case getType(orderActions.fetchOrderAsync.success):\n case getType(actions.casesExtractAsync.failure):\n case getType(customerContractActions.uploadAmendmentsAsync.success):\n case getType(packageActions.updatePackageAsync.success): {\n return {\n ...state,\n loading: false,\n };\n }\n case getType(paymentCBActions.createPaymentCBAsync.failure):\n case getType(packageActions.fetchProductAsync.failure):\n case getType(orderActions.searchClientAsync.failure):\n case getType(packageActions.fetchPackageAsync.failure):\n case getType(packageActions.updatePackageAsync.failure):\n case getType(profileActions.updateCustomerAsync.failure):\n case getType(profileActions.updateBillingAsync.failure):\n case getType(profileActions.fetchContextAsync.failure):\n case getType(profileActions.updatePasswordAsync.failure):\n case getType(profileActions.createSponsorAsync.failure):\n case getType(paymentActions.createPaymentAsync.failure):\n case getType(paymentActions.fetchPiecesAsync.failure):\n case getType(paymentActions.fetchEPInvoicesAsync.request):\n case getType(eventActions.fetchEventAsync.failure):\n case getType(eventActions.createEventAsync.failure):\n case getType(contractActions.fetchContractAsync.failure):\n case getType(consumptionActions.createIndexAsync.failure):\n case getType(consumptionActions.fetchMeterConfigAsync.failure):\n case getType(consumptionActions.fetchMeterReadingAsync.failure):\n case getType(userGroupActions.searchUserGroupAsync.failure):\n case getType(getGroupActions.getGroupAsync.failure):\n case getType(createUserActions.createUserAsync.failure):\n case getType(manageUserActions.manageUserAsync.failure):\n case getType(adminClientSpaceActions.adminClientSpaceAsync.failure):\n case getType(transferContractActions.transferGetContractAsync.failure):\n case getType(transferContractActions.transferContractAsync.failure):\n case getType(createGroupActions.createGroupAsync.failure):\n case getType(customerContractActions.uploadAmendmentsAsync.failure):\n case getType(\n customerContractActions.fetchCustomerContractAsync.failure,\n ):\n case getType(orderActions.fetchOrderAsync.failure):\n case getType(fileActions.fetchFilesListAsync.failure): {\n const { code } = action.payload;\n return {\n ...state,\n loading: false,\n unauthorized: code === '401',\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default authReducer;\n","import {\n TContract,\n TCustomerFullName,\n TAddress,\n TContact,\n TFinance,\n TFile,\n TFiles,\n TAmountWithLabel,\n TUnitPriceWithLabel,\n TProduct,\n TPackage,\n TEPInvoice,\n} from 'Models';\nimport {\n EAmountCategory,\n ERateOption,\n EEnergy,\n EContractStatus,\n ECivility,\n EFrequency,\n EEffectiveStartRange,\n EReadingFrequency,\n ETimeframe,\n EBillingMode,\n EProcessTypes,\n EAppointmentTimeslot,\n EInvoiceRoutingMode,\n} from './enums';\nimport { getTodayDate } from './helpers';\n\nexport const initialCustomerFullName: TCustomerFullName = {\n civility: 'MR',\n firstName: '',\n lastName: '',\n};\n\nexport const initialAddress: TAddress = {\n country: 'FR',\n netArea: '',\n number: '',\n postalCode: '',\n street: '',\n townName: '',\n};\n\nexport const initialContact: TContact = {\n customerFullName: {\n civility: ECivility.MR,\n firstName: '',\n lastName: '',\n },\n birthdate: '',\n address: {\n number: '',\n street: '',\n netArea: '',\n postalCode: '',\n townName: '',\n country: 'FR',\n },\n email: '',\n phone: '',\n companyName: '',\n companyType: '',\n identificationNumber: '',\n activityCode: '',\n newsletter: false,\n marketing: false,\n};\n\nexport const initialFinance: TFinance = {\n paymentMode: EBillingMode.PAYMENT_SCHEDULE,\n ibanCode: '',\n bicCode: '',\n bankName: '',\n accountOwnerFirstName: '',\n accountOwnerLastName: '',\n rumCode: '',\n invoiceRoutingMode: EInvoiceRoutingMode.EMAIL,\n invoiceEmail: '',\n debitDay: '',\n termCode: '',\n};\n\nexport const initialFile: TFile = {\n documentsList: [],\n financialPieces: {\n id: '',\n result: {\n status: '',\n invoice_list: [],\n payment_list: [],\n },\n },\n};\nexport const initialEPInvoice: TEPInvoice = {\n id: '',\n partner_name: '',\n partner_reference: '',\n invoice_type: '',\n invoice_number: '',\n invoice_date: '',\n invoice_date_due: '',\n invoice_amount_total_signed: '',\n invoice_amount_residual_signed: '',\n invoice_state: '',\n hgz_invoice_nature_code: '',\n hgz_invoice_nature_text: '',\n internal_invoice_nature_code: '',\n date: '',\n payment_method_code: '',\n payment_method_name: '',\n internal_invoice_nature_text: '',\n invoicing_period_end_date: '',\n invoicing_period_start_date: '',\n status: '',\n amount: '',\n contract: '',\n partner_ref: '',\n replacing_payment_count: '0',\n energy_paid_number_replays: '0',\n};\nexport const initialFiles: TFiles = {\n documentDate: '',\n documentKey: '',\n documentName: '',\n documentType: '',\n contractNbr: '',\n energyType: '',\n};\n\nexport const initialAmountWithLabel: TAmountWithLabel = {\n label: '',\n amount: '',\n unit: '',\n category: EAmountCategory.ADDITIONAL_RATE,\n unitPrices: [],\n};\n\nexport const initialUnitPriceWithLabel: TUnitPriceWithLabel = {\n label: '',\n price: '',\n unit: '',\n};\n\nexport const initialProduct: TProduct = {\n productCode: '',\n productType: '',\n label: '',\n description: '',\n energy: EEnergy.EL,\n default: true,\n rateOption: undefined,\n additionalRates: undefined,\n};\n\nconst today = getTodayDate();\n\nexport const initialContract: TContract = {\n contractNumber: '',\n contractStatus: EContractStatus.EFFECTIVE,\n channel: 'WEB',\n effectiveStartRange: EEffectiveStartRange.NOW,\n effectiveStartDate: '',\n subscriptionDate: today,\n lastRenewDate: '',\n sponsorNumber: '',\n energy: EEnergy.EL,\n contractCategory: '',\n deliveryCategoryCode: '',\n deliveryPoint: {\n pointOfDelivery: '',\n deliveryPointCategory: '',\n grdCode: '',\n state: '',\n gridRate: '',\n deliveryStatus: '',\n address: {\n number: '',\n street: '',\n netArea: '',\n postalCode: '',\n townName: '',\n country: 'FR',\n },\n profile: '',\n meterNumber: '',\n meterType: '',\n smartMeterStatus: '',\n netArea: '',\n readingFrequency: EReadingFrequency.MONTHLY,\n contractualCapacity: 0,\n contractualCapacityUnit: '',\n process: {\n type: EProcessTypes.MOVE_IN,\n express: false,\n supplierCalendar: '',\n appointmentTimeslot: EAppointmentTimeslot.NONE,\n index: {\n type: '',\n date: '',\n registers: [\n {\n value: 0,\n timeframe: ETimeframe.UNKNOWN,\n },\n ],\n },\n },\n },\n billingMode: EBillingMode.PAYMENT_SCHEDULE,\n installmentFrequency: EFrequency.BIMONTHLY,\n settlementFrequency: EFrequency.BIANNUAL,\n finance: {\n paymentMode: EBillingMode.PAYMENT_SCHEDULE,\n ibanCode: '',\n bicCode: '',\n bankName: '',\n accountOwnerLastName: '',\n accountOwnerFirstName: '',\n billingContact: undefined,\n rumCode: '',\n invoiceRoutingMode: EInvoiceRoutingMode.EMAIL,\n invoiceEmail: '',\n debitDay: '',\n termCode: '',\n },\n thirdParties: [],\n rateOption: ERateOption.UNKNOWN,\n chosenProduct: initialProduct,\n};\n\nexport const initialPackage: TPackage = {\n id: '',\n amount: '',\n energy: EEnergy.EL,\n currency: '',\n quantityMonthly: 0,\n packageQuantity: 0,\n recommended: false,\n timeframe: ETimeframe.UNKNOWN,\n authorizedPackages: undefined,\n};\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport { TContact } from 'Models';\nimport { ECivility, ECustomerType } from '../utils/enums';\n\nimport * as actions from '../_actions/profile.actions';\nimport { initialCustomerFullName } from '../utils/initialState';\n\nexport type ProfileState = Readonly<{\n error?: string;\n customerType: ECustomerType;\n customerNumber: string;\n customerCategoryCode: string;\n contact: TContact;\n updateResponse: {\n code: string;\n message: string;\n };\n checkUpdateProfile: {\n checkUpdateContact: boolean;\n checkUpdateBilling: boolean;\n checkUpdateIban: boolean;\n };\n}>;\n\nexport const initialState = {\n error: undefined,\n customerType: ECustomerType.INDIVIDUAL,\n customerNumber: '',\n customerCategoryCode: '',\n contact: {\n marketing: false,\n newsletter: false,\n customerFullName: {\n civility: ECivility.MR,\n firstName: '',\n lastName: '',\n },\n birthdate: '',\n address: {\n number: '',\n street: '',\n netArea: '',\n postalCode: '',\n townName: '',\n country: 'FR',\n },\n email: '',\n phone: '',\n companyName: '',\n companyType: '',\n identificationNumber: '',\n activityCode: '',\n },\n updateResponse: {\n code: '',\n message: '',\n },\n checkUpdateProfile: {\n checkUpdateContact: false,\n checkUpdateBilling: false,\n checkUpdateIban: false,\n },\n};\n\ntype Actions = actions.ProfileAction;\n\nconst profileReducer: Reducer<ProfileState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchContextAsync.request): {\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n }\n\n case getType(actions.fetchContextAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: action.payload.code,\n message:\n action.payload.message ||\n action.payload.description ||\n '',\n },\n };\n }\n\n case getType(actions.fetchContextAsync.success): {\n const {\n customerNumber,\n customerCategoryCode,\n type,\n contact: {\n customerFullName,\n address,\n email,\n phone,\n newsletter,\n marketing,\n activityCode,\n birthdate,\n companyName,\n companyType,\n identificationNumber,\n },\n } = action.payload.customer;\n\n return {\n ...state,\n customerNumber,\n customerCategoryCode,\n customerType: type,\n contact: {\n ...state.contact,\n email,\n phone,\n newsletter: newsletter || false,\n marketing: marketing || false,\n activityCode,\n birthdate,\n companyName,\n companyType,\n identificationNumber,\n customerFullName: (customerFullName && {\n civility: customerFullName.civility,\n firstName: customerFullName.firstName,\n lastName: customerFullName.lastName,\n }) || { ...initialCustomerFullName },\n address: {\n number:\n address.number ||\n state.contact.address.number ||\n '',\n street: address.street || '',\n netArea:\n address.netArea ||\n state.contact.address.netArea ||\n '',\n postalCode: address.postalCode || '',\n townName: address.townName || '',\n country:\n address.country || state.contact.address.country,\n },\n },\n };\n }\n\n case getType(actions.updateCustomerAsync.request):\n return {\n ...state,\n };\n\n case getType(actions.updateCustomerAsync.success):\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n contact: {\n ...state.contact,\n email: action.payload.email || state.contact.email,\n phone: action.payload.phone || state.contact.phone,\n newsletter:\n action.payload.newsletter || state.contact.newsletter,\n marketing:\n action.payload.marketing || state.contact.marketing,\n },\n };\n\n case getType(actions.resetUpdate):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n case getType(actions.updateBillingAsync.request):\n return {\n ...state,\n };\n\n case getType(actions.updateCustomerAsync.failure):\n case getType(actions.updateBillingAsync.failure):\n case getType(actions.updatePasswordAsync.failure):\n case getType(actions.createSponsorAsync.failure): {\n console.log('failure detected in profile reducer');\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n }\n\n case getType(actions.updateBillingAsync.success):\n case getType(actions.updatePasswordAsync.success):\n case getType(actions.createSponsorAsync.success): {\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default profileReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TContact, TContract } from 'Models';\nimport { EModeUpdateBilling, EEnergy } from '../utils/enums';\nimport { initialContract, initialContact } from '../utils/initialState';\n\nimport * as actions from '../_actions/contract.actions';\nimport * as profileActions from '../_actions/profile.actions';\nimport * as packageActions from '../_actions/package.actions';\nimport { isEmpty } from 'lodash';\n\n// TODO: remove currentContract\nexport type ContractState = Readonly<{\n loading: boolean;\n error?: string;\n contracts: TContract[];\n selectedContractNumber: string;\n currentContract: {\n index: number;\n id: string;\n };\n}>;\n\nexport const initialState = {\n loading: false,\n error: undefined,\n contracts: [\n {\n ...initialContract,\n },\n ],\n selectedContractNumber: '',\n currentContract: {\n index: 0,\n id: '',\n },\n};\n\ntype Actions =\n | actions.ContractAction\n | profileActions.ProfileAction\n | packageActions.PackageAction;\n\nconst contractReducer: Reducer<ContractState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.resetContractState): {\n return {\n ...state,\n loading: false,\n error: undefined,\n };\n }\n\n case getType(actions.fetchContractAsync.request): {\n return {\n ...state,\n loading: true,\n };\n }\n\n case getType(actions.fetchContractAsync.failure): {\n return {\n ...state,\n loading: false,\n error: 'failure',\n };\n }\n\n case getType(actions.fetchContractAsync.success): {\n const selectedContractNumber = action.payload.contractNbr;\n const contracts = state.contracts.map(c => {\n const { contract } = action.payload;\n if (contract && c.contractNumber === selectedContractNumber) {\n // Attach offer if getContract does not return it\n const isFetched = true;\n const offer = c.offer ? c.offer : contract.offer;\n if (\n contract.deliveryPoint.deliveryPointCategory &&\n contract.deliveryPoint.deliveryPointCategory !== ''\n ) {\n return {\n ...contract,\n isFetched,\n offer,\n contractNumber: selectedContractNumber,\n };\n }\n const deliveryPointCategory =\n contract.energy === EEnergy.EL\n ? 'C5'\n : contract.deliveryPoint.gridRate;\n return {\n ...contract,\n isFetched,\n offer,\n contractNumber: selectedContractNumber,\n deliveryPoint: {\n ...contract.deliveryPoint,\n deliveryPointCategory,\n },\n };\n }\n return c;\n });\n return {\n ...state,\n selectedContractNumber,\n contracts,\n loading: false,\n currentContract: {\n index: contracts.length - 1,\n id: action.payload.contractNbr,\n },\n error: undefined,\n };\n }\n\n case getType(profileActions.fetchContextAsync.success): {\n const { contracts } = action.payload;\n const selectedContractNumber = contracts[0].contractNumber;\n const modifiedContracts = contracts.map(contract => {\n if (selectedContractNumber === contract.contractNumber) {\n if (contract.deliveryPoint.deliveryPointCategory) {\n return {\n ...contract,\n isFetched: true,\n };\n }\n const deliveryPointCategory =\n contract.energy === EEnergy.EL\n ? 'C5'\n : contract.deliveryPoint.gridRate;\n return {\n ...contract,\n isFetched: true,\n deliveryPoint: {\n ...contract.deliveryPoint,\n deliveryPointCategory,\n },\n };\n }\n return contract;\n });\n return {\n ...state,\n selectedContractNumber,\n contracts: modifiedContracts,\n currentContract: {\n index: 0,\n id: selectedContractNumber,\n },\n };\n }\n\n case getType(profileActions.updateCustomerAsync.success): {\n const { civility, firstName, mode } = action.payload;\n\n const contracts = state.contracts.map(contract => {\n if (contract.contractNumber !== state.selectedContractNumber) {\n return contract;\n }\n if (mode && mode !== 'delete') {\n const thirdParties = contract.thirdParties.map(p => {\n if (p.role !== 'COHOLDER') {\n return p;\n }\n return {\n ...p,\n civility,\n firstName,\n };\n });\n return {\n ...contract,\n thirdParties:\n thirdParties.length > 0\n ? thirdParties\n : [\n {\n role: 'COHOLDER',\n civility,\n firstName,\n },\n ],\n };\n }\n return {\n ...contract,\n thirdParties: contract.thirdParties.filter(\n p => p.role !== 'COHOLDER',\n ),\n };\n });\n\n return {\n ...state,\n contracts,\n };\n }\n\n case getType(profileActions.updateBillingAsync.success): {\n const {\n billingAddress,\n ibanCode,\n email,\n customerFullName,\n mode,\n debitDay,\n routingMode,\n } = action.payload;\n const contracts = state.contracts.map(contract => {\n if (contract.contractNumber !== state.selectedContractNumber) {\n return contract;\n }\n if (mode === EModeUpdateBilling.IBAN && ibanCode) {\n return {\n ...contract,\n finance: {\n ...contract.finance,\n ibanCode,\n },\n };\n }\n\n if (mode === EModeUpdateBilling.DEBIT_DAY && debitDay) {\n return {\n ...contract,\n finance: {\n ...contract.finance,\n debitDay: debitDay || contract.finance.debitDay,\n },\n };\n }\n\n if (mode === EModeUpdateBilling.ROUTING_MODE && routingMode) {\n return {\n ...contract,\n finance: {\n ...contract.finance,\n invoiceRoutingMode:\n routingMode ||\n contract.finance.invoiceRoutingMode,\n },\n };\n }\n\n if (contract.finance) {\n let billingContact: TContact = { ...initialContact };\n if (contract.finance.billingContact) {\n billingContact = {\n ...contract.finance.billingContact,\n };\n }\n billingContact = {\n ...billingContact,\n customerFullName:\n customerFullName || billingContact.customerFullName,\n address: billingAddress || billingContact.address,\n email: email || billingContact.email,\n };\n contract.finance = {\n ...contract.finance,\n billingContact,\n };\n }\n return contract;\n });\n return {\n ...state,\n contracts,\n };\n }\n\n case getType(packageActions.updatePackageAsync.success): {\n const { contract } = action.payload;\n if (contract === undefined) {\n return {\n ...state,\n };\n }\n const contracts = state.contracts.map(c => {\n if (c.contractNumber === contract.contractNumber) {\n return contract;\n }\n return c;\n });\n return {\n ...state,\n contracts,\n };\n }\n\n // Use the the product from the productsList\n // Only if the current chosenProduct is empty (contains only productCode)\n case getType(packageActions.fetchOfferAsync.success): {\n const { offers, products, contractNbr } = action.payload;\n const contracts = state.contracts.map(contract => {\n const c = { ...contract };\n if (\n offers &&\n c.offer === undefined &&\n c.energy === offers[0].energy\n ) {\n c.offer = offers[0];\n }\n if (\n c.contractNumber !== contractNbr ||\n c.chosenProduct.additionalRates ||\n offers === undefined ||\n products === undefined\n ) {\n return c;\n }\n const { productCode } = offers[0].product;\n const chosenProduct = products.find(\n p => p.productCode === productCode,\n );\n\n if (chosenProduct) {\n return {\n ...c,\n chosenProduct,\n };\n }\n return c;\n });\n return {\n ...state,\n contracts,\n };\n }\n\n case getType(actions.setContract): {\n const { contract } = action.payload;\n const contracts = state.contracts.map(c => {\n if (contract.contractNumber === c.contractNumber) {\n return contract;\n }\n return c;\n });\n return {\n ...state,\n selectedContractNumber: contract.contractNumber,\n contracts,\n };\n }\n\n default:\n return state;\n }\n};\n\nexport default contractReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TEvent } from 'Models';\n\nimport * as actions from '../_actions/event.actions';\n\nexport type EventState = Readonly<{\n events: TEvent[];\n updateResponse: {\n code: string;\n message: string;\n };\n}>;\nexport const initialState = {\n events: [],\n updateResponse: {\n code: '',\n message: '',\n },\n};\n\ntype Actions = actions.EventAction;\n\nconst eventReducer: Reducer<EventState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchEventAsync.request):\n return { ...state };\n case getType(actions.fetchEventAsync.failure):\n return { ...state };\n case getType(actions.createEventAsync.request):\n return { ...state };\n\n case getType(actions.fetchEventAsync.success): {\n return {\n ...state,\n events: action.payload,\n };\n }\n\n case getType(actions.createEventAsync.success): {\n return {\n ...state,\n events: [...state.events, action.payload],\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n case getType(actions.createEventAsync.failure):\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n\n case getType(actions.resetUpdate):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default eventReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport { TMeterRead } from 'Models';\nimport { ERateOption } from '../utils/enums';\n\nimport * as actions from '../_actions/consumption.actions';\n\nimport WordingConstant from '../utils/wording.json';\n\nconst Wording = WordingConstant.Common;\n\nexport type ConsumptionState = Readonly<{\n rateOption: ERateOption;\n digitSize: number;\n meterNumber: string;\n meters: TMeterRead[];\n updateResponse: {\n code: string;\n message: string;\n };\n errorMeterConfig?: string;\n errorMeterReading?: string;\n}>;\n\nexport const initialState = {\n rateOption: ERateOption.UNKNOWN,\n digitSize: 0,\n meterNumber: '',\n meters: [],\n updateResponse: {\n code: '',\n message: '',\n },\n errorMeterConfig: undefined,\n errorMeterReading: undefined,\n};\n\ntype Actions = actions.ConsumptionAction;\n\nconst consumptionReducer: Reducer<ConsumptionState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchMeterConfigAsync.request): {\n return {\n ...state,\n };\n }\n case getType(actions.fetchMeterReadingAsync.request): {\n return {\n ...state,\n };\n }\n\n case getType(actions.fetchMeterConfigAsync.failure): {\n return {\n ...state,\n errorMeterConfig: Wording.noData,\n };\n }\n\n case getType(actions.fetchMeterReadingAsync.failure): {\n return {\n ...state,\n errorMeterReading: Wording.noData,\n meters: [],\n meterNumber: '',\n digitSize: 0,\n };\n }\n\n case getType(actions.fetchMeterConfigAsync.success): {\n return {\n ...state,\n rateOption: action.payload.rateOption,\n digitSize: Number(action.payload.digitSize),\n meterNumber: action.payload.meterNumber,\n errorMeterConfig: undefined,\n };\n }\n\n case getType(actions.fetchMeterReadingAsync.success): {\n return {\n ...state,\n meters: action.payload || [],\n errorMeterReading: undefined,\n };\n }\n\n case getType(actions.createIndexAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: action.payload.code || '500',\n message: action.payload.message || 'failure',\n },\n };\n }\n\n case getType(actions.createIndexAsync.success): {\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n\n case getType(actions.resetCreateIndex):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default consumptionReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TFile, TFiles, TEPInvoice } from 'Models';\n\nimport * as actions from '../_actions/file.actions';\nimport {\n initialFile,\n initialEPInvoice,\n initialFiles,\n} from '../utils/initialState';\n\nexport type FileState = Readonly<{\n files: TFile;\n documents: TFiles[];\n invoices: TEPInvoice[];\n payments: TEPInvoice[];\n}>;\n\nexport const initialState = {\n files: initialFile,\n documents: [],\n invoices: [],\n payments: [],\n};\n\ntype Actions = actions.FileActions;\n\nconst fileReducer: Reducer<FileState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchFilesListAsync.request):\n return { ...state };\n\n case getType(actions.fetchFilesListAsync.failure):\n return { ...state };\n\n case getType(actions.fetchFilesListAsync.success): {\n return {\n ...state,\n files: action.payload,\n documents: action.payload.documentsList,\n invoices: action.payload.financialPieces\n ? action.payload.financialPieces.result.invoice_list\n : [],\n payments: action.payload.financialPieces\n ? action.payload.financialPieces.result.payment_list\n : [],\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default fileReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport {\n TResponse,\n TPiece,\n TTransaction,\n TProcessus,\n TEPInvoice,\n} from 'Models';\n\nimport * as actions from '../_actions/payment.actions';\nimport { EPieceType, EPaymentModeKey } from '../utils/enums';\n\nexport type PaymentSupportingDocuments = {\n loading: boolean;\n errorMessage: undefined | string;\n};\n\nexport type PaymentState = Readonly<{\n pieces: TPiece[];\n epInvoices: TEPInvoice[];\n epPayments: TEPInvoice[];\n updateResponse: TResponse;\n balance?: {\n customerBalance: string;\n contractBalance: string;\n invoiceBalance: string;\n };\n\n supportingDocument: PaymentSupportingDocuments;\n}>;\nexport const initialState = {\n pieces: [],\n epInvoices: [],\n epPayments: [],\n updateResponse: {\n code: '',\n message: '',\n },\n balance: undefined,\n\n supportingDocument: {\n loading: false,\n errorMessage: undefined,\n },\n};\n\ntype Actions = actions.PiecesAction;\n\nconst paymentReducer: Reducer<PaymentState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchPiecesAsync.success): {\n const { invoices, prepayments, adhocPieces } = action.payload;\n const ps: TPiece[] = [];\n if (invoices) {\n invoices.forEach(invoice => {\n ps.push({\n ...invoice,\n type: EPieceType.INVOICE,\n });\n });\n }\n if (prepayments) {\n prepayments.forEach(pp => {\n ps.push({\n ...pp,\n type: EPieceType.PREPAYMENT,\n });\n });\n }\n\n if (adhocPieces) {\n adhocPieces.forEach(adh => {\n // TODO\n // if (\n // !(\n // adh.initialTransactionStatus !== 'success' &&\n // adh.paymentMode === EPaymentModeKey.BANK_CARD &&\n // adh.paymentNature === 'contractActivation'\n // )\n // ) {\n // ps.push({\n // ...adh,\n // type: EPieceType.ADHOC,\n // });\n // }\n\n ps.push({\n ...adh,\n type: EPieceType.ADHOC,\n });\n });\n }\n return {\n ...state,\n pieces: ps,\n };\n }\n case getType(actions.fetchBalanceAsync.success): {\n return {\n ...state,\n balance: action.payload,\n };\n }\n case getType(actions.createPaymentAsync.success):\n // Update the piece from where transaction locates\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n case getType(actions.createPaymentAsync.failure):\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n case getType(actions.resetUpdate):\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n case getType(actions.getSupportingDocumentsAsync.request): {\n return {\n ...state,\n supportingDocument: {\n loading: true,\n errorMessage: undefined,\n },\n };\n }\n\n case getType(actions.getSupportingDocumentsAsync.success): {\n return {\n ...state,\n supportingDocument: {\n loading: false,\n errorMessage: undefined,\n },\n };\n }\n\n case getType(actions.getSupportingDocumentsAsync.failure): {\n return {\n ...state,\n supportingDocument: {\n loading: false,\n errorMessage: action.payload,\n },\n };\n }\n\n case getType(actions.resetSupportingDocumentError): {\n return {\n ...state,\n supportingDocument: {\n loading: false,\n errorMessage: undefined,\n },\n };\n }\n\n default:\n return { ...state };\n }\n};\n\nexport default paymentReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TPackage, TPrepaymentFrequency, TProduct, TOffer } from 'Models';\n\nimport * as actions from '../_actions/package.actions';\n\nexport type PackageState = Readonly<{\n loadingPackage: boolean;\n loadingOffer: boolean;\n pkg: Record<string, TPackage[]>;\n prepaymentFrequencies: Record<string, TPrepaymentFrequency[]>;\n offer: Record<string, TOffer>;\n products: TProduct[];\n updateResponse: {\n code: string;\n message: string;\n };\n description?: string;\n}>;\n\nexport const initialState = {\n loadingPackage: false,\n loadingOffer: false,\n pkg: {},\n prepaymentFrequencies: {},\n offer: {},\n products: [],\n updateResponse: {\n code: '',\n message: '',\n },\n};\n\ntype Actions = actions.PackageAction;\n\nconst packageReducer: Reducer<PackageState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchPackageAsync.request):\n return {\n ...state,\n loadingPackage: true,\n };\n\n case getType(actions.fetchPackageAsync.failure):\n return {\n ...state,\n loadingPackage: false,\n };\n\n case getType(actions.fetchPackageAsync.success): {\n const {\n packagesList,\n prepaymentFrequencies,\n contractNbr,\n } = action.payload;\n const pf: Record<string, TPrepaymentFrequency[]> =\n state.prepaymentFrequencies;\n if (prepaymentFrequencies) {\n pf[contractNbr] = prepaymentFrequencies;\n }\n const pkg: Record<string, TPackage[]> = state.pkg;\n if (packagesList) {\n pkg[contractNbr] = packagesList;\n }\n return {\n ...state,\n pkg,\n prepaymentFrequencies: pf,\n loadingPackage: false,\n };\n }\n\n case getType(actions.fetchProductAsync.request):\n return {\n ...state,\n loadingOffer: true,\n };\n\n case getType(actions.fetchProductAsync.success): {\n return {\n ...state,\n products: action.payload.productsList || state.products,\n loadingOffer: false,\n };\n }\n\n case getType(actions.fetchProductAsync.failure):\n case getType(actions.fetchOfferAsync.failure): {\n return {\n ...state,\n loadingOffer: false,\n };\n }\n\n case getType(actions.fetchOfferAsync.success): {\n const { offers, contractNbr } = action.payload;\n const offer: Record<string, TOffer> = {\n ...state.offer,\n };\n if (offers && contractNbr) {\n offer[contractNbr] = offers[0];\n }\n return {\n ...state,\n offer,\n loadingOffer: false,\n };\n }\n\n case getType(actions.updatePackageAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n }\n\n case getType(actions.updatePackageAsync.success): {\n if (action.payload.code === 'KO') {\n return {\n ...state,\n description: action.payload.description,\n updateResponse: {\n code: '500',\n message: 'Erreur serveur',\n },\n };\n }\n\n if (action.payload.code === 'OK') {\n return {\n ...state,\n description: undefined,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n return {\n ...state,\n description: undefined,\n updateResponse: {\n code: '500',\n message: 'Erreur serveur',\n },\n };\n }\n\n case getType(actions.resetUpdate):\n return {\n ...state,\n description: undefined,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n\n default:\n return { ...state };\n }\n};\n\nexport default packageReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/customerContract.actions';\n\nimport { TCustomer } from '../constants/key-system';\n\nexport type CustomersContractState = Readonly<{\n error?: string;\n customers: TCustomer[];\n transferContract?: TCustomer[];\n\n updateResponse: {\n code: string;\n message: string;\n };\n}>;\n\nconst initialState = {\n customers: [],\n error: undefined,\n transferContract: [],\n\n updateResponse: {\n code: '',\n message: '',\n },\n};\n\ntype Actions = actions.CustomersContractAction;\n\nconst customersContractReducer: Reducer<CustomersContractState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchCustomerContractAsync.success): {\n return {\n ...state,\n customers: action.payload.customers,\n error: undefined,\n };\n }\n\n case getType(actions.fetchCustomerContractAsync.failure):\n return {\n ...state,\n customers: [],\n error: action.payload.code,\n };\n\n case getType(actions.uploadAmendmentsAsync.request): {\n return {\n ...state,\n updateResponse: {\n code: '0',\n message: '',\n },\n };\n }\n\n case getType(actions.uploadAmendmentsAsync.success): {\n return {\n ...state,\n updateResponse: {\n code: '200',\n message: 'success',\n },\n };\n }\n\n case getType(actions.uploadAmendmentsAsync.failure): {\n return {\n ...state,\n updateResponse: {\n code: '500',\n message: 'failure',\n },\n };\n }\n\n case getType(actions.resetUploadAmendments): {\n return {\n ...state,\n updateResponse: {\n code: '',\n message: '',\n },\n };\n }\n\n default:\n return { ...state };\n }\n};\n\nexport default customersContractReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/searchOrder.actions';\n\nimport { TOrder } from 'Models';\n\nexport type OrderState = Readonly<{\n error?: string;\n message?: string;\n order: TOrder[];\n searchClient: {\n error?: string;\n message?: string;\n order: actions.TOrderResponse[];\n };\n}>;\n\nconst initialState = {\n order: [],\n error: undefined,\n message: undefined,\n searchClient: {\n order: [],\n error: undefined,\n message: undefined,\n },\n};\n\ntype Actions = actions.FetchOrderAction;\n\nconst orderReducer: Reducer<OrderState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.fetchOrderAsync.success): {\n return {\n ...state,\n order: action.payload,\n error: undefined,\n message: undefined,\n };\n }\n\n case getType(actions.fetchOrderAsync.failure): {\n return {\n ...state,\n order: [],\n error: action.payload.code,\n message: action.payload.message,\n };\n }\n\n // SEARCH CLIENT\n case getType(actions.searchClientAsync.success): {\n return {\n ...state,\n searchClient: {\n order: action.payload,\n error: undefined,\n message: undefined,\n },\n };\n }\n\n case getType(actions.searchClientAsync.failure): {\n return {\n ...state,\n searchClient: {\n order: [],\n error: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n default:\n return { ...state };\n }\n};\n\nexport default orderReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TResponse, TUser } from 'Models';\nimport * as actions from '../_actions/searchUserGroup.actions';\nimport * as createGroupActions from '../_actions/createGroup.actions';\nimport * as getGroupActions from '../_actions/getGroup.actions';\nimport * as createUserActions from '../_actions/createUser.actions';\nimport * as manageUserActions from '../_actions/manageUser.actions';\nimport * as administrationClientSpace from '../_actions/administrationClientSpace.actions';\n\nexport type UserGroupState = Readonly<{\n error?: string;\n userList: TUser[];\n groupList: string[];\n administrationList: TUser[];\n manageUserResponse: TResponse;\n createUserResponse: TResponse;\n createGroupResponse: TResponse;\n}>;\n\nconst initialState = {\n userList: [],\n error: undefined,\n groupList: [],\n administrationList: [],\n manageUserResponse: { code: '', message: '' },\n createUserResponse: { code: '', message: '' },\n createGroupResponse: { code: '', message: '' },\n};\n\ntype Actions =\n | actions.searchUserGroupAction\n | createGroupActions.CreateGroupAction\n | getGroupActions.getGroupAction\n | createUserActions.CreateUserAction\n | createGroupActions.CreateGroupAction\n | manageUserActions.ManageUserAction\n | administrationClientSpace.AdminClientSpaceAction;\n\nconst userGroupReducer: Reducer<UserGroupState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.searchUserGroupAsync.success): {\n return {\n ...state,\n userList: action.payload.userList || [],\n error: undefined,\n manageUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(actions.searchUserGroupAsync.failure): {\n return {\n ...state,\n userList: [],\n error: action.payload.message,\n manageUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n // CREATE USER\n case getType(createUserActions.createUserAsync.success): {\n return {\n ...state,\n createUserResponse: {\n code: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n case getType(createUserActions.createUserAsync.failure): {\n return {\n ...state,\n createUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n case getType(createUserActions.resetCreateUserResponse): {\n return {\n ...state,\n createUserResponse: {\n code: '',\n message: '',\n },\n };\n }\n // CREATE USER END\n\n // CREATE GROUP\n case getType(createGroupActions.createGroupAsync.success): {\n return {\n ...state,\n createGroupResponse: {\n code: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n case getType(createGroupActions.createGroupAsync.failure): {\n return {\n ...state,\n createGroupResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(createGroupActions.resetGroupResponse): {\n return {\n ...state,\n createGroupResponse: {\n code: '',\n message: '',\n },\n };\n }\n // CREATE GROUP END\n\n case getType(manageUserActions.manageUserAsync.success): {\n return {\n ...state,\n manageUserResponse: {\n code: action.payload.code,\n message: action.payload.message,\n },\n };\n }\n\n case getType(manageUserActions.manageUserAsync.failure): {\n return {\n ...state,\n manageUserResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(manageUserActions.resetManageUserResponse): {\n return {\n ...state,\n manageUserResponse: {\n code: '',\n message: '',\n },\n };\n }\n\n case getType(getGroupActions.getGroupAsync.success): {\n return {\n ...state,\n groupList: action.payload.groupList,\n };\n }\n\n case getType(getGroupActions.getGroupAsync.failure): {\n return {\n ...state,\n groupList: [],\n };\n }\n case getType(getGroupActions.resetGroupListResponse): {\n return {\n ...state,\n groupList: [],\n };\n }\n // AdministrationClientSpace\n case getType(administrationClientSpace.adminClientSpaceAsync.success): {\n return {\n ...state,\n administrationList: action.payload.userList || [],\n error: 'no matches found',\n };\n }\n\n case getType(administrationClientSpace.adminClientSpaceAsync.failure): {\n if (action.payload) {\n return {\n ...state,\n administrationList: [],\n error: action.payload.message,\n };\n }\n return {\n ...state,\n administrationList: [],\n error: 'unexpected error',\n };\n }\n case getType(administrationClientSpace.resetAdminClientSpaceResponse): {\n return {\n ...state,\n administrationList: [],\n error: undefined,\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default userGroupReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { TResponse, TUser } from 'Models';\nimport * as actions from '../_actions/caseResult.action';\n\nexport type RetryFirstPaymentState = Readonly<{\n error?: string;\n retryFirstPaymentResponse: TResponse;\n code?: string;\n message: string;\n}>;\n\nconst initialState = {\n error: undefined,\n code: '',\n message: '',\n retryFirstPaymentResponse: { code: '', message: '' },\n};\n\ntype Actions =\n | actions.RetryFirstPaymentAction\n\nconst retryFirstPaymentReducer: Reducer<RetryFirstPaymentState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.caseResultRetryFirstPaymentAsync.success): {\n return {\n ...state,\n error: undefined,\n retryFirstPaymentResponse: {\n code: action.payload.status as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(actions.caseResultRetryFirstPaymentAsync.failure): {\n return {\n ...state,\n error: action.payload.message,\n retryFirstPaymentResponse: {\n code: action.payload.code as string,\n message: action.payload.message as string,\n },\n };\n }\n\n case getType(actions.retryFirstPayment): {\n return {\n ...state,\n error: undefined,\n retryFirstPaymentResponse: {\n code: '',\n message: '',\n },\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default retryFirstPaymentReducer;\n","import { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\n\nimport * as actions from '../_actions/transferContract.actions';\n\nimport { TOrder } from 'Models';\nimport { log } from '../utils/helpers';\n\nexport type TransferContractState = Readonly<{\n error?: string;\n transferContract: TOrder[];\n transferContractResponse: any;\n}>;\n\nconst initialState = {\n transferContract: [],\n transferContractResponse: undefined,\n};\n\ntype Actions = actions.TransferContractAction;\n\nconst transferContractReducer: Reducer<TransferContractState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.transferGetContractAsync.success): {\n log('payload => ', action.payload);\n return {\n ...state,\n transferContract: action.payload,\n error: undefined,\n };\n }\n case getType(actions.transferGetContractAsync.request):\n case getType(actions.transferContractAsync.request):\n return {\n ...state,\n error: '',\n transferContractResponse: '',\n };\n case getType(actions.transferContractAsync.success):\n return {\n ...state,\n error: '',\n transferContractResponse: 'SUCCESS',\n };\n\n case getType(actions.transferGetContractAsync.failure):\n return {\n ...state,\n transferContract: [],\n error: action.payload.code,\n };\n\n case getType(actions.transferContractAsync.failure): {\n return {\n ...state,\n error: action.payload.message,\n transferContractResponse: 'ERROR',\n };\n }\n\n case getType(actions.resetResponse):\n return {\n ...state,\n transferContract: [],\n error: '',\n };\n\n case getType(actions.resetResponseTransfer):\n return {\n ...state,\n error: '',\n transferContractResponse: '',\n transferContract: [],\n };\n default:\n return { ...state };\n }\n};\n\nexport default transferContractReducer;\n","import { TEPInvoice } from 'Models';\nimport { Reducer } from 'redux';\nimport { getType } from 'typesafe-actions';\nimport { parseSrcIframe } from '../utils/helpers';\n\nimport * as actions from '../_actions/paymentCB.actions';\n\nexport type PaymentState = Readonly<\n {\n error?: string;\n requestProps?: {\n dueDate: string;\n payment: TEPInvoice;\n };\n responsePayload?: {\n errors: Array<{ code: string; description: string }>;\n };\n } & Partial<actions.TPaymentCBResponse>\n>;\n\nexport const initialState: PaymentState = {\n iframe: undefined,\n stripe: undefined,\n adhocPaymentId: undefined,\n transactionId: undefined,\n error: undefined,\n responsePayload: { errors: [] },\n};\n\ntype Actions = actions.PaymentCBAction;\n\nconst paymentReducer: Reducer<PaymentState, Actions> = (\n state = initialState,\n action: Actions,\n) => {\n switch (action.type) {\n case getType(actions.createPaymentCBAsync.request): {\n return {\n ...initialState,\n requestProps: action.payload,\n };\n }\n\n case getType(actions.createPaymentCBAsync.success): {\n return {\n ...state,\n ...action.payload,\n iframe: parseSrcIframe(action.payload.iframe),\n error: undefined,\n };\n }\n\n case getType(actions.createPaymentCBAsync.failure): {\n return {\n ...initialState,\n requestProps: state.requestProps,\n responsePayload: action.payload,\n error: \"Une erreur s'est produite\",\n };\n }\n\n case getType(actions.resetModal): {\n return {\n ...initialState,\n };\n }\n default:\n return { ...state };\n }\n};\n\nexport default paymentReducer;\n","import { combineReducers } from 'redux';\n\nimport authReducer from '../_reducers/auth.reducer';\nimport profileReducer from '../_reducers/profile.reducer';\nimport contractReducer from '../_reducers/contract.reducer';\nimport eventReducer from '../_reducers/event.reducer';\nimport consumptionReducer from '../_reducers/consumption.reducer';\nimport fileReducer from '../_reducers/file.reducer';\nimport paymentReducer from '../_reducers/payment.reducer';\nimport packageReducer from '../_reducers/package.reducer';\nimport customersContractReducer from '../_reducers/customerContract.reducer';\nimport orderReducer from '../_reducers/order.reducer';\nimport userGroupReducer from '../_reducers/searchUserGroup.reducer';\nimport retryFirstPaymentReducer from '../_reducers/caseRetryPayment.reducer';\nimport transferContractReducer from '../_reducers/transferContract.reducer';\nimport paymentCBReducer from '../_reducers/paymentCB.reducer';\n\nconst rootReducer = combineReducers({\n authReducer,\n profileReducer,\n contractReducer,\n eventReducer,\n consumptionReducer,\n fileReducer,\n paymentReducer,\n packageReducer,\n customersContractReducer,\n orderReducer,\n userGroupReducer,\n transferContractReducer,\n paymentCBReducer,\n retryFirstPaymentReducer,\n});\n\nexport default rootReducer;\n","const version = process.env.APP_VERSION;\nconst STORAGE_KEY = `__SERIALIZED_STATE_TREE_v${version}__`;\n\nexport function saveState<T = object>(storeState: T): boolean {\n if (!localStorage) {\n return false;\n }\n\n try {\n const serializedState = JSON.stringify(storeState);\n localStorage.setItem(STORAGE_KEY, serializedState);\n return true;\n } catch (error) {\n throw new Error('store serialization failed');\n }\n}\n\nexport function loadState<T = object>(): T | undefined {\n if (!localStorage) {\n return;\n }\n\n try {\n const serializedState = localStorage.getItem(STORAGE_KEY);\n if (serializedState == null) {\n return;\n }\n return JSON.parse(serializedState);\n } catch (error) {\n throw new Error('store deserialization failed');\n }\n}\n","import { createStore, applyMiddleware, compose } from 'redux';\nimport { createEpicMiddleware } from 'redux-observable';\nimport { RootAction, RootState, Services } from 'Types';\nimport rootEpic from './root-epic';\nimport rootReducer from './root-reducer';\nimport services from '../services';\n\nimport { initialState } from '../_reducers/paymentCB.reducer';\n\nconst getUserId = () => {\n try {\n return sessionStorage.getItem('currentClient');\n } catch (err) {\n return null;\n }\n};\n\nconst prepareState = (state: RootState): RootState => ({\n ...state,\n paymentCBReducer: { ...initialState },\n});\n\nconst loadState = () => {\n try {\n const userId = getUserId();\n let serializedState;\n if (userId) {\n serializedState = sessionStorage.getItem(userId);\n } else {\n serializedState = localStorage.getItem('reduxState');\n }\n if (!serializedState) {\n return {};\n }\n\n return JSON.parse(serializedState);\n } catch (err) {\n console.log('Unable to find state');\n return {};\n }\n};\n\nconst saveState = (state: any) => {\n try {\n const userId = getUserId();\n const serializedState = JSON.stringify(state);\n if (userId) {\n sessionStorage.setItem(userId, serializedState);\n } else {\n localStorage.setItem('reduxState', serializedState);\n }\n } catch (err) {\n console.log('Unable to set state');\n }\n};\n\nconst epicMiddleware = createEpicMiddleware<\n RootAction,\n RootAction,\n RootState,\n Services\n>({\n dependencies: services,\n});\n\nconst composeEnhancers =\n (process.env.NODE_ENV !== 'production' &&\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) ||\n compose;\n\nconst persistedState = prepareState(loadState());\n\nconst middlewares = [epicMiddleware];\n\nconst reducer = (state: any, action: RootAction) => {\n if (action.type === 'REDUX_RESET_STATE') {\n delete state.authReducer;\n delete state.profileReducer;\n delete state.contractReducer;\n delete state.packageReducer;\n delete state.fileReducer;\n delete state.orderReducer;\n delete state.eventReducer;\n delete state.consumptionReducer;\n delete state.userGroupReducer;\n delete state.customersContractReducer;\n delete state.paymentReducer;\n delete state.transferContractReducer;\n }\n\n return rootReducer(state, action);\n};\n\nconst store = createStore(\n reducer,\n persistedState,\n // initialState,\n composeEnhancers(applyMiddleware(...middlewares)),\n);\n\nstore.subscribe(() => {\n saveState(store.getState());\n});\n\nepicMiddleware.run(rootEpic);\n\nexport default store;\n","import _, { isArray } from 'lodash';\nimport { throwError, Observable, from } from 'rxjs';\nimport { ajax } from 'rxjs/ajax';\nimport { map, catchError } from 'rxjs/operators';\nimport { log } from '../utils/helpers';\nimport { hasExpiredSession } from '../utils/storage';\nimport Config from '../utils/config';\nimport Lambda, { InvocationResponse } from 'aws-sdk/clients/lambda';\nimport { AWSError } from 'aws-sdk/lib/error';\nimport {\n RequestError,\n ParsingError,\n FunctionNameError,\n} from '../utils/network/errors';\n\nconst errRegexp: RegExp = new RegExp(/^[45][\\S]+/);\nconst codeMessageRegexp: RegExp = new RegExp(/code|message+/);\n\nconst invokeLambda = async (\n functionName: string,\n payload: object,\n): Promise<any | RequestError> => {\n if (!functionName) {\n return new FunctionNameError();\n }\n const lambdaInstance = new Lambda(Config.aws);\n log(`lambda ${functionName}: payload ====>`, payload);\n return new Promise(resolve => {\n lambdaInstance.invoke(\n {\n FunctionName: functionName,\n Payload: JSON.stringify(payload),\n InvocationType: 'RequestResponse',\n LogType: 'None',\n },\n (err: AWSError, res: InvocationResponse) => {\n if (err) {\n log(\n `Error from lambda ${functionName} ====> `,\n err.message,\n );\n resolve(new RequestError(err.message, err.code, null));\n } else {\n try {\n const response: any = JSON.parse(`${res.Payload}`);\n log(`lambda ${functionName}: response ====>`, response);\n const statusCode: string = `${_.get(\n response,\n 'statusCode',\n '',\n )}`;\n if (errRegexp.test(statusCode)) {\n if (\n response.body &&\n typeof response.body === 'string'\n ) {\n const decodedJson = JSON.parse(response.body);\n\n if (\n codeMessageRegexp.test(decodedJson.message)\n ) {\n resolve(\n new RequestError(\n _.get(\n JSON.parse(decodedJson.message),\n 'message',\n '',\n ),\n statusCode,\n null,\n ),\n );\n }\n\n resolve(\n new RequestError(\n _.get(decodedJson, 'message', ''),\n statusCode,\n null,\n ),\n );\n }\n resolve(\n new RequestError(\n _.get(response, 'body.message', ''),\n statusCode,\n null,\n ),\n );\n } else {\n resolve(response);\n }\n } catch (pErr) {\n console.error(pErr);\n resolve(new ParsingError());\n }\n }\n },\n );\n });\n};\n\nconst apiRequest = <T>({\n path,\n method,\n body,\n isSubscription,\n isPay,\n isPayEP,\n lambdaFunctionName,\n}: any): Observable<T> => {\n const expires = Number(localStorage.getItem('expires'));\n if (expires && new Date().getTime() > expires) {\n localStorage.removeItem('expires');\n return Observable.create((observer: any) => {\n observer.error({\n code: '401',\n message: 'Session expired',\n });\n });\n }\n\n const renderChannel = () => {\n if (!!body.channel) {\n return body.channel;\n }\n\n const storageGroup = localStorage.getItem('userGroup');\n\n let ctrChan;\n if (storageGroup === null && !!body.contractChannel) {\n ctrChan = body.contractChannel;\n delete body.contractChannel;\n }\n\n if (ctrChan) return ctrChan;\n\n return storageGroup !== null ? storageGroup : 'WEB';\n };\n\n const modifiedBody = {\n ...body,\n channel: renderChannel(),\n seller: 'WEKIWI',\n };\n\n if (lambdaFunctionName) {\n // return from(invokeLambda(lambdaFunctionName, modifiedBody));\n }\n\n const url = `${\n isSubscription ? Config.URL_SUBSCRIPTION : Config.URL\n }${path}`;\n // if (isPay && !isSubscription) {\n // url = `${Config.URL_PAY}${path}`;\n // } else {\n // if (isPayEP) {\n // url = `${Config.URL_ENERGYPAID}${path}`;\n // }\n // }\n\n const settings = {\n method,\n url,\n headers: { 'Content-Type': 'application/json' },\n responseType: 'json',\n body: modifiedBody,\n } as any;\n\n const token = localStorage.getItem('token');\n if (token && path !== '/login' && !isPayEP) {\n const Authorization = 'Authorization';\n settings.headers[Authorization] = `Bearer ${token}`;\n }\n\n if (isPayEP) {\n settings.method = 'post';\n settings.headers.Accept = '*/*';\n settings.headers['Access-Control-Allow-Origin'] = '*';\n settings.headers['Cache-Control'] = 'no-cache';\n const ContentType = 'Content-Type';\n settings.headers[ContentType] = 'application/json';\n }\n\n settings.headers['x-api-key'] = Config.ApiKey;\n\n return ajax(settings).pipe(\n catchError(({ message, status, response }) => {\n const error = {\n message,\n code: String(status),\n errors: [],\n };\n if (response) {\n if (isArray(response)) {\n error.errors = response as any;\n } else {\n error.code = response.code;\n error.message = response.message;\n }\n }\n log(`Error from API ${path}: `, error);\n return throwError(error);\n }),\n map(({ response }) => {\n if (!response) {\n return {\n code: '500',\n message: 'Internal Server Error',\n };\n }\n return response;\n }),\n );\n};\n\nconst fetchApiRequestBlob = async (\n bodyRequest: any,\n path: string,\n configPath?: string,\n): Promise<Blob | undefined> => {\n const settings = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(bodyRequest),\n } as any;\n\n const token = localStorage.getItem('token');\n if (token) {\n const Authorization = 'Authorization';\n settings.headers[Authorization] = `Bearer ${token}`;\n }\n\n try {\n const response = await fetch(\n `${configPath ? configPath : Config.URL}${path}`,\n settings,\n );\n return response.blob();\n } catch (err) {\n log(`Error from ${path} (fetch) =>`, err);\n return undefined;\n }\n};\n\nexport { fetchApiRequestBlob, invokeLambda };\nexport default apiRequest;\n","import * as localStorage from './local-storage-service';\nimport apiRequest from './api-service';\n\nexport default {\n localStorage,\n apiRequest,\n};\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","class AuthService {\n public static authenticate() {}\n\n public static logout(): void {\n localStorage.removeItem('token');\n localStorage.removeItem('accessToken');\n localStorage.removeItem('userId');\n localStorage.removeItem('reduxState');\n localStorage.removeItem('expires');\n localStorage.removeItem('isValidated');\n localStorage.removeItem('isEmail');\n }\n\n public static isAuthenticated(): boolean {\n const token = localStorage.getItem('token');\n const accessToken = localStorage.getItem('accessToken');\n const userId = localStorage.getItem('userId');\n return (\n token !== undefined &&\n token !== null &&\n accessToken !== undefined &&\n accessToken !== null &&\n userId !== undefined &&\n userId !== null\n );\n }\n\n public static isVlaidated(): boolean {\n const isValidated = localStorage.getItem('isValidated');\n return (\n isValidated === null ||\n isValidated === undefined ||\n isValidated === 'true'\n );\n }\n}\n\nexport default AuthService;\n","import CustomButton from './CustomButton';\n\nexport default CustomButton;\n","import React from 'react';\n\ntype Props = {\n title?: string;\n color?: string;\n disabled?: boolean;\n onClick?: any;\n arrowLeft?: boolean;\n arrowRight?: boolean;\n isLoading?: boolean;\n heavy?: boolean;\n style?: any;\n};\n\nconst CustomButton: React.FC<Props> = ({\n title,\n color,\n disabled,\n onClick,\n arrowLeft,\n arrowRight,\n isLoading,\n heavy,\n style,\n}) => {\n const classNames: string[] = ['custom-button', `custom-button--${color}`];\n if (!!disabled) classNames.push('custom-button__disabled');\n if (isLoading) classNames.push('custom-button__loading');\n if (!!heavy) classNames.push('custom-button__heavy');\n return (\n <button\n className={classNames.join(' ')}\n type=\"button\"\n onClick={!!disabled ? undefined : onClick}\n style={style}\n >\n {arrowLeft && <i className=\"custom-button__arrowLeft\" />}\n {isLoading ? 'Chargement...' : title}\n {/* {title} */}\n {arrowRight && <i className=\"custom-button__arrowRight\" />}\n </button>\n );\n};\n\nexport default CustomButton;\n","import CustomInput from './CustomInput';\n\nexport default CustomInput;\n","import React, { CSSProperties } from 'react';\n\ntype InputSetting = {\n isLocked?: boolean;\n text?: string;\n value?: any;\n type?: string;\n error?: string;\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => any;\n onToggleModal?: any;\n minLength?: number;\n maxLength?: number;\n isInterrogationVisible?: boolean;\n defaultValue?: any;\n placeholder?: string;\n disabled?: boolean;\n onBlur?: any;\n onKeyPress?: any;\n deleteButton?: boolean;\n deleteButtonOnClick?: () => void;\n style?: CSSProperties;\n};\n\nconst CustomInput: React.FC<InputSetting> = setting => (\n <div style={setting.style} className=\"custom-input\">\n {setting.text && (\n <label htmlFor={`id${setting.text}`}>\n {setting.text}\n {setting.isInterrogationVisible && (\n <span\n className=\"custom-input__layer\"\n onClick={setting.onToggleModal}\n onKeyDown={setting.onToggleModal}\n role=\"button\"\n tabIndex={0}\n >\n ?\n </span>\n )}\n </label>\n )}\n\n {setting.deleteButton && setting.value !== '' && (\n <span\n className=\"custom-input__delete\"\n onClick={setting.deleteButtonOnClick}\n role=\"button\"\n tabIndex={0}\n >\n <span role=\"button\" tabIndex={0}>\n X\n </span>\n </span>\n )}\n\n <input\n className={`custom-input__input${\n setting.isLocked ? ' custom-input__input--locked' : ''\n }`}\n onChange={setting.onInputChange}\n type={setting.type}\n value={setting.value}\n minLength={setting.minLength}\n maxLength={setting.maxLength}\n defaultValue={setting.defaultValue}\n placeholder={setting.placeholder}\n disabled={setting.disabled}\n onBlur={setting.onBlur}\n onKeyPress={setting.onKeyPress}\n />\n {setting.error && setting.error !== '' && (\n <p className=\"custom-input__error\">{setting.error}</p>\n )}\n </div>\n);\nexport default CustomInput;\n","import React from 'react';\n\nimport DayPicker from 'react-day-picker';\nimport 'react-day-picker/lib/style.css';\nimport MomentLocaleUtils from 'react-day-picker/moment';\nimport 'moment/locale/fr';\n\nimport CustomInput from '../CustomInput';\n\nconst modifiersStyles = {\n highlighted: {\n color: 'white',\n backgroundColor: '#ffb40a',\n },\n\n outside: { color: '#8954ba', backgroundColor: 'white' },\n};\n\ntype Props = {\n dateHighlighted?: any;\n handleChangeDay?: any;\n selectedDays?: any[];\n disabledDays?: any[];\n};\n\nconst CustomDayPicker: React.FC<Props> = props => {\n const modifiers = {\n highlighted: props.dateHighlighted,\n weekend: { daysOfWeek: [0, 6] },\n };\n\n return (\n <div className=\"custom-daypicker\">\n <CustomInput\n placeholder=\"JJ-MM-AAAA\"\n disabled={true}\n value={\n props.dateHighlighted !== null &&\n props.dateHighlighted !== undefined\n ? props.dateHighlighted.toLocaleDateString()\n : ''\n }\n />\n <DayPicker\n locale=\"fr\"\n localeUtils={MomentLocaleUtils as any}\n selectedDays={props.selectedDays}\n modifiers={modifiers}\n modifiersStyles={modifiersStyles}\n onDayClick={props.handleChangeDay}\n disabledDays={props.disabledDays}\n />\n </div>\n );\n};\n\nexport default CustomDayPicker;\n","import CustomDayPicker from './CustomDayPicker';\n\nexport default CustomDayPicker;\n","import React from 'react';\n\nimport { CSVLink } from 'react-csv';\nimport ReactTable from 'react-table';\nimport 'react-table/react-table.css';\n\nimport CustomButton from '../CustomButton';\n\nexport const LoadingComponent: React.FC<{ loading: boolean }> = ({\n loading,\n}) => {\n if (loading) {\n return (\n <div className=\"custom-loading -loading -active\">\n <div className=\"custom-loading-inner -loading-inner\">\n Chargement en cours...\n </div>\n </div>\n );\n }\n return null;\n};\n\ntype Props = {\n columns: object[];\n data: any;\n title?: string;\n loading?: boolean;\n defaultPageSize?: number;\n pageSize?: number;\n noDataText?: string;\n sortable?: boolean;\n buttonTitle?: string;\n error?: string;\n SubComponent?: any;\n PaginationComponent?: any;\n showPagination?: boolean;\n showPaginationBottom?: boolean;\n downloadData?: any;\n downloadHeaders?: any;\n downloadFilename?: string;\n downloadButtonTitle?: string;\n className?: string;\n filterable?: boolean;\n handleButtonClick?(): void;\n};\n\nconst CustomTable: React.FC<Props> = ({\n columns,\n data,\n title,\n loading,\n defaultPageSize,\n noDataText,\n sortable,\n buttonTitle,\n handleButtonClick,\n error,\n SubComponent,\n PaginationComponent,\n showPagination,\n showPaginationBottom,\n className,\n downloadHeaders,\n downloadData,\n downloadFilename,\n downloadButtonTitle,\n pageSize,\n filterable,\n}) => (\n <div className=\"custom-table\">\n {title && <h3>{title}</h3>}\n\n <ReactTable\n className={`custom-table__table ${className ? className : ''}`}\n columns={columns}\n data={data}\n pageSize={\n pageSize && !showPagination\n ? pageSize\n : !data\n ? 2\n : defaultPageSize\n }\n filterable={filterable}\n defaultPageSize={defaultPageSize}\n showPaginationBottom={showPaginationBottom === true}\n loading={loading}\n LoadingComponent={LoadingComponent}\n PaginationComponent={PaginationComponent}\n noDataText={noDataText}\n sortable={sortable}\n SubComponent={SubComponent}\n showPagination={showPagination}\n getTrProps={(state: any, rowInfo: any, column: any) => {\n if (rowInfo === undefined) {\n return {};\n }\n return {\n 'data-qnt':\n rowInfo.original\n .SOME_VALUE_WITH_QUANTITY_OF_CHILDREN_ROWS,\n };\n }}\n />\n {!error && buttonTitle && (\n <CustomButton\n title={buttonTitle}\n color=\"orange\"\n onClick={handleButtonClick}\n />\n )}\n {downloadButtonTitle && downloadData && (\n <CSVLink\n className=\"custom-table__downloadLink\"\n data={downloadData}\n headers={downloadHeaders}\n filename={downloadFilename}\n >\n {downloadButtonTitle}\n </CSVLink>\n )}\n </div>\n);\n\nexport default CustomTable;\n","import CustomTable from './CustomTable';\n\nexport default CustomTable;\n","import CustomToggle from './CustomToggle';\n\nexport default CustomToggle;\n","import * as React from 'react';\n\ninterface IProps {\n disabled?: boolean;\n text?: string;\n value?: string;\n checked?: boolean;\n id?: any;\n handleCheck?: any;\n handleClick?: any;\n isLocked?: boolean;\n}\n\n// TODO Implement disabled props\nconst CustomToggle: React.SFC<IProps> = props => (\n <div className=\"custom-toggle\">\n <input\n type=\"checkbox\"\n id={props.id}\n value={props.value}\n checked={props.checked}\n onChange={props.handleCheck}\n />\n <div onClick={props.handleClick} className=\"custom-toggle__toggle\">\n <label htmlFor={props.id}>\n <i />\n </label>\n </div>\n <p className={` ${props.isLocked && 'isLocked'}`}>{props.text}</p>\n </div>\n);\n\nexport default CustomToggle;\n","import React from 'react';\nimport _ from 'lodash';\nimport Select from 'react-select';\nimport CreatableSelect from 'react-select/creatable';\n\nimport { SelectOption } from 'Types';\n\nexport interface IStateElements {\n isMenuOpen: boolean;\n}\n\nexport interface IProps {\n disabled?: boolean | undefined;\n id?: string;\n text?: string;\n value?: any;\n defaultValue?: any;\n options?: Array<SelectOption<any>>;\n placeholder?: string;\n isClearable?: boolean;\n handleChangeSelect: any;\n error?: string | undefined | SelectOption<any>;\n isMulti?: boolean;\n inputValue?: any;\n onInputChange?: (input: string) => void;\n}\n\nconst indicatorSeparatorStyle = {\n alignSelf: 'stretch',\n // backgroundColor: colourOptions[2].color,\n marginBottom: 8,\n marginTop: 8,\n width: 1,\n};\n\nconst IndicatorSeparator = ({ innerProps }: any) => {\n return <span style={indicatorSeparatorStyle} {...innerProps} />;\n};\n\nclass CustomSelect extends React.Component<IProps> {\n state: IStateElements = {\n isMenuOpen: false,\n };\n\n handleChange(val: boolean): void {\n this.setState({ isMenuOpen: val });\n }\n\n render() {\n const {\n id,\n text,\n value,\n defaultValue,\n handleChangeSelect,\n options,\n placeholder,\n error,\n onInputChange,\n isClearable,\n isMulti,\n inputValue,\n disabled,\n } = this.props;\n const current: SelectOption<any> | undefined =\n options && options.find(option => option.value === defaultValue);\n const { isMenuOpen } = this.state;\n\n const renderClearable = () => (\n <CreatableSelect\n className={`custom-select__content__select ${\n isMenuOpen ? 'custom-select__content__select--menuOpen' : ''\n }`}\n classNamePrefix=\"react-select\"\n isClearable\n onChange={handleChangeSelect}\n onInputChange={onInputChange}\n inputValue={inputValue}\n options={options}\n isDisabled={!!disabled}\n placeholder={_.get(current, 'label') || placeholder}\n formatCreateLabel={(value: string) =>\n `Créer : ${value.toUpperCase()}`\n }\n />\n );\n\n const renderDefault = () => (\n <Select\n className={`custom-select__content__select ${\n isMenuOpen ? 'custom-select__content__select--menuOpen' : ''\n }`}\n classNamePrefix=\"react-select\"\n value={value}\n placeholder={_.get(current, 'label') || placeholder}\n defaultValue={defaultValue}\n onChange={handleChangeSelect}\n onInputChange={onInputChange}\n options={options}\n onMenuOpen={() => this.handleChange(true)}\n onMenuClose={() => this.handleChange(false)}\n isDisabled={!!disabled}\n />\n );\n\n const renderMulti = () => (\n <Select\n className={`custom-select__content__select ${\n isMenuOpen ? 'custom-select__content__select--menuOpen' : ''\n }`}\n classNamePrefix=\"react-select\"\n value={value}\n placeholder={_.get(current, 'label') || placeholder}\n defaultValue={defaultValue}\n onChange={handleChangeSelect}\n options={options}\n isDisabled={!!disabled}\n isMulti\n closeMenuOnSelect={false}\n components={{ IndicatorSeparator }}\n />\n );\n\n const manageSelect = () => {\n if (isClearable) return renderClearable();\n if (isMulti) return renderMulti();\n\n return renderDefault();\n };\n\n return (\n <div className=\"custom-select\">\n <div className=\"custom-select__content\">\n <label htmlFor={id}>{text}</label>\n\n {manageSelect()}\n </div>\n\n {error && error !== '' && (\n <p className=\"custom-select__error\">{error}</p>\n )}\n </div>\n );\n }\n}\n\nexport default CustomSelect;\n","import CustomSelect from './CustomSelect';\nexport default CustomSelect;\n","import React from 'react';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Common;\n\ntype Props = {\n show?: boolean;\n showCloseButton?: boolean;\n handleClick?: any;\n className?: string;\n children: JSX.Element[] | JSX.Element;\n customStyle?: React.CSSProperties;\n};\n\nconst CustomModal: React.FC<Props> = ({\n show,\n showCloseButton,\n handleClick,\n className,\n children,\n customStyle,\n}) => (\n <div\n role=\"button\"\n tabIndex={0}\n className={`custom-modal ${show ? ' custom-modal--show-modal' : ''} `}\n >\n <div\n className={` custom-modal__content ${\n className !== '' ? className : ''\n }`}\n role=\"button\"\n tabIndex={0}\n style={customStyle}\n >\n {showCloseButton && (\n <span\n className=\"custom-modal__content__close-button\"\n onClick={handleClick}\n role=\"button\"\n tabIndex={0}\n >\n {Wording.popup.closeButton}\n </span>\n )}\n {children}\n </div>\n </div>\n);\n\nexport default CustomModal;\n","import CustomModal from './CustomModal';\n\nexport default CustomModal;\n","import CustomDate from './CustomDate';\n\nexport default CustomDate;\n","import React from 'react';\nimport { List } from 'react-content-loader';\nimport {\n TOffer,\n TProduct,\n TAdditionalRate,\n TAmountWithLabel,\n TUnitPriceWithLabel,\n} from 'Models';\n\nimport CustomToggle from '../CustomToggle';\nimport { transformPriceLabel } from '../../utils/helpers';\nimport { initialUnitPriceWithLabel } from '../../utils/initialState';\nimport WordingConstant from '../../utils/wording.json';\nimport { InputEvent } from 'Types';\nimport { EModeManageOffer } from '../../utils/enums';\n\nconst Wording = WordingConstant.PackagePage;\nconst CommonWording = WordingConstant.Common;\nconst PriceWording = Wording.price;\nconst DetailWording = Wording.detail;\n\ntype Props = {\n loading: boolean;\n prices: number[];\n offer: TOffer;\n products: TProduct[];\n additionalOptions: TAdditionalRate[];\n currentProductCodes: string[];\n currentAdditionalOptions: string[];\n loadingOption: boolean;\n handleToggle: any;\n contractProduct: any;\n};\n\nconst CommonUnit: { [key: string]: string } = CommonWording.unit;\n\nconst PlanElement: React.FC<Props> = ({\n loading,\n prices,\n offer,\n products,\n additionalOptions,\n currentProductCodes,\n currentAdditionalOptions,\n handleToggle,\n loadingOption,\n contractProduct,\n}) => {\n const renderDetail = () => {\n if (loading) {\n return (\n <p className=\"plan-element__noOffer\">\n {CommonWording.isLoading}\n </p>\n );\n }\n if (!offer) {\n return (\n <p className=\"plan-element__noOffer\">{CommonWording.noData}</p>\n );\n }\n\n const details: TAmountWithLabel[] = offer.details || [];\n const totalAmount = details.find(\n d => d.category === DetailWording.category.totalAmount,\n );\n const subscription =\n totalAmount && totalAmount.unitPrices\n ? totalAmount.unitPrices.find(\n p => p.label === PriceWording.subscription.label,\n )\n : { ...initialUnitPriceWithLabel };\n const additionalRates = details.filter(\n d => d.category === DetailWording.category.additionalRate,\n );\n const totalBudget = details.find(\n d => d.category === DetailWording.category.totalBudget,\n );\n const discountRates = details.find(\n d => d.category === DetailWording.category.discountRate,\n );\n\n const renderPrice = (\n { label, price, unit }: TUnitPriceWithLabel,\n index: number,\n fix_part?: boolean,\n ) => {\n const displayedUnit = CommonUnit[unit];\n const display = transformPriceLabel(label);\n if (display === '') return null;\n const formattedPrice = fix_part\n ? parseFloat(price).toFixed(2)\n : price;\n return (\n <p key={index}>\n {display} :{' '}\n <span>\n {formattedPrice} {displayedUnit}\n </span>\n </p>\n );\n };\n return (\n <>\n <div\n className={`plan-element__description ${\n prices.length === 0\n ? `plan-element__description--cyclicBill`\n : ''\n }`}\n >\n {offer && loadingOption ? (\n <List />\n ) : (\n <React.Fragment>\n <div className=\"plan-element__description__subscription\">\n <p className=\"plan-element__description__title\">\n {Wording.detail.title.fix}\n </p>\n {subscription &&\n renderPrice(subscription, 0, true)}\n <div className=\"plan-element__description__separator\" />\n </div>\n <p className=\"plan-element__description__title\">\n {Wording.detail.title.consumption}\n </p>\n <p className=\"plan-element__description__subtitle\">\n {Wording.detail.title.grossPrice}\n </p>\n {totalAmount &&\n totalAmount.unitPrices &&\n totalAmount.unitPrices\n .filter(\n p =>\n p.label !==\n PriceWording.subscription.label,\n )\n .map((e, index) => renderPrice(e, index))}\n <br className=\"plan-element__description__margin\" />\n {additionalRates.map(\n (rate, idx1) =>\n rate &&\n rate.unitPrices &&\n rate.unitPrices.map((e, idx2) =>\n renderPrice(e, idx1 + idx2),\n ),\n )}\n {totalBudget &&\n totalBudget.unitPrices &&\n totalBudget.unitPrices.map((e, index) =>\n renderPrice(e, index),\n )}\n <br className=\"plan-element__description__margin\" />\n <p className=\"plan-element__description__subtitle\">\n {Wording.detail.title.discountPrice}\n </p>\n {discountRates &&\n discountRates.unitPrices &&\n discountRates.unitPrices.map((e, index) =>\n renderPrice(e, index),\n )}\n {additionalOptions &&\n currentAdditionalOptions &&\n currentAdditionalOptions.length > 0 && (\n <React.Fragment>\n <div className=\"plan-element__description__separator\" />\n <p className=\"plan-element__description__title\">\n {Wording.detail.title.option}\n </p>\n {additionalOptions.map((e, index) => {\n if (\n currentAdditionalOptions &&\n currentAdditionalOptions.includes(\n e.label,\n ) &&\n e.detail\n ) {\n return renderPrice(\n e.detail,\n index,\n );\n }\n return null;\n })}\n </React.Fragment>\n )}\n <div className=\"plan-element__description__separator\" />\n {offer.product && offer.product.description && (\n <p>{offer.product.description}</p>\n )}\n </React.Fragment>\n )}\n </div>\n </>\n );\n };\n\n const containerClassName = `plan-element${\n prices.length === 0 ? ` plan-element--cyclicBill` : ''\n }`;\n\n const priceClassName = `plan-element__prices ${\n prices.length > 1 ? 'plan-element__prices--larger' : ''\n }${offer ? '' : ' plan-element__prices--noOffer'}`;\n\n return (\n <div className={containerClassName}>\n {prices.length !== 0 && (\n <div className={priceClassName}>\n {prices &&\n prices.map((p, index) => (\n <div\n key={index}\n className={`plan-element__prices__label ${\n index === 0 && prices.length > 1\n ? 'plan-element__prices__label--border'\n : ''\n }`}\n >\n {prices.length > 1 && (\n <span className=\"plan-element__prices__label__timeframe\">\n {CommonWording.timeframe[index]}\n </span>\n )}\n <label\n htmlFor=\"idPrice\"\n className=\"plan-element__prices__label__priceDescription\"\n >\n {p}\n <p>{WordingConstant.Common.priceUnit}</p>\n </label>\n <span className=\"plan-element__prices__label__month\">\n {WordingConstant.Common.priceCyclic}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {renderDetail()}\n\n <div\n className={`plan-element__toggle ${\n prices.length === 0\n ? `plan-element__toggle--cyclicBill`\n : ''\n }`}\n >\n {products && products.length > 1 && (\n <div className=\"plan-element__toggle__productOptions\">\n <p className=\"plan-element__toggle__productOptions__title\">\n {Wording.detail.title.fixPrice}\n </p>\n\n {products.map((product, index) => {\n if (product.default) {\n return false;\n }\n return (\n <CustomToggle\n key={index}\n id={`idFixPrice__${index}`}\n text={\n Wording.detail.title.fixPriceDescription\n }\n value={product.productCode}\n checked={currentProductCodes.includes(\n product.productCode,\n )}\n handleCheck={(e: InputEvent) => {\n // Send the product (FIX) if the toggle is checked\n // Otherwise use default product\n let pro: TProduct | undefined = product;\n if (e.currentTarget.checked) {\n pro = product;\n } else {\n pro = products.find(p => p.default);\n }\n\n handleToggle('product', {\n product: pro,\n mode: EModeManageOffer.PRODUCT,\n });\n }}\n />\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default PlanElement;\n","import PlanElement from './PlanElement';\n\nexport default PlanElement;\n","import EnergyDetail from './EnergyDetail';\n\nexport default EnergyDetail;\n","import React from 'react';\n\nconst EnergyDetail: React.FC<{\n details: Array<{\n title: string;\n value: string;\n }>;\n}> = ({ details }) => (\n <div className=\"energy-detail\">\n {details &&\n details.map(({ title, value }, index) => (\n <span key={index}>\n <p>{title}: </p>\n <p>{value}</p>\n </span>\n ))}\n </div>\n);\n\nexport default EnergyDetail;\n","import React, { useEffect } from 'react';\nimport InputRange, { Range } from 'react-input-range';\nimport 'react-input-range/lib/css/index.css';\n\nimport WordingOption from '../../utils/wording.json';\n\nconst Wording = WordingOption.PackagePage;\n\nexport type Props = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n onChange: (prices: number[]) => void;\n};\n\nconst EnergyGauge: React.FC<Props> = ({\n initial,\n ranges,\n maxValue,\n onChange,\n}) => {\n useEffect(() => {\n onChange(ranges[initial]);\n }, [ranges]);\n\n const renderProgressBar = (title: string, idx: any) => {\n const height = ranges[initial][idx];\n const style = {\n height: `${((maxValue - height) * 100) / maxValue}%`,\n };\n return (\n <div className=\"progress\">\n <div className=\"progress__bar\" style={style} />\n <div className=\"progress__label\">\n <span className=\"progress__label__value\">{title}</span>\n <span className=\"progress__label__value\">{height} €</span>\n </div>\n </div>\n );\n };\n\n const renderRangeSlider = () => {\n return (\n <InputRange\n formatLabel={() => ''}\n maxValue={ranges.length - 1}\n minValue={0}\n step={1}\n value={initial}\n onChange={(value: any) => {\n onChange(ranges[value]);\n }}\n />\n );\n };\n\n return (\n <div className=\"energy-gauge\">\n <div className=\"energy-gauge__progress\">\n {renderProgressBar(Wording.plan.gauge.summer, 0)}\n {renderProgressBar(Wording.plan.gauge.winter, 1)}\n </div>\n {renderRangeSlider()}\n </div>\n );\n};\n\nexport default EnergyGauge;\n","import EnergyGauge from './EnergyGauge';\n\nexport default EnergyGauge;\n","import React from 'react';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Common;\n\ntype Props = {\n title?: string;\n price?: string;\n description?: string;\n chosen?: boolean;\n recommended?: boolean;\n onClick?: any;\n};\n\nconst PackageElement: React.FC<Props> = ({\n title,\n price,\n description,\n chosen,\n recommended,\n onClick,\n}: Props) => {\n let className = 'package-element';\n if (recommended) {\n className += ' package-element--recommended';\n }\n if (chosen) {\n className += ' package-element--chosen';\n }\n return (\n <div className={className} onClick={onClick} role=\"button\" tabIndex={0}>\n {title && <p className=\"package-element__title\">{title}</p>}\n {recommended && (\n <p className=\"package-element__iconizing\">\n {WordingConstant.PackagePage.iconizing}\n </p>\n )}\n <label htmlFor=\"idPrice\" className=\"package-element__price\">\n {price}\n <p>{Wording.priceUnit}</p>\n </label>\n <span>{Wording.priceCyclic}</span>\n {description && (\n <div className=\"package-element__description\">\n {description}\n </div>\n )}\n {chosen && <i className=\"checkmark\" />}\n </div>\n );\n};\n\nexport default PackageElement;\n","import PackageElement from './PackageElement';\n\nexport default PackageElement;\n","import CustomCheckbox from './CustomCheckbox';\n\nexport default CustomCheckbox;\n","import React from 'react';\n\ntype Props = {\n text?: string;\n id?: string;\n checked?: boolean;\n handleCheck?: any;\n imageSrc?: string;\n description?: string;\n};\n\nconst CustomCheckbox: React.FC<Props> = props => (\n <div\n className={`custom-checkbox ${props.description &&\n props.description !== '' &&\n 'custom-check--withDescription'}`}\n >\n <input\n type=\"checkbox\"\n id={props.id}\n checked={props.checked}\n onChange={props.handleCheck}\n value={props.text || ''}\n />\n\n <label\n htmlFor={props.id}\n className={props.imageSrc ? 'custom-checkbox__label' : ''}\n onClick={props.handleCheck}\n >\n {props.imageSrc && <img src={props.imageSrc} className=\"\" alt=\"\" />}\n <div className=\"custom-checkbox__label__content\">\n <p className=\"custom-checkbox__label__content__text\">\n {props.text}\n </p>\n {props.description && props.description !== '' && (\n <p className=\"custom-checkbox__label__content__description\">\n {props.description}\n </p>\n )}\n </div>\n </label>\n </div>\n);\n\nexport default CustomCheckbox;\n","import CustomRadio from './CustomRadio';\r\n\r\nexport default CustomRadio;\r\n","import React from 'react';\r\n\r\ntype Props = {\r\n text: string;\r\n value: string;\r\n id?: string;\r\n checked: boolean;\r\n handleCheck: any;\r\n description?: string;\r\n};\r\n\r\nconst CustomRadio: React.FC<Props> = ({\r\n text,\r\n value,\r\n id,\r\n checked,\r\n handleCheck,\r\n description,\r\n}) => (\r\n <label htmlFor={id} className=\"custom-radio\">\r\n <input\r\n type=\"checkbox\"\r\n id={id}\r\n checked={checked}\r\n onChange={handleCheck}\r\n value={value}\r\n />\r\n <span className=\"custom-radio__checkmark\" />\r\n {text}\r\n {description && (\r\n <p className=\"custom-radio__description\">{description}</p>\r\n )}\r\n </label>\r\n);\r\n\r\nexport default CustomRadio;\r\n","import React from 'react';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\n\nconst Wording = WordingConstant.MainPage.SideBar;\n\nexport type InjectedProps = {\n handleLogout(): void;\n};\n\ntype Props = InjectedProps & RouteComponentProps<any>;\n\nexport const LogoutButton: React.FC<Props> = ({ history, handleLogout }) => (\n <div\n className=\"side-bar__logout\"\n onClick={() => {\n AuthService.logout();\n handleLogout();\n history.push('/');\n }}\n >\n <img src={resources['ic-logout-sidebar']} alt=\"ic-logout-sidebar\" />\n <p>{Wording.logout}</p>\n </div>\n);\n\nexport default withRouter(LogoutButton);\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport { RouteProps, SubRouteProps } from 'Types';\nimport LogoutButton from './LogoutButton';\n\nconst Wording = WordingConstant.MainPage.SideBar;\n\ntype Props = {\n routes: RouteProps[];\n firstName: string;\n lastName: string;\n customerNbr: string;\n isAdmin?: boolean;\n userId?: string;\n groupe?: string;\n handleLogout(): void;\n};\n\nconst SideBar: React.FC<Props> = ({\n routes,\n firstName,\n lastName,\n customerNbr,\n handleLogout,\n isAdmin,\n groupe,\n userId,\n}) => {\n const renderUser = () => {\n if (isAdmin) {\n return (\n <>\n <p className=\"title-adm\">\n {Wording.adm_user}\n <span>{userId}</span>\n </p>\n <p className=\"title-adm\">\n {Wording.adm_groupe}\n <span> {groupe}</span>\n </p>\n </>\n );\n }\n\n return (\n <>\n <p>\n {firstName} {lastName}\n </p>\n <p>\n {Wording.numClient}\n {customerNbr}\n </p>\n </>\n );\n };\n return (\n <div className=\"side-bar\">\n <img src={resources['ic-logo-sidebar']} />\n <div className=\"side-bar__data-private\">\n <img src={resources['ic-avatar']} alt=\"ic-avatar\" />\n\n <div className=\"side-bar__data-private__name-number\">\n {renderUser()}\n <LogoutButton handleLogout={handleLogout} />\n </div>\n </div>\n\n <div className=\"side-bar__navigation\">\n <ul className=\"side-bar__navigation__list\">\n {routes.map((route: RouteProps, index: number) => {\n if (!!route.hidden) return null;\n return (\n <React.Fragment key={index}>\n <h2\n className=\"side-bar__navigation__list__title\"\n key={index}\n >\n {route.title}\n </h2>\n <ul>\n {route.links.map(\n (\n subRoute: SubRouteProps,\n indexRoute: number,\n ) => (\n <li key={indexRoute}>\n {(subRoute.title ===\n Wording.routes.contact.links\n .FAQ.title && (\n <a\n href={subRoute.path}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {route.title}\n </a>\n )) || (\n <Link\n to={\n route.path +\n subRoute.path\n }\n >\n {subRoute.title}\n </Link>\n )}\n </li>\n ),\n )}\n </ul>\n </React.Fragment>\n );\n })}\n </ul>\n </div>\n </div>\n );\n};\n\nexport default SideBar;\n","import SideBar from './SideBar';\n\nexport default SideBar;\n","import React from 'react';\n\nimport { TContact, TAddress, TContract } from 'Models';\nimport { ECustomerType } from '../../utils/enums';\nimport resources from '../../utils/resources';\nimport { getLabelCivility } from '../../utils/helpers';\n\nexport const BannerElement: React.FC<{\n imgSrc: string;\n contact: TContact;\n customerType: ECustomerType;\n address?: TAddress;\n contractNumber: string;\n span: boolean;\n}> = ({ imgSrc, contact, customerType, address, contractNumber, span }) => {\n const customerFullName = contact.customerFullName;\n\n let name = `${customerFullName.firstName} ${customerFullName.lastName}`;\n if (customerFullName.lastName === '') {\n name = `${customerFullName.firstName}`;\n } else {\n if (customerFullName.civility) {\n name = `${getLabelCivility(customerFullName.civility)} ${name}`;\n }\n }\n if (customerType === ECustomerType.PROFESSIONAL) {\n name = contact.companyName;\n }\n\n return (\n <React.Fragment>\n <img src={imgSrc} alt=\"img-banner\" />\n <p className=\"banner__item__name\">{name}</p>\n {address && (\n <p className=\"banner__item__address\">\n {`${address.number || ''} ${address.street ||\n ''} ${address.postalCode || ''} ${address.townName ||\n ''}`}\n </p>\n )}\n <p className=\"banner__item__client-number\">N° {contractNumber}</p>\n {span && <span />}\n </React.Fragment>\n );\n};\n\nexport type Props = {\n currentContract: TContract;\n contracts: TContract[];\n contact: TContact;\n customerType: ECustomerType;\n handleChange: (contractNumber: string) => void;\n};\n\ntype State = {\n isMenuOpen: boolean;\n};\n\nclass Banner extends React.Component<Props, State> {\n state = {\n isMenuOpen: false,\n };\n\n dropDown = () => {\n const { isMenuOpen } = this.state;\n this.setState({ isMenuOpen: !isMenuOpen });\n };\n\n selectItem = (contractNumber: string) => {\n const { handleChange } = this.props;\n handleChange(contractNumber);\n this.setState({\n isMenuOpen: false,\n });\n };\n\n setImage(energy: string) {\n if (energy === 'EL') return resources['ic-elec-off'];\n return resources['ic-gas-on'];\n }\n\n renderDefaultItem() {\n const {\n contact,\n customerType,\n contracts,\n currentContract,\n } = this.props;\n const address = currentContract.deliveryPoint.address;\n return (\n <BannerElement\n imgSrc={this.setImage(currentContract.energy)}\n contact={contact}\n customerType={customerType}\n address={address}\n contractNumber={currentContract.contractNumber}\n span={contracts !== undefined && contracts.length > 1}\n />\n );\n }\n\n render() {\n const { isMenuOpen } = this.state;\n const {\n contracts,\n contact,\n customerType,\n currentContract,\n } = this.props;\n return (\n <div\n role=\"button\"\n className={`banner ${\n isMenuOpen && contracts.length > 1 ? 'banner--open' : ''\n }`}\n onClick={this.dropDown}\n tabIndex={0}\n >\n <div className=\"banner__item\">{this.renderDefaultItem()}</div>\n <div\n className=\"banner__items\"\n style={{\n display:\n isMenuOpen && contracts.length > 1\n ? 'block'\n : 'none',\n }}\n >\n {contracts &&\n contracts.map((contract: TContract, index: number) => {\n if (\n contract.contractNumber ===\n currentContract.contractNumber\n ) {\n return false;\n }\n\n const address = contract.deliveryPoint.address;\n const energy = contract.energy;\n const contractNumber = contract.contractNumber;\n return (\n <React.Fragment key={index}>\n <span className=\"banner__items__line\" />\n <div\n key={index}\n role=\"button\"\n onClick={() =>\n this.selectItem(contractNumber)\n }\n className=\"banner__items__item\"\n tabIndex={0}\n >\n <BannerElement\n imgSrc={this.setImage(energy)}\n contact={contact}\n customerType={customerType}\n address={address}\n contractNumber={contractNumber}\n span={true}\n />\n </div>\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default Banner;\n","import Banner from './Banner';\n\nexport default Banner;\n","import React, { CSSProperties } from 'react';\n\nimport CustomButton from '../CustomButton';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport { isHtml } from '../../utils/helpers';\n\nconst Wording = WordingConstant.Common;\n\ntype Props = {\n show?: boolean;\n showCloseButton?: boolean;\n title: string;\n description: string;\n state?: number;\n customDescription?: string;\n descriptionStyle?: CSSProperties;\n showLogo?: boolean;\n handleCancel?: () => void;\n handleValidate?: () => void;\n};\n\n// state = 0 : success\n// state = 1 : failure\n// state = 2 : request\nconst Modal: React.FC<Props> = ({\n show,\n state = 2,\n showCloseButton = true,\n title,\n description,\n handleCancel,\n handleValidate,\n children,\n customDescription,\n descriptionStyle,\n showLogo,\n}) => {\n // const show = true;\n // const state = 1;\n const showBottom = () => {\n switch (state) {\n case 2:\n return (\n <div className=\"modal__content__buttons\">\n <CustomButton\n title={Wording.popup.cancelButton}\n onClick={handleCancel}\n color={'gray'}\n arrowLeft\n />\n <CustomButton\n title={Wording.popup.validateButton}\n onClick={handleValidate}\n color={'orange'}\n />\n </div>\n );\n case 1:\n return (\n <div className=\"modal__content__description\">\n <p className=\"desc-text\">\n Merci de votre compréhension,\n </p>\n <p className=\"desc-text\">La team Wekiwi</p>\n </div>\n );\n\n case 0:\n\n default:\n return false;\n }\n };\n\n if (!show) {\n return null;\n }\n\n const prepareDescription = (str: string) =>\n str.split('\\n').map((item, i) => (\n <p style={descriptionStyle} key={i}>\n {item}\n </p>\n ));\n\n const renderCustomDescriptipn = () => {\n if (customDescription) {\n if (isHtml(customDescription)) {\n return (\n <p\n style={descriptionStyle}\n dangerouslySetInnerHTML={{ __html: customDescription }}\n ></p>\n );\n }\n return <p>{customDescription}</p>;\n }\n return prepareDescription(description);\n };\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className={`modal ${show ? ' modal--show-modal' : ''}`}\n onClick={handleCancel}\n onKeyDown={handleCancel}\n >\n <div\n role=\"button\"\n tabIndex={0}\n className={`modal__content ${\n state === 1 ? 'modal__content--error' : ''\n }`}\n onClick={e => {\n e.stopPropagation();\n }}\n >\n {showCloseButton && (\n <span\n className=\"modal__content__close-button\"\n onClick={handleCancel}\n role=\"button\"\n tabIndex={0}\n >\n {Wording.popup.closeButton}\n </span>\n )}\n {(state === 1 || showLogo) && (\n <div className=\"modal__content__image\">\n <img\n src={resources['ic-wekiwi-popup-orange']}\n alt=\"logo-wekiwi\"\n />\n </div>\n )}\n\n {title && title !== '' && (\n <div className=\"modal__content__title\">\n {/* <div className=\"layer\">?</div> */}\n <h3>{title}</h3>\n </div>\n )}\n\n <div className=\"modal__content__description\">\n {renderCustomDescriptipn()}\n </div>\n\n {showBottom()}\n {children}\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import Modal from './Modal';\n\nexport default Modal;\n","import React from 'react';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Footer;\n\nconst Footer: React.FC<{}> = ({}) => {\n return (\n <div className=\"footer\">\n <div className=\"footer__articles\">\n {Wording.articles.map((e, index) => {\n const show = index < Wording.articles.length - 1;\n return (\n <React.Fragment key={index}>\n <a\n href={e.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {e.text}\n </a>\n {show && <p>|</p>}\n </React.Fragment>\n );\n })}\n </div>\n\n <div className=\"footer__social\">\n <a\n href={Wording.socialLink.linkedin}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-linkedin']} alt=\"ic-linkedin\" />\n </a>\n <a\n href={Wording.socialLink.instagram}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-instagram']} alt=\"ic-instagram\" />\n </a>\n <a\n href={Wording.socialLink.facebook}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-facebook']} alt=\"ic-facebook\" />\n </a>\n <a\n href={Wording.socialLink.youtube}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-youtube']} alt=\"ic-youtube\" />\n </a>\n <a\n href={Wording.socialLink.twitter}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-twitter']} alt=\"ic-twitter\" />\n </a>\n </div>\n <p className=\"footer__bottom_text\"> {Wording.footerBottomText} </p>\n </div>\n );\n};\n\nexport default Footer;\n","import Footer from './Footer';\n\nexport default Footer;\n","import React from 'react';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.PaymentPage.balance;\n\ntype Props = {\n contractBalance?: string;\n customerBalance?: string;\n invoiceBalance?: string;\n};\n\nconst Balance: React.FC<Props> = ({ contractBalance }) => {\n return (\n <div className=\"balance-container\">\n <div className=\"balance-container__block\">\n {contractBalance ? (\n <div className=\"balance-container__block__head\">\n <p>{Wording.title}</p>\n <h3>{`${contractBalance} €`}</h3>\n </div>\n ) : (\n <p className=\"balance-container__block__error\">\n {Wording.error}\n </p>\n )}\n </div>\n </div>\n );\n};\n\nexport default Balance;\n","import Balance from './Balance';\n\nexport default Balance;\n","import CustomTransfer from './CustomTransfer';\n\nexport default CustomTransfer;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport CustomButton from '../CustomButton';\n\nexport type InputItem = {\n label: string;\n value: string;\n placeholder?: string;\n maxLength: number;\n error?: string;\n onChange(e: InputEvent): void;\n};\n\nexport type Props = {\n title: string;\n modalTitle: string;\n description: string;\n inputs: InputItem[];\n buttonTitle: string;\n error?: string;\n handleInputChange(e: InputEvent, index: number): void;\n handleButtonClick(): void;\n handleModal(): void;\n};\n\nconst CustomTransfer: React.FC<Props> = ({\n title,\n description,\n inputs,\n buttonTitle,\n handleInputChange,\n handleButtonClick,\n error,\n handleModal,\n modalTitle,\n}) => {\n const displayInput = (input: InputItem, index: number) => {\n const renderSubLink = () => (\n <div className=\"custom-transfer__inputs__content\">\n <p className={`${input.label === '' && 'undefined'}`}></p>\n <p className=\"modal-title\" onClick={handleModal}>\n {modalTitle}\n </p>\n </div>\n );\n return (\n <div className=\"custom-transfer__inputs\" key={index}>\n <div className=\"custom-transfer__inputs__content\">\n <p className={`${input.label === '' && 'undefined'}`}>\n {input.label}\n </p>\n\n <input\n onChange={(e: InputEvent) =>\n handleInputChange(e, index)\n }\n type=\"text\"\n value={input.value}\n minLength={input.maxLength}\n maxLength={input.maxLength}\n placeholder={input.placeholder}\n />\n </div>\n {input.error && (\n <p className=\"custom-transfer__inputs__error\">\n {input.error}\n </p>\n )}\n\n {inputs.length > 1 && index === 1 ? renderSubLink() : null}\n {inputs.length === 1 && renderSubLink()}\n </div>\n );\n };\n\n return (\n <div className=\"custom-transfer\">\n <h3>{title}</h3>\n {error ? (\n <p className=\"custom-transfer__error\">{error}</p>\n ) : (\n <>\n <p>{description}</p>\n {inputs.map((input: InputItem, index: number) => {\n return displayInput(input, index);\n })}\n <CustomButton\n title={buttonTitle}\n color=\"orange\"\n onClick={handleButtonClick}\n />\n </>\n )}\n </div>\n );\n};\n\nexport default CustomTransfer;\n","import React from 'react';\nimport ProgressBar from 'react-customizable-progressbar';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ConsumptionPage;\n\ntype Props = {\n progress: number;\n steps?: number;\n pathImg: string;\n};\n\nconst CustomProgressbar = (props: Props) => {\n return (\n <div className=\"custom-progressbar\">\n <h3>{Wording.progressBar.title}</h3>\n\n <div className=\"custom-progressbar__section\">\n <ProgressBar\n steps={props.steps ? props.steps : 100}\n radius={125}\n progress={props.progress}\n strokeWidth={5}\n strokeColor=\"#ffb40a\"\n trackStrokeWidth={4}\n pointerRadius={4}\n pointerStrokeWidth={8}\n pointerStrokeColor=\"#ffb40a\"\n >\n <div className=\"custom-progressbar__bar-content\">\n <div>\n <img src={props.pathImg} alt=\"path-img\" />\n <strong>\n {props.progress}\n <span>%</span>\n </strong>\n </div>\n </div>\n </ProgressBar>\n <div className=\"custom-progressbar__content\">\n <span className=\"custom-progressbar__content__rect1 rect\" />\n <p>{Wording.progressBar.offer}</p>\n <span className=\"custom-progressbar__content__rect2 rect\" />\n <p>{Wording.progressBar.consumption}</p>\n </div>\n </div>\n </div>\n );\n};\n\nexport default CustomProgressbar;\n","import CustomProgressbar from './CustomProgressbar';\n\nexport default CustomProgressbar;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport { TAdditionalRate } from 'Models';\nimport CustomToggle from '../CustomToggle';\nimport { IPayloadUpdatePackage as PackagePayload } from '../../_actions/package.actions';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport { EModeManageOffer } from '../../utils/enums';\n\nconst Wording = WordingConstant.PackagePage;\n\ntype Props = {\n idToggle: string;\n options: TAdditionalRate[];\n currentOptions: string[];\n handleToggle(section: string, payload: PackagePayload): void;\n};\n\nconst OptionElement: React.FC<Props> = ({\n options,\n currentOptions,\n handleToggle,\n idToggle,\n}) => (\n <div className=\"option-element\">\n <h1> {Wording.option.title}</h1>\n <div className=\"option-element__content\">\n {options &&\n options.map((option, index) => (\n <div key={index} className=\"option-element__content__item\">\n <div className=\"option-element__content__item__toggle\">\n <CustomToggle\n id={`idOption__${idToggle}__${index}`}\n text={option.label}\n value={option.label}\n checked={currentOptions.includes(option.label)}\n handleCheck={(e: InputEvent) => {\n handleToggle('option', {\n option: {\n label: option.label,\n active: e.currentTarget.checked,\n },\n mode: EModeManageOffer.OPTIONS,\n });\n }}\n />\n <img\n src={resources['ic-elec-green']}\n alt=\"ic-elec\"\n />\n </div>\n {option.description && (\n <p className=\"option-element__content__item__description\">\n {option.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n);\n\nexport default OptionElement;\n","import OptionElement from './OptionElement';\n\nexport default OptionElement;\n","import { Chart } from 'chart.js';\n\n/* tslint-disable */\n\n// draws a rectangle with a rounded top\nChart.helpers.drawRoundedTopRectangle = function(\n ctx: any,\n x: number,\n y: number,\n width: number,\n height: number,\n radius: number,\n) {\n if (height === 0) {\n return;\n }\n ctx.beginPath();\n\n if (height < 0) {\n // Negative values in a standard bar chart\n const x_tl = x;\n const x_tr = x + width;\n const y_tl = y + height;\n const y_tr = y + height;\n const x_bl = x;\n const x_br = x + width;\n const y_bl = y;\n const y_br = y;\n ctx.moveTo(x_bl + radius, y_bl);\n ctx.lineTo(x_br - radius, y_br);\n // bottom right\n ctx.quadraticCurveTo(x_br, y_br, x_br, y_br - radius);\n ctx.lineTo(x_tr, y_tr + radius);\n // top right\n ctx.lineTo(x_tr, y_tr, x_tr - radius, y_tr);\n ctx.lineTo(x_tl + radius, y_tl);\n // top left\n ctx.lineTo(x_tl, y_tl, x_tl, y_tl + radius);\n ctx.lineTo(x_bl, y_bl - radius);\n // bottom left\n ctx.quadraticCurveTo(x_bl, y_bl, x_bl + radius, y_bl);\n } else {\n ctx.moveTo(x + radius, y);\n // top right corner\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n // bottom right corner\n ctx.lineTo(x + width, y + height);\n // bottom left corner\n ctx.lineTo(x, y + height);\n // top left\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n\n ctx.closePath();\n};\n\n(Chart as any).elements.RoundedTopRectangle = (Chart as any).elements.Rectangle.extend(\n {\n draw() {\n const ctx = this._chart.ctx;\n const vm = this._view;\n let left;\n let right;\n let top;\n let bottom;\n let signX;\n let signY;\n let borderSkipped;\n let borderWidth = vm.borderWidth;\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n // If the y-axis stack is true, we should increase bottom value by xxx\n // vm.base + xxx ===> Help to lower the stacked bar to make they look nice\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n const barSize = Math.min(\n Math.abs(left - right),\n Math.abs(top - bottom),\n );\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n const halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n const borderLeft =\n left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n const borderRight =\n right +\n (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n const borderTop =\n top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n const borderBottom =\n bottom +\n (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n // calculate the bar width and roundess\n const barWidth = Math.abs(left - right);\n const roundness = 1;\n const radius =\n barWidth * roundness * (vm.borderSkipped === 'top' ? 0 : 0.5);\n\n // keep track of the original top of the bar\n const prevTop = top;\n\n // move the top down so there is room to draw the rounded top\n top = prevTop + radius;\n const barRadius = top - prevTop;\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // draw the rounded top rectangle\n Chart.helpers.drawRoundedTopRectangle(\n ctx,\n left,\n top - barRadius + 1,\n barWidth,\n bottom - prevTop,\n barRadius,\n );\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n\n // restore the original top value so tooltips and scales still work\n top = prevTop;\n },\n },\n);\n\nChart.defaults.roundedBar = Chart.helpers.clone(Chart.defaults.bar);\n\nChart.controllers.roundedBar = Chart.controllers.bar.extend({\n dataElementType: (Chart as any).elements.RoundedTopRectangle,\n});\n","import React, { useRef, useEffect, useState } from 'react';\nimport { Chart, ChartOptions, ChartDataSets } from 'chart.js';\nimport '../../utils/chart';\nimport CustomToggle from '../CustomToggle';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ConsumptionPage;\n\ninterface IKey {\n [key: string]: string;\n}\n\nconst plugin = {\n afterDraw: (\n chartInstance: Chart,\n easing: Chart.Easing,\n options?: any,\n ) => {},\n};\n\nconst color = {\n orange: '#ffb40a',\n gray: '#b1b1b1',\n black: '#000000',\n grayLight: '#dddddb',\n};\n\nconst options = (isDetailed: boolean): ChartOptions => ({\n responsive: true,\n\n legend: {\n display: false,\n },\n scales: {\n yAxes: [\n {\n stacked: isDetailed,\n\n gridLines: {\n lineWidth: 4,\n },\n ticks: {\n fontSize: 20,\n beginAtZero: true,\n },\n },\n ],\n xAxes: [\n {\n stacked: false,\n gridLines: {\n display: false,\n },\n ticks: {\n fontSize: 20,\n },\n },\n ],\n },\n tooltips: {\n backgroundColor: '#FFF',\n titleFontSize: 28,\n titleFontColor: '#0066ff',\n bodyFontColor: '#000',\n bodyFontSize: 22,\n xPadding: 10,\n mode: 'label',\n callbacks: {\n label: (tooltipItem, data) => {\n const label = data.datasets\n ? data.datasets[tooltipItem.datasetIndex as number].label ||\n ''\n : '';\n\n return `${label}: ${Math.round(\n (tooltipItem.yLabel as number) * 100,\n ) / 100} ${Wording.chart.legend.afterLabel}`;\n },\n\n title: (tooltipItem, data) => {\n const currentMonth = (data.labels as string[])[\n tooltipItem[0].index as number\n ];\n\n return (Wording.chart.monthsMapping as IKey)[currentMonth];\n },\n },\n },\n});\n\ntype Props = {\n packages: number[];\n consumptions: number[];\n highs: number[];\n lows: number[];\n totalhours: number[];\n labels: string[];\n};\n\nconst StackedBar = ({\n packages,\n consumptions,\n highs,\n lows,\n totalhours,\n labels,\n}: Props) => {\n const canvasRef = useRef(null);\n const [detailed, setDetailed] = useState<boolean>(false);\n const [chart, setChart] = useState<Chart | null>(null);\n\n const detailData: ChartDataSets[] = [\n {\n label: Wording.chart.legend.package,\n backgroundColor: color.gray,\n borderWidth: 1,\n barThickness: 18,\n data: packages,\n stack: '1',\n },\n {\n label: Wording.chart.legend.low,\n backgroundColor: color.black,\n barThickness: 18,\n borderWidth: 1,\n data: lows,\n stack: '2',\n borderSkipped: 'top',\n },\n {\n label: Wording.chart.legend.high,\n backgroundColor: color.orange,\n barThickness: 18,\n borderWidth: 1,\n data: highs,\n stack: '2',\n },\n {\n label: Wording.chart.legend.totalhour,\n backgroundColor: color.grayLight,\n barThickness: 18,\n borderWidth: 1,\n data: totalhours,\n stack: '1',\n },\n ];\n\n const normalData: ChartDataSets[] = [\n {\n label: Wording.chart.legend.package,\n backgroundColor: color.gray,\n borderWidth: 1,\n barThickness: 18,\n data: packages,\n },\n {\n label: Wording.chart.legend.consumption,\n backgroundColor: color.orange,\n borderWidth: 1,\n barThickness: 18,\n data: consumptions,\n },\n ];\n\n useEffect(() => {\n if (canvasRef && canvasRef.current) {\n if (chart) {\n if (chart.data.datasets) {\n chart.data.datasets = detailed ? detailData : normalData;\n chart.data.labels = labels;\n chart.options = options(detailed);\n\n chart.update();\n (document.getElementById(\n 'chartjsLegend',\n ) as any).innerHTML = chart.generateLegend();\n }\n } else {\n const ctx = (canvasRef.current as any).getContext('2d');\n const data = {\n labels,\n datasets: normalData,\n };\n\n const c = new Chart(ctx, {\n data,\n\n options: options(detailed),\n plugins: [plugin, plugin],\n type: 'roundedBar',\n });\n setChart(c);\n (document.getElementById(\n 'chartjsLegend',\n ) as any).innerHTML = c.generateLegend();\n }\n }\n }, [detailed, consumptions]);\n\n return (\n <div className=\"stacked-bar\">\n <h3>{Wording.chart.title}</h3>\n <div className=\"stacked-bar__container\">\n <div className=\"stacked-bar__legend\">\n <CustomToggle\n id=\"toggleChart\"\n text={Wording.chart.toggleButtonText}\n handleCheck={() => setDetailed(!detailed)}\n />\n <div id=\"chartjsLegend\" className=\"chartjsLegend\" />\n </div>\n <canvas ref={canvasRef} />\n </div>\n </div>\n );\n};\n\nexport default StackedBar;\n","import StackedBar from './StackedBar';\n\nexport default StackedBar;\n","import React, { useState } from 'react';\nimport WordingComont from '../../utils/wording.json';\n\nconst Wording = WordingComont.ConsumptionPage;\n\nconst filterPages = (visiblePages: number[], totalPages: number): number[] => {\n return visiblePages.filter(page => page <= totalPages);\n};\n\nconst getVisiblePages = (page: number, total: number): number[] => {\n if (total < 7) {\n return filterPages([1, 2, 3, 4, 5, 6], total);\n }\n if (page % 5 >= 0 && page > 4 && page + 2 < total) {\n return [1, page - 1, page, page + 1, total];\n }\n if (page % 5 >= 0 && page > 4 && page + 2 >= total) {\n return [1, total - 3, total - 2, total - 1, total];\n }\n return [1, 2, 3, 4, 5, total];\n};\n\nexport type Props = {\n pages: number;\n page: number;\n onPageChange: (p: number) => {};\n previousText: string;\n nextText: string;\n};\n\nconst Pagination = ({ pages, page, onPageChange }: Props) => {\n const [visiblePages, setVisiblePages] = useState(getVisiblePages(0, pages));\n\n const changePage = (p: number) => {\n if (p === page + 1) {\n return;\n }\n const vps = getVisiblePages(p, pages);\n setVisiblePages(filterPages(vps, pages));\n onPageChange(p - 1);\n };\n\n const activePage = page + 1;\n\n return (\n <div className=\"Table__pagination\">\n <div className=\"Table__prevPageWrapper\">\n <button\n className=\"Table__pageButton\"\n onClick={() => {\n if (activePage === 1) return;\n changePage(activePage - 1);\n }}\n disabled={activePage === 1}\n >\n {Wording.history.previousText}\n </button>\n </div>\n <div className=\"Table__visiblePagesWrapper\">\n {visiblePages.map((p, index, array) => {\n return (\n <button\n key={p}\n className={\n activePage === p\n ? 'Table__pageButton Table__pageButton--active'\n : 'Table__pageButton'\n }\n onClick={() => changePage(p)}\n >\n {array[index - 1] + 2 < p ? `...${p}` : p}\n </button>\n );\n })}\n </div>\n <div className=\"Table__nextPageWrapper\">\n <button\n className=\"Table__pageButton\"\n onClick={() => {\n if (activePage === pages) return;\n changePage(activePage + 1);\n }}\n disabled={activePage === pages}\n >\n {Wording.history.nextText}\n </button>\n </div>\n </div>\n );\n};\n\nexport default Pagination;\n","import Pagination from './Pagination';\n\nexport default Pagination;\n","import BackgroundElement from './BackgroundElement';\n\nexport default BackgroundElement;\n","import React from 'react';\n\nconst BackgroundElement: React.FC = ({ children }) => {\n return <div className=\"background-element\">{children}</div>;\n};\n\nexport default BackgroundElement;\n","import { Subject, of, from, throwError } from 'rxjs';\nimport {\n debounceTime,\n switchMap,\n distinctUntilChanged,\n mergeMap,\n catchError,\n} from 'rxjs/operators';\nimport { ajax } from 'rxjs/ajax';\nimport Config from './config';\nimport { filteredArr, log } from './helpers';\n\ninterface IResProps {\n netArea: string;\n postalCode: string;\n townName: string;\n}\n\nclass SearchService {\n private handleSearch$: any;\n private raw: boolean;\n\n constructor() {\n this.handleSearch$ = new Subject<string>().pipe(debounceTime(100));\n this.raw = false;\n }\n\n public setRaw(raw: boolean) {\n this.raw = raw;\n return this;\n }\n\n public unsubscribe = () => {\n this.handleSearch$.unsubscribe();\n };\n\n public search = (term: string) => {\n this.handleSearch$.next(term);\n };\n\n public doSearch = (term: string) => {\n const settings = {\n url: `${Config.URL_SUBSCRIPTION}/getTowns`,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': Config.ApiKey,\n },\n responseType: 'json',\n method: 'post',\n crossDomain: true,\n body: {\n postalCode: term,\n },\n };\n const promise = ajax(settings).pipe(\n catchError(({ message }) => throwError({ error: message })),\n mergeMap(response => {\n if (response.response) {\n response.response = filteredArr(\n response.response,\n 'townName',\n );\n response.response.sort((a: IResProps, b: IResProps) => {\n if (a.townName < b.townName) {\n return -1;\n }\n if (a.townName > b.townName) {\n return 1;\n }\n return 0;\n });\n if (this.raw) {\n return of(\n response.response.map((res: IResProps) => ({\n postalCode: res.postalCode,\n townName: res.townName,\n netArea: res.netArea,\n })),\n );\n }\n return of(\n response.response.map((res: IResProps) => ({\n code: res.postalCode,\n city: res.townName,\n netArea: res.netArea,\n })),\n );\n }\n return of([]);\n }),\n );\n return from(promise);\n };\n\n public getResults() {\n return this.handleSearch$.pipe(\n debounceTime(500),\n distinctUntilChanged(),\n switchMap((term: string) => (term ? this.doSearch(term) : of([]))),\n catchError(error => {\n log('Error ', error);\n return of([]);\n }),\n );\n }\n}\n\nexport default SearchService;\n","import React, { Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport { CustomSelect } from '../../components';\nimport SearchService from '../../utils/search';\nimport WordingConstant from '../../utils/wording.json';\nimport { TAddress } from '../../utils/network/types';\nimport { SelectOption } from 'Types';\n\nconst Prompts = WordingConstant.Common.prompts;\n\ninterface IProps {\n isDisabled?: boolean;\n initialAddress?: TAddress;\n text?: string;\n onSelection: (address: TAddress) => void;\n}\n\ninterface IState {\n selection: SelectOption<TAddress> | null;\n options: Array<SelectOption<TAddress>>;\n}\n\nconst throttleDelay = 1000;\n\nfunction formatOption(\n address: TAddress,\n index: string,\n): SelectOption<TAddress> {\n const city = _.get(address, 'townName', '');\n const code = _.get(address, 'postalCode', '');\n return {\n id: index,\n label: `${code} -- ${city}`,\n value: address,\n };\n}\n\nclass PostalCodeSelect extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n options: [],\n selection: null,\n };\n (this as any).searchService = new SearchService().setRaw(true);\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleSelection = this.handleSelection.bind(this);\n this.handleInputChange = _.throttle(\n this.handleInputChange,\n throttleDelay,\n );\n }\n componentDidMount() {\n const { initialAddress } = this.props;\n if (!!initialAddress) {\n const initialSelection: SelectOption<TAddress> = formatOption(\n initialAddress,\n '-1',\n );\n const initialOptions: Array<SelectOption<TAddress>> = [\n initialSelection,\n ];\n this.setState({\n options: initialOptions,\n selection: initialSelection,\n });\n }\n }\n\n componentDidUpdate = (prevProps: any) => {\n if (!prevProps.isDisabled && this.props.isDisabled) {\n this.setState({ selection: null });\n }\n };\n componentWillUnmount = () => {\n (this as any).searchService.unsubscribe();\n };\n\n handleSelection(option: SelectOption<TAddress>) {\n const { onSelection } = this.props;\n onSelection(_.get(option, 'value') as TAddress);\n this.setState({ selection: option });\n }\n handleInputChange(value: string) {\n this.refreshPostalCodeOptions(value);\n }\n async refreshPostalCodeOptions(value: string) {\n const res = await (this as any).searchService\n .doSearch(value)\n .toPromise();\n const codes: Array<SelectOption<TAddress>> = _.map(res, (pc, i) =>\n formatOption(pc, i),\n );\n this.setState({ options: codes });\n }\n render() {\n const { text, isDisabled } = this.props;\n const { options, selection } = this.state;\n\n return (\n <Fragment>\n <CustomSelect\n handleChangeSelect={this.handleSelection}\n onInputChange={this.handleInputChange}\n options={options}\n placeholder={Prompts.selects.postalCode}\n text={text}\n value={selection}\n disabled={isDisabled}\n />\n </Fragment>\n );\n }\n}\n\nexport default PostalCodeSelect;\n","// ENUMS\n\nexport enum EAdditionalRateTypes {\n DISCOUNT = 'DISCOUNT',\n FEE = 'FEE',\n OPTION = 'OPTION',\n}\n\nexport enum EBillingModes {\n CYCLICAL_BILLING = 'CYCLICAL_BILLING',\n PAYMENT_SCHEDULE = 'PAYMENT_SCHEDULE',\n}\n\nexport enum EtypePayment {\n SDD = 'SDD',\n OTHER = 'OTHER',\n}\n\nexport enum ECategories {\n TOTAL_AMOUNT = 'TOTAL_AMOUNT',\n ADDITIONAL_RATE = 'ADDITIONAL_RATE',\n TOTAL_BUDGET = 'TOTAL_BUDGET',\n ECONOMY = 'ECONOMY',\n DISCOUNTED_UNIT_PRICE = 'DISCOUNTED_UNIT_PRICE',\n DISCOUNTED_UNIT_PRICE_TTC = 'DISCOUNTED_UNIT_PRICE_TTC',\n}\n\nexport enum ECivilities {\n MR = 'MR',\n MS = 'MS',\n MRS = 'MRS',\n}\n\nexport enum ECompanyTypes {\n EARL = 'EARL',\n EI = 'EI',\n EIRL = 'EIRL',\n EURL = 'EURL',\n GAEC = 'GAEC',\n GEIE = 'GEIE',\n GIE = 'GIE',\n SA = 'SA',\n SARL = 'SARL',\n SAS = 'SAS',\n SASU = 'SASU',\n SC = 'SC',\n SCA = 'SCA',\n SCI = 'SCI',\n SCIC = 'SCIC',\n SCM = 'SCM',\n SCOP = 'SCOP',\n SCP = 'SCP',\n SCS = 'SCS',\n SEL = 'SEL',\n SELAFA = 'SELAFA',\n SELARL = 'SELARL',\n SELAS = 'SELAS',\n SELCA = 'SELCA',\n SEM = 'SEM',\n SEML = 'SEML',\n SEP = 'SEP',\n SICA = 'SICA',\n SNC = 'SNC',\n OTHER = 'OTHER',\n}\n\nexport enum EContractStatuses {\n ABANDONED = 'ABANDONED',\n SIGNED = 'SIGNED',\n SIGNING_FAILURE = 'SIGNING_FAILURE',\n WAITING = 'WAITING',\n}\n\nexport enum EContractualCapacityUnits {\n KVA = 'kVA',\n}\n\nexport enum ECustomerStatuses {\n CUSTOMER = 'CUSTOMER',\n PROSPECT = 'PROSPECT',\n}\n\nexport enum ECustomerTypes {\n INDIVIDUAL = 'INDIVIDUAL',\n PROFESSIONAL = 'PROFESSIONAL',\n}\n\nexport enum EDeliveryPointCategories {\n C1 = 'C1',\n C2 = 'C2',\n C3 = 'C3',\n C4 = 'C4',\n C5 = 'C5',\n T1 = 'T1',\n T2 = 'T2',\n T3 = 'T3',\n}\n\nexport enum EDeliveryPointStates {\n IN_USE = 'IN_USE',\n NOT_IN_USE = 'NOT_IN_USE',\n UNDER_CONSTRUCTION = 'UNDER_CONSTRUCTION',\n}\n\nexport enum EDeliveryStatuses {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n\nexport enum EEffectiveStartRanges {\n LATER = 'LATER',\n NOW = 'NOW',\n}\n\nexport enum EEnergyTypes {\n ELECTRICTY = 'EL',\n GAS = 'NG',\n}\n\nexport enum EFirstPaymentCBStatuses {\n CANCELED = 'CANCELED',\n FINALIZED = 'FINALIZED',\n IN_FAILURE = 'IN_FAILURE',\n IN_PROGRESS = 'IN_PROGRESS',\n PENDING = 'PENDING',\n}\n\nexport enum EHeatingTypes {\n COLLECTIVE = 'COLLECTIVE',\n ELECTRICITY = 'ELECTRICITY',\n GAS = 'GAZ',\n}\n\nexport type TRateOptions = 'HIGH_LOW' | 'TOTAL_HOUR' | 'UNKNOWN';\n\nexport enum EGridRates {\n T1 = 'T1',\n T2 = 'T2',\n T3 = 'T3',\n BTINFCUST = 'BTINFCUST',\n BTINFMUDT = 'BTINFMUDT',\n BTINFLU = 'BTINFLU',\n BTINFCU4 = 'BTINFCU4',\n BTINFMU4 = 'BTINFMU4',\n}\n\nexport enum EHousingTypes {\n APPARTMENT = 'APPARTMENT',\n HOUSE = 'HOUSE',\n}\n\nexport enum EInvoiceRoutingModes {\n EMAIL = 'EMAIL',\n MAIL = 'MAIL',\n BOTH = 'BOTH',\n}\n\nexport enum EInstallmentFrequencies {\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n QUARTERLY = 'QUARTERLY',\n FOURMONTHLY = 'FOURMONTHLY',\n}\n\nexport enum EOrderStatuses {\n CANCELED = 'CANCELED',\n FINALIZED = 'FINALIZED',\n FINALIZED_WITHOUT_DOC = 'FINALIZED_WITHOUT_DOC',\n IN_FAILURE = 'IN_FAILURE',\n IN_PROGRESS = 'IN_PROGRESS',\n}\n\nexport enum EPaymentModes {\n BANK_TRANSFER = 'BANK_TRANSFER',\n CHECK = 'CHECK',\n DIRECT_DEBIT = 'DIRECT_DEBIT',\n}\n\nexport enum EProcessTypes {\n MOVE_IN = 'MOVE_IN',\n SWITCH = 'SWITCH',\n}\n\nexport enum EProductTypes {\n FIXED = 'FIXED',\n VARIABLE = 'VARIABLE',\n}\n\nexport enum EProfiles {\n RES1 = 'RES1',\n RES11 = 'RES11',\n RES2 = 'RES2',\n P011 = 'P011',\n P012 = 'P012',\n PRO1 = 'PRO1',\n PRO2 = 'PRO2',\n RES3 = 'RES3',\n RES4 = 'RES4',\n RES5 = 'RES5',\n PRO3 = 'PRO3',\n PRO4 = 'PRO4',\n PRO5 = 'PRO5',\n}\n\nexport enum ERateOptions {\n HIGH_LOW = 'HIGH_LOW',\n TOTAL_HOUR = 'TOTAL_HOUR',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum EReadingFrequencies {\n MONTHLY = 'MONTHLY',\n BIMONTHLY = 'BIMONTHLY',\n BIANNUAL = 'BIANNUAL',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport enum ERebateCodeTypes {\n CASHBACK = 'MY_WORLD',\n PROMOTION = 'PROMOTION',\n SPONSOR = 'SPONSOR',\n}\n\nexport enum EResidenceTypes {\n PRINCIPAL = 'PRINCIPAL',\n SECONDARY = 'SECONDARY',\n}\n\nexport enum EResultSponsor {\n OK = 'OK',\n KO = 'KO',\n}\n\nexport enum ERoles {\n COHOLDER = 'COHOLDER',\n MY_WORLD = 'MY_WORLD',\n PARTNER = 'PARTNER',\n PROMOTION = 'PROMOTION',\n SPONSOR = 'SPONSOR',\n}\n\nexport enum ESavingModes {\n SEND_EMAIL_LINK = 'SEND_EMAIL_LINK',\n STATUS_CANCELED = 'STATUS_CANCELED',\n STATUS_SIGNED = 'STATUS_SIGNED',\n}\n\nexport enum ESettlementFrequencies {\n BIANNUAL = 'BIANNUAL',\n BIMONTHLY = 'BIMONTHLY',\n FOURMONTHLY = 'FOURMONTHLY',\n QUARTERLY = 'QUARTERLY',\n}\n\nexport enum ESubscriptionTypes {\n ELECTRICITY = 'ELECTRICITY',\n ELECTRICITY_AND_GAS = 'ELECTRICITY_AND_GAS',\n GAS = 'GAS',\n}\n\nexport enum ETimeframes {\n HIGH = 'HIGH',\n LOW = 'LOW',\n SUMMER = 'SUMMER',\n SUMMER_HIGH = 'SUMMER_HIGH',\n SUMMER_LOW = 'SUMMER_LOW',\n TOTAL_HOUR = 'TOTAL_HOUR',\n UNKNOWN = 'UNKNOWN',\n WINTER = 'WINTER',\n WINTER_HIGH = 'WINTER_HIGH',\n WINTER_LOW = 'WINTER_LOW',\n}\n\nexport enum ETimeslots {\n AFTERNOON = 'AFTERNOON',\n DAY = 'DAY',\n MORNING = 'MORNING',\n NONE = 'NONE',\n}\n\nexport enum ETypes {\n FEE = 'FEE',\n OPTION = 'OPTION',\n DISCOUNT = 'DISCOUNT',\n}\n\nexport enum EUnitAmounts {\n EURO_KWH = '€/KWH',\n EURO_YEAR = '€/YEAR',\n EURO_MONTH = '€/MONTH',\n EURO = '€',\n PERCENT = 'PERCENT',\n}\n\n// TYPES\n\nexport type TAdditionalRate = {\n code?: string;\n label?: string;\n description?: string;\n type?: EAdditionalRateTypes;\n detail?: TUnitPriceWithLabel;\n active?: boolean;\n ecofriendly?: boolean;\n updated?: boolean;\n};\n\nexport type TAddress = {\n number: string;\n street: string;\n netArea?: number;\n postalCode?: number;\n townName?: string;\n};\n\nexport type TAmountWithLabel = {\n label?: string;\n amount?: string;\n unit?: EUnitAmounts;\n category?: ECategories;\n type?: ETypes;\n unitPrices?: TUnitPriceWithLabel[];\n};\n\nexport type TAppointmentDay = {\n available: boolean;\n date: string; // Date\n express: boolean;\n firstPaymentCB: boolean;\n};\n\nexport type TAuthorizedPackage = [TSeasonalPackage, TSeasonalPackage];\n\nexport type TContract = {\n billingModeCode?: EBillingModes;\n chosenPackages?: Array<TPackage | TSeasonalPackage>;\n chosenProduct?: TProduct;\n contractCategory?: string;\n contractNumber?: string;\n contractStatus?: EContractStatuses;\n deliveryPoint?: TDeliveryPoint;\n effectiveStartDate?: string;\n dueDate?: string;\n effectiveStartRange?: EEffectiveStartRanges;\n energy: EEnergyTypes;\n estimates?: TEstimate[];\n finance?: TFinance;\n firstPaymentCB: boolean;\n installmentFrequency?: EInstallmentFrequencies;\n rateOption?: ERateOptions;\n settlementFrequency?: ESettlementFrequencies;\n sponsorNumber?: string;\n subscriptionDate?: string;\n thirdParties?: Array<{}>;\n debitDay?: number;\n};\n\nexport type TCustomer = {\n customerStatus: ECustomerStatuses;\n customerNumber: string;\n type: ECustomerTypes;\n contact: TCustomerContact;\n typePayment: EtypePayment;\n finance: TFinance;\n};\n\nexport type TCustomerContact = {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n birthdate: string;\n address: TAddress;\n birthTown: TBirthTown;\n email: string;\n phone: string;\n companyName?: string;\n companyType?: ECompanyTypes;\n identificationNumber?: string;\n activityCode?: string;\n};\n\nexport type TDeliveryPoint = {\n state?: EDeliveryPointStates;\n gridRate?: EGridRates;\n deliveryStatus?: EDeliveryStatuses;\n address?: TAddress;\n profile?: EProfiles;\n deliveryPointCategory?: EDeliveryPointCategories;\n readingFrequency?: EReadingFrequencies;\n contractualCapacity?: number;\n contractualCapacityUnit?: EContractualCapacityUnits;\n pointOfDelivery?: string;\n};\n\nexport type TEstimate = {\n quantity?: number;\n timeframe?: ETimeframes;\n energy?: EEnergyTypes;\n};\n\nexport type TFinance = {\n paymentMode: EPaymentModes;\n billingContact: TCustomerContact;\n ibanCode: string;\n bicCode: string;\n bankName: string;\n accountOwnerLastName: string;\n accountOwnerFirstName: string;\n rumCode: string;\n invoiceRoutingMode: EInvoiceRoutingModes;\n invoiceEmail: string;\n debitDay: string;\n termCode: string;\n};\n\nexport type TGetOrderResponse = {\n order: TOrder;\n};\n\nexport type TGetOrderStatusResponse = {\n firstPaymentCBStatus: EFirstPaymentCBStatuses;\n orderStatus: EOrderStatuses;\n};\n\nexport type TGetPackageResponse = {\n contracts: TContract[];\n packagesList: TPackage[];\n prepaymentFrequencies: TPrepaymentFrequencies[];\n};\n\nexport type TGetProductResponse = {\n productsList: TProduct[];\n};\n\nexport type TOffer = {\n product: TProduct;\n energy: EEnergyTypes;\n estimateYearly: TEstimate;\n details: TAmountWithLabel[];\n};\n\nexport type TOrder = {\n orderReference?: string;\n externalReference?: string;\n partnerReference?: string;\n orderStatus?: EOrderStatuses;\n firstPaymentCBStatus?: EFirstPaymentCBStatuses;\n customer: TCustomer;\n contracts: TContract[];\n createdBy: string;\n};\n\nexport type TOrderResponse = {\n order: TOrder;\n channel: string;\n};\n\nexport type TPackage = {\n energy: EEnergyTypes;\n amount: string;\n currency: string;\n quantityMonthly: number;\n packageQuantity: number;\n recommended?: boolean;\n id: string;\n timeframe: ETimeframes;\n authorizedPackages?: TAuthorizedPackage[];\n};\n\nexport type TPaymentCBResponse = {\n iframe: string;\n orderExternalReference: string;\n orderNumber: string;\n stripe: {\n amount: string;\n clientSecret: string;\n billName: string;\n };\n};\n\nexport type TProcess = {\n type: EProcessTypes;\n express: boolean;\n appointmentTimeslot: ETimeslots;\n};\n\nexport type TProduct = {\n additionalRates?: TAdditionalRate[];\n default?: string;\n description?: string;\n effectiveDate?: string;\n energy?: EEnergyTypes;\n label?: string;\n productCode?: string;\n productType?: EProductTypes;\n rateOption?: ERateOptions;\n};\n\nexport type TSaveOrderResponse = {\n orderExternalReference: string;\n orderNumber: string;\n};\n\nexport type TSeasonalPackage = {\n amount: number;\n currency: string;\n energy: EEnergyTypes;\n id: string;\n packageQuantity: number;\n quantityMonthly: number;\n timeframe: ETimeframes.SUMMER | ETimeframes.WINTER;\n};\n\nexport type TSignOrderResponse = {\n iframe: string;\n orderExternalReference: string;\n orderNumber: string;\n};\n\nexport type TCasesExtractResponse = {\n data: string;\n};\n\nexport type TSurvey = {\n energyList?: EEnergyTypes[];\n housingType: EHousingTypes;\n residenceType: EResidenceTypes;\n area: number;\n inhabitantsNumber: number;\n heatingType: EHeatingTypes;\n rateOption: ERateOptions;\n address: TAddress;\n};\n\nexport type TThirdParty = {\n code?: string;\n role: ERoles;\n civility?: ECivilities;\n firstName?: string;\n lastName?: string;\n effectiveDate?: string;\n};\n\nexport type TUnitPriceWithLabel = {\n label?: string;\n price?: string;\n unit?: EUnitAmounts;\n};\n\nexport type TOrderPayload = Partial<{\n fromDate: string | null;\n toDate: string | null;\n email: string | null;\n orderNumber: string | null;\n firstName: string | null;\n lastName: string | null;\n processType: string | null;\n phone: string | null;\n externalReference: string | null;\n channel: string | null | string[];\n createdBy: string | null;\n}>;\n\nexport type TPrepaymentFrequencies = {\n frequency: EInstallmentFrequencies;\n label: string;\n fee: string;\n currency: string;\n};\n\nexport type TBirthTown = {\n number: string;\n street: string;\n netArea: string | number;\n postalCode: string | number;\n townName: string;\n country: string;\n};\n","import PostalCodeSelect from './PostalCodeSelect';\nexport default PostalCodeSelect;\n","import { Component } from 'react';\n\nasync function setState<S, K extends keyof S>(\n context: Component<any, S>,\n nextState: Pick<S, K> | S | null,\n): Promise<void> {\n return new Promise((resolve: () => void) => {\n context.setState(nextState, () => {\n resolve();\n });\n });\n}\n\nexport { setState };\n","import _ from 'lodash';\nimport {\n TProduct,\n TSeasonalPackage,\n ETimeframes,\n TAddress,\n ESubscriptionTypes,\n EEnergyTypes,\n ERebateCodeTypes,\n TContract,\n EBillingModes,\n} from './types';\n\nfunction isCyclicalProduct(product: TProduct | null | undefined): boolean {\n if (!product || !product.productCode) return false;\n const isCyclical: boolean = (product.productCode as string).includes('CYC');\n return isCyclical;\n}\n\nfunction isEqualProduct(\n prod1: TProduct | undefined | null,\n prod2: TProduct | undefined | null,\n): boolean {\n if (!prod1 || !prod2) return false;\n const rateLess1 = _.omit(prod1, 'additionalRates');\n const rateLess2 = _.omit(prod2, 'additionalRates');\n const hasEqualProducts: boolean = _.isEqual(rateLess1, rateLess2);\n return hasEqualProducts;\n}\n\nfunction isEqualAuthorizedPackages(\n auth1: TSeasonalPackage[] = [],\n auth2: TSeasonalPackage[] = [],\n): boolean {\n if (auth1.length !== 2 || auth2.length !== 2) return false;\n const winter1: TSeasonalPackage | undefined = _.find(\n auth1,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.WINTER;\n },\n );\n const winter2: TSeasonalPackage | undefined = _.find(\n auth2,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.WINTER;\n },\n );\n const summer1: TSeasonalPackage | undefined = _.find(\n auth1,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.SUMMER;\n },\n );\n const summer2: TSeasonalPackage | undefined = _.find(\n auth2,\n (pkg: TSeasonalPackage) => {\n return pkg.timeframe === ETimeframes.SUMMER;\n },\n );\n return (\n !!summer1 &&\n !!summer2 &&\n !!winter1 &&\n !!winter2 &&\n _.isEqual(summer1, summer2) &&\n _.isEqual(winter1, winter2)\n );\n}\n\nfunction getAddressStreetLabel(address: TAddress | null | undefined): string {\n if (!address) return '';\n const num: string | undefined = _.get(address, 'number');\n const street: string = _.get(address, 'street', '');\n return [`${num || ''}`, street].join(' ').replace(/^\\s+/g, '');\n}\n\nfunction parseOrderRebateCode(\n contracts: TContract[],\n): {\n code: string;\n type: ERebateCodeTypes;\n} | null {\n let orderCode: { code: string; type: ERebateCodeTypes } | null = null;\n _.forEach(contracts, (contract: TContract) => {\n let shouldBreak = false;\n _.forEach(contract.thirdParties || [], (thirdParty: any) => {\n const code = _.get(thirdParty, 'code');\n const type = _.get(thirdParty, 'role');\n if (!!code && !!type && type !== 'PARTNER') {\n orderCode = { code, type };\n shouldBreak = true;\n return false;\n }\n });\n if (shouldBreak) return false;\n });\n return orderCode;\n}\n\nfunction toEnergies(\n subscription: ESubscriptionTypes | null | undefined,\n): EEnergyTypes[] {\n if (!subscription) return [];\n const energies: EEnergyTypes[] = [];\n if (subscription === ESubscriptionTypes.ELECTRICITY_AND_GAS) {\n energies.push(EEnergyTypes.ELECTRICTY, EEnergyTypes.GAS);\n } else if (subscription === ESubscriptionTypes.ELECTRICITY) {\n energies.push(EEnergyTypes.ELECTRICTY);\n } else if (subscription === ESubscriptionTypes.GAS) {\n energies.push(EEnergyTypes.GAS);\n }\n return energies;\n}\n\nfunction requiresPayment(contract: TContract | null | undefined): boolean {\n if (!contract) return false;\n const billingMode: EBillingModes | undefined = _.get(\n contract,\n 'chosenProduct.billingModeCode',\n );\n return (\n !!contract.firstPaymentCB &&\n billingMode !== EBillingModes.CYCLICAL_BILLING\n );\n}\n\nexport {\n getAddressStreetLabel,\n isCyclicalProduct,\n isEqualAuthorizedPackages,\n isEqualProduct,\n parseOrderRebateCode,\n toEnergies,\n requiresPayment,\n};\n","import React, { ChangeEvent, Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n buildClassName as bcn,\n getFormattedDateToBackEnd,\n parseQueryParams,\n addDays,\n prepareEffectiveStartDate,\n addMonth,\n checkIsDisableSwitchSelect,\n} from '../../../../../utils/helpers';\nimport { setState } from '../../../../../utils/reactHelpers';\nimport {\n AddressSelect,\n CustomDatePicker,\n CustomInput,\n CustomRadio,\n CustomSelect,\n CoordsInputs,\n} from '../../../../../components';\nimport {\n ECivilities,\n EEffectiveStartRanges,\n EEnergyTypes,\n EProcessTypes,\n ESubscriptionTypes,\n EPaymentModes,\n ETimeslots,\n TAddress,\n TAppointmentDay, TProduct,\n} from '../../../../../utils/network/types';\nimport {\n getAddressStreetLabel,\n toEnergies,\n} from '../../../../../utils/network/helpers';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport { Modifier } from 'react-day-picker';\nimport config from '../../../../../utils/config';\nimport { SelectOption } from 'Types';\nimport Data from './Data';\nimport replace from 'lodash/replace';\n\ntype DateContract = {\n date: number;\n firstPaymentCB: boolean;\n isCyclicalProduct: boolean;\n month: number;\n timeslot: ETimeslots | null;\n timeslots: ETimeslots[] | null;\n year: number;\n};\n\ntype Coords = {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n};\n\ninterface IProps {\n productCode: TProduct[];\n cyclicalProducts: EEnergyTypes[];\n handleDebitDay: (\n value: number\n ) => void;\n channel: string;\n getCalendarAppointment: (\n energyType: EEnergyTypes,\n isIndividual: boolean,\n onInit?: boolean,\n ) => Promise<TAppointmentDay[] | RequestError>;\n initialParams?: Data;\n isIndividual: boolean;\n onValidationStatusChange: (\n validated: boolean,\n situation: {\n effectiveStartRange?: EEffectiveStartRanges;\n electricityEffectiveStartDate?: Date;\n gasEffectiveStartDate?: Date;\n electricityDueDate?: Date;\n gasDueDate?: Date;\n electricityExpress?: boolean;\n gasExpress?: boolean;\n electricityTimeslot?: ETimeslots;\n gasTimeslot?: ETimeslots;\n electricityFirstPaymentCB?: boolean;\n gasFirstPaymentCB?: boolean;\n billingAddress?: TAddress;\n coords?: Coords;\n iban?: string;\n processType?: EProcessTypes;\n thirdParty?: {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n };\n },\n ) => void;\n searchAppointmentTimeslot: (\n date: Date,\n energy: EEnergyTypes,\n ) => Promise<ETimeslots[] | RequestError>;\n siteOptionSelection: ESubscriptionTypes | null;\n}\n\ninterface IState {\n addressValue: string;\n debitDay?: string;\n addressCoords?: Coords;\n changingSupplierStartTime: SelectOption<EEffectiveStartRanges> | null;\n civilitySelection: ECivilities | null;\n currentProcessTypeSelection: EProcessTypes;\n electricityAppointments: TAppointmentDay[];\n electricityExpress: boolean;\n electricityFirstPaymentCB: boolean;\n electricityTimeslots: ETimeslots[] | null;\n electricityTimeslotSelection: ETimeslots | null;\n firstNameValue: string;\n gasAppointments: TAppointmentDay[];\n gasExpress: boolean;\n gasFirstPaymentCB: boolean;\n gasTimeslots: ETimeslots[] | null;\n gasTimeslotSelection: ETimeslots | null;\n IBANValue: string;\n identicalAddressToggleState: boolean;\n isJointContract: boolean;\n movingInElectricityDatePick: Date | null;\n movingInGasDatePick: Date | null;\n paymentModeSelection: SelectOption<EPaymentModes> | null;\n postalCodeSelection: TAddress | null;\n lastNameValue: string;\n}\n\nfunction filterAppointments(\n appointments: TAppointmentDay[] = [],\n type: 'express' | 'available',\n condition: boolean,\n): Modifier[] {\n if (appointments.length <= 0) return [];\n const modifiers = [];\n appointments\n .filter(element => {\n return type === 'express'\n ? element[type] === condition && element.available\n : element[type] === condition;\n })\n .forEach(val => {\n return modifiers.push(new Date(val.date));\n });\n if (type === 'available' && !condition) {\n const lastDay =\n appointments && new Date(appointments.slice(-1)[0].date);\n const today = new Date();\n const tomorrow = new Date();\n tomorrow.setDate(today.getDate() + 1);\n modifiers.push({\n before: tomorrow,\n after: lastDay,\n });\n }\n return modifiers;\n}\n\nfunction matchDate(\n apps: TAppointmentDay[],\n date: Date,\n): TAppointmentDay | null {\n let match: TAppointmentDay | null = null;\n _.forEach(apps, app => {\n try {\n const appDate = new Date(app.date);\n const isSameDay =\n appDate.getFullYear() === date.getFullYear() &&\n appDate.getMonth() === date.getMonth() &&\n appDate.getDate() === date.getDate();\n if (isSameDay) {\n match = app;\n return false;\n }\n } catch (err) {\n console.error(err);\n }\n });\n return match;\n}\n\ntype MovingInParams = Pick<\n IState,\n | 'electricityAppointments'\n | 'electricityExpress'\n | 'electricityFirstPaymentCB'\n | 'electricityTimeslots'\n | 'electricityTimeslotSelection'\n | 'gasAppointments'\n | 'gasExpress'\n | 'gasFirstPaymentCB'\n | 'gasTimeslots'\n | 'gasTimeslotSelection'\n | 'movingInElectricityDatePick'\n | 'movingInGasDatePick'\n>;\n\ntype SwitchParams = Pick<\n IState,\n 'movingInElectricityDatePick' | 'movingInGasDatePick'\n>;\n\nfunction toDateContract(\n EL: {\n date: Date | null;\n firstPaymentCB: boolean;\n isCyclicalProduct: boolean;\n startTime: EEffectiveStartRanges | null;\n timeslots: ETimeslots[] | null;\n timeslotSelection: ETimeslots | null;\n },\n NG: {\n date: Date | null;\n firstPaymentCB: boolean;\n isCyclicalProduct: boolean;\n startTime: EEffectiveStartRanges | null;\n timeslots: ETimeslots[] | null;\n timeslotSelection: ETimeslots | null;\n },\n): any {\n const bundle: any = {};\n if (!!EL.date) {\n bundle.EL = {\n date: EL.date.getDate(),\n firstPaymentCB: EL.firstPaymentCB,\n isCyclicalProduct: EL.isCyclicalProduct,\n month: EL.date.getMonth(),\n switch: EL.startTime,\n timeslots: EL.timeslots,\n timeslot: EL.timeslotSelection,\n year: EL.date.getFullYear(),\n } as DateContract;\n }\n if (!!NG.date) {\n bundle.NG = {\n date: NG.date.getDate(),\n firstPaymentCB: NG.firstPaymentCB,\n isCyclicalProduct: NG.isCyclicalProduct,\n month: NG.date.getMonth(),\n switch: NG.startTime,\n timeslots: NG.timeslots,\n timeslot: NG.timeslotSelection,\n year: NG.date.getFullYear(),\n } as DateContract;\n }\n return bundle;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Situation;\nconst WordingDebitDay = WordingConstant.ProfilePage;\nconst baseClassName = 'situation-section';\nconst radioToggleClassName = 'radio-buttons';\nconst detailsClassName = 'details';\nconst billingInformationsClassName = 'billing';\nconst paymentModeOptions: Array<SelectOption<EPaymentModes>> = [\n {\n id: '0',\n label: Wording.paymentModes.directDebit,\n value: EPaymentModes.DIRECT_DEBIT,\n },\n\n {\n id: '1',\n label: Wording.paymentModes.paymentCB,\n value: EPaymentModes.BANK_TRANSFER,\n },\n];\n\nconst preparePaymentModOptions = ({\n firstPaymentCB,\n isCyclicalProduct,\n cyclicalProducts,\n energyTypes,\n}: {\n firstPaymentCB: {\n elec: boolean;\n gas: boolean;\n };\n isCyclicalProduct: {\n elec: boolean;\n gas: boolean;\n };\n cyclicalProducts: EEnergyTypes[];\n energyTypes: EEnergyTypes[];\n}) => {\n if (energyTypes.length > 1) {\n return [\n {\n ...paymentModeOptions[\n (firstPaymentCB.elec || firstPaymentCB.gas) &&\n cyclicalProducts.length !== 2\n ? 1\n : 0\n ],\n },\n ];\n }\n\n return [\n {\n ...paymentModeOptions[\n (firstPaymentCB.elec || firstPaymentCB.gas) &&\n !isCyclicalProduct.elec &&\n !isCyclicalProduct.gas\n ? 1\n : 0\n ],\n },\n ];\n};\n\nexport const switchingSupplierOptions: Array<SelectOption<\n EEffectiveStartRanges\n>> = [\n {\n id: EEffectiveStartRanges.NOW,\n value: EEffectiveStartRanges.NOW,\n label: Wording.now,\n },\n {\n id: EEffectiveStartRanges.LATER,\n value: EEffectiveStartRanges.LATER,\n label: Wording.later,\n },\n];\n\nconst initialDateValues = {\n changingSupplierStartTime: null,\n electricityExpress: false,\n electricityFirstPaymentCB: false,\n electricityTimeslots: null,\n electricityTimeslotSelection: null,\n gasExpress: false,\n gasFirstPaymentCB: false,\n gasTimeslots: null,\n gasTimeslotSelection: null,\n movingInElectricityDatePick: null,\n movingInGasDatePick: null,\n};\nconst initialState: IState = {\n ...initialDateValues,\n addressValue: '',\n debitDay: '',\n addressCoords: undefined,\n civilitySelection: null,\n currentProcessTypeSelection: EProcessTypes.MOVE_IN,\n electricityAppointments: [],\n firstNameValue: '',\n gasAppointments: [],\n IBANValue: '',\n identicalAddressToggleState: true,\n isJointContract: false,\n paymentModeSelection: null,\n postalCodeSelection: null,\n lastNameValue: '',\n};\n\nclass SituationSection extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = { ...initialState, debitDay: WordingDebitDay.paymentMethod.debitDaysEnum[0] };\n this.handleAddressInput = this.handleAddressInput.bind(this);\n this.handleCoordsInput = this.handleCoordsInput.bind(this);\n this.handleIBANInput = this.handleIBANInput.bind(this);\n this.handleIdenticalAddressToggle = this.handleIdenticalAddressToggle.bind(\n this,\n );\n this.handleJointContractToggle = this.handleJointContractToggle.bind(\n this,\n );\n this.handleMovingInDateCalenderOptions = this.handleMovingInDateCalenderOptions.bind(\n this,\n );\n this.handleMovingInDatePickerPick = this.handleMovingInDatePickerPick.bind(\n this,\n );\n this.handlePaymentModeSelection = this.handlePaymentModeSelection.bind(\n this,\n );\n this.handlePostalCodeSelection = this.handlePostalCodeSelection.bind(\n this,\n );\n this.handleSituationToggle = this.handleSituationToggle.bind(this);\n this.handleSwitchingSupplierContractStartTimeSelection = this.handleSwitchingSupplierContractStartTimeSelection.bind(\n this,\n );\n this.handleTimeslotSelection = this.handleTimeslotSelection.bind(this);\n this.validate = _.throttle(this.validate, 1000);\n this.handleDebitDay = this.handleDebitDay.bind(this);\n }\n\n componentDidMount() {\n this.init();\n\n const { cyclicalProducts, siteOptionSelection } = this.props;\n\n const { electricityFirstPaymentCB, gasFirstPaymentCB } = this.state;\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n const energyTypes: EEnergyTypes[] = toEnergies(siteOptionSelection);\n const paymentModeSelection = preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: electricityFirstPaymentCB,\n gas: gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n })[0];\n\n this.setState({\n paymentModeSelection,\n });\n }\n\n async init() {\n const {\n initialParams,\n cyclicalProducts,\n siteOptionSelection,\n } = this.props;\n\n if (!!initialParams) {\n let movingInParams: MovingInParams | {} = {};\n let switchParams: SwitchParams | {} = {};\n let changingSupplierStartTime: SelectOption<\n EEffectiveStartRanges\n > | null = null;\n const currentProcessTypeSelection: EProcessTypes =\n _.get(initialParams, 'startDate.processType') ||\n EProcessTypes.MOVE_IN;\n const identicalAddressToggleState: boolean = !initialParams.billingAddress;\n const addressValue: string = getAddressStreetLabel(\n initialParams.billingAddress,\n );\n const addressCoords = initialParams.coords || {\n civility: ECivilities.MR,\n firstName: '',\n lastName: '',\n };\n const postalCodeSelection: TAddress | null =\n initialParams.billingAddress || null;\n let civilitySelection: ECivilities | null = ECivilities.MR;\n let lastNameValue: string = '';\n let firstNameValue: string = '';\n const isJointContract: boolean = !!initialParams.thirdParty;\n if (isJointContract) {\n civilitySelection = _.get(\n initialParams,\n 'thirdParty.civility',\n null,\n );\n lastNameValue = _.get(initialParams, 'thirdParty.lastName', '');\n firstNameValue = _.get(\n initialParams,\n 'thirdParty.firstName',\n '',\n );\n }\n\n let paymentModeSelection: SelectOption<EPaymentModes> | null = null;\n const IBANValue: string = initialParams.payment.data.iban || '';\n if (initialParams.startDate.processType === EProcessTypes.MOVE_IN) {\n movingInParams = await this.parsePreviousMovingInParams(\n initialParams,\n );\n\n const energyTypes: EEnergyTypes[] = toEnergies(\n siteOptionSelection,\n );\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n paymentModeSelection =\n preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: (movingInParams as any)\n .electricityFirstPaymentCB,\n gas: (movingInParams as any).gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n })[0] || null;\n } else if (\n initialParams.startDate.processType === EProcessTypes.SWITCH\n ) {\n switchParams = this.parsePreviousSwitchParams(initialParams);\n\n const initialRange: EEffectiveStartRanges | null = _.get(\n initialParams,\n 'startDate.switchData.startRange',\n null,\n );\n changingSupplierStartTime =\n _.find(\n switchingSupplierOptions,\n (range: SelectOption<EEffectiveStartRanges>) => {\n return range.value === initialRange;\n },\n ) || null;\n\n paymentModeSelection =\n _.find(\n paymentModeOptions,\n (mode: SelectOption<EPaymentModes>) => {\n return initialParams.payment.mode === mode.value;\n },\n ) || null;\n }\n\n const nextState: IState = {\n addressValue,\n addressCoords,\n changingSupplierStartTime,\n civilitySelection,\n currentProcessTypeSelection,\n firstNameValue,\n IBANValue,\n identicalAddressToggleState,\n isJointContract,\n lastNameValue,\n paymentModeSelection,\n postalCodeSelection,\n ...(movingInParams as MovingInParams),\n ...switchParams,\n };\n\n await setState(this, { ...nextState });\n this.validate();\n }\n\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n\n const coholderCivility = params.get('coholderCivility');\n const coholderFirstName = params.get('coholderFirstName');\n const coholderLastName = params.get('coholderLastName');\n\n const isJointContract =\n !!coholderCivility && !!coholderFirstName && !!coholderLastName;\n\n if (isJointContract) {\n await setState(this, {\n civilitySelection: coholderCivility as ECivilities,\n lastNameValue: coholderLastName as string,\n firstNameValue: coholderFirstName as string,\n isJointContract,\n });\n }\n\n await this.fetchAppointments();\n }\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n const {\n isIndividual: prevIsIndividual,\n siteOptionSelection: prevSiteOptionSelection,\n } = prevProps;\n const {\n movingInElectricityDatePick: prevMovingInElectricityDatePick,\n movingInGasDatePick: prevMovingInGasDatePick,\n currentProcessTypeSelection,\n } = prevState;\n const { isIndividual, siteOptionSelection } = this.props;\n const { movingInElectricityDatePick, movingInGasDatePick } = this.state;\n\n const isSwitch = currentProcessTypeSelection === EProcessTypes.SWITCH;\n const shouldUpdateelectricityTimeslots =\n !!movingInElectricityDatePick &&\n movingInElectricityDatePick !== prevMovingInElectricityDatePick;\n const shouldUpdategasTimeslots =\n !!movingInGasDatePick &&\n movingInGasDatePick !== prevMovingInGasDatePick;\n if (\n !isSwitch &&\n (prevIsIndividual !== isIndividual ||\n prevSiteOptionSelection !== siteOptionSelection)\n ) {\n this.fetchAppointments();\n }\n if (\n !isSwitch &&\n (shouldUpdateelectricityTimeslots || shouldUpdategasTimeslots)\n ) {\n this.fetchTimeSlots(\n shouldUpdateelectricityTimeslots,\n shouldUpdategasTimeslots,\n );\n }\n if (!_.isEqual(prevState, this.state)) {\n this.validate();\n }\n }\n\n async fetchAppointments() {\n const {\n getCalendarAppointment,\n isIndividual,\n siteOptionSelection,\n } = this.props;\n const nextState: any = {};\n const shouldFetchElectricityAppointements =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n const shouldFetchGasAppointments =\n siteOptionSelection === ESubscriptionTypes.GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n if (shouldFetchElectricityAppointements) {\n const appointments:\n | TAppointmentDay[]\n | RequestError = await getCalendarAppointment(\n EEnergyTypes.ELECTRICTY,\n isIndividual,\n );\n if (!(appointments instanceof RequestError)) {\n nextState.electricityAppointments = appointments;\n }\n }\n if (shouldFetchGasAppointments) {\n const appointments = await getCalendarAppointment(\n EEnergyTypes.GAS,\n isIndividual,\n );\n if (!(appointments instanceof RequestError)) {\n nextState.gasAppointments = appointments;\n }\n }\n this.setState({ ...nextState });\n }\n\n async fetchTimeSlots(electricity: boolean, gas: boolean) {\n const { searchAppointmentTimeslot } = this.props;\n const { movingInElectricityDatePick, movingInGasDatePick } = this.state;\n const nextState: any = {};\n try {\n if (!!movingInElectricityDatePick && electricity) {\n const electricityTimeslots = await searchAppointmentTimeslot(\n movingInElectricityDatePick,\n EEnergyTypes.ELECTRICTY,\n );\n if (!(electricityTimeslots instanceof RequestError)) {\n nextState.electricityTimeslots = electricityTimeslots as ETimeslots[];\n }\n }\n if (!!movingInGasDatePick && gas) {\n const gasTimeslots = await searchAppointmentTimeslot(\n movingInGasDatePick,\n EEnergyTypes.GAS,\n );\n if (!(gasTimeslots instanceof RequestError)) {\n nextState.gasTimeslots = gasTimeslots as ETimeslots[];\n }\n }\n this.setState({ ...nextState });\n } catch (err) {\n console.error(err);\n }\n }\n\n handleAddressInput(address: string) {\n this.setState({ addressValue: address });\n }\n\n handleCoordsInput(coords: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n }) {\n this.setState({\n civilitySelection: coords.civility,\n firstNameValue: coords.firstName,\n lastNameValue: coords.lastName,\n });\n }\n\n handleIBANInput(e: ChangeEvent<HTMLInputElement>) {\n const nextValue = _.get(e, 'target.value', '');\n this.setState({ IBANValue: nextValue });\n }\n\n handleIdenticalAddressToggle(identical: boolean) {\n this.setState({ identicalAddressToggleState: identical });\n }\n\n handleJointContractToggle(toggled: boolean) {\n this.setState({\n civilitySelection: !!toggled ? ECivilities.MR : null,\n isJointContract: toggled,\n });\n }\n\n handleMovingInDateCalenderOptions(\n energy: 'EL' | 'NG',\n status: 'disabled' | 'selected',\n ): Modifier[] {\n const {\n electricityAppointments,\n gasAppointments,\n currentProcessTypeSelection,\n changingSupplierStartTime,\n } = this.state;\n const { channel } = this.props;\n const isSwitch = currentProcessTypeSelection === EProcessTypes.SWITCH;\n let appointments: TAppointmentDay[] = [];\n if (energy === 'EL') {\n appointments = electricityAppointments;\n } else {\n appointments = gasAppointments;\n }\n let modifiers: Modifier[] = [];\n\n if (isSwitch && changingSupplierStartTime) {\n if (status === 'disabled') {\n const switchDropdownValues = (() => {\n let day =\n config.DefaultSwitchDueDate[\n changingSupplierStartTime.value\n ][energy];\n day = config.ChannelsDoorToDoor.includes(\n channel.toUpperCase(),\n )\n ? (day += 7)\n : (day += 0);\n day =\n !config.ChannelsDoorToDoor.includes(\n channel.toUpperCase(),\n ) && changingSupplierStartTime.value === 'LATER'\n ? (day += 3)\n : (day += 1);\n const actualDate = new Date();\n return addDays(actualDate, day);\n })();\n\n const wekiwiPro = this.props.productCode\n .filter(product => product && product.productCode)\n .some(product => product.productCode!.includes(\"WEKIPRO\"));\n return [\n {\n before: switchDropdownValues,\n after: addMonth(new Date(), wekiwiPro ? 4 : 1),\n },\n {\n daysOfWeek: [0, 6],\n },\n ];\n }\n\n return [];\n }\n\n if (status === 'disabled' && appointments.length === 0) {\n const today: Date = new Date(Date.now());\n modifiers = [\n {\n after: today,\n before: today,\n },\n today,\n ];\n } else if (status === 'selected') {\n modifiers = filterAppointments(appointments, 'express', true);\n } else {\n modifiers = filterAppointments(appointments, 'available', false);\n }\n return modifiers;\n }\n\n handleMovingInDatePickerPick(d: Date, energy: 'EL' | 'NG') {\n const {\n electricityAppointments,\n gasAppointments,\n currentProcessTypeSelection,\n } = this.state;\n const { cyclicalProducts } = this.props;\n\n const isSwitch = currentProcessTypeSelection === EProcessTypes.SWITCH;\n\n const nextState: any = {};\n let appointments: TAppointmentDay[] = [];\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n if (energy === EEnergyTypes.ELECTRICTY) {\n nextState.movingInElectricityDatePick = d;\n appointments = electricityAppointments;\n } else if (energy === EEnergyTypes.GAS) {\n nextState.movingInGasDatePick = d;\n appointments = gasAppointments;\n }\n\n if (!isSwitch) {\n const match = matchDate(appointments, d);\n const nextFirstPaymentCB = !!match && !!match.firstPaymentCB;\n if (energy === EEnergyTypes.ELECTRICTY) {\n nextState.electricityExpress = !!match && !!match.express;\n nextState.electricityFirstPaymentCB =\n nextFirstPaymentCB && !isCyclicalProductElec;\n } else if (energy === EEnergyTypes.GAS) {\n nextState.gasExpress = !!match && !!match.express;\n nextState.gasFirstPaymentCB =\n nextFirstPaymentCB && !isCyclicalProductGas;\n }\n }\n\n this.setState({ ...nextState });\n }\n\n handlePaymentModeSelection(e: SelectOption<EPaymentModes>) {\n this.setState({ paymentModeSelection: e });\n }\n\n handlePostalCodeSelection(address: TAddress) {\n this.setState({ postalCodeSelection: address });\n }\n\n handleSituationToggle(situation: EProcessTypes) {\n const { cyclicalProducts, siteOptionSelection, channel } = this.props;\n\n const { electricityFirstPaymentCB, gasFirstPaymentCB } = this.state;\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n const energyTypes: EEnergyTypes[] = toEnergies(siteOptionSelection);\n const paymentModeSelection = preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: electricityFirstPaymentCB,\n gas: gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n })[0];\n\n const prepareDateValue = checkIsDisableSwitchSelect({ channel })\n ? {}\n : initialDateValues;\n\n this.setState({\n ...prepareDateValue,\n currentProcessTypeSelection: situation,\n paymentModeSelection,\n });\n }\n\n handleSwitchingSupplierContractStartTimeSelection(\n startTime: SelectOption<EEffectiveStartRanges>,\n ) {\n const { siteOptionSelection } = this.props;\n if (!!_.find(switchingSupplierOptions, startTime)) {\n const { DefaultSwitchDueDate } = config;\n\n const getDateByEnergy = (energy: 'EL' | 'NG') =>\n addDays(\n new Date(),\n DefaultSwitchDueDate[startTime.value][energy],\n );\n\n const nextDateProps: any = {};\n\n if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n nextDateProps.movingInElectricityDatePick = getDateByEnergy(\n 'EL',\n );\n }\n\n if (siteOptionSelection === ESubscriptionTypes.GAS) {\n nextDateProps.movingInGasDatePick = getDateByEnergy('NG');\n }\n\n if (\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n nextDateProps.movingInGasDatePick = getDateByEnergy('NG');\n nextDateProps.movingInElectricityDatePick = getDateByEnergy(\n 'EL',\n );\n }\n\n this.setState({\n changingSupplierStartTime: startTime,\n ...nextDateProps,\n });\n } else {\n console.error('Unexpected start time value');\n }\n }\n\n handleTimeslotSelection(\n opt: SelectOption<ETimeslots>,\n energy: 'EL' | 'NG',\n ) {\n const nextState: any = {};\n const timeslot: ETimeslots = _.get(opt, 'value', null) as ETimeslots;\n if (energy === 'EL') {\n nextState.electricityTimeslotSelection = timeslot;\n } else if (energy === 'NG') {\n nextState.gasTimeslotSelection = timeslot;\n }\n this.setState({ ...nextState });\n }\n\n async parsePreviousMovingInParams(\n initialParams: Data,\n ): Promise<MovingInParams> {\n const hasElectricity: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.ELECTRICTY,\n );\n const hasGas: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.GAS,\n );\n let electricityAppointments: TAppointmentDay[] = [];\n let electricityExpress: boolean = false;\n let electricityFirstPaymentCB: boolean = false;\n let electricityTimeslots: ETimeslots[] | null = null;\n let electricityTimeslotSelection: ETimeslots | null = null;\n let gasAppointments: TAppointmentDay[] = [];\n let gasExpress: boolean = false;\n let gasFirstPaymentCB: boolean = false;\n let gasTimeslots: ETimeslots[] | null = null;\n let gasTimeslotSelection: ETimeslots | null = null;\n let movingInElectricityDatePick: Date | null = null;\n let movingInGasDatePick: Date | null = null;\n if (hasElectricity) {\n const electricityParams = await this.parsePreviousEnergyMovingInParams(\n initialParams,\n EEnergyTypes.ELECTRICTY,\n );\n electricityAppointments = electricityParams.appointments;\n electricityExpress = electricityParams.express;\n electricityFirstPaymentCB = electricityParams.firstPaymentCB;\n electricityTimeslots = electricityParams.timeslots;\n electricityTimeslotSelection = electricityParams.timeslotSelection;\n movingInElectricityDatePick = electricityParams.datePick;\n }\n if (hasGas) {\n const gasParams = await this.parsePreviousEnergyMovingInParams(\n initialParams,\n EEnergyTypes.GAS,\n );\n gasAppointments = gasParams.appointments;\n gasExpress = gasParams.express;\n gasFirstPaymentCB = gasParams.firstPaymentCB;\n gasTimeslots = gasParams.timeslots;\n gasTimeslotSelection = gasParams.timeslotSelection;\n movingInGasDatePick = gasParams.datePick;\n }\n return {\n electricityAppointments,\n electricityExpress,\n electricityFirstPaymentCB,\n electricityTimeslots,\n electricityTimeslotSelection,\n gasAppointments,\n gasExpress,\n gasFirstPaymentCB,\n gasTimeslots,\n gasTimeslotSelection,\n movingInElectricityDatePick,\n movingInGasDatePick,\n };\n }\n\n async parsePreviousEnergyMovingInParams(\n initialParams: Data,\n energy: EEnergyTypes,\n ): Promise<{\n appointments: TAppointmentDay[];\n datePick: Date | null;\n express: boolean;\n firstPaymentCB: boolean;\n timeslots: ETimeslots[] | null;\n timeslotSelection: ETimeslots | null;\n }> {\n const {\n isIndividual,\n getCalendarAppointment,\n searchAppointmentTimeslot,\n } = this.props;\n\n let appointments: TAppointmentDay[] = [];\n let datePick: Date | null = null;\n let express: boolean = false;\n let firstPaymentCB: boolean = false;\n let timeslots: ETimeslots[] | null = null;\n let timeslotSelection: ETimeslots | null = null;\n const appointmentsRes = await getCalendarAppointment(\n energy,\n isIndividual,\n true,\n );\n appointments = !(appointmentsRes instanceof RequestError)\n ? appointmentsRes\n : [];\n const previousDatePick: Date | null = _.get(\n initialParams,\n `startDate.movingInData.${energy}.date`,\n null,\n );\n const previousTimeslot: ETimeslots | null = _.get(\n initialParams,\n `startDate.movingInData.${energy}.timeslot`,\n null,\n );\n let appointmentDay: TAppointmentDay | null = null;\n if (!!previousDatePick) {\n const previousAppDate: Date | number = new Date(previousDatePick);\n const previousAppDateStr: string = getFormattedDateToBackEnd(\n previousAppDate,\n );\n appointmentDay =\n _.find(appointments, (app: TAppointmentDay) => {\n const appDate: Date | number = new Date(app.date);\n if (!previousAppDate || !appDate) return false;\n const appDateStr: string = getFormattedDateToBackEnd(\n appDate,\n );\n return previousAppDateStr === appDateStr;\n }) || null;\n }\n if (!!appointmentDay) {\n datePick = new Date(appointmentDay.date);\n express = !!appointmentDay.express;\n firstPaymentCB = !!appointmentDay.firstPaymentCB;\n const timeslotsRes:\n | ETimeslots[]\n | RequestError = await searchAppointmentTimeslot(\n datePick,\n energy,\n );\n if (!(timeslotsRes instanceof RequestError)) {\n timeslots = timeslotsRes;\n const previousTimeslot: ETimeslots | null = _.get(\n initialParams,\n `startDate.movingInData.${energy}.timeslot`,\n null,\n );\n timeslotSelection =\n _.find(timeslots, (timeslot: ETimeslots) => {\n return previousTimeslot === timeslot;\n }) || null;\n }\n }\n // if !datePick Breach: Missing express and firstPaymetnCB values ! ! !\n if (!datePick) {\n datePick = previousDatePick;\n timeslotSelection = previousTimeslot;\n }\n\n return {\n appointments,\n datePick,\n express,\n firstPaymentCB,\n timeslots,\n timeslotSelection,\n };\n }\n\n parsePreviousSwitchParams(initialParams: Data): SwitchParams {\n const switchData: any = {};\n\n const hasElectricity: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.ELECTRICTY,\n );\n const hasGas: boolean = _.includes(\n initialParams.energies,\n EEnergyTypes.GAS,\n );\n\n if (hasElectricity) {\n const nextDate = _.get(\n initialParams,\n `startDate.switchData.EL.dueDate`,\n null,\n );\n\n if (!!nextDate) {\n switchData.movingInElectricityDatePick = nextDate;\n }\n }\n\n if (hasGas) {\n const nextDate = _.get(\n initialParams,\n `startDate.switchData.NG.dueDate`,\n null,\n );\n\n if (!!nextDate) {\n switchData.movingInGasDatePick = nextDate;\n }\n }\n\n return Object.keys(switchData).length !== 0 ? switchData : {};\n }\n\n validate() {\n const {\n onValidationStatusChange,\n siteOptionSelection,\n cyclicalProducts,\n } = this.props;\n const {\n addressCoords,\n addressValue,\n changingSupplierStartTime,\n civilitySelection,\n currentProcessTypeSelection,\n electricityExpress,\n electricityFirstPaymentCB,\n electricityTimeslotSelection,\n firstNameValue,\n gasExpress,\n gasFirstPaymentCB,\n gasTimeslotSelection,\n IBANValue,\n identicalAddressToggleState,\n isJointContract,\n lastNameValue,\n movingInElectricityDatePick,\n movingInGasDatePick,\n paymentModeSelection,\n postalCodeSelection,\n } = this.state;\n\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n\n let hasValidInput =\n paymentModeSelection !==\n null /* && TODO Uncomment when possible IBANValue.length > 0*/;\n if (!identicalAddressToggleState) {\n hasValidInput =\n hasValidInput &&\n addressValue.length > 0 &&\n postalCodeSelection !== null;\n }\n if (isJointContract) {\n hasValidInput =\n hasValidInput &&\n civilitySelection !== null &&\n firstNameValue.length > 0 &&\n lastNameValue.length > 0;\n }\n if (currentProcessTypeSelection === EProcessTypes.MOVE_IN) {\n if (\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n hasValidInput =\n hasValidInput &&\n movingInElectricityDatePick !== null &&\n electricityTimeslotSelection !== null &&\n movingInGasDatePick !== null &&\n gasTimeslotSelection !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n hasValidInput =\n hasValidInput &&\n movingInElectricityDatePick !== null &&\n electricityTimeslotSelection !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.GAS) {\n hasValidInput =\n hasValidInput &&\n movingInGasDatePick !== null &&\n gasTimeslotSelection !== null;\n }\n } else if (currentProcessTypeSelection === EProcessTypes.SWITCH) {\n hasValidInput = hasValidInput && changingSupplierStartTime !== null;\n\n if (\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n hasValidInput =\n hasValidInput &&\n movingInElectricityDatePick !== null &&\n movingInGasDatePick !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n hasValidInput =\n hasValidInput && movingInElectricityDatePick !== null;\n } else if (siteOptionSelection === ESubscriptionTypes.GAS) {\n hasValidInput = hasValidInput && movingInGasDatePick !== null;\n }\n }\n let effectiveStartRange: EEffectiveStartRanges | undefined;\n let electricityEffectiveStartDate: Date | undefined;\n let gasEffectiveStartDate: Date | undefined;\n let electricityTimeslot: ETimeslots | undefined;\n let gasTimeslot: ETimeslots | undefined;\n let billingAddress: TAddress | undefined;\n let iban: string | undefined;\n let processType: EProcessTypes | undefined;\n let electricityDueDate: Date | undefined;\n let gasDueDate: Date | undefined;\n let thirdParty:\n | {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n }\n | undefined;\n if (hasValidInput) {\n billingAddress = !!postalCodeSelection\n ? { ...postalCodeSelection, street: addressValue }\n : undefined;\n iban = IBANValue;\n processType = currentProcessTypeSelection;\n if (!!civilitySelection) {\n thirdParty = {\n civility: civilitySelection,\n lastName: lastNameValue,\n firstName: firstNameValue,\n };\n }\n if (currentProcessTypeSelection === EProcessTypes.MOVE_IN) {\n electricityEffectiveStartDate =\n movingInElectricityDatePick || undefined;\n gasEffectiveStartDate = movingInGasDatePick || undefined;\n electricityTimeslot = electricityTimeslotSelection || undefined;\n gasTimeslot = gasTimeslotSelection || undefined;\n } else if (\n currentProcessTypeSelection === EProcessTypes.SWITCH &&\n changingSupplierStartTime !== null\n ) {\n effectiveStartRange = changingSupplierStartTime.value;\n if (\n changingSupplierStartTime.value ===\n EEffectiveStartRanges.LATER\n ) {\n (electricityEffectiveStartDate = isCyclicalProductElec\n ? new Date()\n : (movingInElectricityDatePick as Date)),\n 'EL',\n 'LATER',\n (gasEffectiveStartDate = isCyclicalProductGas\n ? new Date()\n : (movingInGasDatePick as Date)),\n 'NG',\n 'LATER',\n (gasDueDate = movingInGasDatePick as Date);\n electricityDueDate = movingInElectricityDatePick as Date;\n if (\n electricityDueDate &&\n electricityDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else if (\n gasDueDate &&\n gasDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else {\n if (!isCyclicalProductGas) {\n gasEffectiveStartDate = addDays(\n gasEffectiveStartDate,\n 14,\n );\n } else {\n gasEffectiveStartDate = gasDueDate;\n }\n if (!isCyclicalProductElec) {\n electricityEffectiveStartDate = addDays(\n electricityEffectiveStartDate,\n 14,\n );\n } else {\n electricityEffectiveStartDate = electricityDueDate;\n }\n }\n } else if (\n changingSupplierStartTime.value ===\n EEffectiveStartRanges.NOW\n ) {\n (electricityEffectiveStartDate = movingInElectricityDatePick as Date),\n 'EL',\n 'NOW',\n (gasEffectiveStartDate = movingInGasDatePick as Date),\n 'NG',\n 'NOW',\n (electricityDueDate = movingInElectricityDatePick as Date);\n gasDueDate = movingInGasDatePick as Date;\n if (\n electricityDueDate &&\n electricityDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else if (\n gasDueDate &&\n gasDueDate.setHours(0, 0, 0, 0) ===\n new Date().setHours(0, 0, 0, 0)\n ) {\n electricityEffectiveStartDate = undefined;\n gasEffectiveStartDate = undefined;\n } else {\n gasEffectiveStartDate = gasDueDate;\n electricityEffectiveStartDate = electricityDueDate;\n }\n }\n }\n }\n\n onValidationStatusChange(hasValidInput, {\n coords: addressCoords,\n effectiveStartRange,\n electricityEffectiveStartDate,\n gasEffectiveStartDate,\n electricityExpress,\n gasExpress,\n electricityTimeslot,\n gasTimeslot,\n electricityFirstPaymentCB,\n gasFirstPaymentCB,\n billingAddress,\n iban,\n processType,\n thirdParty,\n electricityDueDate,\n gasDueDate,\n });\n }\n\n /* handleDebitDay(value: string) {\n this.setState({\n debitDay: value,\n })\n }*/\n\n handleDebitDay(selectedDay: any) {\n this.setState({ debitDay: selectedDay });\n }\n\n render() {\n const {\n cyclicalProducts,\n initialParams,\n siteOptionSelection,\n channel,\n } = this.props;\n const {\n addressCoords,\n changingSupplierStartTime,\n civilitySelection,\n currentProcessTypeSelection,\n electricityFirstPaymentCB,\n electricityTimeslots,\n electricityTimeslotSelection,\n firstNameValue,\n gasFirstPaymentCB,\n gasTimeslots,\n gasTimeslotSelection,\n IBANValue,\n isJointContract,\n movingInElectricityDatePick,\n movingInGasDatePick,\n lastNameValue,\n paymentModeSelection,\n debitDay,\n } = this.state;\n const energyTypes: EEnergyTypes[] = toEnergies(siteOptionSelection);\n const isCyclicalProductElec = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.ELECTRICTY,\n );\n const isCyclicalProductGas = _.includes<EEnergyTypes>(\n cyclicalProducts,\n EEnergyTypes.GAS,\n );\n const isLaterSDD =\n changingSupplierStartTime !== null &&\n changingSupplierStartTime.value === 'LATER';\n const dateContract: any = toDateContract(\n {\n // date: (isLaterSDD && config.ChannelsDoorToDoor.includes(channel.toUpperCase()) ? addDays(movingInElectricityDatePick as Date, 7) : movingInElectricityDatePick),\n date: movingInElectricityDatePick,\n firstPaymentCB: electricityFirstPaymentCB,\n isCyclicalProduct: isCyclicalProductElec,\n startTime: _.get(changingSupplierStartTime, 'value', null),\n timeslots: electricityTimeslots,\n timeslotSelection: electricityTimeslotSelection,\n },\n {\n // date: (isLaterSDD && config.ChannelsDoorToDoor.includes(channel.toUpperCase()) ? addDays(movingInGasDatePick as Date, 7) : movingInGasDatePick),\n date: movingInGasDatePick,\n firstPaymentCB: gasFirstPaymentCB,\n isCyclicalProduct: isCyclicalProductGas,\n startTime: _.get(changingSupplierStartTime, 'value', null),\n timeslots: gasTimeslots,\n timeslotSelection: gasTimeslotSelection,\n },\n );\n const initialAddress: TAddress | undefined =\n _.get(initialParams, 'billingAddress') || undefined;\n const initialCoords: Coords | undefined =\n _.get(initialParams, 'coords') || undefined;\n\n const paymentModeOptions = preparePaymentModOptions({\n cyclicalProducts,\n energyTypes,\n firstPaymentCB: {\n elec: electricityFirstPaymentCB,\n gas: gasFirstPaymentCB,\n },\n isCyclicalProduct: {\n elec: isCyclicalProductElec,\n gas: isCyclicalProductGas,\n },\n });\n\n\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <div className={bcn([baseClassName, radioToggleClassName])}>\n <CustomRadio\n text={Wording.movingIn}\n value={EProcessTypes.MOVE_IN}\n checked={\n currentProcessTypeSelection ===\n EProcessTypes.MOVE_IN\n }\n handleCheck={() => {\n this.handleSituationToggle(EProcessTypes.MOVE_IN);\n }}\n />\n <CustomRadio\n text={Wording.switchingSupplier}\n value={EProcessTypes.SWITCH}\n checked={\n currentProcessTypeSelection === EProcessTypes.SWITCH\n }\n handleCheck={() => {\n this.handleSituationToggle(EProcessTypes.SWITCH);\n if (isCyclicalProductElec || isCyclicalProductGas) {\n this.handleSwitchingSupplierContractStartTimeSelection(\n switchingSupplierOptions[1],\n );\n }\n }}\n />\n </div>\n\n <div className={bcn([baseClassName, detailsClassName])}>\n <CustomDatePicker\n channel={channel}\n isCyclicalProductElec={isCyclicalProductElec}\n isCyclicalProductGas={isCyclicalProductGas}\n dateContract={dateContract}\n dropdownContractOptions={switchingSupplierOptions}\n dropdownContractOptionSelection={\n changingSupplierStartTime\n }\n energyTypes={energyTypes}\n handleChangeTimeslotSelect={\n this.handleTimeslotSelection\n }\n handleDateCalendarOption={\n this.handleMovingInDateCalenderOptions\n }\n handleDatePicker={this.handleMovingInDatePickerPick}\n handleDropdownContract={\n this\n .handleSwitchingSupplierContractStartTimeSelection\n }\n situation={\n currentProcessTypeSelection ===\n EProcessTypes.MOVE_IN\n ? 'MOVE_IN'\n : 'SWITCH'\n }\n />\n </div>\n <div style={{ marginTop: \"30px\" }}>\n <label className=\"custom-radio\" style={{ paddingLeft: \"0px\" }}>\n Jour de prélèvement souhaité\n </label>\n <div className=\"profile-container__update-payment-method__debit-day__container\" style={{justifyContent: 'flex-start'}}>\n {WordingDebitDay.paymentMethod.debitDaysEnum.map(dd => (\n <CustomRadio\n key={dd}\n checked={dd === this.state.debitDay}\n text={replace(\n WordingDebitDay.paymentMethod.debitDayLabel,\n '{{ddValue}}',\n dd\n )}\n value={dd}\n handleCheck={() => {\n this.props.handleDebitDay(\n (dd as unknown) as number\n );\n this.handleDebitDay(dd);\n }}\n />\n ))}\n </div>\n </div>\n\n {currentProcessTypeSelection === EProcessTypes.SWITCH &&\n _.get(changingSupplierStartTime, 'value') !==\n EEffectiveStartRanges.LATER && <p>{Wording.terms}</p>}\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n ])}\n >\n {!isCyclicalProductElec && !isCyclicalProductGas && (\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'disclaimer',\n ])}\n >\n <p>\n <span>{Wording.disclaimerHead} </span>\n <span>{Wording.disclaimerBody}</span>\n </p>\n </div>\n )}\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n ])}\n >\n {/* <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n 'payment-mode',\n ])}\n >\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n 'payment-mode',\n 'iban',\n ])}\n >\n <CustomInput\n onInputChange={this.handleIBANInput}\n text={Wording.iban}\n value={IBANValue}\n />\n <span>{Wording.otherFormat}</span>\n </div>\n <CustomSelect\n handleChangeSelect={\n this.handlePaymentModeSelection\n }\n options={paymentModeOptions}\n text={Wording.paymentMode}\n value={\n paymentModeOptions[0] ||\n paymentModeSelection\n }\n />\n </div> */}\n <AddressSelect\n initialCoords={initialCoords}\n initialAddress={initialAddress}\n onAddressInputChange={this.handleAddressInput}\n onCoordsChange={(addressCoords: Coords) => {\n this.setState({ addressCoords });\n }}\n onIdenticalAddressToggle={\n this.handleIdenticalAddressToggle\n }\n onPostalCodeSelection={\n this.handlePostalCodeSelection\n }\n text={Wording.identicalAddress}\n />\n <div\n className={bcn([\n baseClassName,\n billingInformationsClassName,\n 'inputs',\n 'custom-radio-bundle',\n ])}\n >\n <label>{Wording.jointAccount}</label>\n <CustomRadio\n text={Wording.yes}\n value={'true'}\n checked={isJointContract}\n handleCheck={() => {\n this.handleJointContractToggle(true);\n }}\n />\n <CustomRadio\n text={Wording.no}\n value={'false'}\n checked={!isJointContract}\n handleCheck={() => {\n this.handleJointContractToggle(false);\n }}\n />\n </div>\n {isJointContract && (\n <CoordsInputs\n onInputChange={this.handleCoordsInput}\n values={{\n civility: civilitySelection,\n firstName: firstNameValue,\n lastName: lastNameValue,\n }}\n />\n )}\n </div>\n </div>\n </section>\n );\n }\n}\n\nexport default SituationSection;\n","import React, { Fragment } from 'react';\nimport _ from 'lodash';\nimport 'react-day-picker/lib/style.css';\nimport { addDays } from 'date-fns';\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport { formatDate, parseDate } from 'react-day-picker/moment';\nimport { CustomSelect } from '../..';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n checkIsDisableSwitchSelect,\n getFormattedDate,\n prepareEffectiveStartDate,\n} from '../../../utils/helpers';\nimport config from '../../../utils/config';\nimport { switchingSupplierOptions } from '../../../containers/admin/AdminSubscriptionContainer/sections/SituationSection/SituationSection';\n\nconst Wording = WordingConstant.Components.DateContainer;\n\nconst modifiersStyles = {\n highlighted: {\n color: 'white',\n backgroundColor: '#ffb40a',\n },\n\n outside: { color: '#8954ba', backgroundColor: 'white' },\n};\n\nclass DateContainer extends React.Component {\n constructor(props) {\n super(props);\n const { dateContract } = props;\n this.state = {\n setting: {\n EL: {\n hideDiv: false,\n showSelect:\n dateContract.EL && dateContract.EL.timeslot !== '',\n },\n NG: {\n hideDiv: false,\n showSelect:\n dateContract.NG && dateContract.NG.timeslot !== '',\n },\n },\n isLockedSituationSelect: false,\n selectedDates: {\n EL: null,\n NG: null,\n },\n };\n }\n\n componentDidMount() {\n const { channel, handleDropdownContract } = this.props;\n\n if (checkIsDisableSwitchSelect({ channel })) {\n handleDropdownContract(switchingSupplierOptions[1]);\n this.setState({ isLockedSituationSelect: true });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { dateContract } = this.props;\n const { setting } = this.state;\n const nextSetting = setting;\n if (prevProps !== this.props) {\n nextSetting.EL.showSelect =\n dateContract.EL && dateContract.EL.timeslot !== '';\n nextSetting.NG.showSelect =\n dateContract.NG && dateContract.NG.timeslot !== '';\n this.setState({ setting: nextSetting });\n }\n }\n renderInfosDiv = energy => {\n const { isSwitch } = this.props;\n return (\n <div\n className={`date-container__date__calendars__${energy}-calendar__infos`}\n >\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__options`}\n >\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__circle_1`}\n />\n <p>{Wording.contractDate.selectedDate}</p>\n </div>\n\n {!isSwitch && (\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__options`}\n >\n <div\n className={`date-container__date__info date-container__date__calendars__${energy}-calendar__infos__circle_2`}\n />\n <p> {Wording.contractDate.dateExtraCoat} </p>\n </div>\n )}\n </div>\n );\n };\n\n handleChangeBool = (energy, type) => {\n const { setting } = this.state;\n const updatedSetting = {\n ...setting,\n [energy]: {\n ...setting[energy],\n hideDiv: type === 'open',\n },\n };\n this.setState({ setting: updatedSetting });\n };\n\n handleChangeBoolSelect = energy => {\n const { setting } = this.state;\n const updatedSetting = {\n ...setting,\n [energy]: {\n ...setting[energy],\n showSelect: true,\n },\n };\n this.setState({ setting: updatedSetting });\n };\n\n renderTextWithCalendar = energy => {\n const { dateContract, isSwitch } = this.props;\n const shouldDisplayCBWarning =\n !isSwitch &&\n !!_.get(dateContract, `${energy}.firstPaymentCB`, false) &&\n !_.get(dateContract, `${energy}.isCyclicalProduct`, true);\n return (\n <div className={'warnings'}>\n {shouldDisplayCBWarning && (\n <span className={'attention'}>\n <span className=\"attention__title\">Attention!</span>\n {Wording.contractDate.attention}\n </span>\n )}\n </div>\n );\n };\n\n renderTextSwitchByCalendar = (energy, classN) => {\n const { setting } = this.state;\n const { dropdownContractOptionSelection } = this.props;\n\n return (\n setting[energy].hideDiv && (\n <React.Fragment>\n <p className={`${classN} attention-switch`}>\n {dropdownContractOptionSelection !== null &&\n dropdownContractOptionSelection.value === 'LATER' &&\n `${\n Wording.contractDate.renderDescription\n } ${this.renderTheoreticalDate(energy)}`}\n </p>\n </React.Fragment>\n )\n );\n };\n\n renderTheoreticalDate = energy => {\n const {\n switchType,\n isCyclicalProductGas,\n isCyclicalProductElec,\n } = this.props;\n const { selectedDates } = this.state;\n\n const currentDate = selectedDates[energy] || new Date();\n\n const nextDate = prepareEffectiveStartDate(\n currentDate,\n energy,\n switchType,\n isCyclicalProductGas || isCyclicalProductElec,\n );\n\n return getFormattedDate(nextDate);\n };\n\n renderTheoreticalDate21Days = energy => {\n const { selectedDates } = this.state;\n\n const currentDate = selectedDates[energy] || new Date();\n\n const nextDate = addDays(currentDate, 14);\n return getFormattedDate(nextDate);\n };\n\n handleDatePicker = (selectedDate, energy) => {\n //const { dateContract } = this.props;\n\n const updatedSelectedDates = {\n ...this.state.selectedDates,\n [energy]: selectedDate,\n };\n\n /* const updatedDateContract = {\n ...dateContract,\n [energy]: {\n ...dateContract[energy],\n date: selectedDate,\n },\n };*/\n\n this.setState({\n selectedDates: updatedSelectedDates,\n });\n\n //this.updateDateContract(updatedDateContract);\n };\n\n renderCalendar = () => {\n const {\n energyTypes,\n handleDatePicker,\n handleDateCalendarOption,\n isSwitch,\n isCyclicalProductElec,\n isCyclicalProductGas,\n dropdownContractOptionSelection,\n channel,\n } = this.props;\n const { setting } = this.state;\n return (\n <div className=\"date-container__date\">\n {energyTypes &&\n energyTypes.map((energy, index) => {\n // let currentDate = !!_.get(\n // dateContract,\n // `${energy}.date`,\n // )\n // ? new Date(\n // dateContract[energy].year,\n // dateContract[energy].month,\n // dateContract[energy].date,\n // )\n // : undefined;\n if (\n config.ChannelsDoorToDoor.includes(channel) &&\n isSwitch\n ) {\n //currentDate = addDays(currentDate, 7)\n }\n const renderTitle =\n isCyclicalProductElec || isCyclicalProductGas\n ? Wording.contractDate.title\n : Wording.contractDate[\n dropdownContractOptionSelection !==\n null &&\n dropdownContractOptionSelection.value ===\n 'LATER'\n ? 'titleSwitch'\n : 'title'\n ];\n\n /*const isCyclicalBilling =\n energy === 'EL'\n ? isCyclicalProductElec\n : isCyclicalProductGas;*/\n\n return (\n <>\n <div\n key={index}\n className=\"date-container__date__calendars\"\n >\n <div\n className={`date-container__date__calendars__${energy}-calendar`}\n >\n <div\n className={`date-container__date__calendars__${energy}-calendar__title`}\n >\n <span>{renderTitle}</span>\n <span>\n {Wording.contractDate[energy]}\n </span>\n </div>\n\n {/* {isCyclicalBilling && isSwitch && (\n <div className=\"cyclical-billing\">\n <p>\n {\n Wording.contractDate\n .cyclicalBillingText\n }\n </p>\n </div>\n )}*/}\n\n {(isSwitch /*!isCyclicalBilling*/ ||\n !isSwitch) && (\n <React.Fragment>\n <div className=\"date_container_div\">\n {isSwitch &&\n energyTypes.length ===\n 2 &&\n energy === 'NG' &&\n this.renderTextSwitchByCalendar(\n energy,\n 'right',\n )}\n <DayPickerInput\n placeholder=\"JJ/MM/AAAA\"\n format=\"DD/MM/YYYY\"\n formatDate={formatDate}\n parseDate={parseDate}\n dayPickerProps={{\n className:\n 'selectable',\n selectedDays: handleDateCalendarOption(\n energy,\n 'selected',\n ),\n disabledDays: handleDateCalendarOption(\n energy,\n 'disabled',\n ),\n locale:\n Wording\n .contractDate\n .LOCAL,\n months:\n Wording\n .contractDate\n .MONTH[\n Wording\n .contractDate\n .LOCAL\n ],\n weekdaysShort:\n Wording\n .contractDate\n .WEEKDAYS_SHORT[\n Wording\n .contractDate\n .LOCAL\n ],\n weekdaysLong:\n Wording\n .contractDate\n .WEEKDAYS_LONG[\n Wording\n .contractDate\n .LOCAL\n ],\n firstDayOfWeek:\n Wording\n .contractDate\n .FIRST_DAY_OF_WEEK[\n Wording\n .contractDate\n .LOCAL\n ],\n modifiers: {\n highlighted:\n isSwitch &&\n config.ChannelsDoorToDoor.includes(\n channel,\n )\n ? addDays(\n -7,\n )\n : 0,\n weekend: {\n daysOfWeek: [\n 0,\n 6,\n ],\n },\n },\n modifiersStyles,\n month: new Date(\n new Date().getFullYear(),\n new Date().getMonth(),\n ),\n }}\n keepFocus\n inputProps={{\n readOnly: true,\n onFocus: () => {\n this.handleChangeBool(\n energy,\n 'open',\n );\n this.handleChangeBoolSelect(\n energy,\n );\n },\n }}\n onDayChange={d => {\n handleDatePicker(\n d,\n energy,\n );\n this.handleDatePicker(\n d,\n energy,\n );\n }}\n hideOnDayClick={false}\n onDayPickerShow={() => {\n this.handleChangeBool(\n energy,\n 'open',\n );\n }}\n onDayPickerHide={() =>\n this.handleChangeBool(\n energy,\n 'close',\n )\n }\n //value={currentDate}\n />\n\n {isSwitch &&\n this.renderTextSwitchByCalendar(\n energy,\n energyTypes.length ===\n 2 &&\n energy === 'NG'\n ? 'right-hidden'\n : 'right',\n )}\n\n {this.renderTextWithCalendar(\n energy,\n )}\n </div>\n {setting[energy].hideDiv &&\n this.renderInfosDiv(energy)}\n {setting[energy].showSelect &&\n !isSwitch &&\n this.renderSelectTimeslot(\n energy,\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n {/* <div>\n {dropdownContractOptionSelection && dropdownContractOptionSelection.value === \"LATER\" &&\n (\n <div>\n <span>{Wording.contractDate.renderDescription}</span>\n <span>{this.renderTheoreticalDate21Days(energy)}</span>\n </div>\n )\n }\n </div>*/}\n </>\n );\n })}\n </div>\n );\n };\n\n renderSelectTimeslot = energy => {\n const { handleChangeTimeslotSelect, dateContract } = this.props;\n const ts = _.get(dateContract, `${energy}.timeslots`);\n if (!ts) {\n return null;\n } else if (ts.length === 0) {\n return (\n <p\n className={`date-container__date__calendars__${energy}-calendar__paragraph`}\n >\n {Wording.contractDate.noTimeslotLabel}\n </p>\n );\n }\n _.remove(ts, 'NONE');\n const timeslotOptions = Wording.contractDate.timeslots.values.filter(\n element => ts.find(val => val === element.value) !== undefined,\n );\n const value =\n Wording.contractDate.timeslots.values.find(\n e => e.value === dateContract[energy].timeslot,\n ) || null;\n const containerClassName = `date-container__date__calendars__${energy}-calendar__container___paragraph`;\n const paragraphClassName = `date-container__date__calendars__${energy}-calendar__paragraph`;\n let energyStr = '';\n if (energy === 'EL')\n energyStr = Wording.contractDate.timeslotSelectorElectricity;\n else if (energy === 'NG')\n energyStr = Wording.contractDate.timeslotSelectorGas;\n return (\n <div className={containerClassName}>\n <div className={paragraphClassName}>\n <span>{Wording.contractDate.timeslotSelectorTitle}</span>\n <div>\n <span>{`${Wording.contractDate.timeslotSelectorPrompt} :`}</span>\n <span>{energyStr}</span>\n </div>\n </div>\n <CustomSelect\n id=\"idCreceau\"\n options={timeslotOptions}\n value={value}\n placeholder={Wording.contractDate.placeholderSelector}\n handleChangeSelect={e => {\n handleChangeTimeslotSelect(e, energy);\n }}\n />\n </div>\n );\n };\n\n render() {\n const {\n dropdownContractOptions,\n dropdownContractOptionSelection,\n handleDropdownContract,\n situation,\n isCyclicalProductElec,\n isCyclicalProductGas,\n } = this.props;\n const { isLockedSituationSelect } = this.state;\n\n const Calender = (\n <Fragment>\n {this.renderCalendar()}\n {/* <div>\n {dropdownContractOptionSelection && dropdownContractOptionSelection.value === \"LATER\" &&\n (\n <div>\n <span>{Wording.contractDate.renderDescription}</span>\n <span>{this.renderTheoreticalDate(energy)}</span>\n </div>\n )\n }\n </div> */}\n <div className={'date-disclaimer'}>\n <span>{Wording.contractDate.displayText}</span>\n </div>\n </Fragment>\n );\n return (\n <div className=\"date-container\">\n {situation === Wording.situation.values.moved.value && Calender}\n {situation ===\n Wording.situation.values.changeSupplier.value && (\n <React.Fragment>\n <CustomSelect\n id=\"idChangeSupplierCustomSelect\"\n options={dropdownContractOptions}\n handleChangeSelect={handleDropdownContract}\n value={\n isCyclicalProductElec || isCyclicalProductGas\n ? undefined\n : dropdownContractOptionSelection\n }\n placeholder={\n isCyclicalProductElec || isCyclicalProductGas\n ? \"L'offre cyclique ne vous permet pas de choisir un mode de paiement\"\n : Wording.contractDate.placeholderSelector\n }\n disabled={\n isCyclicalProductGas ||\n isCyclicalProductElec ||\n isLockedSituationSelect\n }\n />\n\n {dropdownContractOptionSelection && Calender}\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nexport default DateContainer;\n","import DateConatiner from './DateContainer';\n\nexport default DateConatiner;\n","import CustomDatePicker from './CustomDatePicker';\nexport default CustomDatePicker;\n","import React from 'react';\nimport DateContainer from './DateContainer';\nimport { Modifier } from 'react-day-picker';\nimport { EEffectiveStartRanges, ETimeslots } from '../../utils/network/types';\nimport { SelectOption } from 'Types';\n\ntype DateContractEnergy = {\n date: number;\n month: number;\n year: number;\n timeslot: ETimeslots[] | null;\n};\n\ntype DateContract = {\n EL?: DateContractEnergy | Date;\n NG?: DateContractEnergy | Date;\n};\n\ntype Energy = 'EL' | 'NG';\n\ntype Status = 'disabled' | 'selected';\n\n/* OVERVIEW\n dateContract:\n Selected dates + timeslots\n energyTypes:\n ['EL' and /or 'NG']\n Selected energy types\n handleChangeTimeslotSelect:\n Timeslot selection handler\n handleDateCalendarOption: (energy: Energy, status: Status) => Modifier;\n Callback used to determine which days should be enabled/disabled in the calendar\n handleDatePicker:\n Date selection callback for selected energy types\n handleDropdownContract: any;\n Selection handler (in case situtation === 'MOVE_IN')\n situation:\n 'MOVE_IN' or 'SWITCH'\n Used to switch between layout (select / calendar)\n*/\n\ninterface IProps {\n channel: string;\n dateContract: DateContract;\n dropdownContractOptions: Array<SelectOption<EEffectiveStartRanges>>;\n dropdownContractOptionSelection: SelectOption<EEffectiveStartRanges> | null;\n energyTypes: Energy[];\n handleChangeTimeslotSelect: (\n opt: SelectOption<any>,\n energy: Energy,\n ) => void;\n handleDateCalendarOption: (energy: Energy, status: Status) => Modifier[];\n handleDatePicker: (d: Date, energy: Energy) => void;\n handleDropdownContract: (\n startTime: SelectOption<EEffectiveStartRanges>,\n ) => void;\n situation: string;\n isCyclicalProductElec: boolean;\n isCyclicalProductGas: boolean;\n}\n\nconst CustomDatePicker: React.FC<IProps> = (props: IProps) => {\n const isSwitch = props.situation === 'SWITCH';\n const switchType = props.dropdownContractOptionSelection\n ? props.dropdownContractOptionSelection.value\n : undefined;\n\n const nextProps = { ...props, isSwitch, switchType };\n\n return <DateContainer {...nextProps} />;\n};\n\nexport default CustomDatePicker;\n","import React, { FC, useState } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ninterface IProps {\n active: boolean;\n highlighted?: boolean;\n onToggle?: (nextToggleState: boolean) => void;\n text?: string;\n title?: string;\n titleHint?: string;\n wrapped?: boolean;\n}\n\nconst tileClassName = 'tile';\nconst activeTileClassName = `${tileClassName}-active`;\nconst highlightedTileClassName = `${tileClassName}-highlighted`;\nconst titleRowClassName = 'title-row';\nconst bodyClassName = 'body';\nconst textClassName = 'text';\nconst wrappedTextClassName = bcn([bodyClassName, `${textClassName}-wrapped`]);\nconst unwrappedTextClassName = bcn([\n bodyClassName,\n `${textClassName}-unwrapped`,\n]);\nconst wrapToggleClassName = bcn([bodyClassName, 'toggle']);\n\nconst Tile: FC<IProps> = (props: IProps) => {\n const { active, highlighted, onToggle, text, title, titleHint } = props;\n const [wrapped, setWrapped] = useState(true);\n let mainClassName = tileClassName;\n if (active) mainClassName = activeTileClassName;\n else if (!!highlighted) mainClassName = highlightedTileClassName;\n let textStatusClassName = wrappedTextClassName;\n if (!wrapped) textStatusClassName = unwrappedTextClassName;\n const wrapToggleStr = !!text ? (!!wrapped ? '+' : '-') : '';\n const cn = (...names: string[]) => {\n return bcn([mainClassName, ...names]);\n };\n const onClick = () => {\n if (!!onToggle) onToggle(!active);\n };\n const onWrap = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n setWrapped(!wrapped);\n event.stopPropagation();\n };\n return (\n <div className={mainClassName} onClick={onClick}>\n <div className={cn(titleRowClassName)}>\n <span>{title || ''}</span>\n {!!titleHint && <span>{titleHint}</span>}\n </div>\n <div className={cn(bodyClassName)}>\n {!!text && (\n <div className={cn(textStatusClassName)}>\n <span>{text}</span>\n </div>\n )}\n <div className={cn(wrapToggleClassName)} onClick={onWrap}>\n {wrapToggleStr}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Tile;\n","import Tile from './Tile';\nexport default Tile;\n","import CheckboxTile from './CheckboxTile';\nexport default CheckboxTile;\n","import React, { FC, ChangeEvent } from 'react';\nimport _ from 'lodash';\nimport { CustomCheckbox, Tile } from '..';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ninterface IProps {\n checked: boolean;\n distinctCheckbox?: boolean;\n onToggle: (checked: boolean) => void;\n text?: string;\n title?: string;\n titleHint?: string;\n}\n\nconst baseClassName = 'checkbox-tile';\n\nconst CheckboxTile: FC<IProps> = (props: IProps) => {\n const {\n checked,\n distinctCheckbox,\n onToggle,\n text,\n title,\n titleHint,\n } = props;\n const onCheck = (e: ChangeEvent<HTMLInputElement>) => {\n const toggled = !!_.get(e, 'target.value');\n onToggle(toggled);\n };\n return (\n <div className={baseClassName}>\n {!!distinctCheckbox && (\n <CustomCheckbox checked={checked} handleCheck={onCheck} />\n )}\n <Tile\n active={checked}\n onToggle={onToggle}\n text={text}\n title={title}\n titleHint={titleHint}\n />\n </div>\n );\n};\n\nexport default CheckboxTile;\n","function toIsc(str: string = '') {\n return str.replace(' ', String.fromCharCode(0x00a0));\n}\n\nfunction toColonHeading(str: string = '') {\n return toIsc(`${str} :`);\n}\n\nfunction removeSpaces(str: string = '') {\n return str.replace(/[ ]/g, '');\n}\n\nfunction removeWhitespaces(str: string = '') {\n return str.replace(/[\\s]/g, '');\n}\n\nexport { removeSpaces, removeWhitespaces, toColonHeading, toIsc };\n","import React, { ChangeEvent, FC, useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport { CoordsInputs, CustomInput, CustomRadio, PostalCodeSelect } from '..';\nimport WordingConstant from '../../utils/wording.json';\nimport { TAddress, ECivilities } from '../../utils/network/types';\nimport { getAddressStreetLabel } from '../../utils/network/helpers';\nimport {\n buildClassName as bcn,\n formatAddressString,\n} from '../../utils/helpers';\nimport { toIsc } from '../../utils/text';\n\ntype Coords = {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n};\n\ntype CoordsErrors = Partial<{\n civility: string;\n firstName: string;\n lastName: string;\n}>;\n\ninterface IProps {\n addressError?: string;\n initialAddress?: TAddress;\n initialCoords?: Coords;\n onAddressInputChange?: (address: string) => void;\n onCoordsChange?: (coords: Coords) => void;\n onIdenticalAddressToggle?: (isIdentical: boolean) => void;\n onPostalCodeSelection: (address: TAddress) => void;\n text: string;\n}\n\nconst Wording = WordingConstant.Components.AddressSelect;\nconst baseClassName = 'address-select';\nconst checkboxesClassName = bcn([baseClassName, 'checkboxes']);\nconst inputsClassName = bcn([baseClassName, 'inputs']);\nconst addressClassName = bcn([inputsClassName, 'address']);\n\nconst AddressSelect: FC<IProps> = (props: IProps) => {\n const {\n addressError,\n initialCoords,\n onAddressInputChange,\n onCoordsChange,\n onIdenticalAddressToggle,\n onPostalCodeSelection,\n text,\n } = props;\n const [initialAddress, setInitialAddress] = useState<TAddress | null>(null);\n const [address, setAddress] = useState<string>('');\n const [city, setCity] = useState<string | null>(null);\n const [isIdentical, setIdentical] = useState<boolean>(true);\n\n const [coords, setCoords] = useState<Coords | null>(null);\n\n const [coordsErrors, setCoordsErrors] = useState<CoordsErrors | null>(null);\n\n useEffect(() => {\n if (props.initialAddress) {\n setInitialAddress(props.initialAddress);\n setAddress(getAddressStreetLabel(props.initialAddress));\n\n if (props.initialAddress.townName) {\n setCity(props.initialAddress.townName);\n }\n }\n\n setIdentical(\n !(\n props.initialAddress !== undefined &&\n props.initialAddress !== null\n ),\n );\n\n if (!!onCoordsChange) {\n setCoords(\n initialCoords || {\n civility: ECivilities.MR,\n firstName: '',\n lastName: '',\n },\n );\n\n setCoordsErrors({});\n }\n }, []);\n\n const onAddressInput = (e: ChangeEvent<HTMLInputElement>) => {\n const nextInput = _.get(e, 'target.value', '');\n setAddress(formatAddressString(nextInput));\n if (!!onAddressInputChange) onAddressInputChange(nextInput);\n };\n const onToggle = (toggled: boolean) => {\n setIdentical(toggled);\n if (!toggled) setInitialAddress(null);\n if (!!onIdenticalAddressToggle) onIdenticalAddressToggle(toggled);\n setAddress('');\n setCity(null);\n };\n const onCoordsInput = (input: Coords) => {\n const nextErrors: CoordsErrors = {};\n const firstNameChanged: boolean =\n !coords || !_.isEqual(coords.firstName, input.firstName);\n const lastNameChanged: boolean =\n !coords || !_.isEqual(coords.lastName, input.lastName);\n if (firstNameChanged && input.firstName.length <= 1) {\n nextErrors.firstName =\n WordingConstant.AdminSubscriptionContainer.ClientData.errors.firstNameValidity;\n }\n if (lastNameChanged && input.lastName.length <= 1) {\n nextErrors.lastName =\n WordingConstant.AdminSubscriptionContainer.ClientData.errors.lastNameValidity;\n }\n setCoords(input);\n setCoordsErrors(nextErrors);\n if (!!onCoordsChange) onCoordsChange(input);\n };\n return (\n <div className={baseClassName}>\n <span>{toIsc(text)}</span>\n <div className={checkboxesClassName}>\n <CustomRadio\n checked={isIdentical}\n handleCheck={() => {\n onToggle(true);\n }}\n text={Wording.yes}\n value={Wording.yes}\n />\n <CustomRadio\n checked={!isIdentical}\n handleCheck={() => {\n onToggle(false);\n }}\n text={Wording.no}\n value={Wording.no}\n />\n </div>\n {!isIdentical && (\n <div className={inputsClassName}>\n {!!coords && (\n <CoordsInputs\n errors={coordsErrors || undefined}\n onInputChange={onCoordsInput}\n values={coords}\n />\n )}\n <div className={addressClassName}>\n <CustomInput\n error={addressError}\n onInputChange={onAddressInput}\n text={Wording.address}\n value={address}\n />\n <PostalCodeSelect\n initialAddress={\n !!initialAddress ? initialAddress : undefined\n }\n onSelection={(address: TAddress) => {\n setCity(address.townName || null);\n onPostalCodeSelection(address);\n }}\n text={Wording.postalCode}\n />\n <CustomInput\n disabled={true}\n text={Wording.city}\n value={city || ''}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default AddressSelect;\n","import AddressSelect from './AddressSelect';\nexport default AddressSelect;\n","import React, { FC } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ninterface IProps {\n text: string;\n title: string;\n}\n\nconst baseClassName: string = 'custom-error';\nconst titleClassName: string = bcn([baseClassName, 'title']);\nconst textClassName: string = bcn([baseClassName, 'text']);\n\nconst CustomError: FC<IProps> = (props: IProps) => {\n const { text, title } = props;\n return (\n <div className={baseClassName}>\n <span className={titleClassName}>{title}</span>\n <p className={textClassName}>{text}</p>\n </div>\n );\n};\n\nexport default CustomError;\n","import CustomError from './CustomError';\nexport default CustomError;\n","import React, { FC, Fragment, useEffect, CSSProperties } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\ninterface IProps {\n background?: boolean;\n centered?: boolean;\n children: JSX.Element[] | JSX.Element;\n handleClose?: () => void;\n id?: string;\n show?: boolean;\n showCloseButton?: boolean;\n}\n\nconst Wording = WordingConstant.Common;\nconst baseClassName = 'custom-overlay';\nconst hiddenClassName = bcn([baseClassName, 'hidden'], '--');\nconst centeredClassName = bcn([baseClassName, 'centered'], '--');\nconst windowClassName = bcn([baseClassName, 'window']);\nconst contentClassName = bcn([windowClassName, 'content']);\nconst backgroundClassName = bcn([baseClassName, 'background']);\nconst closeButtonClassName = bcn([contentClassName, 'close-button']);\n\nconst CustomOverlay: FC<IProps> = (props: IProps) => {\n const {\n centered,\n children,\n handleClose,\n id,\n show,\n showCloseButton,\n } = props;\n let { background } = props;\n if (background === undefined) background = true;\n useEffect(() => {\n if (!!show && !!id && !centered) {\n const el: HTMLElement | null = document.getElementById(id);\n if (!!el) {\n const elHeight: number = el.getBoundingClientRect().height;\n const winHeight: number = window.innerHeight;\n el.scrollIntoView({\n behavior: 'smooth',\n block: winHeight < elHeight ? 'start' : 'center',\n });\n }\n }\n }, [show]);\n let mainClassName = baseClassName;\n if (!show) mainClassName = hiddenClassName;\n else if (!!centered) mainClassName = centeredClassName;\n return (\n <div className={mainClassName}>\n {show && (\n <Fragment>\n {background && <div className={backgroundClassName} />}\n <div className={windowClassName}>\n <div className={contentClassName} id={id}>\n {showCloseButton && (\n <span\n className={closeButtonClassName}\n onClick={handleClose}\n role=\"button\"\n tabIndex={0}\n >\n {Wording.popup.closeButton}\n </span>\n )}\n {children}\n </div>\n </div>\n </Fragment>\n )}\n </div>\n );\n};\n\nexport default CustomOverlay;\n","import CustomOverlay from './CustomOverlay';\nexport default CustomOverlay;\n","import Separator from './Separator';\nexport default Separator;\n","import React from 'react';\n\nconst baseClassName = 'section-separator';\n\nconst Separator = () => (\n <div className={baseClassName}>\n <div />\n </div>\n);\n\nexport default Separator;\n","import CloseButton from './CloseButton';\nexport default CloseButton;\n","import React, { FC } from 'react';\n\ntype Props = {\n onClick: () => void;\n};\n\nconst baseClassName = 'close-button';\nconst greyZone = 'grey-area';\nconst closeText = 'X';\n\nconst CloseButton: FC<Props> = (props: Props) => {\n const { onClick } = props;\n return (\n <span className={baseClassName}>\n <div\n className={greyZone}\n onClick={() => {\n onClick();\n }}\n >\n {closeText}\n </div>\n </span>\n );\n};\n\nexport default CloseButton;\n","import React, { FC } from 'react';\nimport { buildClassName as bcn } from '../../utils/helpers';\n\ntype Props = {\n text?: string;\n textAlignment?: 'left' | 'right';\n toggled: boolean;\n};\n\nconst baseClassName: string = 'toggle-indicator';\nconst leftClassName: string = bcn([baseClassName, 'left'], '--');\nconst rightClassName: string = bcn([baseClassName, 'right'], '--');\nconst centeredClassName: string = bcn([baseClassName, 'centered', '--']);\n\nconst ToggleIndicator: FC<Props> = (props: Props) => {\n const { text, textAlignment, toggled } = props;\n const classNames: string[] = [baseClassName];\n const isLeft: boolean = !!textAlignment && textAlignment === 'left';\n if (!!text && !isLeft) classNames.push(rightClassName);\n else if (!!text && isLeft) classNames.push(leftClassName);\n else classNames.push(centeredClassName);\n return (\n <div className={classNames.join(' ')}>\n {!!text && isLeft && <span>{text}</span>}\n <div className={!!toggled ? 'on' : 'off'} />\n {!!text && !isLeft && <span>{text}</span>}\n </div>\n );\n};\n\nexport default ToggleIndicator;\n","import ToggleIndicator from './ToggleIndicator';\nexport default ToggleIndicator;\n","import React, { ChangeEvent, FC } from 'react';\nimport _ from 'lodash';\nimport { SelectOption } from 'Types';\nimport { CustomInput, CustomSelect } from '../../components';\nimport { ECivilities } from '../../utils/network/types';\nimport WordingConstant from '../../utils/wording.json';\n\ntype Errors = Partial<{\n civility: string;\n firstName: string;\n lastName: string;\n}>;\n\ntype Values = {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n};\n\ntype Props = {\n errors?: Errors;\n onInputChange: (input: Values) => void;\n values: Values;\n};\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.ClientData;\nconst baseClassName: string = 'coords-inputs';\nconst firstNameText: string = `${Wording.inputs.firstName}`;\nconst lastNameText: string = `${Wording.inputs.lastName}`;\nconst civilStatuses: Array<SelectOption<ECivilities>> = [\n {\n id: Wording.civilStatuses.mr,\n label: Wording.civilStatuses.mr,\n value: ECivilities.MR,\n },\n {\n id: Wording.civilStatuses.mme,\n label: Wording.civilStatuses.mme,\n value: ECivilities.MRS,\n },\n {\n id: Wording.civilStatuses.ms,\n label: Wording.civilStatuses.ms,\n value: ECivilities.MS,\n },\n];\n\nconst CoordsInputs: FC<Props> = (props: Props) => {\n const { errors, onInputChange, values } = props;\n const handleInputChange = (updates: Partial<Values>) => {\n const input: Values = _.merge({}, values, { ...updates });\n onInputChange(input);\n };\n const handleCivilitySelection = (civility: SelectOption<ECivilities>) => {\n handleInputChange({ civility: civility.value });\n };\n const handleFirstNameInput = (event: ChangeEvent<HTMLInputElement>) => {\n handleInputChange({ firstName: event.target.value });\n };\n const handleLastNameInput = (event: ChangeEvent<HTMLInputElement>) => {\n handleInputChange({ lastName: event.target.value });\n };\n const civilityValue =\n _.find(\n civilStatuses,\n (status: SelectOption<ECivilities>) =>\n status.value === values.civility,\n ) || civilStatuses[0];\n return (\n <div className={baseClassName}>\n <CustomSelect\n error={(!!errors && errors.civility) || undefined}\n handleChangeSelect={handleCivilitySelection}\n options={civilStatuses}\n text={Wording.civilStatus}\n value={civilityValue}\n />\n <CustomInput\n error={(!!errors && errors.firstName) || undefined}\n onInputChange={handleFirstNameInput}\n text={firstNameText}\n value={values.firstName}\n />\n <CustomInput\n error={(!!errors && errors.lastName) || undefined}\n onInputChange={handleLastNameInput}\n text={lastNameText}\n value={values.lastName}\n />\n </div>\n );\n};\n\nexport default CoordsInputs;\n","import CoordsInputs from './CoordsInputs';\nexport default CoordsInputs;\n","import React from 'react';\nimport resources from '../../utils/resources';\nimport { ECustomerType } from '../../utils/enums';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.Components.TimelineStatus;\n\nexport type DisplayColor =\n | 'yellow'\n | 'green'\n | 'red'\n | 'orange'\n | 'grey'\n | 'red-pending';\n\nexport type SegmentsColors = Array<{\n [key: string]: DisplayColor | undefined;\n}>;\n\nexport type SegmentsLabels = {\n [key: string]: string[];\n};\n\nconst getColor = (status: string, isPro: boolean, segmentIndx: number) => {\n const defaultColor = 'grey';\n\n const typeProp = !isPro ? 'part' : 'pro';\n\n const colors = Wording[typeProp].colors as SegmentsColors;\n return !!colors[segmentIndx] && !!colors[segmentIndx][status]\n ? colors[segmentIndx][status]\n : defaultColor;\n};\n\nconst getLabels = (status: string, isPro: boolean) => {\n const typeProp = !isPro ? 'part' : 'pro';\n\n const labels = Wording[typeProp].labels as SegmentsLabels;\n return labels[status];\n};\n\nexport const getDataSegment = (status: string, isPro: boolean): any[] => {\n const prepare: any[] = [];\n const loopArr = !isPro ? [0, 1, 2] : [0, 1];\n\n const lastColor = getColor(status, isPro, loopArr[loopArr.length - 1]);\n\n if (lastColor === 'green' || lastColor === 'orange') {\n loopArr.forEach(idx => {\n if (idx === loopArr.length - 1) prepare[idx] = lastColor;\n else prepare[idx] = 'green';\n });\n } else {\n loopArr.forEach(idx => {\n prepare[idx] =\n getColor(status, isPro, idx + 1) === 'green'\n ? 'green'\n : (getColor(status, isPro, idx) as DisplayColor);\n });\n }\n\n prepare.push(getLabels(status, isPro));\n return prepare;\n};\n\nconst getImageByColor = (color: DisplayColor) => {\n switch (color) {\n case 'green':\n return resources['ic-timeline-status-ok'];\n\n case 'orange':\n return resources['ic-timeline-status-error'];\n\n case 'red':\n return resources['ic-timeline-status-abandonned'];\n\n case 'yellow':\n return resources['ic-timeline-status-waiting'];\n\n default:\n return null;\n }\n};\n\nconst SegmentIcon: React.FC<{ color: DisplayColor }> = ({ color }) => {\n const cur = getImageByColor(color);\n\n return cur ? <img src={cur} alt={color} /> : null;\n};\n\nexport const Segment: React.FC<{\n color: string | DisplayColor;\n borderRadius?: boolean;\n img?: string;\n radius?: 'start' | 'end';\n}> = ({ color, radius, borderRadius }) => (\n <div className={`segment ${radius ? `segment-radius-${radius}` : ''}`}>\n <div className=\"icon\">\n <SegmentIcon color={color as DisplayColor} />\n </div>\n <div\n className={`color color-${color} ${\n borderRadius ? 'color-border' : ''\n }`}\n >\n {radius && <div className={`radius-${radius} color-${color}`} />}\n </div>\n\n {color === 'green' && radius === 'end' && (\n <div className=\"success-icon\">\n <span />\n <img src={resources['ic-timeline-status-logo']} alt=\"logo\" />\n <p>{Wording.welcome}</p>\n </div>\n )}\n </div>\n);\n\nexport const Step: React.FC<{\n label: string;\n date?: string;\n isLast?: boolean;\n}> = ({ label, date, isLast }) => (\n <div className=\"step\">\n {date && (\n <p className={`step__date ${isLast ? 'step__date-last' : ''}`}>\n {date}\n </p>\n )}\n <p className=\"step__label\">{label}</p>\n <span />\n </div>\n);\n","import { TAdhoc, TContract, TEPInvoice } from 'Models';\nimport React, { useState } from 'react';\nimport {\n EBillingMode,\n ECustomerType,\n ETransactionStatus,\n} from '../../utils/enums';\nimport { getFormattedDate } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.Components.TimelineStatus;\n\nimport { Segment, Step, getDataSegment } from './Segment';\n\ninterface IProps {\n piece?: TEPInvoice;\n customerType: ECustomerType;\n contract: TContract;\n}\n\nconst TimelineStatus: React.FC<IProps> = ({\n contract,\n piece,\n customerType,\n}) => {\n const [openDetails, setOpen] = useState<'up' | 'down'>('down');\n\n const { billingMode, contractStatus } = contract;\n const { effectiveStartDate, subscriptionDate } = contract;\n\n const isPro = Boolean(\n customerType === ECustomerType.PROFESSIONAL &&\n billingMode &&\n billingMode === EBillingMode.CYCLICAL_BILLING,\n );\n\n const handleOpen = () => setOpen(openDetails === 'up' ? 'down' : 'up');\n\n const buildDates = (): Array<string | undefined> => {\n const activContract = (() => {\n /*const proce =\n piece &&\n piece.processusList &&\n piece.processusList.find(\n pr =>\n pr.nature === 'contractActivation' &&\n pr.status === 'terminated',\n );\n\n const tr =\n proce &&\n proce.transactions.find(\n tr => tr.status === ETransactionStatus.SUCCESS,\n );\n */\n // return tr && tr.dueDate;\n return piece && piece.invoicing_period_end_date;\n })();\n const prepapre = isPro\n ? [subscriptionDate, activContract, effectiveStartDate]\n : [subscriptionDate, activContract, undefined, effectiveStartDate];\n\n const prepare = prepapre.map(dt => (!!dt ? getFormattedDate(dt) : dt));\n\n if (!prepare[2]) {\n prepare[2] = 'Activation en cours';\n }\n return prepare;\n };\n\n const dates = buildDates();\n\n const renderIndividual = () => {\n const [first, second, third, labels] = getDataSegment(\n contractStatus,\n false,\n );\n\n const isNextFull = {\n check: second === 'grey' || second === 'red-pending',\n color: second,\n };\n\n const secondLabel =\n first === 'orange' ? 'Erreur 1er paiement' : '1er paiement reçu';\n\n return {\n component: (\n <>\n <Step label=\"Souscription\" date={dates[0]} />\n <Segment radius=\"start\" color={first} />\n <Step label={secondLabel} date={dates[1]} />\n\n {isNextFull.check ? (\n <>\n <Segment color={isNextFull.color} />\n <Segment borderRadius color={isNextFull.color} />\n </>\n ) : (\n <>\n <Segment color={second} />\n <Step label=\"Activation du contrat\" date={''} />\n <Segment radius=\"end\" color={third} />\n <Step\n isLast\n date={dates[3]}\n label=\"Contrat activé\"\n />\n </>\n )}\n </>\n ),\n labels,\n };\n };\n\n const renderProfessional = () => {\n const [first, second, labels] = getDataSegment(contractStatus, true);\n\n const isNextFull = {\n check: second === 'grey' || second === 'red-pending',\n color: second,\n };\n return {\n component: (\n <>\n <Step label=\"Souscription\" date={dates[0]} />\n <Segment radius=\"start\" color={first} />\n <Step label=\"Activation du contrat\" date={dates[1]} />\n {isNextFull.check ? (\n <Segment\n borderRadius={isNextFull.check}\n color={isNextFull.color}\n />\n ) : (\n <>\n <Segment radius=\"end\" color={second} />\n <Step\n isLast\n date={dates[2]}\n label=\"Contrat activé\"\n />\n </>\n )}\n </>\n ),\n labels,\n };\n };\n\n const renderByType = () =>\n !isPro ? renderIndividual() : renderProfessional();\n\n const { component, labels } = renderByType();\n\n return (\n <section className=\"timeline-status\">\n <div className={`timeline ${isPro ? 'timeline-small' : ''}`}>\n {component}\n </div>\n <div className=\"timeline-status__details\">\n <h4 onClick={handleOpen}>\n {Wording.details.title}{' '}\n <i className={`arrow ${openDetails}`}></i>\n </h4>\n\n {openDetails === 'up' && (\n <div>\n <ul className=\"ul-dates\">\n {labels.map((lb: string, idx: number) => {\n const index = labels.length - 1 - idx;\n const item = dates[index];\n\n return (\n <li\n className={`${\n idx === 0 ? 'first' : ''\n }`}\n key={idx}\n >\n {item ? item : '-'}\n </li>\n );\n })}\n </ul>\n <ul className=\"ul-labels\">\n {labels.map((lb: string, idx: number) => (\n <li\n key={idx}\n className={`${idx === 0 ? 'first' : ''}`}\n >\n {lb}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </section>\n );\n};\n\nexport default TimelineStatus;\n","import TimelineStatus from './TimelineStatus';\n\nexport default TimelineStatus;\n","import React, { FormEvent, useState } from 'react';\n\nimport {\n CardCvcElement,\n CardExpiryElement,\n CardNumberElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js';\n\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\nimport config from '../../utils/config';\nimport { log } from '../../utils/helpers';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { LoadingSpinner } from '../../libraries/withLoader';\n\nconst wording = WordingConstant.PaymentCBModal;\n\ntype StripeFormProps = {\n clientSecret: string;\n amount: string;\n clientName: string;\n onFormValidate: (sucess: boolean, errMsg?: string) => void;\n handleClose: () => void;\n};\n\nconst StripeForm = ({\n clientSecret,\n amount,\n onFormValidate,\n clientName,\n handleClose,\n}: StripeFormProps) => {\n const [isLoading, setIsLoading] = useState(false);\n const elements = useElements();\n const stripe = useStripe();\n\n const onValidateForm = async (e: FormEvent) => {\n e.preventDefault();\n\n if (!stripe || !elements) {\n if (onFormValidate) {\n onFormValidate(false, wording.stripeElementError);\n }\n return;\n }\n const element = elements.getElement(CardNumberElement);\n if (!element) {\n if (onFormValidate) {\n onFormValidate(false, wording.elementError);\n }\n return;\n }\n\n setIsLoading(true);\n const result = await stripe.confirmCardPayment(clientSecret, {\n payment_method: {\n card: element,\n billing_details: {\n name: clientName,\n },\n },\n });\n setIsLoading(false);\n log('STRIPE ANSWER ===>', result);\n\n if (result.error) {\n if (onFormValidate) onFormValidate(false, result.error.message);\n } else if (onFormValidate) onFormValidate(true);\n };\n\n const renderFakeCard = (cardNumber: string, title: string) => {\n const [isClicked, setisClicked] = useState(false);\n\n const handleClickCard = () => {\n setisClicked(true);\n setTimeout(() => setisClicked(false), 1600);\n };\n\n return (\n <div>\n {title}:\n <CopyToClipboard text={cardNumber} onCopy={handleClickCard}>\n <button type=\"button\">\n {cardNumber}\n <div className=\"clicked-fake-card-label\">\n {isClicked && <span>Copié</span>}\n <img\n alt=\"clipboard\"\n src={resources['ic-copy-clipboard']}\n />\n </div>\n </button>\n </CopyToClipboard>\n </div>\n );\n };\n\n const isDebugMode = config.ENV === 'PREPRODUCTION';\n\n return (\n <div className=\"stripe-form-container\">\n <form className=\"form-content\" onSubmit={onValidateForm}>\n <div className=\"logo-container\">\n <img\n src={resources['ic-logo-login']}\n alt=\"ic-logo-wekiwi\"\n width={250}\n />\n </div>\n\n <div className=\"stripe-card-container\">\n <div>\n <span> {wording.label_card_number} </span>\n <CardNumberElement className=\"stripe-card-number-field\" />\n </div>\n\n <div>\n <span> {wording.label_card_expiry} </span>\n <CardExpiryElement className=\"stripe-card-expiry-field\" />\n </div>\n\n <div>\n <span> {wording.label_card_cvc} </span>\n <CardCvcElement className=\"stripe-card-cvc-field\" />\n </div>\n </div>\n\n {isDebugMode && (\n <div className=\"stripe-card-debug\">\n <span>{wording.debugLabel}</span>\n {renderFakeCard(\n '4242424242424242',\n 'Paiement direct avec réussite',\n )}\n {renderFakeCard(\n '4000000000003220',\n 'Paiement 3DSecure avec réussite',\n )}\n {renderFakeCard(\n '4000008400001280',\n 'Paiement 3DSecure avec erreur ',\n )}\n </div>\n )}\n\n <div className=\"button-container\">\n <button\n onClick={handleClose}\n type=\"button\"\n className=\"button-cancel\"\n >\n {wording.button_cancel}\n </button>\n <button type=\"submit\" className=\"button-validate\">\n {wording.button_validate}: {amount}€\n </button>\n </div>\n\n {isLoading && (\n <div className=\"loader\">\n <LoadingSpinner />\n </div>\n )}\n </form>\n </div>\n );\n};\n\nexport default StripeForm;\n","import StripeForm from './StripeForm';\n\nexport default StripeForm;\n","import Group from './Group';\n\nexport default Group;\n","import React from 'react';\nimport filter from 'lodash/filter';\n\nimport CustomSelect from '../../CustomSelect';\nimport { IProps } from '../../CustomSelect/CustomSelect';\nimport { TSchemaProps, SelectOption } from 'Types';\n\nimport {\n isFullAuthorization,\n isLimitedAuthorization,\n isMixedAuthorization,\n getInitialGroup,\n addSelectAllToSelect,\n} from '../../../utils/helpers';\nimport { isArray } from 'lodash';\n\nexport interface IGroupProps extends IProps {\n withSelectAll?: boolean;\n schemaProps: TSchemaProps;\n}\n\nexport type GroupOptions = Array<SelectOption<string>>;\n\nconst Group: React.FC<IGroupProps> = ({ options, schemaProps, ...props }) => {\n let newOption: GroupOptions = [];\n const propsSelect = { ...props, placeholder: ' ' };\n\n if (isFullAuthorization(schemaProps)) {\n newOption = options as GroupOptions;\n }\n\n if (isLimitedAuthorization(schemaProps)) {\n propsSelect.disabled = true;\n propsSelect.isMulti = false;\n }\n\n if (isMixedAuthorization(schemaProps)) {\n newOption = filter(\n options,\n ({ value }: SelectOption<string>) =>\n getInitialGroup(value) ===\n getInitialGroup(schemaProps.currentGroup),\n ) as GroupOptions;\n }\n\n if (propsSelect.withSelectAll) {\n newOption = addSelectAllToSelect(newOption);\n }\n\n return (\n <CustomSelect\n options={newOption}\n {...propsSelect}\n handleChangeSelect={(values: any) => {\n if (\n isArray(values) &&\n values[0] &&\n values[0].value === 'select-all'\n ) {\n propsSelect.handleChangeSelect(newOption);\n return;\n }\n propsSelect.handleChangeSelect(values);\n }}\n value={\n propsSelect.value &&\n propsSelect.value.length === newOption.length\n ? newOption[0]\n : propsSelect.value\n }\n />\n );\n};\n\nexport default Group;\n","import React from 'react';\nimport { EActionMode, EGroups } from '../../../utils/enums';\nimport { CustomRadio, CustomCheckbox, CustomToggle } from '../..';\n\nimport WordingConstant from '../../../utils/wording.json';\nimport { IAccessItem, IItem, ISubMenuItem } from './AuthorizationSchemaGroup';\n\nconst Wording = WordingConstant.AuthorizationSchemaGroup;\n\nexport interface IAuthSchemaItemProps {\n item: IItem;\n handleSetSubMenu: any;\n handleSetActionMod: any;\n handleSetCheckbox: any;\n handleSetAccess: (props: IAccessItem) => void;\n itemValues: {\n isChecked: boolean;\n mode: string;\n subMenus: any;\n accessItem: any;\n };\n}\n\nconst AuthSchemaItem: React.FC<IAuthSchemaItemProps> = ({\n item,\n handleSetCheckbox,\n handleSetActionMod,\n handleSetSubMenu,\n handleSetAccess,\n itemValues: { isChecked, mode, subMenus, accessItem },\n}) => {\n const renderReadOnlyType = () => (\n <div className=\"authorization-schema-item__read-only\">\n {Wording.accessItems.map(({ value, label }) => {\n const readOnlyItems = (Wording.subMenuItems as {\n [key: string]: ISubMenuItem[];\n })[item.uId].filter((elm: any) => elm.readeOnly);\n\n const current = readOnlyItems[0];\n\n const isChecked =\n accessItem[current.uId][value] === EGroups.FULL;\n\n return (\n <CustomCheckbox\n key={value}\n text={label}\n handleCheck={() => {\n handleSetAccess({\n uIdItem: item.uId,\n uIdMenu: current.uId,\n type: value,\n value: isChecked\n ? EGroups.LIMITED\n : EGroups.FULL,\n });\n }}\n checked={isChecked}\n />\n );\n })}\n </div>\n );\n\n const renderByUIdOfItem = () => {\n return (\n <div className=\"authorization-schema-item__sub-menu-items\">\n {(Wording.subMenuItems as { [key: string]: ISubMenuItem[] })[\n item.uId\n ].map((subMenuItem, idx) => (\n <div\n key={idx}\n className=\"authorization-schema-item__sub-menu-items__item-menu\"\n >\n <CustomToggle\n checked={\n subMenus[subMenuItem.uId]\n ? subMenus[subMenuItem.uId] !== undefined\n : false\n }\n text={subMenuItem.label}\n handleClick={() => {\n handleSetSubMenu({\n uIdItem: item.uId,\n subMenuItem,\n });\n }}\n handleCheck={() => {}}\n value={subMenuItem.uId}\n />\n\n <div>\n {Wording.accessItems.map(\n ({ value, label, access }) => {\n const isChecked =\n accessItem[subMenuItem.uId][value] ===\n EGroups.FULL;\n\n const condition = access\n ? access.includes(subMenuItem.uId)\n : true;\n\n if (condition) {\n return (\n <CustomCheckbox\n key={value}\n text={label}\n handleCheck={() => {\n handleSetAccess({\n uIdItem: item.uId,\n uIdMenu:\n subMenuItem.uId,\n type: value,\n value: isChecked\n ? EGroups.LIMITED\n : EGroups.FULL,\n });\n }}\n checked={isChecked}\n />\n );\n }\n\n return null;\n },\n )}\n </div>\n </div>\n ))}\n </div>\n );\n };\n\n const renderByActionType = () => {\n switch (mode) {\n case EActionMode.FULL:\n return renderByUIdOfItem();\n\n case EActionMode.READ_ONLY:\n return renderReadOnlyType();\n\n default:\n break;\n }\n };\n\n return (\n <div className=\"authorization-schema-item\">\n <CustomCheckbox\n text={item.label}\n handleCheck={() => handleSetCheckbox(item)}\n checked={isChecked}\n />\n\n {isChecked && (\n <div className=\"authorization-schema-item__modes\">\n {Wording.actionModes.map((aMod, idx) => (\n <CustomRadio\n key={idx}\n text={aMod.label}\n handleCheck={() =>\n handleSetActionMod({\n uId: item.uId,\n value: aMod.value,\n })\n }\n checked={mode === aMod.value}\n value={aMod.value || EActionMode.FULL}\n />\n ))}\n </div>\n )}\n\n {isChecked && renderByActionType()}\n </div>\n );\n};\n\nexport default AuthSchemaItem;\n","import React, { useState, useEffect } from 'react';\nimport keys from 'lodash/keys';\nimport WordingConstant from '../../../utils/wording.json';\nimport CustomCheckbox from '../../CustomCheckbox';\n\nimport { EActionMode, EGroups } from '../../../utils/enums';\nimport AuthSchemaItem from './AuthSchemaItem';\nimport { TAuthorizationSchemaSubMenu } from '../../../_actions/createGroup.actions';\n\nconst Wording = WordingConstant.AuthorizationSchemaGroup;\n\nconst sortingAlg = (a: any, b: any) => (a.rang > b.rang ? 1 : -1);\n\ninterface IAuthSchemaMenuObject {\n id: string;\n label: string;\n root: string;\n groupMode: string;\n subGroupMode: string;\n actionMode: string;\n userLimited?: string;\n rang?: number;\n}\n\nexport interface IAuthSchemaObject {\n rang?: number;\n id: string;\n label: string;\n subMenu: IAuthSchemaMenuObject[];\n}\n\nexport interface IItem {\n label: string;\n uId: string;\n rang: number;\n}\n\ninterface IActionModesChange {\n uId: string;\n value: string;\n}\n\ninterface ISubMenusChange {\n uIdItem: string;\n subMenuItem: ISubMenuItem;\n}\n\nexport interface IAccessItem {\n uIdItem: string;\n uIdMenu: string;\n type: string;\n value: string;\n}\n\nexport interface ISubMenuItem extends IItem {\n root: string;\n}\n\nexport interface IAuthorizationSchemaGroupProps {\n getAuthorizationSchema: React.Dispatch<any>;\n}\n\ninterface IItemStateObject {\n rang: number;\n label: string;\n}\n\ninterface IItemState {\n [key: string]: IItemStateObject[];\n}\n\ninterface IActionModeState {\n [key: string]: string;\n}\n\ninterface ISubMenuState {\n [key: string]: { [key: string]: ISubMenuItem };\n}\n\ninterface IAccessStateObject {\n groupMode: string;\n subGroupMode: string;\n userLimited?: string;\n}\n\ninterface IAccessState {\n [key: string]: { [key: string]: IAccessStateObject };\n}\n\nconst AuthorizationSchemaGroup: React.FC<IAuthorizationSchemaGroupProps> = ({\n getAuthorizationSchema,\n}) => {\n const [isSelectedAll, setSelectAll] = useState<boolean>(false);\n\n const [itemsState, setItemValue] = useState<IItemState>({});\n const [actionsModesState, setModesValue] = useState<IActionModeState>({});\n const [subMenuState, setSubMenuValue] = useState<ISubMenuState>({});\n const [accessState, setAccessState] = useState<IAccessState>({});\n\n useEffect(() => {\n const actModes: IActionModeState = {};\n const subMn: ISubMenuState = {};\n const access: IAccessState = {};\n\n Wording.renderItems.forEach(({ uId }) => {\n actModes[uId] = EActionMode.FULL;\n subMn[uId] = {};\n access[uId] = {};\n\n (Wording.subMenuItems as { [key: string]: ISubMenuItem[] })[\n uId\n ].forEach(elm => {\n const prepareAccess: any = {};\n\n Wording.accessItems.forEach(ai => {\n if (ai.access) {\n if (ai.access.includes(elm.uId)) {\n prepareAccess[ai.value] = EGroups.LIMITED;\n }\n } else {\n prepareAccess[ai.value] = EGroups.LIMITED;\n }\n });\n\n access[uId][elm.uId] = prepareAccess;\n });\n });\n\n setModesValue(actModes);\n setSubMenuValue(subMn);\n setAccessState(access);\n }, []);\n\n useEffect(() => {\n if (keys(itemsState).length !== 0) {\n const build = buildAuthorizationSchema();\n getAuthorizationSchema(build);\n }\n }, [itemsState, subMenuState, accessState, actionsModesState]);\n\n const buildAuthorizationSchema = () => {\n const prepareArr: any = [];\n keys(itemsState).forEach(itemKey => {\n const ItemElm: any = itemsState[itemKey];\n const prepareObject: IAuthSchemaObject = {\n rang: ItemElm.rang,\n id: '',\n label: ItemElm.label,\n subMenu: [],\n };\n\n keys(subMenuState[itemKey]).forEach(menuKey => {\n const MenuItem = subMenuState[itemKey][menuKey];\n const AccessItem = accessState[itemKey][menuKey];\n const ActionItem = actionsModesState[itemKey];\n\n const prepareMenuObject: IAuthSchemaMenuObject = {\n rang: MenuItem.rang,\n id: '',\n label: MenuItem.label,\n root: MenuItem.root,\n groupMode: AccessItem.groupMode,\n subGroupMode: AccessItem.subGroupMode,\n actionMode: ActionItem,\n };\n\n if (AccessItem.userLimited) {\n prepareMenuObject.userLimited = AccessItem.userLimited;\n }\n\n prepareObject.subMenu.push(prepareMenuObject);\n });\n\n prepareArr.push({\n ...prepareObject,\n subMenu: prepareObject.subMenu\n .sort(sortingAlg)\n .map((elm, idx) => {\n const prepare: TAuthorizationSchemaSubMenu = {\n id: (idx + 1).toString(),\n label: elm.label,\n root: elm.root,\n groupMode: elm.groupMode,\n subGroupMode: elm.subGroupMode,\n actionMode: elm.actionMode,\n };\n\n if (elm.userLimited) {\n prepare.userLimited = elm.userLimited;\n }\n\n return prepare;\n }),\n });\n });\n\n return prepareArr.sort(sortingAlg).map((elm: any, idx: number) => ({\n id: idx + 1,\n label: elm.label,\n subMenu: elm.subMenu,\n }));\n };\n\n const handleSetItemValue = ({ uId, label, rang }: IItem) => {\n if (itemsState[uId]) {\n const newValues: any = {};\n keys(itemsState).forEach((key: string) => {\n if (key !== uId) {\n newValues[key] = {\n ...itemsState[key],\n };\n }\n });\n setItemValue(newValues);\n } else {\n setItemValue({\n ...itemsState,\n\n [uId]: {\n rang,\n label,\n },\n } as IItemState);\n }\n };\n\n const handleSetActionMod = ({ uId, value }: IActionModesChange) => {\n setModesValue({\n ...actionsModesState,\n [uId]: value,\n });\n\n if (value === EActionMode.READ_ONLY) {\n const newMenus: any = {};\n\n const readOnlyItems = (Wording.subMenuItems as {\n [key: string]: ISubMenuItem[];\n })[uId].filter((elm: any) => elm.readeOnly);\n\n if (readOnlyItems) {\n readOnlyItems.forEach(elm => {\n newMenus[elm.uId] = {\n root: elm.root,\n label: elm.label,\n rang: elm.rang,\n };\n });\n }\n\n setSubMenuValue({\n ...subMenuState,\n [uId]: newMenus,\n });\n }\n\n if (\n value === EActionMode.FULL &&\n keys(subMenuState[uId]).length !== 0\n ) {\n setSubMenuValue({\n ...subMenuState,\n [uId]: {},\n });\n }\n };\n\n const handleSetSubMenu = ({ subMenuItem, uIdItem }: ISubMenusChange) => {\n const { label, root, uId, rang } = subMenuItem;\n\n const currentMenusByItem = subMenuState[uIdItem];\n\n if (currentMenusByItem[uId]) {\n const newMenuValues: any = {};\n\n keys(currentMenusByItem).forEach((key: string) => {\n if (key !== uId) {\n newMenuValues[key] = {\n ...currentMenusByItem[key],\n };\n }\n });\n\n setSubMenuValue({\n ...subMenuState,\n [uIdItem]: newMenuValues,\n });\n } else {\n setSubMenuValue({\n ...subMenuState,\n [uIdItem]: {\n ...currentMenusByItem,\n [uId]: {\n label,\n root,\n rang,\n uId,\n },\n },\n });\n }\n };\n\n const handleSetAccess = ({\n uIdItem,\n value,\n type,\n uIdMenu,\n }: IAccessItem) => {\n const objBuild = {\n ...accessState[uIdItem][uIdMenu],\n [type]: value,\n };\n\n if (type === 'groupMode' && value === 'FULL') {\n objBuild.subGroupMode = 'FULL';\n }\n\n if (\n !(\n type === 'subGroupMode' &&\n accessState[uIdItem][uIdMenu].groupMode === 'FULL'\n )\n ) {\n setAccessState({\n ...accessState,\n [uIdItem]: {\n ...accessState[uIdItem],\n [uIdMenu]: {\n ...objBuild,\n },\n },\n });\n }\n };\n\n const selectAllItems = () => {\n setSelectAll(!isSelectedAll);\n\n if (!isSelectedAll) {\n const actModes: any = {};\n const subMn: any = {};\n const access: any = {};\n const mods: any = {};\n\n Wording.renderItems.forEach(({ uId, label, rang }) => {\n actModes[uId] = EActionMode.FULL;\n subMn[uId] = {};\n access[uId] = {};\n\n mods[uId] = {\n rang,\n label,\n };\n\n (Wording.subMenuItems as { [key: string]: ISubMenuItem[] })[\n uId\n ].forEach(elm => {\n const prepareAccess: any = {};\n\n Wording.accessItems.forEach(ai => {\n if (ai.access) {\n if (ai.access.includes(elm.uId)) {\n prepareAccess[ai.value] = EGroups.FULL;\n }\n } else {\n prepareAccess[ai.value] = EGroups.FULL;\n }\n });\n\n access[uId][elm.uId] = prepareAccess;\n subMn[uId][elm.uId] = {\n label: elm.label,\n root: elm.root,\n rang: elm.rang,\n };\n });\n });\n\n setItemValue(mods);\n setModesValue(actModes);\n setSubMenuValue(subMn);\n setAccessState(access);\n }\n };\n\n return (\n <div className=\"authorization-schema-group\">\n <div className=\"authorization-schema-group__select-all\">\n <CustomCheckbox\n checked={isSelectedAll}\n handleCheck={selectAllItems}\n text={Wording.selectAll}\n />\n </div>\n\n <div className=\"authorization-schema-group__items-auth\">\n {Wording.renderItems.map((obj: IItem) => {\n const { uId } = obj;\n return (\n <AuthSchemaItem\n key={uId}\n item={obj}\n handleSetCheckbox={handleSetItemValue}\n handleSetAccess={handleSetAccess}\n handleSetActionMod={handleSetActionMod}\n handleSetSubMenu={handleSetSubMenu}\n itemValues={{\n isChecked: itemsState[uId] !== undefined,\n mode: actionsModesState[uId],\n subMenus: subMenuState[uId],\n accessItem: accessState[uId],\n }}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default AuthorizationSchemaGroup;\n","import AuthorizationSchemaGroup from './AuthorizationSchemaGroup';\n\nexport default AuthorizationSchemaGroup;\n","import React from 'react';\nimport Lottie from 'react-lottie';\n\nimport { CustomModal, Modal } from '../components';\nimport animationData from '../assets/loader.json';\nimport WordingConstant from '../utils/wording.json';\n\nconst CommonWording = WordingConstant.Common;\n\nexport const LoadingSpinner: React.FC<{}> = ({}) => {\n const defaultOptions = {\n loop: true,\n autoplay: true,\n animationData,\n };\n return (\n <div className=\"loader\">\n <Lottie\n options={defaultOptions}\n height={180}\n width={180}\n isStopped={false}\n />\n </div>\n );\n};\n\nexport const LoaderModal: React.FC<{}> = ({}) => {\n return (\n <div className=\"loader-modal\">\n <CustomModal show>\n <LoadingSpinner />\n </CustomModal>\n </div>\n );\n};\n\nexport type ExternalProps = {\n loading: boolean;\n unauthorized: boolean;\n handleCloseModal(): void;\n};\n\ntype Options = {\n debug?: boolean;\n};\n\nconst withLoader = ({ debug = false }: Options = {}) => <OwnProps extends {}>(\n WrappedComponent: React.ComponentType<OwnProps>,\n) => {\n type HocProps = OwnProps & ExternalProps;\n\n const component: React.FC<HocProps> = ({\n loading,\n unauthorized,\n handleCloseModal,\n ...props\n }) => {\n return (\n <div className=\"loader-page\">\n {loading && <LoaderModal />}\n\n <Modal\n show={unauthorized}\n title={CommonWording.expiredSession.title}\n description={CommonWording.expiredSession.description}\n state={1}\n handleCancel={handleCloseModal}\n />\n\n <WrappedComponent {...props as OwnProps} />\n </div>\n );\n };\n return component;\n};\n\nexport default withLoader;\n","import React from 'react';\n\ntype InputSetting = {\n isLocked?: boolean;\n text?: string;\n value?: any;\n type?: string;\n error?: string;\n genericError?: string;\n onInputChange?: (e: React.ChangeEvent<HTMLInputElement>) => any;\n onToggleModal?: any;\n minLength?: number;\n maxLength?: number;\n isInterrogationVisible?: boolean;\n defaultValue?: any;\n placeholder?: string;\n disabled?: boolean;\n onBlur?: any;\n onKeyPress?: any;\n deleteButton?: boolean;\n isPassword?: boolean;\n deleteButtonOnClick?: () => void;\n};\n\nconst CustomInputNewGen: React.FC<InputSetting> = setting => (\n <div className=\"custom-input-new-gen\">\n {setting.text && (\n <label htmlFor={`id${setting.text}`}>\n {setting.text}\n {setting.isInterrogationVisible && (\n <span\n className=\"custom-input-new-gen__layer\"\n onClick={setting.onToggleModal}\n onKeyDown={setting.onToggleModal}\n role=\"button\"\n tabIndex={0}\n >\n ?\n </span>\n )}\n </label>\n )}\n\n {setting.deleteButton && setting.value !== '' && (\n <span\n className=\"custom-input-new-gen__delete\"\n onClick={setting.deleteButtonOnClick}\n role=\"button\"\n tabIndex={0}\n >\n <span role=\"button\" tabIndex={0}>\n X\n </span>\n </span>\n )}\n <input\n className={`custom-input-new-gen__input${\n setting.isLocked ? ' custom-input-new-gen__input--locked' : ''\n }${\n setting.genericError || setting.error\n ? ' custom-input-new-gen__input--error'\n : ''\n }`}\n onChange={setting.onInputChange}\n type={setting.type}\n value={setting.value}\n minLength={setting.minLength}\n maxLength={setting.maxLength}\n defaultValue={setting.defaultValue}\n placeholder={setting.placeholder}\n disabled={setting.disabled}\n onBlur={setting.onBlur}\n onKeyPress={setting.onKeyPress}\n />\n {setting.error && setting.error !== '' && (\n <p className=\"custom-input-new-gen__error\">{setting.error}</p>\n )}\n </div>\n);\nexport default CustomInputNewGen;\n","import React from 'react';\n\ntype Props = {\n title?: string;\n color?: string;\n disabled?: boolean;\n onClick?: any;\n arrowLeft?: boolean;\n arrowRight?: boolean;\n isLoading?: boolean;\n heavy?: boolean;\n};\n\nconst CustomButtonNewGen: React.FC<Props> = ({\n title,\n color,\n disabled,\n onClick,\n arrowLeft,\n arrowRight,\n isLoading,\n heavy,\n}) => {\n const classNames: string[] = [\n 'custom-button-new-gen',\n `custom-button-new-gen--${color}`,\n ];\n if (!!disabled) classNames.push('custom-button-new-gen__disabled');\n if (isLoading) classNames.push('custom-button-new-gen__loading');\n if (!!heavy) classNames.push('custom-button-new-gen__heavy');\n return (\n <button\n className={classNames.join(' ')}\n type=\"button\"\n onClick={!!disabled ? undefined : onClick}\n >\n {arrowLeft && <i className=\"custom-button-new-gen__arrowLeft\" />}\n {isLoading ? 'Chargement...' : title}\n {/* {title} */}\n {arrowRight && <i className=\"custom-button-new-gen__arrowRight\" />}\n </button>\n );\n};\n\nexport default CustomButtonNewGen;\n","import React from 'react';\nimport resources from '../../utils/resources';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.Footer;\nexport default function footer() {\n return (\n <div className=\"footerAuth\">\n <div className=\"footerAuth__articles\">\n {Wording.footerAuth.articles.map((e, index) => {\n return (\n <React.Fragment key={index}>\n <a\n href={e.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {e.text}\n </a>\n </React.Fragment>\n );\n })}\n </div>\n\n <div className=\"footerAuth__social\">\n <a\n href={Wording.socialLink.facebook}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-facebook']} alt=\"ic-facebook\" />\n </a>\n <a\n href={Wording.socialLink.instagram}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-instagram']} alt=\"ic-instagram\" />\n </a>\n <a\n href={Wording.socialLink.youtube}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-youtube']} alt=\"ic-youtube\" />\n </a>\n <a\n href={Wording.socialLink.linkedin}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <img src={resources['ic-linkedin']} alt=\"ic-linkedin\" />\n </a>\n </div>\n </div>\n );\n}\n","import resources from '../../utils/resources';\nimport React from 'react';\nimport WordingConstant from '../../utils/wording.json';\nimport CustomButtonNewGen from '../CustomButton/CustomButtonNewGen';\nimport Config from '../../utils/config';\n\ninterface ISlidingMenuProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n}\n\nconst wording = WordingConstant.SlidingMenu;\n\nenum WordingTitle {\n why = 'Pourquoi',\n individual = 'Particuliers',\n pro = 'Professionnels',\n green = 'Électricité verte',\n solar = 'Solar',\n blog = 'Blog',\n}\n\nconst SlidingMenu = (props: ISlidingMenuProps) => {\n const { isOpen, setIsOpen } = props;\n const [isOpenIndividual, setIsOpenIndividual] = React.useState(false);\n\n return (\n <div className={`sliding-menu${isOpen ? ' visible' : ' hidden'}`}>\n <img\n src={resources['ic-arrow-open-menu']}\n onClick={() => {\n setIsOpen(!isOpen);\n setIsOpenIndividual(false);\n }}\n className={`sliding-menu__img${isOpen ? ' open-img' : ''}`}\n alt={'image open menu'}\n />\n <img\n className={'sliding-menu__logo'}\n src={resources['ic-wekiwi-new']}\n alt=\"logo-login\"\n onClick={() => {\n window.location.href = Config.HOME_PAGE_LINK as string;\n }}\n />\n {wording.data.map((item, index) => {\n if (\n item.title.toLowerCase() ===\n WordingTitle.individual.toLowerCase()\n ) {\n return (\n <>\n <div\n className={`${\n isOpenIndividual ? 'individualOpen' : ''\n } sliding-menu__individual`}\n onClick={() =>\n setIsOpenIndividual(!isOpenIndividual)\n }\n key={index}\n tabIndex={0}\n role={'button'}\n >\n {item.title}\n <img\n className={isOpenIndividual ? 'open' : ''}\n src={resources['ic-arrow-down']}\n alt={'flèche vers le bas'}\n />\n </div>\n <div\n className={`sliding-menu__submenu${\n isOpenIndividual ? ' full' : ''\n }`}\n key={index}\n >\n {item.subMenu!.map((subItem, subIndex) => (\n <a\n key={subIndex}\n href={subItem.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {subItem.title}\n </a>\n ))}\n </div>\n </>\n );\n }\n return (\n <div className={'sliding-menu__content'} key={index}>\n <a href={item.link} target={'_blank'}>\n {item.title}\n </a>\n </div>\n );\n })}\n <CustomButtonNewGen\n title={wording.button}\n color={'purple'}\n onClick={() => {\n window.location.href = Config.SUBSCRIPTION_LINK as string;\n }}\n arrowRight={true}\n />\n <div className={'sliding-menu__footer'}>\n <p className={'sliding-menu__footer__title'}>\n {wording.footer.title}\n </p>\n <p className={'sliding-menu__footer__subtitle'}>\n {wording.footer.countries.map((item, index) => {\n return (\n <a\n key={index}\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {index !== wording.footer.countries.length - 1\n ? `${item.title} - `\n : item.title}\n </a>\n );\n })}\n </p>\n </div>\n </div>\n );\n};\n\nexport default SlidingMenu;\n","import SlidingMenu from './SlidingMenu';\n\nexport default SlidingMenu;\n","import React from 'react';\n\nimport { InputEvent, KeyboardHandler } from 'Types';\nimport { CustomInput, CustomButton } from '../../components';\nimport resources from '../../utils/resources';\nimport { isValidEmail } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport CustomInputNewGen from '../../components/CustomInput/CustomInputNewGen';\nimport CustomButtonNewGen from '../../components/CustomButton/CustomButtonNewGen';\nimport Footer from '../../components/FooterAuth/FooterAuth';\nimport SlidingMenu from '../../components/SlidingMenu';\n\nconst Wording = WordingConstant.AuthPage;\n\ntype Props = {\n fields: IFields;\n responseMessage?: {\n msg?: string;\n errorMsg?: string;\n };\n toggle: {\n passForgot: boolean;\n };\n handleToggle: any;\n isSlidingMenuOpen: boolean;\n handleInputChange(e: InputEvent, type: string): void;\n handleInputError(): boolean;\n handleButtonLogin(): void;\n handleButtonPassForgot(): void;\n handleSlidingMenu(): void;\n};\n\nexport interface IFields {\n login: string;\n password: string;\n email: string;\n errorLogin?: string;\n errorPassword?: string;\n errorEmail?: string;\n\n [key: string]: string | undefined;\n}\n\nconst AuthContainer: React.FC<Props> = ({\n fields,\n toggle,\n responseMessage,\n handleInputChange,\n handleButtonLogin,\n handleButtonPassForgot,\n handleInputError,\n handleToggle,\n isSlidingMenuOpen,\n handleSlidingMenu,\n}) => {\n const isEmail = isValidEmail(fields.email);\n\n const renderForgotPassword = () => (\n <div className=\"auth-page__inner__password-forgot\">\n <img\n src={resources['ic-wekiwi-new']}\n className=\"auth-page__inner__password-forgot__logo\"\n alt=\"logo-login\"\n />\n <h1>\n {Wording.passForgot.title}{' '}\n <span>{Wording.passForgot.title2}</span>\n </h1>\n <h3 className={'bold'}>{Wording.passForgot.subTitle}</h3>\n <h3>{Wording.passForgot.subTitle2}</h3>\n <CustomInputNewGen\n value={fields.email}\n placeholder={Wording.passForgot.email}\n genericError={responseMessage && responseMessage.errorMsg}\n onInputChange={(e: InputEvent) => handleInputChange(e, 'email')}\n />\n\n {responseMessage && responseMessage.errorMsg && (\n <p className=\"auth-page__inner__password-forgot__error\">\n {responseMessage.errorMsg}\n </p>\n )}\n\n {responseMessage && responseMessage.msg && (\n <p className=\"auth-page__inner__password-forgot__success\">\n {responseMessage.msg}\n </p>\n )}\n <div className=\"auth-page__inner__password-forgot__buttons\">\n <CustomButtonNewGen\n title={Wording.cancelButton}\n color=\"inherit\"\n onClick={() => handleToggle()}\n />\n <CustomButtonNewGen\n title={Wording.passForgot.validButton}\n disabled={!isEmail}\n color={!isEmail ? 'gray' : 'purple'}\n onClick={() => {\n if (handleInputError()) {\n handleButtonPassForgot();\n }\n }}\n />\n </div>\n </div>\n );\n\n const handleEnterPressed = (event: KeyboardHandler) => {\n const code = event.keyCode || event.which;\n if (code === 13 && handleInputError()) {\n // 13 is the enter keycode\n handleButtonLogin();\n }\n };\n\n const renderConnexion = () => {\n const errorLoginPassword =\n fields.login.length < 6 || fields.password.length < 6;\n\n return (\n <div className=\"auth-page__inner__connection\">\n <img\n src={resources['ic-wekiwi-new']}\n className=\"auth-page__inner__connection__logo\"\n alt=\"logo-login\"\n />\n <div className={'auth-page__inner__connection__title'}>\n <span>{Wording.title}</span>\n <span className={'bold'}>{Wording.title2}</span>\n </div>\n <CustomInputNewGen\n value={fields.login}\n error={fields.errorLogin}\n genericError={responseMessage && responseMessage.errorMsg}\n placeholder={Wording.login}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'login')\n }\n onKeyPress={handleEnterPressed}\n />\n <CustomInputNewGen\n value={fields.password}\n error={fields.errorPassword}\n placeholder={Wording.pass}\n genericError={responseMessage && responseMessage.errorMsg}\n type=\"password\"\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'password')\n }\n onKeyPress={handleEnterPressed}\n />\n\n {responseMessage && responseMessage.errorMsg && (\n <p>{responseMessage.errorMsg}</p>\n )}\n\n <CustomButtonNewGen\n title={Wording.button}\n color={errorLoginPassword ? 'purple' : 'purple'}\n onClick={() => {\n if (handleInputError()) {\n handleButtonLogin();\n }\n }}\n />\n\n <a onClick={() => handleToggle()} href=\"#\">\n {Wording.passForgotLoginPage}\n </a>\n </div>\n );\n };\n\n return (\n <div className=\"auth-page\">\n <SlidingMenu\n isOpen={isSlidingMenuOpen}\n setIsOpen={handleSlidingMenu}\n />\n <img\n src={resources['ic-new-logo-accueil-background']}\n className=\"auth-page__logo\"\n alt=\"logo-login\"\n />\n <div className=\"auth-page__inner\">\n {!toggle.passForgot\n ? renderConnexion()\n : renderForgotPassword()}\n </div>\n <Footer />\n </div>\n );\n};\n\nexport default AuthContainer;\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { Location } from 'history';\nimport { InputEvent, RootState } from 'Types';\n\nimport withLoader from '../../libraries/withLoader';\nimport AuthContainer, {\n IFields,\n} from '../../containers/AuthContainer/AuthContainer';\n\nimport {\n fetchLoginAsync,\n resetAuthErrors,\n resetPasswordAsync,\n} from '../../_actions/auth.actions';\n\nimport { isValidEmail } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\nconst Wording = WordingConstant.AuthPage;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n});\n\nconst dispatchProps = {\n authDispatch: fetchLoginAsync.request,\n resetPasswordDispatch: resetPasswordAsync.request,\n resetAuthErrorsDispatch: () => resetAuthErrors(),\n};\n\ntype InjectedProps = {\n location: Location;\n};\n\ntype Props = ReturnType<typeof mapStateToProps> &\n typeof dispatchProps &\n InjectedProps;\n\ntype State = {\n fields: IFields;\n toggle: {\n passForgot: boolean;\n };\n slidingMenu: {\n isOpen: boolean;\n };\n};\n\nexport const WrappedAuth = withLoader()(AuthContainer);\n\nexport class AuthPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n login: '',\n password: '',\n email: '',\n errorLogin: undefined,\n errorPassword: undefined,\n errorEmail: undefined,\n },\n toggle: {\n passForgot: false,\n },\n slidingMenu: {\n isOpen: false,\n },\n };\n }\n\n componentDidMount(): void {\n const { resetAuthErrorsDispatch } = this.props;\n if (resetAuthErrorsDispatch) resetAuthErrorsDispatch();\n }\n\n handleChange = (e: InputEvent, type: string): void => {\n const { value } = e.currentTarget;\n const { fields } = this.state;\n fields[type] = value;\n this.setState({ fields });\n };\n\n handleToggle = () => {\n const { toggle } = this.state;\n toggle.passForgot = !toggle.passForgot;\n this.setState({ toggle });\n const { resetAuthErrorsDispatch } = this.props;\n if (resetAuthErrorsDispatch) resetAuthErrorsDispatch();\n };\n\n handleButtonPassForgot = () => {\n const {\n fields: { email },\n } = this.state;\n const { resetPasswordDispatch } = this.props;\n resetPasswordDispatch({\n email,\n });\n };\n\n handleButtonLogin = () => {\n const { fields } = this.state;\n const { authDispatch } = this.props;\n\n localStorage.clear();\n\n authDispatch({\n user: fields.login.trim(),\n password: fields.password.trim(),\n });\n };\n\n handleInputError = (): boolean => {\n const {\n fields,\n toggle: { passForgot },\n } = this.state;\n\n if (passForgot) {\n const isEmail = isValidEmail(fields.email);\n fields.errorEmail = isEmail ? Wording.error.notEmail : undefined;\n this.setState({ fields });\n return isEmail;\n }\n fields.errorLogin =\n fields.login.length <= 2 ? Wording.error.notLogin : undefined;\n fields.errorPassword =\n fields.password.length < 6 ? Wording.error.notPassword : undefined;\n this.setState({ fields });\n return fields.login.length >= 2 && fields.password.length >= 6;\n };\n\n handleSlidingMenuOpen = () => {\n const { slidingMenu } = this.state;\n slidingMenu.isOpen = !slidingMenu.isOpen;\n this.setState({ slidingMenu });\n };\n\n sendError = (error: any) => {\n if (\n (error && error.ajaxError !== undefined) ||\n error === 'Unexpected token a in JSON at position 0'\n ) {\n return WordingConstant.Common.errorTitle;\n }\n if (error && error.search('message') !== -1) {\n return JSON.parse(error).message;\n }\n\n return error;\n };\n render() {\n const { fields, toggle, slidingMenu } = this.state;\n const {\n authState: { loading, error, message },\n }: Props = this.props;\n\n const isSignIn = AuthService.isAuthenticated();\n const isValidated = AuthService.isVlaidated();\n // Always redirect to dashboard if login succeess\n\n // Always redirect to createPassword if isValidated false\n if (!isValidated) return <Redirect to=\"/createPassword\" />;\n else if (isSignIn) return <Redirect to=\"/\" />;\n\n return (\n <WrappedAuth\n loading={loading}\n unauthorized={false}\n handleCloseModal={() => {}}\n responseMessage={{\n errorMsg: this.sendError(error),\n msg: message,\n }}\n toggle={toggle}\n fields={fields}\n handleInputChange={this.handleChange}\n handleToggle={this.handleToggle}\n handleButtonLogin={this.handleButtonLogin}\n handleButtonPassForgot={this.handleButtonPassForgot}\n handleInputError={this.handleInputError}\n handleSlidingMenu={this.handleSlidingMenuOpen}\n isSlidingMenuOpen={slidingMenu.isOpen}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(AuthPage);\n","import AuthPage from './AuthPage';\n\nexport default AuthPage;\n","import Footer from './FooterAuth';\n\nexport default Footer;\n","import React from 'react';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n\nimport { InputEvent, KeyboardHandler } from 'Types';\nimport { CustomInput, CustomButton } from '../../components';\nimport resources from '../../utils/resources';\n\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\nimport SlidingMenu from '../../components/SlidingMenu';\nimport FooterAuth from '../../components/FooterAuth';\nimport CustomInputNewGen from '../../components/CustomInput/CustomInputNewGen';\nimport CustomButtonNewGen from '../../components/CustomButton/CustomButtonNewGen';\nconst Wording = WordingConstant.ResetPasswordPage;\n\ntype IProps = {\n fields: IFields;\n responseMessages?: {\n errorMsg?: string;\n msg?: string;\n };\n toggle: {\n passForgot: boolean;\n };\n handleToggle: any;\n isSlidingMenuOpen: boolean;\n handleInputChange(e: InputEvent, type: string): void;\n handleInputError(): boolean;\n handleButtonLogin(): any;\n handleSlidingMenu(): void;\n};\ntype Props = IProps & RouteComponentProps<any>;\n\nexport interface IFields {\n login: string;\n password: string;\n newPassword: string;\n confirmPassword: string;\n email: string;\n errorLogin?: string;\n errorPassword?: string | undefined;\n errorEmail?: string;\n [key: string]: string | undefined;\n}\n\nconst PasswordContainer: React.FC<Props> = ({\n fields,\n toggle,\n responseMessages,\n handleInputChange,\n handleButtonLogin,\n handleInputError,\n handleToggle,\n history,\n isSlidingMenuOpen,\n handleSlidingMenu,\n}) => {\n const renderForgotPassword = () => (\n <div className=\"auth-page__inner_password__password-forgot\">\n <h1>{Wording.passForgot.title}</h1>\n <h2>{Wording.passForgot.subTitle}</h2>\n\n <p>{Wording.passForgot.email}</p>\n <CustomInput\n value={fields.email}\n onInputChange={(e: InputEvent) => handleInputChange(e, 'email')}\n />\n </div>\n );\n\n const handleEnterPressed = (event: KeyboardHandler) => {\n const code = event.keyCode || event.which;\n if (code === 13 && handleInputError()) {\n // 13 is the enter keycode\n if (\n (fields.newPassword !== '' || fields.confirmPassword !== '') &&\n fields.newPassword !== fields.confirmPassword\n ) {\n return;\n }\n handleButtonLogin();\n }\n };\n\n const handleGoBack = (e: MouseEvent) => {\n e.preventDefault();\n AuthService.logout();\n history.push('/');\n };\n\n const handleValidate = () => {\n if (handleInputError()) handleButtonLogin();\n };\n\n const formatErrorMessage = () => {\n const regex = new RegExp(\n /^(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$/g,\n );\n if (!fields.newPassword) {\n return '';\n }\n if (fields.newPassword.length < 8) {\n return 'Le mot de passe doit être de 8 caractères minimum.';\n }\n if (!regex.test(fields.newPassword)) {\n return 'Le mot de passe doit contenir une majuscule, une minuscule et un caractère spécial (@$!%*#?&)';\n }\n if (fields.newPassword !== fields.confirmPassword) {\n return 'Le mot de passe de confirmation doit être le même que celui ci.';\n }\n return undefined;\n };\n\n const renderConnexion = () => {\n const errorForm = formatErrorMessage();\n return (\n <div className=\"auth-page__inner_password__reset-password\">\n <img\n src={resources['ic-wekiwi-new']}\n className=\"auth-page__inner_password__reset-password__logo\"\n alt=\"logo-login\"\n />\n <div\n className={\n 'auth-page__inner_password__reset-password__title'\n }\n >\n <span>{Wording.title}</span>\n <span className={'bold'}>{'Mot de passe'}</span>\n </div>\n <h6>{Wording.login}</h6>\n <CustomInputNewGen\n value={fields.login}\n error={fields.errorLogin}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'login')\n }\n placeholder={Wording.login}\n onKeyPress={handleEnterPressed}\n />\n <h6 className=\"pass\">{Wording.pass}</h6>\n <CustomInputNewGen\n value={fields.password}\n error={fields.errorPassword}\n type=\"password\"\n placeholder={Wording.pass}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'password')\n }\n onKeyPress={handleEnterPressed}\n />\n <h6 className=\"pass\">{Wording.NewPass}</h6>\n <CustomInputNewGen\n value={fields.newPassword}\n error={errorForm}\n placeholder={Wording.NewPass}\n type=\"password\"\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'newPassword')\n }\n onKeyPress={handleEnterPressed}\n />\n <h6 className=\"pass\">{Wording.passValidate}</h6>\n <CustomInputNewGen\n value={fields.confirmPassword}\n type=\"password\"\n placeholder={Wording.passValidate}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'confirmPassword')\n }\n onKeyPress={handleEnterPressed}\n />\n {responseMessages && responseMessages.errorMsg && (\n <p className=\"error-message\">{responseMessages.errorMsg}</p>\n )}\n {responseMessages && responseMessages.msg && (\n <p className=\"success-message\">{responseMessages.msg}</p>\n )}\n\n <div className=\"buttonContainers\">\n <CustomButtonNewGen\n title={Wording.backButton}\n color={'inherit'}\n onClick={handleGoBack}\n />\n\n <CustomButtonNewGen\n title={Wording.button}\n disabled={\n !!(responseMessages && responseMessages.msg) ||\n !!errorForm\n }\n color={\n Boolean(errorForm || !fields.newPassword)\n ? 'gray'\n : 'purple'\n }\n onClick={() => handleValidate()}\n />\n </div>\n </div>\n );\n };\n\n return (\n <div className=\"auth-page\">\n <SlidingMenu\n isOpen={isSlidingMenuOpen}\n setIsOpen={handleSlidingMenu}\n />\n <img\n src={resources['ic-new-logo-accueil-background']}\n className=\"auth-page__logo\"\n alt=\"logo-login\"\n />\n <div className=\"auth-page__inner_password\">\n {!toggle.passForgot\n ? renderConnexion()\n : renderForgotPassword()}\n </div>\n <FooterAuth />\n </div>\n );\n};\n\nexport default withRouter(PasswordContainer);\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { Location } from 'history';\nimport { InputEvent, RootState } from 'Types';\n\nimport withLoader from '../../libraries/withLoader';\nimport ResetPasswordContainer, {\n IFields,\n} from '../../containers/ResetPasswordContainer/ResetPasswordContainer';\n\nimport { createPasswordAsync } from '../../_actions/createPassword.actions';\n\nimport { isValidEmail } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport AuthService from '../../services/auth-service';\nimport { CreatePasswordMode } from '../../utils/enums';\nimport { resetAuthErrors } from '../../_actions/auth.actions';\nconst Wording = WordingConstant.ResetPasswordPage;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n});\n\nconst dispatchProps = {\n authDispatch: createPasswordAsync.request,\n resetAuthError: resetAuthErrors,\n};\n\ntype InjectedProps = {\n location: Location;\n};\n\ntype Props = ReturnType<typeof mapStateToProps> &\n typeof dispatchProps &\n InjectedProps;\n\ntype State = {\n fields: IFields;\n toggle: {\n passForgot: boolean;\n };\n slidingMenu: {\n isOpen: boolean;\n };\n};\n\nexport const WrappedPassword = withLoader()(ResetPasswordContainer);\n\nexport class ResetPasswordPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n login: '',\n password: '',\n newPassword: '',\n confirmPassword: '',\n email: '',\n errorLogin: undefined,\n errorPassword: undefined,\n errorEmail: undefined,\n },\n toggle: {\n passForgot: false,\n },\n slidingMenu: {\n isOpen: false,\n },\n };\n }\n\n componentDidMount(): void {\n this.props.resetAuthError();\n }\n\n handleChange = (e: InputEvent, type: string): void => {\n const { value } = e.currentTarget;\n const { fields } = this.state;\n fields[type] = value;\n\n if (type === 'newPassword' || type === 'confirmPassword') {\n fields.errorPassword = undefined;\n }\n this.setState({ fields });\n };\n\n handleToggle = () => {\n const { toggle } = this.state;\n toggle.passForgot = !toggle.passForgot;\n this.setState({ toggle });\n };\n\n handleButtonLogin = () => {\n const { fields } = this.state;\n const { authDispatch } = this.props;\n\n if (fields.newPassword !== fields.confirmPassword) {\n return;\n }\n\n localStorage.clear();\n\n const result = authDispatch({\n customerNbr: fields.login.trim(),\n temporaryPassword: fields.password.trim(),\n newPassword: fields.newPassword.trim(),\n mode: CreatePasswordMode.VALIDATION,\n });\n\n fields.errorPassword = undefined;\n return result;\n };\n\n handleInputError = (): boolean => {\n const {\n fields,\n toggle: { passForgot },\n } = this.state;\n\n if (passForgot) {\n const isEmail = isValidEmail(fields.email);\n fields.errorEmail = isEmail ? Wording.error.notEmail : undefined;\n this.setState({ fields });\n return isEmail;\n }\n\n fields.errorLogin =\n fields.login.length <= 2 ? Wording.error.notLogin : undefined;\n let errorPassword: string | undefined;\n\n if (\n fields.password.length < 6 ||\n fields.newPassword.length < 6 ||\n fields.newPassword !== fields.confirmPassword\n ) {\n errorPassword = 'Passwords do not match';\n } else {\n errorPassword = undefined;\n }\n\n fields.errorPassword =\n fields.newPassword !== '' && fields.confirmPassword !== ''\n ? errorPassword\n : undefined;\n this.setState({ fields });\n return fields.login.length >= 2 && fields.password.length >= 6;\n };\n\n handleSlidingMenuOpen = () => {\n const { slidingMenu } = this.state;\n slidingMenu.isOpen = !slidingMenu.isOpen;\n this.setState({ slidingMenu });\n };\n\n sendError = (error: any) => {\n if (\n (error && error.ajaxError !== undefined) ||\n error === 'Unexpected token a in JSON at position 0'\n ) {\n return WordingConstant.Common.errorTitle;\n }\n if (error && error.search('message') !== -1) {\n return JSON.parse(error).message;\n }\n\n return error;\n };\n render() {\n const { fields, toggle, slidingMenu } = this.state;\n const {\n authState: { loading, error, message },\n }: Props = this.props;\n\n const isSignIn = AuthService.isAuthenticated();\n // Always redirect to dashboard if login succeess\n if (isSignIn) return <Redirect to=\"/\" />;\n\n return (\n <WrappedPassword\n loading={loading}\n unauthorized={false}\n handleCloseModal={() => {}}\n responseMessages={{\n errorMsg: this.sendError(error),\n msg: message,\n }}\n toggle={toggle}\n fields={fields}\n handleInputChange={this.handleChange}\n handleToggle={this.handleToggle}\n handleButtonLogin={this.handleButtonLogin}\n handleInputError={this.handleInputError}\n handleSlidingMenu={this.handleSlidingMenuOpen}\n isSlidingMenuOpen={slidingMenu.isOpen}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(ResetPasswordPage);\n","import ResetPasswordPage from './ResetPasswordPage';\n\nexport default ResetPasswordPage;\n","import AdminHomePage from './AdminHomePage';\nexport default AdminHomePage;\n","import React from 'react';\n\nconst AdminHomePage = () => {\n return (\n <div>\n <h6>Home</h6>\n\n <br />\n </div>\n );\n};\n\nexport default AdminHomePage;\n","import _ from 'lodash';\nimport { getFormattedDateToBackEnd } from '../../helpers';\nimport { EBillingModes, TContract } from '../types';\nimport { Energy } from '../builders';\nimport { isCyclicalProduct } from '../helpers';\n\nfunction buildFinalContracts(\n electricity?: Energy | Partial<Energy> | null,\n gas?: Energy | Partial<Energy> | null,\n): TContract[] {\n const finalContracts: TContract[] = [];\n if (!!electricity && electricity.contract) {\n const elecPrepare: any = {\n ...electricity.contract,\n };\n\n if (\n electricity.contract.deliveryPoint !== undefined &&\n electricity.contract.deliveryPoint.pointOfDelivery === undefined &&\n electricity.pointOfDelivery !== undefined\n ) {\n elecPrepare.deliveryPoint.pointOfDelivery = electricity.pointOfDelivery.replace(\n / /g,\n '',\n );\n }\n\n if (isCyclicalProduct(electricity.chosenProduct)) {\n elecPrepare.chosenProduct = electricity.chosenProduct;\n } else {\n elecPrepare.chosenPackages = [...electricity.chosenPackages];\n elecPrepare.chosenProduct = electricity.chosenProduct;\n elecPrepare.installmentFrequency = electricity.selectedFrequency;\n }\n\n finalContracts.push(elecPrepare);\n }\n if (!!gas && !!gas.contract) {\n const gasPrepare: any = {\n ...gas.contract,\n };\n\n if (\n gas.contract.deliveryPoint !== undefined &&\n gas.contract.deliveryPoint.pointOfDelivery === undefined &&\n gas.pointOfDelivery !== undefined\n ) {\n gasPrepare.deliveryPoint.pointOfDelivery = gas.pointOfDelivery.replace(\n / /g,\n '',\n );\n }\n\n if (isCyclicalProduct(gas.chosenProduct)) {\n gasPrepare.chosenProduct = gas.chosenProduct;\n } else {\n gasPrepare.chosenPackages = [...gas.chosenPackages];\n gasPrepare.chosenProduct = gas.chosenProduct;\n gasPrepare.installmentFrequency = gas.selectedFrequency;\n }\n\n finalContracts.push(gasPrepare);\n }\n return finalContracts.map(\n (contract: TContract): TContract => {\n const isCyclical = isCyclicalProduct(\n contract.chosenProduct || null,\n );\n const fmtDate = getFormattedDateToBackEnd(new Date(Date.now()));\n return {\n ...contract,\n billingModeCode: isCyclical\n ? EBillingModes.CYCLICAL_BILLING\n : EBillingModes.PAYMENT_SCHEDULE,\n effectiveStartDate: fmtDate,\n subscriptionDate: fmtDate,\n };\n },\n );\n}\n\nexport { buildFinalContracts };\n","import _ from 'lodash';\nimport moment from 'moment';\nimport apiRequest, { invokeLambda } from '../../services/api-service';\nimport Config from '../config';\nimport { getDateFormatted as getFormattedDate, log as hLog } from '../helpers';\nimport Wording from '../wording.json';\nimport * as RequestErrors from './errors';\nimport {\n EBillingModes,\n ECustomerTypes,\n EEnergyTypes,\n EResultSponsor,\n ESavingModes,\n ETimeslots,\n TAppointmentDay,\n TCasesExtractResponse,\n TContract,\n TEstimate,\n TGetOrderStatusResponse,\n TGetPackageResponse,\n TGetProductResponse,\n TOffer,\n TOrder,\n TOrderResponse,\n TPaymentCBResponse,\n TProduct,\n TSaveOrderResponse,\n TSignOrderResponse,\n TSurvey,\n} from './types';\n\nfunction log(message: string, data: any) {\n hLog(`API Request: ${message}`, data);\n}\n\nconst handleRequest = async <T>(\n fn: () => Promise<T | RequestErrors.RequestError>,\n method?: string,\n path?: string,\n args?: any,\n defaultError?: string,\n): Promise<any | RequestErrors.RequestError> => {\n const pathStr = !!path ? `/${path} ` : '';\n try {\n const res = await fn();\n const errCode: string | null = _.get(res, 'code', null);\n const errMessage: string | null = _.get(res, 'message', null);\n if (!!errCode && !!errMessage) {\n throw new RequestErrors.ExternalError(errMessage);\n }\n return res;\n } catch (err) {\n log(`Error from API ${pathStr}====> `, err.message);\n if (!(err instanceof RequestErrors.RequestError)) {\n let message;\n if (err instanceof Error || typeof err === 'object') {\n message = _.get(err, 'message');\n } else if (typeof err === 'string') {\n message = err;\n }\n return new RequestErrors.RequestError(message);\n }\n return err;\n }\n};\n\nconst checkSponsor = async (\n code: string,\n): Promise<boolean | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = await apiRequest({\n path: '/sponsoring',\n method: 'POST',\n body: {\n sponsorNumber: code,\n },\n isSubscription: true,\n }).toPromise();\n const resultSponsor: string = _.get(res, 'resultSponsor');\n if (!!resultSponsor) {\n if (resultSponsor === EResultSponsor.OK) {\n return true;\n }\n if (resultSponsor === EResultSponsor.KO) {\n return false;\n }\n }\n return new RequestErrors.RequestError();\n };\n return await handleRequest(fn, 'POST', 'sponsoring', {\n code,\n });\n};\n\nconst searchSiret = async (\n value: string,\n): Promise<any | RequestErrors.RequestError> => {\n const fn = async () => {\n const res: any = await fetch(`${Config.URL_GET_SIRET}/${value}`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'X-INSEE-Api-Key-Integration': '4ee560a3-3522-4f69-a560-a335221f698a',\n },\n });\n\n if (res.status && res.status === 200) {\n const response = await res.json();\n\n return {\n ...response,\n status: res.status,\n };\n }\n throw new RequestErrors.RequestError(\n res.message || 'Service indisponible',\n );\n };\n return await handleRequest(fn, 'GET', 'getSiret', { value });\n};\n\nconst getCalendarAppointment = async (\n channel: string = 'WEB',\n energyType: EEnergyTypes,\n isIndividual: boolean = true,\n order?: TOrder,\n productCode?: string | null,\n): Promise<TAppointmentDay[] | RequestErrors.RequestError> => {\n const fn = async () => {\n let fromDate = getFormattedDate(new Date(Date.now()));\n if (!!order) {\n const effectiveStartDate: Date = new Date(\n _.get(order, 'contracts.0.effectiveStartDate'),\n );\n if (!isNaN(effectiveStartDate.getTime())) {\n effectiveStartDate.setDate(effectiveStartDate.getDate() - 1);\n fromDate = getFormattedDate(effectiveStartDate);\n }\n }\n let body: any = {\n channel,\n seller: 'WEKIWI',\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n energyType,\n fromDate,\n processType: 'MOVE_IN',\n productCode,\n };\n const previousContract: TContract | undefined = _.find(\n _.get(order, 'contracts', []),\n (contract: TContract) => {\n return energyType === contract.energy;\n },\n );\n const billingModeCode: EBillingModes | undefined = _.get(\n previousContract,\n 'billingModeCode',\n );\n const isPaymentSchedule: boolean =\n billingModeCode === EBillingModes.PAYMENT_SCHEDULE;\n if (!!order && isPaymentSchedule) {\n body = {\n ...body,\n customerType: _.get(order, 'customer.type', ''),\n deliveryState: _.get(\n previousContract,\n 'deliveryPoint.state',\n '',\n ),\n deliveryStatus: _.get(\n previousContract,\n 'deliveryPoint.deliveryStatus',\n '',\n ),\n meterType: _.get(\n previousContract,\n 'deliveryPoint.meterType',\n '',\n ),\n smartMeterStatus: _.get(\n previousContract,\n 'deliveryPoint.smartMeterStatus',\n '',\n ),\n };\n }\n const res: any = await apiRequest({\n path: '/getCalendarAppointment',\n method: 'POST',\n body,\n isSubscription: true,\n }).toPromise();\n const daysList = _.get(res, '0.daysList');\n if (!!daysList) {\n return daysList as TAppointmentDay[];\n }\n throw new RequestErrors.NoDaysListError();\n };\n return await handleRequest(fn, 'POST', '/getCalendarAppointment', {\n energyType,\n isIndividual,\n });\n};\n\nconst getDeliveryPointPackages = async (\n channel: string = 'WEB',\n electricity?: string | null,\n gas?: string | null,\n isIndividual: boolean = true,\n email: string = '',\n firstName: string = '',\n lastName: string = '',\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n if (electricity === null && gas === null) {\n throw new RequestErrors.NoEnergySelectionError();\n }\n const pointOfDeliveryList = [];\n if (electricity) {\n pointOfDeliveryList.push({ energy: 'EL', reference: electricity });\n }\n if (gas) pointOfDeliveryList.push({ energy: 'NG', reference: gas });\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'POINT_OF_DELIVERY',\n pointOfDeliveryList,\n seller: 'WEKIWI',\n email,\n firstName,\n lastName,\n };\n \n let res :\n | TGetPackageResponse\n | RequestErrors.RequestError = await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n}).toPromise() as TGetPackageResponse | RequestErrors.RequestError;\n const energies: EEnergyTypes[] = [];\n if (!!electricity) energies.push(EEnergyTypes.ELECTRICTY);\n if (!!gas) energies.push(EEnergyTypes.GAS);\n res = filterGetPackagesError(res, energies);\n return res;\n};\n\nconst getPackDynamic = async (\n channel: string = 'WEB',\n contracts: TContract[],\n isIndividual: boolean,\n): Promise<any | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n seller: 'WEKIWI',\n contracts,\n };\n const res = await apiRequest({\n path: '/getPack',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise();\n return res;\n};\n\nconst getRawDeliveryPointPackages = async (\n channel: string = 'WEB',\n electricity?: string | null,\n gas?: string | null,\n isIndividual: boolean = true,\n email: string = '',\n firstName: string = '',\n lastName: string = '',\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n if (electricity === null && gas === null) {\n throw new RequestErrors.NoEnergySelectionError();\n }\n const pointOfDeliveryList = [];\n if (electricity) {\n pointOfDeliveryList.push({ energy: 'EL', reference: electricity });\n }\n if (gas) pointOfDeliveryList.push({ energy: 'NG', reference: gas });\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'POINT_OF_DELIVERY',\n pointOfDeliveryList,\n seller: 'WEKIWI',\n email,\n firstName,\n lastName,\n };\n\n const res = await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise() as TGetPackageResponse | RequestErrors.RequestError;\n return res;\n};\n\nconst getEstimatesPackages = async (\n channel: string = 'WEB',\n estimates: TEstimate[],\n isIndividual: boolean = true,\n energies: EEnergyTypes[],\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'ESTIMATE',\n estimates,\n seller: 'WEKIWI',\n };\n\n let res :\n | TGetPackageResponse\n | RequestErrors.RequestError = await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise() as TGetPackageResponse | RequestErrors.RequestError;\n res = filterGetPackagesError(res, energies);\n return res;\n};\n\nconst getOffers = async (\n channel: string = 'WEB',\n contracts: TContract[],\n isIndividual: boolean,\n): Promise<TOffer[] | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n seller: 'WEKIWI',\n contracts,\n };\n const res = await apiRequest({\n path: '/getOffers',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise();\n if (!(res instanceof RequestErrors.RequestError)) {\n return _.get(res, 'offers', []) as TOffer[];\n }\n return res;\n};\n\nconst getOrder = async (\n channel: string = 'WEB',\n orderNumber: string,\n): Promise<TOrderResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = await apiRequest({\n path: '/getOrder',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n orderNumber,\n },\n isSubscription: true,\n }).toPromise();\n if (!(res instanceof RequestErrors.RequestError)) {\n return res as TOrderResponse;\n }\n };\n return await handleRequest(fn, 'POST', 'getOrder', {\n orderNumber,\n });\n};\n\nconst getOrderStatus = async (\n channel: string = 'WEB',\n orderNumber: string,\n): Promise<TGetOrderStatusResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = (await apiRequest({\n path: '/getOrderStatus',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n orderNumber,\n },\n isSubscription: true,\n }).toPromise()) as TGetOrderStatusResponse | RequestErrors.RequestError;\n return res;\n };\n return await handleRequest(fn, 'POST', 'getOrderStatus', {\n orderNumber,\n });\n};\n\nconst getSurveyPackages = async (\n channel: string = 'WEB',\n survey: TSurvey,\n isIndividual = true,\n): Promise<TGetPackageResponse | RequestErrors.RequestError> => {\n const payload = {\n channel,\n customerType: isIndividual ? 'INDIVIDUAL' : 'PROFESSIONAL',\n mode: 'SURVEY',\n seller: 'WEKIWI',\n survey,\n };\n \n let res :\n | TGetPackageResponse\n | RequestErrors.RequestError = await apiRequest({\n path: '/getPackages',\n method: 'POST',\n body: payload,\n isSubscription: true,\n }).toPromise() as TGetPackageResponse | RequestErrors.RequestError;\n res = filterGetPackagesError(res, survey.energyList || []);\n if (!(res instanceof RequestErrors.RequestError)) {\n const packages = _.get(res, 'packagesList', []);\n if (packages.length <= 0) {\n throw new RequestErrors.NoMatchingPackagesError(\n 'Could not fetch survey packages',\n );\n }\n }\n return res;\n};\n\nconst getProducts = async (\n channel: string = 'WEB',\n contracts: TContract[],\n customerType: ECustomerTypes,\n): Promise<TGetProductResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res: TProduct[] = (await apiRequest({\n path: '/getProducts',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n contracts: contracts.map(ctr => {\n const nextCtr = { ...ctr };\n delete nextCtr.installmentFrequency;\n return nextCtr;\n }),\n customerType,\n contextOfUse: 'MARKET',\n },\n isSubscription: true,\n }).toPromise()) as TProduct[];\n return res;\n };\n return await handleRequest(fn, 'POST', 'getProducts', {\n contracts,\n customerType,\n });\n};\n\nconst filterGetPackagesError = (\n res: TGetPackageResponse | RequestErrors.RequestError,\n energies: EEnergyTypes[],\n): TGetPackageResponse | RequestErrors.RequestError => {\n const hasElectricity: boolean = _.includes(\n energies,\n EEnergyTypes.ELECTRICTY,\n );\n const hasGas: boolean = _.includes(energies, EEnergyTypes.GAS);\n const packages = _.get(res, 'packagesList', []);\n const hasElectricityMatch =\n _.filter(packages, pkg => pkg.energy === 'EL').length > 0;\n const hasGasMatch =\n _.filter(packages, pkg => pkg.energy === 'NG').length > 0;\n const errMessage = _.get(res, 'message');\n if (!!errMessage) {\n return new RequestErrors.ExternalError(errMessage);\n } else if (!_.get(res, 'packagesList')) {\n return new RequestErrors.NoPackageListError();\n } else if (!compareAllJsonFieldsInArray(_.get(res, 'contracts', []))) {\n return new RequestErrors.ExternalError(\"Les adresses des points de livraison (PDL) ne sont pas identiques. Veuillez vérifier que les adresses saisies correspondent exactement.\");\n } else if (packages.length <= 0) {\n return new RequestErrors.NoMatchingPackagesError();\n } else {\n const err: string[] = [];\n if (hasElectricity && !hasElectricityMatch) {\n err.push(Wording.Errors.noMatchingElectricityPackages);\n }\n if (hasGas && !hasGasMatch) {\n err.push(Wording.Errors.noMatchingGasPackages);\n }\n if (err.length > 0) {\n return new RequestErrors.NoMatchingPackagesError(err.join(' + '));\n }\n }\n return res;\n};\n\nfunction compareAllJsonFieldsInArray(arr: any ) {\n if (Config.ENV === 'PREPRODUCTION') {\n return true;\n }\n if (arr.length < 2) return true;\n const reference = JSON.stringify(arr[0][\"deliveryPoint\"][\"address\"][\"postalCode\"]);\n\n for (let i = 1; i < arr.length; i++) {\n console.log(`Adresse de l'élément ${i}:`, arr[i][\"deliveryPoint\"][\"address\"]);\n if (JSON.stringify(arr[i][\"deliveryPoint\"][\"address\"][\"postalCode\"]) !== reference) {\n return false;\n }\n }\n\n return true;\n}\n\nconst paymentCB = async (\n channel: string = 'WEB',\n order: TOrder,\n): Promise<TPaymentCBResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res = (await apiRequest({\n path: '/paymentCB',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n order,\n },\n isSubscription: true,\n }).toPromise()) as TPaymentCBResponse | RequestErrors.RequestError;\n return res;\n };\n return await handleRequest(fn, 'POST', 'paymentCB', {\n order,\n });\n};\n\nconst saveOrder = async (\n channel: string = 'WEB',\n order: TOrder,\n): Promise<TSaveOrderResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const res: TSaveOrderResponse = (await apiRequest({\n path: '/saveOrder',\n method: 'POST',\n body: {\n channel,\n seller: 'WEKIWI',\n order,\n savingMode: ESavingModes.SEND_EMAIL_LINK,\n },\n isSubscription: true,\n }).toPromise()) as TSaveOrderResponse;\n return res;\n };\n return await handleRequest(fn, 'POST', 'saveOrder', {\n order,\n });\n};\n\nconst searchAppointmentTimeslot = async (\n date: Date,\n energy: EEnergyTypes,\n): Promise<ETimeslots[] | RequestErrors.RequestError> => {\n const fn = async () => {\n const day: number = date.getDate();\n const dayStr = `${day < 10 ? `0${day}` : day}`;\n const month: number = date.getMonth();\n const monthStr = `${month + 1 < 10 ? `0${month + 1}` : month + 1}`;\n const dateStr: string = `${date.getFullYear()}-${monthStr}-${dayStr}`;\n const res = await apiRequest({\n path: '/getAppointmentTimeslot',\n method: 'POST',\n body: {\n date: dateStr,\n energy,\n },\n isSubscription: true,\n }).toPromise();\n let timeslots: ETimeslots[] = _.get(res, 'timeslots');\n if (!!timeslots) {\n if (_.includes<ETimeslots>(timeslots, ETimeslots.NONE)) {\n timeslots = _.without<ETimeslots>(timeslots, ETimeslots.NONE);\n }\n return timeslots;\n }\n throw new RequestErrors.RequestError(\n _.get(res, 'message') || 'Service indisponible',\n );\n };\n return await handleRequest(fn, 'POST', 'getAppointmentTimeslot', {\n date,\n energy,\n });\n};\n\nconst signOrder = async (\n channel: string = 'WEB',\n order: TOrder,\n userId?: string,\n): Promise<TSignOrderResponse | RequestErrors.RequestError> => {\n const fn = async () => {\n const payload: any = {\n channel,\n seller: 'WEKIWI',\n order,\n };\n if (!!userId) payload.order.createdBy = userId;\n const res = await apiRequest<\n TSignOrderResponse | RequestErrors.RequestError\n >({\n path: '/signOrder',\n method: 'POST',\n body: { ...payload },\n isSubscription: true,\n }).toPromise();\n return res;\n };\n return await handleRequest(fn, 'POST', 'signOrder', {\n channel,\n order,\n userId,\n });\n};\n\nconst getCasesHistory = async (): Promise<\n TCasesExtractResponse | RequestErrors.RequestError\n> => {\n const date = moment()\n .subtract(1, 'M')\n .toISOString()\n .slice(0, 10);\n\n const res = await apiRequest<\n TCasesExtractResponse | RequestErrors.RequestError\n >({\n lambdaFunctionName: Config.FunctionNames.casesExtract,\n path: '/casesExtract',\n method: 'POST',\n body: {\n fromDate: date,\n offset: 0,\n limit: 10000,\n },\n isSubscription: true,\n }).toPromise();\n return res;\n};\n\nconst getNewAdditionalRates = async (payload: any) => {\n const payloadWithoutInstallmentFrequency = delete payload.contract\n .installmentFrequency;\n const res = await apiRequest<any | RequestErrors.RequestError>({\n lambdaFunctionName: Config.FunctionNames.getOffers,\n path: '/getOffers',\n method: 'POST',\n body: payloadWithoutInstallmentFrequency,\n isSubscription: true,\n }).toPromise();\n log('res: ', res);\n return res;\n};\n\nexport {\n checkSponsor,\n getCalendarAppointment,\n getCasesHistory,\n getDeliveryPointPackages,\n getPackDynamic,\n getEstimatesPackages,\n getNewAdditionalRates,\n getOffers,\n getOrder,\n getOrderStatus,\n getProducts,\n getRawDeliveryPointPackages,\n getSurveyPackages,\n paymentCB,\n saveOrder,\n searchAppointmentTimeslot,\n searchSiret,\n signOrder,\n};\n","import React, { Component, FC, useState } from 'react';\nimport _ from 'lodash';\nimport { Omit } from 'Types';\nimport { buildClassName as bcn, sleep } from '../../../../../utils/helpers';\nimport { CloseButton } from '../../../../../components';\nimport {\n EOrderStatuses,\n TOrder,\n TGetOrderStatusResponse,\n TPaymentCBResponse,\n TSignOrderResponse,\n EFirstPaymentCBStatuses,\n} from '../../../../../utils/network/types';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport Success from './Success';\nimport Retry from './Retry';\nimport { LoadingSpinner } from '../../../../../libraries/withLoader';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport StripeContainer from '../../../../StripeFormContainer/StripeFormContainer';\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.PaymentIframeModal;\n\nenum Steps {\n BILLING = 0,\n PAYMENT = 1,\n RETRY_PAYMENT = 2,\n SUCCESS = 3,\n}\n\ntype PendingOrder = {\n data: TOrder;\n number: string;\n validation: TSignOrderResponse | null;\n};\ntype PendingPayment = TPaymentCBResponse;\n\ninterface IProps {\n orderReference: string | null;\n checkOrderStatus: (\n orderNumber: string,\n ) => Promise<TGetOrderStatusResponse | RequestError>;\n onClose: (\n validated: EFirstPaymentCBStatuses,\n error?: { title: string; text: string },\n ) => void;\n order: PendingOrder | null;\n previousOrder: TOrder | null;\n pay: (order: TOrder) => Promise<TPaymentCBResponse | RequestError>;\n setLoading: (loading: boolean) => void;\n}\n\ninterface IState {\n billingIframeSrc: string | null;\n firstBillingLock: boolean;\n firstPaymentLock: boolean;\n order: PendingOrder | null;\n payment: PendingPayment | null;\n paymentIframeSrc: string | null;\n steps: [Steps, Steps];\n stripe: Pick<TPaymentCBResponse, 'stripe'> | undefined;\n stripeErrorMessage: string;\n}\n\nconst initialState: IState = {\n billingIframeSrc: null,\n firstBillingLock: true,\n firstPaymentLock: true,\n order: null,\n payment: null,\n paymentIframeSrc: null,\n steps: [Steps.BILLING, Steps.BILLING],\n stripe: undefined,\n stripeErrorMessage: '',\n};\n\nconst baseClassName = 'payment-iframe-modal';\nconst iframeClassName = bcn([baseClassName, 'iframe']);\nconst iframeRegex: RegExp = /<iframe.*?src=\"(.*?)\"/;\n\nfunction parseIframeSrc(srcStr: string = ''): string {\n const src: RegExpExecArray | null = iframeRegex.exec(srcStr || '');\n return src ? src[1] : '';\n}\n\nclass PaymentIframeModal extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.handleBillingOnLoad = this.handleBillingOnLoad.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleFinalize = this.handleFinalize.bind(this);\n this.handlePaymentOnLoad = this.handlePaymentOnLoad.bind(this);\n this.attemptPayment = this.attemptPayment.bind(this);\n this.handleSuccess = this.handleSuccess.bind(this);\n this.closeModalButton = this.closeModalButton.bind(this);\n this.state = { ...initialState };\n }\n componentDidMount() {\n const { order, previousOrder } = this.props;\n const { steps } = this.state;\n let target: PendingOrder | null = order;\n if (!target && !!previousOrder) {\n target = {\n data: previousOrder,\n number: _.get(previousOrder, 'orderReference', ''),\n validation: null,\n };\n if (!target.number) {\n console.error('Could not retrieve previous order number');\n return;\n }\n }\n if (!target) return;\n const requiresPayment =\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.PENDING ||\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.IN_FAILURE ||\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.CANCELED;\n const hasCompletedOrder =\n target.data.orderStatus === EOrderStatuses.FINALIZED ||\n target.data.orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC;\n const hasCompletedPayment =\n target.data.firstPaymentCBStatus ===\n EFirstPaymentCBStatuses.FINALIZED;\n const payOnly =\n hasCompletedOrder && requiresPayment && !hasCompletedPayment;\n if (hasCompletedPayment) {\n this.setState({ steps: [steps[1], Steps.SUCCESS] });\n } else if (payOnly) {\n this.setState(\n {\n order: target,\n steps: [Steps.PAYMENT, Steps.RETRY_PAYMENT],\n },\n () => {\n this.attemptPayment();\n },\n );\n } else {\n this.setState({\n billingIframeSrc: !!target\n ? parseIframeSrc(_.get(target, 'validation.iframe', ''))\n : null,\n order: target,\n });\n }\n }\n componentDidUpdate(prevProps: IProps) {\n const { order: prevOrder } = prevProps;\n const { order } = this.props;\n if (!_.isEqual(prevOrder, order)) {\n this.setState({\n billingIframeSrc: !!order\n ? parseIframeSrc(_.get(order, 'validation.iframe', ''))\n : null,\n order,\n });\n }\n }\n async attemptPayment() {\n this.setState({ payment: null, paymentIframeSrc: null });\n const { pay } = this.props;\n const { order, steps } = this.state;\n if (!order) {\n console.error('Cannot load payment: missing order data');\n this.setState({ steps: [steps[1], Steps.RETRY_PAYMENT] });\n return;\n }\n const res: TPaymentCBResponse | RequestError = await this.load(\n async () => {\n return await pay({\n ...order.data,\n externalReference: _.get(\n order,\n 'validation.orderExternalReference',\n '',\n ),\n orderReference: order.number,\n });\n },\n );\n if (res instanceof RequestError) {\n console.error('Could not load payment');\n this.setState({ steps: [steps[1], Steps.RETRY_PAYMENT] });\n return;\n }\n this.setState({\n payment: res,\n paymentIframeSrc: parseIframeSrc(res.iframe),\n steps: [steps[1], Steps.PAYMENT],\n });\n }\n async handleBillingOnLoad() {\n const { checkOrderStatus } = this.props;\n const { firstBillingLock, order } = this.state;\n if (!order) {\n this.handleCancel(EFirstPaymentCBStatuses.IN_FAILURE, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.missingOrderNumber,\n });\n return;\n } else if (firstBillingLock) {\n this.setState({ firstBillingLock: false });\n return;\n }\n const res: TGetOrderStatusResponse | RequestError = await this.load(\n async () => {\n return await checkOrderStatus(order.number);\n },\n );\n if (res instanceof RequestError) {\n this.handleCancel(EFirstPaymentCBStatuses.IN_FAILURE, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.orderStatusFetch,\n });\n return;\n }\n const isSuccess =\n res.orderStatus === EOrderStatuses.FINALIZED ||\n res.orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC;\n const isIdle = res.orderStatus === EOrderStatuses.IN_PROGRESS;\n const isFailure =\n res.orderStatus === EOrderStatuses.CANCELED ||\n res.orderStatus === EOrderStatuses.IN_FAILURE;\n const requiresPayment =\n res.firstPaymentCBStatus === EFirstPaymentCBStatuses.PENDING;\n if (isSuccess && requiresPayment) {\n this.attemptPayment();\n } else if (isSuccess && !requiresPayment) {\n this.handleSuccess();\n } else if (!isIdle || isFailure) {\n this.handleCancel(res.firstPaymentCBStatus, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.signatureError,\n });\n } else if (!isIdle) {\n console.error('Signature: Unexpected status');\n this.handleCancel(res.firstPaymentCBStatus, {\n title: Wording.Errors.signatureTitle,\n text: Wording.Errors.unexpected,\n });\n }\n }\n handleCancel(\n paymentStatus: EFirstPaymentCBStatuses,\n error?: { title: string; text: string },\n ) {\n const { onClose } = this.props;\n onClose(paymentStatus, error);\n }\n handleFinalize() {\n const { onClose } = this.props;\n onClose(EFirstPaymentCBStatuses.PENDING);\n }\n async handlePaymentOnLoad(recursionCount: number = 0) {\n const { checkOrderStatus } = this.props;\n const { firstPaymentLock, order, steps } = this.state;\n if (!order) {\n this.handleCancel(EFirstPaymentCBStatuses.IN_FAILURE, {\n title: Wording.Errors.paymentTitle,\n text: Wording.Errors.missingOrderNumber,\n });\n return;\n } else if (firstPaymentLock) {\n this.setState({ firstPaymentLock: false });\n return;\n } else if (\n steps[1] === Steps.PAYMENT &&\n steps[0] === Steps.RETRY_PAYMENT\n ) {\n this.setState({ steps: [Steps.PAYMENT, Steps.PAYMENT] });\n return;\n }\n const res: TGetOrderStatusResponse | RequestError = await this.load(\n async () => {\n return await checkOrderStatus(order.number);\n },\n );\n if (res instanceof RequestError) {\n console.error('Could not get order status');\n return;\n }\n const status: EFirstPaymentCBStatuses | undefined = _.get(\n res,\n 'firstPaymentCBStatus',\n );\n if (status === EFirstPaymentCBStatuses.FINALIZED) {\n this.handleSuccess();\n } else if (status === EFirstPaymentCBStatuses.PENDING) {\n console.log('Order payment pending');\n } else if (status === EFirstPaymentCBStatuses.IN_FAILURE) {\n if (recursionCount < 2) {\n console.log('Order payment in progress');\n await sleep(1000);\n await this.handlePaymentOnLoad(recursionCount + 1);\n } else {\n this.handleCancel(status, {\n title: Wording.Errors.paymentTitle,\n text: Wording.Errors.paymentStatusRefresh,\n });\n }\n } else if (status) {\n this.setState({ steps: [steps[1], Steps.RETRY_PAYMENT] });\n } else {\n console.error('Payment: Unexpected status');\n this.handleCancel(status, {\n title: Wording.Errors.paymentTitle,\n text: Wording.Errors.unexpected,\n });\n }\n }\n async handleSuccess() {\n const { onClose } = this.props;\n const { steps } = this.state;\n this.setState({\n steps: [steps[1], Steps.SUCCESS],\n stripeErrorMessage: '',\n });\n await sleep(5000);\n onClose(EFirstPaymentCBStatuses.FINALIZED);\n }\n async load<T>(fn: () => Promise<T>): Promise<T> {\n const { setLoading } = this.props;\n setLoading(true);\n const res = await fn();\n setLoading(false);\n return res;\n }\n closeModalButton() {\n const { onClose } = this.props;\n if (this.state.steps[1] === Steps.SUCCESS) {\n onClose(EFirstPaymentCBStatuses.FINALIZED);\n } else {\n onClose(EFirstPaymentCBStatuses.PENDING);\n }\n }\n render() {\n const {\n billingIframeSrc,\n steps,\n payment,\n stripeErrorMessage,\n } = this.state;\n const currentStep = steps[1];\n const { orderReference } = this.props;\n return (\n <div className={baseClassName}>\n <CloseButton onClick={this.closeModalButton} />\n {currentStep === Steps.BILLING && (\n <iframe\n className={iframeClassName}\n title=\"payment-modal\"\n src={billingIframeSrc || ''}\n id=\"payment-modal\"\n onLoad={() => {\n this.handleBillingOnLoad();\n }}\n />\n )}\n {currentStep === Steps.PAYMENT && payment && payment.stripe && (\n <StripeContainer\n stripeInformations={payment.stripe}\n handleClose={() =>\n this.handleCancel(EFirstPaymentCBStatuses.PENDING)\n }\n onFormValidate={(isSuccess, errMsg) => {\n if (isSuccess) this.handleSuccess();\n else {\n this.setState({\n steps: [steps[1], Steps.RETRY_PAYMENT],\n stripeErrorMessage: errMsg || '',\n });\n }\n }}\n />\n )}\n {currentStep === Steps.RETRY_PAYMENT && (\n <Retry\n onFinalize={this.handleFinalize}\n onRetry={this.attemptPayment}\n ErrorMessage={stripeErrorMessage}\n />\n )}\n {currentStep === Steps.SUCCESS && (\n <Success orderReference={orderReference} />\n )}\n </div>\n );\n }\n}\n\ntype ILoaderProps = Omit<IProps, 'setLoading'>;\n\nconst PaymentWithLoader: FC<ILoaderProps> = (props: ILoaderProps) => {\n const [loading, setLoading] = useState(false);\n const toggleLoading = (toggled: boolean) => setLoading(toggled);\n return (\n <div className=\"payment-iframe\">\n {loading && (\n <div className=\"payment-loader\">\n <LoadingSpinner />\n </div>\n )}\n <PaymentIframeModal {...props} setLoading={toggleLoading} />\n </div>\n );\n};\n\nexport default PaymentWithLoader;\n","import React, { ChangeEvent, Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport { SelectOption } from 'Types';\nimport {\n CustomButton,\n CustomInput,\n CustomRadio,\n CustomSelect,\n PostalCodeSelect,\n} from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport { toIsc as isc, toColonHeading as tch } from '../../../../../utils/text';\nimport {\n EHeatingTypes,\n EHousingTypes,\n ERateOptions,\n EResidenceTypes,\n TAddress,\n} from '../../../../../utils/network/types';\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.CustomerFormModal;\nconst baseClassName = 'customer-survey-modal';\nconst buttonsClassName = 'buttons';\nconst modeToggleClassName = 'mode-toggle';\nconst rateRadiosClassName = 'rate-radios';\n\ninterface IProps {\n onCancel: () => void;\n onValidation: (\n accomodationType: EResidenceTypes,\n area: number,\n address: TAddress,\n consumption: number,\n heatingType: EHeatingTypes,\n inhabitants: number,\n livingIn: EHousingTypes,\n rateOption: ERateOptions,\n ) => void;\n}\n\ninterface IState {\n accomodationType: SelectOption<EResidenceTypes> | null;\n area: SelectOption<number> | null;\n address: TAddress | null;\n consumption: string;\n heatingType: SelectOption<EHeatingTypes> | null;\n inhabitants: SelectOption<number> | null;\n livingIn: SelectOption<EHousingTypes> | null;\n rateOption: ERateOptions;\n}\n\nconst initialState: IState = {\n accomodationType: null,\n area: null,\n address: null,\n consumption: '',\n heatingType: null,\n inhabitants: null,\n livingIn: null,\n\n rateOption: ERateOptions.UNKNOWN,\n};\n\nconst accomodationOptions: Array<SelectOption<EResidenceTypes>> = [\n [Wording.accomodationTypes.primary, EResidenceTypes.PRINCIPAL],\n [Wording.accomodationTypes.secondary, EResidenceTypes.SECONDARY],\n].map((accomodation, i) => ({\n id: i,\n label: accomodation[0],\n value: accomodation[1] as EResidenceTypes,\n}));\nconst areaOptions: Array<SelectOption<number>> = [\n [0, 20],\n ..._.range(20, 200, 10).map(gap => [gap + 1, gap + 10]),\n].map((opt, i) => ({\n id: i,\n label: `${opt[0]} ${Wording.to} ${opt[1]}`,\n value: opt[1],\n}));\nconst heatingTypeOptions: Array<SelectOption<EHeatingTypes>> = [\n [Wording.heatingTypes.electricity, EHeatingTypes.ELECTRICITY],\n [Wording.heatingTypes.gas, EHeatingTypes.GAS],\n [Wording.heatingTypes.common, EHeatingTypes.COLLECTIVE],\n].map((opt, i) => ({\n id: i,\n label: opt[0],\n value: opt[1] as EHeatingTypes,\n}));\nconst inhabitantsOptions: Array<SelectOption<number>> = _.range(1, 11).map(\n (opt, i) => ({\n id: i,\n label: `${opt}`,\n value: opt,\n }),\n);\nconst livingInOptions: Array<SelectOption<EHousingTypes>> = [\n [Wording.livingInTypes.apartment, EHousingTypes.APPARTMENT],\n [Wording.livingInTypes.house, EHousingTypes.HOUSE],\n].map((opt, i) => ({\n id: i,\n label: opt[0],\n value: opt[1] as EHousingTypes,\n}));\n\nclass CustomerSurveyModal extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = { ...initialState };\n this.handleCancel = this.handleCancel.bind(this);\n this.handleValidationClick = this.handleValidationClick.bind(this);\n this.handleConsumptionInput = this.handleConsumptionInput.bind(this);\n this.handleAccomodationTypeSelection = this.handleAccomodationTypeSelection.bind(\n this,\n );\n this.handleAreaSelection = this.handleAreaSelection.bind(this);\n this.handleHeatingTypeSelection = this.handleHeatingTypeSelection.bind(\n this,\n );\n this.handleInhabitantsSelection = this.handleInhabitantsSelection.bind(\n this,\n );\n this.handleLivingInSelection = this.handleLivingInSelection.bind(this);\n this.handlePostalCodeSelection = this.handlePostalCodeSelection.bind(\n this,\n );\n this.handleRateOptionSelection = this.handleRateOptionSelection.bind(\n this,\n );\n }\n handleCancel() {\n const { onCancel } = this.props;\n this.setState({ ...initialState });\n onCancel();\n }\n handleRateOptionSelection(rateOption: ERateOptions) {\n this.setState({ rateOption });\n }\n handleValidationClick() {\n const { onValidation } = this.props;\n if (this.hasValidInput()) {\n const state = this.state;\n try {\n onValidation(\n _.get(state, 'accomodationType.value', ''),\n parseInt(_.get(state, 'area.value', '0'), 10),\n _.get(state, 'address') as TAddress,\n parseInt(_.get(state, 'consumption', '0'), 10),\n _.get(state, 'heatingType.value', ''),\n parseInt(_.get(state, 'inhabitants.value', '0'), 10),\n _.get(state, 'livingIn.value', ''),\n _.get(state, 'rateOption') as ERateOptions,\n );\n } catch (err) {\n console.error(err);\n }\n }\n }\n handleConsumptionInput(e: ChangeEvent<HTMLInputElement>) {\n const consumption = _.get(e, 'target.value', '');\n this.setState({ consumption });\n }\n handleAccomodationTypeSelection(opt: SelectOption<EResidenceTypes>) {\n this.setState({ accomodationType: opt });\n }\n handleAreaSelection(opt: SelectOption<number>) {\n this.setState({ area: opt });\n }\n handleHeatingTypeSelection(opt: SelectOption<EHeatingTypes>) {\n this.setState({ heatingType: opt });\n }\n handleInhabitantsSelection(opt: SelectOption<number>) {\n this.setState({ inhabitants: opt });\n }\n handleLivingInSelection(opt: SelectOption<EHousingTypes>) {\n this.setState({ livingIn: opt });\n }\n handlePostalCodeSelection(address: TAddress) {\n this.setState({ address });\n }\n\n hasValidInput() {\n const {\n accomodationType,\n area,\n address,\n heatingType,\n inhabitants,\n livingIn,\n } = this.state;\n const inputs = [\n accomodationType,\n area,\n address,\n heatingType,\n inhabitants,\n livingIn,\n ];\n const validCount = _.filter(inputs, input => !_.isEmpty(input)).length;\n const valid = [...inputs].length === validCount;\n return valid;\n }\n render() {\n const { address, rateOption } = this.state;\n const city = _.get(address, 'townName', '');\n const hasValidInput = this.hasValidInput();\n return (\n <div className={baseClassName}>\n <h3>{Wording.title}</h3>\n\n <Fragment>\n <PostalCodeSelect\n onSelection={this.handlePostalCodeSelection}\n text={Wording.postalCode}\n />\n <CustomInput\n disabled={true}\n text={Wording.city}\n value={city}\n />\n <CustomSelect\n handleChangeSelect={this.handleLivingInSelection}\n options={livingInOptions}\n text={Wording.livingIn}\n />\n <CustomSelect\n handleChangeSelect={\n this.handleAccomodationTypeSelection\n }\n options={accomodationOptions}\n text={Wording.accomodationType}\n />\n <CustomSelect\n handleChangeSelect={this.handleAreaSelection}\n options={areaOptions}\n text={Wording.area}\n />\n <CustomSelect\n handleChangeSelect={this.handleInhabitantsSelection}\n options={inhabitantsOptions}\n text={Wording.inhabitants}\n />\n <CustomSelect\n handleChangeSelect={this.handleHeatingTypeSelection}\n options={heatingTypeOptions}\n text={Wording.heatingType}\n />\n </Fragment>\n <div className={bcn([baseClassName, rateRadiosClassName])}>\n <label>{isc(Wording.rateOptions.prompt)}</label>\n <CustomRadio\n checked={rateOption === ERateOptions.HIGH_LOW}\n handleCheck={() => {\n this.handleRateOptionSelection(\n ERateOptions.HIGH_LOW,\n );\n }}\n text={Wording.rateOptions.highLow}\n value={ERateOptions.HIGH_LOW}\n />\n <CustomRadio\n checked={rateOption === ERateOptions.TOTAL_HOUR}\n handleCheck={() => {\n this.handleRateOptionSelection(\n ERateOptions.TOTAL_HOUR,\n );\n }}\n text={Wording.rateOptions.totalHours}\n value={ERateOptions.TOTAL_HOUR}\n />\n <CustomRadio\n checked={rateOption === ERateOptions.UNKNOWN}\n handleCheck={() => {\n this.handleRateOptionSelection(\n ERateOptions.UNKNOWN,\n );\n }}\n text={Wording.rateOptions.unknown}\n value={ERateOptions.UNKNOWN}\n />\n </div>\n <div className={bcn([baseClassName, buttonsClassName])}>\n <CustomButton\n color={'gray'}\n onClick={this.handleCancel}\n title={Wording.cancel}\n />\n <CustomButton\n color={hasValidInput ? 'orange' : 'gray'}\n onClick={\n hasValidInput\n ? this.handleValidationClick\n : () => {}\n }\n title={Wording.validate}\n />\n </div>\n </div>\n );\n }\n}\n\nexport default CustomerSurveyModal;\n","import CustomerSurveyModal from './CustomerSurveyModal';\nexport default CustomerSurveyModal;\n","import React, { FC } from 'react';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport Icon from '../../../../../assets/icons/ic-logo-wekiwi.svg';\n\nconst Wording =\n WordingConstant.AdminSubscriptionContainer.PaymentIframeModal.Success;\nconst baseClassName: string = 'success';\n\ninterface IProps {\n orderReference: string | null;\n}\n\nconst Success: FC<IProps> = ({ orderReference }) => {\n return (\n <div className={baseClassName}>\n <img src={Icon} />\n <span>{Wording.congratulations}</span>\n <span>{Wording.contract}</span>\n {orderReference !== null && (\n <div className=\"orderNumberDisplay\">\n {' '}\n Votre numéro de souscription a bien été créé :{' '}\n <strong>{orderReference}</strong>\n </div>\n )}\n </div>\n );\n};\n\nexport default Success;\n","import React, { FC } from 'react';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport { CustomButton } from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { toColonHeading as tch } from '../../../../../utils/text';\nimport Icon from '../../../../../assets/icons/ic-logo-wekiwi.svg';\n\ninterface IProps {\n onFinalize: () => void;\n onRetry: () => void;\n ErrorMessage?: string;\n}\n\nconst Wording =\n WordingConstant.AdminSubscriptionContainer.PaymentIframeModal.Retry;\nconst baseClassName: string = 'retry';\nconst logoClassName: string = bcn([baseClassName, 'logo']);\nconst buttonsClassName: string = bcn([baseClassName, 'buttons']);\nconst finalizeClassName: string = bcn([buttonsClassName, 'finalize']);\n\nconst Retry: FC<IProps> = (props: IProps) => {\n const { onFinalize, onRetry, ErrorMessage } = props;\n return (\n <div className={baseClassName}>\n <div className={logoClassName}>\n <img src={Icon} />\n <span>{Wording.title}</span>\n </div>\n <span>{ErrorMessage || Wording.refused}</span>\n <p>{Wording.contract}</p>\n <p>{tch(Wording.options)}</p>\n <div className={buttonsClassName}>\n <div className={finalizeClassName}>\n <CustomButton\n color={'gray'}\n onClick={onFinalize}\n title={Wording.finalize}\n />\n <p>{Wording.callback}</p>\n </div>\n <CustomButton\n color={'orange'}\n onClick={onRetry}\n title={Wording.retry}\n />\n </div>\n </div>\n );\n};\n\nexport default Retry;\n","import React from 'react';\n\nimport { loadStripe } from '@stripe/stripe-js';\nimport { Elements } from '@stripe/react-stripe-js';\n\nimport { StripeForm } from '../../components';\nimport config from '../../utils/config';\n\nconst stripeProm = loadStripe(config.Stripe.publicKey || '');\n\ntype StripeContainerProps = {\n stripeInformations: {\n clientSecret: string;\n billName: string;\n amount: string;\n };\n onFormValidate: (sucess: boolean, errMsg?: string) => void;\n handleClose: () => void;\n};\n\nconst StripeContainer = ({\n stripeInformations,\n onFormValidate,\n handleClose,\n}: StripeContainerProps) => {\n if (!stripeInformations || !stripeInformations.clientSecret) {\n return <div>Stripe loaded with invalid argument</div>;\n }\n const { clientSecret, billName, amount } = stripeInformations;\n\n return (\n <Elements stripe={stripeProm} options={{ clientSecret }}>\n <StripeForm\n handleClose={handleClose}\n onFormValidate={onFormValidate}\n clientSecret={clientSecret}\n clientName={billName}\n amount={amount}\n />\n </Elements>\n );\n};\n\nexport default StripeContainer;\n","import PaymentIframeModal from './PaymentIframeModal';\nexport default PaymentIframeModal;\n","import React, { FC } from 'react';\nimport { CustomButton } from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\n\ninterface IProps {\n onBack: () => void;\n onConfirm: () => void;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.ResetModal;\nconst baseClassName = 'reset-modal';\nconst buttonsClassName = bcn([baseClassName, 'buttons']);\n\nconst ResetModal: FC<IProps> = (props: IProps) => {\n const { onBack, onConfirm } = props;\n return (\n <div className={baseClassName}>\n <span>{Wording.prompt}</span>\n <div className={buttonsClassName}>\n <CustomButton\n color={'gray'}\n onClick={onBack}\n title={Wording.back}\n />\n <CustomButton\n color={'orange'}\n onClick={() => {\n onConfirm();\n (document as any).location = window.location.href.split(\n '?',\n )[0];\n }}\n title={Wording.confirm}\n />\n </div>\n </div>\n );\n};\n\nexport default ResetModal;\n","import ResetModal from './ResetModal';\nexport default ResetModal;\n","import React, { ChangeEvent, Component } from 'react';\nimport _ from 'lodash';\nimport {\n AddressSelect,\n CoordsInputs,\n CustomDate,\n CustomInput,\n CustomRadio,\n CustomSelect,\n Group,\n PostalCodeSelect,\n} from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n buildClassName as bcn,\n formatFirstNameString,\n formatLastNameString,\n formatSIRETString,\n formatPhoneNumberString,\n getFormattedDateToBackEnd,\n isValidName,\n isValidEmail,\n isValidPhone,\n isValidString,\n isValidBirthDate,\n isValidBirthDatePro,\n isLimitedAuthorization,\n isEmptySelectOption,\n parseQueryParams,\n getAPEFromObject,\n} from '../../../../../utils/helpers';\nimport LegalStatuses from '../../../../../assets/legal_statuses.json';\nimport {\n ECivilities,\n ECompanyTypes,\n TAddress,\n TCustomerContact,\n} from '../../../../../utils/network/types';\nimport SearchService from '../../../../../utils/search';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport { SelectOption, TSchemaProps } from 'Types';\nimport Data from './Data';\nimport { setState } from '../../../../../utils/reactHelpers';\n\nimport countries from '../../../../../utils/countries.json';\n\nimport accents from 'remove-accents';\n\ninterface IProps {\n initialParams?: Data;\n isIndividual: boolean;\n onIsIndividualToggle: (is: boolean) => void;\n onValidationStatusChange: (\n validated: boolean,\n customer: TCustomerContact,\n ) => void;\n searchSiret: (value: string) => Promise<any | null>;\n groupList: string[];\n schemaProps: TSchemaProps;\n handleGroupSelection: (group: SelectOption<string>) => void;\n}\n\ninterface IState {\n firstNameValue: string;\n lastNameValue: string;\n birthDatePick: Date | undefined;\n birthDatePickPro: Date | undefined;\n businessNameValue: string;\n SIRETValue: string;\n mailAddressValue: string;\n phoneNumberValue: string;\n identicalAddressToggleState: boolean;\n addressAddressValue: string;\n address: TAddress | null;\n firstNameError: string;\n lastNameError: string;\n birthDateError: string;\n birthDateErrorPro: string;\n businessNameError: string;\n SIRETError: string;\n mailAddressError: string;\n phoneNumberError: string;\n addressAddressError: string;\n addressError: string;\n civilStatusSelection: ECivilities | null;\n legalStatusSelection: SelectOption<ECompanyTypes>;\n groupSelection: string | SelectOption<any>;\n APE: string;\n defaultGroup: string;\n groupSelected: string;\n groupError: string;\n birthTownPostalCode: string;\n birthTownTownName: string;\n birthTownCountry: string;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.ClientData;\nconst baseClassName = 'client-data-section';\nconst mainClassName = 'main';\nconst legalStatuses: Array<SelectOption<ECompanyTypes>> = _.map(\n LegalStatuses as Array<{ code: ECompanyTypes; nom: string }>,\n (status, i) => {\n return {\n id: `${i}`,\n label: `${status.code} - ${status.nom}`,\n value: status.code,\n };\n },\n);\nconst inputRefreshDelay = 500;\nconst validationDelay = 1000;\nconst birthDateText: string = `${Wording.inputs.birthDate}`;\nconst businessNameText: string = `${Wording.inputs.businessName}`;\nconst legalStatusText: string = `${Wording.inputs.legalStatus}`;\nconst SIRETText: string = `${Wording.inputs.SIRET}`;\nconst mailAddressText: string = `${Wording.inputs.mailAddress}`;\nconst phoneNumberText: string = `${Wording.inputs.phoneNumber}`;\n\nfunction parseAdressNumber(addressStr: string): string {\n const reg = /^[0-9]+ /;\n const match: string = _.get(reg.exec(addressStr), '0', '');\n return match;\n}\n\nfunction hasError(err: string): boolean {\n return err.replace(/[\\s]/g, '').length === 0;\n}\n\nconst defaultBirthTown = {\n country: '',\n netArea: '',\n number: '',\n postalCode: '',\n street: '',\n townName: '',\n};\n\nclass ClientDataSection extends Component<IProps, IState> {\n private pendingValidation = null;\n constructor(props: IProps) {\n super(props);\n\n (this as any).searchService = new SearchService().setRaw(true);\n\n const { schemaProps } = this.props;\n this.state = {\n firstNameValue: '',\n lastNameValue: '',\n birthDatePick: undefined,\n birthDatePickPro: undefined,\n businessNameValue: '',\n SIRETValue: '',\n mailAddressValue: '',\n phoneNumberValue: '',\n identicalAddressToggleState: true,\n addressAddressValue: '',\n address: null,\n firstNameError: '',\n lastNameError: '',\n birthDateError: '',\n birthDateErrorPro: '',\n businessNameError: '',\n groupError: '',\n SIRETError: '',\n mailAddressError: '',\n phoneNumberError: '',\n addressAddressError: '',\n addressError: '',\n civilStatusSelection: ECivilities.MR,\n legalStatusSelection: legalStatuses[0],\n APE: '',\n defaultGroup: '',\n groupSelected: '',\n birthTownCountry: '',\n birthTownPostalCode: '',\n birthTownTownName: '',\n\n groupSelection: isLimitedAuthorization(schemaProps)\n ? {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n }\n : '',\n };\n\n this.handleBirthTownSelection = this.handleBirthTownSelection.bind(\n this,\n );\n this.handleCoordsInput = this.handleCoordsInput.bind(this);\n this.handleLegalStatusSelection = this.handleLegalStatusSelection.bind(\n this,\n );\n this.handleGroupSelection = this.handleGroupSelection.bind(this);\n this.handlePostalCodeSelection = this.handlePostalCodeSelection.bind(\n this,\n );\n this.handleBirthDatePick = this.handleBirthDatePick.bind(this);\n this.handleBirthDatePickPro = this.handleBirthDatePickPro.bind(this);\n this.handleIdenticalAddressToggle = this.handleIdenticalAddressToggle.bind(\n this,\n );\n this.handleBusinessNameInput = this.handleBusinessNameInput.bind(this);\n this.handleSIRETInput = this.handleSIRETInput.bind(this);\n this.handleMailAddressInput = this.handleMailAddressInput.bind(this);\n this.handlePhoneNumberInput = this.handlePhoneNumberInput.bind(this);\n this.handleAddressInput = this.handleAddressInput.bind(this);\n this.handleBusinessNameChange = this.handleBusinessNameChange.bind(\n this,\n );\n this.handleSIRETChange = this.handleSIRETChange.bind(this);\n this.handleMailAddressChange = this.handleMailAddressChange.bind(this);\n this.handlePhoneNumberChange = this.handlePhoneNumberChange.bind(this);\n this.handleAddressChange = this.handleAddressChange.bind(this);\n this.hasValidInput = this.hasValidInput.bind(this);\n this.handleFirstNameError = _.debounce(\n this.handleFirstNameError.bind(this),\n inputRefreshDelay,\n );\n this.handleLastNameError = _.debounce(\n this.handleLastNameError.bind(this),\n inputRefreshDelay,\n );\n /*this.handleGroupError = _.debounce(\n this.handleGroupError.bind(this),\n inputRefreshDelay\n )*/\n this.handleBusinessNameError = _.debounce(\n this.handleBusinessNameError.bind(this),\n inputRefreshDelay,\n );\n this.handleSIRETError = _.debounce(\n this.handleSIRETError.bind(this),\n inputRefreshDelay,\n ) as any;\n this.handleMailAddressError = _.debounce(\n this.handleMailAddressError.bind(this),\n inputRefreshDelay,\n );\n this.handlePhoneNumberError = _.debounce(\n this.handlePhoneNumberError.bind(this),\n inputRefreshDelay,\n );\n this.handleAddressError = _.debounce(\n this.handleAddressError.bind(this),\n inputRefreshDelay,\n );\n this.validate = _.throttle(this.validate, validationDelay) as any;\n }\n componentDidMount() {\n this.init();\n\n this.initWithUrl();\n }\n\n componentWillUnmount = () => {\n (this as any).searchService.unsubscribe();\n };\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n const { initialParams } = this.props;\n\n if (!_.isEqual(JSON.stringify(prevState), JSON.stringify(this.state))) {\n this.validate();\n }\n }\n\n async initWithUrl() {\n const { handleGroupSelection, groupList, searchSiret } = this.props;\n const { defaultGroup, groupSelection } = this.state;\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n\n const checkData = (dt: number | string | undefined) =>\n !!dt ? dt.toString() : '';\n\n const channel = params.get('channel');\n\n const civility = params.get('civility');\n const firstName = params.get('firstName');\n const lastName = params.get('lastName');\n const email = params.get('email');\n const phone = params.get('phone');\n const birthdate = params.get('birthdate');\n\n const identificationNumber = params.get('identificationNumber');\n const activityCode = params.get('activityCode');\n const companyName = params.get('companyName');\n const companyType = params.get('companyType');\n\n const birthCountry = params.get('birthCountry');\n const birthPostalCode = params.get('birthPostalCode');\n const birthTown = params.get('birthTown');\n\n const prepareControlledObject: {\n defaultGroup: string;\n groupSelection: string | SelectOption<any>;\n APE: string;\n birthTownTownName: string;\n } = {\n birthTownTownName: checkData(birthTown),\n APE: checkData(activityCode),\n defaultGroup,\n groupSelection,\n };\n\n if (channel && groupList.includes('channel')) {\n prepareControlledObject.defaultGroup = channel.toString();\n\n prepareControlledObject.groupSelection = {\n id: 0,\n label: channel as string,\n value: channel as string,\n };\n }\n\n // call search siret if activity code is empty\n if (!!identificationNumber && !activityCode) {\n const value = formatSIRETString(identificationNumber.toString());\n let res: any;\n if (value.length === 14) {\n res = await searchSiret(value);\n this.handleSIRETError(res);\n }\n\n prepareControlledObject.APE = getAPEFromObject(res);\n }\n\n // call getTown if birthTown is undefined\n if (\n !!birthCountry &&\n birthCountry.toString().toUpperCase() === 'FRANCE' &&\n !!birthPostalCode &&\n !birthTown\n ) {\n const res = await (this as any).searchService\n .doSearch(birthPostalCode.toString())\n .toPromise();\n\n if (res) {\n const obj = res.find(\n ({ postalCode }: any) =>\n postalCode === birthPostalCode.toString(),\n );\n prepareControlledObject.birthTownTownName = obj\n ? obj.townName\n : '';\n }\n }\n\n if (!!channel || !!firstName || !!lastName || !!email) {\n await setState(this, {\n SIRETValue: checkData(identificationNumber),\n firstNameValue: checkData(firstName),\n civilStatusSelection: civility as ECivilities,\n lastNameValue: checkData(lastName),\n mailAddressValue: checkData(email),\n phoneNumberValue:\n String(phone)[0] !== '0' && phone !== ''\n ? `0${phone}`\n : String(phone) || '',\n\n birthDatePick: birthdate ? new Date(birthdate) : undefined,\n birthDatePickPro: birthdate ? new Date(birthdate) : undefined,\n businessNameValue: checkData(companyName),\n legalStatusSelection:\n _.find(\n legalStatuses,\n (status: SelectOption<ECompanyTypes>) => {\n return companyType === status.value;\n },\n ) || legalStatuses[0],\n birthTownCountry: checkData(birthCountry).toUpperCase(),\n birthTownPostalCode: checkData(birthPostalCode),\n\n ...prepareControlledObject,\n });\n\n if (!!channel) {\n handleGroupSelection({\n id: 0,\n label: channel as string,\n value: channel as string,\n });\n }\n }\n }\n\n async init() {\n const { initialParams, handleGroupSelection, schemaProps } = this.props;\n if (!!initialParams) {\n await setState(this, {\n identicalAddressToggleState: !initialParams.address,\n });\n await setState(this, {\n firstNameValue: initialParams.firstNameValue,\n lastNameValue: initialParams.lastNameValue,\n birthDatePick: initialParams.birthDatePick,\n birthDatePickPro: initialParams.birthDatePickPro,\n businessNameValue: initialParams.businessNameValue || '',\n SIRETValue: initialParams.SIRETValue || '',\n mailAddressValue: initialParams.mailAddressValue,\n phoneNumberValue: initialParams.phoneNumberValue,\n identicalAddressToggleState:\n initialParams.identicalAddressToggleState,\n addressAddressValue: initialParams.addressAddressValue,\n address: initialParams.address,\n civilStatusSelection: initialParams.civilStatus,\n legalStatusSelection:\n _.find(\n legalStatuses,\n (status: SelectOption<ECompanyTypes>) => {\n return initialParams.legalStatus === status.value;\n },\n ) || legalStatuses[0],\n APE: initialParams.APE || '',\n defaultGroup: initialParams.defaultGroup || '',\n groupSelected: this.state.groupSelected || '',\n birthTownCountry:\n (initialParams.birthTown &&\n initialParams.birthTown.country) ||\n '',\n birthTownTownName:\n (initialParams.birthTown &&\n initialParams.birthTown.townName) ||\n '',\n birthTownPostalCode:\n initialParams.birthTown &&\n initialParams.birthTown.postalCode\n ? initialParams.birthTown.postalCode.toString()\n : '',\n groupSelection: initialParams.defaultGroup\n ? ({\n id: 0,\n label: initialParams.defaultGroup,\n value: initialParams.defaultGroup,\n } as SelectOption<string>)\n : '',\n });\n\n if (initialParams.defaultGroup !== '') {\n handleGroupSelection({\n id: 0,\n label: initialParams.defaultGroup,\n value: initialParams.defaultGroup,\n });\n }\n }\n\n if (isLimitedAuthorization(schemaProps)) {\n handleGroupSelection({\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n });\n }\n }\n getFirstNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n else if (!isValidName(value, true)) {\n error = Wording.errors.firstNameValidity;\n }\n return error;\n }\n getLastNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n else if (!isValidName(value, true)) {\n error = Wording.errors.lastNameValidity;\n }\n return error;\n }\n getBirthDateError(date: Date | undefined): string {\n let error = '';\n if (!isValidBirthDate(date)) error = Wording.errors.birthDateValidity;\n if (!isValidBirthDate(date)) {\n error = Wording.errors.birthConditionValidity;\n }\n return error;\n }\n getBirthDateErrorPro(date: Date | undefined): string {\n let error = '';\n if (!isValidBirthDatePro(date)) error = Wording.errors.birthDateValidity;\n if (!isValidBirthDatePro(date)) {\n error = Wording.errors.birthConditionValidity;\n }\n return error;\n }\n getBusinessNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n return error;\n }\n\n async getSIRETError(res: any, value: string): Promise<string> {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.errors.emptyField;\n }\n if (res instanceof RequestError) {\n error = Wording.errors.SIRETValidity;\n }\n return error;\n }\n getMailAddressError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.errors.emptyField;\n }\n\n else if (!isValidEmail(value)) {\n error = Wording.errors.mailAddressValidity;\n }\n return error;\n }\n\n getGroupError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.errors.groupValidity;\n }\n return error;\n }\n\n getPhoneNumberError(value: string): string {\n let error = '';\n if (!isValidString(value)) error = Wording.errors.emptyField;\n else if (!isValidPhone(value)) {\n error = Wording.errors.phoneNumberValidity;\n }\n return error;\n }\n getAddressError(value: string): string {\n let error = '';\n if (value.length <= 0) error = Wording.errors.addressValidity;\n return error;\n }\n handleLegalStatusSelection(status: SelectOption<ECompanyTypes>) {\n this.setState({\n legalStatusSelection: status,\n });\n }\n handleGroupSelection(group: SelectOption<any>) {\n this.setState({\n groupSelection: group,\n groupError: this.getGroupError(group),\n });\n }\n handlePostalCodeSelection(address: TAddress) {\n this.setState({ address });\n }\n\n handleBirthTownSelection(address: TAddress) {\n this.setState({\n birthTownTownName: address.townName || '',\n birthTownPostalCode: address.postalCode\n ? address.postalCode.toString()\n : '',\n birthTownCountry: 'FRANCE',\n });\n }\n handleBirthDatePick(date: Date | any) {\n if (date instanceof Date) {\n this.setState({\n birthDatePick: date,\n birthDateError: this.getBirthDateError(date),\n });\n }\n }\n handleBirthDatePickPro(date: Date | any) {\n if (date instanceof Date) {\n this.setState({\n birthDatePick: date,\n birthDateError: this.getBirthDateErrorPro(date),\n });\n }\n }\n handleIdenticalAddressToggle(toggled: boolean) {\n this.setState({\n identicalAddressToggleState: !!toggled,\n });\n }\n handleBusinessNameInput(e: ChangeEvent<HTMLInputElement>) {\n const value = e.target.value;\n this.handleBusinessNameChange(value);\n this.handleBusinessNameError(value);\n }\n async handleSIRETInput(e: ChangeEvent<HTMLInputElement>) {\n const { searchSiret } = this.props;\n const { SIRETValue } = this.state;\n const value = formatSIRETString(e.target.value);\n this.handleSIRETError(value);\n let res: any;\n if (value.length === 14 && value !== SIRETValue) {\n res = await searchSiret(value);\n this.handleSIRETError(res);\n }\n\n this.handleSIRETChange(value, getAPEFromObject(res));\n }\n handleMailAddressInput(e: ChangeEvent<HTMLInputElement>) {\n const value = accents.remove(e.target.value);\n this.handleMailAddressChange(value);\n this.handleMailAddressError(value);\n }\n handlePhoneNumberInput(e: ChangeEvent<HTMLInputElement>) {\n const value = formatPhoneNumberString(e.target.value);\n this.handlePhoneNumberChange(value);\n this.handlePhoneNumberError(value);\n }\n handleAddressInput(value: string) {\n this.handleAddressChange(value);\n this.handleAddressError(value);\n }\n handleCoordsInput(values: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n }) {\n const firstName: string = formatFirstNameString(values.firstName);\n const lastName: string = formatLastNameString(values.lastName);\n this.handleFirstNameError(firstName);\n this.handleLastNameError(lastName);\n this.setState({\n civilStatusSelection: values.civility,\n firstNameValue: firstName,\n lastNameValue: lastName,\n });\n }\n handleBusinessNameChange(value: string) {\n this.setState({ businessNameValue: value });\n }\n handleSIRETChange(value: string, ape: string) {\n this.setState({ SIRETValue: value, APE: ape });\n }\n handleMailAddressChange(value: string) {\n this.setState({ mailAddressValue: value });\n }\n handlePhoneNumberChange(value: string) {\n this.setState({ phoneNumberValue: value });\n }\n handleAddressChange(value: string) {\n this.setState({ addressAddressValue: value });\n }\n handleFirstNameError(value: string) {\n this.setState({ firstNameError: this.getFirstNameError(value) });\n }\n\n handleLastNameError(value: string) {\n this.setState({ lastNameError: this.getLastNameError(value) });\n }\n\n handleBusinessNameError(value: string) {\n this.setState({ businessNameError: this.getBusinessNameError(value) });\n }\n async handleSIRETError(value: string, force?: boolean) {\n const SIRETError = await this.getSIRETError(value, value);\n this.setState({ SIRETError });\n }\n handleMailAddressError(value: string) {\n this.setState({ mailAddressError: this.getMailAddressError(value) });\n }\n handlePhoneNumberError(value: string) {\n this.setState({ phoneNumberError: this.getPhoneNumberError(value) });\n }\n handleAddressError(value: string) {\n this.setState({ addressAddressError: this.getAddressError(value) });\n }\n\n handleSetForeignData = (country: string) => {\n this.setState({\n birthTownCountry: country,\n });\n };\n\n handleBirthTownName = (e: React.ChangeEvent<HTMLInputElement>) => {\n const {\n currentTarget: { value },\n } = e;\n\n this.setState({\n birthTownTownName: value,\n });\n };\n\n handleChangeCountryBirth = (obj: any) => {\n const { birthTownPostalCode, birthTownTownName } = this.state;\n const newCountry = obj.value.toUpperCase();\n let newPostalCOde = birthTownPostalCode;\n let newTownName = birthTownTownName;\n\n if (obj.value !== 'FRANCE') {\n newPostalCOde = '';\n newTownName = '';\n }\n\n this.setState({\n birthTownCountry: newCountry,\n birthTownTownName: newTownName,\n birthTownPostalCode: newPostalCOde,\n });\n };\n async hasValidInput(): Promise<boolean> {\n const { isIndividual } = this.props;\n const {\n firstNameValue,\n lastNameValue,\n birthDatePick,\n birthDatePickPro,\n businessNameValue,\n mailAddressValue,\n phoneNumberValue,\n addressAddressValue,\n address,\n identicalAddressToggleState: hasIdenticalAddress,\n SIRETError,\n groupSelection,\n birthTownCountry,\n birthTownPostalCode,\n birthTownTownName,\n SIRETValue,\n } = this.state;\n\n const birthTownCheck =\n birthTownCountry !== '' && birthTownTownName !== '';\n\n let isValidForm =\n hasError(this.getFirstNameError(firstNameValue)) &&\n hasError(this.getLastNameError(lastNameValue)) &&\n hasError(this.getBirthDateError(birthDatePick)) &&\n hasError(this.getBirthDateErrorPro(birthDatePick)) &&\n hasError(this.getMailAddressError(mailAddressValue)) &&\n hasError(this.getPhoneNumberError(phoneNumberValue)) &&\n hasError(this.getGroupError(groupSelection)) &&\n birthTownCheck;\n\n if (!isIndividual) {\n isValidForm =\n isValidForm &&\n hasError(this.getBusinessNameError(businessNameValue)) &&\n //hasError(this.getSIRETError(SIRETValue)) &&\n !SIRETError;\n }\n if (!hasIdenticalAddress) {\n isValidForm =\n isValidForm &&\n hasError(this.getAddressError(addressAddressValue)); // &&\n this.validatePostalCode(address);\n }\n return isValidForm;\n }\n async validate() {\n const { isIndividual, onValidationStatusChange } = this.props;\n const {\n firstNameValue,\n lastNameValue,\n birthDatePick,\n businessNameValue,\n SIRETValue,\n mailAddressValue,\n phoneNumberValue,\n identicalAddressToggleState,\n addressAddressValue,\n address,\n civilStatusSelection,\n legalStatusSelection,\n APE,\n groupSelected,\n birthTownTownName,\n birthTownPostalCode,\n birthTownCountry,\n } = this.state;\n const isValid = await this.hasValidInput();\n let customer: any = {\n civility: civilStatusSelection,\n companyName: businessNameValue,\n email: mailAddressValue,\n firstName: firstNameValue,\n lastName: lastNameValue,\n phone: phoneNumberValue,\n birthTown: {\n ...defaultBirthTown,\n townName: birthTownTownName,\n country: birthTownCountry,\n postalCode: birthTownPostalCode,\n },\n };\n if (birthDatePick instanceof Date) {\n customer.birthdate = getFormattedDateToBackEnd(birthDatePick);\n }\n\n if (!isIndividual) {\n if (!!SIRETValue && !!APE) {\n customer = {\n ...customer,\n companyName: businessNameValue,\n companyType: legalStatusSelection.value,\n identificationNumber: SIRETValue,\n activityCode: APE,\n };\n }\n }\n\n onValidationStatusChange(isValid, customer as TCustomerContact);\n }\n validatePostalCode(address: TAddress | null): boolean {\n return address !== null;\n }\n render() {\n const {\n initialParams,\n isIndividual,\n onIsIndividualToggle,\n groupList,\n handleGroupSelection,\n } = this.props;\n const {\n firstNameValue,\n lastNameValue,\n businessNameValue,\n SIRETValue,\n mailAddressValue,\n phoneNumberValue,\n identicalAddressToggleState,\n addressAddressValue,\n address,\n firstNameError,\n lastNameError,\n businessNameError,\n SIRETError,\n mailAddressError,\n phoneNumberError,\n addressAddressError,\n addressError,\n birthDatePick,\n birthDatePickPro,\n birthDateError,\n birthDateErrorPro,\n civilStatusSelection,\n legalStatusSelection,\n APE,\n groupSelected,\n groupError,\n birthTownCountry,\n birthTownPostalCode,\n birthTownTownName,\n } = this.state;\n const coordsInputsErrors = {\n firstName: firstNameError,\n lastName: lastNameError,\n };\n const coordsInputsValues = {\n civility: civilStatusSelection,\n firstName: firstNameValue,\n lastName: lastNameValue,\n };\n\n const countryIsFrance = birthTownCountry === 'FRANCE';\n\n return (\n <section className={bcn([baseClassName])}>\n <div className={bcn([baseClassName, 'select-group'])}>\n <Group\n value={this.state.groupSelection}\n schemaProps={this.props.schemaProps}\n options={_.map(\n groupList,\n (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n }),\n )}\n handleChangeSelect={(group: SelectOption<string>) => {\n this.handleGroupSelection(group);\n handleGroupSelection(group);\n }}\n text={Wording.group}\n defaultValue={this.state.defaultGroup}\n error={groupError}\n />\n </div>\n\n <div className={bcn([baseClassName, 'radio-buttons'])}>\n <CustomRadio\n text={Wording.business}\n value={'pro'}\n id={'pro'}\n checked={!isIndividual}\n handleCheck={() => {\n onIsIndividualToggle(false);\n }}\n />\n <CustomRadio\n text={Wording.individual}\n value={'ind'}\n id={'ind'}\n checked={isIndividual}\n handleCheck={() => {\n onIsIndividualToggle(true);\n }}\n />\n </div>\n <h2>{Wording.title}</h2>\n <div className={bcn([baseClassName, mainClassName])}>\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${isIndividual ? 'ind' : 'pro'}`,\n ])}\n >\n <CoordsInputs\n errors={coordsInputsErrors}\n onInputChange={this.handleCoordsInput}\n values={coordsInputsValues}\n />\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${isIndividual ? 'ind' : 'pro'}`,\n 'date-picker',\n ])}\n >\n <label>{birthDateText}</label>\n {isIndividual ? (\n <CustomDate\n error={birthDateError}\n onDateChange={this.handleBirthDatePick}\n value={birthDatePick}\n />\n ) : (\n <CustomDate\n error={birthDateError}\n onDateChange={this.handleBirthDatePickPro}\n value={birthDatePickPro}\n />\n )}\n </div>\n\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${isIndividual ? 'ind' : 'pro'}`,\n 'address-foreign',\n ])}\n >\n <CustomSelect\n options={countries.map(vl => ({\n id: vl.code,\n label: `${vl.name}`,\n value: vl.name,\n }))}\n handleChangeSelect={\n this.handleChangeCountryBirth\n }\n text={Wording.inputs.countryBirth}\n placeholder=\" \"\n value={{\n value: birthTownCountry,\n label: birthTownCountry,\n }}\n />\n </div>\n\n {countryIsFrance && (\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n `input-grid-${\n isIndividual ? 'ind' : 'pro'\n }`,\n 'postal-code',\n ])}\n >\n <PostalCodeSelect\n onSelection={(birthTown: TAddress) => {\n this.handleBirthTownSelection(\n birthTown,\n );\n }}\n initialAddress={\n birthTownPostalCode !== ''\n ? {\n postalCode: Number(\n birthTownPostalCode,\n ),\n number: '',\n street: '',\n townName: birthTownTownName,\n }\n : undefined\n }\n text=\"Code postal\"\n />\n </div>\n )}\n\n <CustomInput\n text={Wording.inputs.birthPlace}\n isLocked={countryIsFrance}\n onInputChange={this.handleBirthTownName}\n value={birthTownTownName}\n />\n\n {!isIndividual && (\n <CustomInput\n error={businessNameError}\n onInputChange={this.handleBusinessNameInput}\n text={businessNameText}\n value={businessNameValue}\n isLocked={false}\n />\n )}\n {!isIndividual && (\n <CustomSelect\n id=\"legal_status\"\n defaultValue={legalStatusSelection.label}\n options={legalStatuses}\n handleChangeSelect={(\n status: SelectOption<ECompanyTypes>,\n ) => {\n this.handleLegalStatusSelection(status);\n }}\n value={legalStatusSelection}\n text={Wording.inputs.legalStatus}\n />\n )}\n {!isIndividual && (\n <CustomInput\n error={SIRETError}\n onInputChange={this.handleSIRETInput}\n text={SIRETText}\n value={SIRETValue}\n />\n )}\n {!isIndividual && (\n <CustomInput\n isLocked={true}\n text={Wording.ape}\n value={APE}\n />\n )}\n <CustomInput\n error={phoneNumberError}\n onInputChange={this.handlePhoneNumberInput}\n text={phoneNumberText}\n value={phoneNumberValue}\n />\n <CustomInput\n error={mailAddressError}\n onInputChange={this.handleMailAddressInput}\n text={mailAddressText}\n value={mailAddressValue}\n />\n </div>\n </div>\n <AddressSelect\n addressError={addressAddressError}\n initialAddress={\n !!initialParams\n ? initialParams.address || undefined\n : undefined\n }\n onAddressInputChange={this.handleAddressInput}\n onIdenticalAddressToggle={this.handleIdenticalAddressToggle}\n onPostalCodeSelection={this.handlePostalCodeSelection}\n text={Wording.identicalAddress.label}\n />\n </section>\n );\n }\n}\n\nexport default ClientDataSection;\n","import ClientDataSection from './ClientDataSection';\nexport default ClientDataSection;\n","import React, { FC, useState, useEffect } from 'react';\nimport {\n CustomButton,\n} from '../../../../../components';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { toIsc } from '../../../../../utils/text';\n\ninterface IProps {\n onValidate: (PCE?: string, PDL?: string) => void;\n requiresPCE: boolean;\n requiresPDL: boolean;\n isPackageValid: boolean;\n PDLRef: React.MutableRefObject<string | null>;\n PCERef: React.MutableRefObject<string | null>;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.MissingInformations;\nconst baseClassName = 'missing-informations-section';\n\nconst MissingInformationSection: FC<IProps> = (props: IProps) => {\n const {\n requiresPCE,\n requiresPDL,\n } = props;\n const [showScrollButton, setShowScrollButton] = useState(false);\n\n const promptText = toIsc(\n requiresPCE && requiresPDL ? Wording.prompts : Wording.prompt,\n );\n\n const handleScrollToTop = () => {\n window.scrollTo({ top: 715, behavior: 'smooth' });\n };\n\n useEffect(() => {\n const handleScroll = () => {\n setShowScrollButton(window.scrollY > 200);\n };\n\n window.addEventListener('scroll', handleScroll);\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n return (\n <section className={baseClassName} style={{ marginBottom: \"0px\"}}>\n <h2>{promptText}</h2>\n {showScrollButton && (\n <CustomButton\n style={{\n position: 'relative',\n bottom: '50px'\n }}\n color={'orange'}\n onClick={handleScrollToTop}\n title={Wording.BackUp}\n />\n )}\n </section>\n );\n};\n\nexport default MissingInformationSection;\n\n","import MissingInformationSection from './MissingInformationSection';\nexport default MissingInformationSection;\n","import React, { FC, useState } from 'react';\nimport _ from 'lodash';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport { TAuthorizedPackage } from '../../../../../utils/network/types';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n CloseButton,\n CustomButton,\n CustomRadio,\n EnergyGauge,\n} from '../../../../../components';\n\ninterface IProps {\n authorizedElectricityPackages: TAuthorizedPackage[];\n authorizedGasPackages: TAuthorizedPackage[];\n dismiss: () => void;\n electricityEnabled: boolean;\n gasEnabled: boolean;\n initialElectricitySelection: TAuthorizedPackage | null;\n initialGasSelection: TAuthorizedPackage | null;\n onValidate: (\n electricity: TAuthorizedPackage | null,\n gas: TAuthorizedPackage | null,\n ) => void;\n\n handleSetGaugeProps: (gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n }) => void;\n}\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.SeasonalOffersModal;\nconst baseClassName = 'seasonal-offers';\nconst gaugeClassName = bcn([baseClassName, 'gauge']);\nconst headerClassName = bcn([gaugeClassName, 'header']);\nconst bodyClassName = bcn([gaugeClassName, 'body']);\n\nfunction getDefaultIndex(arr: any[]): number | null {\n return arr.length > 0 ? Math.floor(arr.length / 2) : null;\n}\n\nexport function parseGaugeProps(\n authorizedPackages: TAuthorizedPackage[],\n selection: TAuthorizedPackage | null = null,\n): GaugeProps {\n const ranges: number[][] = _.map(\n authorizedPackages,\n (pckg: TAuthorizedPackage) => {\n return [pckg[0].amount, pckg[1].amount];\n },\n );\n let initialProgress = _.findIndex(\n authorizedPackages,\n (pkg: TAuthorizedPackage) => {\n const a = pkg[0].id === _.get(selection, '0.id', '');\n const b = pkg[1].id === _.get(selection, '1.id', '');\n return a && b;\n },\n );\n if (initialProgress === -1) {\n initialProgress = getDefaultIndex(authorizedPackages) || 0;\n }\n const reducer = (result: number, value: TAuthorizedPackage) => {\n const sum = Number(value[0].amount);\n const win = Number(value[1].amount);\n const max = sum > win ? sum : win;\n return result > max ? result : max;\n };\n const gaugeMaxValue = _.reduce(authorizedPackages, reducer, 0);\n return {\n initial: initialProgress,\n maxValue: gaugeMaxValue,\n ranges,\n };\n}\n\nfunction parseGaugeSelectedItem(\n authorizedPackages: TAuthorizedPackage[],\n value: any,\n): TAuthorizedPackage | null {\n let pkg: TAuthorizedPackage | undefined;\n if (value instanceof Array && value.length === 2) {\n pkg = _.find(authorizedPackages, (p: TAuthorizedPackage): boolean => {\n const sum = Number(p[0].amount);\n const win = Number(p[1].amount);\n const valueSum = Number(value[0]);\n const valueWin = Number(value[1]);\n return sum === valueSum && win === valueWin;\n });\n }\n return pkg || null;\n}\n\nconst SeasonalOffersModal: FC<IProps> = (props: IProps) => {\n const {\n authorizedElectricityPackages,\n authorizedGasPackages,\n dismiss,\n electricityEnabled,\n gasEnabled,\n initialElectricitySelection,\n initialGasSelection,\n onValidate,\n handleSetGaugeProps,\n } = props;\n const [\n electricitySelection,\n setElectricitySelection,\n ] = useState<TAuthorizedPackage | null>(initialElectricitySelection);\n const [gasSelection, setGasSelection] = useState<TAuthorizedPackage | null>(\n initialGasSelection,\n );\n const [electricityActivated, setElectricityActivated] = useState<boolean>(\n true,\n );\n const [gasActivated, setGasActivated] = useState<boolean>(true);\n const electricityGaugeProps: GaugeProps = parseGaugeProps(\n authorizedElectricityPackages,\n electricitySelection,\n );\n\n const gasGaugeProps: GaugeProps = parseGaugeProps(\n authorizedGasPackages,\n gasSelection,\n );\n\n const electricityDefault: TAuthorizedPackage | null =\n authorizedElectricityPackages[electricityGaugeProps.initial] || null;\n const gasDefault: TAuthorizedPackage | null =\n authorizedGasPackages[gasGaugeProps.initial] || null;\n const handleElectricityGaugeChange = (prices: number[]) => {\n const pkg: TAuthorizedPackage | null = parseGaugeSelectedItem(\n authorizedElectricityPackages,\n prices,\n );\n setElectricitySelection(pkg);\n };\n const handleGasGaugeChange = (prices: number[]) => {\n const pkg: TAuthorizedPackage | null = parseGaugeSelectedItem(\n authorizedGasPackages,\n prices,\n );\n setGasSelection(pkg);\n };\n const handleElectricityToggle = () => {\n setElectricityActivated(!electricityActivated);\n };\n const handleGasToggle = () => {\n setGasActivated(!gasActivated);\n };\n const validate = () => {\n const electricity = !electricityActivated\n ? null\n : !!electricitySelection\n ? electricitySelection\n : electricityDefault;\n const gas = !gasActivated\n ? null\n : !!gasSelection\n ? gasSelection\n : gasDefault;\n\n onValidate(electricity, gas);\n };\n return (\n <div className={baseClassName}>\n <CloseButton onClick={dismiss} />\n {electricityEnabled && authorizedElectricityPackages.length > 0 && (\n <div className={gaugeClassName}>\n <CustomRadio\n checked={electricityActivated}\n handleCheck={handleElectricityToggle}\n text={Wording.electricityTitle}\n value={Wording.electricityTitle}\n />\n {electricityActivated && (\n <div className={bodyClassName}>\n <EnergyGauge\n {...electricityGaugeProps}\n onChange={handleElectricityGaugeChange}\n />\n </div>\n )}\n </div>\n )}\n {gasEnabled && authorizedGasPackages.length > 0 && (\n <div className={gaugeClassName}>\n <CustomRadio\n checked={gasActivated}\n handleCheck={handleGasToggle}\n text={Wording.gasTitle}\n value={Wording.gasTitle}\n />\n {gasActivated && (\n <div className={bodyClassName}>\n <EnergyGauge\n {...gasGaugeProps}\n onChange={handleGasGaugeChange}\n />\n </div>\n )}\n </div>\n )}\n <CustomButton\n color={'orange'}\n onClick={() => {\n validate();\n\n handleSetGaugeProps({\n electricityGaugeProps,\n gasGaugeProps,\n });\n }}\n title={Wording.validate}\n />\n </div>\n );\n};\n\nexport default SeasonalOffersModal;\n","import SeasonalOffersModal from './SeasonalOffersModal';\nexport default SeasonalOffersModal;\n","import React, { Component, Fragment } from 'react';\nimport _ from 'lodash';\nimport { CheckboxTile } from '../../../../../components';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { TAdditionalRate } from '../../../../../utils/network/types';\n\ninterface IProps {\n electricityOptions: TAdditionalRate[];\n electricityOptionSelection: boolean[];\n gasOptions: TAdditionalRate[];\n gasOptionSelection: boolean[];\n onSelection: (\n electricitySelection: boolean[],\n gasSelection: boolean[],\n ) => void;\n}\n\nconst baseClassName = 'additional';\nconst optionsClassName = bcn([baseClassName, 'options']);\nconst groupClassName = 'option-group';\nconst Wording = WordingConstant.AdminSubscriptionContainer.Recap;\n\nclass Options extends Component<IProps> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n electricityOptions: [],\n gasOptions: [],\n };\n this.toggleOption = this.toggleOption.bind(this);\n }\n toggleOption(type: 'EL' | 'NG', index: number, value: boolean) {\n const { onSelection } = this.props;\n const { electricityOptionSelection, gasOptionSelection } = this.props;\n if (type === 'EL') electricityOptionSelection[index] = value;\n else if (type === 'NG') gasOptionSelection[index] = value;\n onSelection(electricityOptionSelection, gasOptionSelection);\n }\n render() {\n const {\n electricityOptions,\n electricityOptionSelection,\n gasOptions,\n gasOptionSelection,\n } = this.props;\n return (\n <div className={baseClassName}>\n <div className={optionsClassName}>\n {electricityOptions.length > 0 && (\n <Fragment>\n <h5>{Wording.options.electricity.title}</h5>\n <div className={groupClassName}>\n {electricityOptions.map(\n (opt: TAdditionalRate, i: number) => {\n const checked =\n electricityOptionSelection.length >=\n i &&\n electricityOptionSelection[i];\n return (\n <CheckboxTile\n key={i}\n checked={checked}\n onToggle={() => {\n this.toggleOption(\n 'EL',\n i,\n !checked,\n );\n }}\n text={opt.description}\n title={opt.label}\n titleHint={[\n _.get(\n opt,\n 'detail.price',\n '',\n ),\n _.get(\n opt,\n 'detail.unit',\n '',\n ),\n ].join(' ')}\n />\n );\n },\n )}\n </div>\n </Fragment>\n )}\n {gasOptions.length > 0 && (\n <Fragment>\n <h5>{Wording.options.gas.title}</h5>\n <div className={groupClassName}>\n {gasOptions.map(\n (opt: TAdditionalRate, i: number) => {\n const checked =\n gasOptionSelection.length >= i &&\n gasOptionSelection[i];\n return (\n <CheckboxTile\n key={i}\n checked={checked}\n onToggle={() => {\n this.toggleOption(\n 'NG',\n i,\n !checked,\n );\n }}\n text={opt.description}\n title={opt.label}\n titleHint={\n !!opt.detail &&\n !!opt.detail.price &&\n !!opt.detail.unit\n ? `${opt.detail.price} ${opt.detail.unit}`\n : ''\n }\n />\n );\n },\n )}\n </div>\n </Fragment>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default Options;\n","import React, { Fragment, useEffect, useState } from 'react';\nimport {\n CustomButton,\n CustomInput,\n CustomModal,\n CustomSelect,\n} from '../../../../../components';\nimport {\n TContract,\n TEstimate,\n EEnergyTypes,\n ERateOptions,\n ETimeframes,\n} from '../../../../../utils/network/types';\nimport WordingConstant from '../../../../../utils/wording.json';\nconst Wording =\n WordingConstant.AdminSubscriptionContainer.Offer.clientConsumption;\n\ninterface IProps {\n open: boolean;\n contracts: TContract[] | null;\n electricityEnabled: boolean;\n gasEnabled: boolean;\n handleModalClick: () => void;\n handleEstimatesPackagesByClient: (\n estimates: TEstimate[],\n energies: EEnergyTypes[],\n ) => void;\n}\n\ntype Rate = {\n id: number;\n value: ERateOptions;\n label: string;\n};\n\ninterface IState {\n HIGH_LOW?: {\n EL: {\n HIGH: string;\n LOW: string;\n };\n NG: {\n HIGH: string;\n LOW: string;\n };\n };\n TOTAL_HOUR?: {\n EL: string;\n NG: string;\n };\n UNKNOWN?: {\n EL: string;\n NG: string;\n };\n\n [key: string]: any;\n}\n\ninterface IBuildResponse {\n estimates: TEstimate[];\n energies: EEnergyTypes[];\n}\n\nconst initState = {\n HIGH_LOW: { EL: { HIGH: '', LOW: '' }, NG: { LOW: '', HIGH: '' } },\n TOTAL_HOUR: { EL: '', NG: '' },\n UNKNOWN: { EL: '', NG: '' },\n};\n\nconst ClientConsumption: React.FC<IProps> = ({\n open,\n handleModalClick,\n contracts,\n handleEstimatesPackagesByClient,\n electricityEnabled,\n gasEnabled,\n}) => {\n const [state, setState] = useState<IState>(initState);\n const [isValide, setValide] = useState(false);\n const [showError, setShowError] = useState(false);\n const [showEstimateErr, setEstimetesErr] = useState(false);\n\n const initStateValues = (contracts: TContract[]) => {\n const nextState = initState;\n\n const buildByEnergy = (energy: 'EL' | 'NG') => {\n const currContract = contracts.find(ctr => ctr.energy === energy);\n if (currContract) {\n const rate = buildRateOption(currContract);\n\n if (rate === ERateOptions.HIGH_LOW) {\n const st = (currContract.estimates as TEstimate[]).reduce(\n (acc, curr) => {\n return {\n ...acc,\n [energy]: {\n // @ts-ignore\n ...acc[energy],\n [curr.timeframe as any]: curr.quantity,\n },\n };\n },\n {},\n );\n\n nextState.HIGH_LOW = {\n ...nextState.HIGH_LOW,\n ...st,\n };\n }\n\n if (\n rate === ERateOptions.TOTAL_HOUR ||\n rate === ERateOptions.UNKNOWN\n ) {\n if (currContract.estimates) {\n const currEstimate = (currContract.estimates as TEstimate[])[0];\n nextState[rate] = {\n ...nextState[rate],\n [energy]: currEstimate.quantity\n ? currEstimate.quantity.toString()\n : '',\n };\n }\n }\n }\n };\n\n if (electricityEnabled) {\n buildByEnergy('EL');\n }\n\n if (gasEnabled) {\n buildByEnergy('NG');\n }\n\n setState(nextState);\n };\n\n useEffect(() => {\n if (contracts) {\n initStateValues(contracts);\n }\n }, [contracts]);\n\n useEffect(() => {\n const checkByEnergy = (en: { HIGH: string; LOW: string }) =>\n en.HIGH !== '' && en.LOW !== '';\n\n const checkGas = (val: string) => (gasEnabled ? val !== '' : true);\n const checkElec = (val: string) =>\n electricityEnabled ? val !== '' : true;\n\n let valide = false;\n\n if (contracts) {\n contracts.forEach(ctr => {\n const rate = buildRateOption(ctr);\n\n switch (rate) {\n case ERateOptions.TOTAL_HOUR:\n valide = Boolean(\n ctr.energy === 'EL'\n ? state.TOTAL_HOUR &&\n checkElec(state.TOTAL_HOUR.EL)\n : state.TOTAL_HOUR &&\n checkGas(state.TOTAL_HOUR.NG),\n );\n\n break;\n\n case ERateOptions.UNKNOWN:\n valide = Boolean(\n ctr.energy === 'EL'\n ? state.UNKNOWN && checkElec(state.UNKNOWN.EL)\n : state.UNKNOWN && checkGas(state.UNKNOWN.NG),\n );\n break;\n\n case ERateOptions.HIGH_LOW:\n let hightLowCheck = true;\n\n if (gasEnabled && ctr.energy === 'NG') {\n hightLowCheck = Boolean(\n hightLowCheck &&\n state.HIGH_LOW &&\n checkByEnergy(state.HIGH_LOW.NG),\n );\n }\n if (electricityEnabled && ctr.energy === 'EL') {\n hightLowCheck = Boolean(\n hightLowCheck &&\n state.HIGH_LOW &&\n checkByEnergy(state.HIGH_LOW.EL),\n );\n }\n\n valide = hightLowCheck;\n break;\n\n default:\n break;\n }\n });\n }\n setValide(valide);\n }, [state]);\n\n if (!contracts) {\n return null;\n }\n\n const handleSetTotalHourAndUnknown = (\n rate: ERateOptions,\n energy: 'EL' | 'NG',\n value: string | number,\n ) => {\n setState({\n ...state,\n [rate]: {\n ...state[rate],\n [energy]: value,\n },\n });\n };\n\n const getInitHighLowState = (st?: {\n EL: {\n HIGH: string;\n LOW: string;\n };\n NG: {\n LOW: string;\n HIGH: string;\n };\n }) => (st ? st : initState.HIGH_LOW);\n\n const handleSetHighLow = (\n energy: 'EL' | 'NG',\n type: 'HIGH' | 'LOW',\n value: string | number,\n ) => {\n setState({\n ...state,\n HIGH_LOW: {\n ...initState.HIGH_LOW,\n ...state.HIGH_LOW,\n [energy]: {\n ...getInitHighLowState(state.HIGH_LOW)[energy],\n [type]: value,\n },\n },\n });\n };\n\n const buildResponse = (): IBuildResponse =>\n contracts.reduce(\n (acc, curr) => {\n const rate = buildRateOption(curr);\n if (rate && rate !== '') {\n const nextEstimate: TEstimate[] = (() => {\n if (rate === ERateOptions.HIGH_LOW) {\n const nextState = state.HIGH_LOW as {\n EL: {\n HIGH: string;\n LOW: string;\n };\n NG: {\n HIGH: string;\n LOW: string;\n };\n };\n\n return [ETimeframes.HIGH, ETimeframes.LOW].map(\n t => {\n const typeKey = t as 'HIGH' | 'LOW';\n return {\n energy: curr.energy,\n timeframe: t,\n quantity: parseInt(\n nextState[curr.energy][typeKey],\n 10,\n ),\n };\n },\n );\n }\n\n const nextTimeframe =\n rate === ERateOptions.TOTAL_HOUR\n ? ETimeframes.TOTAL_HOUR\n : ETimeframes.UNKNOWN;\n return [\n {\n energy: curr.energy,\n timeframe: nextTimeframe,\n quantity: parseInt(\n (state[rate] as {\n EL: string;\n NG: string;\n })[curr.energy],\n 10,\n ),\n },\n ];\n })();\n return {\n energies: [...acc.energies, curr.energy],\n estimates: [...acc.estimates, ...nextEstimate],\n };\n }\n\n return {\n energies: [...acc.energies, curr.energy],\n estimates: [...acc.estimates],\n };\n },\n { energies: [], estimates: [] } as IBuildResponse,\n );\n\n const handleCheckEstimates = () => {\n return contracts.reduce((acc, curr) => {\n const currRate = buildRateOption(curr);\n\n if (curr.estimates && currRate) {\n if (currRate === ERateOptions.HIGH_LOW) {\n return curr.estimates.reduce(\n (esAcc, esCurr) =>\n Boolean(\n state.HIGH_LOW &&\n checkQuantity(\n state.HIGH_LOW[curr.energy][\n esCurr.timeframe as 'HIGH' | 'LOW'\n ],\n esCurr.quantity as number,\n ),\n ) && esAcc,\n true,\n );\n }\n\n const findCurrEstim = curr.estimates.find(\n ({ timeframe }) => (timeframe as any) === currRate,\n );\n const rateState = state[currRate];\n\n return rateState && findCurrEstim && findCurrEstim.quantity\n ? checkQuantity(\n rateState[curr.energy] as string,\n findCurrEstim.quantity,\n ) && acc\n : acc;\n }\n return acc;\n }, true);\n };\n\n const init = () => {\n setShowError(false);\n setEstimetesErr(false);\n setValide(false);\n\n overrideModalClick();\n };\n\n const handleValidate = () => {\n if (!isValide) {\n setShowError(true);\n return;\n }\n\n if (!handleCheckEstimates()) {\n setEstimetesErr(true);\n return;\n }\n if (showEstimateErr) {\n setEstimetesErr(false);\n }\n\n const { estimates, energies } = buildResponse();\n handleEstimatesPackagesByClient(estimates, energies);\n\n init();\n };\n\n const checkQuantity = (coming: string, estQuantity: number) =>\n parseInt(coming, 10) > 0.75 * estQuantity;\n\n const renderByRateOption = (\n rateProp: ERateOptions,\n energy: 'EL' | 'NG',\n estimates: TEstimate[],\n ) => {\n switch (rateProp) {\n case ERateOptions.TOTAL_HOUR:\n case ERateOptions.UNKNOWN:\n let currentEstimate = null;\n const value = state[rateProp]\n ? (state[rateProp] as any)[energy]\n : '';\n if (estimates) {\n currentEstimate = estimates.find(\n est => (est.timeframe as any) === rateProp,\n );\n }\n\n const checkEstimate = Boolean(\n currentEstimate &&\n currentEstimate.quantity &&\n checkQuantity(value, currentEstimate.quantity),\n );\n\n const error = (() => {\n if (showError && value === '') {\n return Wording.errMessage;\n }\n\n return showEstimateErr && !checkEstimate\n ? `${Wording.estimateErr} ${\n currentEstimate && currentEstimate.quantity\n ? `${0.75 * currentEstimate.quantity} kWh`\n : ''\n }`\n : undefined;\n })();\n\n return (\n <>\n <CustomInput\n type=\"number\"\n text={\n Wording[\n energy === 'EL' ? 'elecInput' : 'gasInput'\n ]\n }\n value={value}\n onInputChange={e =>\n handleSetTotalHourAndUnknown(\n rateProp,\n energy,\n e.target.value,\n )\n }\n error={error}\n />\n\n <p>\n {Wording.initialConsumption}{' '}\n {currentEstimate && currentEstimate.quantity\n ? currentEstimate.quantity\n : ''}{' '}\n kWh\n </p>\n </>\n );\n\n case ERateOptions.HIGH_LOW:\n return (\n <div className=\"client-consumption-content__high-low\">\n <h4>\n {\n Wording[\n energy === 'EL' ? 'elecInput' : 'gasInput'\n ]\n }\n </h4>\n\n <div>\n {['HIGH', 'LOW'].map(t => {\n const typeKey = t as 'HIGH' | 'LOW';\n const value = state.HIGH_LOW\n ? state.HIGH_LOW[energy][typeKey]\n : '';\n\n const currentEstimate = estimates.find(\n est =>\n (est.timeframe as any) ===\n (rateProp === ERateOptions.HIGH_LOW\n ? typeKey\n : rateProp),\n );\n\n const checkEstimate = Boolean(\n currentEstimate &&\n currentEstimate.quantity &&\n checkQuantity(\n value,\n currentEstimate.quantity,\n ),\n );\n\n const error = (() => {\n if (showError && value === '') {\n return Wording.errMessage;\n }\n\n return showEstimateErr && !checkEstimate\n ? `${Wording.estimateErr} ${\n currentEstimate &&\n currentEstimate.quantity\n ? `${0.75 *\n currentEstimate.quantity} kWh`\n : ''\n }`\n : undefined;\n })();\n\n return (\n <div\n key={t}\n className=\"client-consumption-content__high-low__inputs\"\n >\n <CustomInput\n key={t}\n type=\"number\"\n text={Wording[typeKey]}\n value={value}\n onInputChange={e =>\n handleSetHighLow(\n energy,\n typeKey,\n e.target.value,\n )\n }\n error={error}\n />\n\n <p>\n {Wording.initialConsumption}{' '}\n {currentEstimate &&\n currentEstimate.quantity\n ? currentEstimate.quantity\n : ''}{' '}\n kWh\n </p>\n </div>\n );\n })}\n </div>\n </div>\n );\n\n default:\n return null;\n }\n };\n\n const overrideModalClick = () => {\n handleModalClick();\n\n if (contracts) {\n initStateValues(contracts);\n }\n };\n\n const buildRateOption = (ctr: TContract) => {\n if (ctr.rateOption) {\n return ctr.rateOption;\n }\n let rt = '';\n\n if (ctr.estimates) {\n if (ctr.estimates.length === 2) {\n rt = ERateOptions.HIGH_LOW;\n } else {\n rt = ctr.estimates[0].timeframe || '';\n }\n }\n\n return rt;\n };\n\n return (\n <CustomModal\n show={open}\n showCloseButton\n handleClick={overrideModalClick}\n customStyle={{ height: 'fit-content', border: 'solid 4px black' }}\n >\n <div className=\"client-consumption-content\">\n <h3>{Wording.title}</h3>\n\n {contracts.map((ctr, key) => {\n if (\n (electricityEnabled && ctr.energy === 'EL') ||\n (gasEnabled && ctr.energy === 'NG')\n ) {\n const currRate = buildRateOption(ctr);\n return (\n <Fragment key={key}>\n {renderByRateOption(\n currRate as ERateOptions,\n ctr.energy,\n ctr.estimates as TEstimate[],\n )}\n </Fragment>\n );\n }\n })}\n\n {showEstimateErr && (\n <div className=\"client-consumption-content__estimates-error\">\n <p>{Wording.mainEstimateErr}</p>\n </div>\n )}\n\n <div className=\"client-consumption-content__buttons\">\n <CustomButton\n title={Wording.btnBack}\n color={'gray'}\n onClick={overrideModalClick}\n />\n <CustomButton\n title={Wording.btnValidate}\n color={'orange'}\n onClick={handleValidate}\n />\n </div>\n </div>\n </CustomModal>\n );\n};\n\nexport default ClientConsumption;\n","import React, { Component } from 'react';\nimport _, { isEmpty } from 'lodash';\nimport { SelectOption } from 'Types';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport classnames from 'classnames';\nimport {\n buildClassName as bcn,\n prepareFrequenciesToDisplay,\n} from '../../../../../utils/helpers';\nimport { toColonHeading as tch } from '../../../../../utils/text';\nimport {\n CustomButton,\n CustomModal,\n CustomOverlay,\n CustomSelect,\n ToggleIndicator,\n} from '../../../../../components';\nimport SeasonalOffersModal from '../../modals/SeasonalOffersModal';\nimport {\n EAdditionalRateTypes,\n EEnergyTypes,\n EInstallmentFrequencies,\n TContract,\n TPackage,\n TProduct,\n TAdditionalRate,\n TAuthorizedPackage,\n ETimeframes,\n TPrepaymentFrequencies,\n TEstimate,\n} from '../../../../../utils/network/types';\nimport { isCyclicalProduct } from '../../../../../utils/network/helpers';\nimport Options from './Options';\nimport Data from './Data';\nimport ClientConsumption from './ClientConsumption';\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nfunction filterOptions(\n opts: TAdditionalRate[] = [],\n optionFilter: string | EAdditionalRateTypes = 'OPTION',\n): TAdditionalRate[] {\n const filteredOpts = opts.filter((opt: TAdditionalRate): boolean => {\n return opt.type === `${optionFilter}`;\n });\n return filteredOpts;\n}\n\ninterface IProps {\n errorOffer: boolean[];\n contracts: TContract[] | null;\n frequencies: TPrepaymentFrequencies[] | null;\n electricityEnabled: boolean;\n gasEnabled: boolean;\n initialParams?: Data;\n onProductSelection: (\n energy: EEnergyTypes,\n product: TProduct | null,\n ) => void;\n dynamicValidation: (selection: {\n product?: TProduct;\n energyType?: EEnergyTypes;\n }) => void;\n onValidate: (selection: {\n electricityFrequency?: EInstallmentFrequencies;\n electricityPackage?: TPackage;\n electricitySeasonalPackage?: TAuthorizedPackage | null;\n electricityProduct?: TProduct;\n gasFrequency?: EInstallmentFrequencies;\n gasPackage?: TPackage;\n gasProduct?: TProduct;\n gasSeasonalPackage?: TAuthorizedPackage | null;\n }) => void;\n packages: TPackage[] | null;\n products: TProduct[] | null;\n isPackageValid: boolean;\n deliveryPointPackages: any;\n\n handleSetGaugeProps: (gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n }) => void;\n\n handleEstimatesPackagesByClient: (\n estimates: TEstimate[],\n energies: EEnergyTypes[],\n ) => void;\n}\n\ninterface IState {\n authorizedElectricityPackages: TAuthorizedPackage[];\n authorizedElectricityPackageSelection: TAuthorizedPackage | null;\n authorizedGasPackages: TAuthorizedPackage[];\n authorizedGasPackageSelection: TAuthorizedPackage | null;\n electricityFrequencies: Array<SelectOption<EInstallmentFrequencies>>;\n electricityFrequencySelection: SelectOption<EInstallmentFrequencies> | null;\n electricityOptions: TAdditionalRate[];\n electricityOptionSelection: boolean[];\n electricityPlans: Array<SelectOption<TPackage>>;\n electricityPlanSelection: SelectOption<TPackage> | null;\n electricityProducts: Array<SelectOption<TProduct>>;\n electricityProductSelection: SelectOption<TProduct> | null;\n gasFrequencies: Array<SelectOption<EInstallmentFrequencies>>;\n gasFrequencySelection: SelectOption<EInstallmentFrequencies> | null;\n gasOptions: TAdditionalRate[];\n gasOptionSelection: boolean[];\n gasPlans: Array<SelectOption<TPackage>>;\n gasPlanSelection: SelectOption<TPackage> | null;\n gasProducts: Array<SelectOption<TProduct>>;\n gasProductSelection: SelectOption<TProduct> | null;\n initialElectricityOptionSelection: TAdditionalRate[] | null;\n initialGasOptionSelection: TAdditionalRate[] | null;\n shouldShowGauge: boolean;\n showConsumptionModal: boolean;\n initialElectricityRateOptions: TAdditionalRate[];\n initialGasRateOptions: TAdditionalRate[];\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Offer;\nconst baseClassName = 'offer-section';\nconst selectGridClassName = 'select-grid';\n\nconst mapPackagePrepaymentFrequencies = (\n frequencies: TPrepaymentFrequencies[] | null,\n): Array<SelectOption<EInstallmentFrequencies>> => {\n if (frequencies === null) {\n return [];\n }\n\n return _.map(\n frequencies,\n ({ frequency, currency, fee }: TPrepaymentFrequencies, i) => {\n let label = '';\n const displayFee = fee.includes(' +') ? `${fee}${' '}` : fee;\n\n switch (frequency) {\n case EInstallmentFrequencies.MONTHLY:\n label = `${Wording.frequencies.monthly}: ${displayFee}${currency}`;\n break;\n case EInstallmentFrequencies.BIMONTHLY:\n label = `${Wording.frequencies.bimonthly}: ${displayFee}${currency}`;\n break;\n case EInstallmentFrequencies.FOURMONTHLY:\n label = `${Wording.frequencies.fourmonthly}: ${displayFee}${currency}`;\n break;\n case EInstallmentFrequencies.QUARTERLY:\n label = `${Wording.frequencies.quarterly}: ${displayFee}${currency}`;\n break;\n }\n return { id: `${i}`, label, value: frequency };\n },\n );\n};\n\nconst initialState: IState = {\n initialElectricityRateOptions: [],\n initialGasRateOptions: [],\n authorizedElectricityPackages: [],\n authorizedElectricityPackageSelection: null,\n authorizedGasPackages: [],\n authorizedGasPackageSelection: null,\n electricityFrequencies: [],\n electricityFrequencySelection: null,\n electricityOptions: [],\n electricityOptionSelection: [],\n electricityPlans: [],\n electricityPlanSelection: null,\n electricityProducts: [],\n electricityProductSelection: null,\n gasFrequencies: [],\n gasFrequencySelection: null,\n gasOptions: [],\n gasOptionSelection: [],\n gasPlans: [],\n gasPlanSelection: null,\n gasProducts: [],\n gasProductSelection: null,\n initialElectricityOptionSelection: null,\n initialGasOptionSelection: null,\n shouldShowGauge: false,\n showConsumptionModal: false,\n};\n\nexport function sortAuthorizedPackages(\n packages: TAuthorizedPackage[],\n): TAuthorizedPackage[] {\n const orderedTimeframePackages: TAuthorizedPackage[] = _.reduce<\n TAuthorizedPackage,\n TAuthorizedPackage[]\n >(\n packages,\n (result: TAuthorizedPackage[], value: TAuthorizedPackage) => {\n const summerIndex =\n value[0].timeframe === ETimeframes.SUMMER\n ? 0\n : value[1].timeframe === ETimeframes.SUMMER\n ? 1\n : -1;\n const winterIndex =\n value[0].timeframe === ETimeframes.WINTER\n ? 0\n : value[1].timeframe === ETimeframes.WINTER\n ? 1\n : -1;\n if (summerIndex >= 0 && winterIndex >= 0) {\n result.push([value[summerIndex], value[winterIndex]]);\n }\n return result;\n },\n [],\n );\n const [left, right]: [\n TAuthorizedPackage[],\n TAuthorizedPackage[],\n ] = _.partition(orderedTimeframePackages, (pkg: TAuthorizedPackage) => {\n return Number(pkg[0].amount) < Number(pkg[1].amount);\n });\n return [\n ...left.sort((a: TAuthorizedPackage, b: TAuthorizedPackage): number => {\n return Number(a[1].amount) > Number(b[1].amount) ? -1 : 1;\n }),\n ...right.sort(\n (a: TAuthorizedPackage, b: TAuthorizedPackage): number => {\n return Number(a[0].amount) < Number(b[0].amount) ? -1 : 1;\n },\n ),\n ];\n}\n\nfunction matchFrequency(\n rate: TAdditionalRate,\n freq: EInstallmentFrequencies,\n): boolean {\n let match = false;\n if (!_.includes(rate.code, 'PP_FREQ')) {\n return true;\n }\n switch (freq) {\n case EInstallmentFrequencies.MONTHLY:\n match = rate.code ? rate.code.includes('PP_FREQ_1') : false; // BECAUSE PP_FREQ_1_VAR || PP_FREQ_1_FIX\n break;\n case EInstallmentFrequencies.BIMONTHLY:\n match = rate.code ? rate.code.includes('PP_FREQ_2') : false;\n break;\n case EInstallmentFrequencies.FOURMONTHLY:\n match = rate.code ? rate.code.includes('PP_FREQ_4') : false;\n break;\n case EInstallmentFrequencies.QUARTERLY:\n match = rate.code ? rate.code.includes('PP_FREQ_3') : false;\n break;\n }\n return match;\n}\n\nclass OfferSection extends Component<IProps, IState> {\n constructor(props: any) {\n super(props);\n this.state = { ...initialState };\n this.handleSeasonalOfferModalDismiss = this.handleSeasonalOfferModalDismiss.bind(\n this,\n );\n this.handleElectricityFrequencySelection = this.handleElectricityFrequencySelection.bind(\n this,\n );\n this.handleElectricityPlanSelection = this.handleElectricityPlanSelection.bind(\n this,\n );\n this.handleElectricityProductSelection = this.handleElectricityProductSelection.bind(\n this,\n );\n this.handleGasFrequencySelection = this.handleGasFrequencySelection.bind(\n this,\n );\n this.handleGasPlanSelection = this.handleGasPlanSelection.bind(this);\n this.handleGasProductSelection = this.handleGasProductSelection.bind(\n this,\n );\n this.handleOptionSelection = this.handleOptionSelection.bind(this);\n this.handleSeasonalOffersModalToggle = this.handleSeasonalOffersModalToggle.bind(\n this,\n );\n this.handleValidationClick = this.handleValidationClick.bind(this);\n this.validateSeasonalOffersModal = this.validateSeasonalOffersModal.bind(\n this,\n );\n }\n componentDidMount() {\n this.init();\n }\n componentDidUpdate(prevProps: IProps) {\n const {\n contracts: prevContracts,\n electricityEnabled: prevElectricityEnabled,\n gasEnabled: prevGasEnabled,\n packages: prevPackages,\n products: prevProducts,\n frequencies: prevFrequencies,\n isPackageValid: prevIsPackageValid,\n deliveryPointPackages: prevDeliveryPointPackages,\n } = prevProps;\n\n const {\n contracts,\n electricityEnabled,\n gasEnabled,\n packages,\n products,\n frequencies,\n isPackageValid,\n deliveryPointPackages,\n } = this.props;\n\n const shouldUpdate =\n prevContracts !== contracts ||\n JSON.stringify(prevFrequencies) !== JSON.stringify(frequencies) ||\n JSON.stringify(prevPackages) !== JSON.stringify(packages) ||\n JSON.stringify(prevProducts) !== JSON.stringify(products) ||\n prevGasEnabled !== gasEnabled ||\n prevElectricityEnabled !== electricityEnabled;\n if (shouldUpdate) {\n this.refresh(contracts, packages, products, frequencies);\n }\n\n if (prevDeliveryPointPackages !== deliveryPointPackages || (prevIsPackageValid !== isPackageValid && !isPackageValid)) {\n const plans: Array<SelectOption<TPackage>> = _.map(\n deliveryPointPackages,\n (plan: TPackage, i: number) => ({\n id: `${i}`,\n label: plan.id,\n value: plan,\n }),\n );\n const electricityPlans: Array<SelectOption<\n TPackage\n >> = plans.filter(\n (plan: SelectOption<TPackage>) =>\n plan.value.energy === EEnergyTypes.ELECTRICTY,\n );\n const gasPlans: Array<SelectOption<TPackage>> = plans.filter(\n (plan: SelectOption<TPackage>) =>\n plan.value.energy === EEnergyTypes.GAS,\n );\n\n const recommendedElectricityPlans: Array<SelectOption<\n TPackage\n >> = _.map(\n electricityPlans,\n (plan: SelectOption<TPackage>, i: number) => ({\n id: `${i}`,\n label: `${plan.label}${\n plan.value.recommended ? ' (Recommandé)' : ''\n }`,\n value: plan.value,\n }),\n );\n\n const recommendedGasPlans: Array<SelectOption<TPackage>> = _.map(\n gasPlans,\n (plan: SelectOption<TPackage>, i: number) => ({\n id: `${i}`,\n label: `${plan.label}${\n plan.value.recommended ? ' (Recommandé)' : ''\n }`,\n value: plan.value,\n }),\n );\n\n this.setState({\n electricityPlans: recommendedElectricityPlans,\n electricityPlanSelection: null,\n gasPlans: recommendedGasPlans,\n gasPlanSelection: null,\n });\n }\n }\n handleSeasonalOfferModalDismiss() {\n this.setState({ shouldShowGauge: false });\n }\n\n init() {\n const { initialParams } = this.props;\n\n if (!!initialParams) {\n const authorizedElectricityPackages: TAuthorizedPackage[] = sortAuthorizedPackages(\n initialParams.authorizedElectricityPackages,\n );\n\n const authorizedElectricityPackageSelection: TAuthorizedPackage | null =\n initialParams.authorizedElectricityPackageSelection;\n const authorizedGasPackages: TAuthorizedPackage[] = sortAuthorizedPackages(\n initialParams.authorizedGasPackages,\n );\n const authorizedGasPackageSelection: TAuthorizedPackage | null =\n initialParams.authorizedGasPackageSelection;\n\n const mappedFrequencies = mapPackagePrepaymentFrequencies(\n initialParams.frequencies,\n );\n\n const electricityFrequencies: Array<SelectOption<\n EInstallmentFrequencies\n >> = mappedFrequencies;\n const electricityPlans: Array<SelectOption<TPackage>> = _.map(\n initialParams.electricityPlans,\n (plan: TPackage, i: number) => ({\n id: `${i}`,\n label: plan.id,\n value: plan,\n }),\n );\n const gasPlans: Array<SelectOption<TPackage>> = _.map(\n initialParams.gasPlans,\n (plan: TPackage, i: number) => ({\n id: `${i}`,\n label: plan.id,\n value: plan,\n }),\n );\n const electricityProducts: Array<SelectOption<TProduct>> = _.map(\n initialParams.electricityProducts,\n (prod: TProduct, i: number) => ({\n id: `${i}`,\n label: prod.label || '',\n value: prod,\n }),\n );\n const gasProducts: Array<SelectOption<TProduct>> = _.map(\n initialParams.gasProducts,\n (prod: TProduct, i: number) => ({\n id: `${i}`,\n label: prod.label || '',\n value: prod,\n }),\n );\n const electricityPlanSelection: SelectOption<TPackage> | null =\n _.find(electricityPlans, (opt: SelectOption<TPackage>) => {\n return (\n !!opt &&\n !!initialParams.electricityPlanSelection &&\n opt.value.id ===\n initialParams.electricityPlanSelection.id\n );\n }) || null;\n const electricityProductSelection: SelectOption<TProduct> | null =\n _.find(electricityProducts, (opt: SelectOption<TProduct>) => {\n return (\n !!opt &&\n !!initialParams.electricityProductSelection &&\n opt.value.productCode ===\n initialParams.electricityProductSelection\n .productCode\n );\n }) || null;\n const gasPlanSelection: SelectOption<TPackage> | null =\n _.find(gasPlans, (opt: SelectOption<TPackage>) => {\n return (\n !!opt &&\n !!initialParams.gasPlanSelection &&\n opt.value.id === initialParams.gasPlanSelection.id\n );\n }) || null;\n const gasProductSelection: SelectOption<TProduct> | null =\n _.find(gasProducts, (opt: SelectOption<TProduct>) => {\n return (\n !!opt &&\n !!initialParams.gasProductSelection &&\n opt.value.productCode ===\n initialParams.gasProductSelection.productCode\n );\n }) || null;\n let electricityFrequencySelection: SelectOption<\n EInstallmentFrequencies\n > | null = null;\n\n if (!!electricityProductSelection) {\n electricityFrequencySelection =\n _.find(\n electricityFrequencies,\n (freq: SelectOption<EInstallmentFrequencies>) => {\n return (\n !!freq &&\n initialParams.electricityFrequencySelection ===\n freq.value\n );\n },\n ) || electricityFrequencies[0];\n }\n const gasFrequencies: Array<SelectOption<\n EInstallmentFrequencies\n >> = mappedFrequencies;\n let gasFrequencySelection: SelectOption<\n EInstallmentFrequencies\n > | null = null;\n if (!!gasProductSelection) {\n gasFrequencySelection =\n _.find(\n gasFrequencies,\n (freq: SelectOption<EInstallmentFrequencies>) => {\n return (\n !!freq &&\n initialParams.gasFrequencySelection ===\n freq.value\n );\n },\n ) || gasFrequencies[0];\n }\n const electricityOptions: TAdditionalRate[] = filterOptions([\n ...initialParams.electricityOptions,\n ]);\n const gasOptions: TAdditionalRate[] = filterOptions([\n ...initialParams.gasOptions,\n ]);\n const electricityOptionSelection: boolean[] = _.map(\n electricityOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(\n initialParams.electricitySelectedOptions,\n rate,\n );\n },\n );\n const gasOptionSelection: boolean[] = _.map(\n gasOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(initialParams.gasSelectedOptions, rate);\n },\n );\n this.setState({\n authorizedElectricityPackages,\n authorizedElectricityPackageSelection,\n authorizedGasPackages,\n authorizedGasPackageSelection,\n electricityFrequencies,\n electricityFrequencySelection,\n electricityOptions,\n electricityOptionSelection,\n electricityPlans,\n electricityPlanSelection,\n electricityProducts,\n electricityProductSelection,\n gasFrequencies,\n gasFrequencySelection,\n gasOptions,\n gasOptionSelection,\n gasPlans,\n gasPlanSelection,\n gasProducts,\n gasProductSelection,\n initialElectricityRateOptions: electricityProductSelection\n ? electricityProductSelection.value.additionalRates || []\n : [],\n initialGasRateOptions: gasProductSelection\n ? gasProductSelection.value.additionalRates || []\n : [],\n });\n }\n }\n handleElectricityFrequencySelection(\n opt: SelectOption<EInstallmentFrequencies>,\n ) {\n this.setState({ electricityFrequencySelection: opt });\n }\n handleElectricityPlanSelection(\n electricityPlanSelection: SelectOption<TPackage>,\n ) {\n let authorizedPackages: TAuthorizedPackage[] = [];\n if (\n !!electricityPlanSelection &&\n !!electricityPlanSelection.value.authorizedPackages &&\n electricityPlanSelection.value.authorizedPackages.length > 0\n ) {\n authorizedPackages = sortAuthorizedPackages(\n electricityPlanSelection.value.authorizedPackages,\n );\n }\n this.setState({\n authorizedElectricityPackages: authorizedPackages,\n electricityPlanSelection,\n });\n }\n handleElectricityProductSelection(opt: SelectOption<TProduct>) {\n const { onProductSelection, dynamicValidation } = this.props;\n const nextState: Partial<IState> = {};\n const isCyclical: boolean = !!opt && isCyclicalProduct(opt.value);\n if (isCyclical && !!opt) {\n nextState.electricityPlanSelection = null;\n nextState.electricityFrequencySelection = null;\n }\n nextState.electricityProductSelection = opt;\n nextState.shouldShowGauge = false;\n nextState.electricityOptions = filterOptions(\n _.get(opt, 'value.additionalRates', []),\n );\n nextState.electricityOptionSelection = [];\n nextState.initialElectricityRateOptions = _.get(\n opt,\n 'value.additionalRates',\n [],\n );\n this.setState({ ...nextState } as IState);\n const product = _.get(opt, 'value', null);\n if (!isCyclicalProduct(product)) {\n dynamicValidation({product: product as TProduct, energyType: EEnergyTypes.ELECTRICTY})\n }\n // TODO : appeler le getPack avec le produit au dessus et le contract\n onProductSelection(EEnergyTypes.ELECTRICTY, product);\n }\n\n handleGasFrequencySelection(opt: SelectOption<EInstallmentFrequencies>) {\n this.setState({ gasFrequencySelection: opt });\n }\n handleGasPlanSelection(gasPlanSelection: SelectOption<TPackage>) {\n let authorizedPackages: TAuthorizedPackage[] = [];\n if (\n !!gasPlanSelection &&\n !!gasPlanSelection.value.authorizedPackages &&\n gasPlanSelection.value.authorizedPackages.length > 0\n ) {\n authorizedPackages = sortAuthorizedPackages(\n gasPlanSelection.value.authorizedPackages,\n );\n }\n this.setState({\n authorizedGasPackages: authorizedPackages,\n gasPlanSelection,\n });\n }\n handleGasProductSelection(opt: SelectOption<TProduct>) {\n const { onProductSelection, dynamicValidation } = this.props;\n const nextState: Partial<IState> = {};\n const isCyclical: boolean = !!opt && isCyclicalProduct(opt.value);\n if (isCyclical && !!opt) {\n nextState.gasPlanSelection = null;\n nextState.gasFrequencySelection = null;\n }\n nextState.gasProductSelection = opt;\n nextState.shouldShowGauge = false;\n nextState.gasOptions = filterOptions(\n _.get(opt, 'value.additionalRates', []),\n );\n nextState.gasOptionSelection = [];\n nextState.initialGasRateOptions = _.get(\n opt,\n 'value.additionalRates',\n [],\n );\n this.setState({ ...nextState } as IState);\n const product = _.get(opt, 'value', null);\n if (!isCyclicalProduct(product)) {\n dynamicValidation({product: product as TProduct, energyType: EEnergyTypes.GAS})\n }\n // TODO : appeler le getPack avec le produit au dessus et le contract\n onProductSelection(EEnergyTypes.GAS, product);\n }\n handleOptionSelection(electricity: boolean[], gas: boolean[]) {\n this.setState({\n electricityOptionSelection: electricity,\n gasOptionSelection: gas,\n });\n }\n handleSeasonalOffersModalToggle() {\n this.setState({ shouldShowGauge: true });\n }\n handleValidationClick() {\n const { electricityEnabled, gasEnabled, onValidate } = this.props;\n const {\n authorizedElectricityPackageSelection,\n authorizedGasPackageSelection,\n electricityFrequencySelection,\n electricityOptions,\n electricityOptionSelection,\n electricityPlanSelection,\n electricityProductSelection,\n gasFrequencySelection,\n gasOptions,\n gasOptionSelection,\n gasPlanSelection,\n gasProductSelection,\n initialGasRateOptions,\n initialElectricityRateOptions,\n } = this.state;\n let electricityProductWithOptions: TProduct | null = null;\n let gasProductWithOptions: TProduct | null = null;\n const selectedElectricityOptions: TAdditionalRate[] = _.map(\n electricityOptions,\n (rate: TAdditionalRate, index: number) => ({\n ...rate,\n active: electricityOptionSelection[index],\n }),\n );\n const selectedGasOptions: TAdditionalRate[] = _.map(\n gasOptions,\n (rate: TAdditionalRate, index: number) => ({\n ...rate,\n active: gasOptionSelection[index],\n }),\n );\n let selection: any = {};\n if (electricityEnabled && !!electricityProductSelection) {\n electricityProductWithOptions = electricityProductSelection.value;\n electricityProductWithOptions.additionalRates = _.map(\n !isEmpty(initialElectricityRateOptions)\n ? initialElectricityRateOptions\n : electricityProductWithOptions.additionalRates,\n (rate: TAdditionalRate) => {\n const match = _.find(selectedElectricityOptions, rate);\n if (!!match && match.active) rate.active = true;\n return rate;\n },\n ).filter((rate: TAdditionalRate) => {\n const isFee = rate.type === EAdditionalRateTypes.FEE;\n\n if (!!electricityFrequencySelection && isFee) {\n return matchFrequency(\n rate,\n electricityFrequencySelection.value,\n );\n } else if (isFee) {\n return false;\n }\n return true;\n });\n\n if (isCyclicalProduct(electricityProductWithOptions)) {\n selection = {\n ...selection,\n electricityProduct: electricityProductWithOptions,\n };\n } else if (\n !!electricityFrequencySelection &&\n !!electricityPlanSelection\n ) {\n selection = {\n ...selection,\n electricityFrequency: electricityFrequencySelection.value,\n electricityPackage: electricityPlanSelection.value,\n electricityProduct: electricityProductWithOptions,\n electricitySeasonalPackages: authorizedElectricityPackageSelection,\n };\n } else {\n console.error('Unexpected product type');\n return;\n }\n }\n if (gasEnabled && !!gasProductSelection) {\n gasProductWithOptions = gasProductSelection.value;\n gasProductWithOptions.additionalRates = _.map(\n !isEmpty(initialGasRateOptions)\n ? initialGasRateOptions\n : gasProductWithOptions.additionalRates,\n (rate: TAdditionalRate) => {\n const match = _.find(selectedGasOptions, rate);\n if (!!match && match.active) rate.active = true;\n return rate;\n },\n ).filter((rate: TAdditionalRate) => {\n const isFee = rate.type === EAdditionalRateTypes.FEE;\n if (!!gasFrequencySelection && isFee) {\n return matchFrequency(rate, gasFrequencySelection.value);\n } else if (isFee) {\n return false;\n }\n return true;\n });\n if (isCyclicalProduct(gasProductWithOptions)) {\n selection = {\n ...selection,\n gasProduct: gasProductWithOptions,\n };\n } else if (!!gasFrequencySelection && !!gasPlanSelection) {\n selection = {\n ...selection,\n gasFrequency: gasFrequencySelection.value,\n gasPackage: gasPlanSelection.value,\n gasProduct: gasProductWithOptions,\n gasSeasonalPackages: authorizedGasPackageSelection,\n };\n } else {\n console.error('Unexpected product type');\n return;\n }\n }\n onValidate({\n ...selection,\n });\n }\n refresh(\n contracts: TContract[] | null,\n packages: TPackage[] | null,\n products: TProduct[] | null,\n frequencies: TPrepaymentFrequencies[] | null,\n ) {\n let nextState: any = {};\n if (!contracts || !packages || !products) {\n nextState = {\n electricityFrequencySelection: null,\n electricityPlanSelection: null,\n electricityProductSelection: null,\n gasFrequencySelection: null,\n gasPlanSelection: null,\n gasProductSelection: null,\n };\n }\n\n const mappedFrequencies = mapPackagePrepaymentFrequencies(frequencies);\n const electricityFrequencies: Array<SelectOption<\n EInstallmentFrequencies\n >> = [...mappedFrequencies];\n const gasFrequencies: Array<SelectOption<EInstallmentFrequencies>> = [\n ...mappedFrequencies,\n ];\n const electricityPlans: Array<SelectOption<TPackage>> = [];\n const gasPlans: Array<SelectOption<TPackage>> = [];\n _.forEach(packages, (pkg: TPackage, i: number) => {\n const energy = _.get(pkg, 'energy', '');\n const label = _.get(pkg, 'id');\n if (!label) return false;\n const opt: SelectOption<TPackage> = {\n id: `${i}`,\n label: `${label}${pkg.recommended ? ' (Recommandé)' : ''}`,\n value: pkg,\n };\n if (energy === EEnergyTypes.ELECTRICTY) {\n electricityPlans.push(opt);\n } else if (energy === EEnergyTypes.GAS) {\n gasPlans.push(opt);\n }\n });\n const electricityProducts: Array<SelectOption<TProduct>> = [];\n const gasProducts: Array<SelectOption<TProduct>> = [];\n _.forEach(products, (product: TProduct, i: number) => {\n const energy = _.get(product, 'energy', '');\n const label = _.get(product, 'label');\n if (!label) return false;\n const opt: SelectOption<TProduct> = {\n id: `${i}`,\n label,\n value: product,\n };\n if (energy === (EEnergyTypes.ELECTRICTY as string)) {\n electricityProducts.push(opt);\n } else if (energy === EEnergyTypes.GAS) {\n gasProducts.push(opt);\n }\n });\n const electricityOptions: TAdditionalRate[] = [];\n const electricityOptionSelection: TAdditionalRate[] = [];\n const gasOptions: TAdditionalRate[] = [];\n const gasOptionSelection: TAdditionalRate[] = [];\n nextState = {\n ...nextState,\n authorizedElectricityPackages: [],\n authorizedElectricityPackageSelection: null,\n authorizedGasPackages: [],\n authorizedGasPackageSelection: null,\n electricityFrequencies,\n electricityOptions,\n electricityOptionSelection,\n electricityPlans,\n electricityProducts,\n gasFrequencies,\n gasOptions,\n gasOptionSelection,\n gasPlans,\n gasProducts,\n gaugeTarget: null,\n shouldShowGauge: false,\n electricityFrequencySelection: null,\n electricityProductSelection: null,\n electricityPlanSelection: null,\n gasProductSelection: null,\n gasPlanSelection: null,\n gasFrequencySelection: null,\n };\n this.setState({ ...nextState });\n }\n shouldAllowSeasonalSelection(): boolean {\n const { electricityEnabled, gasEnabled } = this.props;\n const {\n electricityPlanSelection,\n electricityProductSelection,\n gasPlanSelection,\n gasProductSelection,\n } = this.state;\n let should = true;\n const hasCyclicalElectricity: boolean = isCyclicalProduct(\n _.get(electricityProductSelection, 'value', null),\n );\n const hasCyclicalGas: boolean = isCyclicalProduct(\n _.get(gasProductSelection, 'value', null),\n );\n if (hasCyclicalElectricity && hasCyclicalGas) {\n should = false;\n } else if (hasCyclicalElectricity || hasCyclicalGas) {\n if (hasCyclicalElectricity && gasEnabled) {\n should =\n !!electricityProductSelection &&\n !!gasProductSelection &&\n !!gasPlanSelection;\n } else if (hasCyclicalGas && electricityEnabled) {\n should =\n !!gasProductSelection &&\n !!electricityProductSelection &&\n !!electricityPlanSelection;\n } else if (electricityEnabled && !gasEnabled) {\n should =\n !!electricityProductSelection && !!electricityPlanSelection;\n } else if (!electricityEnabled && gasEnabled) {\n should = !!gasProductSelection && !!gasPlanSelection;\n }\n } else {\n if (electricityEnabled) {\n should =\n should &&\n !!electricityProductSelection &&\n !!electricityPlanSelection;\n }\n if (gasEnabled) {\n should = should && !!gasProductSelection && !!gasPlanSelection;\n }\n }\n return should;\n }\n validateSeasonalOffersModal(\n electricity: TAuthorizedPackage | null,\n gas: TAuthorizedPackage | null,\n ) {\n this.setState({\n authorizedElectricityPackageSelection: electricity,\n authorizedGasPackageSelection: gas,\n shouldShowGauge: false,\n });\n }\n\n controlChangeAfterSave = (initialParams: Data) => {\n const {\n electricityProductSelection,\n gasProductSelection,\n electricityPlanSelection,\n gasPlanSelection,\n electricityFrequencySelection,\n gasFrequencySelection,\n electricityOptionSelection,\n gasOptionSelection,\n electricityOptions,\n gasOptions,\n } = this.state;\n\n const { electricityEnabled, gasEnabled } = this.props;\n\n let checkElec = true;\n let checkGas = true;\n\n const checkMainElec = (checked: boolean) => checkElec && checked;\n const checkMainGas = (checked: boolean) => checkGas && checked;\n\n const checkProductSelection = (\n initial: TProduct | null,\n current: SelectOption<TProduct> | null,\n ) => {\n const res =\n initial !== null &&\n current !== null &&\n initial.productCode === current.value.productCode;\n\n return res === null ? false : (res as boolean);\n };\n\n const checkPlanSelection = (\n initial: TPackage | null,\n current: SelectOption<TPackage> | null,\n ) => {\n const res =\n initial !== null &&\n current !== null &&\n initial.id === current.value.id;\n\n return res === null ? false : (res as boolean);\n };\n\n const checkFrequencySelection = (\n initial: EInstallmentFrequencies | null,\n current: SelectOption<EInstallmentFrequencies> | null,\n ) => {\n const res =\n initial !== null &&\n current !== null &&\n initial === current.value;\n\n return res === null ? false : (res as boolean);\n };\n\n if (electricityEnabled) {\n const checkElectricityProductSelection = checkProductSelection(\n initialParams.electricityProductSelection,\n electricityProductSelection,\n );\n\n const checkElectricityPlanSelection = checkPlanSelection(\n initialParams.electricityPlanSelection,\n electricityPlanSelection,\n );\n\n const checkElectricityFrequency = checkFrequencySelection(\n initialParams.electricityFrequencySelection,\n electricityFrequencySelection,\n );\n\n const initialElectricityOptionSelection: boolean[] = _.map(\n electricityOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(\n initialParams.electricitySelectedOptions,\n rate,\n );\n },\n );\n\n const checkElectricityOptionSelection = _.isEqual(\n electricityOptionSelection,\n initialElectricityOptionSelection,\n );\n\n checkElec = checkMainElec(checkElectricityProductSelection);\n checkElec = checkMainElec(checkElectricityPlanSelection);\n checkElec = checkMainElec(checkElectricityFrequency);\n checkElec = checkMainElec(checkElectricityOptionSelection);\n }\n\n if (gasEnabled) {\n const checkGasProductSelection = checkProductSelection(\n initialParams.gasProductSelection,\n gasProductSelection,\n );\n\n const checkGasPlanSelection = checkPlanSelection(\n initialParams.gasPlanSelection,\n gasPlanSelection,\n );\n\n const checkGasFrequency = checkFrequencySelection(\n initialParams.gasFrequencySelection,\n gasFrequencySelection,\n );\n\n const initialGasOptionSelection: boolean[] = _.map(\n gasOptions,\n (rate: TAdditionalRate) => {\n return !!_.find(initialParams.gasSelectedOptions, rate);\n },\n );\n\n const checkGasOptionSelection = _.isEqual(\n gasOptionSelection,\n initialGasOptionSelection,\n );\n\n checkGas = checkMainGas(checkGasProductSelection);\n checkGas = checkMainGas(checkGasPlanSelection);\n checkGas = checkMainGas(checkGasFrequency);\n checkGas = checkMainGas(checkGasOptionSelection);\n }\n\n return checkGas && checkElec;\n };\n\n handleConsumptionModal = () => {\n const { showConsumptionModal } = this.state;\n\n this.setState({ showConsumptionModal: !showConsumptionModal });\n };\n\n render() {\n const {\n electricityEnabled,\n initialParams,\n gasEnabled,\n handleSetGaugeProps,\n contracts,\n handleEstimatesPackagesByClient,\n errorOffer,\n } = this.props;\n const {\n authorizedElectricityPackages,\n authorizedElectricityPackageSelection,\n authorizedGasPackages,\n authorizedGasPackageSelection,\n electricityFrequencies,\n electricityFrequencySelection,\n electricityOptions,\n electricityOptionSelection,\n electricityPlans,\n electricityPlanSelection,\n electricityProducts,\n electricityProductSelection,\n gasFrequencies,\n gasFrequencySelection,\n gasOptions,\n gasOptionSelection,\n gasPlans,\n gasPlanSelection,\n gasProducts,\n gasProductSelection,\n shouldShowGauge,\n showConsumptionModal,\n } = this.state;\n const electricityProductText = tch(\n `${Wording.product} ${Wording.electricity}`,\n );\n const electricityPlanText = tch(\n `${Wording.plan} ${Wording.electricity}`,\n );\n const gasProductText = tch(`${Wording.product} ${Wording.gas}`);\n const gasPlanText = tch(`${Wording.plan} ${Wording.gas}`);\n const frequencyText = tch(Wording.frequency);\n const hasCyclicalElectricityProduct =\n !!electricityProductSelection &&\n isCyclicalProduct(electricityProductSelection.value);\n const hasCyclicalGasProduct =\n !!gasProductSelection &&\n isCyclicalProduct(gasProductSelection.value);\n const allowSeasonalSelection: boolean = this.shouldAllowSeasonalSelection();\n const electricityPlanDefaultLabel: string = hasCyclicalElectricityProduct\n ? Wording.cyclicalPlaceholderText\n : electricityEnabled && !electricityPlanSelection\n ? _.get(initialParams, 'previousElectricityPlanSelection.id')\n : undefined;\n const gasPlanDefaultLabel: string = hasCyclicalGasProduct\n ? Wording.cyclicalPlaceholderText\n : gasEnabled && !gasPlanSelection\n ? _.get(initialParams, 'previousGasPlanSelection.id')\n : undefined;\n\n const userGroup = localStorage.getItem('userGroup');\n const isAdmin = userGroup === 'ADMIN';\n\n const hasErrorOffer = errorOffer.some(value => value);\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <p>{Wording.heading}</p>\n <div className={bcn([baseClassName, selectGridClassName])}>\n {electricityEnabled && (\n <div\n className={bcn([\n baseClassName,\n selectGridClassName,\n 'half',\n ])}\n >\n <CustomSelect\n disabled={\n !electricityEnabled ||\n electricityProducts.length === 0\n }\n handleChangeSelect={\n this.handleElectricityProductSelection\n }\n options={electricityProducts}\n text={electricityProductText}\n value={electricityProductSelection}\n />\n <div\n className={classnames({\n 'disabled-section': hasCyclicalElectricityProduct,\n })}\n >\n <CustomSelect\n disabled={\n !electricityEnabled ||\n hasCyclicalElectricityProduct ||\n electricityPlans.length === 0 ||\n !electricityProductSelection\n }\n handleChangeSelect={\n this.handleElectricityPlanSelection\n }\n options={electricityPlans}\n placeholder={electricityPlanDefaultLabel}\n text={electricityPlanText}\n value={electricityPlanSelection}\n />\n <CustomSelect\n disabled={\n !electricityEnabled ||\n hasCyclicalElectricityProduct ||\n electricityFrequencies.length === 0 ||\n !electricityProductSelection\n }\n handleChangeSelect={\n this.handleElectricityFrequencySelection\n }\n options={prepareFrequenciesToDisplay(\n electricityFrequencies,\n )}\n text={frequencyText}\n value={electricityFrequencySelection}\n placeholder={\n hasCyclicalElectricityProduct\n ? Wording.cyclicalPlaceholderText\n : ''\n }\n />\n <ToggleIndicator\n text={Wording.seasonalActivation}\n textAlignment={'right'}\n toggled={\n !!authorizedElectricityPackageSelection\n }\n />\n </div>\n </div>\n )}\n {gasEnabled && (\n <div\n className={bcn([\n baseClassName,\n selectGridClassName,\n 'half',\n ])}\n >\n <CustomSelect\n disabled={\n !gasEnabled || gasProducts.length === 0\n }\n handleChangeSelect={\n this.handleGasProductSelection\n }\n options={gasProducts}\n text={gasProductText}\n value={gasProductSelection}\n />\n <div\n className={classnames({\n 'disabled-section': hasCyclicalGasProduct,\n })}\n >\n <CustomSelect\n disabled={\n !gasEnabled ||\n hasCyclicalGasProduct ||\n gasPlans.length === 0 ||\n !gasProductSelection\n }\n handleChangeSelect={\n this.handleGasPlanSelection\n }\n options={gasPlans}\n placeholder={gasPlanDefaultLabel}\n text={gasPlanText}\n value={gasPlanSelection}\n />\n <CustomSelect\n disabled={\n !gasEnabled ||\n hasCyclicalGasProduct ||\n gasFrequencies.length === 0 ||\n !gasProductSelection\n }\n handleChangeSelect={\n this.handleGasFrequencySelection\n }\n options={prepareFrequenciesToDisplay(\n gasFrequencies,\n )}\n text={frequencyText}\n value={gasFrequencySelection}\n placeholder={\n hasCyclicalGasProduct\n ? Wording.cyclicalPlaceholderText\n : ''\n }\n />\n <ToggleIndicator\n text={Wording.seasonalActivation}\n textAlignment={'left'}\n toggled={!!authorizedGasPackageSelection}\n />\n </div>\n </div>\n )}\n </div>\n {allowSeasonalSelection && (\n <div className={bcn([baseClassName, 'package-manage'])}>\n <CustomButton\n color={'gray'}\n onClick={this.handleSeasonalOffersModalToggle}\n title={Wording.adjust}\n />\n {/* {isAdmin && (<CustomButton\n color={'gray'}\n onClick={this.handleConsumptionModal}\n title={Wording.consumption}\n />)}*/}\n \n </div>\n )}\n <CustomOverlay centered={true} show={shouldShowGauge}>\n <SeasonalOffersModal\n authorizedElectricityPackages={\n authorizedElectricityPackages\n }\n authorizedGasPackages={authorizedGasPackages}\n electricityEnabled={electricityEnabled}\n dismiss={this.handleSeasonalOfferModalDismiss}\n gasEnabled={gasEnabled}\n initialElectricitySelection={\n authorizedElectricityPackageSelection\n }\n initialGasSelection={authorizedGasPackageSelection}\n onValidate={this.validateSeasonalOffersModal}\n handleSetGaugeProps={handleSetGaugeProps}\n />\n </CustomOverlay>\n <Options\n electricityOptions={electricityOptions}\n electricityOptionSelection={electricityOptionSelection}\n gasOptions={gasOptions}\n gasOptionSelection={gasOptionSelection}\n onSelection={this.handleOptionSelection}\n />\n\n {!!initialParams &&\n !this.controlChangeAfterSave(initialParams) && (\n <p className=\"error-message\">\n {Wording.errorMessageAfterChangeInitailParams}\n </p>\n )}\n <CustomButton\n color={'orange'}\n heavy={true}\n onClick={this.handleValidationClick}\n title={Wording.validate}\n disabled={hasErrorOffer}\n />\n <ClientConsumption\n gasEnabled={gasEnabled}\n electricityEnabled={electricityEnabled}\n open={showConsumptionModal}\n contracts={contracts}\n handleModalClick={this.handleConsumptionModal}\n handleEstimatesPackagesByClient={\n handleEstimatesPackagesByClient\n }\n />\n </section>\n );\n }\n}\n\nexport default OfferSection;\n","import OfferSection from './OfferSection';\nexport default OfferSection;\n","import React, { FC } from 'react';\n\ntype FieldProps = {\n name: string;\n value?: string;\n};\n\nconst baseClassName = 'recap-field';\n\nconst RecapField: FC<FieldProps> = (props: FieldProps) => {\n const { name, value } = props;\n\n return (\n <div className={baseClassName}>\n <span>{`${name} :`}</span>\n <span>{value || '-'}</span>\n </div>\n );\n};\n\nexport default RecapField;\n","import React, { FC, useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport shortid from 'shortid';\nimport {\n EUnitAmounts,\n ECategories,\n TAmountWithLabel,\n TUnitPriceWithLabel,\n TOffer,\n TSeasonalPackage,\n TPackage,\n EEnergyTypes,\n EInstallmentFrequencies,\n} from '../../../../../utils/network/types';\nimport RecapField from './RecapField';\nimport { toIsc } from '../../../../../utils/text';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { EnergyGauge } from '../../../../../components';\nimport {\n additionalRatesDuplicateValue,\n array_move,\n} from '../../../../../utils/helpers';\n\nconst baseClassName = 'recap-group';\nconst fieldsClassName = 'fields';\n// const rebateLabelRegex = new RegExp(/^[rR]emise */);\nconst Wording = WordingConstant.AdminSubscriptionContainer.Recap;\n\ntype GroupProps = {\n offer: TOffer;\n title: string;\n installmentFrequency?: EInstallmentFrequencies;\n chosenPackages: Array<TPackage | TSeasonalPackage>;\n gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n };\n};\n\ntype Line = [string, string];\n\nfunction isRawPriceDetail(detail: TAmountWithLabel): boolean {\n let is = false;\n switch (detail.category) {\n case ECategories.TOTAL_AMOUNT:\n is = true;\n break;\n case ECategories.ADDITIONAL_RATE:\n // if (!rebateLabelRegex.test(detail.label || '')) is = true;\n is = true;\n break;\n }\n return is;\n}\n\nfunction isRebateDetail(dt: TAmountWithLabel): boolean {\n const { category } = dt;\n return (\n category === ECategories.ADDITIONAL_RATE ||\n category === ECategories.TOTAL_AMOUNT ||\n category === ECategories.TOTAL_BUDGET\n );\n}\n\nfunction isPriceAfterRebateDetail(detail: TAmountWithLabel): boolean {\n let is = false;\n switch (detail.category) {\n case ECategories.DISCOUNTED_UNIT_PRICE:\n case ECategories.DISCOUNTED_UNIT_PRICE_TTC:\n is = true;\n break;\n }\n return is;\n}\n\nfunction formatUnit(unit: EUnitAmounts): string {\n let formattedUnit: string = unit;\n switch (unit) {\n case EUnitAmounts.PERCENT:\n formattedUnit = '%';\n break;\n }\n return formattedUnit;\n}\n\nfunction formatUnitLabel(price: TUnitPriceWithLabel): string {\n let formattedLabel: string = price.label || '';\n if (!!price.unit && price.unit === EUnitAmounts.EURO_KWH) {\n formattedLabel = [formattedLabel, `(${Wording.unitPrice})`].join(' ');\n }\n return formattedLabel;\n}\n\nfunction formatLine(detail: TAmountWithLabel): Line[] | null {\n const lines: Line[] = [];\n\n if (!!detail.label) {\n const name: string = detail.label;\n let value: string = '';\n if (!!detail.amount && !!detail.unit) {\n value = toIsc(`${detail.amount} ${formatUnit(detail.unit)}`);\n }\n lines.push([name, value]);\n }\n // if (!!detail.unitPrices && detail.unitPrices.length > 0) {\n // _.forEach(detail.unitPrices, (unitPrice: TUnitPriceWithLabel) => {\n // if (!!unitPrice.label && !!unitPrice.price && !!unitPrice.unit) {\n // const value = toIsc(\n // `${unitPrice.price} ${formatUnit(unitPrice.unit)}`,\n // );\n // lines.push([formatUnitLabel(unitPrice), value]);\n // }\n // });\n // }\n return lines;\n}\n\nfunction formatFields(title: string, lines: Line[]): JSX.Element | null {\n return (\n <div key={shortid.generate()} className={fieldsClassName}>\n <h4>{title}</h4>\n {lines &&\n lines\n .filter(ln => ln !== undefined && ln.length > 0)\n .map((line: Line) => (\n <RecapField\n key={line[0]}\n name={line[0]}\n value={line[1]}\n />\n ))\n }\n </div>\n );\n}\n\nconst unitPricesArr = (unitPrices: TUnitPriceWithLabel[]) =>\n unitPrices.map(({ unit, price, label }) => [\n label,\n `${price}${unit}`,\n ]) as Line[];\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nconst RecapGroup: FC<GroupProps> = (props: GroupProps) => {\n const { offer, title, chosenPackages, installmentFrequency } = props;\n\n const rawDetailsPriceLines: Line[] = [];\n const priceAfterPresentation: TAmountWithLabel[] = [];\n\n const rawPriceLine: Line[] = [];\n\n _.forEach(offer.details, (detail: TAmountWithLabel) => {\n\n const line: Line[] | null = formatLine(detail);\n\n if (isRawPriceDetail(detail)) {\n if (detail.unitPrices) {\n unitPricesArr(detail.unitPrices).forEach(l =>\n rawDetailsPriceLines.push(l),\n );\n\n }\n }\n if (isRebateDetail(detail)) {\n rawPriceLine.push(...line);\n\n if (\n detail.category &&\n detail.category === ECategories.ECONOMY &&\n !!detail.unitPrices &&\n detail.unitPrices.length > 0\n ) {\n _.forEach(\n detail.unitPrices,\n (unitPrice: TUnitPriceWithLabel) => {\n if (\n !!unitPrice.label &&\n !!unitPrice.price &&\n !!unitPrice.unit\n ) {\n const value = toIsc(\n `${unitPrice.price} ${formatUnit(\n unitPrice.unit,\n )}`,\n );\n rawPriceLine.push([\n formatUnitLabel(unitPrice),\n value,\n ]);\n }\n },\n );\n }\n }\n if (isPriceAfterRebateDetail(detail)) {\n priceAfterPresentation.push(detail);\n }\n });\n\n const getGaugePropsByEnergy = (): GaugeProps | null => {\n if (offer.energy === EEnergyTypes.ELECTRICTY) {\n return props.gaugeProps.electricityGaugeProps;\n }\n\n if (offer.energy === EEnergyTypes.GAS) {\n return props.gaugeProps.gasGaugeProps;\n }\n return null;\n };\n\n const renderChosenPackage = () => {\n const title = (\n <div className={fieldsClassName}>\n <h4 className=\"without-margin\">{Wording.fields.forfais}</h4>\n </div>\n );\n if (chosenPackages.length === 1) {\n const current = chosenPackages[0];\n return (\n <>\n {title}\n <div className=\"chosen-package-mono\">\n <p>\n {current.amount} {current.currency}\n </p>\n </div>\n </>\n );\n }\n\n const gaugeProps = getGaugePropsByEnergy();\n\n if (gaugeProps !== null) {\n return (\n <>\n {title}\n\n <div className=\"chosen-package-bi\">\n <EnergyGauge {...gaugeProps} onChange={() => { }} />\n </div>\n </>\n );\n }\n\n return (\n chosenPackages.length !== 0 &&\n chosenPackages[0] && (\n <>\n {title}\n <div className=\"chosen-package-mono chosen-package-mono-bi\">\n <p>\n {chosenPackages[0].amount}{' '}\n {chosenPackages[0].currency} |{' '}\n {chosenPackages[1].amount}{' '}\n {chosenPackages[1].currency}\n </p>\n </div>\n </>\n )\n );\n };\n\n const sortRawDetailsPriceLines = rawDetailsPriceLines.sort((a, b) => {\n if (a[1] > b[1]) return -1;\n if (a[1] < b[1]) return 1;\n return 0;\n });\n\n if (\n installmentFrequency &&\n installmentFrequency === 'MONTHLY' &&\n sortRawDetailsPriceLines.length === 4\n ) {\n array_move(sortRawDetailsPriceLines, 2, 3);\n\n if (sortRawDetailsPriceLines[1][0] === 'Abonnement') {\n array_move(sortRawDetailsPriceLines, 0, 1);\n }\n }\n\n return (\n <div className={baseClassName}>\n <h3>{title}</h3>\n {renderChosenPackage()}\n\n {!!rawPriceLine.length &&\n formatFields(\n Wording.fields.rawPrice,\n additionalRatesDuplicateValue(rawPriceLine),\n )}\n\n {!!rawDetailsPriceLines.length &&\n formatFields(\n Wording.fields.detailsPrice_HT,\n sortRawDetailsPriceLines,\n )}\n\n {priceAfterPresentation.map(({ category, unitPrices }) => {\n if (category) {\n const nup = unitPrices && unitPricesArr(unitPrices);\n\n if (category === ECategories.DISCOUNTED_UNIT_PRICE) {\n return formatFields(\n Wording.fields.discountPrice_HT,\n nup as Line[],\n );\n }\n\n if (category === ECategories.DISCOUNTED_UNIT_PRICE_TTC) {\n return formatFields(\n Wording.fields.discountPrice_TTC,\n nup as Line[],\n );\n }\n }\n })}\n </div>\n );\n};\n\nexport default RecapGroup;\n","import React, { ChangeEvent, FC, useEffect, useState } from 'react';\n\nimport _ from 'lodash';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport {\n ERebateCodeTypes,\n EEnergyTypes,\n TOffer,\n TContract,\n} from '../../../../../utils/network/types';\nimport RecapGroup from './RecapGroup';\nimport { SelectOption } from 'Types';\nimport {\n CustomError,\n CustomInput,\n CustomSelect,\n CustomToggle,\n} from '../../../../../components';\nimport { RequestError } from '../../../../../utils/network/errors';\nimport Data from './Data';\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Recap;\nconst baseClassName = 'recap-section';\nconst groupsClassName = bcn([baseClassName, 'groups']);\nconst codeClassName = 'code';\nconst radioToggleClassName = bcn([codeClassName, 'radios']);\nconst codeInputClassName = bcn([codeClassName, 'inputs']);\nconst codeOptions: Array<SelectOption<ERebateCodeTypes>> = [\n { id: '0', label: Wording.code.sponsor, value: ERebateCodeTypes.SPONSOR },\n {\n id: '1',\n label: Wording.code.promotional,\n value: ERebateCodeTypes.PROMOTION,\n },\n { id: '2', label: Wording.code.cashback, value: ERebateCodeTypes.CASHBACK },\n];\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\ninterface ISectionProps {\n initialParams?: Data;\n offers: TOffer[] | null;\n finalContracts: TContract[];\n gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n };\n onCodeValidation: (\n validated: boolean,\n code: string,\n type?: ERebateCodeTypes,\n ) => void;\n validateSponsorCode: (code: string) => Promise<boolean | RequestError>;\n}\n\nfunction getCodeHint(code: ERebateCodeTypes | null) {\n switch (code) {\n case ERebateCodeTypes.SPONSOR:\n return Wording.code.sponsorHint;\n case ERebateCodeTypes.CASHBACK:\n return Wording.code.cashbackHint;\n default:\n return '';\n }\n}\n\nfunction getCodePlaceholder(code: ERebateCodeTypes | null) {\n switch (code) {\n case ERebateCodeTypes.SPONSOR:\n return Wording.code.sponsorPlaceholder;\n case ERebateCodeTypes.PROMOTION:\n return Wording.code.promotionalPlaceholder;\n case ERebateCodeTypes.CASHBACK:\n return Wording.code.cashbackPlaceholder;\n default:\n return '';\n }\n}\n\nconst RecapSection: FC<ISectionProps> = (props: ISectionProps) => {\n const {\n initialParams,\n offers,\n onCodeValidation,\n validateSponsorCode,\n finalContracts,\n gaugeProps,\n } = props;\n const codeSelectionDefault: SelectOption<ERebateCodeTypes> | null =\n !!initialParams && !!initialParams.codeType\n ? _.find(codeOptions, (option: SelectOption<ERebateCodeTypes>) => {\n return option.value === initialParams.codeType;\n }) || null\n : null;\n\n const [codeSelection, setCodeSelection] = useState<SelectOption<\n ERebateCodeTypes\n > | null>(codeSelectionDefault);\n\n const [codeInputToggled, toggleCodeInput] = useState<boolean>(\n !!initialParams ? initialParams.codeInputToggled : false,\n );\n\n const [code, setCode] = useState<string>(\n !!initialParams ? initialParams.code : '',\n );\n\n const [codeError, setCodeError] = useState<string>('');\n const selectedCode = _.get(codeSelection, 'value', null);\n const codeInputHint = getCodeHint(selectedCode);\n const codeInputPlaceholder = getCodePlaceholder(selectedCode);\n\n const handleCodeInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (codeSelection === null) {\n setCodeError(Wording.code.missingSelection);\n return;\n }\n setCodeError('');\n const nextValue = _.get(e, 'target.value', '');\n\n setCode(nextValue);\n\n onCodeValidation(true, nextValue, _.get(codeSelection, 'value'));\n };\n const handleCodeSelection = (\n opt: SelectOption<ERebateCodeTypes> | null,\n ) => {\n setCodeError('');\n setCode('');\n setCodeSelection(opt);\n };\n const handleCodeToggle = (e: ChangeEvent<HTMLInputElement>) => {\n handleCodeSelection(null);\n toggleCodeInput(!codeInputToggled);\n };\n\n const offerArr: TOffer[] = !!initialParams\n ? initialParams.offers\n : offers || [];\n const groupClassNameSuffix = offerArr.length > 1 ? 'bi' : 'mono';\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n {offerArr.length > 0 ? (\n <div className={`${groupsClassName}-${groupClassNameSuffix}`}>\n {offerArr.map((offer: TOffer, idx: number) => {\n let title = '-';\n if (offer.energy === EEnergyTypes.ELECTRICTY) {\n title = Wording.electricity;\n } else if (offer.energy === EEnergyTypes.GAS) {\n title = Wording.gas;\n }\n\n const currentContract = finalContracts.find(\n cntr => cntr.energy === offer.energy,\n );\n\n return (\n <RecapGroup\n chosenPackages={\n currentContract\n ? currentContract.chosenPackages || []\n : []\n }\n key={idx}\n offer={offer}\n title={title}\n gaugeProps={gaugeProps}\n installmentFrequency={\n currentContract\n ? currentContract.installmentFrequency\n : undefined\n }\n />\n );\n })}\n </div>\n ) : (\n <CustomError\n text={\n WordingConstant.AdminSubscriptionContainer.errors\n .getOffers\n }\n title={\n WordingConstant.AdminSubscriptionContainer.errors\n .defaultTitle\n }\n />\n )}\n <div className={codeClassName}>\n <div className={radioToggleClassName}>\n <CustomToggle\n checked={codeInputToggled}\n handleCheck={handleCodeToggle}\n id={'code-toggle'}\n text={Wording.code.prompt}\n />\n </div>\n {codeInputToggled && (\n <div className={codeInputClassName}>\n <CustomSelect\n handleChangeSelect={handleCodeSelection}\n options={codeOptions}\n value={codeSelection}\n />\n <CustomInput\n error={codeError}\n onInputChange={handleCodeInputChange}\n placeholder={codeInputPlaceholder}\n value={code}\n />\n </div>\n )}\n {codeInputToggled && !!codeInputHint && <p>{codeInputHint}</p>}\n </div>\n </section>\n );\n};\n\nexport default RecapSection;\n","import { SelectOption } from 'Types';\nimport _ from 'lodash';\nimport React from 'react';\nimport shortid from 'shortid';\nimport { ISectionData } from '.';\nimport ICLogo from '../../../assets/icons/ic-logo-wekiwi.svg';\nimport {\n CustomButton,\n CustomError,\n CustomOverlay,\n Separator,\n} from '../../../components';\nimport { LoadingSpinner } from '../../../libraries/withLoader';\nimport { ConnectedProps } from '../../../pages/admin/AdminSubscriptionPage/AdminSubscriptionPage';\nimport {\n buildClassName as bcn,\n compareAddress,\n forEach,\n getInitialGroup,\n parseQueryParams,\n} from '../../../utils/helpers';\nimport {\n buildFinalContracts,\n buildPendingOrder,\n Energy,\n} from '../../../utils/network/builders';\nimport {\n NoMatchingPackagesError,\n NoPackageListError,\n RequestError,\n} from '../../../utils/network/errors';\nimport {\n isCyclicalProduct,\n isEqualAuthorizedPackages,\n isEqualProduct,\n parseOrderRebateCode,\n requiresPayment,\n toEnergies,\n} from '../../../utils/network/helpers';\nimport {\n getDeliveryPointPackages,\n getRawDeliveryPointPackages,\n} from '../../../utils/network/request';\nimport {\n ECivilities,\n ECustomerTypes,\n EEffectiveStartRanges,\n EEnergyTypes,\n EFirstPaymentCBStatuses,\n EHeatingTypes,\n EHousingTypes,\n EInstallmentFrequencies,\n EOrderStatuses,\n EPaymentModes,\n EProcessTypes,\n ERateOptions,\n ERebateCodeTypes,\n EResidenceTypes,\n ERoles,\n ESubscriptionTypes,\n ETimeframes,\n ETimeslots,\n TAdditionalRate,\n TAddress,\n TAmountWithLabel,\n TAppointmentDay,\n TAuthorizedPackage,\n TContract,\n TCustomerContact,\n TEstimate,\n TGetOrderStatusResponse,\n TGetPackageResponse,\n TGetProductResponse,\n TOffer,\n TOrder,\n TOrderResponse,\n TPackage,\n TPaymentCBResponse,\n TPrepaymentFrequencies,\n TProduct,\n TSaveOrderResponse,\n TSeasonalPackage,\n TSignOrderResponse,\n TSurvey,\n TThirdParty,\n} from '../../../utils/network/types';\nimport { setState } from '../../../utils/reactHelpers';\nimport {\n removeSpaces as rs,\n toColonHeading as tch,\n toIsc,\n} from '../../../utils/text';\nimport WordingConstant from '../../../utils/wording.json';\nimport CustomerFormModal from './modals/CustomerSurveyModal';\nimport PaymentIframeModal from './modals/PaymentIframeModal';\nimport ResetModal from './modals/ResetModal';\nimport ClientDataSection from './sections/ClientDataSection';\nimport ClientSectionData from './sections/ClientDataSection/Data';\nimport MissingInformationSection from './sections/MissingInformationSection';\nimport OfferSection from './sections/OfferSection';\nimport OfferSectionData from './sections/OfferSection/Data';\nimport RecapSection from './sections/RecapSection';\nimport RecapSectionData from './sections/RecapSection/Data';\nimport SiteSection from './sections/SiteSection';\nimport SiteSectionData from './sections/SiteSection/Data';\nimport SituationSection from './sections/SituationSection';\nimport SituationSectionData, {\n SwitchData,\n} from './sections/SituationSection/Data';\nimport SubscribeSection from './sections/SubscribeSection';\nimport TopInformationSection from './sections/TopInformationSection';\nimport { EtypePayment } from '../../../utils/enums';\n\ntype GaugeProps = {\n initial: number;\n ranges: number[][];\n maxValue: number;\n};\n\nenum Sections {\n ClientData = 0,\n Site = 1,\n Offer = 2,\n Situation = 3,\n Recap = 4,\n MissingInformations = 5,\n Subscribe = 6,\n}\n\ntype PendingOrder = {\n data: TOrder;\n number: string;\n validation: TSignOrderResponse;\n};\n\ntype Situation = {\n coords?: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n };\n effectiveStartRange?: EEffectiveStartRanges;\n electricityEffectiveStartDate?: Date;\n electricityDueDate?: Date;\n gasDueDate?: Date;\n electricityExpress?: boolean;\n gasEffectiveStartDate?: Date;\n gasExpress?: boolean;\n electricityTimeslot?: ETimeslots;\n gasTimeslot?: ETimeslots;\n electricityFirstPaymentCB?: boolean;\n gasFirstPaymentCB?: boolean;\n billingAddress?: TAddress;\n iban?: string;\n processType?: EProcessTypes;\n thirdParty?: {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n };\n};\n\ntype Section = {\n id: Sections;\n initialData: ISectionData | null;\n key: string;\n toggled: boolean;\n};\n\ntype Coholder = Pick<TThirdParty, 'civility' | 'firstName' | 'lastName'>;\n\ntype IProps = ConnectedProps;\n\ninterface IState {\n errorOffer: boolean[];\n contracts: TContract[] | null;\n prepaymentFrequencies: TPrepaymentFrequencies[] | null;\n currentKey: string;\n customerContact: TCustomerContact | null;\n didSaveOrder: boolean;\n electricityDeliveryAddress: TAddress | null;\n error: { text: string; title: string } | null;\n finalContracts: TContract[];\n firstPaymentCBStatus: EFirstPaymentCBStatuses | null;\n gasDeliveryAddress: TAddress | null;\n isIndividual: boolean;\n isSurvey: boolean;\n loading: boolean;\n offers: TOffer[] | null;\n orderReference: string | null;\n orderStatus: EOrderStatuses | null;\n packages: TPackage[] | null;\n pendingOrder: PendingOrder | null;\n previousOrder: TOrder | null;\n products: TProduct[] | null;\n rebateCode: string | null;\n rebateCodeType: ERebateCodeTypes | null;\n sections: Map<Sections, Section>;\n selectedElectricityProduct: TProduct | null;\n selectedGasProduct: TProduct | null;\n shouldDisplayPaymentIframe: boolean;\n shouldDisplayResetModal: boolean;\n shouldDisplaySurveyModal: boolean;\n siteOptionSelection: ESubscriptionTypes | null;\n situation: Situation | null;\n channel: string;\n paramsOrderNumber: boolean;\n gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n };\n\n isNewSiteSectionData?: boolean;\n isNewSiteSectionDataCheckRender?: boolean;\n\n pointsOfDeliveries: {\n EL?: string;\n NG?: string;\n };\n isPackageValid: boolean;\n deliveryPointPackages: TPackage[];\n gazAdress?: string;\n elecAdress?: string;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer;\nconst title = `${toIsc(Wording.title)} ${toIsc('- ')}${toIsc(\n Wording.titleMode,\n)}`;\nconst baseClassName = 'admin-subscription-container';\nconst maskClassName = bcn([baseClassName, 'mask']);\nconst customerFormId = 'customer-form';\nconst paymentIframeId = 'payment-modal';\nconst resetModalId = 'reset-modal';\nconst buildSection = (\n id: Sections,\n toggled: boolean = false,\n data?: ISectionData,\n): Section => ({\n id,\n initialData: data || null,\n key: shortid.generate(),\n toggled,\n});\nconst buildInitialSections = () =>\n new Map<Sections, Section>([\n [Sections.ClientData, buildSection(Sections.ClientData, true)],\n [Sections.Site, buildSection(Sections.Site)],\n [Sections.Offer, buildSection(Sections.Offer)],\n [Sections.Situation, buildSection(Sections.Situation)],\n [Sections.Recap, buildSection(Sections.Recap)],\n [\n Sections.MissingInformations,\n buildSection(Sections.MissingInformations),\n ],\n [Sections.Subscribe, buildSection(Sections.Subscribe)],\n ]);\nconst initialState = {\n errorOffer: [false, false],\n contracts: null,\n prepaymentFrequencies: null,\n currentKey: shortid.generate(),\n customerContact: null,\n didSaveOrder: false,\n electricityDeliveryAddress: null,\n electricityOptions: [],\n electricityOptionSelection: [],\n error: null,\n finalContracts: [],\n firstPaymentCBStatus: null,\n gasDeliveryAddress: null,\n gasOptions: [],\n gasOptionSelection: [],\n initialParams: null,\n isIndividual: true,\n isSurvey: false,\n loading: false,\n masked: false,\n offers: null,\n orderReference: null,\n orderStatus: null,\n packages: null,\n pendingOrder: null,\n previousOrder: null,\n products: null,\n rebateCode: null,\n rebateCodeType: null,\n sections: buildInitialSections(),\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n shouldDisplayPaymentIframe: false,\n shouldDisplayResetModal: false,\n shouldDisplaySurveyModal: false,\n siteOptionSelection: null,\n situation: null,\n channel: '',\n gaugeProps: {\n electricityGaugeProps: null,\n gasGaugeProps: null,\n },\n orderNbr: null,\n paramsOrderNumber: false,\n isNewSiteSectionData: false,\n\n pointsOfDeliveries: {},\n isPackageValid: true,\n deliveryPointPackages: [],\n};\n\nclass AdminSubscriptionContainer extends React.Component<IProps, IState> {\n currOrderNbr: string | null;\n PDLRef: React.RefObject<string | null>;\n PCERef: React.RefObject<string | null>;\n\n constructor(props: IProps) {\n super(props);\n this.currOrderNbr = null;\n this.PDLRef = React.createRef();\n this.PCERef = React.createRef();\n\n this.state = _.cloneDeep(initialState);\n this.checkOrderStatus = this.checkOrderStatus.bind(this);\n this.checkSponsor = this.checkSponsor.bind(this);\n this.fetchAppointmentTimeslot = this.fetchAppointmentTimeslot.bind(\n this,\n );\n this.fetchCalendarAppointment = this.fetchCalendarAppointment.bind(\n this,\n );\n this.handleDebitDay = this.handleDebitDay.bind(this);\n this.getNextDisplayedSections = this.getNextDisplayedSections.bind(\n this,\n );\n this.handleProductSelection = this.handleProductSelection.bind(this);\n this.handleIsIndividualToggle = this.handleIsIndividualToggle.bind(\n this,\n );\n this.onSelectedGroup = this.onSelectedGroup.bind(this);\n this.handleMissingSiteID = this.handleMissingSiteID.bind(this);\n this.handleMissingInformations = this.handleMissingInformations.bind(\n this,\n );\n this.handleSiteModalValidation = this.handleSiteModalValidation.bind(\n this,\n );\n this.handleSiteOptionSelection = this.handleSiteOptionSelection.bind(\n this,\n );\n this.hideModal = this.hideModal.bind(this);\n this.onReceivePackages = this.onReceivePackages.bind(this);\n this.searchSIRET = this.searchSIRET.bind(this);\n this.submitSiteData = this.submitSiteData.bind(this);\n this.handleClientDataValidation = this.handleClientDataValidation.bind(\n this,\n );\n this.handleCodeValidation = this.handleCodeValidation.bind(this);\n this.handleOfferValidation = this.handleOfferValidation.bind(this);\n this.handlePackDynamicValidation = this.handlePackDynamicValidation.bind(\n this,\n );\n this.handlePaymentModalDismiss = this.handlePaymentModalDismiss.bind(\n this,\n );\n this.handleReset = this.handleReset.bind(this);\n this.handleResetCancel = this.handleResetCancel.bind(this);\n this.handleSituationValidation = this.handleSituationValidation.bind(\n this,\n );\n this.pay = this.pay.bind(this);\n this.reset = this.reset.bind(this);\n this.saveOrder = this.saveOrder.bind(this);\n this.signOrder = this.signOrder.bind(this);\n this.triggerSignaturePopin = this.triggerSignaturePopin.bind(this);\n this.handleSetGaugeProps = this.handleSetGaugeProps.bind(this);\n\n this.handleEstimatesPackagesByClient = this.handleEstimatesPackagesByClient.bind(\n this,\n );\n }\n componentDidMount() {\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n const orderNumber: string | number | undefined = params.get(\n 'orderNumber',\n );\n\n const customerType = params.get('customerType');\n\n if (!!orderNumber) {\n this.fetchOrder(String(orderNumber));\n this.currOrderNbr = orderNumber as string;\n this.setState({\n paramsOrderNumber: true,\n });\n } else if (!!customerType) {\n this.setState({\n isIndividual: customerType === ECustomerTypes.INDIVIDUAL,\n });\n }\n }\n\n componentDidUpdate(prevProps: IProps, prevState: IState) {\n const { didSaveOrder } = this.state;\n const bannedProperties = [\n 'didSaveOrder',\n 'error',\n 'loading',\n 'orderReference',\n 'previousOrder',\n 'shouldDisplayPaymentIframe',\n 'shouldDisplayResetModal',\n 'shouldDisplaySurveyModal',\n ];\n const partialPrevState = _.omit(prevState, ...bannedProperties);\n const partialState = _.omit(this.state, ...bannedProperties);\n if (!_.isEqual(partialPrevState, partialState) && didSaveOrder) {\n this.setState({ didSaveOrder: false });\n }\n }\n\n buildOrder(isSign: boolean) {\n const {\n customerContact,\n electricityDeliveryAddress,\n finalContracts,\n gasDeliveryAddress,\n isIndividual,\n isSurvey,\n previousOrder,\n rebateCode,\n rebateCodeType,\n situation,\n channel,\n } = this.state;\n\n if (\n !situation ||\n finalContracts.length <= 0 ||\n customerContact === null\n ) {\n return null;\n }\n let customerAddress: TAddress | null = _.get(\n customerContact,\n 'address',\n null,\n );\n if (!customerAddress) {\n customerAddress = _.get(\n finalContracts,\n '0.deliveryPoint.address',\n null,\n );\n }\n const order: TOrder | null = buildPendingOrder(\n {\n customerContact: {\n ..._.omit(\n customerContact,\n isIndividual\n ? [\n 'companyName',\n 'companyType',\n 'identificationNumber',\n 'activityCode',\n ]\n : [],\n ),\n address: customerAddress as TAddress,\n },\n typePayment:\n situation.effectiveStartRange ===\n EEffectiveStartRanges.LATER &&\n situation.processType === EProcessTypes.SWITCH\n ? EtypePayment.SDD\n : EtypePayment.OTHER,\n customerType: isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL,\n },\n {\n contracts: finalContracts,\n },\n {\n billingAddress: situation.billingAddress,\n coords: situation.coords,\n coholder: { ...situation.thirdParty },\n effectiveStartRange: situation.effectiveStartRange,\n energies: {\n EL: !!situation.electricityEffectiveStartDate\n ? {\n effectiveStartDate:\n situation.electricityEffectiveStartDate,\n express: !!situation.electricityEffectiveStartDate\n ? !!situation.electricityExpress\n : undefined,\n firstPaymentCB: !!situation.electricityFirstPaymentCB,\n timeslot: situation.electricityTimeslot,\n dueDate: situation.electricityDueDate,\n }\n : undefined,\n NG: !!situation.gasEffectiveStartDate\n ? {\n effectiveStartDate:\n situation.gasEffectiveStartDate,\n express: situation.gasEffectiveStartDate\n ? !!situation.gasExpress\n : undefined,\n firstPaymentCB: !!situation.gasFirstPaymentCB,\n timeslot: situation.gasTimeslot,\n dueDate: situation.gasDueDate,\n }\n : undefined,\n },\n payment: {\n iban: situation.iban,\n },\n processType: situation.processType,\n },\n {\n rebateCode:\n rebateCode !== null\n ? {\n code: rebateCode,\n type: rebateCodeType,\n }\n : undefined,\n channel,\n isSign,\n },\n );\n if (!!order) {\n _.set(order, 'orderStatus', EOrderStatuses.IN_PROGRESS);\n const requiresFirstPaymentCB: boolean = _.reduce<\n TContract,\n boolean\n >(\n order.contracts,\n (result: boolean, value: TContract) => {\n return result && requiresPayment(value);\n },\n true,\n );\n if (requiresFirstPaymentCB) {\n _.set(\n order,\n 'firstPaymentCBStatus',\n EFirstPaymentCBStatuses.PENDING,\n );\n }\n }\n if (!!order && !!previousOrder) {\n const previousOrderReference: string = _.get(\n previousOrder,\n 'orderReference',\n '',\n );\n const previousOrderStatus: string = _.get(\n previousOrder,\n 'orderStatus',\n '',\n );\n const previousElectricityContractNumber: string | undefined = _.get(\n _.find(previousOrder.contracts, (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n }),\n 'contractNumber',\n );\n const previousGasContractNumber: string | undefined = _.get(\n _.find(previousOrder.contracts, (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n }),\n 'contractNumber',\n );\n if (\n previousOrderStatus === EOrderStatuses.IN_PROGRESS ||\n previousOrderStatus === EOrderStatuses.IN_FAILURE\n ) {\n _.set(order, 'orderReference', previousOrderReference);\n _.set(order, 'orderStatus', previousOrderStatus);\n _.forEach(order.contracts, (contract: TContract, i: number) => {\n if (contract.energy === EEnergyTypes.ELECTRICTY) {\n _.set(\n order,\n `contracts.${i}.contractNumber`,\n previousElectricityContractNumber,\n );\n } else if (contract.energy === EEnergyTypes.GAS) {\n _.set(\n order,\n `contracts.${i}.contractNumber`,\n previousGasContractNumber,\n );\n }\n });\n }\n }\n\n return order;\n }\n async checkOrderStatus(\n orderNumber: string,\n ): Promise<TGetOrderStatusResponse | RequestError> {\n const { getOrderStatus } = this.props;\n const { pendingOrder, channel } = this.state;\n const res:\n | TGetOrderStatusResponse\n | RequestError = await getOrderStatus(\n getInitialGroup(channel),\n orderNumber,\n );\n if (!(res instanceof RequestError)) {\n if (!!pendingOrder) {\n _.set(pendingOrder, 'data.orderStatus', res.orderStatus);\n }\n this.setState({\n orderStatus: res.orderStatus,\n firstPaymentCBStatus: res.firstPaymentCBStatus,\n pendingOrder,\n });\n }\n return res;\n }\n async checkSponsor(code: string): Promise<boolean | RequestError> {\n const { checkSponsor } = this.props;\n return this.load(checkSponsor, [code]);\n }\n async fetchAppointmentTimeslot(\n date: Date,\n energy: EEnergyTypes,\n ): Promise<ETimeslots[] | RequestError> {\n const { searchAppointmentTimeslot } = this.props;\n const res:\n | ETimeslots[]\n | RequestError = await this.load(searchAppointmentTimeslot, [\n date,\n energy,\n ]);\n return res;\n }\n async fetchCalendarAppointment(\n energyType: EEnergyTypes,\n isIndividual: boolean,\n onInit?: boolean,\n ): Promise<TAppointmentDay[] | RequestError> {\n const { getCalendarAppointment } = this.props;\n const { previousOrder, channel } = this.state;\n const electricityProduct =\n this.state.selectedElectricityProduct &&\n this.state.selectedElectricityProduct.productCode;\n const gasProduct =\n this.state.selectedGasProduct &&\n this.state.selectedGasProduct.productCode;\n\n const productCodePro =\n energyType === EEnergyTypes.ELECTRICTY\n ? electricityProduct\n : gasProduct;\n const order =\n !!onInit && !!previousOrder\n ? previousOrder || undefined\n : undefined;\n const res:\n | TAppointmentDay[]\n | RequestError = await this.load(getCalendarAppointment, [\n getInitialGroup(channel),\n energyType,\n isIndividual,\n order,\n productCodePro,\n ]);\n return res;\n }\n didCompleteSubcription(): boolean {\n const { firstPaymentCBStatus } = this.state;\n return (\n this.didSignOrder() &&\n (firstPaymentCBStatus === null ||\n firstPaymentCBStatus === EFirstPaymentCBStatuses.FINALIZED)\n );\n }\n didSignOrder(): boolean {\n const { orderStatus } = this.state;\n return (\n orderStatus === EOrderStatuses.FINALIZED ||\n orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC\n );\n }\n async fetchOrder(orderNumber: string) {\n const { getOrder } = this.props;\n const { channel } = this.state;\n const res: TOrderResponse | RequestError = await this.load(\n getOrder,\n [getInitialGroup(channel), orderNumber],\n (err: RequestError) => {\n this.reset({\n error: {\n title: Wording.errors.fetchOrder,\n text: err.message,\n },\n });\n },\n );\n if (res instanceof RequestError) return;\n const isIndividual: boolean = !(\n _.get(res, 'order.customer.type') === ECustomerTypes.PROFESSIONAL\n );\n\n const sections: Map<Sections, Section> | null = await this.load(\n this.getInitialSections,\n [res],\n () => {\n this.setState({\n error: {\n title: Wording.errors.defaultTitle,\n text: Wording.errors.getInitialSections,\n },\n });\n },\n );\n let siteOptionSelection: ESubscriptionTypes | null = null;\n const contracts: TContract[] | null = _.get(\n res,\n 'order.contracts',\n null,\n );\n const electricityContract: TContract | undefined = _.find(\n contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const gasContract: TContract | undefined = _.find(\n contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n const hasElectricity: boolean = !!electricityContract;\n const hasGas: boolean = !!gasContract;\n if (hasElectricity && hasGas) {\n siteOptionSelection = ESubscriptionTypes.ELECTRICITY_AND_GAS;\n } else if (hasElectricity) {\n siteOptionSelection = ESubscriptionTypes.ELECTRICITY;\n } else if (hasGas) {\n siteOptionSelection = ESubscriptionTypes.GAS;\n }\n const orderCode = parseOrderRebateCode(contracts || []);\n const electricityEffectiveStartDate =\n new Date(_.get(electricityContract, 'effectiveStartDate', '')) ||\n undefined;\n const gasEffectiveStartDate =\n new Date(_.get(gasContract, 'effectiveStartDate', '')) || undefined;\n const thirdParty = _.find(\n _.get(res, 'contracts.0.thirdParties'),\n (tp: TThirdParty) => {\n return tp.role === ERoles.COHOLDER;\n },\n );\n const situation: Situation = {\n effectiveStartRange: _.get(\n res,\n 'order.contracts.0.effectiveStartRange',\n ),\n electricityEffectiveStartDate,\n electricityExpress: !!_.get(\n electricityContract,\n 'deliveryPoint.process.express',\n ),\n gasEffectiveStartDate,\n gasExpress: !!_.get(gasContract, 'deliveryPoint.process.express'),\n electricityTimeslot: _.get(\n electricityContract,\n 'deliveryPoint.process.appointmentTimeslot',\n ),\n gasTimeslot: _.get(\n gasContract,\n 'deliveryPoint.process.appointmentTimeslot',\n ),\n electricityFirstPaymentCB: _.get(\n electricityContract,\n 'firstPaymentCB',\n ),\n gasFirstPaymentCB: _.get(gasContract, 'firstPaymentCB'),\n billingAddress: _.get(\n res,\n 'customer.finance.billingContact.address',\n ),\n iban: _.get(res, 'customer.finance.ibanCode'),\n processType: _.get(\n electricityContract,\n 'deliveryPoint.process.type',\n ),\n thirdParty,\n };\n /* The following state attributes are missing from the reset pendingState\n packages: TPackage[] | null;\n products: TProduct[] | null;\n selectedElectricityProduct: TProduct | null;\n selectedGasProduct: TProduct | null;\n */\n if (!!sections) {\n this.reset({\n contracts,\n customerContact: _.get(res, 'order.customer.contact') || null,\n electricityDeliveryAddress:\n _.get(electricityContract, 'deliveryPoint.address') || null,\n finalContracts: contracts || undefined,\n firstPaymentCBStatus: _.get(\n res,\n 'order.firstPaymentCBStatus',\n null,\n ),\n gasDeliveryAddress:\n _.get(gasContract, 'deliveryPoint.address') || null,\n isIndividual,\n isSurvey: !_.get(contracts, '0.deliveryPoint.pointOfDelivery'),\n orderStatus: _.get(res, 'order.orderStatus', null),\n previousOrder: res.order,\n rebateCode: !!orderCode ? orderCode.code : null,\n rebateCodeType: !!orderCode ? orderCode.type : null,\n sections,\n siteOptionSelection,\n situation,\n channel: res.channel,\n });\n }\n }\n getStatusWording(\n orderStatus: EOrderStatuses | null,\n firstPaymentCBStatus: EFirstPaymentCBStatuses | null,\n ): [[string, string], [string, string]] {\n let orderStr: string = Wording.orderStatuses.inProgress;\n let paymentStr: string = '-';\n switch (orderStatus) {\n case EOrderStatuses.FINALIZED:\n case EOrderStatuses.FINALIZED_WITHOUT_DOC:\n orderStr = Wording.orderStatuses.finalized;\n break;\n }\n switch (firstPaymentCBStatus) {\n case EFirstPaymentCBStatuses.FINALIZED:\n paymentStr = Wording.paymentStatuses.finalized;\n break;\n case EFirstPaymentCBStatuses.PENDING:\n paymentStr = Wording.paymentStatuses.pending;\n break;\n case EFirstPaymentCBStatuses.CANCELED:\n paymentStr = Wording.paymentStatuses.canceled;\n break;\n case EFirstPaymentCBStatuses.IN_FAILURE:\n paymentStr = Wording.paymentStatuses.inFailure;\n break;\n }\n return [\n [tch(Wording.orderStatus), orderStr],\n [tch(Wording.paymentStatus), paymentStr],\n ];\n }\n\n handleSetGaugeProps(gaugeProps: {\n electricityGaugeProps: GaugeProps | null;\n gasGaugeProps: GaugeProps | null;\n }) {\n this.setState({ gaugeProps });\n }\n\n handleProductSelection(energy: EEnergyTypes, product: TProduct | null) {\n const nextState: any = {};\n if (energy === EEnergyTypes.ELECTRICTY) {\n nextState.selectedElectricityProduct = product;\n if (!!product && !!product.additionalRates) {\n nextState.electricityOptions = product.additionalRates;\n }\n } else if (energy === EEnergyTypes.GAS) {\n nextState.selectedGasProduct = product;\n if (!!product && !!product.additionalRates) {\n nextState.gasOptions = product.additionalRates;\n }\n }\n this.setState({ ...nextState });\n }\n handleIsIndividualToggle(isIndividual: boolean) {\n this.reset({ isIndividual });\n }\n onSelectedGroup(group: SelectOption<string>) {\n this.setState({ channel: group.value });\n }\n handleMissingSiteID() {\n this.setState({ shouldDisplaySurveyModal: true });\n }\n async load<R, F extends (...args: any[]) => Promise<R>>(\n fn: F,\n args: Parameters<F>,\n errorHandler?: (err: RequestError) => void | Promise<void>,\n ): Promise<R> {\n this.setState({ error: null, loading: true });\n const res = await fn.call(this, ...args);\n if (res instanceof RequestError && !!errorHandler) {\n console.error(res);\n if (!!errorHandler) {\n await errorHandler(res);\n } else {\n this.setState({\n error: {\n title: Wording.errors.defaultTitle,\n text: res.message,\n },\n });\n }\n }\n this.setState({ loading: false });\n return res;\n }\n handleClientDataValidation(\n validated: boolean,\n customerContact: TCustomerContact,\n ) {\n this.setState({\n customerContact,\n sections: this.getNextDisplayedSections(\n Sections.Site,\n validated,\n true,\n ),\n });\n }\n handleCodeValidation(\n validated: boolean,\n code: string,\n type?: ERebateCodeTypes,\n ) {\n this.setState({\n rebateCode: validated ? code : null,\n rebateCodeType: type || null,\n });\n }\n handleDebitDay(debitDay: number) {\n const { finalContracts } = this.state;\n finalContracts.map((finalContract, index) => {\n finalContracts[index].debitDay = debitDay;\n });\n this.setState({\n finalContracts,\n });\n }\n async handleMissingInformations(PCE?: string, PDL?: string) {\n const { getDeliveryPointPackages } = this.props;\n\n const {\n finalContracts,\n isIndividual,\n siteOptionSelection,\n channel,\n customerContact,\n } = this.state;\n\n const electricityEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n const gasEnabled =\n siteOptionSelection === ESubscriptionTypes.GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n this.setState({ error: null });\n const res: TGetPackageResponse | RequestError = await this.load(\n getDeliveryPointPackages,\n [getInitialGroup(channel), PDL || null, PCE || null, isIndividual],\n (err: RequestError) => {\n this.setState({\n error: {\n title: Wording.errors.getPackages,\n text:\n err.message +\n '. Veuillez réessayer ou recommencer la souscription avec le point directement',\n },\n });\n },\n );\n\n const electricityIndex: number = _.findIndex(\n finalContracts,\n (contract: TContract) => {\n const energy: EEnergyTypes = _.get(contract, 'energy');\n return energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const gasIndex: number = _.findIndex(\n finalContracts,\n (contract: TContract) => {\n const energy: EEnergyTypes = _.get(contract, 'energy');\n return energy === EEnergyTypes.GAS;\n },\n );\n\n // à voir si on garde ou on modifie\n if (electricityIndex !== -1) {\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.pointOfDelivery',\n PDL,\n );\n }\n\n if (gasIndex !== -1) {\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.pointOfDelivery',\n PCE,\n );\n }\n\n if (res instanceof RequestError) return;\n\n const newContracts: TContract[] = res.contracts;\n const newPackages: TPackage[] = res.packagesList;\n\n let electricityDeliveryAddress: TContract | null = null;\n let gasDeliveryAddress: TContract | null = null;\n let isPackageValid = true;\n for (const element of finalContracts) {\n const chosenPackages = element.chosenPackages || [];\n if (element.chosenPackages !== undefined) {\n for (const element of chosenPackages) {\n if (\n newPackages.findIndex(\n newPackage =>\n newPackage.energy === element.energy &&\n newPackage.amount === element.amount,\n ) === -1\n ) {\n isPackageValid = false;\n break;\n }\n }\n } else {\n isPackageValid = false;\n break;\n }\n }\n\n this.setState({\n isPackageValid,\n deliveryPointPackages: newPackages,\n });\n\n if (!isPackageValid) {\n return;\n }\n\n _.forEach(newContracts, (contract: TContract) => {\n if (\n electricityEnabled &&\n contract.energy === EEnergyTypes.ELECTRICTY\n ) {\n electricityDeliveryAddress = _.get(\n contract,\n 'deliveryPoint.address',\n null,\n );\n // if (\n // electricityIndex !== -1 &&\n // !_.get(\n // finalContracts[electricityIndex],\n // 'deliveryPoint.pointOfDelivery',\n // )\n // ) {\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.pointOfDelivery',\n _.get(contract, 'deliveryPoint.pointOfDelivery'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.address',\n _.get(contract, 'deliveryPoint.address'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.contractualCapacity',\n _.get(contract, 'deliveryPoint.contractualCapacity'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.effectiveStartDate',\n _.get(contract, 'deliveryPoint.effectiveStartDate'),\n );\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.greedRate',\n _.get(contract, 'deliveryPoint.greedRate'),\n );\n if (\n electricityIndex !== -1 &&\n !_.get(\n finalContracts[electricityIndex],\n 'deliveryPoint.profile',\n )\n ) {\n _.set(\n finalContracts[electricityIndex],\n 'deliveryPoint.profile',\n _.get(contract, 'deliveryPoint.profile'),\n );\n }\n } else if (gasEnabled && contract.energy === EEnergyTypes.GAS) {\n gasDeliveryAddress = _.get(\n contract,\n 'deliveryPoint.address',\n null,\n );\n // if (\n // gasIndex !== -1 &&\n // !_.get(\n // finalContracts[gasIndex],\n // 'deliveryPoint.pointOfDelivery',\n // )\n // ) {\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.pointOfDelivery',\n _.get(contract, 'deliveryPoint.pointOfDelivery'),\n );\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.address',\n _.get(contract, 'deliveryPoint.address'),\n );\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.greedRate',\n _.get(contract, 'deliveryPoint.greedRate'),\n );\n if (\n gasIndex !== -1 &&\n !_.get(finalContracts[gasIndex], 'deliveryPoint.profile')\n ) {\n _.set(\n finalContracts[gasIndex],\n 'deliveryPoint.profile',\n _.get(contract, 'deliveryPoint.profile'),\n );\n }\n }\n // }\n });\n\n const newContact = { ...customerContact };\n\n if (customerContact) {\n (newContact as any).address = _.get(\n finalContracts[0],\n 'deliveryPoint.address',\n customerContact !== null\n ? (customerContact as TCustomerContact).address\n : undefined,\n );\n }\n\n this.setState({\n electricityDeliveryAddress,\n gasDeliveryAddress,\n finalContracts,\n customerContact: newContact as TCustomerContact,\n });\n }\n async handlePackDynamicValidation(selection: {\n product?: TProduct;\n energyType?: EEnergyTypes;\n }) {\n const { getPackDynamic, getEstimatesPackages } = this.props;\n const {\n contracts,\n isIndividual,\n channel,\n pointsOfDeliveries,\n deliveryPointPackages,\n errorOffer,\n } = this.state;\n if (!contracts || contracts.length === 0) return;\n\n const error: { text: string; title: string } | null = null;\n\n let electricityEnergy: Partial<Energy> | null = null;\n let gasEnergy: Partial<Energy> | null = null;\n _.forEach(contracts, (contract: TContract) => {\n if (\n contract.energy === EEnergyTypes.ELECTRICTY &&\n selection.energyType === EEnergyTypes.ELECTRICTY\n ) {\n electricityEnergy = {\n chosenPackages: [],\n contract,\n chosenProduct: selection.product,\n pointOfDelivery: pointsOfDeliveries.EL,\n };\n } else if (\n contract.energy === EEnergyTypes.GAS &&\n selection.energyType === EEnergyTypes.GAS\n ) {\n gasEnergy = {\n chosenPackages: [],\n contract,\n chosenProduct: selection.product,\n pointOfDelivery: pointsOfDeliveries.NG,\n };\n }\n });\n\n const finalContracts: TContract[] = buildFinalContracts(\n electricityEnergy,\n gasEnergy,\n );\n const res: any | RequestError = await this.load(\n getPackDynamic,\n [getInitialGroup(channel), finalContracts, isIndividual],\n () => {},\n );\n const validated = !(res instanceof RequestError);\n\n if (!validated) {\n return;\n }\n const budget: TAmountWithLabel = res.budgets[0];\n\n if (budget.amount && parseInt(budget.amount, 10) >= 6000) {\n const updatedErrorOffer = errorOffer.map((value, index) => {\n if (\n selection.energyType === EEnergyTypes.ELECTRICTY &&\n index === 0\n ) {\n return true;\n } else if (\n selection.energyType === EEnergyTypes.GAS &&\n index === 1\n ) {\n return true;\n }\n return value;\n });\n\n await setState(this, {\n errorOffer: updatedErrorOffer,\n });\n return;\n } else {\n const updatedErrorOffer = errorOffer.map((value, index) => {\n if (\n selection.energyType === EEnergyTypes.ELECTRICTY &&\n index === 0\n ) {\n return false;\n } else if (\n selection.energyType === EEnergyTypes.GAS &&\n index === 1\n ) {\n return false;\n }\n return value;\n });\n await setState(this, {\n errorOffer: updatedErrorOffer,\n });\n }\n\n const estimate: TEstimate = {\n quantity: res.packages[0].packageQuantity + 1,\n timeframe: (finalContracts[0].rateOption as unknown) as ETimeframes,\n energy: selection.energyType,\n };\n const packageReal:\n | TGetPackageResponse\n | RequestError = await this.load(\n getEstimatesPackages,\n [\n getInitialGroup(channel),\n [estimate],\n isIndividual,\n [selection.energyType as EEnergyTypes],\n ],\n () => {},\n );\n if (packageReal instanceof RequestError) {\n return;\n }\n const dynamicPackage: TPackage[] = (packageReal as TGetPackageResponse)\n .packagesList;\n const elecPackage = dynamicPackage.every(\n pkg => pkg.energy === EEnergyTypes.ELECTRICTY,\n );\n const ngPackage = dynamicPackage.every(\n pkg => pkg.energy === EEnergyTypes.GAS,\n );\n\n let updatedDeliveryPointPackages: TPackage[] = [];\n if (elecPackage) {\n updatedDeliveryPointPackages = [\n ...deliveryPointPackages.filter(\n pkg => pkg.energy !== EEnergyTypes.ELECTRICTY,\n ),\n ...dynamicPackage,\n ];\n }\n\n if (ngPackage) {\n updatedDeliveryPointPackages = [\n ...deliveryPointPackages.filter(\n pkg => pkg.energy !== EEnergyTypes.GAS,\n ),\n ...dynamicPackage,\n ];\n }\n\n await setState(this, {\n deliveryPointPackages: updatedDeliveryPointPackages,\n isPackageValid: true,\n offers: validated ? (res as TOffer[]) : [],\n });\n }\n async handleOfferValidation(selection: {\n electricityFrequency?: EInstallmentFrequencies;\n electricityPackage?: TPackage;\n electricityProduct?: TProduct;\n electricitySeasonalPackages?: TAuthorizedPackage | null;\n gasFrequency?: EInstallmentFrequencies;\n gasPackage?: TPackage;\n gasProduct?: TProduct;\n gasSeasonalPackages?: TAuthorizedPackage | null;\n }) {\n const { getOffers } = this.props;\n const {\n contracts,\n isIndividual,\n siteOptionSelection,\n channel,\n pointsOfDeliveries,\n isSurvey,\n } = this.state;\n if (!contracts || contracts.length === 0) return;\n\n const energies: EEnergyTypes[] = toEnergies(siteOptionSelection);\n let error: { text: string; title: string } | null = null;\n if (\n (_.includes(energies, EEnergyTypes.ELECTRICTY) &&\n !selection.electricityProduct) ||\n (_.includes(energies, EEnergyTypes.GAS) && !selection.gasProduct)\n ) {\n error = {\n text: Wording.errors.missingEnergies,\n title: Wording.errors.defaultTitle,\n };\n await setState(this, { error });\n return;\n }\n let electricityEnergy: Partial<Energy> | null = null;\n let gasEnergy: Partial<Energy> | null = null;\n _.forEach(contracts, (contract: TContract) => {\n if (contract.energy === EEnergyTypes.ELECTRICTY) {\n if (isCyclicalProduct(selection.electricityProduct)) {\n electricityEnergy = {\n contract,\n chosenProduct: selection.electricityProduct,\n pointOfDelivery: pointsOfDeliveries.EL,\n };\n } else if (!!selection.electricityPackage) {\n electricityEnergy = {\n contract,\n chosenPackages:\n !!selection.electricitySeasonalPackages &&\n selection.electricitySeasonalPackages.length > 0\n ? [...selection.electricitySeasonalPackages]\n : [selection.electricityPackage],\n chosenProduct: selection.electricityProduct,\n selectedFrequency: selection.electricityFrequency,\n pointOfDelivery: pointsOfDeliveries.EL,\n };\n }\n } else if (contract.energy === EEnergyTypes.GAS) {\n if (isCyclicalProduct(selection.gasProduct)) {\n gasEnergy = {\n contract,\n chosenProduct: selection.gasProduct,\n pointOfDelivery: pointsOfDeliveries.NG,\n };\n } else if (!!selection.gasPackage) {\n gasEnergy = {\n contract,\n chosenPackages:\n !!selection.gasSeasonalPackages &&\n selection.gasSeasonalPackages.length > 0\n ? [...selection.gasSeasonalPackages]\n : [selection.gasPackage],\n chosenProduct: selection.gasProduct,\n selectedFrequency: selection.gasFrequency,\n pointOfDelivery: pointsOfDeliveries.NG,\n };\n }\n }\n });\n\n const finalContracts: TContract[] = buildFinalContracts(\n electricityEnergy,\n gasEnergy,\n );\n await setState(this, {\n finalContracts,\n isNewSiteSectionDataCheckRender: false,\n });\n const res: TOffer[] | RequestError = await this.load(\n getOffers,\n [getInitialGroup(channel), finalContracts, isIndividual],\n () => {},\n );\n const validated = !(res instanceof RequestError);\n\n if (!validated) {\n return;\n }\n await setState(this, {\n isPackageValid: true,\n offers: validated ? (res as TOffer[]) : [],\n sections: this.getNextDisplayedSections(\n Sections.Situation,\n validated,\n ),\n });\n }\n handlePaymentModalDismiss(\n paymentCBStatus: EFirstPaymentCBStatuses,\n error?: { title: string; text: string },\n ) {\n this.setState({\n shouldDisplayPaymentIframe: false,\n error: error || null,\n firstPaymentCBStatus: paymentCBStatus,\n });\n }\n handleReset() {\n this.setState({ shouldDisplayResetModal: true });\n }\n handleResetCancel() {\n this.setState({ shouldDisplayResetModal: false });\n }\n async handleSiteModalValidation(\n accomodationType: EResidenceTypes,\n area: number,\n address: TAddress,\n consumption: number,\n heatingType: EHeatingTypes,\n inhabitants: number,\n livingIn: EHousingTypes,\n rateOption: ERateOptions,\n ) {\n this.hideModal();\n const { getSurveyPackages } = this.props;\n const { isIndividual, siteOptionSelection, channel } = this.state;\n const customerType: ECustomerTypes = isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL;\n const energyList: EEnergyTypes[] = [];\n if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS) {\n energyList.push(EEnergyTypes.ELECTRICTY);\n energyList.push(EEnergyTypes.GAS);\n } else if (siteOptionSelection === ESubscriptionTypes.ELECTRICITY) {\n energyList.push(EEnergyTypes.ELECTRICTY);\n } else if (siteOptionSelection === ESubscriptionTypes.GAS) {\n energyList.push(EEnergyTypes.GAS);\n }\n const survey: TSurvey = {\n energyList,\n housingType: livingIn,\n residenceType: accomodationType,\n area,\n inhabitantsNumber: inhabitants,\n heatingType,\n rateOption,\n address,\n };\n const prevContracts = this.state.contracts\n ? this.state.contracts.slice()\n : [];\n await setState(this, {\n contracts: null,\n packages: null,\n products: null,\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n // pointsOfDeliveries: { NG: undefined, EL: undefined }\n });\n const res = await this.load(getSurveyPackages, [\n getInitialGroup(channel),\n survey,\n isIndividual,\n ]);\n if (res instanceof RequestError) {\n return;\n }\n this.setState({\n sections: this.getNextDisplayedSections(Sections.Offer, true),\n });\n const [contracts, packages, frequencies]: [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] = this.parseGetPackageResponse(res);\n if (prevContracts && contracts) {\n contracts.map((c, index) => Object.assign(c, prevContracts[index]));\n }\n this.onReceivePackages(\n contracts,\n packages,\n frequencies,\n customerType,\n true,\n );\n\n let elecAdress = '';\n let gazAdress = '';\n\n if (contracts) {\n const elecContract = contracts.find(\n contract => contract.energy === 'EL',\n );\n if (\n elecContract &&\n elecContract.deliveryPoint &&\n elecContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (elecContract.deliveryPoint.address.number) {\n addressParts.push(\n elecContract.deliveryPoint.address.number,\n );\n }\n\n if (elecContract.deliveryPoint.address.street) {\n addressParts.push(\n elecContract.deliveryPoint.address.street,\n );\n }\n if (elecContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n elecContract.deliveryPoint.address.postalCode,\n );\n }\n if (elecContract.deliveryPoint.address.townName) {\n addressParts.push(\n elecContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n elecAdress = addressParts.join(' ');\n }\n\n const gazContract = contracts.find(\n contract => contract.energy === 'NG',\n );\n if (\n gazContract &&\n gazContract.deliveryPoint &&\n gazContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (gazContract.deliveryPoint.address.number) {\n addressParts.push(gazContract.deliveryPoint.address.number);\n }\n\n if (gazContract.deliveryPoint.address.street) {\n addressParts.push(gazContract.deliveryPoint.address.street);\n }\n if (gazContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n gazContract.deliveryPoint.address.postalCode,\n );\n }\n if (gazContract.deliveryPoint.address.townName) {\n addressParts.push(\n gazContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n gazAdress = addressParts.join(' ');\n }\n }\n this.setState({\n elecAdress,\n gazAdress,\n });\n }\n handleSiteOptionSelection(siteOptionSelection: ESubscriptionTypes) {\n const nextState: any = {\n contracts: null,\n electricityOptions: [],\n gasOptions: [],\n packages: null,\n products: null,\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n siteOptionSelection,\n orderStatus: null,\n };\n this.setState({ ...nextState });\n }\n handleSituationValidation(validated: boolean, situation: Situation) {\n this.setState({\n situation: validated ? situation : null,\n sections: this.getNextDisplayedSections(\n Sections.Subscribe,\n validated,\n ),\n });\n }\n hideModal() {\n this.setState({ shouldDisplaySurveyModal: false });\n }\n async onReceivePackages(\n contracts: TContract[] | null,\n packages: TPackage[] | null,\n frequencies: TPrepaymentFrequencies[] | null,\n customerType: ECustomerTypes,\n survey: boolean,\n ) {\n const { getProducts } = this.props;\n const { channel } = this.state;\n if (!contracts || !packages) {\n console.error(\n `Could not fetch products: args: contracts: ${contracts} packages: ${packages}`,\n );\n return;\n }\n let products = null;\n const res: TGetProductResponse | RequestError = await this.load(\n getProducts,\n [getInitialGroup(channel), contracts, customerType],\n () => {\n this.setState({\n error: {\n title: Wording.errors.defaultTitle,\n text: Wording.errors.offer,\n },\n });\n },\n );\n if (res instanceof RequestError) return;\n products = this.parseGetProductsResponse(res);\n this.setState({\n contracts,\n isSurvey: survey,\n packages,\n products,\n prepaymentFrequencies: frequencies,\n });\n }\n parseGetPackageResponse(\n res: any,\n ): [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] {\n const contracts = _.get(res, 'contracts', null);\n const packages = _.get(res, 'packagesList', null);\n const frequencies = _.get(res, 'prepaymentFrequencies', null);\n return [contracts, packages, frequencies];\n }\n parseGetProductsResponse(res: TGetProductResponse): TProduct[] | null {\n const products: TProduct[] | null = _.get(res, 'productsList', null);\n return products;\n }\n reset(pendingState: Partial<IState> = { isIndividual: true }) {\n const nextKey: string = shortid.generate();\n this.setState(\n {\n ..._.cloneDeep(initialState),\n sections: buildInitialSections(),\n ...pendingState,\n currentKey: nextKey,\n },\n () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n },\n );\n }\n async searchSIRET(value: string) {\n const { searchSiret } = this.props;\n this.setState({ loading: true });\n const res = await searchSiret(value);\n this.setState({ loading: false });\n return res;\n }\n setLoading(loading: boolean) {\n this.setState({ loading });\n }\n shouldAllowSignOrder() {\n const {\n electricityDeliveryAddress,\n gasDeliveryAddress,\n isSurvey,\n siteOptionSelection,\n finalContracts,\n isNewSiteSectionDataCheckRender,\n contracts,\n } = this.state;\n\n const checkPointOfDelivery = finalContracts.reduce(\n (acc, curr) =>\n Boolean(\n acc &&\n curr.deliveryPoint &&\n curr.deliveryPoint.pointOfDelivery !== undefined,\n ),\n true,\n );\n\n let hasAddress = true;\n const electricityEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n const gasEnabled =\n siteOptionSelection === ESubscriptionTypes.GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS;\n\n if (isSurvey) {\n if (electricityEnabled && !checkPointOfDelivery) {\n hasAddress = hasAddress && !!electricityDeliveryAddress;\n }\n if (gasEnabled && !checkPointOfDelivery) {\n hasAddress = hasAddress && !!gasDeliveryAddress;\n }\n }\n let offerCheck = true;\n\n if (isNewSiteSectionDataCheckRender && contracts) {\n // @ts-ignore\n offerCheck = contracts.reduce(\n (acc, curr) =>\n // @ts-ignore\n Boolean(\n acc &&\n curr.chosenPackages !== undefined &&\n curr.chosenPackages.length !== 0,\n ),\n true,\n );\n }\n\n return hasAddress && checkPointOfDelivery && offerCheck;\n }\n shouldShow(target: Sections) {\n const { sections } = this.state;\n const section: Section | undefined = sections.get(target);\n if (section) {\n if (\n this.state.previousOrder &&\n this.state.previousOrder.orderReference &&\n section.id !== 5\n ) {\n return true;\n }\n }\n return !!section && section.toggled;\n }\n getNextDisplayedSections(\n targetSection: Sections,\n toggled: boolean,\n resetInitialData: boolean = false,\n ) {\n const { isSurvey, sections, finalContracts } = this.state;\n const nextSections: Map<Sections, Section> = new Map(sections);\n const nextSectionsArr: Section[] = [\n ...nextSections.values(),\n ].sort((a: Section, b: Section) => (a.id < b.id ? -1 : 1));\n for (let i = 0; i < nextSectionsArr.length; i = i + 1) {\n const section: Section | undefined = nextSectionsArr[i];\n if (!section) {\n console.error('Section validation error');\n return sections;\n }\n if (i === targetSection) {\n section.toggled = toggled;\n if (resetInitialData) section.initialData = null;\n } else {\n const hidden: boolean = i >= targetSection;\n section.toggled = !hidden;\n if (hidden) section.key = shortid.generate();\n }\n if (i === Sections.Recap) {\n section.toggled =\n section.toggled &&\n targetSection >= Sections.Subscribe &&\n toggled;\n } else if (i === Sections.MissingInformations) {\n const checkDeliveryPoints = finalContracts.reduce(\n (acc, curr) =>\n acc &&\n curr.deliveryPoint !== undefined &&\n curr.deliveryPoint.pointOfDelivery === undefined,\n true,\n );\n\n section.toggled =\n section.toggled && isSurvey && checkDeliveryPoints;\n } else if (i === Sections.Subscribe) {\n section.toggled =\n section.toggled && !this.didCompleteSubcription();\n }\n nextSections.set(section.id, section);\n }\n return nextSections;\n }\n async getInitialSections(\n order: TOrderResponse,\n ): Promise<Map<Sections, Section>> {\n const sections = new Map<Sections, Section>(buildInitialSections());\n let clientData: ClientSectionData | null = null;\n let siteData: SiteSectionData | null = null;\n let offerData: OfferSectionData | null = null;\n let situationData: SituationSectionData | null = null;\n let recapData: RecapSectionData | null = null;\n await forEach(sections, async (value: Section, key: Sections) => {\n switch (key) {\n case Sections.ClientData:\n clientData = this.parsePreviousClientData(order);\n value.initialData = clientData;\n value.toggled = !!clientData;\n break;\n case Sections.Site:\n siteData = await this.parsePreviousSiteData(order.order);\n value.initialData = siteData;\n value.toggled = !!siteData;\n break;\n case Sections.Offer:\n offerData = await this.parsePreviousOfferData(order);\n value.initialData = offerData;\n value.toggled = !!offerData;\n break;\n case Sections.Situation:\n situationData = this.parsePreviousSituationData(\n order.order,\n );\n\n value.initialData = situationData;\n value.toggled = !!situationData;\n break;\n case Sections.Recap:\n recapData = await this.parsePreviousRecapData(order);\n value.initialData = recapData;\n value.toggled = !!recapData;\n break;\n }\n });\n await setState(this, {\n orderReference: order.order.orderReference || null,\n orderStatus: order.order.orderStatus || null,\n firstPaymentCBStatus: order.order.firstPaymentCBStatus || null,\n });\n return sections;\n }\n\n async handleEstimatesPackagesByClient(\n estimates: TEstimate[],\n energies: EEnergyTypes[],\n ) {\n const { getEstimatesPackages } = this.props;\n const { channel, isIndividual } = this.state;\n\n try {\n const pkgRes: TGetPackageResponse | RequestError = await this.load(\n getEstimatesPackages,\n [getInitialGroup(channel), estimates, isIndividual, energies],\n (err: RequestError) => {\n this.setState({\n error: {\n title: Wording.errors.getPackages,\n text: err.message,\n },\n });\n },\n );\n if (pkgRes instanceof RequestError) return;\n\n const nextState: any = {};\n if (pkgRes.prepaymentFrequencies) {\n nextState.prepaymentFrequencies = pkgRes.prepaymentFrequencies;\n }\n\n if (pkgRes.packagesList) nextState.packages = pkgRes.packagesList;\n if (pkgRes.contracts) nextState.contracts = pkgRes.contracts;\n\n await setState(this, {\n ...nextState,\n selectedGasProduct: null,\n selectedElectricityProduct: null,\n });\n } catch (err) {\n if (err instanceof RequestError) {\n console.error('Could not restore previous contracts');\n console.error(err);\n } else console.log('No prior offer data');\n }\n }\n\n getSectionCurrentKey(index: Sections): string {\n const { currentKey, sections } = this.state;\n const key: string =\n currentKey + _.get(sections.get(index), 'key', shortid.generate());\n return key;\n }\n parsePreviousClientData(order: TOrderResponse): ClientSectionData | null {\n let data: ClientSectionData | null = null;\n\n try {\n const { contracts } = order.order;\n const contact = _.get(order, 'order.customer.contact', {});\n const mainContract =\n contracts.length === 2\n ? contracts.find(\n ctr => ctr.energy === EEnergyTypes.ELECTRICTY,\n )\n : contracts[0];\n\n let addressDeliverypoint = {};\n\n if (\n mainContract &&\n mainContract.deliveryPoint &&\n mainContract.deliveryPoint.address\n ) {\n addressDeliverypoint = mainContract.deliveryPoint.address;\n } else {\n addressDeliverypoint = contact.address;\n }\n\n const isSame = compareAddress(\n addressDeliverypoint as any,\n contact.address,\n );\n\n data = {\n section: Sections.ClientData,\n firstNameValue: contact.firstName,\n lastNameValue: contact.lastName,\n birthDatePick: new Date(contact.birthdate),\n birthDatePickPro: new Date(contact.birthdate),\n businessNameValue: contact.companyName || null,\n SIRETValue: contact.identificationNumber || null,\n mailAddressValue: contact.email,\n phoneNumberValue: contact.phone,\n identicalAddressToggleState: !order.order.customer.contact\n .address,\n addressAddressValue: `${_.get(\n contact,\n 'address.number',\n '',\n )} ${_.get(contact, 'address.street', '')}`,\n address: isSame ? undefined : contact.address,\n civilStatus: contact.civility,\n legalStatus: contact.companyType || null,\n APE: contact.activityCode || '',\n defaultGroup: order.channel,\n birthTown: contact.birthTown,\n };\n } catch (err) {\n console.log('No prior client data');\n }\n return data;\n }\n async parsePreviousSiteData(\n order: TOrder,\n ): Promise<SiteSectionData | null> {\n let data: SiteSectionData | null = null;\n try {\n const electricityContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const gasContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n let subscriptionType: ESubscriptionTypes | null = null;\n if (!!electricityContract && !!gasContract) {\n subscriptionType = ESubscriptionTypes.ELECTRICITY_AND_GAS;\n } else if (!!electricityContract) {\n subscriptionType = ESubscriptionTypes.ELECTRICITY;\n } else if (!!gasContract) {\n subscriptionType = ESubscriptionTypes.GAS;\n }\n const contracts: TContract[] = [];\n if (!!electricityContract) contracts.push(electricityContract);\n if (!!gasContract) contracts.push(gasContract);\n await setState(this, { contracts });\n data = {\n PCEValue: _.get(\n gasContract,\n 'deliveryPoint.pointOfDelivery',\n '',\n ),\n PDLValue: _.get(\n electricityContract,\n 'deliveryPoint.pointOfDelivery',\n '',\n ),\n section: Sections.Site,\n siteOptionSelection: subscriptionType,\n };\n } catch (err) {\n console.log('No prior site data');\n }\n return data;\n }\n async parsePreviousOfferData(\n orderResponse: TOrderResponse,\n ): Promise<OfferSectionData | null> {\n const { getEstimatesPackages, getProducts } = this.props;\n const { prepaymentFrequencies } = this.state;\n const { channel, order } = orderResponse;\n\n let data: OfferSectionData | null = null;\n\n try {\n const previousElectricityContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const previousGasContract: TContract | undefined = _.find(\n order.contracts,\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n const isIndividual: boolean =\n order.customer.type !== ECustomerTypes.PROFESSIONAL;\n const energies: EEnergyTypes[] = [];\n if (!!previousElectricityContract) {\n energies.push(EEnergyTypes.ELECTRICTY);\n }\n if (!!previousGasContract) {\n energies.push(EEnergyTypes.GAS);\n }\n const estimates: TEstimate[] = [];\n _.forEach(order.contracts, (contract: TContract) => {\n if (!!contract.estimates && !!contract.estimates[0]) {\n estimates.push({\n ...contract.estimates[0],\n energy: contract.energy,\n });\n }\n });\n\n const handleGetPackages = async () => {\n const [elecPoints, gasPoints] = [\n previousElectricityContract,\n previousGasContract,\n ].map(\n ctr =>\n ctr &&\n ctr.deliveryPoint &&\n ctr.deliveryPoint.pointOfDelivery,\n );\n\n if (elecPoints || gasPoints) {\n return await getDeliveryPointPackages(\n channel,\n elecPoints,\n gasPoints,\n isIndividual,\n );\n }\n\n return await getEstimatesPackages(\n channel,\n estimates,\n isIndividual,\n energies,\n );\n };\n\n const pkgRes:\n | TGetPackageResponse\n | RequestError = await handleGetPackages();\n\n if (pkgRes instanceof RequestError) throw pkgRes;\n const prodRes:\n | TGetProductResponse\n | RequestError = await getProducts(\n getInitialGroup(channel),\n order.contracts, // or pkgRes.contracts ?\n isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL,\n );\n if (prodRes instanceof RequestError) throw prodRes;\n const previousElectricityPackages: Array<\n TPackage | TSeasonalPackage\n > = _.get(previousElectricityContract, 'chosenPackages', []);\n const previousGasPackages: Array<\n TPackage | TSeasonalPackage\n > = _.get(previousGasContract, 'chosenPackages', []);\n let authorizedElectricityPackages: TAuthorizedPackage[] = [];\n let authorizedElectricityPackageSelection: TAuthorizedPackage | null = null;\n let authorizedGasPackages: TAuthorizedPackage[] = [];\n let authorizedGasPackageSelection: TAuthorizedPackage | null = null;\n const electricityFrequencies: EInstallmentFrequencies[] = [];\n let electricityFrequencySelection: EInstallmentFrequencies | null = null;\n let electricityPlans: TPackage[] = [];\n let electricityPlanSelection: TPackage | null = null;\n const electricityProducts: TProduct[] = [];\n let electricityProductSelection: TProduct | null = null;\n const gasFrequencies: EInstallmentFrequencies[] = [];\n let gasFrequencySelection: EInstallmentFrequencies | null = null;\n let gasPlans: TPackage[] = [];\n let gasPlanSelection: TPackage | null = null;\n const gasProducts: TProduct[] = [];\n let gasProductSelection: TProduct | null = null;\n let previousElectricityPlanSelection: TPackage | null = null;\n let previousGasPlanSelection: TPackage | null = null;\n _.forEach(prodRes.productsList, (prod: TProduct) => {\n if (prod.energy === EEnergyTypes.ELECTRICTY) {\n electricityProducts.push(prod);\n if (\n !!previousElectricityContract &&\n isEqualProduct(\n prod,\n previousElectricityContract.chosenProduct,\n )\n ) {\n electricityProductSelection = prod;\n }\n } else if (prod.energy === EEnergyTypes.GAS) {\n gasProducts.push(prod);\n if (\n !!previousGasContract &&\n isEqualProduct(prod, previousGasContract.chosenProduct)\n ) {\n gasProductSelection = prod;\n }\n }\n });\n electricityPlans = _.filter(\n pkgRes.packagesList,\n (pkg: TPackage) => {\n return pkg.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n if (\n previousElectricityPackages.length === 2 &&\n !!electricityProductSelection\n ) {\n _.forEach(electricityPlans, (pkg: TPackage) => {\n const shouldBreak: boolean = false;\n if (!!pkg.authorizedPackages) {\n _.forEach(\n pkg.authorizedPackages,\n (authPkg: TAuthorizedPackage) => {\n const authorizedPackagesMatched: boolean = isEqualAuthorizedPackages(\n authPkg,\n previousElectricityPackages as TSeasonalPackage[],\n );\n if (authorizedPackagesMatched) {\n electricityPlanSelection = pkg;\n authorizedElectricityPackages =\n pkg.authorizedPackages || [];\n authorizedElectricityPackageSelection = authPkg;\n }\n },\n );\n }\n if (shouldBreak) return false;\n });\n } else if (previousElectricityPackages.length === 1) {\n previousElectricityPlanSelection = previousElectricityPackages[0] as TPackage;\n electricityPlanSelection =\n _.find(electricityPlans, (pkg: TPackage) => {\n return (\n pkg.energy === EEnergyTypes.ELECTRICTY &&\n pkg.id === previousElectricityPackages[0].id\n );\n }) || null;\n }\n gasPlans = _.filter(pkgRes.packagesList, (pkg: TPackage) => {\n return pkg.energy === EEnergyTypes.GAS;\n });\n if (previousGasPackages.length === 2 && !!gasProductSelection) {\n _.forEach(gasPlans, (pkg: TPackage) => {\n const shouldBreak: boolean = false;\n if (!!pkg.authorizedPackages) {\n _.forEach(\n pkg.authorizedPackages,\n (authPkg: TAuthorizedPackage) => {\n const authorizedPackagesMatched: boolean = isEqualAuthorizedPackages(\n authPkg,\n previousGasPackages as TSeasonalPackage[],\n );\n if (authorizedPackagesMatched) {\n gasPlanSelection = pkg;\n authorizedGasPackages =\n pkg.authorizedPackages || [];\n authorizedGasPackageSelection = authPkg;\n }\n },\n );\n }\n if (shouldBreak) return false;\n });\n } else if (previousGasPackages.length === 1) {\n previousGasPlanSelection = previousGasPackages[0] as TPackage;\n gasPlanSelection =\n _.find(gasPlans, (pkg: TPackage) => {\n return (\n pkg.energy === EEnergyTypes.GAS &&\n pkg.id === previousGasPackages[0].id\n );\n }) || null;\n }\n const previousElectricityFrequency: EInstallmentFrequencies | null = _.get(\n previousElectricityContract,\n 'installmentFrequency',\n null,\n );\n const previousGasFrequency: EInstallmentFrequencies | null = _.get(\n previousGasContract,\n 'installmentFrequency',\n null,\n );\n\n // TODO\n // electricityFrequencySelection =\n // _.find(\n // electricityFrequencies,\n // (freq: EInstallmentFrequencies) => {\n // return previousElectricityFrequency === freq;\n // },\n // ) || null;\n\n electricityFrequencySelection = previousElectricityFrequency;\n\n // TODO\n // gasFrequencySelection =\n // _.find(gasFrequencies, (freq: EInstallmentFrequencies) => {\n // return previousGasFrequency === freq;\n // }) || null;\n\n gasFrequencySelection = previousGasFrequency;\n\n const electricityOptions: TAdditionalRate[] = _.get(\n electricityProductSelection,\n 'additionalRates',\n [],\n );\n const previousElectricityOptions: TAdditionalRate[] = _.get(\n previousElectricityContract,\n 'chosenProduct.additionalRates',\n [],\n );\n const electricitySelectedOptions: TAdditionalRate[] = _.filter(\n previousElectricityOptions,\n (rate: TAdditionalRate) => {\n return (\n !!rate.active &&\n !!_.find(electricityOptions, _.omit(rate, 'active'))\n );\n },\n );\n const gasOptions: TAdditionalRate[] = _.get(\n gasProductSelection,\n 'additionalRates',\n [],\n );\n const previousGasOptions: TAdditionalRate[] = _.get(\n previousGasContract,\n 'chosenProduct.additionalRates',\n [],\n );\n const gasSelectedOptions: TAdditionalRate[] = _.filter(\n previousGasOptions,\n (rate: TAdditionalRate) => {\n return (\n !!rate.active &&\n !!_.find(gasOptions, _.omit(rate, 'active'))\n );\n },\n );\n\n data = {\n authorizedElectricityPackages,\n authorizedElectricityPackageSelection,\n authorizedGasPackages,\n authorizedGasPackageSelection,\n electricityFrequencySelection,\n electricityPlans,\n electricityPlanSelection,\n electricityProducts,\n electricityProductSelection,\n electricityOptions,\n electricitySelectedOptions,\n gasFrequencySelection,\n gasPlans,\n gasPlanSelection,\n gasProducts,\n gasProductSelection,\n gasOptions,\n gasSelectedOptions,\n section: Sections.Offer,\n previousElectricityPlanSelection,\n previousGasPlanSelection,\n frequencies:\n pkgRes.prepaymentFrequencies || prepaymentFrequencies,\n };\n } catch (err) {\n if (err instanceof RequestError) {\n console.error('Could not restore previous contracts');\n console.error(err);\n } else console.log('No prior offer data');\n }\n\n return data;\n }\n parsePreviousSituationData(order: TOrder): SituationSectionData | null {\n let data: SituationSectionData | null = null;\n try {\n const energies: EEnergyTypes[] = [];\n const iban: string | undefined = order.customer.finance.ibanCode;\n let switchingSupplierStartRange: EEffectiveStartRanges | undefined;\n const movingInData: {\n EL?: {\n date: Date;\n timeslot: ETimeslots;\n };\n NG?: {\n date: Date;\n timeslot: ETimeslots;\n };\n } = {};\n\n const switchData: SwitchData = {};\n\n const billingAddress: TAddress | undefined = _.get(\n order,\n 'customer.finance.billingContact.address',\n );\n const coords = !!billingAddress\n ? {\n civility: _.get(\n order,\n 'customer.finance.billingContact.civility',\n ECivilities.MR,\n ),\n firstName: _.get(\n order,\n 'customer.finance.billingContact.firstName',\n '',\n ),\n lastName: _.get(\n order,\n 'customer.finance.billingContact.lastName',\n '',\n ),\n }\n : undefined;\n\n const thirdParty: Coholder | undefined =\n _.filter(\n _.get(order, 'contracts.0.thirdParties', []),\n (tp: TThirdParty) => {\n return tp.role === ERoles.COHOLDER;\n },\n ).map((tp: TThirdParty) => {\n return _.pick(tp, ['civility', 'firstName', 'lastName']);\n })[0] || undefined;\n const paymentMode: EPaymentModes = _.get(\n order,\n 'customer.finance.paymentMode',\n );\n // if (paymentMode === EPaymentModes.DIRECT_DEBIT) {\n // // TODO Currently removed from saveOrder request\n // iban = '';\n // }\n\n const processType: EProcessTypes | undefined = _.get(\n order,\n 'contracts.0.deliveryPoint.process.type',\n );\n\n const previousElectricityContract: TContract | undefined = _.find(\n _.get(order, 'contracts', []),\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.ELECTRICTY;\n },\n );\n const previousGasContract: TContract | undefined = _.find(\n _.get(order, 'contracts', []),\n (contract: TContract) => {\n return contract.energy === EEnergyTypes.GAS;\n },\n );\n\n if (processType === EProcessTypes.MOVE_IN) {\n if (!!previousElectricityContract) {\n const date: Date | undefined = new Date(\n _.get(\n previousElectricityContract,\n 'effectiveStartDate',\n '',\n ),\n );\n const timeslot: ETimeslots | undefined = _.get(\n previousElectricityContract,\n 'deliveryPoint.process.appointmentTimeslot',\n );\n if (!!date && !!timeslot && !isNaN(date.getTime())) {\n movingInData.EL = {\n date,\n timeslot,\n };\n }\n energies.push(EEnergyTypes.ELECTRICTY);\n }\n if (!!previousGasContract) {\n const date: Date | undefined = new Date(\n _.get(previousGasContract, 'effectiveStartDate', ''),\n );\n const timeslot: ETimeslots | undefined = _.get(\n previousGasContract,\n 'deliveryPoint.process.appointmentTimeslot',\n );\n if (!!date && !!timeslot && !isNaN(date.getTime())) {\n movingInData.NG = {\n date,\n timeslot,\n };\n }\n energies.push(EEnergyTypes.GAS);\n }\n }\n\n order.contracts.forEach(ctr =>\n energies.push(ctr.energy as EEnergyTypes),\n );\n\n data = {\n coords,\n billingAddress,\n energies,\n payment: {\n mode: paymentMode,\n data: { iban },\n },\n section: Sections.Situation,\n startDate: {\n processType: processType || EProcessTypes.MOVE_IN,\n movingInData: { ...movingInData },\n switchData: (() => {\n if (processType === EProcessTypes.SWITCH) {\n switchingSupplierStartRange = _.get(\n order,\n 'contracts.0.effectiveStartRange',\n );\n\n const nextStartRange = switchingSupplierStartRange as EEffectiveStartRanges;\n\n const nextSwitchData = order.contracts.reduce(\n (acc, curr) => ({\n ...acc,\n [curr.energy]: {\n dueDate: new Date(\n curr.dueDate as string,\n ),\n effectiveStartDate: new Date(\n curr.effectiveStartDate as string,\n ),\n },\n }),\n {} as any,\n );\n\n return {\n ...nextSwitchData,\n startRange: nextStartRange,\n };\n }\n return {};\n })(),\n },\n thirdParty,\n };\n } catch (err) {\n console.log('No prior situation data');\n }\n\n return data;\n }\n async parsePreviousRecapData(\n orderResponse: TOrderResponse,\n ): Promise<RecapSectionData | null> {\n const { getOffers } = this.props;\n const { order, channel } = orderResponse;\n let data: RecapSectionData | null = null;\n let offers: TOffer[] = [];\n try {\n const contracts: TContract[] = _.get(order, 'contracts', []);\n const isIndividual: boolean =\n order.customer.type === ECustomerTypes.INDIVIDUAL;\n const offerRes: TOffer[] | RequestError = await getOffers(\n getInitialGroup(channel),\n contracts,\n isIndividual,\n );\n if (!(offerRes instanceof RequestError)) offers = offerRes;\n const orderCode = parseOrderRebateCode(contracts);\n\n data = {\n codeType: _.get(orderCode, 'type'),\n codeInputToggled: !!orderCode,\n code: _.get(orderCode, 'code', ''),\n offers,\n section: Sections.Recap,\n };\n } catch (err) {}\n return data;\n }\n async pay(order: TOrder): Promise<TPaymentCBResponse | RequestError> {\n const { paymentCB } = this.props;\n const { channel } = this.state;\n return await paymentCB(getInitialGroup(channel), order);\n }\n async submitSiteData(\n electricity: string,\n gas: string,\n ): Promise<boolean | RequestError> {\n const { getDeliveryPointPackages } = this.props;\n\n const { isIndividual, channel, customerContact } = this.state;\n const customerType: ECustomerTypes = isIndividual\n ? ECustomerTypes.INDIVIDUAL\n : ECustomerTypes.PROFESSIONAL;\n const fmtElectricity = !!electricity ? rs(electricity) : null;\n const fmtGas = !!gas ? rs(gas) : null;\n const pointsOfDeliveries: any = {};\n const email = customerContact ? customerContact.email : '';\n const firstName = customerContact ? customerContact.firstName : '';\n const lastName = customerContact ? customerContact.lastName : '';\n if (electricity !== '') pointsOfDeliveries.EL = electricity;\n if (gas !== '') pointsOfDeliveries.NG = gas;\n\n await setState(this, {\n contracts: null,\n packages: null,\n products: null,\n selectedElectricityProduct: null,\n selectedGasProduct: null,\n pointsOfDeliveries,\n });\n const res:\n | TGetPackageResponse\n | RequestError = await this.load(getDeliveryPointPackages, [\n getInitialGroup(channel),\n fmtElectricity || null,\n fmtGas || null,\n isIndividual,\n email,\n firstName,\n lastName,\n ]);\n if (res instanceof RequestError) {\n if (\n res instanceof NoMatchingPackagesError ||\n res instanceof NoPackageListError\n ) {\n const resContracts:\n | TGetPackageResponse\n | RequestError = await this.load(\n getRawDeliveryPointPackages,\n [\n getInitialGroup(channel),\n fmtElectricity || null,\n fmtGas || null,\n isIndividual,\n email,\n firstName,\n lastName,\n ],\n );\n const [contracts]: [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] = this.parseGetPackageResponse(resContracts);\n this.setState({ contracts });\n }\n return res;\n }\n const [contracts, packages, frequencies]: [\n TContract[] | null,\n TPackage[] | null,\n TPrepaymentFrequencies[] | null,\n ] = this.parseGetPackageResponse(res);\n\n this.onReceivePackages(\n !!this.currOrderNbr\n ? contracts &&\n contracts.map(c => ({ ...c, chosenPackages: [] }))\n : contracts,\n packages,\n frequencies,\n customerType,\n false,\n );\n\n let elecAdress;\n let gazAdress;\n\n if (contracts) {\n const elecContract = contracts.find(\n contract => contract.energy === 'EL',\n );\n if (\n elecContract &&\n elecContract.deliveryPoint &&\n elecContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (elecContract.deliveryPoint.address.number) {\n addressParts.push(\n elecContract.deliveryPoint.address.number,\n );\n }\n\n if (elecContract.deliveryPoint.address.street) {\n addressParts.push(\n elecContract.deliveryPoint.address.street,\n );\n }\n if (elecContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n elecContract.deliveryPoint.address.postalCode,\n );\n }\n if (elecContract.deliveryPoint.address.townName) {\n addressParts.push(\n elecContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n elecAdress = addressParts.join(' ');\n }\n\n const gazContract = contracts.find(\n contract => contract.energy === 'NG',\n );\n if (\n gazContract &&\n gazContract.deliveryPoint &&\n gazContract.deliveryPoint.address\n ) {\n const addressParts = [];\n\n if (gazContract.deliveryPoint.address.number) {\n addressParts.push(gazContract.deliveryPoint.address.number);\n }\n\n if (gazContract.deliveryPoint.address.street) {\n addressParts.push(gazContract.deliveryPoint.address.street);\n }\n if (gazContract.deliveryPoint.address.postalCode) {\n addressParts.push(\n gazContract.deliveryPoint.address.postalCode,\n );\n }\n if (gazContract.deliveryPoint.address.townName) {\n addressParts.push(\n gazContract.deliveryPoint.address.townName,\n );\n }\n\n if (addressParts.length === 4) {\n addressParts[1] = `${addressParts[1]},`;\n } else if (addressParts.length === 3) {\n addressParts[0] = `${addressParts[0]},`;\n }\n\n gazAdress = addressParts.join(' ');\n }\n }\n\n this.setState({\n loading: false,\n isNewSiteSectionData: !!this.currOrderNbr,\n isNewSiteSectionDataCheckRender: !!this.currOrderNbr,\n gazAdress,\n elecAdress,\n });\n return _.get(packages, 'length', 0) > 0;\n }\n\n async saveOrder() {\n const { group: channel, saveOrder, userId } = this.props;\n const { orderReference } = this.state;\n const pendingOrder = this.buildOrder(false);\n\n if (!!pendingOrder) {\n pendingOrder.createdBy = userId;\n }\n this.setState({ error: null });\n if (!pendingOrder) {\n console.error('Could not save order: missing parameter');\n return;\n } else if (!!orderReference) {\n _.set(pendingOrder, 'orderReference', orderReference);\n }\n const res: RequestError | TSaveOrderResponse = await this.load(\n saveOrder,\n [this.state.channel, pendingOrder],\n handlerProps => {\n this.setState({\n error: {\n title: Wording.saveOrder.title,\n text:\n handlerProps.message ||\n Wording.saveOrder.defaultText,\n },\n });\n },\n );\n if (!(res instanceof RequestError)) {\n this.setState({\n didSaveOrder: true,\n orderReference: _.get(res, 'orderNumber', null),\n });\n }\n }\n async signOrder() {\n const { group: channel, signOrder, userId } = this.props;\n const { orderReference, pendingOrder } = this.state;\n this.setState({ pendingOrder: null });\n const order: TOrder | null = this.buildOrder(true);\n\n if (!!order && !!orderReference) {\n _.set(order, 'orderReference', orderReference);\n }\n const previousExternalReference: string | undefined = _.get(\n pendingOrder,\n 'validation.orderExternalReference',\n );\n if (\n !!order &&\n !!pendingOrder &&\n !!previousExternalReference &&\n _.isEqual(order, _.omit(pendingOrder.data, 'createdBy'))\n ) {\n order.externalReference = previousExternalReference;\n } else if (!order) {\n console.error('Cannot sign order: missing order');\n const text = Wording.signOrder.defaultText;\n const title = Wording.signOrder.title;\n this.setState({ error: { text, title } });\n return;\n }\n\n const res: TSignOrderResponse | RequestError = await this.load(\n signOrder,\n [this.state.channel, order, userId],\n () => {\n this.setState({\n error: {\n title: Wording.signOrder.title,\n text: Wording.signOrder.defaultText,\n },\n });\n },\n );\n if (res instanceof RequestError) return;\n this.setState({\n orderReference: res.orderNumber || null,\n pendingOrder: {\n data: order,\n number: res.orderNumber,\n validation: res,\n },\n shouldDisplayPaymentIframe: true,\n });\n }\n triggerSignaturePopin() {\n const didCompleteSubcription = this.didCompleteSubcription();\n\n const didSignOrder = this.didSignOrder();\n this.setState({ error: null });\n if (didCompleteSubcription) {\n return;\n }\n if (didSignOrder) {\n this.setState({ shouldDisplayPaymentIframe: true });\n } else {\n this.signOrder();\n }\n }\n render() {\n const {\n contracts,\n situation,\n currentKey,\n didSaveOrder,\n error,\n firstPaymentCBStatus,\n isIndividual,\n isSurvey,\n loading,\n offers,\n orderStatus,\n orderReference,\n packages,\n pendingOrder,\n finalContracts,\n previousOrder,\n products,\n sections,\n selectedElectricityProduct,\n selectedGasProduct,\n shouldDisplayPaymentIframe,\n shouldDisplayResetModal,\n shouldDisplaySurveyModal,\n siteOptionSelection,\n gaugeProps,\n prepaymentFrequencies,\n isNewSiteSectionData,\n isNewSiteSectionDataCheckRender,\n channel,\n isPackageValid,\n deliveryPointPackages,\n errorOffer,\n } = this.state;\n\n const electricityEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS ||\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY;\n const gasEnabled =\n siteOptionSelection === ESubscriptionTypes.ELECTRICITY_AND_GAS ||\n siteOptionSelection === ESubscriptionTypes.GAS;\n const [\n orderStatusStrs,\n firstPaymentCBStatusStrs,\n ] = this.getStatusWording(orderStatus, firstPaymentCBStatus);\n const shouldShowSiteSection = this.shouldShow(Sections.Site);\n const shouldShowOfferSection = this.shouldShow(Sections.Offer);\n const shouldShowStatusSection = this.shouldShow(Sections.Situation);\n const shouldShowRecapSection =\n this.shouldShow(Sections.Recap) && !isNewSiteSectionDataCheckRender;\n const shouldShowMissingInformationSection = this.shouldShow(\n Sections.MissingInformations,\n );\n const shouldShowSubscribeSection = this.shouldShow(Sections.Subscribe);\n const cyclicalProducts: EEnergyTypes[] = [];\n if (isCyclicalProduct(selectedElectricityProduct)) {\n cyclicalProducts.push(EEnergyTypes.ELECTRICTY);\n }\n if (isCyclicalProduct(selectedGasProduct)) {\n cyclicalProducts.push(EEnergyTypes.GAS);\n }\n const signatureEnabled: boolean = this.shouldAllowSignOrder();\n const shouldApplyMask = this.didSignOrder();\n const shouldHighlightSignButton =\n shouldApplyMask && !loading && !this.didCompleteSubcription();\n const initialClientData: ClientSectionData | undefined = !!sections.get(\n Sections.ClientData,\n )\n ? ((sections.get(Sections.ClientData) as Section)\n .initialData as ClientSectionData)\n : undefined;\n const initialSiteData: SiteSectionData | undefined = !!sections.get(\n Sections.Site,\n )\n ? ((sections.get(Sections.Site) as Section)\n .initialData as SiteSectionData)\n : undefined;\n const initialOfferData: OfferSectionData | undefined =\n !!sections.get(Sections.Offer) && !isNewSiteSectionData\n ? ((sections.get(Sections.Offer) as Section)\n .initialData as OfferSectionData)\n : undefined;\n const initialSituationData:\n | SituationSectionData\n | undefined = !!sections.get(Sections.Situation)\n ? ((sections.get(Sections.Situation) as Section)\n .initialData as SituationSectionData)\n : undefined;\n const initialRecapData: RecapSectionData | undefined =\n !!sections.get(Sections.Recap) && !isNewSiteSectionDataCheckRender\n ? ((sections.get(Sections.Recap) as Section)\n .initialData as RecapSectionData)\n : undefined;\n const clientDataSectionKey: string = this.getSectionCurrentKey(\n Sections.ClientData,\n );\n const siteSectionKey: string = this.getSectionCurrentKey(Sections.Site);\n const offerSectionKey: string = this.getSectionCurrentKey(\n Sections.Offer,\n );\n const situationSectionKey: string = this.getSectionCurrentKey(\n Sections.Situation,\n );\n const recapSectionKey: string = this.getSectionCurrentKey(\n Sections.Recap,\n );\n const missingInformationsSectionKey: string = this.getSectionCurrentKey(\n Sections.MissingInformations,\n );\n const subscribeSectionKey: string = this.getSectionCurrentKey(\n Sections.Subscribe,\n );\n\n const hasErrorOffer = errorOffer.some(value => {\n return value;\n });\n\n return (\n <div className={baseClassName} key={currentKey}>\n {shouldApplyMask && <div className={maskClassName} />}\n {loading && (\n <div className={bcn([baseClassName, 'loader-background'])}>\n <LoadingSpinner />\n </div>\n )}\n <CustomOverlay\n centered={true}\n id={paymentIframeId}\n show={!!shouldDisplayPaymentIframe}\n showCloseButton\n >\n <PaymentIframeModal\n orderReference={orderReference}\n checkOrderStatus={this.checkOrderStatus}\n onClose={this.handlePaymentModalDismiss}\n order={pendingOrder}\n previousOrder={previousOrder}\n pay={this.pay}\n />\n </CustomOverlay>\n <CustomOverlay\n centered={true}\n id={resetModalId}\n show={shouldDisplayResetModal}\n >\n <ResetModal\n onBack={this.handleResetCancel}\n onConfirm={this.reset}\n />\n </CustomOverlay>\n <div className={bcn([baseClassName, 'header'])}>\n <h1>{title}</h1>\n <img src={ICLogo} />\n </div>\n <div className={bcn([baseClassName, 'body'])}>\n <TopInformationSection\n currOrderNbr={this.currOrderNbr}\n orderStatusStrs={orderStatusStrs}\n firstPaymentCBStatusStrs={firstPaymentCBStatusStrs}\n />\n\n <ClientDataSection\n key={clientDataSectionKey}\n initialParams={initialClientData}\n isIndividual={isIndividual}\n onIsIndividualToggle={this.handleIsIndividualToggle}\n onValidationStatusChange={\n this.handleClientDataValidation\n }\n searchSiret={this.searchSIRET}\n groupList={this.props.groupList}\n schemaProps={(this.props as any).schemaProps}\n handleGroupSelection={this.onSelectedGroup}\n />\n <CustomOverlay\n id={customerFormId}\n show={shouldDisplaySurveyModal}\n >\n <CustomerFormModal\n onCancel={this.hideModal}\n onValidation={this.handleSiteModalValidation}\n />\n </CustomOverlay>\n {shouldShowSiteSection && <Separator />}\n {shouldShowSiteSection && (\n <SiteSection\n key={siteSectionKey}\n didValidateSurvey={isSurvey}\n initialParams={initialSiteData}\n onMissingSiteId={this.handleMissingSiteID}\n PDLRef={this.PDLRef}\n PCERef={this.PCERef}\n onSiteOptionSelection={\n this.handleSiteOptionSelection\n }\n onValidationStatusChange={(validated: boolean) => {\n this.setState({\n errorOffer: [false, false],\n sections: this.getNextDisplayedSections(\n Sections.Offer,\n validated,\n ),\n });\n }}\n submitSiteData={this.submitSiteData}\n elecAdress={this.state.elecAdress}\n gazAdress={this.state.gazAdress}\n />\n )}\n {shouldShowOfferSection && <Separator />}\n {shouldShowOfferSection && (\n <>\n <OfferSection\n key={offerSectionKey}\n contracts={contracts}\n electricityEnabled={electricityEnabled}\n gasEnabled={gasEnabled}\n initialParams={initialOfferData}\n onProductSelection={this.handleProductSelection}\n onValidate={this.handleOfferValidation}\n dynamicValidation={\n this.handlePackDynamicValidation\n }\n packages={packages}\n products={products}\n isPackageValid={isPackageValid}\n deliveryPointPackages={deliveryPointPackages}\n handleSetGaugeProps={this.handleSetGaugeProps}\n frequencies={prepaymentFrequencies}\n handleEstimatesPackagesByClient={\n this.handleEstimatesPackagesByClient\n }\n errorOffer={errorOffer}\n />\n {hasErrorOffer && (\n <CustomError\n text={\n \"En raison d'un niveau de consommation assez élevé veuillez contacter le service commercial Wekiwi au mail service.commercial@wekiwi.fr pour trouver la solution optimale à vos besoins\"\n }\n title={\"Erreur pour l'offre\"}\n />\n )}\n </>\n )}\n {shouldShowStatusSection && <Separator />}\n {shouldShowStatusSection && (\n <SituationSection\n key={situationSectionKey}\n productCode={[\n selectedElectricityProduct as TProduct,\n selectedGasProduct as TProduct,\n ]}\n channel={channel}\n cyclicalProducts={cyclicalProducts}\n getCalendarAppointment={\n this.fetchCalendarAppointment\n }\n initialParams={initialSituationData}\n isIndividual={isIndividual}\n onValidationStatusChange={\n this.handleSituationValidation\n }\n searchAppointmentTimeslot={\n this.fetchAppointmentTimeslot\n }\n siteOptionSelection={siteOptionSelection}\n handleDebitDay={this.handleDebitDay}\n />\n )}\n {shouldShowRecapSection && <Separator />}\n {shouldShowRecapSection && (\n <RecapSection\n key={recapSectionKey}\n initialParams={initialRecapData}\n offers={offers}\n onCodeValidation={this.handleCodeValidation}\n validateSponsorCode={this.checkSponsor}\n finalContracts={finalContracts}\n gaugeProps={gaugeProps}\n />\n )}\n {shouldShowMissingInformationSection && <Separator />}\n {shouldShowMissingInformationSection && (\n <MissingInformationSection\n key={missingInformationsSectionKey}\n requiresPCE={gasEnabled}\n requiresPDL={electricityEnabled}\n isPackageValid={isPackageValid}\n onValidate={this.handleMissingInformations}\n PDLRef={this.PDLRef}\n PCERef={this.PCERef}\n />\n )}\n {shouldShowSubscribeSection && <Separator />}\n {shouldShowSubscribeSection && (\n <SubscribeSection\n orderReference={orderReference}\n key={subscribeSectionKey}\n didSaveOrder={didSaveOrder}\n firstPaymentCBStatus={firstPaymentCBStatus}\n highlightSignature={shouldHighlightSignButton}\n orderStatus={orderStatus}\n saveOrder={this.saveOrder}\n signatureEnabled={signatureEnabled}\n triggerPopin={this.triggerSignaturePopin}\n isPackageValid={isPackageValid}\n offers={offers}\n finalContracts={finalContracts as TContract[]}\n PDLRef={this.PDLRef}\n PCERef={this.PCERef}\n contracts={contracts as TContract[]}\n situation={situation as Situation}\n />\n )}\n {!!error && (\n <CustomError text={error.text} title={error.title} />\n )}\n </div>\n <div className={bcn([baseClassName, 'footer'])} />\n {!loading && (\n <CustomButton\n color={'gray'}\n onClick={this.handleReset}\n title={Wording.reset}\n />\n )}\n </div>\n );\n }\n}\n\nexport default AdminSubscriptionContainer;\n","import RecapSection from './RecapSection';\nexport default RecapSection;\n","import React, { ChangeEvent, Component } from 'react';\nimport _ from 'lodash';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n CustomButton,\n CustomError,\n CustomInput,\n CustomSelect,\n} from '../../../../../components';\nimport {\n buildClassName as bcn,\n formatSiteString,\n parseQueryParams,\n} from '../../../../../utils/helpers';\nimport { toIsc } from '../../../../../utils/text';\nimport { ESubscriptionTypes } from '../../../../../utils/network/types';\nimport { SelectOption } from 'Types';\nimport {\n RequestError,\n NoMatchingPackagesError,\n NoPackageListError,\n ExternalError,\n} from '../../../../../utils/network/errors';\nimport Data from './Data';\n\ninterface IProps {\n didValidateSurvey: boolean;\n initialParams?: Data;\n onMissingSiteId: () => void;\n onSiteOptionSelection: (type: ESubscriptionTypes) => void;\n onValidationStatusChange: (validated: boolean) => void;\n submitSiteData: (\n electricity: string,\n gas: string,\n ) => Promise<boolean | RequestError>;\n PDLRef: React.MutableRefObject<string | null>;\n PCERef: React.MutableRefObject<string | null>;\n elecAdress?: string;\n gazAdress?: string;\n}\n\ninterface IState {\n PCEError: string;\n PCEValue: string;\n PDLError: string;\n PDLValue: string;\n requestError: string | null;\n siteOptionSelection: SelectOption<ESubscriptionTypes> | null;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Site;\nconst baseClassName = 'site-section';\nconst mainClassName = 'main';\nconst compoundOption = toIsc(`${Wording.electricity} & ${Wording.gas}`);\nconst siteOptions: Array<SelectOption<ESubscriptionTypes>> = [\n {\n id: Wording.electricity,\n label: Wording.electricity,\n value: ESubscriptionTypes.ELECTRICITY,\n },\n {\n id: compoundOption,\n label: compoundOption,\n value: ESubscriptionTypes.ELECTRICITY_AND_GAS,\n },\n {\n id: Wording.gas,\n label: Wording.gas,\n value: ESubscriptionTypes.GAS,\n },\n];\n\nclass SiteSection extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n PCEError: '',\n PCEValue: '',\n PDLError: '',\n PDLValue: '',\n requestError: null,\n siteOptionSelection: null,\n };\n this.handleMissingSiteIDIfNeeded = this.handleMissingSiteIDIfNeeded.bind(\n this,\n );\n this.handlePCEInput = this.handlePCEInput.bind(this);\n this.handlePDLInput = this.handlePDLInput.bind(this);\n this.handleSiteOptionSelection = this.handleSiteOptionSelection.bind(\n this,\n );\n this.handleValidationClick = this.handleValidationClick.bind(this);\n this.submitData = this.submitData.bind(this);\n }\n componentDidMount() {\n this.init();\n\n this.initWithUrl();\n }\n init() {\n const { initialParams } = this.props;\n if (!!initialParams) {\n const siteOptionSelection: SelectOption<ESubscriptionTypes> | null =\n _.find(\n siteOptions,\n (option: SelectOption<ESubscriptionTypes>) => {\n return (\n option.value === initialParams.siteOptionSelection\n );\n },\n ) || null;\n this.setState({\n PCEValue: initialParams.PCEValue || '',\n PDLValue: initialParams.PDLValue || '',\n siteOptionSelection,\n });\n }\n }\n\n initWithUrl() {\n const { onSiteOptionSelection } = this.props;\n\n const params = parseQueryParams(\n document.location,\n window.location.host,\n window.location.protocol,\n );\n\n const energies = params.get('energyTypes[]');\n\n if (!!energies) {\n const manageSelection = (() => {\n const spltEng = energies && energies.toString().split('|');\n\n if (spltEng && spltEng.length === 2) {\n return ESubscriptionTypes.ELECTRICITY_AND_GAS;\n }\n\n return spltEng && (spltEng[0] as string) === 'EL'\n ? ESubscriptionTypes.ELECTRICITY\n : ESubscriptionTypes.GAS;\n })();\n\n this.setState({\n siteOptionSelection:\n _.find(\n siteOptions,\n (option: SelectOption<ESubscriptionTypes>) => {\n return option.value === manageSelection;\n },\n ) || null,\n });\n\n if (manageSelection) onSiteOptionSelection(manageSelection);\n }\n }\n checkInputValidity(\n PCE: string,\n PDL: string,\n type: ESubscriptionTypes | null,\n ): boolean {\n let hasValidInput: boolean = false;\n if (type === ESubscriptionTypes.ELECTRICITY_AND_GAS) {\n const hasValidPCE = this.checkPCEValidity(PCE);\n const hasValidPDL = this.checkPDLValidity(PDL);\n hasValidInput = hasValidPCE && hasValidPDL;\n } else if (type === ESubscriptionTypes.ELECTRICITY) {\n hasValidInput = this.checkPDLValidity(PDL);\n } else if (type === ESubscriptionTypes.GAS) {\n hasValidInput = this.checkPCEValidity(PCE);\n }\n return hasValidInput;\n }\n checkPCEValidity(PCE: string): boolean {\n const isValid = this.validatePCE(PCE);\n if (!isValid) this.setState({ PCEError: Wording.PCEError });\n return isValid;\n }\n checkPDLValidity(PDL: string): boolean {\n const isValid = this.validatePDL(PDL);\n if (!isValid) this.setState({ PDLError: Wording.PDLError });\n return isValid;\n }\n handleMissingSiteIDIfNeeded(force: boolean = false) {\n const { onMissingSiteId } = this.props;\n const { PCEValue, PDLValue, siteOptionSelection } = this.state;\n if (siteOptionSelection === null) return;\n let clickEnabled = true;\n if (\n siteOptionSelection.value === ESubscriptionTypes.ELECTRICITY_AND_GAS\n ) {\n clickEnabled =\n clickEnabled && PDLValue.length === 0 && PCEValue.length === 0;\n } else if (\n siteOptionSelection.value === ESubscriptionTypes.ELECTRICITY\n ) {\n clickEnabled = clickEnabled && PDLValue.length === 0;\n } else if (siteOptionSelection.value === ESubscriptionTypes.GAS) {\n clickEnabled = clickEnabled && PCEValue.length === 0;\n }\n if (force || clickEnabled) onMissingSiteId();\n }\n handlePCEInput(e: ChangeEvent<HTMLInputElement>) {\n let value = _.get(e, 'target.value', '');\n value = formatSiteString(value);\n this.props.PCERef.current = value;\n this.setState({\n PCEError: '',\n PCEValue: value,\n requestError: '',\n });\n }\n handlePDLInput(e: ChangeEvent<HTMLInputElement>) {\n let value = _.get(e, 'target.value', '');\n value = formatSiteString(value);\n this.props.PDLRef.current = value;\n this.setState({\n PDLError: '',\n PDLValue: value,\n requestError: '',\n });\n }\n handleSiteOptionSelection(type: SelectOption<ESubscriptionTypes>) {\n const { onSiteOptionSelection } = this.props;\n onSiteOptionSelection(type.value);\n this.setState({\n siteOptionSelection: type,\n requestError: '',\n });\n }\n handleValidationClick() {\n const { PCEValue, PDLValue, siteOptionSelection } = this.state;\n const type: ESubscriptionTypes | null = _.get(\n siteOptionSelection,\n 'value',\n null,\n );\n const hasValidInput = this.checkInputValidity(PCEValue, PDLValue, type);\n this.submitData(hasValidInput);\n }\n shouldShow(input: ESubscriptionTypes): boolean {\n const { siteOptionSelection } = this.state;\n const value = _.get(siteOptionSelection, 'value');\n return (\n input === value || value === ESubscriptionTypes.ELECTRICITY_AND_GAS\n );\n }\n async submitData(hasValidInput: boolean) {\n const { onValidationStatusChange, submitSiteData } = this.props;\n const { PCEValue, PDLValue, siteOptionSelection } = this.state;\n if (!hasValidInput) {\n onValidationStatusChange(false);\n return;\n }\n if (!!siteOptionSelection) {\n let res: boolean | RequestError;\n if (this.state.siteOptionSelection) {\n if (\n this.state.siteOptionSelection.value ===\n ESubscriptionTypes.ELECTRICITY\n ) {\n res = await submitSiteData(PDLValue, '');\n } else if (\n this.state.siteOptionSelection.value ===\n ESubscriptionTypes.GAS\n ) {\n res = await submitSiteData('', PCEValue);\n } else {\n res = await submitSiteData(PDLValue, PCEValue);\n }\n } else {\n res = await submitSiteData(PDLValue, PCEValue);\n }\n\n let validated = false;\n if (res instanceof RequestError) {\n let message = WordingConstant.Errors.default;\n if (res instanceof ExternalError) {\n message = res.message;\n }\n if (\n res instanceof NoPackageListError ||\n res instanceof NoMatchingPackagesError\n ) {\n message = res.message;\n this.handleMissingSiteIDIfNeeded(true);\n }\n this.setState({ requestError: message });\n } else {\n validated = true;\n this.setState({ requestError: null });\n this.handleMissingSiteIDIfNeeded();\n }\n onValidationStatusChange(validated);\n }\n }\n validateSiteId(id: string) {\n return id.replace(/\\s/g, '').length === 14;\n }\n validatePCE(PCE: string): boolean {\n return this.validateSiteId(PCE);\n }\n validatePDL(PDL: string): boolean {\n return this.validateSiteId(PDL);\n }\n render() {\n const { didValidateSurvey, elecAdress, gazAdress } = this.props;\n const {\n PCEError,\n PCEValue,\n PDLError,\n PDLValue,\n requestError,\n siteOptionSelection,\n } = this.state;\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <div className={bcn([baseClassName, mainClassName])}>\n <CustomSelect\n handleChangeSelect={this.handleSiteOptionSelection}\n options={siteOptions}\n text={`${Wording.offerPick}${toIsc(' :')}`}\n value={siteOptionSelection}\n />\n <div\n className={bcn([baseClassName, mainClassName, 'site'])}\n >\n {this.shouldShow(ESubscriptionTypes.ELECTRICITY) && (\n <CustomInput\n error={PDLError}\n onInputChange={this.handlePDLInput}\n text={`${Wording.PDLPrompt}${toIsc(' :')}`}\n value={PDLValue}\n />\n )}\n <span\n style={{\n paddingLeft: '35%',\n fontWeight: 'bold',\n }}\n >\n {elecAdress}\n </span>\n\n {this.shouldShow(ESubscriptionTypes.GAS) && (\n <CustomInput\n style={\n gazAdress\n ? { marginTop: '20px' }\n : undefined\n }\n error={PCEError}\n onInputChange={this.handlePCEInput}\n text={`${Wording.PCEPrompt}${toIsc(' :')}`}\n value={PCEValue}\n />\n )}\n <span\n style={{ paddingLeft: '35%', fontWeight: 'bold' }}\n >\n {gazAdress}\n </span>\n </div>\n {!!requestError && !didValidateSurvey && (\n <CustomError\n text={requestError}\n title={Wording.error}\n />\n )}\n <CustomButton\n color={'orange'}\n heavy={true}\n onClick={this.handleValidationClick}\n title={Wording.validate}\n />\n <div\n className={bcn([\n baseClassName,\n mainClassName,\n didValidateSurvey\n ? 'missing--highlighted'\n : 'missing',\n ])}\n >\n <span\n onClick={() => this.handleMissingSiteIDIfNeeded()}\n >\n {Wording.missingSiteID}\n </span>\n <p>{Wording.terms}</p>\n </div>\n </div>\n </section>\n );\n }\n}\n\nexport default SiteSection;\n","import SiteSection from './SiteSection';\nexport default SiteSection;\n","import SituationSection from './SituationSection';\nexport default SituationSection;\n","import React, { useEffect } from 'react';\nimport { CustomButton } from '../../../../../components';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\nimport WordingConstant from '../../../../../utils/wording.json';\nimport {\n EFirstPaymentCBStatuses,\n EOrderStatuses,\n TContract,\n ECivilities,\n ETimeslots,\n EEffectiveStartRanges,\n TAddress,\n EProcessTypes,\n TOffer,\n} from '../../../../../utils/network/types';\nimport { isCyclicalProduct } from '../../../../../utils/network/helpers';\nimport offer from '../../../../../components/PDFs/ProofOfPayment/components/RightColumn/Offer';\n\ntype Situation = {\n coords?: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n };\n effectiveStartRange?: EEffectiveStartRanges;\n electricityEffectiveStartDate?: Date;\n electricityDueDate?: Date;\n gasDueDate?: Date;\n electricityExpress?: boolean;\n gasEffectiveStartDate?: Date;\n gasExpress?: boolean;\n electricityTimeslot?: ETimeslots;\n gasTimeslot?: ETimeslots;\n electricityFirstPaymentCB?: boolean;\n gasFirstPaymentCB?: boolean;\n billingAddress?: TAddress;\n iban?: string;\n processType?: EProcessTypes;\n thirdParty?: {\n civility: ECivilities;\n firstName: string;\n lastName: string;\n };\n};\n\ninterface IProps {\n orderReference: string | null;\n didSaveOrder: boolean;\n firstPaymentCBStatus: EFirstPaymentCBStatuses | null;\n highlightSignature: boolean;\n orderStatus: EOrderStatuses | null;\n saveOrder: () => void;\n signatureEnabled: boolean;\n triggerPopin: () => void;\n isPackageValid?: boolean;\n PDLRef: React.RefObject<string | null>;\n PCERef: React.RefObject<string | null>;\n contracts: TContract[];\n finalContracts: TContract[];\n situation: Situation;\n offers: TOffer[] | null;\n}\n\nconst Wording = WordingConstant.AdminSubscriptionContainer.Subscribe;\nconst baseClassName = 'subscribe-section';\nconst buttonsClassName = bcn([baseClassName, 'buttons']);\nconst saveClassName = bcn([buttonsClassName, 'save']);\nconst signClassName = bcn([buttonsClassName, 'sign']);\n\nconst SubscribeSection: React.FC<IProps> = ({\n orderReference,\n didSaveOrder,\n firstPaymentCBStatus,\n highlightSignature,\n orderStatus,\n saveOrder,\n signatureEnabled,\n triggerPopin,\n finalContracts,\n isPackageValid,\n PDLRef,\n PCERef,\n contracts,\n situation,\n offers,\n}) => {\n // const hasEffectiveStartDate = contracts.some(contract => {\n // return contract.effectiveStartDate !== '';\n // });\n const hasFinalizedOrder =\n orderStatus === EOrderStatuses.FINALIZED ||\n orderStatus === EOrderStatuses.FINALIZED_WITHOUT_DOC;\n const isFinalized =\n hasFinalizedOrder &&\n !!firstPaymentCBStatus &&\n firstPaymentCBStatus !== EFirstPaymentCBStatuses.FINALIZED;\n\n const signTitleString = isFinalized\n ? Wording.pay.title\n : Wording.sign.title;\n\n const signButtonClassname =\n highlightSignature && isFinalized\n ? bcn([signClassName, 'highlighted'], '--')\n : signClassName;\n\n const userGroup = localStorage.getItem('userGroup');\n const isAdmin = userGroup === 'ADMIN';\n\n const {\n electricityEffectiveStartDate = null,\n gasEffectiveStartDate = null,\n } = situation || {};\n\n const isCyclic = finalContracts.some(contract => {\n return isCyclicalProduct(contract.chosenProduct);\n });\n\n const hasAddress = finalContracts.every(value => {\n if (value.deliveryPoint && value.deliveryPoint.address) {\n return (\n value.deliveryPoint.address.street !== null &&\n value.deliveryPoint.address.street !== undefined\n );\n }\n return false;\n });\n\n return (\n <section className={baseClassName}>\n <h2>{Wording.title}</h2>\n <div className={buttonsClassName}>\n <div className={saveClassName}>\n {!isCyclic &&\n situation &&\n !electricityEffectiveStartDate &&\n !gasEffectiveStartDate && (\n <span className=\"warning-text\">\n Veuillez choisir une date de prélèvement avant\n de pouvoir enregistrer la souscription.\n </span>\n )}\n <CustomButton\n color={'white'}\n onClick={saveOrder}\n title={Wording.save.title}\n disabled={\n !offers ||\n offers.length === 0 ||\n !isPackageValid ||\n (PDLRef.current === null &&\n PCERef.current === null) ||\n (!isCyclic &&\n !electricityEffectiveStartDate &&\n !gasEffectiveStartDate) ||\n !hasAddress\n // !hasEffectiveStartDate\n }\n />\n {(!offers ||\n offers.length === 0 ||\n !isPackageValid ||\n (PDLRef.current === null && PCERef.current === null) ||\n (!isCyclic &&\n !electricityEffectiveStartDate &&\n !gasEffectiveStartDate) ||\n !hasAddress) && (\n <span className={'save-warning'}>\n Une information est manquante pour valider la\n sauvegarde\n </span>\n )}\n {(!offers || offers.length === 0) && (\n <span className={'save-warning'}>\n Tu ne peux pas continuer ta souscription, les offres\n sont manquantes.\n </span>\n )}\n\n {didSaveOrder && (\n <span className={'save-confirm'}>\n {Wording.save.confirm}\n </span>\n )}\n <span>{Wording.save.hint1}</span>\n <span>{Wording.save.hint2}</span>\n </div>\n <div className={signButtonClassname}>\n {isAdmin && (\n <CustomButton\n color={isFinalized ? 'orange' : 'gray'}\n heavy={true}\n onClick={() => triggerPopin()}\n title={signTitleString}\n disabled={\n !offers ||\n offers.length === 0 ||\n !isPackageValid ||\n (PDLRef.current === null &&\n PCERef.current === null)\n }\n />\n )}\n\n {isAdmin && !hasFinalizedOrder && (\n <span>{Wording.sign.hint}</span>\n )}\n </div>\n </div>\n {orderReference !== null ? (\n <div className=\"orderNumberDisplay\">\n Votre numéro de souscription a bien été créé :{' '}\n <strong>{orderReference}</strong>\n </div>\n ) : (\n <></>\n )}\n </section>\n );\n};\n\nexport default SubscribeSection;\n","import SubscribeSection from './SubscribeSection';\nexport default SubscribeSection;\n","import TopInformationSection from './TopInformationSection';\n\nexport default TopInformationSection;\n","import React from 'react';\nimport { buildClassName as bcn } from '../../../../../utils/helpers';\n\nconst baseClassName = 'admin-subscription-container';\n\ninterface IProps {\n currOrderNbr: string | null;\n orderStatusStrs: [string, string];\n firstPaymentCBStatusStrs: [string, string];\n}\n\nconst TopInformationSection: React.FC<IProps> = ({\n currOrderNbr,\n firstPaymentCBStatusStrs,\n orderStatusStrs,\n}) => (\n <div className={bcn([baseClassName, 'body', 'top'])}>\n {currOrderNbr !== null && currOrderNbr !== undefined ? (\n <div\n className={bcn([\n baseClassName,\n 'body',\n 'top',\n 'display-order-number',\n ])}\n >\n <p>Affaire n°: {currOrderNbr}</p>\n </div>\n ) : (\n <div />\n )}\n\n <div className={bcn([baseClassName, 'body', 'top', 'status'])}>\n <span>{orderStatusStrs[0]}</span>\n <span>{orderStatusStrs[1]}</span>\n <span>{firstPaymentCBStatusStrs[0]}</span>\n <span>{firstPaymentCBStatusStrs[1]}</span>\n </div>\n </div>\n);\n\nexport default TopInformationSection;\n","import AdminSubscriptionContainer from './AdminSubscriptionContainer';\nexport interface ISectionData {\n section: number;\n}\n\nexport default AdminSubscriptionContainer;\n","import _ from 'lodash';\nimport { getFormattedDateToBackEnd } from '../../helpers';\nimport { requiresPayment } from '../helpers';\nimport {\n ECivilities,\n ECustomerTypes,\n EEnergyTypes,\n TAddress,\n TContract,\n TCustomerContact,\n TOrder,\n ETimeslots,\n TThirdParty,\n ERebateCodeTypes,\n EPaymentModes,\n EBillingModes,\n EFirstPaymentCBStatuses,\n EEffectiveStartRanges,\n EtypePayment,\n} from '../types';\nimport { EProcessTypes } from '../../enums';\n\nfunction buildPendingOrder(\n client: {\n customerContact: TCustomerContact | null;\n customerType: ECustomerTypes;\n typePayment: EtypePayment;\n },\n offer: {\n contracts: TContract[];\n },\n situation: {\n billingAddress?: TAddress;\n coords?: {\n civility: ECivilities | null;\n firstName: string;\n lastName: string;\n };\n coholder?: Partial<TThirdParty>;\n effectiveStartRange?: EEffectiveStartRanges;\n energies: {\n EL?: {\n effectiveStartDate?: Date;\n express?: boolean;\n firstPaymentCB: boolean;\n timeslot?: ETimeslots;\n dueDate?: Date;\n };\n NG?: {\n effectiveStartDate?: Date;\n express?: boolean;\n firstPaymentCB: boolean;\n timeslot?: ETimeslots;\n dueDate?: Date;\n };\n };\n payment: {\n iban?: string;\n };\n processType: EProcessTypes | undefined;\n },\n options: {\n isSign: boolean;\n rebateCode?: {\n code: string;\n type: ERebateCodeTypes | null;\n };\n channel?: string;\n },\n): TOrder | null {\n const order: any = {\n customer: {\n contact: client.customerContact,\n type: client.customerType,\n typePayment: client.typePayment,\n },\n };\n let firstPaymentCBStatus: boolean = false;\n let electricityContract: TContract | null = null;\n let gasContract: TContract | null = null;\n _.forEach(offer.contracts, (contract: TContract) => {\n if (\n !electricityContract &&\n contract.energy === EEnergyTypes.ELECTRICTY\n ) {\n electricityContract = contract;\n } else if (!gasContract && contract.energy === EEnergyTypes.GAS) {\n gasContract = contract;\n } else {\n return false;\n }\n });\n\n if (!!electricityContract) {\n if (\n !!situation.energies.EL &&\n !!situation.energies.EL.effectiveStartDate\n ) {\n _.set(\n electricityContract,\n 'effectiveStartDate',\n getFormattedDateToBackEnd(\n situation.energies.EL.effectiveStartDate,\n ),\n );\n _.set(\n electricityContract,\n 'deliveryPoint.process.express',\n !!situation.energies.EL.express,\n );\n _.set(\n electricityContract,\n 'firstPaymentCB',\n situation.energies.EL.firstPaymentCB,\n );\n _.set(\n electricityContract,\n 'deliveryPoint.process.appointmentTimeslot',\n situation.energies.EL.timeslot,\n );\n\n if (\n situation.energies.EL.dueDate &&\n situation.processType === EProcessTypes.SWITCH\n ) {\n _.set(\n electricityContract,\n 'dueDate',\n getFormattedDateToBackEnd(situation.energies.EL.dueDate),\n );\n }\n }\n }\n if (!!gasContract) {\n if (\n !!situation.energies.NG &&\n !!situation.energies.NG.effectiveStartDate\n ) {\n _.set(\n gasContract,\n 'effectiveStartDate',\n getFormattedDateToBackEnd(\n situation.energies.NG.effectiveStartDate,\n ),\n );\n _.set(\n gasContract,\n 'deliveryPoint.process.express',\n !!situation.energies.NG.express,\n );\n _.set(\n gasContract,\n 'firstPaymentCB',\n situation.energies.NG.firstPaymentCB,\n );\n _.set(\n gasContract,\n 'deliveryPoint.process.appointmentTimeslot',\n situation.energies.NG.timeslot,\n );\n\n if (\n situation.energies.NG.dueDate &&\n situation.processType === EProcessTypes.SWITCH\n ) {\n _.set(\n gasContract,\n 'dueDate',\n getFormattedDateToBackEnd(situation.energies.NG.dueDate),\n );\n }\n }\n }\n order.contracts = [electricityContract, gasContract].filter(\n contract => contract !== null,\n );\n _.forEach(order.contracts, (contract: TContract) => {\n const billingMode: EBillingModes = _.get(\n contract,\n 'chosenProduct.billingModeCode',\n );\n if (requiresPayment(contract)) firstPaymentCBStatus = true;\n if (!!situation.processType) {\n _.set(\n contract,\n 'deliveryPoint.process.type',\n situation.processType,\n );\n }\n if (!!situation.effectiveStartRange) {\n _.set(\n contract,\n 'effectiveStartRange',\n situation.effectiveStartRange,\n );\n } else {\n delete contract.effectiveStartRange;\n }\n contract.thirdParties = [];\n if (!!options.rebateCode) {\n contract.thirdParties.push({\n code: options.rebateCode.code,\n role: options.rebateCode.type,\n });\n }\n\n if (options.isSign && options.channel && options.channel !== '') {\n contract.thirdParties.push({\n code: options.channel,\n role: 'PARTNER',\n });\n }\n\n if (\n !!situation.coholder &&\n !!situation.coholder.civility &&\n !!situation.coholder.firstName &&\n !!situation.coholder.lastName\n ) {\n contract.thirdParties.push({\n role: 'COHOLDER',\n civility: situation.coholder.civility,\n firstName: situation.coholder.firstName,\n lastName: situation.coholder.lastName,\n });\n }\n });\n _.set(order, 'customer.finance.paymentMode', EPaymentModes.DIRECT_DEBIT);\n\n if (situation.payment.iban && situation.payment.iban !== '') {\n _.set(order, 'customer.finance.ibanCode', situation.payment.iban);\n }\n\n if (firstPaymentCBStatus) {\n _.set(order, 'firstPaymentCBStatus', EFirstPaymentCBStatuses.PENDING);\n }\n _.set(\n order,\n 'customer.finance.accountOwnerFirstName',\n _.get(client, 'customerContact.firstName', ''),\n );\n _.set(\n order,\n 'customer.finance.accountOwnerLastName',\n _.get(client, 'customerContact.lastName', ''),\n );\n if (!!situation.billingAddress && !!situation.coords) {\n _.set(\n order,\n 'customer.finance.billingContact.address',\n situation.billingAddress,\n );\n _.set(\n order,\n 'customer.finance.billingContact.civility',\n situation.coords.civility,\n );\n _.set(\n order,\n 'customer.finance.billingContact.firstName',\n situation.coords.firstName,\n );\n _.set(\n order,\n 'customer.finance.billingContact.lastName',\n situation.coords.lastName,\n );\n _.set(\n order,\n 'customer.finance.accountOwnerFirstName',\n situation.coords.firstName,\n );\n _.set(\n order,\n 'customer.finance.accountOwnerLastName',\n situation.coords.lastName,\n );\n }\n\n _.set(order, 'origin', 'expertMode');\n\n return order;\n}\n\nexport { buildPendingOrder };\n","const expKey: string = 'expires';\n\nfunction hasExpiredSession(): boolean {\n const expires = Number(localStorage.getItem(expKey));\n const didExpired = isNaN(expires) || new Date().getTime() > expires;\n if (didExpired) localStorage.removeItem(expKey);\n return didExpired;\n}\n\nexport { hasExpiredSession };\n","import React, { Dispatch } from 'react';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { AsyncFunctionProxy, RootAction, RootState, TSchemaProps } from 'Types';\nimport { RouteComponentProps } from 'react-router-dom';\nimport AdminSubscriptionContainer from '../../../containers/admin/AdminSubscriptionContainer';\nimport { parseQueryParams } from '../../../utils/helpers';\nimport { hasExpiredSession } from '../../../utils/storage';\nimport {\n checkSponsor,\n getCalendarAppointment,\n getDeliveryPointPackages,\n getEstimatesPackages,\n getOffers,\n getOrder,\n getOrderStatus,\n getProducts,\n getSurveyPackages,\n paymentCB,\n saveOrder,\n searchAppointmentTimeslot,\n searchSiret,\n signOrder,\n getPackDynamic,\n} from '../../../utils/network/request';\nimport { refreshSessionExpirationStatus } from '../../../_actions/auth.actions';\nimport {\n SessionExpiredError,\n RequestError,\n} from '../../../utils/network/errors';\n\ntype StateProps = {\n group?: string;\n userId: string;\n groupList: string[];\n};\ntype DispatchProps = {\n dispatchCheckSessionExpiration: (expired: boolean) => void;\n};\n\ntype OwnProps = {\n schemaProps: TSchemaProps;\n} & (Pick<RouteComponentProps, 'location'> | {});\ntype NetworkProps = {\n checkSponsor: AsyncFunctionProxy<typeof checkSponsor>;\n getCalendarAppointment: AsyncFunctionProxy<typeof getCalendarAppointment>;\n getDeliveryPointPackages: AsyncFunctionProxy<\n typeof getDeliveryPointPackages\n >;\n getEstimatesPackages: AsyncFunctionProxy<typeof getEstimatesPackages>;\n getOffers: AsyncFunctionProxy<typeof getOffers>;\n getPackDynamic: AsyncFunctionProxy<typeof getPackDynamic>;\n getOrder: AsyncFunctionProxy<typeof getOrder>;\n getOrderStatus: AsyncFunctionProxy<typeof getOrderStatus>;\n getProducts: AsyncFunctionProxy<typeof getProducts>;\n getSurveyPackages: AsyncFunctionProxy<typeof getSurveyPackages>;\n paymentCB: AsyncFunctionProxy<typeof paymentCB>;\n saveOrder: AsyncFunctionProxy<typeof saveOrder>;\n searchAppointmentTimeslot: AsyncFunctionProxy<\n typeof searchAppointmentTimeslot\n >;\n searchSiret: AsyncFunctionProxy<typeof searchSiret>;\n signOrder: AsyncFunctionProxy<typeof signOrder>;\n};\ntype MergeProps = StateProps &\n NetworkProps & {\n orderNumber?: string | number;\n schemaProps: TSchemaProps;\n };\n\nconst mapStateToProps = (state: RootState): StateProps => ({\n group: state.authReducer.groupe,\n userId: state.authReducer.userId || '',\n groupList: state.userGroupReducer.groupList,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch<RootAction>): DispatchProps => {\n return {\n dispatchCheckSessionExpiration: (expired: boolean) => {\n dispatch(refreshSessionExpirationStatus(expired));\n },\n };\n};\n\nconst mergeProps = (\n state: StateProps,\n dispatch: DispatchProps,\n own: OwnProps,\n): MergeProps => {\n const { dispatchCheckSessionExpiration } = dispatch;\n const withCheck = <\n R,\n F extends (...args: any[]) => Promise<R | RequestError>\n >(\n fn: F,\n ): (() => Promise<R | RequestError>) => {\n return async (\n ...args: Parameters<typeof fn>\n ): Promise<R | RequestError> => {\n const expired = hasExpiredSession();\n dispatchCheckSessionExpiration(expired);\n return !expired ? await fn(...args) : new SessionExpiredError();\n };\n };\n\n const nextProps: MergeProps = {\n ...state,\n checkSponsor: withCheck(checkSponsor),\n getCalendarAppointment: withCheck(getCalendarAppointment),\n getDeliveryPointPackages: withCheck(getDeliveryPointPackages),\n getEstimatesPackages: withCheck(getEstimatesPackages),\n getOffers: withCheck(getOffers),\n getPackDynamic: withCheck(getPackDynamic),\n getOrder: withCheck(getOrder),\n getOrderStatus: withCheck(getOrderStatus),\n getProducts: withCheck(getProducts),\n getSurveyPackages: withCheck(getSurveyPackages),\n paymentCB: withCheck(paymentCB),\n saveOrder: withCheck(saveOrder),\n searchAppointmentTimeslot: withCheck(searchAppointmentTimeslot),\n searchSiret: withCheck(searchSiret),\n signOrder: withCheck(signOrder),\n ...own,\n };\n const location = _.get(own, 'location');\n if (!!location) {\n const params = parseQueryParams(\n location,\n window.location.host,\n window.location.protocol,\n );\n const orderNumber: string | number | undefined = params.get(\n 'orderNumber',\n );\n nextProps.orderNumber = orderNumber;\n }\n\n return nextProps;\n};\n\nexport type ConnectedProps = MergeProps;\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n mergeProps,\n)(AdminSubscriptionContainer);\n","import AdminSubscriptionPage from './AdminSubscriptionPage';\nexport default AdminSubscriptionPage;\n","import ErrorScreen from './ErrorScreen';\nexport default ErrorScreen;\n","import React from 'react';\n\ntype Params = {\n details: string;\n message: string;\n};\n\n// TODO Style the following\nconst ErrorScreen: React.FC<Params> = ({ details, message }) => {\n return (\n <div className=\"error-screen\">\n <h1>{message}</h1>\n <h3>{details}</h3>\n </div>\n );\n};\n\nexport default ErrorScreen;\n","import React from 'react';\n\nimport ErrorScreen from './../../../components/ErrorScreen';\n\nimport WordingConstant from '../../../utils/wording.json';\nconst Wording = WordingConstant.NotFoundPage;\n\nexport type Props = {};\n\nconst NotFoundContainer: React.FC<Props> = props => {\n return <ErrorScreen details={Wording.details} message={Wording.message} />;\n};\n\nexport default NotFoundContainer;\n","import NotFoundContainer from './NotFoundContainer';\nexport default NotFoundContainer;\n","import NotFoundPage from './NotFoundPage';\nexport default NotFoundPage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport NotFoundContainer from '../../../containers/defaults/NotFoundContainer';\n\nconst mapStateToProps = (state: RootState) => ({});\nconst dispatchProps = {};\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(NotFoundContainer);\n","import CustomDate from './CustomDate';\n\nexport default CustomDate;\n","import React from 'react';\n\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport 'react-day-picker/lib/style.css';\n\nimport MomentLocaleUtils, {\n parseDate,\n formatDate,\n} from 'react-day-picker/moment';\nimport 'moment/locale/fr';\n\ntype Props = {\n text?: string;\n error?: string;\n selectedDay?: Date;\n isOpen?: boolean;\n deleteButton?: boolean;\n handleDayChange?: (selectedDay: Date) => void;\n deleteButtonOnClick?: () => void;\n};\n\nconst CustomDate: React.FC<Props> = props => {\n const modifiers = {\n selectedDay: props.selectedDay,\n };\n const modifiersStyles = {\n selectedDay: {\n color: 'white',\n backgroundColor: '#7571f4',\n },\n };\n\n return (\n <div className=\"custom-date\">\n {props.text && (\n <label htmlFor={`id${props.text}`}>{props.text}</label>\n )}\n\n {props.deleteButton && props.selectedDay !== undefined && (\n <span\n className=\"custom-date__delete\"\n onClick={props.deleteButtonOnClick}\n >\n <span>X</span>\n </span>\n )}\n\n <DayPickerInput\n formatDate={formatDate}\n parseDate={parseDate}\n format=\"DD/MM/YYYY\"\n placeholder=\"JJ/MM/AAAA\"\n value={!props.selectedDay ? '' : props.selectedDay}\n onDayChange={props.handleDayChange}\n dayPickerProps={{\n modifiersStyles,\n modifiers,\n selectedDays: props.selectedDay,\n locale: 'fr',\n localeUtils: MomentLocaleUtils as any,\n }}\n />\n\n {props.error && props.error !== '' && (\n <p className=\"react-picker-error\">{props.error}</p>\n )}\n </div>\n );\n};\nexport default CustomDate;\n","import React from 'react';\n\ntype Props = {\n title?: string;\n disabled?: boolean;\n onChange?: any;\n isLoading?: boolean;\n accept?: any;\n};\n\nconst CustomUpload: React.FC<Props> = ({\n title,\n disabled,\n onChange,\n accept,\n isLoading,\n}) => {\n const handleChange = (event: any) => {\n if (event.target.files.length > 0) {\n onChange(event.target.files);\n }\n };\n\n return (\n <div className=\"custom-upload\">\n <input\n className=\"custom-upload__input\"\n id=\"upload-button\"\n type=\"file\"\n multiple\n accept={accept}\n onChange={handleChange}\n onClick={(event: any) => {\n event.target.value = null;\n }}\n />\n <label\n id=\"upload-btn-label\"\n htmlFor=\"upload-button\"\n className=\"custom-upload__button\"\n >\n <span>{title}</span>\n </label>\n </div>\n );\n};\n\nexport default CustomUpload;\n","import React, { useState } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport {\n CustomInput,\n CustomButton,\n CustomModal,\n Group,\n CustomSelect,\n} from '../../../components';\nimport CustomDate from '../../../components/admin/CustomDate';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n getDateFormatted,\n getHost,\n getSelectOptionValue,\n isHaveActionsPermission,\n isLimitedAuthorization,\n isMixedAuthorization,\n} from '../../../utils/helpers';\nimport _, { isObject } from 'lodash';\nimport { searchClientAsync } from '../../../_actions/searchOrder.actions';\nimport { useDispatch } from 'react-redux';\nimport CustomUpload from '../../../components/CustomUpload/CustomUpload';\n\nconst Wording = WordingConstant.SearchCaseContainer;\n\nconst situationStatus: Array<SelectOption<any>> = [\n { id: '0', label: 'CHF', value: 'SWITCH' },\n { id: '1', label: 'MES', value: 'MOVE_IN' },\n];\n\nexport type Props = {\n // fetchOrder: (props: TOrderPayload) => void;\n groupList: string[];\n schemaProps: TSchemaProps;\n userId: string | undefined;\n userLimited: string | undefined;\n handleShowModal: (f: any) => void;\n};\n\nconst mapStateToProps = () => ({});\nexport const dispatchProps = {\n searchClientRequest: searchClientAsync.request,\n searchClientSuccess: searchClientAsync.success,\n searchClientFailure: searchClientAsync.failure,\n};\n\nconst CustomerContracSearch: React.FC<Props> = ({\n groupList,\n schemaProps,\n userId,\n userLimited,\n handleShowModal,\n}) => {\n const dispatch = useDispatch();\n const isDisabledActionBtn = isLimitedAuthorization(schemaProps);\n const isMixed = isMixedAuthorization(schemaProps);\n const isLimited = userLimited ? userLimited === 'LIMITED' : false;\n const renderDefaultGroup = () => {\n const defaultVal = {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n };\n\n if (isMixed) {\n return [defaultVal];\n }\n\n return isDisabledActionBtn ? defaultVal : '';\n };\n\n const [clientLastName, setclientLastName] = useState<string | null>('');\n const [clientFirstName, setClientFirstName] = useState<string | null>('');\n const [customerPhone, setCustomerPhone] = useState<string | null>('');\n const [customerEmail, setCustomerEmail] = useState<string | null>('');\n const [clientId, setClientId] = useState<string>('');\n const [fromDate, setFrom] = useState<undefined | Date>(undefined);\n const [showGroupErrorMesage, setShowErroGroup] = useState(false);\n const [toDate, setTo] = useState<undefined | Date>(undefined);\n const [showErrorModal, setShowErrorModal] = useState(false);\n const [caseId, setCaseId] = useState<string | null>(null);\n const [refExt, setRefExt] = useState<string | null>(null);\n const [createdBy, setCreatedBy] = useState<string | null>(\n isLimited ? userId || '' : null || '',\n );\n const [customerGroup, setCustomerGroup] = useState<\n '' | SelectOption<string> | Array<SelectOption<string>>\n >(renderDefaultGroup());\n\n const [customerSituation, setCustomerSituation] = useState<\n '' | SelectOption<string>\n >('');\n\n const renderValueGroup = () => {\n if (isDisabledActionBtn) {\n return (customerGroup as SelectOption<string>).value;\n }\n\n if (customerGroup !== '' && isObject(customerGroup)) {\n return (customerGroup as Array<SelectOption<string>>).map(\n (obj: SelectOption<string>) => obj.value,\n );\n }\n\n return '';\n };\n\n const groupeValue = renderValueGroup();\n\n const groupeCondition = groupeValue !== '' && groupeValue.length !== 0;\n\n const searchCondition =\n caseId !== '' ||\n clientFirstName !== '' ||\n clientLastName !== '' ||\n refExt !== '' ||\n createdBy !== '' ||\n fromDate !== undefined ||\n toDate !== undefined ||\n customerEmail !== '' ||\n customerSituation !== '' ||\n customerPhone !== '';\n\n const mainCondition = isMixed\n ? groupeCondition\n : searchCondition || groupeCondition;\n\n const elementMap = {\n caseId: {\n text: Wording.num_case,\n value: caseId || '',\n onInputChange: (e: InputEvent) => setCaseId(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCaseId(''),\n },\n\n to: {\n text: '',\n selectedDay: toDate,\n handleDayChange: (date: Date) => setTo(date),\n deleteButton: true,\n deleteButtonOnClick: () => setTo(undefined),\n },\n\n from: {\n text: '',\n selectedDay: fromDate,\n handleDayChange: (date: Date) => setFrom(date),\n deleteButton: true,\n deleteButtonOnClick: () => setFrom(undefined),\n },\n\n customerGroup: {\n id: 'group',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n\n withSelectAll: true,\n\n handleChangeSelect: (group: any) => {\n setCustomerGroup(group);\n if (isMixed) setShowErroGroup(false);\n },\n error:\n isMixed && !groupeCondition && showGroupErrorMesage\n ? 'Veuillez sélectionner un Groupe'\n : undefined,\n value: customerGroup,\n text: Wording.group,\n placeholder: ' ',\n isMulti: true,\n schemaProps,\n },\n\n clientFirstName: {\n text: Wording.clientFirstName,\n value: clientFirstName,\n onInputChange: (e: InputEvent) =>\n setClientFirstName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setClientFirstName(''),\n },\n\n clientLastName: {\n text: Wording.clientLastName,\n value: clientLastName,\n onInputChange: (e: InputEvent) =>\n setclientLastName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setclientLastName(''),\n },\n\n customerSituation: {\n id: 'situation',\n defaultValue: '',\n placeholder: 'Sélectionner',\n options: situationStatus,\n handleChangeSelect: (situation: SelectOption<string>) => {\n setCustomerSituation(situation);\n },\n value: customerSituation,\n text: Wording.situation,\n },\n\n refExt: {\n text: Wording.client_ref,\n value: refExt || '',\n onInputChange: (e: InputEvent) => setRefExt(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setRefExt(''),\n },\n\n customerPhone: {\n text: Wording.clientPhoneNbr,\n value: customerPhone,\n onInputChange: (e: InputEvent) =>\n setCustomerPhone(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerPhone(''),\n },\n\n customerEmail: {\n text: Wording.email,\n value: customerEmail,\n onInputChange: (e: InputEvent) =>\n setCustomerEmail(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerEmail(''),\n },\n createdBy: {\n text: Wording.createdBy,\n value: createdBy,\n onInputChange: (e: InputEvent) =>\n setCreatedBy(e.currentTarget.value),\n isLocked: isLimited,\n deleteButton: !isLimited,\n deleteButtonOnClick: () => setCreatedBy(''),\n },\n\n btn_validate: {\n title: Wording.btn_validate,\n color: mainCondition ? 'orange' : 'gray',\n small: true,\n onClick: () => {\n if (mainCondition) {\n dispatch(\n dispatchProps.searchClientRequest({\n fromDate: getDateFormatted(fromDate),\n toDate: getDateFormatted(toDate),\n email: customerEmail,\n orderNumber: caseId,\n firstName: clientFirstName,\n lastName: clientLastName,\n externalReference: refExt,\n processType: getSelectOptionValue(\n customerSituation as SelectOption<string>,\n ),\n channel: groupeValue,\n phone: customerPhone,\n createdBy,\n }),\n );\n\n setShowErroGroup(false);\n return;\n }\n\n if (isMixed && !groupeCondition) {\n setShowErroGroup(true);\n }\n },\n },\n\n btn_reset: {\n title: Wording.button_reset,\n small: true,\n color: 'gray',\n onClick: () => {\n setCaseId('');\n setclientLastName('');\n setClientFirstName('');\n setRefExt('');\n setFrom(undefined);\n setTo(undefined);\n setCustomerPhone('');\n setCustomerEmail('');\n setCustomerSituation('');\n setCreatedBy('');\n setShowErroGroup(false);\n\n if (!isDisabledActionBtn) {\n setCustomerGroup('');\n }\n },\n },\n };\n\n const renderEndorsementGeneration = () => {\n const { upload_csv } = WordingConstant.CustomerContracSearch;\n\n return (\n <div className=\"upload-endorsements\">\n <p className=\"upload-endorsements__title\">\n {upload_csv.title}{' '}\n </p>\n\n <CustomUpload\n title={upload_csv.btn}\n onChange={(files: any) => {\n handleShowModal(files);\n }}\n accept=\".csv\"\n />\n </div>\n );\n };\n\n const clientAccessButton = {\n title: WordingConstant.CustomerContracSearch.inputs.buttonAccessClient,\n small: true,\n color: 'orange',\n onClick: () => {\n if (clientId !== '') {\n window.open(getHost(new Map([['client', clientId]])));\n }\n },\n };\n\n const clientAccessInput = {\n text: '',\n value: clientId,\n onInputChange: (e: InputEvent) => setClientId(e.currentTarget.value.trim()),\n };\n\n return (\n <div className=\"search-case-container\">\n <div className=\"top-row\">\n {isHaveActionsPermission(schemaProps) && (\n <div className=\"access-client\">\n <CustomInput {...clientAccessInput} />\n <CustomButton {...clientAccessButton} />\n </div>\n )}\n\n {renderEndorsementGeneration()}\n </div>\n\n <div className=\"search-case-container__container\">\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.caseId} />\n <label>{Wording.from}</label>\n <CustomDate {...elementMap.from} />\n <Group {...elementMap.customerGroup} />\n </div>\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientLastName} />\n <label>{Wording.to}</label>\n <CustomDate {...elementMap.to} />\n <CustomSelect {...elementMap.customerSituation} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientFirstName} />\n <CustomInput {...elementMap.refExt} />\n <CustomInput {...elementMap.createdBy} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.customerPhone} />\n <CustomInput {...elementMap.customerEmail} />\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_reset} />\n\n <CustomButton {...elementMap.btn_validate} />\n </div>\n <CustomModal show={showErrorModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setShowErrorModal(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {WordingConstant.Errors.default}\n </p>\n\n <p className=\"message\">Veuillez reessayer</p>\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n onClick={() => {\n setShowErrorModal(false);\n }}\n color={'orange'}\n />\n </div>\n </div>\n </CustomModal>\n </div>\n </div>\n </div>\n );\n};\n\nexport default CustomerContracSearch;\n","import React, { CSSProperties } from 'react';\nimport { Subtract } from 'utility-types';\nimport { Modal } from '../components';\n\ntype PopupItem = {\n state: number;\n title: string;\n description: string;\n // customDescription?: string;\n};\n\nexport type ExternalProps = {\n updateResponse: {\n code: string;\n message: string;\n };\n modalMessage: {\n success: PopupItem;\n failure: PopupItem;\n request: PopupItem;\n };\n customDescription?: string;\n showLogo?: boolean;\n descriptionStyle?: CSSProperties;\n handleValidate(section: string): void;\n handleReset(): void;\n};\n\ntype Options = {\n debug?: boolean;\n};\n\nexport type InjectedProps = {\n handleShowModal(section: string): void;\n};\n\ntype State = {\n showModal: boolean;\n section: string;\n};\n\nconst withModal = ({ debug = false }: Options = {}) => <\n OwnProps extends InjectedProps\n>(\n WrappedComponent: React.ComponentType<OwnProps>,\n) => {\n type P = OwnProps & ExternalProps;\n type HocProps = Subtract<P, InjectedProps>;\n\n return class extends React.Component<HocProps, State> {\n state = {\n showModal: false,\n section: '',\n };\n\n handleConfirmValidate = () => {\n const { section } = this.state;\n const { handleValidate } = this.props;\n handleValidate(section);\n this.setState({ section: '' });\n };\n\n handleState = (): PopupItem => {\n const { updateResponse, modalMessage } = this.props;\n if (updateResponse === undefined) return modalMessage.failure;\n const code = Number(updateResponse.code);\n switch (code) {\n case 0:\n return modalMessage.request;\n case 200:\n return modalMessage.success;\n default:\n return modalMessage.failure;\n }\n };\n\n handleShowModal = (section: string) => {\n const { showModal } = this.state;\n this.setState({ showModal: !showModal, section });\n };\n\n handleHideModal = () => {\n this.setState({ showModal: false });\n const { handleReset } = this.props;\n handleReset();\n };\n\n render() {\n const { showModal } = this.state;\n const { title, description, state } = this.handleState();\n const {\n customDescription,\n descriptionStyle,\n showLogo,\n } = this.props;\n return (\n <React.Fragment>\n <Modal\n show={showModal}\n title={title}\n description={description}\n customDescription={customDescription}\n state={state}\n handleCancel={this.handleHideModal}\n handleValidate={this.handleConfirmValidate}\n descriptionStyle={descriptionStyle}\n showLogo={showLogo}\n />\n <WrappedComponent\n {...(this.props as OwnProps)}\n handleShowModal={this.handleShowModal}\n />\n </React.Fragment>\n );\n }\n };\n};\n\nexport default withModal;\n","import React from 'react';\nimport CustomerContracSearch, {\n Props as SearchProps,\n} from './CustomerContracSearch';\nimport {\n fetchCustomerContractAsync,\n uploadAmendmentsAsync,\n resetUploadAmendments,\n} from '../../../_actions/customerContract.actions';\nimport WordingConstant from '../../../utils/wording.json';\nimport { TSchemaProps, RootState } from 'Types';\nimport { compose } from 'recompose';\n\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../../libraries/withModal';\nimport { Subtract } from 'utility-types';\nimport {\n isUserLimitedBySchema,\n parseUploadAmendments,\n} from '../../../utils/helpers';\nimport { EMenuLabels, ESubMenuCaseLabel } from '../../../utils/enums';\nimport { connect } from 'react-redux';\n\nconst Wording = WordingConstant.CustomerContracSearch;\n\nconst dispatchProps = {\n customerContractDispatch: fetchCustomerContractAsync.request,\n uploadAmendmentsDispatch: uploadAmendmentsAsync.request,\n resetUploadDispatch: resetUploadAmendments,\n};\n\nconst mapStateToProps = (state: RootState) => ({\n updateResponse: state.customersContractReducer.updateResponse,\n schema: state.authReducer.autorizationsScheme,\n userId: state.authReducer.userId,\n});\n\nconst WrappedSearchContainer = compose<\n SearchProps,\n Subtract<SearchProps, InjectedPropsModal> & ExternalPropsModal\n>(withModal())(CustomerContracSearch);\n\ntype Props = {\n schemaProps: TSchemaProps;\n groupList: string[];\n} & typeof dispatchProps &\n ReturnType<typeof mapStateToProps>;\n\nconst SearchContainer: React.FC<Props> = ({\n schemaProps,\n userId,\n groupList,\n schema,\n updateResponse,\n uploadAmendmentsDispatch,\n resetUploadDispatch,\n}) => {\n const handleUpdate = (files: any) => {\n if (files.length > 0) {\n parseUploadAmendments(files[0]).then(parsedAmendments => {\n uploadAmendmentsDispatch({\n riders: parsedAmendments,\n });\n });\n }\n };\n\n const userLimited = isUserLimitedBySchema(\n EMenuLabels.CASE,\n ESubMenuCaseLabel.SEARCH_CASE,\n schema,\n );\n\n const getDescriptionStyleByCode = () => {\n switch (updateResponse.code) {\n case '0':\n case '500':\n return { color: '#be2829', fontWeight: 800 };\n\n case '200':\n return { color: '#008000', fontWeight: 800 };\n\n default:\n return { color: '#be2829', fontWeight: 800 };\n }\n };\n\n return (\n <div className=\"search-container\">\n <WrappedSearchContainer\n groupList={groupList}\n userId={userId}\n userLimited={userLimited}\n schemaProps={schemaProps}\n // Modal\n modalMessage={Wording.popup}\n showLogo={updateResponse.code === '200'}\n customDescription={undefined}\n updateResponse={updateResponse}\n handleValidate={handleUpdate}\n handleReset={() => resetUploadDispatch()}\n descriptionStyle={getDescriptionStyleByCode()}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(SearchContainer);\n","import SearchContainer from './SearchContainer';\n\nexport default SearchContainer;\n","import ErrorElement from './ErrorElement';\n\nexport default ErrorElement;\n","import React from 'react';\nimport { ReducerError } from 'Types';\n\nexport type Prop = {\n error?: string;\n reducerError?: ReducerError;\n};\n\nconst ErrorElement: React.FC<Prop> = ({ error }) => {\n const renderError = ({ }: string) => (\n <div className=\"error-element\">\n <p>{error}</p>\n </div>\n );\n if (error) return renderError(error as string);\n return null;\n};\n\nexport default ErrorElement;\n","import React, { Component } from 'react';\nimport cs from 'classnames';\n\nconst defaultButton = (props: any) => (\n <button type=\"button\" {...props} className=\"-btn\">\n {props.children}\n </button>\n);\n\ntype State = {\n page: any;\n};\n\nconst defaultRowsNumber = [5, 10, 20, 50];\n\nclass TablePagination extends Component<any, State> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n page: props.page,\n };\n }\n\n componentWillReceiveProps(nextProps: { page: any }) {\n this.setState({ page: nextProps.page });\n }\n\n getSafePage = (page: number) => {\n if (isNaN(page)) {\n // tslint:disable-next-line:no-parameter-reassignment\n page = this.props.page;\n }\n if (this.props.canNextFromData) return page;\n\n return Math.min(Math.max(page, 0), this.props.pages - 1);\n };\n\n changePage = (page: any) => {\n // tslint:disable-next-line:no-parameter-reassignment\n page = this.getSafePage(page);\n this.setState({ page });\n if (this.props.page !== page) {\n this.props.onPageChange(page);\n }\n };\n\n applyPage = (e?: any) => {\n if (e) {\n e.preventDefault();\n }\n const page = this.state.page;\n this.changePage(page === '' ? this.props.page : page);\n };\n\n render() {\n const {\n t,\n // Computed\n pages,\n // Props\n page,\n showPageSizeOptions,\n pageSize,\n data,\n showPageJump,\n canPrevious,\n onPageSizeChange,\n className,\n PreviousComponent = defaultButton,\n NextComponent = defaultButton,\n showTotalPages = true,\n } = this.props;\n const dataLength = data.length;\n\n const canNext = this.props.canNextFromData\n ? data && dataLength === pageSize\n : this.props.canNext;\n\n const dataLengthCheck = dataLength < 10;\n\n return (\n <div\n className={cs(\n 'table-pagination -pagination',\n { 'table-pagination-visibility': dataLengthCheck },\n className,\n )}\n style={this.props.style}\n >\n <div className=\"table-pagination-previous -previous\">\n <PreviousComponent\n onClick={() => {\n if (!canPrevious) return;\n this.changePage(page - 1);\n }}\n disabled={!canPrevious}\n >\n {'<'}\n </PreviousComponent>\n </div>\n\n <div className=\"center\">\n <span className=\"-pageInfo\">\n {this.props.pageText}{' '}\n {showPageJump ? (\n <div className=\"-pageJump\">\n <input\n type={\n this.state.page === ''\n ? 'text'\n : 'number'\n }\n onChange={e => {\n const val = e.target.value;\n const page = Number(val) - 1;\n if (val === '') {\n return this.setState({ page: val });\n }\n this.setState({\n page: this.getSafePage(page),\n });\n }}\n value={\n this.state.page === ''\n ? ''\n : this.state.page + 1\n }\n onBlur={this.applyPage}\n onKeyPress={e => {\n if (\n e.which === 13 ||\n e.keyCode === 13\n ) {\n this.applyPage();\n }\n }}\n />\n </div>\n ) : (\n <span className=\"-currentPage\">{page + 1}</span>\n )}{' '}\n {showTotalPages ? (\n <React.Fragment>\n {'sur'}{' '}\n <span className=\"-totalPages\">\n {pages || 1}\n </span>\n </React.Fragment>\n ) : null}\n </span>\n\n <div className=\"table-pagination-next -next\">\n <NextComponent\n onClick={() => {\n if (!canNext) return;\n this.changePage(page + 1);\n }}\n disabled={!canNext}\n >\n {'>'}\n </NextComponent>\n </div>\n {showPageSizeOptions && (\n <span className=\"select-wrap -pageSizeOptions\">\n <select\n onChange={e =>\n onPageSizeChange(Number(e.target.value))\n }\n value={pageSize}\n >\n {defaultRowsNumber.map((option, idx) => (\n <option key={idx} value={option}>\n {option}\n </option>\n ))}\n </select>\n </span>\n )}\n\n <span className=\"data-length\">\n <p>\n Résultat{dataLength > 1 ? 's' : ''} :{' '}\n <span>{dataLength}</span>\n </p>\n </span>\n </div>\n </div>\n );\n }\n}\n\nexport default TablePagination;\n","import TablePagination from './TablePagination';\n\nexport default TablePagination;\n","import React from 'react';\n\nimport { CSVLink } from 'react-csv';\nimport ReactTable from 'react-table';\nimport 'react-table/react-table.css';\n\nimport CustomButton from '../../CustomButton';\nimport TablePagination from '../../TablePagination';\nimport resources from '../../../utils/resources';\n\nexport const LoadingComponent: React.FC<{ loading: boolean }> = ({\n loading,\n}) => {\n if (loading) {\n return (\n <div className=\"custom-loading -loading -active\">\n <div className=\"custom-loading-inner -loading-inner\">\n Chargement en cours...\n </div>\n </div>\n );\n }\n return null;\n};\n\nexport type Props = {\n columns: object[];\n data: any;\n title?: string;\n loading?: boolean;\n noDataText?: string;\n sortable?: boolean;\n buttonTitle?: string;\n error?: string;\n SubComponent?: any;\n showPagination?: boolean;\n downloadData?: any;\n downloadHeaders?: any;\n getTrProps?: any;\n downloadFilename?: string;\n downloadButtonTitle?: string;\n className?: string;\n filterable?: boolean;\n collapseOnDataChange?: boolean;\n pageSize?: number;\n customElmTopAndBottom?: any;\n showPaginationTop?: boolean;\n ref?: any;\n TheadComponent?: any;\n customPageSIze?: any;\n\n handleButtonClick?(): void;\n};\n\nconst CustomTable: React.FC<Props> = ({\n columns,\n data,\n title,\n loading,\n noDataText,\n sortable,\n buttonTitle,\n handleButtonClick,\n error,\n SubComponent,\n showPagination,\n className,\n downloadHeaders,\n downloadData,\n getTrProps,\n downloadFilename,\n filterable,\n downloadButtonTitle,\n customElmTopAndBottom,\n collapseOnDataChange,\n customPageSIze,\n ref,\n TheadComponent,\n}) => {\n const renderCustomElement = (position: string) =>\n customElmTopAndBottom && (\n <div\n className={`custom-table__custom custom-table__custom-${position} `}\n >\n {customElmTopAndBottom}\n </div>\n );\n\n return (\n <div className=\"custom-table\">\n {title && <h3>{title}</h3>}\n {renderCustomElement('top')}\n <ReactTable\n className={`custom-table__table custom-table__table-border-none ${\n className ? className : ''\n }`}\n columns={columns}\n data={data}\n style={{ border: 'none' }}\n ref={ref}\n defaultPageSize={data.length < 10 ? data.length + 1 : 10}\n showPaginationBottom={showPagination}\n filterable={filterable}\n loading={loading}\n showPaginationTop={showPagination}\n LoadingComponent={LoadingComponent}\n TheadComponent={TheadComponent}\n PaginationComponent={TablePagination}\n noDataText={noDataText}\n collapseOnDataChange={\n collapseOnDataChange ? collapseOnDataChange : false\n }\n resizable={false}\n sortable={sortable}\n SubComponent={SubComponent}\n showPagination={showPagination}\n getTrProps={getTrProps}\n />\n {renderCustomElement('bottom')}\n\n {!error && buttonTitle && (\n <CustomButton\n title={buttonTitle}\n color=\"orange\"\n onClick={handleButtonClick}\n />\n )}\n {downloadButtonTitle && downloadData && (\n <CSVLink\n className=\"custom-table__downloadLink\"\n data={downloadData}\n headers={downloadHeaders}\n filename={downloadFilename}\n >\n {downloadButtonTitle}\n </CSVLink>\n )}\n </div>\n );\n};\n\nexport const withTriangle = (value: string | HTMLElement) => (\n <span className=\"with-triangle\">\n {value} <img src={resources['ic-triangle']} alt=\"ic-triangle\" />\n </span>\n);\n\nexport default CustomTable;\n","import CustomTable from './CustomTable';\n\nexport default CustomTable;\n","import { useEffect } from 'react';\n\nconst useOutsideClick = (\n ref: React.RefObject<HTMLElement>,\n callback: () => void,\n) => {\n const handleClick = (e: any) => {\n if (ref.current && !ref.current.contains(e.target)) {\n callback();\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClick);\n\n return () => {\n document.removeEventListener('click', handleClick);\n };\n });\n};\n\nexport default useOutsideClick;\n","import React from 'react';\nimport { getLabelByType } from '../../../utils/helpers';\n\nexport type StatusType =\n | 'contractStatus'\n | 'orderStatus'\n | 'firstPaymentCBStatus'\n | 'firstPaymentSlimCollectStatus'\n | 'paymentSDD';\n\nconst Status: React.FC<{ status: string; type: StatusType }> = ({\n status,\n type,\n}) => {\n return (\n <div className={`status status-${mappingStatus(status)}`}>\n <div className=\"circle\" />\n <span className=\"label\">{getLabelByType(status, type)}</span>\n </div>\n );\n};\n\nexport const mappingStatus = (status: string) => {\n switch (status) {\n case 'success':\n case 'overPayment':\n case 'effective':\n case 'processed':\n case 'validated':\n case 'lettered':\n case 'COMPLETED':\n case 'terminated':\n case 'allocated':\n case 'OK':\n case 'FINALIZED':\n case 'FINALIZED_WITHOUT_DOC':\n return 'success';\n\n case 'detectedAnomaly':\n case 'transferFailure':\n case 'recovery1':\n case 'recovery2':\n case 'latePayment':\n case 'incident':\n case 'transactionFailure':\n case 'errorDetected':\n case 'toBeLetter':\n case 'SUSPENDED':\n case 'IN_FAILURE':\n case 'inFaillure':\n case 'inFailure':\n case 'KO':\n case 'NOK':\n case 'PENDING':\n return 'danger';\n\n case 'transmitted':\n case 'notSettled':\n case 'externalRecovery':\n case 'toProcess':\n case 'initialized':\n case 'pending':\n case 'toAllocate':\n case 'waiting':\n case 'toBeQualified':\n case 'toValidate':\n case 'inProposal':\n case 'PENDING':\n case 'IN_PROGRESS':\n case 'suspended':\n case 'inProgress':\n case 'disputed':\n return 'warning';\n\n case 'dropped':\n case 'cancelled':\n case 'canceled':\n case 'CANCELLED':\n case 'CANCELED':\n case 'discarded':\n return 'secondary';\n\n case 'PAYMENT_SDD':\n return 'purple'\n\n default:\n return 'undefined';\n }\n};\n\nexport default Status;\n","import Status from './Status';\n\nexport default Status;\n","import React, { Fragment, useRef, useState } from 'react';\n\nimport { TCustomer } from '../../../constants/key-system';\n\nimport {\n getFormattedDate,\n getLabelByType,\n isHaveActionsPermission,\n isOdd,\n} from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\nimport resources from '../../../utils/resources';\nimport { CustomButton, CustomInput, CustomModal } from '../../../components';\nimport { InputEvent, TSchemaProps } from 'Types';\n\nimport { TCustomerContractPayload } from '../../../_actions/customerContract.actions';\nimport ErrorElement from '../../../components/ErrorElement';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport useOutsideClick from '../../../libraries/useOutsideClick';\nimport { ITransferContract } from '../../../_actions/transferContract.actions';\nimport Status from '../../../components/admin/Status';\nimport { TContract, TOrder } from 'Models';\n\nconst Wording = WordingConstant.SubComponent;\n\ntype Props = {\n customer: TCustomer;\n transferCustomerContract: (props: TCustomerContractPayload) => void;\n resetResponse: () => void;\n transferContract: TOrder[];\n error: string;\n transferContractDispatch: (props: ITransferContract) => void;\n userId: string;\n transferContractResponse: any;\n resetResponseTransfer: () => void;\n schemaProps: TSchemaProps;\n index: number;\n transferError?: string;\n};\n\nconst SubComponent: React.FC<Props> = ({\n customer,\n transferCustomerContract,\n transferContract,\n error,\n resetResponse,\n userId,\n schemaProps,\n transferContractDispatch,\n transferContractResponse,\n transferError,\n resetResponseTransfer,\n index,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [currentItem, setCurrentItem] = useState<number>(-1);\n const [showModal, setModal] = useState<boolean>(false);\n const [clientId, setClientId] = useState<string>('');\n\n const [currentContract, setCurrentContract] = useState<\n TContract | undefined\n >(undefined);\n\n const divRef = useRef<HTMLDivElement>(null);\n\n useOutsideClick(divRef, () => {\n if (isOpen) setOpen(false);\n });\n\n const allContracts = customer.contracts;\n\n const renderTransferContractModal = () => {\n const elementMap = {\n input_client_id: {\n text: '',\n value: clientId,\n onInputChange: (e: InputEvent) =>\n setClientId(e.currentTarget.value),\n },\n\n btn_client_access: {\n title: 'Valider',\n small: true,\n color: 'gray',\n onClick: () => {\n if (clientId !== '') {\n setModal(false);\n transferCustomerContract({\n customerId: clientId,\n });\n }\n },\n },\n\n btn_cancel: {\n title: 'Retour',\n small: true,\n color: 'orange',\n onClick: () => {\n setModal(false);\n },\n },\n };\n return (\n <CustomModal show={showModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setModal(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"transfer-contract-modal\">\n <p className=\"title\">{Wording.modalTitle}</p>\n <p className=\"sub-title\">{Wording.subTitle}</p>\n <CustomInput {...elementMap.input_client_id} />\n\n <div className=\"transfer-contract-modal__buttons\">\n <CustomButton {...elementMap.btn_cancel} />\n <CustomButton {...elementMap.btn_client_access} />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n const renderTransferContractErrorModal = () => {\n return (\n <CustomModal show={error === Wording.noResult}>\n <span\n className=\"btn-close\"\n onClick={() => {\n resetResponse();\n setClientId('');\n }}\n >\n {'X'}\n </span>\n\n <span className=\"error-component\">\n <p className=\"title\">\n {'Aucun résultat trouvé pour cette recherche'}\n </p>\n <ErrorElement error={error} />\n\n <div className=\"btn\">\n <CustomButton\n title={'Retour'}\n color=\"orange\"\n onClick={() => {\n setClientId('');\n resetResponse();\n setModal(true);\n }}\n />\n\n <CustomButton\n title={'Réessayer'}\n color=\"gray\"\n onClick={() => {\n setClientId('');\n resetResponse();\n setModal(true);\n }}\n />\n </div>\n </span>\n </CustomModal>\n );\n };\n\n const renderTranssferContractSuccessModal = () => {\n return (\n <CustomModal show={transferContract.length > 0}>\n <span\n className=\"btn-close\"\n onClick={() => {\n resetResponse();\n setClientId('');\n }}\n >\n {'X'}\n </span>\n\n <span className=\"success-component\">\n <p className=\"title\">\n {'Client cible correspondant à votre recherche'}\n </p>\n <CustomTable\n data={transferContract}\n showPagination={false}\n filterable={false}\n className=\"-striped -highlight\"\n columns={prepareColumns()}\n SubComponent={({ original }: any) => (\n <div>{transfertContractSubComponent(original)}</div>\n )}\n />\n </span>\n <div className=\"group-btn\">\n <CustomButton\n title={'Retour'}\n color=\"orange\"\n onClick={() => {\n resetResponse();\n setModal(true);\n }}\n />\n\n <CustomButton\n title={'Continuer'}\n color=\"gray\"\n onClick={() => {\n if (currentContract) {\n transferContractDispatch({\n customerNbrOutdated: customer.id,\n customerNbrTargeted: clientId,\n contractNbr: currentContract.contractNumber,\n userName: userId,\n });\n }\n }}\n />\n </div>\n </CustomModal>\n );\n };\n\n const prepareColumns = () => {\n return [\n {\n Header: Wording.transferContract.customerId,\n accessor: 'order.orderReference',\n filterable: false,\n },\n {\n Header: Wording.transferContract.companyName,\n accessor: 'order.customer.contact.companyName',\n filterable: false,\n },\n {\n Header: Wording.transferContract.clientFirstName,\n accessor: 'order.customer.contact',\n filterable: false,\n Cell: ({ original }: { original: { order: TOrder } }) => (\n <div>\n {`${original.order.customer.contact.firstName}\n ${original.order.customer.contact.lastName}`}\n </div>\n ),\n },\n {\n Header: Wording.transferContract.address,\n accessor: 'order.customer.contact.address.street',\n filterable: false,\n },\n {\n Header: Wording.transferContract.invoiceId,\n accessor: 'order.customer.contact.phone',\n filterable: false,\n },\n {\n Header: Wording.transferContract.email,\n accessor: 'order.customer.contact.email',\n filterable: false,\n },\n ];\n };\n\n const transfertContractSubComponent = (original: any) => {\n return (\n <div className=\"sub-component\">\n <table className=\"sub-component__table\">\n <thead>\n <tr>\n {[\n Wording.customerId,\n Wording.energie,\n Wording.to,\n Wording.status,\n ].map((el: string, index: number) => (\n <th key={index}>{el}</th>\n ))}\n <th />\n </tr>\n </thead>\n <tbody>\n {allContracts ? (\n allContracts.map((contract, index) => {\n return (\n <Fragment key={index}>\n <tr className=\"transaction-status\">\n <td>{contract.contractNumber}</td>\n <td>{contract.energy}</td>\n <td>\n {getFormattedDate(\n contract.subscriptionDate,\n )}\n </td>\n <td>{contract.status}</td>\n </tr>\n </Fragment>\n );\n })\n ) : (\n <tr>\n <td>{Wording.no_contract}</td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n };\n\n const renderSuccessFailureModal = () => {\n return (\n <CustomModal\n show={\n transferContractResponse !== '' &&\n transferContractResponse !== undefined\n }\n >\n <>\n <div>\n {transferContractResponse === 'SUCCESS' && (\n <div className=\"transfer-modal\">\n <h3>{Wording.success}</h3>\n <p>{Wording.success_text}</p>\n </div>\n )}\n\n {transferContractResponse === 'ERROR' && (\n <div className=\"transfer-modal\">\n <h3>{Wording.error}</h3>\n <p>{transferError || Wording.error_text}</p>\n </div>\n )}\n </div>\n <div className=\"group-btn\">\n <CustomButton\n title={'Retour'}\n color=\"orange\"\n onClick={() => {\n setModal(false);\n resetResponseTransfer();\n setOpen(false);\n setCurrentContract(undefined);\n }}\n />\n </div>\n </>\n </CustomModal>\n );\n };\n\n return (\n <div className={`sub-component ${isOdd(index) ? '-odd' : ''}`}>\n <table className=\"sub-component__table\">\n <thead>\n <tr>\n {[\n Wording.customerId,\n Wording.energie,\n Wording.to,\n Wording.status,\n ].map((el: string, index: number) => (\n <th key={index}>{el}</th>\n ))}\n\n <th />\n </tr>\n </thead>\n <tbody>\n {allContracts ? (\n allContracts.map((contract, index) => {\n return (\n <Fragment key={index}>\n <tr className=\"transaction-status\">\n <td>{contract.contractNumber}</td>\n <td>\n {getLabelByType(\n contract.energy,\n 'energyTypes',\n )}\n </td>\n <td>\n {getFormattedDate(\n contract.subscriptionDate,\n )}\n </td>\n <td>\n <Status\n status={contract.status || ''}\n type=\"contractStatus\"\n />\n </td>\n <td>\n {isHaveActionsPermission(\n schemaProps,\n ) && (\n <img\n className=\"subcomponent-menu-style\"\n src={\n resources[\n 'ic-menu-orange-creu'\n ]\n }\n alt=\"ic-menu\"\n onClick={() => {\n setOpen(!isOpen);\n setCurrentItem(index);\n }}\n />\n )}\n {isOpen && currentItem === index && (\n <div\n ref={divRef}\n className=\"pop-up\"\n >\n <p\n onClick={() => {\n setCurrentContract(\n contract,\n );\n setModal(true);\n setOpen(false);\n }}\n >\n {\n 'Transférer le contrat'\n }\n </p>\n </div>\n )}\n </td>\n </tr>\n </Fragment>\n );\n })\n ) : (\n <tr>\n <td>{Wording.no_contract}</td>\n </tr>\n )}\n </tbody>\n </table>\n {showModal && renderTransferContractModal()}\n {renderTransferContractErrorModal()}\n {renderTranssferContractSuccessModal()}\n\n {renderSuccessFailureModal()}\n </div>\n );\n};\n\nexport default SubComponent;\n","import React, { useState } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport WordingConstant from '../../../utils/wording.json';\n\nconst Wording = WordingConstant.CustomerContractContainer;\ninterface IPayload {\n user?: string;\n password?: string;\n email?: string;\n userId?: string;\n token?: string;\n accessToken?: string;\n error?: string;\n message?: string;\n}\n\ntype Props = {\n email: string;\n resetPasswordDispatch(props: IPayload): void;\n};\n\nconst ResetPasswordButton: React.FC<Props> = ({\n resetPasswordDispatch,\n email,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n\n const renderModal = () => {\n return (\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"reset-modal\">\n <p className=\"warning-title\">\n {Wording.warningMessageTitle}\n </p>\n <p>{Wording.message}</p>\n <p className=\"reponse\">{Wording.confMessage}</p>\n\n <div className=\"reset-modal__buttons\">\n <CustomButton\n onClick={() => setOpen(false)}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n resetPasswordDispatch({\n email,\n });\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"reset-password\">\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.labelTitle}\n </p>\n {renderModal()}\n </div>\n );\n};\n\nexport default ResetPasswordButton;\n","import React, { useState, ChangeEvent } from 'react';\nimport { CustomModal, CustomButton, CustomInput } from '../../../components';\nimport { isValidEmail, isValidString } from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\n\nconst Wording = WordingConstant.CustomerContractContainer;\n\ninterface IPayloadReinitSubscription {\n id: string;\n email: string;\n message?: string;\n code?: string;\n}\n\ntype Props = {\n reinitSubscriptionEmailDispatch: (\n props: IPayloadReinitSubscription,\n ) => void;\n customerNbr: string;\n handleSubscriptionSendEmail: (e: string) => void;\n defaultEmail?: string;\n};\n\nconst ReinitSubscriptionEmailButton: React.FC<Props> = ({\n reinitSubscriptionEmailDispatch,\n customerNbr,\n handleSubscriptionSendEmail,\n defaultEmail = '',\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [currentEmail, setCurrentEmail] = useState<string>(defaultEmail);\n\n const getMailAddressError = (value: string): string => {\n let error = '';\n if (!isValidString(value)) error = Wording.emptyField;\n else if (!isValidEmail(value)) {\n error = Wording.addressValidity;\n }\n return error;\n };\n\n const sendCondition =\n currentEmail !== '' || getMailAddressError(currentEmail);\n\n const elementMap = {\n currentEmail: {\n value: currentEmail,\n onInputChange: (e: ChangeEvent<HTMLInputElement>) =>\n setCurrentEmail(e.currentTarget.value),\n error: getMailAddressError(currentEmail),\n },\n\n btn_validate: {\n title: 'Continuer',\n color: 'gray',\n small: true,\n onClick: () => {\n handleSubscriptionSendEmail(currentEmail);\n reinitSubscriptionEmailDispatch({\n id: customerNbr,\n email: currentEmail,\n });\n },\n },\n\n btn_cancel: {\n title: 'Retour',\n color: 'orange',\n small: true,\n onClick: () => {\n setOpen(false);\n },\n },\n };\n\n const renderModal = () => {\n return (\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"reinit-subscription-modal\">\n <p className=\"warning-title\">\n {Wording.warningMessageTitle}\n </p>\n <p>{Wording.reinit_message}</p>\n <p className=\"reponse\">{Wording.enter_email}</p>\n\n <CustomInput {...elementMap.currentEmail} />\n\n <p>{Wording.advice_message}</p>\n\n <div className=\"reinit-subscription-modal__buttons\">\n <CustomButton {...elementMap.btn_cancel} />\n {sendCondition && (\n <CustomButton {...elementMap.btn_validate} />\n )}\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"reinit-subscription\">\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.sendEmail}\n </p>\n {renderModal()}\n </div>\n );\n};\n\nexport default ReinitSubscriptionEmailButton;\n","import React, { useState, useEffect } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport { TResponse } from 'Models';\n\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n CustomModal,\n CustomRadio,\n Group,\n} from '../../../components';\n\nimport {\n isValidName,\n isValidString,\n isValidEmail,\n isEmptySelectOption,\n getSelectOptionValue,\n formatFirstNameString,\n} from '../../../utils/helpers';\nimport { EResponseCode } from '../../../utils/enums';\nimport _ from 'lodash';\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n userName?: string;\n}\n\nimport accents from 'remove-accents';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\nconst civilStatuses: Array<SelectOption<string>> = [\n {\n id: Wording.CreateUserModal.civilStatuses.mr,\n label: Wording.CreateUserModal.civilStatuses.mr,\n value: Wording.CreateUserModal.civilStatuses.mr,\n },\n {\n id: Wording.CreateUserModal.civilStatuses.mme,\n label: Wording.CreateUserModal.civilStatuses.mme,\n value: Wording.CreateUserModal.civilStatuses.mme,\n },\n {\n id: Wording.CreateUserModal.civilStatuses.ms,\n label: Wording.CreateUserModal.civilStatuses.ms,\n value: Wording.CreateUserModal.civilStatuses.ms,\n },\n];\n\ntype Props = {\n schemaProps: TSchemaProps;\n isOpen: boolean;\n createUserResponse: TResponse;\n setOpen: (value: boolean) => void;\n groupList: string[];\n createUser: (props: IPayloadUser) => void;\n resetCreateUserResponse: () => void;\n isCustomerAndContract: boolean;\n currentUser?: any;\n};\n\nfunction getFirstNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getLastNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getMailAddressError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidEmail(value)) {\n error = Wording.CreateUserModal.errors.mailAddressValidity;\n }\n return error;\n}\n\nfunction getCivilityError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getGroupError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getUserNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.userNameValidity;\n }\n return error;\n}\n\nfunction getClientNumberError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.clientNumberValidity;\n }\n return error;\n}\n\nconst CreateUserModal: React.FC<Props> = ({\n isOpen,\n setOpen,\n createUser,\n createUserResponse,\n resetCreateUserResponse,\n groupList,\n isCustomerAndContract,\n currentUser,\n schemaProps,\n}) => {\n const [clientLastName, setClientLastName] = useState<string>('');\n const [clientFirstName, setClientFirstName] = useState<string>('');\n const [clientEmail, setClientEmail] = useState<string>('');\n const [groupId, setGroupId] = useState<string | SelectOption<any>>('');\n const [civility, setCivility] = useState<string | SelectOption<any>>('');\n const [clientLastNameError, setClientLastNameError] = useState<string>('');\n const [clientFirstNameError, setClientFirstNameError] = useState<string>(\n '',\n );\n const [clientEmailError, setClientEmailError] = useState<string>('');\n const [civilityError, setCivilityError] = useState<\n string | SelectOption<string>\n >('');\n const [groupError, setGroupError] = useState<string | SelectOption<string>>(\n '',\n );\n const [username, setUsername] = useState<string>('');\n const [userNameError, setUserNameError] = useState<string>('');\n\n const [clientNumber, setClientNumber] = useState<string>('');\n const [clientNumberError, setClientNumberError] = useState<string>('');\n\n const [isCreatingUser, setCreatingUser] = useState<boolean>(\n !isCustomerAndContract ? true : false,\n );\n\n useEffect(() => {\n if (clientFirstName !== '' && clientLastName !== '') {\n setUsername(\n `${clientFirstName\n .charAt(0)\n .toLocaleLowerCase()}${clientLastName\n .toLocaleLowerCase()\n .replace(new RegExp('[_-]+'), '')}`,\n );\n }\n }, [clientFirstName, clientLastName]);\n\n const { code, message } = createUserResponse;\n\n const createUserCondition =\n getMailAddressError(clientEmail) === '' &&\n getFirstNameError(clientFirstName) === '' &&\n getLastNameError(clientLastName) === '' &&\n getCivilityError(civility) === '' &&\n getGroupError(groupId) === '' &&\n getUserNameError(username) === '';\n\n const createClientCondition =\n getMailAddressError(clientEmail) === '' &&\n getFirstNameError(clientFirstName) === '' &&\n getLastNameError(clientLastName) === '' &&\n getCivilityError(civility) === '' &&\n getClientNumberError(clientNumber) === '';\n\n const elementMap = {\n groupId: {\n id: 'groupe',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n handleChangeSelect: (situation: SelectOption<any>) => {\n setGroupId(situation);\n // setGroupError(getGroupError(situation));\n },\n value: groupId,\n text: Wording.group,\n error: groupError,\n schemaProps,\n },\n\n clientLastName: {\n text: 'Nom: ',\n value: clientLastName,\n onInputChange: (e: InputEvent) => {\n setClientLastName(formatFirstNameString(e.currentTarget.value));\n // setClientLastNameError(getLastNameError(clientLastName));\n },\n error: clientLastNameError,\n },\n\n clientEmail: {\n text: 'Email: ',\n value: isCustomerAndContract\n ? _.get(currentUser, 'original.contact.email', '')\n : clientEmail,\n onInputChange: (e: InputEvent) => {\n setClientEmail(accents.remove(e.currentTarget.value));\n // setClientEmailError(getMailAddressError(e.currentTarget.value));\n },\n error: isCustomerAndContract ? '' : clientEmailError,\n isLocked: isCustomerAndContract ? true : false,\n },\n\n clientFirstName: {\n text: 'Prénom: ',\n value: clientFirstName,\n onInputChange: (e: InputEvent) => {\n setClientFirstName(\n formatFirstNameString(e.currentTarget.value),\n );\n // setClientFirstNameError(\n // getFirstNameError(e.currentTarget.value),\n // );\n },\n error: clientFirstNameError,\n },\n\n civility: {\n id: 'Civilité: ',\n defaultValue: '',\n options: civilStatuses,\n handleChangeSelect: (situation: SelectOption<any>) => {\n setCivility(situation);\n // setCivilityError(getCivilityError(situation));\n },\n value: civility,\n text: Wording.civility,\n error: civilityError,\n },\n\n username: {\n id: 'username',\n text: \"Nom d'utilisateur :\",\n value: isCustomerAndContract\n ? _.get(currentUser, 'original.id', '')\n : username,\n onInputChange: (e: InputEvent) => {\n const inputValue = e.currentTarget.value;\n\n // Expression régulière : autorise lettres, chiffres, _ et -\n if (/^[a-zA-Z0-9]*$/.test(inputValue)) {\n setUsername(inputValue);\n setUserNameError('');\n } else {\n setUserNameError(\"les caractères spéciaux ne sont pas autorisés.\");\n }\n },\n error: isCustomerAndContract ? '' : userNameError,\n isLocked: isCustomerAndContract ? true : false,\n },\n\n clientNumber: {\n id: 'clientNumber: ',\n text: 'N° client :',\n value: isCustomerAndContract\n ? _.get(currentUser, 'original.id', '')\n : clientNumber,\n onInputChange: (e: InputEvent) => {\n if (new RegExp('^[0-9a-zA-Z]*$').test(e.currentTarget.value)) {\n setClientNumber(e.currentTarget.value);\n }\n // setClientNumberError(\n // getClientNumberError(e.currentTarget.value),\n // );\n },\n error: isCustomerAndContract ? '' : clientNumberError,\n isLocked: isCustomerAndContract ? true : false,\n },\n\n btn_validate: {\n title: Wording.btnValidate,\n color: 'gray',\n small: true,\n onClick: () => {\n setClientFirstNameError(getFirstNameError(clientFirstName));\n setClientEmailError(getMailAddressError(clientEmail));\n setClientLastNameError(getLastNameError(clientLastName));\n setCivilityError(getCivilityError(civility));\n setGroupError(getGroupError(groupId));\n setUserNameError(getUserNameError(username));\n setClientNumberError(getClientNumberError(clientNumber));\n if (\n createUserCondition &&\n !isCustomerAndContract &&\n isCreatingUser\n ) {\n createUser({\n group: getSelectOptionValue(\n groupId as SelectOption<string>,\n ),\n firstName: clientFirstName,\n lastName: clientLastName,\n email: clientEmail,\n civility: getSelectOptionValue(\n civility as SelectOption<string>,\n ),\n userName: username,\n });\n setOpen(false);\n } else if (\n createClientCondition &&\n !isCustomerAndContract &&\n !isCreatingUser\n ) {\n createUser({\n group: getSelectOptionValue(\n groupId as SelectOption<string>,\n ),\n firstName: clientFirstName,\n lastName: clientLastName,\n email: clientEmail,\n civility: getSelectOptionValue(\n civility as SelectOption<string>,\n ),\n userName: clientNumber,\n });\n setOpen(false);\n } else if (createClientCondition && isCustomerAndContract) {\n createUser({\n userName: _.get(currentUser, 'original.id', ''),\n group: '',\n firstName: clientFirstName,\n lastName: clientLastName,\n email: _.get(currentUser, 'original.contact.email', ''),\n civility: getSelectOptionValue(\n civility as SelectOption<string>,\n ),\n });\n setOpen(false);\n }\n },\n },\n\n btn_reset: {\n title: Wording.buttonReset,\n color: 'orange',\n small: true,\n onClick: () => {\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n },\n },\n\n btn_hide_modal: {\n title: Wording.hideModal,\n color: 'gray',\n small: true,\n onClick: () => {\n resetCreateUserResponse();\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n },\n },\n };\n\n const createUsermodalResponse = () => {\n const { code, message } = createUserResponse;\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetCreateUserResponse();\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_hide_modal} />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div>\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n setClientLastName(''),\n setClientFirstName(''),\n setClientEmail(''),\n setGroupId(''),\n setCivility(''),\n setClientNumber(''),\n setOpen(false),\n setClientLastNameError(''),\n setClientFirstNameError(''),\n setClientEmailError(''),\n setCivilityError('');\n setClientNumberError('');\n }}\n >\n {'X'}\n </span>\n <div className=\"create-user-modal\">\n <p className=\"title\">{Wording.CreateUserModal.title}</p>\n\n {!isCustomerAndContract && (\n <div className=\"radio-buttons\">\n <CustomRadio\n text={'Créer un utilisateur'}\n value={'ind'}\n id={'ind'}\n checked={isCreatingUser}\n handleCheck={() => {\n setCreatingUser(!isCreatingUser);\n }}\n />\n\n <CustomRadio\n text={'Créer un client'}\n value={'ind'}\n id={'ind'}\n checked={!isCreatingUser}\n handleCheck={() => {\n setCreatingUser(!isCreatingUser);\n }}\n />\n </div>\n )}\n\n <div className=\"create-user-modal__container\">\n <div className=\"create-user-modal__block\">\n <CustomInput {...elementMap.clientFirstName} />\n <CustomInput {...elementMap.clientEmail} />\n\n {isCreatingUser ? (\n !isCustomerAndContract && (\n <Group {...elementMap.groupId} />\n )\n ) : (\n <CustomInput {...elementMap.clientNumber} />\n )}\n </div>\n\n <div className=\"create-user-modal__block\">\n <CustomInput {...elementMap.clientLastName} />\n <CustomSelect {...elementMap.civility} />\n\n {!isCustomerAndContract && isCreatingUser && (\n <CustomInput {...elementMap.username} />\n )}\n </div>\n </div>\n <p className=\"message\">{Wording.CreateUserModal.message}</p>\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_reset} />\n <CustomButton {...elementMap.btn_validate} />\n </div>\n </div>\n </CustomModal>\n {code &&\n message !== Wording.errorMessage &&\n createUsermodalResponse()}\n </div>\n );\n};\n\nexport default CreateUserModal;\n","import React, { Fragment } from 'react';\nimport { TOrder } from 'Models';\nimport {\n getFormattedDate,\n getLabelByType,\n isOdd,\n} from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\nimport _ from 'lodash';\n\nconst Wording = WordingConstant.Caseresult.SubComponent;\n\ntype Props = {\n order: TOrder;\n index: number;\n};\n\nenum EProcessType {\n MOVE_IN = 'MES',\n SWITCH = 'CHF',\n}\n\nconst SubComponent: React.FC<Props> = ({ order, index }) => {\n return (\n <div className={`sub-component ${isOdd(index) ? '-odd' : ''}`}>\n <table className=\"sub-component__table\">\n <thead>\n <tr>\n {[\n Wording.contractNbr,\n Wording.startCase,\n Wording.directDebitDate,\n // Wording.subscriptionDate,\n Wording.deliveryPoint,\n Wording.energyType,\n Wording.process,\n Wording.address,\n ].map((el: string, index: number) => (\n <th key={index}>{el}</th>\n ))}\n <th />\n </tr>\n </thead>\n <tbody>\n {_.get(order, 'order.contracts', '') ? (\n _.get(order, 'order.contracts', '').map(\n (contract: any, index: number) => {\n return (\n <Fragment key={index}>\n <tr className=\"transaction-status\">\n <td>\n {_.get(\n contract,\n 'contractNumber',\n '',\n )}\n </td>\n <td>\n {_.get(\n contract,\n 'effectiveStartDate',\n '',\n ) !== undefined\n ? getFormattedDate(\n _.get(\n contract,\n 'effectiveStartDate',\n '',\n ),\n )\n : ''}\n </td>\n <td>\n {_.get(\n contract,\n 'dueDate',\n '',\n ) !== undefined\n ? getFormattedDate(\n _.get(\n contract,\n 'dueDate',\n '',\n ),\n )\n : ''}\n </td>\n <td>\n {_.get(\n contract,\n 'deliveryPoint.pointOfDelivery',\n '',\n )}\n </td>\n <td>\n {getLabelByType(\n _.get(\n contract,\n 'energy',\n '',\n ),\n 'energyTypes',\n )}\n </td>\n <td>\n {_.get(\n contract,\n 'deliveryPoint.process.type',\n '',\n ) === 'MOVE_IN'\n ? EProcessType.MOVE_IN\n : EProcessType.SWITCH}\n </td>\n <td>\n {_.get(\n contract,\n 'deliveryPoint.address.number',\n '',\n )\n ? `${_.get(\n contract,\n 'deliveryPoint.address.number',\n '',\n )} `\n : ''}\n {_.get(\n contract,\n 'deliveryPoint.address.street',\n '',\n )}\n  \n {_.get(\n contract,\n 'deliveryPoint.address.postalCode',\n '',\n )}\n  \n {_.get(\n contract,\n 'deliveryPoint.address.townName',\n '',\n )}\n </td>\n </tr>\n </Fragment>\n );\n },\n )\n ) : (\n <tr>\n <td>{Wording.no_contract}</td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\nexport default SubComponent;\n","import React, { useState } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport WordingConstant from '../../../utils/wording.json';\nimport { EResponseCode, EMode } from '../../../utils/enums';\nimport { TResponse } from 'Models';\n\nimport _ from 'lodash';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\ntype Props = {\n manageUser: (props: IPayloadManageUser) => void;\n original: any;\n setAdminSuccessModal: (porps: boolean) => void;\n resetAdminClientSpaceResponse: () => void;\n resetManageUserResponse: () => void;\n manageUserResponse: TResponse;\n isAdminSpace: boolean;\n};\n\nconst RemoveUserButton: React.FC<Props> = ({\n manageUser,\n original,\n setAdminSuccessModal,\n resetAdminClientSpaceResponse,\n manageUserResponse,\n resetManageUserResponse,\n isAdminSpace,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const { code, message } = manageUserResponse;\n\n const renderModal = () => {\n return (\n <div>\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"remove-user-modal\">\n <p className=\"warning-title\">\n {Wording.RemoveUser.warningTitle}\n </p>\n <p>{Wording.RemoveUser.message}</p>\n <p className=\"response\">\n {Wording.RemoveUser.question}\n </p>\n\n <div className=\"remove-user-modal__buttons\">\n <CustomButton\n onClick={() => {\n setOpen(false);\n setAdminSuccessModal(true);\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n if (isAdminSpace) {\n resetAdminClientSpaceResponse();\n setAdminSuccessModal(false);\n }\n setOpen(false);\n manageUser({\n mode: EMode.DELETE,\n firstName: _.get(\n original.original,\n 'firstName',\n '',\n ),\n lastName: _.get(\n original.original,\n 'lastName',\n '',\n ),\n userName: _.get(\n original.original,\n 'userName',\n '',\n ),\n });\n }}\n />\n </div>\n </div>\n </CustomModal>\n </div>\n );\n };\n\n const deleteUserModal = () => {\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetManageUserResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"enable-user-modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n color={'orange'}\n onClick={() => {\n resetManageUserResponse();\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"remove-user\">\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.RemoveUser.removeUser}\n </p>\n {renderModal()}\n {code && message && deleteUserModal()}\n </div>\n );\n};\n\nexport default RemoveUserButton;\n","import React, { useState, useEffect } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport _ from 'lodash';\nimport { EResponseCode, EMode } from '../../../utils/enums';\nimport WordingConstant from '../../../utils/wording.json';\nimport { TResponse } from 'Models';\nconst Wording = WordingConstant.UserAdministrationResult;\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\ntype Props = {\n status: string;\n manageUser: (props: IPayloadManageUser) => void;\n setAdminSuccessModal: (porps: boolean) => void;\n resetManageUserResponse: () => void;\n original: any;\n isAdminSpace: boolean;\n manageUserResponse: TResponse;\n resetAdminClientSpaceResponse: () => void;\n};\n\nconst EnableOrDesableuserButton: React.FC<Props> = ({\n status,\n manageUser,\n original,\n manageUserResponse,\n resetManageUserResponse,\n resetAdminClientSpaceResponse,\n setAdminSuccessModal,\n isAdminSpace,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const { code, message } = manageUserResponse;\n\n const enableOrDesableUserModal = () => {\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetManageUserResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"enable-user-modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n color={'orange'}\n onClick={() => {\n resetManageUserResponse();\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n const renderModal = () => {\n return (\n <div>\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n {status === 'ENABLED' ? (\n <div className=\"desable-user\">\n <p className=\"warning-title\">\n {Wording.DesableUser.warningTitle}\n </p>\n <p className=\"message\">\n {Wording.DesableUser.message}\n </p>\n <p className=\"question\">\n {Wording.DesableUser.question}\n </p>\n\n <div className=\"desable-user__buttons\">\n <CustomButton\n onClick={() => setOpen(false)}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n if (isAdminSpace) {\n resetAdminClientSpaceResponse();\n setAdminSuccessModal(false);\n }\n setOpen(false);\n manageUser({\n mode: EMode.DISABLE,\n firstName: _.get(\n original.original,\n 'firstName',\n '',\n ),\n lastName: _.get(\n original.original,\n 'lastName',\n '',\n ),\n userName: _.get(\n original.original,\n 'userName',\n '',\n ),\n });\n }}\n />\n </div>\n </div>\n ) : (\n <div className=\"enable-user\">\n <p className=\"warning-title\">\n {Wording.EnableUser.warningTitle}\n </p>\n <p className=\"message\">\n {Wording.EnableUser.message}\n </p>\n <p className=\"question\">\n {Wording.EnableUser.question}\n </p>\n\n <div className=\"enable-user__buttons\">\n <CustomButton\n onClick={() => setOpen(false)}\n color=\"orange\"\n title=\"Retour\"\n />\n\n <CustomButton\n color=\"gray\"\n title=\"Continuer\"\n onClick={() => {\n if (isAdminSpace) {\n resetAdminClientSpaceResponse();\n setAdminSuccessModal(false);\n }\n setOpen(false);\n manageUser({\n mode: EMode.ENABLE,\n firstName: _.get(\n original.original,\n 'firstName',\n '',\n ),\n lastName: _.get(\n original.original,\n 'lastName',\n '',\n ),\n userName: _.get(\n original.original,\n 'userName',\n '',\n ),\n });\n }}\n />\n </div>\n </div>\n )}\n </CustomModal>\n </div>\n );\n };\n\n return (\n <div className=\"enable-or-desable\">\n {status === 'ENABLED' ? (\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.RemoveUser.desableUser}\n </p>\n ) : (\n <p\n onClick={() => {\n setOpen(true);\n }}\n >\n {Wording.RemoveUser.enableUser}\n </p>\n )}\n {renderModal()}\n {/*code && message && enableOrDesableUserModal()*/}\n </div>\n );\n};\n\nexport default EnableOrDesableuserButton;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { CustomModal, CustomButton } from '../../../components';\nimport WordingConstant from '../../../utils/wording.json';\nimport _ from 'lodash';\nimport { TUser, TResponse } from 'Models';\nimport CreateUserModal from '../UserAdministrationContainer/CreateUserModal';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport { isEmpty } from '../../../utils/helpers';\nimport resources from '../../../utils/resources';\nimport RemoveUserButton from '../UserAdministrationContainer/RemoveUserButton';\nimport EnableOrDesableuserButton from '../UserAdministrationContainer/EnableOrDesableUserButton';\nimport useOutsideClick from '../../../libraries/useOutsideClick';\nimport { TSchemaProps } from 'Types';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n}\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\ninterface IPayload {\n group: string;\n}\n\ntype Props = {\n groupList: string[];\n createUser: (props: IPayloadUser) => void;\n createUserResponse: TResponse;\n resetCreateUserResponse: () => void;\n resetGroupListResponse: () => void;\n manageUser: (props: IPayloadManageUser) => void;\n administrationList: TUser[];\n resetAdminClientSpaceResponse: () => void;\n resetManageUserResponse: () => void;\n error: string;\n currentUser?: any;\n manageUserResponse: TResponse;\n schemaProps: TSchemaProps;\n};\n\nconst AdministrationClientSpace: React.FC<Props> = ({\n groupList,\n createUser,\n createUserResponse,\n resetCreateUserResponse,\n administrationList,\n resetAdminClientSpaceResponse,\n error,\n currentUser,\n manageUser,\n manageUserResponse,\n resetManageUserResponse,\n schemaProps,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [openUserModal, setUserModal] = useState<boolean>(false);\n const [openAdminSuccessModal, setAdminSuccessModal] = useState<boolean>(\n false,\n );\n const [handleShowPopUp, setHandleShowPopUp] = useState<boolean>(false);\n\n useEffect(() => {\n administrationList.length === 0 ? setOpen(true) : setOpen(false);\n setAdminSuccessModal(administrationList.length > 0 ? true : false);\n }, [administrationList]);\n const divRef = useRef<HTMLDivElement>(null);\n\n useOutsideClick(divRef, () => {\n if (handleShowPopUp) setHandleShowPopUp(false);\n });\n\n const renderCreateUserModal = () => {\n return (\n <CustomModal show={isOpen}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n resetAdminClientSpaceResponse();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"administration-user-modal\">\n <p className=\"warning-title\">{Wording.modalTitle}</p>\n\n <div className=\"administration-user-modal__buttons\">\n <CustomButton\n onClick={() => {\n setOpen(false);\n resetAdminClientSpaceResponse();\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n\n <CustomButton\n onClick={() => {\n setOpen(false);\n setUserModal(true);\n resetAdminClientSpaceResponse();\n }}\n color=\"gray\"\n title=\"Créer un utilisateur\"\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n const prepareColumns = () => {\n return [\n {\n Header: Wording.group,\n accessor: 'userGroup',\n filterable: false,\n },\n {\n Header: Wording.userId,\n accessor: 'userName',\n filterable: false,\n },\n {\n Header: Wording.clientLastName,\n accessor: 'lastName',\n filterable: false,\n },\n {\n Header: Wording.clientFirstName,\n accessor: 'firstName',\n filterable: false,\n },\n {\n Header: Wording.clientEmail,\n accessor: 'email',\n filterable: false,\n },\n {\n Header: Wording.status,\n accessor: 'userStatus',\n filterable: false,\n },\n {\n Header: '',\n accessor: '',\n filterable: false,\n Cell: (original: any) => {\n return (\n <div>\n <img\n className=\"menu-style\"\n src={resources['ic-menu-h']}\n alt=\"ic-menu\"\n onClick={() => {\n setHandleShowPopUp(!handleShowPopUp);\n }}\n />\n\n {handleShowPopUp && (\n <div ref={divRef} className=\"pop-up\">\n <RemoveUserButton\n setAdminSuccessModal={\n setAdminSuccessModal\n }\n original={original}\n manageUser={manageUser}\n resetAdminClientSpaceResponse={\n resetAdminClientSpaceResponse\n }\n manageUserResponse={manageUserResponse}\n resetManageUserResponse={\n resetManageUserResponse\n }\n isAdminSpace={true}\n />\n\n <EnableOrDesableuserButton\n status={_.get(\n original.original,\n 'userStatus',\n '',\n )}\n original={original}\n manageUser={manageUser}\n setAdminSuccessModal={\n setAdminSuccessModal\n }\n isAdminSpace={true}\n manageUserResponse={manageUserResponse}\n resetManageUserResponse={\n resetManageUserResponse\n }\n resetAdminClientSpaceResponse={\n resetAdminClientSpaceResponse\n }\n />\n </div>\n )}\n </div>\n );\n },\n },\n ];\n };\n\n const administrationUserSuccess = () => {\n return (\n <CustomModal show={openAdminSuccessModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setAdminSuccessModal(false);\n resetAdminClientSpaceResponse();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"administration-user-success-modal\">\n <p className=\"warning-title\">\n {'Administrer espace client'}\n </p>\n {isEmpty(administrationList) && (\n <CustomTable\n columns={prepareColumns()}\n data={administrationList}\n className=\"-striped -highlight\"\n showPagination={false}\n filterable={false}\n downloadData={administrationList}\n downloadButtonTitle={''}\n />\n )}\n\n <div className=\"administration-user-success-modal__buttons\">\n <CustomButton\n onClick={() => {\n setAdminSuccessModal(false);\n resetAdminClientSpaceResponse();\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <div className=\"admin-user\">\n {error === 'no matches found' && renderCreateUserModal()}\n {administrationList.length > 0 && administrationUserSuccess()}\n <CreateUserModal\n currentUser={currentUser}\n isCustomerAndContract={true}\n isOpen={openUserModal}\n setOpen={setUserModal}\n schemaProps={schemaProps}\n groupList={groupList}\n createUser={createUser}\n createUserResponse={createUserResponse}\n resetCreateUserResponse={resetCreateUserResponse}\n />\n </div>\n );\n};\n\nexport default AdministrationClientSpace;\n","import React, { Component } from 'react';\n\ntype Props = {\n callback: () => void;\n children: React.ReactNode;\n};\nexport default class OutsideClickClass extends Component<Props, {}> {\n wrapperRef: any;\n constructor(props: Props) {\n super(props);\n\n this.wrapperRef = null;\n }\n\n componentDidMount = () => {\n document.addEventListener('mousedown', this.handleClickOutside);\n };\n\n componentWillUnmount = () => {\n document.removeEventListener('mousedown', this.handleClickOutside);\n };\n\n setWrapperRef = (node: any) => {\n this.wrapperRef = node;\n };\n\n handleClickOutside = (event: any) => {\n const { callback } = this.props;\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n callback();\n }\n };\n\n render() {\n return <div ref={this.setWrapperRef}>{this.props.children}</div>;\n }\n}\n","import CustomCollapse from './CustomCollapse';\n\nexport default CustomCollapse;\n","import React, { useState } from 'react';\nimport cs from 'classnames';\n\ntype Props = {\n hideFirst?: boolean;\n children?: React.ReactNode;\n firstElement: React.ReactNode;\n customClassName?: string;\n};\nconst CustomCollapse: React.FC<Props> = ({\n firstElement,\n hideFirst,\n children,\n customClassName,\n}) => {\n const [isOpen, setOpen] = useState<boolean>(false);\n const [height, setHeight] = useState<string>('0px');\n\n const childrenElm = !!children && (\n <div\n style={{ height: isOpen ? height : '0px' }}\n className={`custom-collapse__children-content `}\n >\n <div\n ref={(elm: any) =>\n elm !== undefined && elm !== null\n ? setHeight(elm.getBoundingClientRect().height)\n : null\n }\n className=\"custom-collapse__children-content-element\"\n >\n {children}\n </div>\n </div>\n );\n\n const showCollapse = () => {\n setHeight('0px');\n setOpen(!isOpen);\n };\n\n const handleClick = () => (isOpen ? showCollapse() : setOpen(!isOpen));\n\n return (\n <div\n className={cs('custom-collapse', {\n [`${customClassName}`]: customClassName,\n })}\n >\n <div className=\"custom-collapse__display-first-element\">\n {hideFirst ? !isOpen && firstElement : firstElement}\n\n {children && (\n <span\n className={`custom-collapse__display-first-element__btn ${\n isOpen\n ? 'custom-collapse__display-first-element__btn-open'\n : ''\n }`}\n onClick={handleClick}\n role=\"button\"\n >\n +\n </span>\n )}\n </div>\n\n {childrenElm}\n </div>\n );\n};\n\nexport default CustomCollapse;\n","import MessageCollapse from './MessageCollapse';\nexport default MessageCollapse;\n","import React from 'react';\nimport truncate from 'lodash/truncate';\n\nimport CustomCollapse from '../CustomCollapse';\n\nconst MessageCollapse: React.FC<{\n message: string;\n initialLength?: number;\n}> = ({ message, initialLength }) => {\n return (\n <CustomCollapse\n customClassName=\"message-collapse\"\n hideFirst\n firstElement={\n <p className=\"message-collapse-first-elm\">\n {truncate(message, {\n length: initialLength ? initialLength : 30,\n })}\n </p>\n }\n >\n <p className=\"message-collapse-message\">{message}</p>\n </CustomCollapse>\n );\n};\n\nexport default MessageCollapse;\n","import React, { Component, ChangeEvent } from 'react';\nimport { RootState, TSchemaProps } from 'Types';\nimport { connect } from 'react-redux';\nimport SubComponent from './SubComponent';\nimport {\n BackgroundElement,\n CustomButton,\n CustomModal,\n} from '../../../components';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport {\n isEmpty,\n getHost,\n isHaveActionsPermission,\n} from '../../../utils/helpers';\nimport WordingConstant from '../../../utils/wording.json';\nimport resources from '../../../utils/resources';\nimport ResetPasswordButton from './ResetPasswordButton';\nimport ReinitSubscriptionEmailButton from './ReinitSubscriptionEmailButton';\nimport {\n resetPasswordAsync,\n removeError,\n reinitSubscriptionEmailAsync,\n removeReinitSubscriptionMessage,\n} from '../../../_actions/auth.actions';\nimport AdministrationClientSpace from './AdministrationClientSpace';\nimport { TUserPayload } from '../../../_actions/searchUserGroup.actions';\nimport { TUser, TResponse } from 'Models';\nimport {\n transferGetContractAsync,\n resetResponse,\n transferContractAsync,\n resetResponseTransfer,\n} from '../../../_actions/transferContract.actions';\nimport { resetGroupListResponse } from '../../../_actions/getGroup.actions';\nimport {\n adminClientSpaceAsync,\n resetAdminClientSpaceResponse,\n} from '../../../_actions/administrationClientSpace.actions';\nimport { resetManageUserResponse } from '../../../_actions/manageUser.actions';\nimport { EResponseCode, ECustomerStatus } from '../../../utils/enums';\nimport { resetCreateUserResponse } from '../../../_actions/createUser.actions';\n\nimport _ from 'lodash';\nimport ErrorElement from '../../../components/ErrorElement';\nimport OutsideClickClass from '../../../libraries/OutsideClickClass';\nimport { withTriangle } from '../../../components/admin/CustomTable/CustomTable';\n\nimport {\n TCustomer,\n TAddress,\n TCustomerIndividual,\n} from '../../../constants/key-system';\nimport MessageCollapse from '../../../components/admin/MessageCollapse';\n\nconst Wording = WordingConstant.CustomerContractContainer;\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n}\n\nconst headers = [\n { label: 'N°client', key: 'id' },\n { label: 'Nom de société', key: 'company.companyName' },\n { label: 'Nom', key: 'individual.lastName' },\n { label: 'Prénom', key: 'individual.firstName' },\n { label: 'Adresse', key: 'address.street' },\n { label: 'N° Téléphone', key: 'contact.phone1' },\n { label: 'Email', key: 'contact.email' },\n { label: 'N° Contrat', key: 'contracts[0].contractNumber' },\n { label: 'Energie', key: 'contracts[0].energy' },\n { label: 'Date de début', key: 'contracts[0].effectiveStartDate' },\n { label: 'status', key: 'contracts[0].status' },\n];\n\nconst mapStateToProps = (state: RootState) => ({\n customerContractState: state.customersContractReducer,\n authState: state.authReducer,\n userList: state.userGroupReducer.userList,\n transferState: state.transferContractReducer,\n administrationList: state.userGroupReducer.administrationList,\n administrationError: state.userGroupReducer.error as string,\n manageUserState: state.userGroupReducer.manageUserResponse,\n orders: state.orderReducer.searchClient,\n});\n\nconst dispatchProps = {\n resetPasswordDispatch: resetPasswordAsync.request,\n removeErrorDispatch: removeError,\n reinitSubscriptionEmailDispatch: reinitSubscriptionEmailAsync.request,\n removeReinitSubscriptionMessageDispatch: removeReinitSubscriptionMessage,\n transferGetContractDispatch: transferGetContractAsync.request,\n transferContractDispatch: transferContractAsync.request,\n resetResponse,\n resetResponseTransfer,\n resetGroupListResponse,\n adminClientSpaceAsyncDispatch: adminClientSpaceAsync.request,\n resetAdminClientSpaceResponse,\n resetManageUserResponse,\n resetCreateUserResponse,\n};\n\ntype Props = {\n searchUserGroup: (props: TUserPayload) => void;\n manageUser: (props: IPayloadManageUser) => void;\n handleReset?: () => void;\n userList: TUser[];\n groupList: string[];\n createUser: (props: IPayloadUser) => void;\n createUserResponse: TResponse;\n resetCreateUserResponse: () => void;\n resetGroupResponse: () => void;\n resetGroupListResponse: () => void;\n adminClientSpaceAsyncDispatch: (props: TUserPayload) => void;\n administrationList: TUser[];\n resetAdminClientSpaceResponse: () => void;\n administrationError: string;\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\ntype State = {\n showDropdown: boolean;\n currentItem: number;\n currentEmail: string;\n idClient: string;\n currentUser: any;\n subscriptionSendEmail: string;\n};\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\nclass CustomerContractContainer extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n showDropdown: false,\n currentItem: -1,\n currentEmail: '',\n idClient: '',\n currentUser: '',\n subscriptionSendEmail: '',\n };\n this.openClient = this.openClient.bind(this);\n }\n\n componentDidMount() {\n window.onscroll = () => onScroll();\n\n const header = document.getElementsByClassName('rt-thead')[0];\n\n const onScroll = () => {\n if (window.pageYOffset > 280) {\n if (header) header.classList.add('sticky');\n } else {\n if (header) header.classList.remove('sticky');\n }\n };\n }\n\n prepareColumns = () => {\n const { schemaProps } = this.props;\n return [\n {\n Header: withTriangle(Wording.customerId),\n accessor: 'id',\n filterable: false,\n width: 150,\n },\n {\n Header: withTriangle(Wording.companyName),\n accessor: 'company.companyName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientFirstName),\n accessor: 'individual',\n filterable: false,\n Cell: ({ value }: any) => {\n if (value) {\n const {\n firstName,\n lastName,\n } = value as TCustomerIndividual;\n return (\n <MessageCollapse\n message={`${firstName} ${lastName}`}\n initialLength={17}\n />\n );\n }\n return '';\n },\n },\n {\n Header: withTriangle(Wording.address),\n accessor: 'address',\n filterable: false,\n Cell: ({ value }: any) => {\n if (value) {\n const {\n // tslint:disable-next-line:variable-name\n number,\n street,\n city,\n } = value as TAddress;\n\n return (\n <MessageCollapse\n message={`${number} ${street} ${city}`}\n initialLength={19}\n />\n );\n }\n return '';\n },\n },\n {\n Header: withTriangle(Wording.invoiceId),\n accessor: 'contact.phone1',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.email),\n accessor: 'contact.email',\n filterable: false,\n },\n {\n Header: Wording.see_customer,\n accessor: 'voir client',\n filterable: false,\n show: isHaveActionsPermission(schemaProps),\n width: 95,\n Cell: ({ original }: any) => (\n <CustomButton\n color=\"black\"\n title={Wording.see_customer}\n onClick={() => this.openClient(original)}\n />\n ),\n },\n {\n Header: '',\n accessor: '',\n filterable: false,\n show: isHaveActionsPermission(schemaProps),\n width: 40,\n Cell: (original: any) => {\n return (\n <div>\n <img\n className=\"menu-style\"\n src={resources['ic-menu-orange']}\n alt=\"ic-menu\"\n onClick={() => {\n this.setCurrentEmail(\n _.get(\n original.original,\n 'contact.email',\n '',\n ),\n );\n this.handleButtonDropdown(\n original.viewIndex,\n original,\n );\n }}\n />\n {this.state.showDropdown &&\n this.state.currentItem ===\n original.viewIndex && (\n <OutsideClickClass\n callback={() =>\n this.setState({\n showDropdown: false,\n })\n }\n >\n <div className=\"pop-up\">\n <ResetPasswordButton\n email={_.get(\n original.original,\n 'contact.email',\n '',\n )}\n resetPasswordDispatch={\n this.props\n .resetPasswordDispatch\n }\n />\n\n <ReinitSubscriptionEmailButton\n customerNbr={_.get(\n original,\n 'original.id',\n '',\n )}\n defaultEmail={_.get(\n original.original,\n 'contact.email',\n '',\n )}\n handleSubscriptionSendEmail={\n this\n .handleSubscriptionSendEmail\n }\n reinitSubscriptionEmailDispatch={\n this.props\n .reinitSubscriptionEmailDispatch\n }\n />\n <p\n onClick={() => {\n this.props.adminClientSpaceAsyncDispatch(\n {\n userName: _.get(\n original,\n 'original.id',\n '',\n ),\n email: '',\n firstName: '',\n lastName: '',\n group: '',\n userStatus: '',\n },\n );\n }}\n >\n {Wording.admin_client_space}\n </p>\n </div>\n </OutsideClickClass>\n )}\n </div>\n );\n },\n },\n ];\n };\n\n setCurrentEmail = (email: string) => {\n this.setState({ currentEmail: email });\n };\n\n openClient(original: { id: string } | string) {\n let clientId: string = '';\n if (typeof original === 'string') {\n clientId = original;\n } else {\n clientId = _.get(original, 'id', '');\n }\n const queryParams = new Map([['client', clientId]]);\n window.open(getHost(queryParams));\n }\n\n handleSubscriptionSendEmail = (subscriptionSendEmail: string) => {\n this.setState({ subscriptionSendEmail });\n };\n handleIdClientInput = (e: ChangeEvent<HTMLInputElement>) => {\n this.setState({ idClient: e.target.value });\n };\n\n renderResetPasswordModal = () => {\n const {\n authState: { error },\n } = this.props;\n if (error !== undefined && error !== Wording.no_error && error !== '') {\n return (\n <CustomModal\n show={error !== undefined && error !== Wording.no_error}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"reset-modal\">\n <p className=\"warning-title\">{Wording.error_message}</p>\n <p className=\"message\">{Wording.try_again_message}</p>\n <div className=\"reset-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n color=\"orange\"\n title=\"Retour\"\n />\n <CustomButton\n color=\"gray\"\n title=\"Réessayer\"\n onClick={() => {\n this.props.resetPasswordDispatch({\n email: this.state.currentEmail,\n });\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n\n if (error === '') {\n return (\n <CustomModal show={error === ''}>\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n >\n {'X'}\n </span>\n <div className=\"reset-modal\">\n <div className=\"warning-title\">\n {'Réinitialisation de mot de passe'}\n </div>\n <span>\n <p>{Wording.success_message}</p>\n </span>\n\n <div className=\"reset-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n color=\"orange\"\n title=\"Fermer\"\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n };\n\n renderReinitSubscriptionEmailModal = () => {\n const {\n authState: { reinit, error },\n } = this.props;\n\n if (error === Wording.error_code) {\n return (\n <CustomModal show={error === Wording.error_code}>\n <div className=\"reinit-modal\">\n <p className=\"success_message\">{error}</p>\n <div className=\"reinit-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeErrorDispatch();\n }}\n color=\"orange\"\n title=\"Fermer\"\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n if (reinit === Wording.success_code) {\n return (\n <CustomModal show={reinit === Wording.success_code}>\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.removeReinitSubscriptionMessageDispatch();\n }}\n >\n {'X'}\n </span>\n\n <div className=\"reinit-modal\">\n <div className=\"warning-title\">\n {'Renvoyer un mail de bienvenue'}\n </div>\n <p className=\"success_message\">\n {Wording.reinit_success_message}\n </p>\n <p className=\"email\">\n {this.state.subscriptionSendEmail}\n </p>\n <p className=\"advice\">{Wording.advice_message}</p>\n <div className=\"reinit-modal__buttons\">\n <CustomButton\n onClick={() => {\n this.props.removeReinitSubscriptionMessageDispatch();\n }}\n color=\"orange\"\n title=\"Fermer\"\n />\n </div>\n </div>\n </CustomModal>\n );\n }\n };\n\n handleButtonDropdown = (original: number, currentUser: any) => {\n this.setState({\n showDropdown: !this.state.showDropdown,\n currentItem: original,\n currentUser,\n });\n };\n\n enableOrDessableUserResponseModal = (code: string, message: string) => {\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n this.props.resetManageUserResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"enable-user-modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.succesMessage\n : Wording.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n color={'orange'}\n onClick={() => {\n this.props.resetManageUserResponse();\n }}\n />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n downloadDataTable = (allCustomerContract: any[]) => {\n const { schemaProps } = this.props;\n\n return isHaveActionsPermission(schemaProps)\n ? {\n downloadData: allCustomerContract,\n downloadHeaders: headers,\n downloadButtonTitle: Wording.download_csv,\n }\n : {};\n };\n\n render() {\n const {\n orders,\n transferState: { transferContract, transferContractResponse },\n transferContractDispatch,\n authState: { userId },\n resetResponseTransfer,\n schemaProps,\n } = this.props;\n const { code, message } = this.props.manageUserState;\n\n const customers: TCustomer[] = [\n ...orders.order.map(it => {\n const {\n order: { customer },\n } = it;\n return {\n address: {\n box: '',\n city: customer.contact.address.townName || '',\n countryIso: '',\n number: customer.contact.address.number || '',\n postalCode: Number(\n customer.contact.address.postalCode,\n ).toString(),\n street: customer.contact.address.street,\n },\n company: {\n companyName: customer.contact.companyName,\n id: '',\n identificationNumber: '',\n legalForme: '',\n naceCode: '',\n vatable: '',\n vatNumber: '',\n },\n contact: {\n email: customer.contact.email,\n fax: '',\n id: customer.customerNumber,\n phone1: customer.contact.phone,\n phone2: '',\n phone3: '',\n },\n customerCategory: '',\n customerType: customer.type,\n id: customer.customerNumber,\n individual: {\n civility: customer.contact.civility,\n dateOfBirth: customer.contact.birthdate,\n firstName: customer.contact.firstName,\n id: customer.customerNumber,\n lastName: customer.contact.lastName,\n placeOfBirth: customer.contact.birthTown\n ? {\n box: '',\n city: customer.contact.birthTown.townName,\n countryIso: '',\n number: customer.contact.birthTown.number,\n postalCode:\n customer.contact.birthTown.postalCode,\n street: customer.contact.birthTown.street,\n }\n : undefined,\n },\n language: '',\n perimeters: [],\n status: ECustomerStatus.CUSTOMER, // TODO not fetched data by order.\n contracts: it.order.contracts.map(itr => ({\n ...itr,\n status: it.order.orderStatus,\n })),\n } as TCustomer;\n }),\n ];\n\n return (\n <div className=\"customer-contract-container\">\n {this.renderResetPasswordModal()}\n\n <ErrorElement error={orders.message} />\n\n {this.renderReinitSubscriptionEmailModal()}\n {this.enableOrDessableUserResponseModal(code, message)}\n\n <AdministrationClientSpace\n groupList={this.props.groupList}\n schemaProps={schemaProps}\n createUser={this.props.createUser}\n createUserResponse={this.props.createUserResponse}\n resetCreateUserResponse={this.props.resetCreateUserResponse}\n resetGroupListResponse={this.props.resetGroupListResponse}\n manageUser={this.props.manageUser}\n administrationList={this.props.administrationList}\n resetAdminClientSpaceResponse={\n this.props.resetAdminClientSpaceResponse\n }\n error={this.props.administrationError}\n currentUser={this.state.currentUser}\n manageUserResponse={this.props.manageUserState}\n resetManageUserResponse={this.props.resetManageUserResponse}\n />\n\n {isEmpty(customers) && (\n <BackgroundElement>\n <CustomTable\n columns={this.prepareColumns()}\n data={customers}\n className=\"-striped -highlight\"\n showPagination={true}\n filterable={false}\n SubComponent={({ original, index }: any) => {\n return (\n <SubComponent\n customer={original as TCustomer}\n index={index}\n transferError={\n this.props.transferState.error\n }\n schemaProps={schemaProps}\n transferCustomerContract={\n this.props\n .transferGetContractDispatch\n }\n transferContract={transferContract}\n error={this.props.transferState.error!!}\n resetResponse={this.props.resetResponse}\n transferContractDispatch={\n transferContractDispatch\n }\n userId={userId || ''}\n transferContractResponse={\n transferContractResponse\n }\n resetResponseTransfer={\n resetResponseTransfer\n }\n />\n );\n }}\n {...this.downloadDataTable(customers)}\n />\n </BackgroundElement>\n )}\n </div>\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(CustomerContractContainer);\n","import CustomerContractContainer from './CustomerContractContainer';\n\nexport default CustomerContractContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState, TSchemaProps } from 'Types';\nimport SearchContainer from '../../../containers/admin/SearchContainer';\nimport CustomerContractContainer from '../../../containers/admin/CustomerContractContainer';\nimport { manageUserAsync } from '../../../_actions/manageUser.actions';\nimport { searchUserGroupAsync } from '../../../_actions/searchUserGroup.actions';\nimport { createUserAsync } from '../../../_actions/createUser.actions';\nimport { resetGroupResponse } from '../../../_actions/createGroup.actions';\nimport { getGroupAsync } from '../../../_actions/getGroup.actions';\n\nconst mapStateToProps = (state: RootState) => ({\n groupListState: state.userGroupReducer.groupList,\n manageUserState: state.userGroupReducer.createUserResponse,\n orders: state.orderReducer.searchClient.order,\n schema: state.authReducer.autorizationsScheme,\n});\n\nconst dispatchProps = {\n manageUserAsyncDispatch: manageUserAsync.request,\n searchUserGroupAsyncDispatch: searchUserGroupAsync.request,\n createUserAsyncDispatch: createUserAsync.request,\n getGroupAsyncDispatch: getGroupAsync.request,\n resetGroupResponse,\n};\n\ntype Props = {\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\nconst CustomerContracterPage: React.FC<Props> = ({\n groupListState,\n schemaProps,\n manageUserAsyncDispatch,\n searchUserGroupAsyncDispatch,\n createUserAsyncDispatch,\n manageUserState,\n}) => {\n return (\n <div className=\"search-container\">\n <SearchContainer\n schemaProps={schemaProps}\n groupList={groupListState}\n />\n\n <CustomerContractContainer\n manageUser={manageUserAsyncDispatch}\n searchUserGroup={searchUserGroupAsyncDispatch}\n groupList={groupListState}\n createUser={createUserAsyncDispatch}\n createUserResponse={manageUserState}\n schemaProps={schemaProps}\n resetGroupResponse={resetGroupResponse}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(CustomerContracterPage);\n","import CustomerContractPage from './CustomerContractPage';\n\nexport default CustomerContractPage;\n","import React, { useRef, useState } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n Group,\n CustomModal,\n} from '../../../components';\nimport CustomDate from '../../../components/admin/CustomDate';\nimport {\n getDateFormatted,\n getSelectOptionValue,\n isLimitedAuthorization,\n isMixedAuthorization,\n} from '../../../utils/helpers';\nimport { TOrderPayload } from '../../../_actions/searchOrder.actions';\nimport _ from 'lodash';\nimport { isObject } from 'util';\nimport { CSVLink } from 'react-csv';\nimport { getCasesHistory } from '../../../utils/network/request';\nimport * as RequestErrors from '../../../utils/network/errors';\nimport Modal from '../../../components/Modal';\nimport { casesExtractAsync } from '../../../_actions/auth.actions';\nimport { connect } from 'react-redux';\n\nconst Wording = WordingConstant.SearchCaseContainer;\n\nconst situationStatus: Array<SelectOption<any>> = [\n { id: '0', label: 'CHF', value: 'SWITCH' },\n { id: '1', label: 'MES', value: 'MOVE_IN' },\n];\n\ntype Props = {\n fetchOrder: (props: TOrderPayload) => void;\n groupList: string[];\n schemaProps: TSchemaProps;\n userId: string | undefined;\n userLimited: string | undefined;\n} & typeof dispatchProps;\n\nconst mapStateToProps = () => ({});\nconst dispatchProps = {\n casesExtractRequestDispatch: casesExtractAsync.request,\n casesExtractSuccessDispatch: casesExtractAsync.success,\n casesExtractFailureDispatch: casesExtractAsync.failure,\n};\n\nconst SearchCaseContainer: React.FC<Props> = ({\n fetchOrder,\n userId,\n userLimited,\n groupList,\n schemaProps,\n casesExtractFailureDispatch,\n casesExtractRequestDispatch,\n casesExtractSuccessDispatch,\n}) => {\n const isDisabledActionBtn = isLimitedAuthorization(schemaProps);\n const isMixed = isMixedAuthorization(schemaProps);\n const csvLinkRef = useRef<\n CSVLink & HTMLAnchorElement & { link?: HTMLAnchorElement }\n >();\n\n const [showErrorModal, setShowErrorModal] = useState(false);\n const [CSVHeaders, setCSVHeaders] = useState<\n Array<{ label: string; key: string }>\n >([{ label: 'toto', key: 'key' }]);\n const [CSVData, setCSVData] = useState<any[]>([{ oui: 'oui', non: 'non' }]);\n\n const renderDefaultGroup = () => {\n const defaultVal = {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n };\n\n if (isMixed) {\n return [defaultVal];\n }\n\n return isDisabledActionBtn ? defaultVal : '';\n };\n\n const isLimited = userLimited ? userLimited === 'LIMITED' : false;\n\n const [caseId, setCaseId] = useState<null | string>(null || '');\n const [clientLastName, setclientLastName] = useState<null | string>(\n null || '',\n );\n const [clientFirstName, setClientFirstName] = useState<null | string>(\n null || '',\n );\n const [refExt, setRefExt] = useState<null | string>(null || '');\n const [customerPhone, setCustomerPhone] = useState<null | string>(\n null || '',\n );\n const [customerEmail, setCustomerEmail] = useState<null | string>(\n null || '',\n );\n const [createdBy, setCreatedBy] = useState<null | string>(\n isLimited ? userId || '' : null || '',\n );\n\n const [customerGroup, setCustomerGroup] = useState<\n '' | SelectOption<string> | Array<SelectOption<string>>\n >(renderDefaultGroup());\n\n const [customerSituation, setCustomerSituation] = useState<\n '' | SelectOption<string>\n >('');\n\n const [fromDate, setFrom] = useState<undefined | Date>(undefined);\n const [toDate, setTo] = useState<undefined | Date>(undefined);\n\n const [showGroupErrorMesage, setShowErroGroup] = useState(false);\n\n const renderValueGroup = () => {\n if (isDisabledActionBtn) {\n return (customerGroup as SelectOption<string>).value;\n }\n\n if (customerGroup !== '' && isObject(customerGroup)) {\n return (customerGroup as Array<SelectOption<string>>).map(\n (obj: SelectOption<string>) => obj.value,\n );\n }\n\n return '';\n };\n\n const groupeValue = renderValueGroup();\n\n const groupeCondition = groupeValue !== '' && groupeValue.length !== 0;\n\n const searchCondition =\n caseId !== '' ||\n clientFirstName !== '' ||\n clientLastName !== '' ||\n refExt !== '' ||\n createdBy !== '' ||\n fromDate !== undefined ||\n toDate !== undefined ||\n customerEmail !== '' ||\n customerSituation !== '' ||\n customerPhone !== '';\n\n const mainCondition = isMixed\n ? groupeCondition\n : searchCondition || groupeCondition;\n\n const elementMap = {\n caseId: {\n text: Wording.num_case,\n value: caseId,\n onInputChange: (e: InputEvent) => setCaseId(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCaseId(''),\n },\n\n to: {\n text: '',\n selectedDay: toDate,\n handleDayChange: (date: Date) => setTo(date),\n deleteButton: true,\n deleteButtonOnClick: () => setTo(undefined),\n },\n\n from: {\n text: '',\n selectedDay: fromDate,\n handleDayChange: (date: Date) => setFrom(date),\n deleteButton: true,\n deleteButtonOnClick: () => setFrom(undefined),\n },\n\n customerGroup: {\n id: 'group',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n\n withSelectAll: true,\n\n handleChangeSelect: (group: any) => {\n setCustomerGroup(group);\n if (isMixed) setShowErroGroup(false);\n },\n error:\n isMixed && !groupeCondition && showGroupErrorMesage\n ? 'Veuillez sélectionner un Groupe'\n : undefined,\n value: customerGroup,\n text: Wording.group,\n placeholder: ' ',\n isMulti: true,\n schemaProps,\n },\n\n clientFirstName: {\n text: Wording.clientFirstName,\n value: clientFirstName,\n onInputChange: (e: InputEvent) =>\n setClientFirstName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setClientFirstName(''),\n },\n\n clientLastName: {\n text: Wording.clientLastName,\n value: clientLastName,\n onInputChange: (e: InputEvent) =>\n setclientLastName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setclientLastName(''),\n },\n\n customerSituation: {\n id: 'situation',\n defaultValue: '',\n placeholder: 'Sélectionner',\n options: situationStatus,\n handleChangeSelect: (situation: SelectOption<string>) => {\n setCustomerSituation(situation);\n },\n value: customerSituation,\n text: Wording.situation,\n },\n\n refExt: {\n text: Wording.client_ref,\n value: refExt,\n onInputChange: (e: InputEvent) => setRefExt(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setRefExt(''),\n },\n\n customerPhone: {\n text: Wording.clientPhoneNbr,\n value: customerPhone,\n onInputChange: (e: InputEvent) =>\n setCustomerPhone(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerPhone(''),\n },\n\n customerEmail: {\n text: Wording.email,\n value: customerEmail,\n onInputChange: (e: InputEvent) =>\n setCustomerEmail(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerEmail(''),\n },\n createdBy: {\n text: Wording.createdBy,\n value: createdBy,\n onInputChange: (e: InputEvent) =>\n setCreatedBy(e.currentTarget.value),\n isLocked: isLimited,\n deleteButton: !isLimited,\n deleteButtonOnClick: () => setCreatedBy(''),\n },\n\n btn_validate: {\n title: Wording.btn_validate,\n color: mainCondition ? 'orange' : 'gray',\n small: true,\n onClick: () => {\n if (mainCondition) {\n fetchOrder({\n fromDate: getDateFormatted(fromDate),\n toDate: getDateFormatted(toDate),\n email: customerEmail,\n orderNumber: caseId,\n firstName: clientFirstName,\n lastName: clientLastName,\n externalReference: refExt,\n processType: getSelectOptionValue(\n customerSituation as SelectOption<string>,\n ),\n\n channel: groupeValue,\n phone: customerPhone,\n createdBy,\n });\n\n setShowErroGroup(false);\n return;\n }\n\n if (isMixed && !groupeCondition) {\n setShowErroGroup(true);\n }\n },\n },\n\n btn_reset: {\n title: Wording.button_reset,\n small: true,\n color: 'gray',\n onClick: () => {\n setCaseId('');\n setclientLastName('');\n setClientFirstName('');\n setRefExt('');\n setFrom(undefined);\n setTo(undefined);\n setCustomerPhone('');\n setCustomerEmail('');\n setCustomerSituation('');\n setCreatedBy('');\n setShowErroGroup(false);\n\n if (!isDisabledActionBtn) {\n setCustomerGroup('');\n }\n },\n },\n };\n\n const getHistoryCSVHeaders = (headersArray: [string]) => {\n const headers: Array<{ label: string; key: string }> = [];\n headersArray.map(header => {\n const newHeader = { label: '', key: '' };\n newHeader.label = header;\n newHeader.key = header;\n headers.push(newHeader);\n });\n return headers;\n };\n\n const getHistoryCSVData = (splittedData: string[]) => {\n const headers = splittedData[0].split(',');\n splittedData.shift();\n const data = splittedData.map(row => {\n const splittedRow = row.split(',');\n const newObject: any = {};\n splittedRow.map((elem, index) => {\n return (newObject[`${headers[index]}`] = elem);\n });\n return newObject;\n });\n return data;\n };\n\n const prepareHistoryDownload = async () => {\n casesExtractRequestDispatch(null);\n const rawData: any = await getCasesHistory();\n if (!rawData) {\n casesExtractFailureDispatch(null);\n setShowErrorModal(true);\n return null;\n }\n if (rawData instanceof RequestErrors.RequestError) {\n dispatchProps.casesExtractFailureDispatch(null);\n setShowErrorModal(true);\n return null;\n }\n const parsedData = JSON.parse(JSON.stringify(rawData));\n const splittedData = parsedData.data.split('\\n');\n\n const headers = getHistoryCSVHeaders(splittedData[0].split(','));\n const data = getHistoryCSVData(splittedData);\n\n setCSVData(data);\n setCSVHeaders(headers);\n if (csvLinkRef && csvLinkRef.current && csvLinkRef.current.link) {\n dispatchProps.casesExtractSuccessDispatch(null);\n csvLinkRef.current.link.click();\n }\n return { headers, data };\n };\n\n const className = 'custom-table__downloadLink';\n const filename = 'cases_history.csv';\n return (\n <div className=\"search-case-container\">\n <div className=\"search-case-container__container\">\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.caseId} />\n <label>{Wording.from}</label>\n <CustomDate {...elementMap.from} />\n <Group {...elementMap.customerGroup} />\n {schemaProps.currentGroup === 'ADMIN' && (\n <div className={'download-button'}>\n <CustomButton\n title={\"Télécharger l'historique\"}\n color={'orange'}\n onClick={prepareHistoryDownload}\n />\n </div>\n )}\n </div>\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientLastName} />\n <label>{Wording.to}</label>\n <CustomDate {...elementMap.to} />\n <CustomSelect {...elementMap.customerSituation} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.clientFirstName} />\n <CustomInput {...elementMap.refExt} />\n <CustomInput {...elementMap.createdBy} />\n </div>\n\n <div className=\"search-case-container__block\">\n <CustomInput {...elementMap.customerPhone} />\n <CustomInput {...elementMap.customerEmail} />\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_reset} />\n\n <CustomButton {...elementMap.btn_validate} />\n </div>\n <CSVLink\n ref={csvLinkRef as any}\n className={className}\n data={CSVData}\n filename={filename}\n separator={','}\n headers={CSVHeaders}\n asyncOnClick={true}\n ></CSVLink>\n <CustomModal show={showErrorModal}>\n <span\n className=\"btn-close\"\n onClick={() => {\n setShowErrorModal(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {WordingConstant.Errors.default}\n </p>\n\n <p className=\"message\">Veuillez reessayer</p>\n <div className=\"search-rs-vl-btn\">\n <CustomButton\n title={'Fermer'}\n onClick={() => {\n setShowErrorModal(false);\n }}\n color={'orange'}\n />\n </div>\n </div>\n </CustomModal>\n </div>\n </div>\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(SearchCaseContainer);\n","import SearchCaseContainer from './SearchCaseContainer';\n\nexport default SearchCaseContainer;\n","import React from 'react';\nimport resources from '../../../utils/resources';\n\nexport type Props = {\n value?: string;\n onChange: any;\n allResultText: string;\n options: any[];\n};\n\nconst compareSortSelect = (a: any, b: any) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0;\n\nconst FilterSelect: React.FC<Props> = ({\n allResultText,\n value,\n onChange,\n options,\n}) => (\n <div className=\"filter-select\">\n <img src={resources['ic-filter-symbol']} alt=\"ic-filter-symbol\" />\n\n <select value={value} onChange={onChange}>\n <option value=\"all\">{allResultText}</option>\n {options\n .sort(compareSortSelect)\n .map(({ value, label }, index: number) => (\n <option key={index} value={value}>\n {label}\n </option>\n ))}\n </select>\n </div>\n);\n\nexport default FilterSelect;\n","import FilterSelect from './FilterSelect';\n\nexport default FilterSelect;\n","import React, { useState, useEffect } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport { TResponse } from 'Models';\n\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n CustomModal,\n CustomRadio,\n Group,\n} from '../../../components';\n\nimport {\n isValidName,\n isValidString,\n isValidEmail,\n isEmptySelectOption,\n getSelectOptionValue,\n formatFirstNameString,\n} from '../../../utils/helpers';\nimport { EResponseCode } from '../../../utils/enums';\nimport _ from 'lodash';\n\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n userName?: string;\n}\n\nimport accents from 'remove-accents';\n\nconst Wording = WordingConstant.UserAdministrationResult;\n\ntype Props = {\n retryFirstPaymentResponse: TResponse;\n resetRetryFirstPaymentResponse: () => void;\n};\n\nfunction getFirstNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getLastNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.lastNameValidity;\n }\n return error;\n}\n\nfunction getMailAddressError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidEmail(value)) {\n error = Wording.CreateUserModal.errors.mailAddressValidity;\n }\n return error;\n}\n\nfunction getCivilityError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getGroupError(value: string | SelectOption<any>): string {\n let error = '';\n if (!isEmptySelectOption(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n }\n return error;\n}\n\nfunction getUserNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.emptyField;\n } else if (!isValidName(value, true)) {\n error = Wording.CreateUserModal.errors.userNameValidity;\n }\n return error;\n}\n\nfunction getClientNumberError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateUserModal.errors.clientNumberValidity;\n }\n return error;\n}\n\nconst RetryFirstPaymentModal: React.FC<Props> = ({\n retryFirstPaymentResponse,\n resetRetryFirstPaymentResponse,\n}) => {\n\n const { code, message } = retryFirstPaymentResponse;\n\n const elementMap = {\n\n btn_hide_modal: {\n title: Wording.hideModal,\n color: 'gray',\n small: true,\n onClick: () => {\n resetRetryFirstPaymentResponse();\n },\n },\n };\n\n const createUsermodalResponse = () => {\n const { code, message } = retryFirstPaymentResponse;\n\n return (\n <CustomModal\n show={code && message !== Wording.errorMessage ? true : false}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n resetRetryFirstPaymentResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_hide_modal} />\n </div>\n </div>\n </CustomModal>\n );\n };\n\n return (\n <>\n {code &&\n message !== Wording.errorMessage &&\n createUsermodalResponse()}\n </>\n );\n};\n\nexport default RetryFirstPaymentModal;\n","import React, { Component } from 'react';\nimport { RootState, TSchemaProps } from 'Types';\nimport { connect } from 'react-redux';\nimport { BackgroundElement, CustomButton } from '../../../components';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport WordingConstant from '../../../utils/wording.json';\nimport { TOrder, TResponse } from 'Models';\nimport {\n getHost,\n isEmpty,\n isHaveActionsPermission,\n getFormattedDate,\n} from '../../../utils/helpers';\nimport SubComponent from './SubComponent';\nimport _ from 'lodash';\nimport { resetGroupListResponse } from '../../../_actions/getGroup.actions';\nimport ErrorElement from '../../../components/ErrorElement';\nimport { withTriangle } from '../../../components/admin/CustomTable/CustomTable';\nimport Status from '../../../components/admin/Status';\nimport FilterSelect from '../../../components/admin/FilterSelect';\nimport MessageCollapse from '../../../components/admin/MessageCollapse';\nimport { EEnergy } from '../../../utils/enums';\nimport {\n TRetryPaymentPayload,\n retryFirstPayment,\n} from '../../../_actions/caseResult.action';\nimport RetryFirstPaymentModal from './RetryFirstPaymentModal';\nimport { saveOrder } from '../../../utils/network/request';\nimport { RequestError } from '../../../utils/network/errors';\n\nconst Wording = WordingConstant.Caseresult;\nconst WordingMapping = WordingConstant.mapping;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n errorMessage: state.orderReducer.message,\n});\n\nconst dispatchProps = { resetGroupListResponse };\n\ntype Props = {\n order: Array<{ channel: string; order: TOrder }>;\n schemaProps: TSchemaProps;\n resetGroupListResponse: () => void;\n getGroup: () => void;\n retryFirstPayment: (props: TRetryPaymentPayload) => void;\n retryFirstPaymentState: string;\n retryFirstPaymentResponse: TResponse;\n resetFirstPayment: any;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\ntype State = {\n emailSubscriptionResent: boolean;\n message: string;\n orderNumber: string;\n};\n\nconst headers = [\n { label: 'Groupe', key: 'channel' },\n { label: 'N° de contrat', key: 'contractNumber' },\n { label: 'N° affaire', key: 'orderReference' },\n { label: 'code agent', key: 'createdBy' },\n { label: 'status', key: 'orderStatus' },\n { label: 'Paiement CB', key: 'firstPaymentCBStatus' },\n // { label: 'Code erreur', key: 'errorCode' },\n { label: 'Nom sociéte', key: 'companyName' },\n { label: 'Nom', key: 'lastName' },\n { label: 'Prénom', key: 'firstName' },\n { label: 'Mail', key: 'email' },\n { label: 'Rue', key: 'address.street' },\n { label: 'Ville', key: 'address.townName' },\n { label: 'Code postal', key: 'address.postalCode' },\n { label: 'N° téléphone', key: 'phone' },\n { label: 'Type de contrat', key: 'contractType' },\n { label: 'Date de soucription', key: 'subscriptionDate' },\n { label: 'Date théorique de contrat', key: 'effectiveStartDate' },\n { label: 'Situation', key: 'situation' },\n { label: 'Capacité', key: 'contractualCapacity' },\n { label: 'Puissance', key: 'contractualCapacityUnit' },\n { label: 'Catégorie Gaz', key: 'contractCategory' },\n];\n\nclass CaseResult extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n emailSubscriptionResent: false,\n message: '',\n orderNumber: '',\n };\n }\n\n prepareColumns = (order: any) => {\n const { schemaProps } = this.props;\n const yourCondition = true;\n const selectedWording = yourCondition\n ? Wording.firstPaymentCBStatus\n : Wording.firstPaymentSlimCollectStatus;\n return [\n {\n Header: withTriangle(Wording.group),\n accessor: 'channel',\n\n filterMethod: (filter: any, row: any) => {\n return row.channel\n ? row.channel.includes(filter.value)\n : false;\n },\n },\n {\n Header: withTriangle(Wording.caseNbr),\n accessor: 'order.orderReference',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.agentCode),\n accessor: 'order.createdBy',\n\n filterMethod: (filter: any, row: any) => {\n return row['order.createdBy']\n ? row['order.createdBy'].includes(filter.value)\n : false;\n },\n },\n {\n Header: withTriangle(Wording.souscriptionCode),\n accessor: 'order.contracts[0].subscriptionDate',\n Cell: ({ value }: any) => getFormattedDate(value),\n filterMethod: (filter: any, row: any) => {\n return row['order.contracts[0].subscriptionDate']\n ? row['order.contracts[0].subscriptionDate'].includes(\n filter.value,\n )\n : false;\n },\n },\n {\n Header: withTriangle(Wording.status),\n accessor: 'order.orderStatus',\n Cell: ({ value }: any) => {\n return value !== undefined && value !== '' ? (\n <Status status={value} type=\"orderStatus\" />\n ) : null;\n },\n\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row['order.orderStatus'] === filter.value;\n },\n\n Filter: ({ filter, onChange }: any) => (\n <FilterSelect\n allResultText={'Tous'}\n onChange={(event: any) =>\n onChange(event.currentTarget.value)\n }\n value={filter ? filter.value : 'all'}\n options={WordingMapping.orderStatus}\n />\n ),\n },\n\n {\n Header: withTriangle(selectedWording),\n accessor: 'order',\n Cell: ({ value }: any) => {\n if (!value) {\n return null;\n }\n if (value.orderStatus !== 'FINALIZED') {\n return null;\n }\n if (value.customer.typePayment === 'SDD') {\n return <Status \n type={'paymentSDD'}\n status={'PAYMENT_SDD'}\n />\n }\n if (value.firstPaymentCBStatus) {\n return (\n <Status\n status={value.firstPaymentCBStatus}\n type={'firstPaymentCBStatus'}\n />\n );\n } else if (value.firstPaymentSlimCollectStatus) {\n return (\n <Status\n status={value.firstPaymentSlimCollectStatus}\n type={'firstPaymentSlimCollectStatus'}\n />\n );\n } else {\n return null;\n }\n },\n Filter: ({ filter, onChange }: any) => (\n <FilterSelect\n allResultText={'Tous'}\n onChange={(event: any) =>\n onChange(event.currentTarget.value)\n }\n value={filter ? filter.value : 'all'}\n options={WordingMapping.firstPaymentSlimCollectStatus}\n />\n ),\n },\n {\n Header: withTriangle(Wording.clientLastName),\n accessor: 'order.customer.contact.lastName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientFirstName),\n accessor: 'order.customer.contact.firstName',\n filterable: false,\n },\n // {\n // Header: withTriangle(Wording.address),\n // accessor: 'order.customer.contact.address',\n // filterable: false,\n // Cell: ({ value }: any) => {\n // return value !== undefined ? (\n // <MessageCollapse\n // initialLength={12}\n // message={`${value.street} ${value.postalCode} ${value.townName}`}\n // />\n // ) : null;\n // },\n // },\n {\n Header: withTriangle(Wording.clientPhoneNbr),\n accessor: 'order.customer.contact.phone',\n filterable: false,\n },\n {\n accessor: 'voir client',\n filterable: false,\n show: isHaveActionsPermission(schemaProps),\n width: 95,\n Cell: ({ original }: any) => (\n <CustomButton\n color={'black'}\n title={Wording.seeCustomer}\n onClick={() => {\n const orderNumber: string | undefined = _.get(\n original as TOrder,\n 'order.orderReference',\n );\n if (!!orderNumber) {\n const host = getHost(\n new Map([['orderNumber', orderNumber]]),\n ['case'],\n );\n window.open(host);\n }\n }}\n />\n ),\n },\n {\n Header: Wording.sendActivationTitle,\n filterable: false,\n filterMethod: (filter: any, row: any) => {\n this.hasFailedPayment(row);\n return row['order.firstPaymentCBStatus']\n ? row['order.firstPaymentCBStatus'].includes(\n filter.value,\n )\n : false;\n },\n width: 150,\n Cell: ({ original }: any) => {\n if (original.order.orderStatus === 'IN_PROGRESS') {\n return (\n <>\n <CustomButton\n color={'black'}\n title={Wording.sendFinalizeOrder}\n onClick={async () => {\n const res = await saveOrder(\n original.channel,\n original.order,\n );\n if (res instanceof RequestError) {\n this.setState({\n message: res.message,\n emailSubscriptionResent: true,\n orderNumber:\n original.order\n .orderReference,\n });\n setTimeout(() => {\n this.setState({\n emailSubscriptionResent: false,\n });\n }, 10000);\n } else {\n this.setState({\n message: `mail envoyé de nouveau`,\n emailSubscriptionResent: true,\n orderNumber: res.orderNumber,\n });\n setTimeout(() => {\n this.setState({\n emailSubscriptionResent: false,\n });\n }, 10000);\n }\n }}\n />\n <br />\n {this.state.emailSubscriptionResent &&\n this.state.orderNumber ===\n original.order.orderReference && (\n <span\n style={{\n fontSize: '10px',\n wordWrap: 'normal',\n whiteSpace: 'normal',\n }}\n >\n {this.state.message}\n </span>\n )}\n </>\n );\n }\n if (\n original.order.orderStatus === 'FINALIZED' ||\n original.order.orderStatus === 'FINALIZED_WITHOUT_DOC'\n ) {\n if (!this.hasFailedPayment(original.order)) {\n return null;\n }\n if(original.order.customer.typePayment === 'SDD') {\n return null;\n }\n return (\n <CustomButton\n color={'black'}\n title={Wording.sendActivation}\n onClick={() => {\n const orderNumber:\n | string\n | undefined = _.get(\n original as TOrder,\n 'order.orderReference',\n );\n if (!!orderNumber) {\n const payload: TRetryPaymentPayload = {\n customerNbr: orderNumber,\n mode: 'EMAIL',\n };\n this.props.retryFirstPayment(payload);\n }\n }}\n />\n );\n }\n return null;\n },\n },\n ];\n };\n\n hasFailedPayment(order: any) {\n if (order) {\n if (\n !order.firstPaymentSlimCollectStatus &&\n !order.firstPaymentCBStatus\n ) {\n return false;\n }\n if (\n order.firstPaymentCBStatus === 'PENDING' ||\n order.firstPaymentCBStatus === 'IN_FAILURE' ||\n order.firstPaymentSlimCollectStatus === 'IN_FAILURE' ||\n order.firstPaymentSlimCollectStatus === 'PENDING'\n ) {\n return true;\n }\n }\n return false;\n }\n\n prepareOrderToDownloadCSV = () => {\n const { order } = this.props;\n\n const parseEnergy = (energy: any) => (energy === 'EL' ? 'Elec' : 'Gaz');\n\n return order\n .map(({ channel, order }) => {\n const {\n contracts,\n customer: {\n contact: {\n companyName,\n firstName,\n lastName,\n address,\n phone,\n email,\n },\n },\n orderError,\n orderReference,\n orderStatus,\n createdBy,\n firstPaymentCBStatus,\n } = order;\n\n const prepare = {\n channel,\n orderReference,\n createdBy,\n orderStatus,\n firstPaymentCBStatus,\n companyName,\n firstName,\n lastName,\n address,\n phone,\n email,\n };\n\n if (!contracts) {\n return prepare;\n }\n\n return contracts.map(contract => {\n const {\n contractNumber,\n energy,\n subscriptionDate,\n effectiveStartDate,\n deliveryPoint: {\n process: { type: situation },\n contractualCapacity,\n contractualCapacityUnit,\n },\n contractCategory,\n } = contract;\n\n const contractType =\n energy === 'EL' ? 'Electricité' : 'Gaz';\n\n return {\n ...prepare,\n contractType,\n subscriptionDate,\n effectiveStartDate,\n situation,\n contractualCapacity,\n contractualCapacityUnit,\n contractCategory,\n contractNumber,\n };\n });\n })\n .flat();\n };\n\n downloadDataTable = () => {\n const { schemaProps } = this.props;\n return isHaveActionsPermission(schemaProps)\n ? {\n downloadData: this.prepareOrderToDownloadCSV(),\n downloadHeaders: headers,\n downloadButtonTitle: 'TÉLÉCHARGER CSV',\n downloadFilename: 'customer-contracts.csv',\n }\n : {};\n };\n\n render() {\n const { order } = this.props;\n\n return (\n <div className=\"search-case-result-container\">\n <ErrorElement error={this.props.errorMessage} />\n\n {isEmpty(order) && (\n <BackgroundElement>\n <CustomTable\n columns={this.prepareColumns(this.props.order)}\n data={order}\n className=\"-striped -highlight\"\n showPagination={true}\n filterable={true}\n SubComponent={({ original, index }: any) => (\n <SubComponent index={index} order={original} />\n )}\n {...this.downloadDataTable()}\n />\n </BackgroundElement>\n )}\n <RetryFirstPaymentModal\n retryFirstPaymentResponse={\n this.props.retryFirstPaymentResponse\n }\n resetRetryFirstPaymentResponse={\n this.props.resetFirstPayment\n }\n />\n </div>\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(CaseResult);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState, TSchemaProps } from 'Types';\nimport SearchCaseContainer from '../../../containers/admin/SearchCaseContainer';\nimport CaseResult from '../../../containers/admin/SearchCaseContainer/CaseResult';\nimport { fetchOrderAsync } from '../../../_actions/searchOrder.actions';\nimport { getGroupAsync } from '../../../_actions/getGroup.actions';\nimport {\n caseResultRetryFirstPaymentAsync,\n retryFirstPayment,\n} from '../../../_actions/caseResult.action';\nimport { isUserLimitedBySchema } from '../../../utils/helpers';\nimport { EMenuLabels, ESubMenuCaseLabel } from '../../../utils/enums';\n\nconst mapStateToProps = (state: RootState) => ({\n orderState: state.orderReducer.order,\n retryFirstPaymentState: state.retryFirstPaymentReducer.message,\n retryFirstPaymentResponse:\n state.retryFirstPaymentReducer.retryFirstPaymentResponse,\n groupListState: state.userGroupReducer.groupList,\n groupe: state.authReducer.groupe,\n schema: state.authReducer.autorizationsScheme,\n userId: state.authReducer.userId,\n});\n\nconst dispatchProps = {\n fetchOrderAsynDispatch: fetchOrderAsync.request,\n getGroupAsyncDispatch: getGroupAsync.request,\n getRetryFirstPaymentAsyncDispatch: caseResultRetryFirstPaymentAsync.request,\n retryFirstPayment,\n};\n\ntype Props = {\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\nconst CasesPage: React.FC<Props> = ({\n fetchOrderAsynDispatch,\n orderState,\n groupListState,\n getGroupAsyncDispatch,\n retryFirstPaymentState,\n retryFirstPaymentResponse,\n retryFirstPayment,\n schemaProps,\n userId,\n schema,\n getRetryFirstPaymentAsyncDispatch,\n}) => {\n const userLimited = isUserLimitedBySchema(\n EMenuLabels.CASE,\n ESubMenuCaseLabel.SEARCH_CASE,\n schema,\n );\n\n return (\n <div>\n <SearchCaseContainer\n fetchOrder={fetchOrderAsynDispatch}\n groupList={groupListState}\n userLimited={userLimited}\n userId={userId}\n schemaProps={schemaProps}\n />\n\n <CaseResult\n schemaProps={schemaProps}\n order={orderState as any}\n getGroup={getGroupAsyncDispatch}\n retryFirstPayment={getRetryFirstPaymentAsyncDispatch}\n retryFirstPaymentState={retryFirstPaymentState}\n retryFirstPaymentResponse={retryFirstPaymentResponse}\n resetFirstPayment={retryFirstPayment}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(CasesPage);\n","import CasesPage from './CasesPage';\n\nexport default CasesPage;\n","import React, { useState } from 'react';\nimport map from 'lodash/map';\nimport { InputEvent, TSchemaProps } from 'Types';\nimport { TResponse } from 'Models';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomModal,\n CustomSelect,\n CustomRadio,\n Group,\n AuthorizationSchemaGroup,\n} from '../../../components';\nimport {\n isValidString,\n formatGroupString,\n formatGroupNameString,\n isFullAuthorization,\n getInitialGroup,\n getAllInitialGroups,\n} from '../../../utils/helpers';\nimport { EResponseCode, EGroups } from '../../../utils/enums';\nimport keys from 'lodash/keys';\nimport {\n TAuthorizationSchema,\n TGroupPayload,\n} from '../../../_actions/createGroup.actions';\n\nconst Wording = WordingConstant.UserAdministrationResult;\ntype ErrorTypeState = 'GROUP' | 'SUB_GROUP' | 'MENU' | 'SUB_MENU';\n\ntype Props = {\n isOpen: boolean;\n schemaProps: TSchemaProps;\n setOpen: (value: boolean) => void;\n createGroup: (prop: TGroupPayload) => void;\n createGroupResponse: TResponse;\n groupList: string[];\n\n resetGroupResponse: () => void;\n};\n\nfunction getGroupNameError(value: string): string {\n let error = '';\n if (!isValidString(value)) {\n error = Wording.CreateGroupModal.errors.emptyField;\n }\n return error;\n}\n\nconst getSchemaSubMenuError = (schema?: any[]) => {\n let error = '';\n\n if (schema) {\n const validationError = schema.reduce(\n (acc, curr) => acc && curr.subMenu.length > 0,\n true,\n );\n\n if (!validationError) {\n error = Wording.CreateGroupModal.errors.subMenuError;\n }\n }\n\n return error;\n};\n\nconst CreateGroupModal: React.FC<Props> = ({\n isOpen,\n setOpen,\n createGroup,\n createGroupResponse,\n groupList,\n schemaProps,\n resetGroupResponse,\n}) => {\n const isLimitedGroup = schemaProps.groupMode === EGroups.LIMITED;\n\n const [groupName, setGroupName] = useState<string>(\n isLimitedGroup ? getInitialGroup(schemaProps.currentGroup) : '',\n );\n const [subGroup, setSubGroup] = useState<string>('');\n const [errorsState, setErrorState] = useState<any>({});\n const [authorisationType, setType] = useState<boolean>(false);\n const [authorizationSchema, setSchema] = useState<\n undefined | TAuthorizationSchema[]\n >(undefined);\n\n const { code, message } = createGroupResponse;\n\n const setError = (type: ErrorTypeState, errorMessage: string) =>\n setErrorState({ ...errorsState, [type]: errorMessage });\n\n const renderFinalGroup = () =>\n subGroup !== '' ? `${groupName}_${subGroup}` : groupName;\n\n const manageErrors = () => {\n const prepareObject: any = {};\n\n const groupNameErr = getGroupNameError(groupName);\n const subGroupErr =\n isLimitedGroup && subGroup === ''\n ? Wording.CreateGroupModal.errors.emptySubGroup\n : '';\n\n const menuSchemaError =\n authorisationType && authorizationSchema === undefined\n ? Wording.CreateGroupModal.errors.menuError\n : '';\n const subMenuSchemaError = getSchemaSubMenuError(authorizationSchema);\n\n let isValidMenu = true;\n\n if (groupNameErr !== '') {\n prepareObject.GROUP = groupNameErr;\n }\n\n if (subGroupErr !== '') {\n prepareObject.SUB_GROUP = subGroupErr;\n }\n\n if (menuSchemaError !== '') {\n prepareObject.MENU = menuSchemaError;\n isValidMenu = false;\n }\n\n if (subMenuSchemaError !== '' && isValidMenu) {\n prepareObject.SUB_MENU = subMenuSchemaError;\n }\n\n setErrorState(prepareObject);\n\n return keys(prepareObject).length === 0;\n };\n\n const handleCloseModal = () => {\n if (isLimitedGroup) {\n setSubGroup('');\n } else {\n setSubGroup('');\n setGroupName('');\n }\n setErrorState(undefined);\n setOpen(false);\n setSchema(undefined);\n };\n\n const elementMap = {\n subGroup: {\n text: '',\n value: subGroup,\n onInputChange: (e: InputEvent) => {\n setSubGroup(e.currentTarget.value.toUpperCase());\n },\n error: errorsState ? errorsState.SUB_GROUP : undefined,\n },\n btn_validate: {\n title: Wording.btnValidate,\n color: 'gray',\n small: true,\n onClick: () => {\n const gn = renderFinalGroup();\n\n const createGroupCondition = manageErrors();\n\n if (createGroupCondition) {\n createGroup({\n group: gn.trim(),\n autorizationsScheme: authorisationType\n ? (authorizationSchema as TAuthorizationSchema[])\n : undefined,\n });\n handleCloseModal();\n }\n },\n },\n\n btn_reset: {\n title: Wording.buttonReset,\n color: 'orange',\n small: true,\n onClick: () => {\n handleCloseModal();\n },\n },\n\n btn_hide_modal: {\n title: Wording.hideModal,\n color: 'orange',\n small: true,\n onClick: () => {\n handleCloseModal();\n resetGroupResponse();\n },\n },\n };\n\n const createGroupModalResponse = () => {\n const { code, message } = createGroupResponse;\n return (\n <CustomModal show={true}>\n <span\n className=\"btn-close\"\n onClick={() => {\n handleCloseModal();\n resetGroupResponse();\n }}\n >\n {'X'}\n </span>\n <div className=\"modal-response\">\n <p className=\"code\">\n {code === EResponseCode.SUCCESS\n ? Wording.CreateGroupModal.succesMessage\n : Wording.CreateGroupModal.failureMessage}\n </p>\n\n <p className=\"message\">{message}</p>\n\n <div className=\"search-rs-vl-btn\">\n <CustomButton {...elementMap.btn_hide_modal} />\n </div>\n </div>\n </CustomModal>\n );\n };\n const isFull = isFullAuthorization(schemaProps);\n\n const renderAuthorizationSchema = () =>\n isFull && (\n <>\n <p className=\"title\">\n {Wording.CreateGroupModal.authtorisationTitle}\n </p>\n <div className=\"radio-buttons\">\n <CustomRadio\n text={'Par défaut'}\n value={'default'}\n id={'default'}\n checked={!authorisationType}\n handleCheck={() => {\n setType(!authorisationType);\n }}\n />\n\n <CustomRadio\n text={'Spécifique'}\n value={'specific'}\n id={'specific'}\n checked={authorisationType}\n handleCheck={() => {\n setType(!authorisationType);\n }}\n />\n </div>\n\n {authorisationType && (\n <AuthorizationSchemaGroup\n getAuthorizationSchema={setSchema}\n />\n )}\n </>\n );\n\n const renderErrors = () => {\n const errs: string[] = [];\n keys(errorsState).forEach(key => {\n if (key !== 'GROUP' && key !== 'SUB_GROUP') {\n errs.push(errorsState[key]);\n }\n });\n\n return (\n <>\n {errs.map((err, idx) => (\n <p key={idx} className=\"create-group-error\">\n {err}\n </p>\n ))}\n </>\n );\n };\n\n const renderSubGroup = () =>\n schemaProps.subGroupMode === EGroups.FULL && (\n <>\n <p>{Wording.CreateGroupModal.addSubGroup}</p>\n <CustomInput {...elementMap.subGroup} />\n </>\n );\n\n const renderTitleSelect = () =>\n isFull\n ? Wording.CreateGroupModal.addorselectGroup\n : Wording.CreateGroupModal.selectGroup;\n\n const fullName = renderFinalGroup();\n\n return (\n <div>\n <CustomModal\n customStyle={{\n height: authorisationType ? '90%' : '60%',\n width: authorisationType ? '65%' : '50%',\n zIndex: 1005,\n overflow: 'auto',\n }}\n className=\"create-group-modal\"\n show={isOpen}\n >\n <span\n className=\"btn-close\"\n onClick={() => {\n setOpen(false);\n }}\n >\n {'X'}\n </span>\n <div className=\"create-group-modal__content\">\n <p className=\"title\">{Wording.CreateGroupModal.title}</p>\n\n <div className=\"create-group-modal__content__group-selection\">\n <div>\n <p>{renderTitleSelect()}</p>\n <CustomSelect\n options={getAllInitialGroups(groupList)}\n placeholder=\" \"\n onInputChange={(value: string) =>\n value.toUpperCase()\n }\n handleChangeSelect={(props: any) => {\n if (props && props.value) {\n setGroupName(props.value.toUpperCase());\n }\n if (props === null) {\n setGroupName('');\n }\n }}\n isClearable={isFull}\n error={\n errorsState ? errorsState.GROUP : undefined\n }\n defaultValue={groupName}\n value={groupName}\n disabled={isLimitedGroup}\n />\n </div>\n\n <div>{renderSubGroup()}</div>\n </div>\n\n {fullName && <p>Votre groupe: {fullName}</p>}\n\n {renderAuthorizationSchema()}\n {renderErrors()}\n\n <div className=\"create-group-modal__content__buttons\">\n <CustomButton {...elementMap.btn_reset} />\n <CustomButton {...elementMap.btn_validate} />\n </div>\n </div>\n </CustomModal>\n {code &&\n message !== Wording.errorMessage &&\n createGroupModalResponse()}\n </div>\n );\n};\n\nexport default CreateGroupModal;\n","import React, { useState } from 'react';\nimport { InputEvent, SelectOption, TSchemaProps } from 'Types';\nimport WordingConstant from '../../../utils/wording.json';\nimport {\n CustomInput,\n CustomButton,\n CustomSelect,\n Group,\n} from '../../../components';\nimport { TUserPayload } from '../../../_actions/searchUserGroup.actions';\nimport {\n getSelectOptionValue,\n isLimitedAuthorization,\n} from '../../../utils/helpers';\nimport CreateUserModal from '../UserAdministrationContainer/CreateUserModal';\nimport CreateGroupModal from '../UserAdministrationContainer/CreateGroupModal';\nimport { TResponse } from 'Models';\n\nimport _ from 'lodash';\nimport { TGroupPayload } from '../../../_actions/createGroup.actions';\n\nconst Wording = WordingConstant.UserAdministrationContainer;\n\nconst statusOption: Array<SelectOption<string>> = [\n { id: '0', label: 'Actif', value: 'ENABLED' },\n { id: '1', label: 'Inactif', value: 'DISABLED' },\n];\ninterface IPayloadUser {\n group: string;\n firstName: string;\n lastName: string;\n email: string;\n civility: string;\n}\ntype Props = {\n schemaProps: TSchemaProps;\n groupList: string[];\n createGroupResponse: TResponse;\n createUserResponse: TResponse;\n currentUser?: any;\n checkCreateGroupPermission: boolean;\n checkCreateUserPermission: boolean;\n resetGroupResponse: () => void;\n resetCreateUserResponse: () => void;\n createGroup: (props: TGroupPayload) => void;\n createUser: (props: IPayloadUser) => void;\n resetAdminClientSpaceResponse: () => void;\n searchUserGroup: (props: TUserPayload) => void;\n};\n\nconst UserAdministrationContainer: React.FC<Props> = ({\n searchUserGroup,\n groupList,\n checkCreateGroupPermission,\n checkCreateUserPermission,\n createUser,\n createGroupResponse,\n createUserResponse,\n resetGroupResponse,\n resetCreateUserResponse,\n createGroup,\n currentUser,\n schemaProps,\n}) => {\n const isDisabledActionBtn = isLimitedAuthorization(schemaProps);\n\n const defaultGroup = isDisabledActionBtn\n ? {\n id: 0,\n label: schemaProps.currentGroup,\n value: schemaProps.currentGroup,\n }\n : '';\n\n const [groupId, setGroupId] = useState<string | SelectOption<string>>(\n defaultGroup,\n );\n const [userId, setUserId] = useState<string>('');\n const [clientLastName, setclientLastName] = useState<string>('');\n const [clientFirstName, setClientFirstName] = useState<string>('');\n const [customerPhone, setCustomerPhone] = useState<string>('');\n const [customerEmail, setCustomerEmail] = useState<string>('');\n const [status, setStatus] = useState<'' | SelectOption<string>>('');\n const [openUserModal, setUserModal] = useState<boolean>(false);\n const [openGroupModal, setGroupModal] = useState<boolean>(false);\n const [isLocked, setLocked] = useState<boolean>(!isDisabledActionBtn);\n\n const searchCondition =\n groupId !== '' ||\n userId !== '' ||\n clientFirstName !== '' ||\n clientLastName !== '' ||\n customerEmail !== '' ||\n status !== '' ||\n customerPhone !== '';\n const elementMap = {\n groupId: {\n id: 'groupe',\n options: _.map(groupList, (group: string, id: number) => ({\n id,\n label: group,\n value: group,\n })),\n handleChangeSelect: (situation: SelectOption<string>) => {\n setLocked(false);\n setGroupId(situation);\n },\n value: groupId,\n text: Wording.group,\n schemaProps,\n },\n customerPhone: {\n text: Wording.clientPhoneNbr,\n value: customerPhone,\n onInputChange: (e: InputEvent) =>\n setCustomerPhone(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerPhone(''),\n },\n\n userId: {\n text: Wording.userId,\n value: userId,\n onInputChange: (e: InputEvent) => setUserId(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setUserId(''),\n },\n customerEmail: {\n text: Wording.clientEmail,\n value: customerEmail,\n onInputChange: (e: InputEvent) =>\n setCustomerEmail(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setCustomerEmail(''),\n },\n\n clientFirstName: {\n text: Wording.clientFirstName,\n value: clientFirstName,\n onInputChange: (e: InputEvent) =>\n setClientFirstName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setClientFirstName(''),\n isLocked,\n },\n\n clientLastName: {\n text: Wording.clientLastName,\n value: clientLastName,\n onInputChange: (e: InputEvent) =>\n setclientLastName(e.currentTarget.value),\n deleteButton: true,\n deleteButtonOnClick: () => setclientLastName(''),\n isLocked,\n },\n\n status: {\n id: 'statut',\n defaultValue: '',\n options: statusOption,\n handleChangeSelect: (status: SelectOption<string>) => {\n setStatus(status);\n },\n value: status,\n placeholder: 'Sélectionner',\n text: Wording.status,\n },\n\n btn_validate: {\n title: Wording.btnValidate,\n color: searchCondition ? 'orange' : 'gray',\n small: true,\n onClick: () => {\n if (searchCondition) {\n searchUserGroup({\n userName: userId.trim(),\n email: customerEmail.trim(),\n firstName: clientFirstName.trim(),\n lastName: clientLastName.trim(),\n group: getSelectOptionValue(\n groupId as SelectOption<string>,\n ),\n userStatus: getSelectOptionValue(\n status as SelectOption<string>,\n ),\n });\n }\n },\n },\n\n btn_reset: {\n title: Wording.buttonReset,\n small: true,\n color: 'gray',\n onClick: () => {\n setGroupId('');\n setUserId('');\n setclientLastName('');\n setClientFirstName('');\n setCustomerPhone('');\n setCustomerEmail('');\n setStatus('');\n setLocked(true);\n },\n },\n\n btn_create_group: {\n title: Wording.createGroup,\n small: true,\n color: 'orange',\n disabled: checkCreateGroupPermission,\n onClick: () => {\n setGroupModal(true);\n },\n },\n\n btn_create_user: {\n title: Wording.createUser,\n disabled: checkCreateUserPermission,\n small: true,\n color: 'orange',\n onClick: () => {\n setUserModal(true);\n },\n },\n };\n\n return (\n <div className=\"user-administration-container\">\n <div className=\"search-rs-vl-btn actions-btns\">\n <CustomButton {...elementMap.btn_create_group} />\n <CustomButton {...elementMap.btn_create_user} />\n </div>\n\n <div className=\"user-administration-container__container\">\n <div className=\"user-administration-container__container__row\">\n <div className=\"user-administration-container__container__row__block\">\n <CustomInput {...elementMap.userId} />\n <Group {...elementMap.groupId} />\n </div>\n\n <div className=\"user-administration-container__container__row__block\">\n <CustomSelect {...elementMap.status} />\n <CustomInput {...elementMap.clientFirstName} />\n <p className=\"search-group-text\">\n {\n 'La recherche par Prénom ou Nom nécessite de sélectionner au préalable un groupe'\n }\n </p>\n </div>\n\n <div className=\"user-administration-container__container__row__block\">\n <CustomInput {...elementMap.customerEmail} />\n <CustomInput {...elementMap.clientLastName} />\n </div>\n </div>\n\n <div className=\"search-rs-vl-btn \">\n <CustomButton {...elementMap.btn_reset} />\n <CustomButton {...elementMap.btn_validate} />\n </div>\n </div>\n\n <CreateUserModal\n currentUser={currentUser}\n isCustomerAndContract={false}\n isOpen={openUserModal}\n setOpen={setUserModal}\n groupList={groupList}\n schemaProps={schemaProps}\n createUser={createUser}\n createUserResponse={createUserResponse}\n resetCreateUserResponse={resetCreateUserResponse}\n />\n\n <CreateGroupModal\n isOpen={openGroupModal}\n setOpen={setGroupModal}\n schemaProps={schemaProps}\n createGroup={createGroup}\n groupList={groupList}\n createGroupResponse={createGroupResponse}\n resetGroupResponse={resetGroupResponse}\n />\n </div>\n );\n};\n\nexport default UserAdministrationContainer;\n","import React from 'react';\nimport { RootState, TSchemaProps } from 'Types';\nimport { connect } from 'react-redux';\nimport { BackgroundElement } from '../../../components';\nimport CustomTable from '../../../components/admin/CustomTable';\nimport WordingConstant from '../../../utils/wording.json';\nimport { isEmpty, getImgSrcByUserStatus } from '../../../utils/helpers';\nimport { TUser, TResponse } from 'Models';\nimport resources from '../../../utils/resources';\nimport RemoveUserButton from './RemoveUserButton';\nimport EnableOrDesableuserButton from './EnableOrDesableUserButton';\nimport _ from 'lodash';\nimport ErrorElement from '../../../components/ErrorElement';\nimport { resetManageUserResponse } from '../../../_actions/manageUser.actions';\nimport OutsideClickClass from '../../../libraries/OutsideClickClass';\nimport { withTriangle } from '../../../components/admin/CustomTable/CustomTable';\n\ninterface IPayloadManageUser {\n mode: string;\n firstName: string;\n lastName: string;\n userName: string;\n}\n\nconst Wording = WordingConstant.UserAdministrationResult;\nconst EMPTY_RESPONSE = 'EMPTY_RESPONSE';\n\nconst mapStateToProps = (state: RootState) => ({});\n\nconst dispatchProps = {\n resetManageUserResponse,\n};\n\ntype Props = {\n setOpen?: (value: boolean) => void;\n setOpenGroupModal?: (value: boolean) => void;\n userList: TUser[];\n manageUserResponse: TResponse;\n resetResponse: () => void;\n getGroup: () => void;\n groupList: string[];\n manageUser: (props: IPayloadManageUser) => void;\n setAdminSuccessModal: (props: boolean) => void;\n resetAdminClientSpaceResponse: () => void;\n isAdminSpace: boolean;\n checkUderAdministrationResultPermission: boolean;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\ntype State = {\n isOpen: boolean;\n openGroupModal: boolean;\n showPopUp: boolean;\n currentItem: number;\n};\n\nclass UserAdministrationResult extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n isOpen: false,\n openGroupModal: false,\n showPopUp: false,\n currentItem: -1,\n };\n }\n\n /*componentDidMount() {\n this.props.getGroup();\n }*/\n prepareColumns = () => {\n const { checkUderAdministrationResultPermission } = this.props;\n\n return [\n {\n Header: withTriangle(Wording.group),\n accessor: 'group',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.userId),\n accessor: 'userName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientFirstName),\n accessor: 'firstName',\n filterable: false,\n },\n\n {\n Header: withTriangle(Wording.clientLastName),\n accessor: 'lastName',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.clientEmail),\n accessor: 'email',\n filterable: false,\n },\n {\n Header: withTriangle(Wording.status),\n accessor: 'userStatus',\n filterable: false,\n width: 110,\n Cell: ({ value }: any) =>\n value !== undefined && value !== '' ? (\n <img src={getImgSrcByUserStatus(value)} alt=\"\" />\n ) : null,\n },\n {\n Header: '',\n accessor: '',\n show: checkUderAdministrationResultPermission,\n filterable: false,\n width: 40,\n Cell: (original: any) => {\n return (\n <div>\n <img\n className=\"menu-style\"\n src={resources['ic-menu-orange']}\n alt=\"ic-menu\"\n onClick={() => {\n this.handleshowPopUp(original.viewIndex);\n }}\n />\n\n {this.state.showPopUp &&\n this.state.currentItem ===\n original.viewIndex && (\n <OutsideClickClass\n callback={() =>\n this.setState({\n showPopUp: false,\n })\n }\n >\n <div className=\"pop-up\">\n <RemoveUserButton\n setAdminSuccessModal={\n this.props\n .setAdminSuccessModal\n }\n original={original}\n manageUser={\n this.props.manageUser\n }\n resetAdminClientSpaceResponse={\n this.props\n .resetAdminClientSpaceResponse\n }\n resetManageUserResponse={\n this.props\n .resetManageUserResponse\n }\n manageUserResponse={\n this.props\n .manageUserResponse\n }\n isAdminSpace={false}\n />\n\n <EnableOrDesableuserButton\n status={_.get(\n original.original,\n 'userStatus',\n '',\n )}\n original={original}\n manageUser={\n this.props.manageUser\n }\n manageUserResponse={\n this.props\n .manageUserResponse\n }\n setAdminSuccessModal={\n this.props\n .setAdminSuccessModal\n }\n isAdminSpace={false}\n resetManageUserResponse={\n this.props\n .resetManageUserResponse\n }\n resetAdminClientSpaceResponse={\n this.props\n .resetAdminClientSpaceResponse\n }\n />\n </div>\n </OutsideClickClass>\n )}\n </div>\n );\n },\n },\n ];\n };\n\n setOpen = (value: boolean) => {\n this.setState({ isOpen: value });\n };\n setOpenGroupModal = (value: boolean) => {\n this.setState({ openGroupModal: value });\n };\n handleshowPopUp = (original: number) => {\n this.setState({\n showPopUp: !this.state.showPopUp,\n currentItem: original,\n });\n };\n\n downloadDataTable = () => {\n const {\n userList,\n checkUderAdministrationResultPermission,\n } = this.props;\n\n return checkUderAdministrationResultPermission\n ? {\n downloadData: userList,\n downloadButtonTitle: 'TÉLÉCHARGER CSV',\n downloadFilename: 'list-users.csv',\n }\n : {};\n };\n\n render() {\n const { userList } = this.props;\n const { message, code } = this.props.manageUserResponse;\n return (\n <div className=\"user-administration-result\">\n {isEmpty(userList) && (\n <BackgroundElement>\n <CustomTable\n columns={this.prepareColumns()}\n data={userList}\n className=\"-striped -highlight\"\n showPagination={true}\n filterable={false}\n {...this.downloadDataTable()}\n />\n </BackgroundElement>\n )}\n {message && code === EMPTY_RESPONSE && (\n <ErrorElement error={message} />\n )}\n </div>\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(UserAdministrationResult);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState, TSchemaProps } from 'Types';\nimport UserAdministrationContainer from '../../../containers/admin/UserAdministrationContainer/UserAdministrationContainer';\nimport UserAdministrationResult from '../../../containers/admin/UserAdministrationContainer/UserAdministrationResult';\nimport { searchUserGroupAsync } from '../../../_actions/searchUserGroup.actions';\nimport {\n createUserAsync,\n resetCreateUserResponse,\n} from '../../../_actions/createUser.actions';\nimport {\n createGroupAsync,\n resetGroupResponse,\n} from '../../../_actions/createGroup.actions';\nimport { getGroupAsync } from '../../../_actions/getGroup.actions';\nimport { manageUserAsync } from '../../../_actions/manageUser.actions';\n\nimport {\n isHaveActionsPermissionBySchema,\n isLimitedAuthorizationBySchema,\n} from '../../../utils/helpers';\nimport { EMenuLabels, ESubMenuAdministrationLabel } from '../../../utils/enums';\n\nconst mapStateToProps = (state: RootState) => ({\n userGroupState: state.userGroupReducer.userList,\n groupListState: state.userGroupReducer.groupList,\n manageUserState: state.userGroupReducer.createUserResponse,\n manageGroupState: state.userGroupReducer.createGroupResponse,\n searchState: state.userGroupReducer.manageUserResponse,\n autorizationsScheme: state.authReducer.autorizationsScheme,\n});\n\nconst dispatchProps = {\n searchUserGroupAsyncDispatch: searchUserGroupAsync.request,\n createGroupAsyncDispatch: createGroupAsync.request,\n resetGroupResponse,\n resetCreateUserResponse,\n getGroupAsyncDispatch: getGroupAsync.request,\n createUserAsyncDispatch: createUserAsync.request,\n manageUserAsyncDispatch: manageUserAsync.request,\n};\n\ntype Props = {\n setAdminSuccessModal: (props: boolean) => void;\n resetAdminClientSpaceResponse: () => void;\n isAdminSpace: boolean;\n schemaProps: TSchemaProps;\n} & ReturnType<typeof mapStateToProps> &\n typeof dispatchProps;\n\nconst UserAdministrationPage: React.FC<Props> = ({\n searchUserGroupAsyncDispatch,\n userGroupState,\n createGroupAsyncDispatch,\n resetGroupResponse,\n resetCreateUserResponse,\n getGroupAsyncDispatch,\n groupListState,\n createUserAsyncDispatch,\n manageUserAsyncDispatch,\n manageUserState,\n setAdminSuccessModal,\n resetAdminClientSpaceResponse,\n manageGroupState,\n searchState,\n isAdminSpace,\n schemaProps,\n autorizationsScheme,\n}) => {\n const checkUderAdministrationResultPermission = isHaveActionsPermissionBySchema(\n EMenuLabels.ADMINISTRATION,\n ESubMenuAdministrationLabel.MANAGE_USERS,\n autorizationsScheme,\n );\n\n const checkCreateGroupPermission = isLimitedAuthorizationBySchema(\n EMenuLabels.ADMINISTRATION,\n ESubMenuAdministrationLabel.CREATE_GROUP,\n autorizationsScheme,\n );\n\n const checkCreateUserPermission = isLimitedAuthorizationBySchema(\n EMenuLabels.ADMINISTRATION,\n ESubMenuAdministrationLabel.CREATE_USER,\n autorizationsScheme,\n );\n\n return (\n <div>\n <UserAdministrationContainer\n searchUserGroup={searchUserGroupAsyncDispatch}\n groupList={groupListState}\n schemaProps={schemaProps}\n createUser={createUserAsyncDispatch}\n createUserResponse={manageUserState}\n createGroupResponse={manageGroupState}\n resetGroupResponse={resetGroupResponse}\n checkCreateGroupPermission={checkCreateGroupPermission}\n checkCreateUserPermission={checkCreateUserPermission}\n createGroup={createGroupAsyncDispatch}\n resetCreateUserResponse={resetCreateUserResponse}\n resetAdminClientSpaceResponse={resetAdminClientSpaceResponse}\n />\n\n <UserAdministrationResult\n setAdminSuccessModal={setAdminSuccessModal}\n userList={userGroupState}\n checkUderAdministrationResultPermission={\n checkUderAdministrationResultPermission\n }\n resetResponse={resetGroupResponse}\n getGroup={getGroupAsyncDispatch}\n groupList={groupListState}\n manageUser={manageUserAsyncDispatch}\n manageUserResponse={searchState}\n resetAdminClientSpaceResponse={resetAdminClientSpaceResponse}\n isAdminSpace={isAdminSpace}\n />\n </div>\n );\n};\n\nexport default connect(mapStateToProps, dispatchProps)(UserAdministrationPage);\n","import UserAdministrationPage from './UserAdministrationPage';\n\nexport default UserAdministrationPage;\n","import React from 'react';\nimport { Route, Redirect, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { RootState, RouteProps, SubRouteProps, TSchemaProps } from 'Types';\nimport { SideBar, Footer } from '../../components';\nimport { resetReduxStore } from '../../_actions/auth.actions';\nimport withLoader from '../../libraries/withLoader';\nimport AuthService from '../../services/auth-service';\nimport { TScheme } from 'Models';\n\nimport AdminHomePage from '../admin/AdminHomePage';\nimport AdminSubscriptionPage from '../admin/AdminSubscriptionPage';\nimport NotFoundPage from '../defaults/NotFoundPage';\nimport CustomerContractPage from '../admin/CustomerContractPage';\nimport CasesPage from '../admin/CasesPage';\nimport UserAdministrationPage from '../admin/UserAdministrationPage';\nimport _ from 'lodash';\n\ntype ContentProps = {\n autorizationsScheme: TScheme[];\n group: string;\n};\n\nfunction getComponent(root: string): any {\n switch (root) {\n case 'userAdmin':\n return UserAdministrationPage;\n case 'customerContract':\n return CustomerContractPage;\n case 'case':\n return AdminSubscriptionPage;\n case 'searchCase':\n return CasesPage;\n\n default:\n return NotFoundPage;\n }\n}\n\nfunction routingMap(props: ContentProps): RouteProps[] {\n const routes = props.autorizationsScheme!.map(category => {\n return {\n title: category.label!,\n path: '/',\n links: [\n ..._.uniqBy(category.subMenu, 'root').map(\n ({ root, label, ...schemaProps }) => {\n return {\n path: root,\n sidebar: () => <div>{label}</div>,\n main: getComponent(root),\n title: label,\n schemaProps: {\n ...schemaProps,\n currentGroup: props.group,\n },\n };\n },\n ),\n\n {\n path: '/',\n sidebar: () => <div>Home</div>,\n main: AdminHomePage,\n title: 'Home',\n schemaProps: {},\n } as any,\n ],\n };\n });\n\n return routes;\n}\n\nconst Content: React.FC<ContentProps> = (props: ContentProps) => {\n return (\n <div className=\"content\" id=\"content-admin\">\n <Switch>\n {routingMap(props).map((route: RouteProps | any) =>\n route.links.map(\n (subRoute: SubRouteProps, index: number) => {\n const Component: React.ComponentType<{\n schemaProps: TSchemaProps | undefined;\n }> = subRoute.main;\n return (\n <Route\n key={index}\n path={route.path + subRoute.path}\n exact\n // component={subRoute.main}\n >\n <Component\n schemaProps={subRoute.schemaProps}\n />\n </Route>\n );\n },\n ),\n )}\n </Switch>\n </div>\n );\n};\n\nconst WrappedContent = withLoader()(Content);\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n profileState: state.profileReducer,\n});\n\nconst dispatchProps = {\n resetReduxStoreDispatch: resetReduxStore,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nclass Main extends React.PureComponent<Props, {}> {\n render() {\n const {\n profileState: { contact, customerNumber },\n authState: {\n loading,\n unauthorized,\n autorizationsScheme,\n userId,\n groupe,\n },\n resetReduxStoreDispatch,\n }: Props = this.props;\n\n const routes = autorizationsScheme.map(category => {\n return {\n title: category.label,\n path: '/',\n links: category.subMenu!.map(\n ({ root, label, ...schemaProps }) => {\n return {\n path: root,\n sidebar: () => <div>{label}</div>,\n main: () => getComponent(root) as JSX.Element,\n title: label,\n schemaProps: {\n ...schemaProps,\n currentGroup: groupe || '',\n },\n };\n },\n ),\n };\n });\n const props = {\n routes,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n customerNbr: customerNumber,\n userId,\n groupe,\n isAdmin: true,\n handleLogout: () => resetReduxStoreDispatch(),\n };\n const isSignIn = AuthService.isAuthenticated();\n if (!isSignIn) {\n return <Redirect to={{ pathname: '/login' }} />;\n }\n return (\n <div className=\"main-page\">\n <div className=\"main-page__content\">\n <SideBar {...props} />\n <WrappedContent\n autorizationsScheme={autorizationsScheme}\n group={groupe || ''}\n loading={loading}\n unauthorized={unauthorized}\n handleCloseModal={() => {\n AuthService.logout();\n props.handleLogout();\n }}\n />\n </div>\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(Main);\n","import React from 'react';\nimport { TContract, TContact } from 'Models';\nimport { ECustomerType } from '../utils/enums';\nimport { Banner, Modal } from '../components';\n\nimport WordingConstant from '../utils/wording.json';\n\nconst CommonWording = WordingConstant.Common;\n\nexport type ExternalProps = {\n title?: string;\n bannerError?: string;\n contracts: TContract[];\n contact: TContact;\n customerType: ECustomerType;\n selectedContractNumber: string;\n handleChangeBanner: (contractNumber: string) => void;\n handleCloseModalBanner?: () => void;\n};\n\nexport type InjectedProps = {\n clickCount?: number;\n};\n\ntype Options = {\n debug?: boolean;\n};\n\nconst withBanner = ({ debug = false }: Options = {}) => <OwnProps extends {}>(\n WrappedComponent: React.ComponentType<OwnProps & InjectedProps>,\n) => {\n type HocProps = OwnProps & ExternalProps;\n\n return class extends React.Component<HocProps, {}> {\n handleChange = (contractNumber: string) => {\n const { handleChangeBanner } = this.props;\n handleChangeBanner(contractNumber);\n };\n\n render() {\n const {\n contracts,\n contact,\n customerType,\n title,\n selectedContractNumber,\n handleCloseModalBanner,\n bannerError,\n } = this.props;\n const contract =\n contracts.find(\n (c: TContract) =>\n c.contractNumber === selectedContractNumber,\n ) || contracts[0];\n return (\n <div className=\"banner-container\">\n {title && (\n <h1 className=\"banner-container__title\">{title}</h1>\n )}\n\n <Modal\n show={bannerError !== undefined}\n title={CommonWording.contractError.title}\n description={CommonWording.contractError.description}\n state={1}\n handleCancel={handleCloseModalBanner}\n />\n\n <Banner\n currentContract={contract}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChange={this.handleChange}\n />\n <WrappedComponent {...this.props} />\n </div>\n );\n }\n };\n};\n\nexport default withBanner;\n","import ArticleVideoContainer from './ArticleVideoContainer';\n\nexport default ArticleVideoContainer;\n","import React from 'react';\n\nimport { CustomModal } from '../../components';\nimport { getFormattedDate, getYoutubeId } from '../../utils/helpers';\n\ntype LinkItem = {\n link: string;\n title: string;\n date?: string;\n};\n\ntype Props = {\n articles: LinkItem[];\n videos: LinkItem[];\n};\n\ntype State = {\n showModal: boolean;\n videoId: string;\n title: string;\n};\nclass ArticleVideoContainer extends React.Component<Props, State> {\n state = {\n showModal: false,\n videoId: '',\n title: '',\n };\n\n displayVideo = () => {\n const { showModal, videoId, title } = this.state;\n\n if (!showModal) {\n return null;\n }\n\n return (\n <CustomModal\n show={showModal}\n handleClick={() => this.handleShowModal('', '')}\n >\n <iframe\n src={`https://www.youtube.com/embed/${videoId}?autoplay=1`}\n frameBorder=\"0\"\n allowFullScreen\n title={title}\n width=\"100%\"\n height=\"100%\"\n />\n </CustomModal>\n );\n };\n\n stopVideo = () => {\n const iframe = document.querySelector('iframe');\n const video = document.querySelector('video');\n if (iframe !== null) {\n const iframeSrc = iframe.src;\n iframe.src = iframeSrc;\n }\n if (video !== null) {\n video.pause();\n }\n };\n\n handleShowModal = (videoId: string, title: string) => {\n const { showModal } = this.state;\n this.setState({ showModal: !showModal, videoId, title });\n if (showModal) {\n this.stopVideo();\n }\n };\n\n render() {\n const { articles, videos } = this.props;\n\n return (\n <div className=\"article-video-container\">\n {this.displayVideo()}\n <div className=\"article-video-container__videos\">\n {videos.map((item: LinkItem, index: number) => {\n const videoId = getYoutubeId(item.link);\n return (\n <div\n key={index}\n className=\"article-video-container__videos__section\"\n >\n <div\n className=\"article-video-container__videos__section__iframe\"\n role=\"button\"\n onClick={() =>\n this.handleShowModal(\n videoId,\n item.title,\n )\n }\n >\n <img\n src={`https://img.youtube.com/vi/${videoId}/0.jpg`}\n width=\"100%\"\n height=\"100%\"\n />\n </div>\n <p>{item.title}</p>\n </div>\n );\n })}\n </div>\n <div className=\"article-video-container__articles\">\n {articles.map((item: LinkItem, index: number) => {\n return (\n <div\n key={index}\n className=\"article-video-container__articles__section\"\n >\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {item.title}\n </a>\n <p>le {getFormattedDate(item.date || '')}</p>\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n}\n\nexport default ArticleVideoContainer;\n","import React from 'react';\n\nimport { TPiece, TInvoice, TPrepayment, TAdhoc, TEPInvoice } from 'Models';\n\nimport { getFormattedDate, findNextAndLastPieces } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.PaymentStatusContainer;\n\ntype Props = {\n pieces: TEPInvoice[];\n};\n\nconst PaymentStatusContainer: React.FC<Props> = ({ pieces }) => {\n if (pieces && pieces.length === 0) {\n return null;\n }\n const data = findNextAndLastPieces(pieces);\n\n return (\n <div className=\"payment-status-container\">\n <div className=\"payment-status-container__block\">\n <p>{Wording.lastPayment}</p>\n <div className=\"payment-status-container__block__data\">\n {data && data.last ? (\n <React.Fragment>\n <h3>{`${(data.last as TEPInvoice).amount ||\n (data.last as TEPInvoice).amount} €`}</h3>\n <p className=\"payment-status-container__block__data__date\">\n le {data.last.date}\n </p>\n </React.Fragment>\n ) : (\n <p className=\"payment-status-container__block__data__none\">\n {Wording.noneData}\n </p>\n )}\n </div>\n </div>\n <div className=\"payment-status-container__block\">\n <p>{Wording.nextPayment}</p>\n <div className=\"payment-status-container__block__data\">\n {data && data.next ? (\n <React.Fragment>\n <h3>{`${data.next.amount} €`}</h3>\n <p className=\"payment-status-container__block__data__date\">{`le ${getFormattedDate(\n data.next.date,\n )}`}</p>\n </React.Fragment>\n ) : (\n <p className=\"payment-status-container__block__data__none\">\n {Wording.noneData}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default PaymentStatusContainer;\n","import PaymentStatusContainer from './PaymentStatusContainer';\n\nexport default PaymentStatusContainer;\n","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootState } from 'Types';\nimport WordingConstant from '../../utils/wording.json';\n\nimport Icon from '../../assets/icons/ic-wekiwi-popup-orange.png';\n\nconst Wording = WordingConstant.PaymentCBModal;\n\nimport { LoadingSpinner } from '../../libraries/withLoader';\nimport { CustomButton, CustomModal } from '../../components';\nimport {\n createPaymentCBAsync,\n resetModal,\n} from '../../_actions/paymentCB.actions';\nimport { TEPInvoice } from 'Models';\nimport StripeContainer from '../StripeFormContainer/StripeFormContainer';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\n\ntype PaymentCBModalProps = {\n targetPiece?: TEPInvoice;\n show: boolean;\n closeModal: () => void;\n};\n\n/**\n * stepIframeLoad => 0 -> mount / 1 -> display iframe / 2 -> finish modal\n */\n\nconst PaymentCBModal: React.FC<PaymentCBModalProps> = ({\n targetPiece,\n show,\n closeModal,\n}: PaymentCBModalProps) => {\n const dispatch = useDispatch();\n const [stripeState, setStripeState] = useState({ err: '', success: false });\n const { error } = useSelector((state: RootState) => ({\n error: state.paymentCBReducer.error,\n }));\n\n const { stripe, selectedContractNumber, customerNumber } = useSelector(\n (state: RootState) => ({\n stripe: state.paymentCBReducer.stripe,\n selectedContractNumber:\n state.contractReducer.selectedContractNumber,\n customerNumber: state.profileReducer.customerNumber,\n }),\n );\n\n const handleClose = () => {\n dispatch(resetModal());\n closeModal();\n dispatch(\n fetchFilesListAsync.request({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n }),\n );\n };\n\n const handleRetry = () => {\n if (targetPiece) {\n dispatch(resetModal());\n setStripeState({ err: '', success: false });\n dispatch(\n createPaymentCBAsync.request({\n dueDate: new Date().toString(),\n payment: targetPiece,\n }),\n );\n }\n };\n\n const renderError = (err: string) => (\n <div className=\"payment-cb-modal__error\">\n <img\n src={Icon}\n alt=\"error-icon\"\n style={{ width: '6rem', height: '6rem' }}\n />\n\n <p>{err}</p>\n <div className=\"errorContainer\"></div>\n <CustomButton\n color={'orange'}\n onClick={handleRetry}\n title={Wording.retry}\n />\n </div>\n );\n\n const renderSuccess = () => (\n <div className=\"payment-cb-modal__success\">\n <img\n src={Icon}\n alt=\"success-icon\"\n style={{ width: '6rem', height: '6rem' }}\n />\n <p>{Wording.financialPieces.success}</p>\n <CustomButton\n color={'orange'}\n onClick={handleClose}\n title={Wording.button_validate}\n />\n </div>\n );\n\n const renderStripe = () => (\n <StripeContainer\n stripeInformations={stripe!}\n handleClose={handleClose}\n onFormValidate={(success, err) => {\n if (success) setStripeState({ err: '', success: true });\n else setStripeState({ err: err!, success: false });\n }}\n />\n );\n\n const renderContent = () => {\n if (!stripe && !error) {\n return (\n <div className=\"payment-cb-modal__loading\">\n <LoadingSpinner />\n </div>\n );\n }\n if (error || stripeState.err) {\n return renderError(error ? error : stripeState.err);\n }\n\n if (stripeState.success) {\n return renderSuccess();\n }\n\n return renderStripe();\n };\n\n return (\n <CustomModal\n className=\"payment-cb-modal\"\n showCloseButton\n show={show}\n handleClick={handleClose}\n >\n <div>\n <h3>{Wording.title}</h3>\n\n {renderContent()}\n </div>\n </CustomModal>\n );\n};\n\nexport default PaymentCBModal;\n","import PaymentCBModal from './PaymentCBModal';\n\nexport default PaymentCBModal;\n","import React, { useState } from 'react';\nimport { TContract, TEPInvoice } from 'Models';\n\nimport { CustomButton, CustomDayPicker } from '../../components';\nimport { isWeekend } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nimport PaymentCBModal from '../PaymentCBModal';\nimport { useDispatch } from 'react-redux';\nimport { createPaymentCBAsync } from '../../_actions/paymentCB.actions';\n\nconst Wording = WordingConstant.FailPieceContainer;\n\nexport type ChangePiece = {\n piece: TEPInvoice;\n dueDate: string;\n};\n\nexport type BaseProps = {\n handleChangeFailPiece: (piece: TEPInvoice, dueDate: string) => void;\n handleShowModal: (section: string) => void;\n};\n\ntype FailPieceProps = {\n piece: TEPInvoice;\n handleOpenModal: (piece: TEPInvoice, dueDate: string) => void;\n} & BaseProps;\n\nconst DISABLED = [\n { before: new Date(new Date().setDate(new Date().getDate() + 1)) },\n { after: new Date(new Date().setDate(new Date().getDate() + 15)) },\n {\n daysOfWeek: [0, 6],\n },\n];\n\nexport const FailPiece = ({\n piece,\n handleChangeFailPiece,\n handleShowModal,\n handleOpenModal,\n}: FailPieceProps) => {\n const [calendarOpen, setCalendarOpen] = useState<boolean>(false);\n const [selectedDay, setSelectedDay] = useState<any>(undefined);\n\n const handleChangeDay = (date: Date) => {\n if (date.toLocaleDateString() < new Date(new Date().setDate(new Date().getDate() + 1)).toLocaleDateString() && date.toLocaleDateString() > new Date(new Date().setDate(new Date().getDate() + 15)).toLocaleDateString()) {\n return;\n }\n if (date.getTime() > new Date().getTime() && !isWeekend(date)) {\n setSelectedDay(date);\n }\n handleChangeFailPiece(piece, date.toLocaleDateString());\n };\n\n return (\n <div className=\"fail-piece-container\">\n <div className=\"fail-piece-container__title\">\n <span className=\"fail-piece-container__title__exclamation-point\">\n !\n </span>\n <p>\n Votre prélèvement {piece.communication} du {piece.date} d’un{' '}\n montant de {piece.amount}€ a été refusé\n </p>\n </div>\n\n <p>{Wording.title2}</p>\n\n {(calendarOpen && (\n <div className=\"fail-piece-container__calendar\">\n <CustomDayPicker\n dateHighlighted={selectedDay}\n handleChangeDay={handleChangeDay}\n disabledDays={DISABLED}\n />\n\n <CustomButton\n color=\"gray\"\n title={Wording.buttonClose}\n onClick={() => setCalendarOpen(false)}\n />\n <CustomButton\n color={selectedDay !== undefined ? 'orange' : 'gray'}\n title={Wording.buttonSave}\n onClick={\n selectedDay !== undefined\n ? () => handleShowModal('')\n : () => {}\n }\n />\n </div>\n )) || (\n <div>\n {\n // piece.enableDirectDebit && (\n <CustomButton\n color=\"orange\"\n title={Wording.buttonChoice}\n onClick={() => setCalendarOpen(true)}\n />\n // )\n }\n {\n // piece.enableDebitCard && (\n <CustomButton\n color=\"orange\"\n title={Wording.buttonPaymentCB}\n onClick={() => handleOpenModal(piece, '')}\n />\n // )\n }\n </div>\n )}\n </div>\n );\n};\n\nexport type ContainerProps = BaseProps & {\n pieces: TEPInvoice[];\n customerNumber: string;\n contract: TContract;\n};\n\ntype FailPieceType = {\n piece: TEPInvoice;\n enableDebitCard: boolean;\n enableDirectDebit: boolean;\n};\n\nconst FailPieceContainer = ({\n pieces,\n handleChangeFailPiece,\n handleShowModal,\n}: ContainerProps) => {\n const dispatch = useDispatch();\n const [targetPiece, setTargetPiece] = useState<TEPInvoice>();\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const handleCreatePaymentCB = (piece: TEPInvoice) => {\n setIsModalOpen(true);\n setTargetPiece(piece);\n dispatch(\n createPaymentCBAsync.request({\n dueDate: new Date().toString(),\n payment: piece,\n }),\n );\n };\n\n if (pieces && pieces.length > 0) {\n const failPieces: FailPieceType[] = [];\n pieces.forEach((p: TEPInvoice) => {\n // ('sent-cancelled' || 'sent-rejected') status payment déclenchant l'affichage de l'encart de paiement\n if (p.status !== 'sent-cancelled') {\n return;\n } else {\n if (\n (p.replacing_payment_count &&\n parseInt(p.replacing_payment_count, 10) > 0) ||\n (p.energy_paid_number_replays &&\n parseInt(p.energy_paid_number_replays, 10) > 0)\n ) {\n return;\n }\n }\n const enableDebitCard: boolean = true;\n const enableDirectDebit: boolean = true;\n\n if (p && (enableDebitCard || enableDirectDebit)) {\n failPieces.push({\n piece: p,\n enableDirectDebit,\n enableDebitCard,\n });\n }\n });\n\n return (\n <>\n {failPieces && failPieces.length > 0 && (\n <h2>{Wording.incidentPaymentText}</h2>\n )}\n {failPieces.map((fp: FailPieceType, index: number) => {\n return (\n <FailPiece\n key={index}\n piece={fp.piece}\n handleChangeFailPiece={handleChangeFailPiece}\n handleShowModal={handleShowModal}\n handleOpenModal={handleCreatePaymentCB}\n />\n );\n })}\n\n <PaymentCBModal\n closeModal={() => setIsModalOpen(false)}\n show={isModalOpen}\n targetPiece={targetPiece}\n />\n </>\n );\n }\n return null;\n};\n\nexport default FailPieceContainer;\n","import React from 'react';\nimport { CustomModal } from '../../components';\nimport WordingConstant from '../../utils/wording.json';\nimport resources from '../../utils/resources';\n\nconst Wording = WordingConstant.ConsumptionPage.SelfWithdrawalModal;\n\ntype Props = {\n energy: 'EL' | 'NG';\n open: boolean;\n handleModal: () => void;\n};\n\nconst SelfWithdrawalModal: React.FC<Props> = ({\n open,\n handleModal,\n energy,\n}) => {\n const WordingCounters = Wording.counters[energy];\n const WordingData = Wording.data[energy];\n const WordingBottom = Wording.bottom[energy];\n\n const imgSrc =\n energy === 'EL'\n ? resources['ic-elec-counters']\n : resources['ic-gas-counters'];\n\n const span = (i: number) => (\n <span className={i === 0 ? 'first-span' : ''}>{i + 1}.</span>\n );\n\n if (!open) {\n return null;\n }\n return (\n <CustomModal\n className=\"self-withdrawal-modal\"\n show={open}\n showCloseButton\n handleClick={handleModal}\n >\n <>\n <h3 className=\"self-withdrawal-modal__title\">\n {Wording.titles[energy]}\n </h3>\n\n <div className=\"self-withdrawal-modal__counters\">\n <p>{WordingCounters.title}</p>\n\n <ul>\n {WordingCounters.list.map((p, i) => (\n <li key={i}>\n {span(i)}\n {p}\n </li>\n ))}\n </ul>\n\n <img src={imgSrc} alt=\"counters\" />\n </div>\n\n <div className=\"self-withdrawal-modal__data\">\n <ul>\n {WordingData.map(({ title, list }, iMain) => (\n <li key={iMain}>\n <p>\n {span(iMain)} {title}\n </p>\n <ul>\n {list.map((t, idx) => (\n <li key={idx}>{t}</li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n\n <div className=\"self-withdrawal-modal__bottom\">\n <p>\n {WordingBottom.main}{' '}\n <a href={WordingBottom.link}>\n {WordingBottom.linkText}\n </a>{' '}\n {WordingBottom.end}\n </p>\n </div>\n </>\n </CustomModal>\n );\n};\n\nexport default SelfWithdrawalModal;\n","import React, { useState } from 'react';\n\nimport { InputEvent } from 'Types';\nimport {\n CustomTable,\n CustomTransfer,\n CustomProgressbar,\n StackedBar,\n Pagination,\n} from '../../components';\nimport { InputItem } from '../../components/CustomTransfer/CustomTransfer';\nimport {\n getFormattedDate,\n displayTimeframe,\n getEnergyConsumption,\n getEnergyPercentage,\n getConsumptionDownloadData,\n sortMeters,\n} from '../../utils/helpers';\nimport resources from '../../utils/resources';\nimport { TMeterRead, TContract } from 'Models';\nimport { ETimeframe, EReadingFrequency } from '../../utils/enums';\n\nimport WordingConstant from '../../utils/wording.json';\nimport SelfWithdrawalModal from './SelfWithdrawalModal';\n\nconst Wording = WordingConstant.ConsumptionPage;\nconst HeaderWording = WordingConstant.TableHeader.consumption;\n\nconst columns = [\n {\n Header: HeaderWording.date,\n accessor: 'meterReadDate',\n Cell: (props: any) => <span>{getFormattedDate(props.value)}</span>,\n width: 100,\n },\n {\n Header: HeaderWording.context,\n accessor: 'consumptionContext',\n width: 230,\n },\n {\n Header: HeaderWording.startDate,\n accessor: 'startDate',\n Cell: (props: any) => <span>{getFormattedDate(props.value)}</span>,\n width: 160,\n },\n {\n Header: HeaderWording.endDate,\n accessor: 'endDate',\n Cell: (props: any) => <span>{getFormattedDate(props.value)}</span>,\n width: 160,\n },\n {\n Header: HeaderWording.quantity,\n accessor: 'quantity',\n Cell: (props: any) => <span>{props.value}</span>,\n width: 180,\n },\n {\n Header: HeaderWording.timeframe,\n accessor: 'timeframe',\n Cell: (props: any) => <span>{props.value}</span>,\n width: 170,\n },\n];\n\nexport type Props = {\n meters: TMeterRead[];\n inputs: InputItem[];\n contract: TContract;\n errorMeterConfig?: string;\n errorMeterReading?: string;\n handleInputError(): boolean;\n handleInputChange(e: InputEvent, index: number): void;\n handleShowModal(section: string): void;\n};\n\ntype MeterConsumption = {\n index: number;\n consumption: number;\n timeframe: ETimeframe;\n};\n\nconst renderSubComponent = (meters: MeterConsumption[]) => {\n return (\n <div className=\"consumption-container__subtable\">\n {meters.map((m: MeterConsumption, index: number) => (\n <div\n key={index}\n className=\"consumption-container__subtable__row\"\n >\n <span className=\"consumption-container__subtable__row__date\" />\n <span className=\"consumption-container__subtable__row__context\" />\n <span className=\"consumption-container__subtable__row__startDate\" />\n <span className=\"consumption-container__subtable__row__startDate\" />\n <span className=\"consumption-container__subtable__row__consumption\">\n {m.consumption}\n </span>\n <span className=\"consumption-container__subtable__row__timeframe\">\n {displayTimeframe(m.timeframe)}\n </span>\n </div>\n ))}\n </div>\n );\n};\n\n/**\n * Function to render last month consumption in percentage\n * compared to current month package quantity\n * Formula : consumption / package\n * The last month is the month which appears as the latest endDate\n * and is always displayed at the last bar ====> month = 11\n *\n * This graph is displayed only if readingFrequency = MONTHLY\n * @param contract The current contract\n * @param consumptions The consumption list within 12 months\n * @param packages The package quantity list within 12 months\n */\nconst renderProgressBar = (\n contract: TContract,\n consumptions: number[],\n packages: number[],\n) => {\n if (contract.deliveryPoint.readingFrequency !== EReadingFrequency.MONTHLY) {\n return null;\n }\n const progress = getEnergyPercentage(consumptions, packages, 11);\n const energyPath =\n contract.energy === 'EL'\n ? resources['ic-elec-on']\n : resources['ic-gas-on'];\n return (\n <CustomProgressbar\n steps={100}\n progress={progress}\n pathImg={energyPath}\n />\n );\n};\n\n/**\n * FC to render the plotted graph\n * packages: we calculate the data list according to the chosen packages\n * consumptions: the calculation is based on startDate and endDate in meterReads\n * 1st case: only 1 package in contract ===> 12 months share the same quantity\n * 2nd case: 2 packages in contract ===> winter 5 months (November-March) and summer 7 months (April-October)\n * @param contract The current contract\n * @param meters List of meter response\n * @param showProgressBar Display the last month consumption in percentage\n */\ntype GraphProps = {\n contract: TContract;\n meters: TMeterRead[];\n showProgressBar: boolean;\n};\n\nexport const Graph = React.memo(\n ({ contract, meters, showProgressBar }: GraphProps) => {\n const nextMeters = sortMeters(meters);\n\n const energyConsumption = getEnergyConsumption(\n nextMeters,\n contract.chosenPackages,\n );\n const consumptions = energyConsumption.consumptions.map(x =>\n Math.round(x),\n );\n\n const highs = energyConsumption.highs.map(x => Math.round(x));\n const lows = energyConsumption.lows.map(x => Math.round(x));\n const totalhours = energyConsumption.totalhours.map(x => Math.round(x));\n const labels = energyConsumption.labels;\n const packages = energyConsumption.packages;\n\n if (nextMeters.length === 0) {\n return null;\n }\n\n return (\n <>\n <StackedBar\n packages={packages}\n consumptions={consumptions}\n highs={highs}\n lows={lows}\n totalhours={totalhours}\n labels={labels}\n />\n {showProgressBar &&\n renderProgressBar(contract, consumptions, packages)}\n </>\n );\n },\n);\n\nconst ConsumptionContainer: React.FC<Props> = ({\n meters,\n inputs,\n contract,\n errorMeterConfig,\n errorMeterReading,\n handleInputError,\n handleInputChange,\n handleShowModal,\n}) => {\n const [isOpen, setOpen] = useState(false);\n const handleModal = () => setOpen(v => !v);\n\n const description = `${Wording.autoTransfer.description1} ${\n inputs[0].maxLength\n } ${\n Wording.autoTransfer[\n `description2-${contract.energy}` as\n | 'description2-NG'\n | 'description2-EL'\n ]\n }`;\n\n const downloadData = getConsumptionDownloadData(meters);\n const downloadFileName = Wording.history.downloadFilename;\n const downloadHeaders = Wording.history.downloadHeaders;\n const showPagination = meters.length > 12;\n\n return (\n <div className=\"consumption-container\">\n <Graph contract={contract} meters={meters} showProgressBar={true} />\n\n <CustomTransfer\n title={Wording.autoTransfer.title}\n modalTitle={\n Wording.SelfWithdrawalModal.titles[\n contract.energy as 'EL' | 'NG'\n ]\n }\n description={description}\n buttonTitle={Wording.autoTransfer.buttonTitle}\n inputs={inputs}\n handleInputChange={handleInputChange}\n handleButtonClick={() => {\n if (handleInputError()) {\n handleShowModal('');\n }\n }}\n error={errorMeterConfig}\n handleModal={handleModal}\n />\n <CustomTable\n data={meters}\n columns={columns}\n defaultPageSize={12}\n pageSize={meters.length}\n sortable={true}\n showPagination={showPagination}\n showPaginationBottom={showPagination}\n title={Wording.history.title}\n downloadButtonTitle={\n meters.length > 0 ? Wording.history.buttonTitle : undefined\n }\n downloadHeaders={downloadHeaders}\n downloadData={downloadData}\n downloadFilename={downloadFileName}\n noDataText={Wording.noDataText}\n error={errorMeterReading}\n className={meters.length > 0 ? '-striped' : ''}\n PaginationComponent={showPagination ? Pagination : undefined}\n SubComponent={(row: any) => {\n return renderSubComponent(meters[row.index].meterRead);\n }}\n />\n\n <SelfWithdrawalModal\n open={isOpen}\n handleModal={handleModal}\n energy={contract.energy}\n />\n </div>\n );\n};\n\nexport default ConsumptionContainer;\n","import React from 'react';\n\nimport ArticleVideoContainer from '../../containers/ArticleVideoContainer';\nimport PaymentStatusContainer from '../../containers/PaymentStatusContainer';\nimport { TimelineStatus } from '../../components';\nimport FailPieceContainer, {\n ContainerProps,\n} from '../FailPieceContainer/FailPieceContainer';\nimport articles from '../../assets/articles.json';\nimport WordingConstant from '../../utils/wording.json';\nimport { TMeterRead, TContract, TAdhoc, TEPInvoice } from 'Models';\nimport { Graph } from '../ConsumptionContainer/ConsumptionContainer';\nimport {\n ECustomerType,\n EPAYInvoiceStatus,\n EPieceType,\n} from '../../utils/enums';\nimport { controlPieces } from '../../utils/helpers/payment-functions';\n\nconst Wording = WordingConstant.HomePage;\n\nexport type Props = ContainerProps & {\n customerNumber: string;\n meters: TMeterRead[];\n contract: TContract;\n customerType: ECustomerType;\n pieces: TEPInvoice[];\n};\n\nconst HomeContainer: React.FC<Props> = ({\n meters,\n contract,\n pieces,\n handleChangeFailPiece,\n handleShowModal,\n customerType,\n customerNumber,\n}) => {\n const currentPieceForTimeline =\n pieces &&\n pieces.find(\n p =>\n p.internal_invoice_nature_code === 'instalment' &&\n p.status === 'reconcilied',\n );\n\n // const piecesToDisplay = controlPieces(pieces);\n\n return (\n <div className=\"home-container\">\n <h2 className=\"home-container__subTitle\">{Wording.subTitle}</h2>\n\n <TimelineStatus\n contract={contract}\n customerType={customerType}\n piece={currentPieceForTimeline as TEPInvoice | undefined}\n />\n\n <PaymentStatusContainer pieces={pieces} />\n\n <FailPieceContainer\n customerNumber={customerNumber}\n pieces={pieces}\n contract={contract}\n handleChangeFailPiece={handleChangeFailPiece}\n handleShowModal={handleShowModal}\n />\n\n <Graph\n contract={contract}\n meters={meters}\n showProgressBar={false}\n />\n\n <h2>{Wording.articleVideoText}</h2>\n <ArticleVideoContainer\n articles={articles.articles}\n videos={articles.videos}\n />\n </div>\n );\n};\n\nexport default HomeContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { TEPInvoice } from 'Models';\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchPiecesAsync,\n fetchEPInvoicesAsync,\n createPaymentAsync,\n resetUpdate,\n} from '../../_actions/payment.actions';\nimport { fetchMeterReadingAsync } from '../../_actions/consumption.actions';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport HomeContainer, {\n Props as ContainerProps,\n} from '../../containers/HomeContainer/HomeContainer';\nimport { ChangePiece } from '../../containers/FailPieceContainer/FailPieceContainer';\nimport { fetchContextAsync } from '../../_actions/profile.actions';\nimport {\n findContractByNumber,\n sortedConsumptionList,\n getTodayDate,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\nimport { initialEPInvoice } from '../../utils/initialState';\n\nconst Wording = WordingConstant.HomePage;\n\nconst WrappedHome = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(HomeContainer);\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n paymentState: state.paymentReducer,\n consumptionState: state.consumptionReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n createPaymentDispatch: createPaymentAsync.request,\n fetchMeterReadingDispatch: fetchMeterReadingAsync.request,\n resetCreatePaymentDispatch: resetUpdate,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n fetchContextDispatch: fetchContextAsync.request,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\ntype State = {\n fields: ChangePiece;\n};\n\nclass HomePage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n dueDate: '',\n piece: initialEPInvoice,\n },\n };\n }\n\n componentDidMount() {\n const url = new URL(window.location.href);\n const userId = url.searchParams.get('client');\n if (userId) {\n sessionStorage.setItem('currentClient', userId);\n const { fetchContextDispatch } = this.props;\n fetchContextDispatch({ customerNbr: userId });\n }\n }\n\n componentDidUpdate(prevProps: Props) {\n if (\n prevProps.contractState.selectedContractNumber !==\n this.props.contractState.selectedContractNumber\n ) {\n const {\n contractState: { selectedContractNumber, contracts },\n profileState: { customerNumber },\n // fetchPiecesDispatch,\n fetchMeterReadingDispatch,\n filesListDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n // fetchPiecesDispatch({\n // contractNbr: selectedContractNumber,\n // });\n fetchMeterReadingDispatch({\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n }\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const payload = {\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch(payload);\n }\n filesListDispatch({\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n handleChangeFailPiece = (ff: TEPInvoice, dd: string) => {\n const { fields } = this.state;\n fields.dueDate = dd;\n fields.piece = ff;\n this.setState({ fields });\n };\n\n handleUpdate = () => {\n const { fields } = this.state;\n const { createPaymentDispatch } = this.props;\n createPaymentDispatch(fields);\n fields.dueDate = '';\n this.setState({ fields });\n };\n\n handleReset = () => {\n const {\n filesListDispatch,\n resetCreatePaymentDispatch,\n profileState: { customerNumber },\n contractState: { selectedContractNumber },\n } = this.props;\n\n resetCreatePaymentDispatch();\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n render() {\n const {\n profileState: { contact, customerType, customerNumber },\n contractState: { contracts, selectedContractNumber, error },\n paymentState: { updateResponse },\n fileState: { payments },\n consumptionState: { meters },\n resetContractDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n return (\n <WrappedHome\n contract={contract}\n customerNumber={customerNumber}\n meters={sortedConsumptionList(meters)}\n pieces={payments}\n handleChangeFailPiece={this.handleChangeFailPiece}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={this.handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(HomePage);\n","import HomePage from './HomePage';\n\nexport default HomePage;\n","import React, {useEffect} from \"react\";\n\ninterface IHubspot {\n portalId: string,\n formId: string,\n}\n\nconst HubspotContactForm = (props: IHubspot) => {\n const { portalId, formId } = props;\n useEffect(() => {\n const script = document.createElement('script');\n script.src='//js-eu1.hsforms.net/forms/embed/v2.js';\n document.body.appendChild(script);\n\n script.addEventListener('load', () => {\n // @TS-ignore\n if (window.hbspt) {\n // @TS-ignore\n window.hbspt.forms.create({\n portalId: portalId,\n formId: formId,\n target: '#hubspotForm'\n })\n }\n });\n }, []);\n\n return (\n <div>\n <div id=\"hubspotForm\"></div>\n </div>\n );\n};\n\ndeclare global {\n interface Window {\n hbspt: any;\n }\n}\n\nexport default HubspotContactForm;","import React, { useState } from 'react';\n\nimport { TWordingItem } from 'Models';\nimport { CustomSelect, CustomTextarea, CustomButton } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nimport HubspotContactForm from './HubspotContactForm';\nimport Config from '../../utils/config';\n\nconst Wording: { [key: string]: any } = WordingConstant.FormPage;\n\nexport type Props = {\n fields: {\n category: string;\n subCategory: string;\n message: string;\n };\n handleChangeTextarea: any;\n handleChangeSelect(item: TWordingItem, type: string): void;\n handleShowModal(section: string): void;\n};\n\nconst FormContainer = ({\n fields,\n handleChangeSelect,\n handleChangeTextarea,\n handleShowModal,\n}: Props) => {\n const [error, setError] = useState<boolean>(false);\n\n const canSend: boolean =\n fields.category !== '' &&\n fields.subCategory !== '' &&\n fields.message !== '';\n\n const categoryOption = Wording.categories.find(\n (c: TWordingItem) => c.value === fields.category,\n );\n const subCategoryOption =\n fields.subCategory !== '' &&\n Wording.subCategory[fields.category] &&\n Wording.subCategory[fields.category].find(\n (c: TWordingItem) => c.value === fields.subCategory,\n );\n\n return (\n <div className=\"form-container\">\n <div className=\"form-container__cart\">\n <h2>{Wording.cart.question}</h2>\n <h3>{Wording.cart.question_2}</h3>\n <h3>{Wording.cart.question_3}</h3>\n <p>{Wording.cart.number}</p>\n <span>{Wording.cart.priceCall}</span>\n <p>{Wording.cart.hours}</p>\n <p>{Wording.cart.email}</p>\n </div>\n\n <h2>{Wording.applicationFormText}</h2>\n\n {/* <h4 className=\"form-container__statusText\">\n {Wording.statusText} <span>{Wording.statusText_span}</span>\n </h4>*/}\n <HubspotContactForm\n portalId={Config.HubspotPortalId as string}\n formId={Config.HubspotFormId as string}\n />\n\n {/*<p>{Wording.categoryTitle}</p>*/}\n {/*<CustomSelect\n id=\"idCategory\"\n value={fields.category !== '' ? categoryOption : ''}\n handleChangeSelect={(val: TWordingItem) =>\n handleChangeSelect(val, 'category')\n }\n options={Wording.categories}\n placeholder={Wording.placeholder}\n error={\n error && fields.category === ''\n ? Wording.error.category\n : null\n }\n />\n <p>{Wording.subCategoryTitle}</p>\n\n <CustomSelect\n id=\"idSubCategory\"\n value={subCategoryOption}\n handleChangeSelect={(val: TWordingItem) =>\n handleChangeSelect(val, 'subCategory')\n }\n options={Wording.subCategory[fields.category]}\n placeholder={Wording.placeholder}\n error={\n error && fields.subCategory === ''\n ? Wording.error.subCategory\n : null\n }\n />\n\n <CustomTextarea\n id=\"idTextarea\"\n placeholder={Wording.placeholderTextarea}\n text={Wording.message}\n onChange={handleChangeTextarea}\n value={fields.message}\n error={\n error && fields.message === ''\n ? Wording.error.message\n : null\n }\n />\n\n <CustomButton\n onClick={() => {\n if (canSend) {\n handleShowModal('');\n } else {\n setError(true);\n }\n }}\n color={canSend ? 'orange' : 'gray'}\n title={Wording.button}\n />*/}\n </div>\n );\n};\n\nexport default FormContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport { TWordingItem } from 'Models';\n\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport FormContainer, {\n Props as ContainerProps,\n} from '../../containers/FormContainer/FormContainer';\nimport { createEventAsync, resetUpdate } from '../../_actions/event.actions';\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport { getTodayDate, findContractByNumber } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.FormPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n eventState: state.eventReducer,\n});\n\nconst dispatchProps = {\n createEventDispatch: createEventAsync.request,\n contractDispatch: fetchContractAsync.request,\n resetCreateEventDispatch: resetUpdate,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedForm = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(FormContainer);\n\ntype State = {\n fields: {\n category: string;\n subCategory: string;\n message: string;\n [key: string]: any;\n };\n};\n\nexport class FormPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n fields: {\n category: '',\n subCategory: '',\n message: '',\n },\n };\n }\n\n handleChangeSelect = (item: TWordingItem, type: string) => {\n const { fields } = this.state;\n fields[type] = item.value;\n if (type === 'category') {\n fields.subCategory = '';\n }\n this.setState({ fields });\n };\n\n handleChangeTextarea = (e: InputEvent) => {\n const { fields } = this.state;\n fields.message = e.currentTarget.value;\n this.setState({ fields });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const { fields } = this.state;\n const {\n profileState,\n contractState,\n createEventDispatch,\n }: Props = this.props;\n\n createEventDispatch({\n contractNbr: contractState.selectedContractNumber,\n customerNbr: profileState.customerNumber,\n date: getTodayDate(),\n category: fields.category,\n subCategory: fields.subCategory,\n message: fields.message,\n });\n\n fields.subCategory = '';\n fields.category = '';\n fields.message = '';\n this.setState({ fields });\n };\n\n render() {\n const { fields } = this.state;\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber },\n eventState: { updateResponse },\n resetCreateEventDispatch,\n }: Props = this.props;\n return (\n <WrappedForm\n fields={fields}\n handleChangeSelect={this.handleChangeSelect}\n handleChangeTextarea={this.handleChangeTextarea}\n // Banner\n title={Wording.title}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetCreateEventDispatch}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(FormPage);\n","import FormPage from './FormPage';\n\nexport default FormPage;\n","import React from 'react';\n\nimport { CustomButton } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst ModificationButtons: React.FC<{\n showButton: boolean;\n condition: boolean;\n disabledValidate?: boolean;\n handleButtonClick(section: string, option?: boolean): void;\n handleButtonCancel(section: string): void;\n handleButtonValidate(): void;\n}> = ({\n showButton,\n condition,\n handleButtonClick,\n handleButtonCancel,\n handleButtonValidate,\n disabledValidate,\n}) => (\n <>\n {showButton ? (\n <CustomButton\n color=\"orange\"\n title={Wording.buttons.update}\n onClick={handleButtonClick}\n />\n ) : (\n <div className=\"profile-container__buttons\">\n <CustomButton\n title={Wording.buttons.cancel}\n onClick={handleButtonCancel}\n color={'gray'}\n />\n\n {!disabledValidate && (\n <CustomButton\n title={Wording.buttons.validate}\n onClick={handleButtonValidate}\n color={condition ? 'orange' : 'gray'}\n />\n )}\n </div>\n )}\n </>\n);\n\nexport default ModificationButtons;\n","import React, { useState } from 'react';\n\nimport ModificationButtons from '../../containers/ProfileContainer/ModificationButtons';\n\nimport { TInvoice, TContract, TEPInvoice } from 'Models';\nimport { CustomTable, CustomSelect } from '../../components';\nimport {\n getFormattedDate,\n getLabelByValue,\n getLabelInvoiceRouting,\n} from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport { IFinance } from '../ProfileContainer/types';\nimport { EInvoiceRoutingMode } from '../../utils/enums';\n\nconst Wording = WordingConstant.BillPage;\nconst HeaderWording = WordingConstant.TableHeader.bill;\n\nexport type Props = {\n // data: TInvoice[];\n data: TEPInvoice[];\n finance: IFinance;\n contract: TContract;\n handleRoutingMode: any;\n handleDownloadBill: (key: string) => Promise<void>;\n setCheckUpdateInvoiceRouting: any;\n handleShowModal(section: string): void;\n};\n\nconst BillContainer: React.FC<Props> = ({\n data,\n finance,\n contract,\n handleRoutingMode,\n handleDownloadBill,\n handleShowModal,\n setCheckUpdateInvoiceRouting,\n}) => {\n const columnsTable = [\n {\n Header: HeaderWording.id,\n accessor: 'invoice_number',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 150,\n },\n {\n Header: HeaderWording.date,\n accessor: 'invoice_date',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 100,\n },\n {\n Header: HeaderWording.dueDate,\n accessor: 'invoice_date_due',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 200,\n },\n {\n Header: HeaderWording.type,\n accessor: 'hgz_internal_invoice_nature_text',\n Cell: (propsCell: any) => <span>{propsCell.value}</span>,\n width: 120,\n },\n {\n Header: HeaderWording.totalAmount,\n accessor: 'invoice_amount_total_signed',\n Cell: ({ original }: any) => {\n if (original.invoice_type === \"out_refund\") {\n return (<span>- {original.invoice_amount_total_signed} €</span>)\n }\n return (<span>{original.invoice_amount_total_signed} €</span>)\n },\n width: 180,\n },\n {\n Header: HeaderWording.totalAmountDu,\n accessor: 'invoice_amount_residual_signed',\n Cell: (propsCell: any) => <span>{propsCell.value} €</span>,\n width: 180,\n },\n {\n Header: HeaderWording.status,\n accessor: 'invoice_amount_residual_signed',\n // Cell: ({ value }: any) => (\n // <span>\n // {value && getLabelByValue(value, Wording.invoiceStatus)}\n // </span>\n // ),\n Cell: (propsCell: any) => {\n if (parseInt(propsCell.value, 10) === 0) {\n return <span>Payée</span>;\n }\n if (parseInt(propsCell.value, 10) > 0) {\n return <span>À payer</span>;\n }\n if (parseInt(propsCell.value, 10) < 0) {\n return <span>Trop perçu</span>;\n }\n },\n\n width: 150,\n },\n {\n Header: HeaderWording.download,\n accessor: 'invoice_number',\n Cell: (propsCell: any) => {\n return (\n <a\n href={'#'}\n onClick={() => handleDownloadBill(propsCell.value)}\n >\n Fichier\n </a>\n );\n },\n width: 150,\n },\n ];\n\n return (\n <div className=\"bill-container\">\n <h2 className=\"bill-container__amount\">{Wording.amount}</h2>\n <CustomTable\n columns={columnsTable}\n data={data}\n defaultPageSize={data && data.length}\n sortable={true}\n noDataText={Wording.noDataText}\n />\n\n <div className=\"invoice-routing\">\n <h2 className=\"invoice-routing__title\">\n {Wording.routingMode.title}\n </h2>\n <div\n className={`invoice-routing__bloc ${\n !finance.checkUpdateInvoiceRouting\n ? 'inactive'\n : 'active'\n }`}\n >\n <span className=\"invoice-routing__label\">\n {Wording.routingMode.label}\n </span>\n\n {!finance.checkUpdateInvoiceRouting ? (\n <p className=\"invoice-routing__value\">\n {getLabelInvoiceRouting(\n contract.finance\n .invoiceRoutingMode as EInvoiceRoutingMode,\n )}\n </p>\n ) : (\n <CustomSelect\n id=\"invoice-routing\"\n defaultValue={finance.invoiceRoutingMode}\n options={Wording.routingMode.values}\n handleChangeSelect={(e: any) =>\n handleRoutingMode(e.value)\n }\n value={finance.invoiceRoutingMode}\n />\n )}\n\n <ModificationButtons\n showButton={!finance.checkUpdateInvoiceRouting}\n condition={true}\n disabledValidate={false}\n handleButtonClick={() =>\n setCheckUpdateInvoiceRouting(true)\n }\n handleButtonCancel={() =>\n setCheckUpdateInvoiceRouting(false)\n }\n handleButtonValidate={() => {\n handleShowModal('billing');\n }}\n />\n </div>\n </div>\n </div>\n );\n};\nexport default BillContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport { fetchApiRequestBlob } from '../../services/api-service';\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchEPInvoicesAsync,\n fetchPiecesAsync,\n} from '../../_actions/payment.actions';\n\nimport BillContainer, {\n Props as ContainerProps,\n} from '../../containers/BillContainer/BillContainer';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\n\nimport { findContractByNumber, getTodayDate } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport {\n EInvoiceRoutingMode,\n EModeUpdateBilling,\n EPieceType,\n} from '../../utils/enums';\nimport { TEPInvoice, TInvoice } from 'Models';\nimport {\n IRequestUpdateBillingEvent,\n resetUpdate,\n updateBillingAsync,\n} from '../../_actions/profile.actions';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\n\nconst Wording = WordingConstant.BillPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n // fetchPiecesDispatch: fetchPiecesAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n setContractDispatch: setContract,\n updateBillingDispatch: updateBillingAsync.request,\n resetBillingUpdateDispatch: resetUpdate,\n};\n\nimport { IFinance } from '../../containers/ProfileContainer/types';\n\ntype State = {\n finance: IFinance;\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedBill = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withModal(),\n withBanner(),\n)(BillContainer);\n\nclass BillPage extends React.Component<Props, State, {}> {\n constructor(props: Props) {\n super(props);\n const { contractState } = this.props;\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n const finance = {\n invoiceRoutingMode:\n contract.finance.invoiceRoutingMode ||\n EInvoiceRoutingMode.EMAIL,\n checkUpdateInvoiceRouting: false,\n };\n\n this.state = {\n finance,\n };\n }\n\n componentDidMount() {\n const {\n contractState: { selectedContractNumber },\n profileState: { customerNumber },\n // fetchPiecesDispatch,\n filesListDispatch,\n }: Props = this.props;\n\n // fetchPiecesDispatch({\n // contractNbr: selectedContractNumber,\n // });\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'INVOICE',\n });\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n // fetchPiecesDispatch,\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n // fetchPiecesDispatch({\n // contractNbr: contractNumber,\n // });\n filesListDispatch({\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n mode: 'INVOICE',\n });\n };\n\n handleDownloadBill = async (key: string) => {\n const payload = {\n documentId: key,\n documentType: EPieceType.INVOICE,\n };\n const path = '/getInvoicePdf';\n const blob = await fetchApiRequestBlob(payload, path);\n if (blob) {\n const fileURL = URL.createObjectURL(blob);\n window.open(fileURL);\n }\n };\n\n handleUpdate = () => {\n const {\n profileState,\n updateBillingDispatch,\n contractState,\n }: Props = this.props;\n const { finance } = this.state;\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.ROUTING_MODE,\n contractNbr: contractState.selectedContractNumber,\n routingMode: finance.invoiceRoutingMode,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: 'PERSONAL_DATA',\n date: getTodayDate(),\n subCategory: 'INVOICE_CONTACT_CHANGE',\n message: Wording.routingMode.invoiceRoutingChange.label,\n },\n };\n updateBillingDispatch(payload);\n };\n\n handleRoutingMode = (value: string) => {\n const { finance } = this.state;\n finance.invoiceRoutingMode = value as EInvoiceRoutingMode;\n this.setState({ finance });\n };\n\n getContract = () => {\n const {\n contractState: { contracts, selectedContractNumber },\n }: Props = this.props;\n return findContractByNumber(selectedContractNumber, contracts);\n };\n\n render() {\n const {\n profileState: { contact, customerType, updateResponse },\n contractState: { contracts, selectedContractNumber },\n fileState: { files },\n resetBillingUpdateDispatch,\n }: Props = this.props;\n const { finance } = this.state;\n const invoices = files.financialPieces\n ? files.financialPieces.result.invoice_list\n : [];\n const setCheckUpdateInvoiceRouting = (value: boolean) => {\n this.setState(prevState => ({\n finance: {\n ...prevState.finance,\n checkUpdateInvoiceRouting: value,\n },\n }));\n };\n\n const handleReset = () => {\n resetBillingUpdateDispatch();\n this.setState(prevState => ({\n finance: {\n ...prevState.finance,\n checkUpdateInvoiceRouting: false,\n },\n }));\n };\n\n return (\n <WrappedBill\n data={invoices as TEPInvoice[]}\n handleDownloadBill={this.handleDownloadBill}\n handleRoutingMode={this.handleRoutingMode}\n finance={finance}\n contract={this.getContract()}\n setCheckUpdateInvoiceRouting={setCheckUpdateInvoiceRouting}\n // Banner\n title={Wording.title}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n // Modal\n modalMessage={Wording.routingMode.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(BillPage);\n","import BillPage from './BillPage';\n\nexport default BillPage;\n","import React from 'react';\n\nimport { TFile, TFiles } from 'Models';\nimport { CustomTable, CustomButton } from '../../components';\n\nimport { getLabelByValue, getFormattedDate } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.FilePage;\nconst HeaderWording = WordingConstant.TableHeader.file;\n\ntype Props = {\n data: TFiles[];\n isLoading: boolean;\n handleDownloadProofOfResidence(): void;\n handleDownloadFile(key: string, name: string): any;\n};\n\nconst FileContainer: React.FC<Props> = props => {\n const columnsTable = [\n /*{\n Header: HeaderWording.date,\n accessor: 'documentDate',\n Cell: (propsCell: any) => getFormattedDate(propsCell.value),\n width: 150,\n },*/\n {\n Header: HeaderWording.type,\n accessor: 'documentName',\n Cell: (propsCell: any) =>\n getLabelByValue(propsCell.value, Wording.fileNameMapping) ||\n 'Document',\n\n width: 200,\n },\n {\n Header: HeaderWording.contractNbr,\n accessor: 'contractNbr',\n width: 200,\n },\n {\n Header: HeaderWording.energy,\n accessor: 'energyType',\n width: 180,\n },\n {\n Header: HeaderWording.download,\n accessor: 'documentKey',\n Cell: (propsCell: any) => {\n const { value, original } = propsCell;\n\n const name = getLabelByValue(\n original.documentName,\n Wording.fileNameMapping,\n );\n\n return (\n <a\n href={`#telechargement:${name\n .toLocaleLowerCase()\n .replace(' ', '_')}`}\n onClick={() =>\n props.handleDownloadFile(\n value,\n original.documentName,\n )\n }\n >\n Fichier\n </a>\n );\n },\n width: 200,\n },\n ];\n\n return (\n <div className=\"file-container\">\n <h2 className=\"file-container__file\">{Wording.file}</h2>\n <CustomTable\n columns={columnsTable}\n data={props.data}\n defaultPageSize={props.data && props.data.length}\n noDataText={Wording.noDataText}\n sortable={true}\n />\n\n <p className=\"file-container__paragraph\">\n {Wording.description.generalCondition}{' '}\n <a\n href={WordingConstant.Common.wekiwi}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {Wording.description.wekiwiLink}\n </a>\n {Wording.description.section}\n <b>\n {' '}\n <a\n href={Wording.CGVLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {Wording.description.CGV}\n </a>\n </b>\n .\n </p>\n <CustomButton\n color=\"orange\"\n title={Wording.buttons.ProofOfResidence}\n isLoading={props.isLoading}\n onClick={\n !props.isLoading\n ? props.handleDownloadProofOfResidence\n : null\n }\n />\n </div>\n );\n};\n\n// ReactPDF.render(<ProofOfPayment />, `${__dirname}/output.pdf`);\n\nexport default FileContainer;\n","import FileContainer from './FileContainer';\n\nexport default FileContainer;\n","const base64ToArrayBuffer = (_base64Str: string) => {\n const binaryString = window.atob(_base64Str);\n const binaryLen = binaryString.length;\n const bytes = new Uint8Array(binaryLen);\n // tslint:disable-next-line:no-increment-decrement\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i);\n bytes[i] = ascii;\n }\n return bytes;\n};\n\nconst showDocument = (_base64Str: string, _contentType: string) => {\n const byte = base64ToArrayBuffer(_base64Str);\n const blob = new Blob([byte], { type: _contentType });\n window.open(URL.createObjectURL(blob), '_blank');\n};\n\nexport { showDocument };\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport FileContainer from '../../containers/FileContainer';\nimport withBanner from '../../libraries/withBanner';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\n\nimport { initialCustomerFullName } from '../../utils/initialState';\n\nimport apiRequest, { fetchApiRequestBlob } from '../../services/api-service';\nimport { findContractByNumber } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nimport { TFile, TFiles } from 'Models';\nimport { EEnergy, EFileName } from '../../utils/enums';\nimport { includes } from 'lodash';\n\nimport { GetSupportingDocumentsRequest } from '../../_actions/payment.actions';\nimport { showDocument } from '../../utils/helpers/pdf';\n\nconst Wording = WordingConstant.FilePage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedFile = withBanner()(FileContainer);\n\ntype State = {\n isLoading: boolean;\n};\n\nexport class FilePage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n isLoading: false,\n };\n }\n\n componentDidMount() {\n const {\n contractState: { selectedContractNumber },\n filesListDispatch,\n profileState: { customerNumber },\n }: Props = this.props;\n\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'DOCUMENT',\n });\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const payload = {\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n mode: 'DOCUMENT',\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n filesListDispatch(payload);\n };\n\n handleDownloadFile = (key: string, name: string) => {\n this.responseFetchPDF(\n {\n documentKey: key,\n },\n '/getDocument',\n name,\n );\n };\n\n handleDownloadProofOfResidence = (): void => {\n const {\n contractState: { selectedContractNumber, contracts },\n profileState: {\n customerNumber,\n customerType,\n contact: { customerFullName, address },\n },\n } = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n const thirdParties = contract.thirdParties;\n const coholderName = {\n civility: 'MR',\n firstName: '',\n lastName: '',\n };\n if (thirdParties) {\n const coholder = thirdParties.find(p => p.role === 'COHOLDER');\n if (coholder && coholder.civility && coholder.firstName) {\n coholderName.civility = coholder.civility;\n coholderName.firstName = coholder.firstName;\n coholderName.lastName = coholder.lastName || '';\n }\n }\n\n const payload: GetSupportingDocumentsRequest = {\n mode: 'proofOfResidence',\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n customerType,\n cunstomerName: customerFullName || { ...initialCustomerFullName },\n coholderName,\n energyType: contract.energy,\n subscriptionDate: contract.subscriptionDate,\n residenceAdress: {\n number: contract.deliveryPoint.address.number,\n street: contract.deliveryPoint.address.street,\n netArea: contract.deliveryPoint.address.netArea,\n postalCode: contract.deliveryPoint.address.postalCode,\n townName: contract.deliveryPoint.address.townName,\n country: contract.deliveryPoint.address.country,\n },\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n };\n\n this.handleSupportingDocuments(payload);\n\n this.setState({ isLoading: true });\n };\n\n handleSupportingDocuments = (payload: any) =>\n apiRequest({\n path: '/getSupportingDocuments',\n method: 'POST',\n body: payload,\n })\n .toPromise()\n .then((res: any) => {\n this.setState({ isLoading: false });\n showDocument(res, 'application/pdf');\n });\n\n responseFetchPDF = async (payload: any, path: string, pdfName: string) => {\n if (pdfName === EFileName.EXPLANATIONS_OFFER_CAPACITY) {\n await this.handleOpenLocalFile(payload.documentKey);\n return this.setState({ isLoading: false });\n }\n\n const blob = await fetchApiRequestBlob(payload, path);\n\n if (blob) {\n const fileURL = URL.createObjectURL(blob);\n\n window.open(fileURL);\n }\n this.setState({ isLoading: false });\n };\n\n handleOpenLocalFile = async (key: string) =>\n import(`../../assets/documents/${key}`).then(file => {\n window.open(file.default);\n });\n\n checkIsCAPA = () => {\n const {\n contractState: { contracts, selectedContractNumber },\n }: Props = this.props;\n\n const currentContract = contracts.find(\n ct => ct.contractNumber === selectedContractNumber,\n );\n\n if (currentContract && currentContract.energy === EEnergy.EL) {\n return includes(currentContract.chosenProduct.productCode, 'CAPA')\n ? currentContract\n : undefined;\n }\n\n return undefined;\n };\n\n injectExplanationsOfferCapacityFile = (files?: TFiles[]): TFiles[] => {\n const capaContract = this.checkIsCAPA();\n\n if (capaContract !== undefined) {\n const prepare: any = {\n documentName: EFileName.EXPLANATIONS_OFFER_CAPACITY,\n documentKey: Wording.EXPLANATIONS_OFFER_CAPACITY_key,\n contractNbr: capaContract.contractNumber,\n energyType: capaContract.energy,\n };\n if (!files) return [prepare];\n return [prepare, ...files];\n }\n if (!files) return [];\n return files;\n };\n\n sortFiles = (file: TFiles[]) => {\n if (file) {\n return file.sort((a: TFiles, b: TFiles) => {\n if (a.documentDate > b.documentDate) {\n return -1;\n }\n if (a.documentDate < b.documentDate) {\n return 1;\n }\n return 0;\n });\n }\n return [];\n };\n\n filesToContainer = (docs: TFiles[]) => {\n return this.sortFiles(this.injectExplanationsOfferCapacityFile(docs));\n };\n\n render() {\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber, error },\n fileState: { files },\n resetContractDispatch,\n }: Props = this.props;\n const tab = files.documentsList;\n const { isLoading } = this.state;\n return (\n <WrappedFile\n data={this.filesToContainer(files.documentsList)}\n isLoading={isLoading}\n handleDownloadProofOfResidence={\n this.handleDownloadProofOfResidence\n }\n handleDownloadFile={this.handleDownloadFile}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(FilePage);\n","import FilePage from './FilePage';\n\nexport default FilePage;\n","import React, { FC, useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Modal } from '../../components';\nimport { resetSupportingDocumentError } from '../../_actions/payment.actions';\n\ntype Props = {\n errorMessage?: string;\n};\n\nconst SupportingDocumentErrorModal: FC<Props> = ({ errorMessage }) => {\n const dispatch = useDispatch();\n\n const handleClose = useCallback(() => {\n dispatch(resetSupportingDocumentError());\n }, []);\n\n return (\n <Modal\n state={1}\n show={errorMessage !== undefined}\n title={'Votre justificatif n’est pas disponible'}\n description={errorMessage || ''}\n showCloseButton\n handleCancel={handleClose}\n />\n );\n};\n\nexport default SupportingDocumentErrorModal;\n","import React, { useMemo } from 'react';\n\nimport { TPiece, TAdhoc, TContract, TEPInvoice } from 'Models';\n\nimport FailPieceContainer, {\n BaseProps,\n} from '../FailPieceContainer/FailPieceContainer';\nimport PaymentStatusContainer from '../PaymentStatusContainer';\n\nimport { getLabelByValue } from '../../utils/helpers';\nimport { CustomTable, Balance, CustomButton } from '../../components';\n\nimport { EPieceType } from '../../utils/enums';\nimport WordingConstant from '../../utils/wording.json';\nimport {\n GenerateProofProps,\n GenerateTimelineProps,\n} from '../../pages/PaymentPage/PaymentPage';\nimport { PaymentSupportingDocuments } from '../../_reducers/payment.reducer';\nimport resources from '../../utils/resources';\n\nimport SupportingDocumentErrorModal from './SupportingDocumentErrorModal';\n\nconst Wording = WordingConstant.PaymentPage;\nconst HeaderWording = WordingConstant.TableHeader.payment;\n\nconst humanizeLabel = (piece: TEPInvoice) => {\n const status = piece.status;\n\n let isInvoiceRunNumberMIGR = false;\n if (piece.invoicing_run_number) {\n const value = piece.invoicing_run_number.slice(0, 4);\n isInvoiceRunNumberMIGR = value === 'MIGR';\n }\n\n switch (status) {\n case 'sent':\n return 'Transmis';\n case 'reconciled':\n return 'Soldé';\n case 'sent-cancelled':\n return 'Rejeté';\n case 'posted':\n if (piece.payment_type === 'outbound') return 'Remboursé';\n if (isInvoiceRunNumberMIGR) return 'Soldé';\n if (piece.payment_method_code === 'sdd') return 'Transmis';\n return 'Soldé';\n default:\n return '';\n }\n};\n\nexport type Props = BaseProps & {\n pieces: TEPInvoice[];\n contract: TContract;\n customerNumber: string;\n supportingDocument: PaymentSupportingDocuments;\n generateProof: (props: GenerateProofProps) => void;\n generateTimeline: (props: GenerateTimelineProps) => void;\n};\n\nconst PaymentContainer: React.FC<Props> = ({\n pieces,\n contract,\n handleChangeFailPiece,\n handleShowModal,\n customerNumber,\n supportingDocument,\n generateProof,\n generateTimeline,\n}) => {\n const filteredPieces = useMemo(() => {\n if (!pieces) return [];\n return (\n pieces.filter(el => {\n return (\n humanizeLabel(el) !== '' &&\n !(\n (el.replacing_payment_count &&\n parseInt(el.replacing_payment_count, 10) > 0) ||\n (el.energy_paid_number_replays &&\n parseInt(el.energy_paid_number_replays, 10) > 0)\n )\n );\n }) || []\n );\n }, [pieces]);\n\n const columnsTable = [\n {\n Header: HeaderWording.date,\n accessor: 'date',\n // Cell: (propsCell: any) => getFormattedDate(propsCell.value),\n Cell: ({ value }: any) => <span>{value}</span>,\n width: 150,\n },\n {\n Header: HeaderWording.id,\n accessor: 'communication',\n Cell: ({ value }: any) => <span>{value}</span>,\n width: 200,\n },\n {\n Header: HeaderWording.type,\n accessor: 'internal_invoice_nature_text',\n Cell: ({ value }: any) => (\n // getLabelByValue(value, Wording.typePieces),\n <span>{value}</span>\n ),\n width: 150,\n },\n /*{\n Header: HeaderWording.dueDate,\n accessor: 'dueDate',\n Cell: (propsCell: any) => getFormattedDate(propsCell.value),\n width: 180,\n },\n */\n {\n Header: HeaderWording.totalAmount,\n accessor: 'amount',\n Cell: ({ original }: any) => {\n if (original.payment_type === \"outbound\") {\n return (<span>- {original.amount} €</span>)\n }\n return (<span>{original.amount} €</span>)\n },\n width: 150,\n },\n /*{\n Header: HeaderWording.amountToPay,\n accessor: 'amountToPay',\n width: 250,\n Cell: (propsCell: any) => <span>{propsCell.value} €</span>,\n },*/\n {\n Header: HeaderWording.status,\n accessor: 'status',\n Cell: (propsCell: { original: any }) =>\n humanizeLabel(propsCell.original),\n // Cell: ({ value }: any) =>\n // <span>{value}</span>,\n\n width: 200,\n },\n\n {\n Header: () => {\n return (\n <div className=\"proof-header\">\n {HeaderWording.proof}{' '}\n {supportingDocument.loading && (\n <img\n className=\"proof-header-loader\"\n src={resources['ic-loader']}\n />\n )}\n </div>\n );\n },\n accessor: 'status',\n Cell: ({ original }: any) => {\n const invoice: TEPInvoice = original;\n if (humanizeLabel(invoice) === 'Soldé') {\n return (\n <CustomButton\n color=\"orange\"\n title=\"Générer le justificatif\"\n disabled={supportingDocument.loading}\n onClick={() =>\n generateProof({\n contract,\n piece: invoice,\n })\n }\n />\n );\n }\n\n return null;\n },\n\n width: 200,\n },\n ];\n\n // const getBalanceValue = (pieces: TPiece[]) => {\n // const filteredPieces = pieces.filter(\n // (p: TPiece) => p.type === EPieceType.INVOICE,\n // );\n // const reducer = (acc: number, current: TPiece) =>\n // acc + parseFloat((current as any).amountToPay);\n\n // return filteredPieces.reduce(reducer, 0).toFixed(2);\n // };\n\n const isDataAvailableForTimeline = () => {\n // if (!findLastValidPiece(pieces).lastValid) return false;\n // const data = findLastValidPiece(pieces);\n // const dataTrans = findLastValidTransaction(\n // (data.lastValid as TPiece).processusList[0].transactions,\n // );\n // if (!!dataTrans) return false;\n // else\n if (contract && !contract.installmentFrequency) return false;\n return contract && contract.chosenPackages ? true : false;\n };\n\n // const contractBalance = getBalanceValue(pieces);\n // const piecesToDisplay = controlPieces(pieces);\n\n return (\n <div className=\"payment-container\">\n <div className=\"balanceTimeline\">\n <div className=\"balance\">\n <h2>{Wording.balanceTitle}</h2>\n <Balance>Non disponible</Balance>\n </div>\n <div className=\"timeline\">\n <CustomButton\n title={Wording.timeline.title}\n color=\"orange\"\n disabled={!isDataAvailableForTimeline()}\n onClick={() => {\n generateTimeline({\n contract,\n pieces: filteredPieces,\n });\n }}\n ></CustomButton>\n </div>\n </div>\n\n <h2> {Wording.title} </h2>\n <CustomTable\n columns={columnsTable}\n data={filteredPieces}\n defaultPageSize={filteredPieces ? filteredPieces.length : 0}\n sortable={true}\n noDataText={Wording.noDataText}\n />\n\n <PaymentStatusContainer pieces={filteredPieces} />\n\n <FailPieceContainer\n contract={contract}\n customerNumber={customerNumber}\n pieces={filteredPieces}\n handleChangeFailPiece={handleChangeFailPiece}\n handleShowModal={handleShowModal}\n />\n\n <SupportingDocumentErrorModal\n errorMessage={supportingDocument.errorMessage}\n />\n </div>\n );\n};\n\nexport default PaymentContainer;\n","import { Font } from '@react-pdf/renderer';\n\nimport Montserrat400 from '../../../assets/fonts/Montserrat/Montserrat-Thin.ttf';\nimport Montserrat800 from '../../../assets/fonts/Montserrat/Montserrat-ExtraBold.ttf';\nimport Montserrat100 from '../../../assets/fonts/Montserrat/Montserrat-Light.ttf';\n\nFont.register({\n family: 'Montserrat',\n fonts: [\n {\n fontWeight: 400,\n src: Montserrat400,\n },\n {\n fontWeight: 800,\n src: Montserrat800,\n },\n {\n fontWeight: 100,\n src: Montserrat100,\n },\n ],\n});\n","import React from 'react';\n\nimport { Image, View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Logo from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png';\n\nimport Wording from '../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n backgroundColor: '#ffb40a',\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'space-around',\n flex: 0,\n },\n img: {\n width: '110px',\n height: '55px',\n padding: '10px 0px',\n },\n text: {\n textTransform: 'uppercase',\n fontWeight: 'ultrabold',\n fontFamily: 'Montserrat',\n },\n});\n\nconst headerWording = Wording.header;\n\nexport default () => (\n <View style={styles.container}>\n <Text style={styles.text}>{headerWording.title}</Text>\n <Image style={styles.img} src={Logo} />\n </View>\n);\n","import { createContext } from 'react';\nimport { TimelineProps } from '../type';\n\nconst context = createContext<TimelineProps>({} as any);\n\nexport const TimelineProvider = context.Provider;\n\nexport default context;\n","import { useContext } from 'react';\n\nimport TimelineContext from './TimelineContext';\n\nimport { TimelineProps } from '../type';\n\nexport default function useTimeline(): TimelineProps {\n return useContext(TimelineContext);\n}\n","import React, { Fragment } from 'react';\n\nimport ElecIcon from '../../../../assets/icons/PDFs/ProofOfPayment/ic-elec.png';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\nimport { useTimeline } from '../lib';\n\nimport WordingConstant from '../wording.json';\n\nconst Wording = WordingConstant;\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'column',\n display: 'flex',\n borderWidth: 2,\n borderColor: '#000000',\n borderRadius: '25',\n width: '80%',\n marginTop: 15,\n marginLeft: '10%',\n padding: 5,\n },\n subContainerImage: {\n width: '20%',\n display: 'flex',\n alignItems: 'center',\n },\n subContainerLeft: {\n flexDirection: 'column',\n alignItems: 'flex-end',\n width: '35%',\n fontFamily: 'Montserrat',\n marginRight: 0,\n fontSize: 11,\n fontWeight: 'bold',\n },\n subContainerRight: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n width: '40%',\n marginLeft: 25,\n fontFamily: 'Montserrat',\n fontSize: 11,\n fontWeight: 100,\n },\n whiteBloc: {\n flexDirection: 'row',\n },\n energyImg: {\n width: 40,\n height: 60,\n marginTop: 20,\n },\n lastText: {\n marginTop: 15,\n },\n});\n\nconst CustomerContainer = () => {\n const { customer, address, contract } = useTimeline();\n\n return (\n <Fragment>\n <View style={styles.container}>\n <View style={styles.whiteBloc}>\n <View style={styles.subContainerImage}>\n <Image style={styles.energyImg} src={ElecIcon} />\n </View>\n <View style={styles.subContainerLeft}>\n <Text>{Wording.customerContainer.address}</Text>\n <Text>{Wording.customerContainer.postalCode}</Text>\n <Text>{Wording.customerContainer.townName}</Text>\n <Text>{Wording.customerContainer.clientName}</Text>\n <Text>{Wording.customerContainer.clientNumber}</Text>\n <Text style={styles.lastText}>\n {Wording.customerContainer.contractNumber}\n </Text>\n </View>\n <View style={styles.subContainerRight}>\n <Text>\n {address.number} {address.street}\n </Text>\n <Text>{address.postalCode}</Text>\n <Text>{address.townName}</Text>\n <Text>\n {customer.name.lastName} {customer.name.firstName}\n </Text>\n <Text>{customer.customerNbr}</Text>\n <Text style={styles.lastText}>\n {contract.contractNumber}\n </Text>\n </View>\n </View>\n </View>\n </Fragment>\n );\n};\n\nexport default CustomerContainer;\n","import React, { Fragment } from 'react';\n\nimport { View, StyleSheet, Text, Image } from '@react-pdf/renderer';\nimport { useTimeline } from '../lib';\n\nimport WordingConstant from '../wording.json';\nimport { TPiece, TTransaction, TEPInvoice } from 'Models';\nimport {\n findLastValidPiece,\n findLastValidTransaction,\n} from '../../../../utils/helpers';\nimport { isSameYear, parse } from 'date-fns';\n\nconst W = WordingConstant.contractContainer;\n\nconst styles = StyleSheet.create({\n container: {\n display: 'flex',\n alignItems: 'center',\n },\n subContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n text: {\n fontFamily: 'Montserrat',\n fontWeight: 'bold',\n fontSize: 11,\n marginTop: 15,\n },\n containerDate: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n containerDateMarginTop: {\n marginTop: 15,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n date: {\n fontFamily: 'Montserrat',\n fontWeight: 'thin',\n fontSize: 11,\n marginLeft: 50,\n },\n dateBold: {\n fontFamily: 'Montserrat',\n fontWeight: 'bold',\n fontSize: 11,\n },\n});\n\nconst ContractContainer = () => {\n const { payments, contract } = useTimeline();\n const data = findLastValidPiece(payments);\n const subscriptionDate = new Date(contract.subscriptionDate);\n const effectiveStartDate = new Date(contract.effectiveStartDate);\n // const dataTransaction = findLastValidTransaction(\n // (data.lastValid as TEPInvoice).processusList[0].transactions,\n // ).lastValidTransaction;\n const dueDate = data.lastValid\n ? parse(\n data.lastValid.invoicing_period_end_date,\n 'dd/MM/yyyy',\n new Date(),\n )\n : contract.lastRenewDate\n ? new Date(contract.lastRenewDate)\n : effectiveStartDate;\n\n const nextYearDate = contract.lastRenewDate\n ? new Date(contract.lastRenewDate)\n : new Date(effectiveStartDate);\n\n if (contract.lastRenewDate) {\n if (\n isSameYear(\n parse(contract.lastRenewDate, 'yyyy-MM-dd', new Date()),\n dueDate,\n )\n ) {\n nextYearDate.setFullYear(dueDate.getFullYear() + 1);\n } else {\n nextYearDate.setFullYear(dueDate.getFullYear());\n }\n } else {\n if (isSameYear(effectiveStartDate, dueDate)) {\n nextYearDate.setFullYear(dueDate.getFullYear() + 1);\n } else {\n nextYearDate.setFullYear(dueDate.getFullYear());\n }\n }\n\n const sentence = `${W.timelineFrom} ${dueDate.toLocaleString('default', {\n month: 'long',\n year: 'numeric',\n })} ${W.to} ${nextYearDate.toLocaleString('default', {\n month: 'long',\n year: 'numeric',\n })} / ${W.kiwi}`;\n\n return (\n <View style={styles.container}>\n <Text style={styles.text}>{sentence}</Text>\n <View style={styles.subContainer}>\n <View>\n <View style={styles.containerDateMarginTop}>\n <Text style={styles.dateBold}>\n {W.subscriptionDate} :\n </Text>\n <Text style={styles.date}>\n {subscriptionDate.toLocaleDateString()}\n </Text>\n </View>\n <View style={styles.containerDate}>\n <Text style={styles.dateBold}>\n {W.contractStartDate} :\n </Text>\n <Text style={styles.date}>\n {effectiveStartDate.toLocaleDateString()}\n </Text>\n </View>\n {contract.lastRenewDate && (\n <View style={styles.containerDate}>\n <Text style={styles.dateBold}>\n Date de renouvellement :\n </Text>\n <Text style={styles.date}>\n {new Date(\n contract.lastRenewDate,\n ).toLocaleDateString()}\n </Text>\n </View>\n )}\n </View>\n </View>\n </View>\n );\n};\n\nexport default ContractContainer;\n","import { View, StyleSheet, Text } from '@react-pdf/renderer';\nimport React from 'react';\n\nimport { useTimeline } from '../lib';\n\nimport Wording from '../wording.json';\n\nimport {\n getDateFormatted,\n findLastValidPiece,\n findLastValidTransaction,\n} from '../../../../utils/helpers';\n\nimport {\n Table,\n Header,\n Cell,\n DataCell,\n Body,\n} from '../../ProofOfPayment/components/Table';\nimport { TPiece, TTransaction, TEPInvoice } from 'Models';\nimport { ETimeframe } from '../../../../utils/enums';\nimport { differenceInMonths, parse } from 'date-fns';\n\ntype Frequencies =\n | 'MONTHLY'\n | 'BIMONTHLY'\n | 'QUARTERLY'\n | 'FOURMONTHLY'\n | 'BIANNUAL'\n | 'UNKNOWN';\n\nconst { frequencyMapping, timelineTable } = Wording;\n\nconst styles = StyleSheet.create({\n container: {\n width: '80%',\n marginLeft: '10%',\n marginTop: 25,\n },\n header: {\n backgroundColor: '#EFEFEF',\n padding: '5px 0',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n },\n body: {\n padding: '3px 10px',\n },\n rowStyle: {\n backgroundColor: '#000000',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n },\n total: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n border: '1pt solid black',\n justifyContent: 'flex-start',\n alignItems: 'center',\n height: 20,\n marginTop: 10,\n backgroundColor: '#EFEFEF',\n },\n totalTitle: {\n width: '80%',\n padding: '2px',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n fontFamily: 'Montserrat',\n fontWeight: 800,\n fontSize: 11,\n height: '100%',\n },\n totalValue: {\n width: '20%',\n justifyContent: 'center',\n alignItems: 'center',\n fontFamily: 'Montserrat',\n fontWeight: 100,\n fontSize: 11,\n height: '100%',\n borderLeft: '1pt solid black',\n backgroundColor: '#FFFFFF',\n },\n info: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 5,\n fontFamily: 'Montserrat',\n flexDirection: 'row',\n fontSize: 6,\n width: '100%',\n },\n infoNB: {\n fontWeight: 800,\n },\n infoText: {\n fontWeight: 100,\n },\n});\n\nconst TimelineTable = () => {\n const { payments, contract } = useTimeline();\n const lastValidPiece = findLastValidPiece(payments).lastValid as any;\n const dueDate = lastValidPiece\n ? (lastValidPiece as TEPInvoice).invoicing_period_start_date\n : contract.effectiveStartDate;\n // console.log('dueDate:', dueDate);\n // const dataTransaction = findLastValidTransaction(\n // (lastValidPiece as TPiece).processusList[0].transactions,\n // );\n const chosenPackage =\n contract.chosenPackages && (contract.chosenPackages[0] as any);\n const rate = chosenPackage ? chosenPackage.amount : 0;\n // console.log('rate:', rate);\n const dataToDisplay = new Array();\n let globalAmount = 0;\n\n const frequency = () => {\n switch (contract.installmentFrequency) {\n case 'MONTHLY':\n return 1; // 12\n case 'BIMONTHLY':\n return 2; // 6\n case 'QUARTERLY':\n return 3; // 4\n case 'FOURMONTHLY':\n return 4; // 3\n default:\n return 0; // Error\n }\n };\n\n const getMonthDifference = (start: any, end: any) => {\n const startDate: Date = parse(start, 'dd/MM/yyyy', new Date());\n const endDate: Date = parse(end, 'dd/MM/yyyy', new Date());\n const timeDiff: number = Math.abs(\n endDate.getTime() - startDate.getTime(),\n );\n return Math.round(timeDiff / (1000 * 60 * 60 * 24) / 30) as number;\n };\n\n const energyType = (type: string) => {\n return 'EL' === type ? 'Electricité' : 'Gaz';\n };\n\n const frequencyWording = (value: number) => {\n switch (value) {\n case 1:\n return 'MONTHLY';\n case 2:\n return 'BIMONTHLY';\n case 3:\n return 'QUARTERLY';\n case 4:\n return 'FOURMONTHLY';\n default:\n return 'Inconnue';\n }\n };\n\n const dataObject = (\n energy: string,\n rate: number,\n installmentFrequency: string,\n date: string,\n amount: number,\n ) => {\n return {\n energyType: energyType(energy),\n rate,\n installmentFrequency:\n frequencyMapping[installmentFrequency as Frequencies],\n date,\n amountToPay: amount,\n };\n };\n\n const getPricePerMonth = (month: number) => {\n if (contract.chosenPackages && !contract.chosenPackages[1]) {\n return parseInt(rate, 10);\n }\n const secondChosenPackage =\n contract.chosenPackages && (contract.chosenPackages[1] as any);\n const summerPrice: number =\n chosenPackage.timeframe === ETimeframe.SUMMER\n ? chosenPackage.amount\n : secondChosenPackage.amount;\n const winterPrice: number =\n chosenPackage.timeframe === ETimeframe.WINTER\n ? chosenPackage.amount\n : secondChosenPackage.amount;\n return month <= 9 && month >= 3 ? summerPrice : winterPrice;\n };\n\n const getAmountPerFrequency = (month: number) => {\n let amount: number = 0;\n let i: number = month;\n while (i < month + frequency()) {\n amount = Number(amount) + Number(getPricePerMonth(i % 12));\n i = Number(i) + 1;\n }\n globalAmount = Number(globalAmount) + Number(amount);\n return amount;\n };\n\n const buildData = () => {\n let monthDiff = frequency();\n let date = new Date();\n date = parse(dueDate, 'dd/MM/yyyy', new Date());\n if (lastValidPiece) {\n // console.log('start', lastValidPiece.invoicing_period_start_date);\n // console.log('end', lastValidPiece.invoicing_period_end_date);\n monthDiff = getMonthDifference(\n lastValidPiece.invoicing_period_start_date,\n lastValidPiece.invoicing_period_end_date,\n );\n monthDiff = monthDiff === 0 ? 1 : monthDiff;\n globalAmount = Number(globalAmount) + Number(lastValidPiece.amount);\n dataToDisplay.push(\n dataObject(\n contract.energy,\n Number.isInteger(lastValidPiece.amount / monthDiff)\n ? lastValidPiece.amount / monthDiff\n : parseFloat(\n (lastValidPiece.amount / monthDiff).toFixed(2),\n ),\n frequencyWording(monthDiff),\n lastValidPiece.date,\n lastValidPiece.amount.split('.')[0],\n ),\n );\n } else {\n dataToDisplay.push(\n dataObject(\n contract.energy,\n getPricePerMonth(date.getMonth()),\n contract.installmentFrequency,\n date.toLocaleDateString(),\n getAmountPerFrequency(date.getMonth()),\n ),\n );\n // console.log('dataToDisplay', dataToDisplay);\n }\n const endDate = new Date(\n contract.lastRenewDate\n ? contract.lastRenewDate\n : contract.effectiveStartDate,\n );\n endDate.setFullYear(endDate.getFullYear() + 1);\n const remainingMonth = differenceInMonths(endDate, date) + 1;\n\n date.setDate(date.getDate() + 1);\n date = new Date(\n date.getFullYear(),\n date.getMonth() + monthDiff,\n parseInt(contract.finance.debitDay, 10),\n );\n dataToDisplay.push(\n dataObject(\n contract.energy,\n getPricePerMonth(date.getMonth()),\n contract.installmentFrequency,\n date.toLocaleDateString(),\n getAmountPerFrequency(date.getMonth()),\n ),\n );\n let i: number = 2;\n while (i < remainingMonth / frequency()) {\n date = new Date(\n date.getFullYear(),\n date.getMonth() + frequency(),\n parseInt(contract.finance.debitDay, 10),\n );\n dataToDisplay.push(\n dataObject(\n contract.energy,\n getPricePerMonth(date.getMonth()),\n contract.installmentFrequency,\n date.toLocaleDateString(),\n getAmountPerFrequency(date.getMonth()),\n ),\n );\n i = Number(i) + 1;\n }\n // console.log('dataToDisplay', dataToDisplay);\n };\n\n if (chosenPackage && contract) {\n buildData();\n }\n\n return (\n <View style={styles.container}>\n <Table data={dataToDisplay}>\n <Header textAlign=\"center\" style={styles.header}>\n <Cell>Energie</Cell>\n <Cell>Forfait</Cell>\n <Cell>Fréquence de prélèvement</Cell>\n <Cell>Date de prélèvement</Cell>\n <Cell>Montant à régler</Cell>\n </Header>\n <Body style={styles.body}>\n <DataCell textAlign=\"center\" Cell={r => r.energyType} />\n <DataCell textAlign=\"center\" Cell={r => r.rate} />\n <DataCell\n textAlign=\"center\"\n Cell={r => r.installmentFrequency}\n />\n <DataCell textAlign=\"center\" Cell={r => r.date} />\n\n <DataCell textAlign=\"center\" Cell={r => r.amountToPay} />\n </Body>\n </Table>\n <View style={styles.total}>\n <View style={styles.totalTitle}>\n <Text>{timelineTable.total}</Text>\n </View>\n <View style={styles.totalValue}>\n <Text>{globalAmount}</Text>\n </View>\n </View>\n <View style={styles.info}>\n <Text style={styles.infoNB}>NB : </Text>\n <View style={styles.infoText}>\n <Text>\n Les mensualités indiquées correspondant au forfait et à\n la fréquence sélectionnée par le client. Ces prix\n prennent en compte les remises auxquelles le\n </Text>\n <Text>\n client est éligible. En cas de non-respect des\n conditions d’égibilité, le prix du kWh sera facturé au\n prix brut\n </Text>\n </View>\n </View>\n </View>\n );\n};\n\nexport default TimelineTable;\n","import React, { FC, Fragment } from 'react';\n\nimport MailIcon from '../../../../assets/icons/PDFs/ProofOfPayment/ic-email.png';\nimport FacebookIcon from '../../../../assets/icons/PDFs/ProofOfPayment/Facebook.png';\nimport PhoneIcon from '../../../../assets/icons/PDFs/ProofOfPayment/ic-phone.png';\n\nimport { Image, View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Wording from '../wording.json';\n\nconst styles = StyleSheet.create({\n container: {\n borderWidth: 2,\n borderColor: '#000000',\n borderRadius: '25',\n width: '35%',\n padding: 15,\n marginTop: 15,\n },\n imgTextContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n padding: '2px 0px',\n },\n phoneText: {\n width: 120,\n },\n img: {\n width: 18,\n height: 18,\n marginRight: 5,\n },\n text: {\n fontSize: 9,\n },\n sentence: {\n fontSize: 12,\n justifyContent: 'center',\n marginLeft: 20,\n },\n sentenceTop: {\n fontSize: 12,\n justifyContent: 'center',\n marginLeft: 20,\n marginTop: 10,\n },\n margin: {\n fontSize: 9,\n padding: '6px 0px',\n },\n moreText: {\n marginTop: 5,\n padding: '5px 0px',\n fontSize: 9,\n },\n mainContainer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n bloc: {\n position: 'absolute',\n bottom: 45,\n left: 0,\n right: 0,\n },\n});\n\nconst ImageText: FC<{ src: any; text?: string; elm?: any }> = ({\n src,\n text,\n children,\n}) => (\n <View style={styles.imgTextContainer}>\n <Image src={src} style={styles.img} />\n {children && children}\n {text && <Text style={styles.text}>{text}</Text>}\n </View>\n);\n\nconst infoWording = Wording.Informations;\n\nexport default () => (\n <View style={styles.bloc}>\n <View>\n <Text style={styles.sentenceTop}>{infoWording.text_1}</Text>\n <Text style={styles.sentence}>{infoWording.text_2}</Text>\n <Text style={styles.sentence}>{infoWording.text_3}</Text>\n </View>\n <View style={styles.mainContainer}>\n <View style={styles.container}>\n <ImageText src={MailIcon} text={infoWording.mail} />\n <ImageText src={FacebookIcon} text={infoWording.facebook} />\n <ImageText src={PhoneIcon}>\n <View>\n <Text style={styles.text}>{infoWording.phone}</Text>\n <Text style={{ ...styles.text, ...styles.phoneText }}>\n {infoWording.phoneDescription}\n </Text>\n </View>\n </ImageText>\n </View>\n </View>\n </View>\n);\n","import React from 'react';\n\nimport { Image, View, StyleSheet, Text } from '@react-pdf/renderer';\n\nimport Logo from '../../../../assets/icons/PDFs/ProofOfPayment/ic-logo-sidebar.png';\n\nconst styles = StyleSheet.create({\n container: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: '35px',\n backgroundColor: '#ffb40a',\n padding: 2,\n },\n img: {\n width: '110px',\n height: '55px',\n padding: '10px 0px',\n },\n text: {\n fontSize: 15,\n fontWeight: 'bold',\n fontFamily: 'Montserrat',\n },\n smallText: {\n fontSize: 9,\n },\n});\n\nexport default () => (\n <View fixed style={styles.container}>\n <Text style={styles.text}>www.espace-clients.wekiwi.fr</Text>\n <Text style={styles.smallText}>\n L'énergie est notre avenir, économisons la.\n </Text>\n </View>\n);\n","import React, { FC } from 'react';\n\nimport { Document, Page, StyleSheet } from '@react-pdf/renderer';\n\nimport './fonts';\n\nimport Header from './components/Header';\nimport CustomerContainer from './components/CustomerContainer';\nimport ContractContainer from './components/ContractContainer';\nimport TimelineTable from './components/TimelineTable';\nimport Informations from './components/Informations';\nimport Footer from './components/Footer';\n\nimport { TimelineProps } from './type';\nimport { TimelineProvider } from './lib';\n\nconst media: any = {\n '@media max-width: 400': {\n flexDirection: 'column',\n },\n};\n\nconst styles = StyleSheet.create({\n page: {},\n});\n\nconst Timeline: FC<TimelineProps> = props => {\n return (\n <TimelineProvider value={{ ...props }}>\n <Document author=\"Wekiwi SAS\" title=\"ECHEANCIER\">\n <Page size=\"A4\" style={styles.page}>\n <Header />\n <CustomerContainer />\n <ContractContainer />\n <TimelineTable />\n <Informations />\n <Footer />\n </Page>\n </Document>\n </TimelineProvider>\n );\n};\n\nexport default Timeline;\n","import { pdf } from '@react-pdf/renderer';\nimport React from 'react';\nimport Timeline from './Timeline';\nimport { TimelineProps } from './type';\n\nexport default function(props: TimelineProps) {\n pdf(<Timeline {...props} />)\n .toBlob()\n .then(blob => {\n window.open(URL.createObjectURL(blob));\n });\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport PaymentContainer, {\n Props as ContainerProps,\n} from '../../containers/PaymentContainer/PaymentContainer';\nimport { ChangePiece } from '../../containers/FailPieceContainer/FailPieceContainer';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchPiecesAsync,\n createPaymentAsync,\n resetUpdate,\n getSupportingDocumentsAsync,\n} from '../../_actions/payment.actions';\nimport {\n findContractByNumber,\n transformPieceType,\n findNextAndLastPieces,\n} from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nimport { TContract, TPiece, TEPInvoice } from 'Models';\n\nimport { generateTimelinePDF } from '../../components/PDFs/Timeline';\nimport { fetchFilesListAsync } from '../../_actions/file.actions';\nimport { initialEPInvoice } from '../../utils/initialState';\n\nconst Wording = WordingConstant.PaymentPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n paymentState: state.paymentReducer,\n fileState: state.fileReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n // fetchPiecesDispatch: fetchPiecesAsync.request,\n filesListDispatch: fetchFilesListAsync.request,\n createPaymentDispatch: createPaymentAsync.request,\n resetCreatePaymentDispatch: resetUpdate,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n getSupportingDocumentsDispatch: getSupportingDocumentsAsync.request,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedPayment = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(PaymentContainer);\n\ntype State = {\n fields: ChangePiece;\n};\n\nexport type GenerateProofProps = {\n contract: TContract;\n piece: TEPInvoice;\n};\n\nexport type GenerateTimelineProps = {\n contract: TContract;\n pieces: TEPInvoice[];\n};\n\nclass PaymentPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n fields: {\n dueDate: '',\n piece: initialEPInvoice,\n },\n };\n }\n\n componentDidMount = () => {\n const {\n contractState: { selectedContractNumber },\n // fetchPiecesDispatch,\n filesListDispatch,\n profileState: { customerNumber },\n }: Props = this.props;\n\n const payload = {\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n };\n // fetchPiecesDispatch(payload);\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n profileState: { customerNumber },\n contractDispatch,\n // fetchPiecesDispatch,\n setContractDispatch,\n filesListDispatch,\n } = this.props;\n const payload = {\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch(payload);\n }\n filesListDispatch({\n contractNbr: contractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n handleChangeFailPiece = (ff: TEPInvoice, dd: string) => {\n const { fields } = this.state;\n fields.dueDate = dd;\n fields.piece = ff;\n this.setState({ fields });\n };\n\n handleUpdate = () => {\n const { fields } = this.state;\n const { createPaymentDispatch } = this.props;\n createPaymentDispatch(fields);\n fields.dueDate = '';\n // fields.piece = '';\n this.setState({ fields });\n };\n\n generateProof = (props: GenerateProofProps) => {\n const { getSupportingDocumentsDispatch, profileState } = this.props;\n const {\n contact: { customerFullName, address, email, phone },\n customerType,\n customerNumber,\n } = profileState;\n\n const { contract, piece } = props;\n\n if (!piece) return;\n\n getSupportingDocumentsDispatch({\n mode: 'proofOfPayment',\n contractNbr: contract.contractNumber,\n cunstomerName: customerFullName,\n customerType,\n energyType: contract.energy,\n pieceReference: piece.id,\n pieceType: transformPieceType(piece.internal_invoice_nature_code),\n customerNbr: customerNumber,\n residenceAdress: address,\n subscriptionDate: contract.subscriptionDate,\n coholderName: contract.thirdParties.find(\n tp => tp.role === 'COHOLDER',\n ) as any,\n actionProps: {\n contract: props.contract,\n piece: props.piece,\n customer: {\n name: customerFullName,\n customerNbr: customerNumber,\n email,\n phone,\n },\n address,\n },\n });\n };\n\n generateTimeline = (props: GenerateTimelineProps) => {\n const { profileState, fileState } = this.props;\n\n const {\n contact: { customerFullName, address },\n customerType,\n customerNumber,\n } = profileState;\n const { payments } = fileState;\n const { contract } = props;\n\n generateTimelinePDF({\n contract,\n payments,\n customer: {\n name: {\n firstName: customerFullName.firstName,\n lastName: customerFullName.lastName,\n },\n customerNbr: customerNumber,\n },\n address: {\n number: address.number,\n street: address.street,\n netArea: address.netArea,\n postalCode: address.postalCode,\n country: address.country,\n townName: address.townName,\n },\n });\n };\n\n handleReset = () => {\n const {\n filesListDispatch,\n resetCreatePaymentDispatch,\n profileState: { customerNumber },\n contractState: { selectedContractNumber },\n } = this.props;\n\n resetCreatePaymentDispatch();\n filesListDispatch({\n contractNbr: selectedContractNumber,\n customerNbr: customerNumber,\n mode: 'PAYMENT',\n });\n };\n\n render() {\n const {\n profileState: { contact, customerType, customerNumber },\n contractState: { contracts, selectedContractNumber, error },\n paymentState: { updateResponse, supportingDocument },\n fileState: { payments },\n resetCreatePaymentDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n return (\n <WrappedPayment\n pieces={payments}\n customerNumber={customerNumber}\n contract={contract}\n handleChangeFailPiece={this.handleChangeFailPiece}\n supportingDocument={supportingDocument}\n generateProof={this.generateProof}\n generateTimeline={this.generateTimeline}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={this.handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(PaymentPage);\n","import PaymentPage from './PaymentPage';\n\nexport default PaymentPage;\n","import React from 'react';\n\nimport { TAddress, TWordingItem } from 'Models';\nimport { IContact, IBilling } from './types';\nimport { ECivility, ECustomerType } from '../../utils/enums';\nimport { getLabelCivility } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.ProfilePage;\n\nconst array_pro: TWordingItem[] = [\n {\n id: '1',\n label: Wording.pro.companyName,\n value: 'companyName',\n },\n {\n id: '2',\n label: Wording.pro.companyLegalFormCode,\n value: 'companyType',\n },\n {\n id: '3',\n label: Wording.pro.activityCode,\n value: 'activityCode',\n },\n {\n id: '4',\n label: Wording.pro.identificationNumber,\n value: 'identificationNumber',\n },\n];\n\nconst CustomerContact: React.FC<{\n contact: IContact;\n billing: IBilling;\n contractNumber: string;\n type: string;\n customerType?: string;\n}> = ({ contact, billing, contractNumber, type, customerType }) => {\n const renderProData = (cnt: any) => {\n return array_pro.map((pro: TWordingItem, index: number) => (\n <React.Fragment key={index}>\n {cnt[pro.value] && (\n <p className=\"margin\">\n {pro.label} {cnt[pro.value]}\n </p>\n )}\n </React.Fragment>\n ));\n };\n let c: {\n civility: ECivility;\n firstName: string;\n lastName: string;\n email: string;\n phone?: string;\n birthdate?: string;\n address: TAddress;\n } = {\n civility: contact.civility,\n firstName: contact.firstName,\n lastName: contact.lastName,\n email: contact.email,\n phone: contact.phone,\n birthdate: contact.birthdate,\n address: contact.address,\n };\n if (type === 'billing') {\n c = {\n civility: billing.civility,\n firstName: billing.firstName,\n lastName: billing.lastName,\n email: billing.email,\n address: billing.address,\n };\n }\n\n return (\n <div className=\"profile-container__information\">\n <div className=\"profile-container__information__consumption\">\n {type === 'contact' ? (\n <h3>{Wording.consumption.title}</h3>\n ) : (\n <h3>{Wording.billing.title}</h3>\n )}\n {c.firstName && (\n <p>{`${getLabelCivility(c.civility)} ${c.firstName} ${\n c.lastName\n }`}</p>\n )}\n {type === 'contact' ? (\n <p className=\"margin\">{Wording.consumption.email}</p>\n ) : (\n <p className=\"margin\">{Wording.billing.email}</p>\n )}\n {c.email && <p>{c.email}</p>}\n {c.phone && (\n <p className=\"margin\">\n {Wording.phone} {c.phone}\n </p>\n )}\n {c.birthdate !== '' && c.birthdate !== undefined && (\n <p className=\"margin\">Date de naissance : {c.birthdate}</p>\n )}\n {customerType === ECustomerType.PROFESSIONAL &&\n renderProData(contact)}\n {customerType === ECustomerType.INDIVIDUAL &&\n contact.coholderCivility &&\n contact.coholderFirstName &&\n contact.coholderFirstName !== '' && (\n <p className=\"margin\">\n Co-titulaire :{' '}\n {getLabelCivility(contact.coholderCivility)}{' '}\n {contact.coholderFirstName}\n </p>\n )}\n </div>\n <div className=\"profile-container__information__address\">\n {type === 'contact' ? (\n <h3>{Wording.consumption.addressTitle}</h3>\n ) : (\n <h3>{Wording.billing.contact.address}</h3>\n )}\n {contractNumber && (\n <p className=\"contract\">{`Contrat n° ${contractNumber}`}</p>\n )}\n <p className=\"street\">\n {c.address.number} {c.address.street}\n </p>\n <p className=\"townName\">\n {c.address.postalCode} {c.address.townName}\n </p>\n </div>\n </div>\n );\n};\n\nexport default CustomerContact;\n","import React from 'react';\n\nimport { TFinance } from 'Models';\nimport { getLabelPaymentMode } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst Payment: React.FC<{\n finance: TFinance;\n}> = ({ finance }) => {\n const f = finance || {};\n return (\n <React.Fragment>\n <h3 className=\"profile-container__payment-method__title\">\n {Wording.paymentMethod.title}\n </h3>\n <div className=\"profile-container__payment-method\">\n <div className=\"profile-container__payment-method__texts\">\n <p>{Wording.paymentMethod.paymentMode}</p>\n <p>{Wording.paymentMethod.samplingDate}</p>\n <p>{Wording.paymentMethod.IBAN}</p>\n </div>\n <div className=\"profile-container__payment-method__data\">\n <p>{getLabelPaymentMode(f.paymentMode)}</p>\n <p>\n {' '}\n {f.debitDay} {WordingConstant.Common.debitDaySuffix}\n </p>\n <p>{f.ibanCode}</p>\n </div>\n </div>\n </React.Fragment>\n );\n};\n\nexport default Payment;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport { IFields, ISetting } from './types';\nimport { CustomInput, CustomSelect, CustomToggle } from '../../components';\n\nimport { isValidName } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst ModificationCoholder: React.FC<{\n fields: IFields;\n setting: ISetting;\n showError: boolean;\n handleChangeCivility(section: string, value: string): void;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n handleResetCoholder(civility?: string, firstName?: string): void;\n}> = ({\n fields: {\n contact: { coholderCivility, coholderFirstName },\n },\n setting: { checkCoholder },\n showError,\n handleChangeCivility,\n handleInputChange,\n handleResetCoholder,\n}) => {\n return (\n <div className=\"profile-container__coholder\">\n <CustomToggle\n id={Wording.addOwner}\n text={Wording.addOwner}\n checked={checkCoholder}\n handleCheck={() => {\n handleResetCoholder(coholderCivility, coholderFirstName);\n }}\n />\n {checkCoholder && (\n <div className=\"profile-container__coholder__content\">\n <div className=\"profile-container__coholder__content__inputs\">\n <CustomSelect\n id=\"civility\"\n defaultValue={\n coholderCivility ? coholderCivility : 'MR'\n }\n options={Wording.civility.values}\n handleChangeSelect={(e: any) =>\n handleChangeCivility('contact', e.value)\n }\n value={coholderCivility}\n />\n <CustomInput\n placeholder={Wording.coholder.firstName}\n value={coholderFirstName || ''}\n onInputChange={(e: InputEvent) =>\n handleInputChange(\n e,\n 'contact',\n 'coholderFirstName',\n )\n }\n error={\n showError && !isValidName(coholderFirstName)\n ? Wording.error.contact.firstName\n : undefined\n }\n />\n </div>\n <div className=\"profile-container__coholder__content__right\" />\n </div>\n )}\n </div>\n );\n};\n\nexport default ModificationCoholder;\n","import React, { useState } from 'react';\nimport { InputEvent } from 'Types';\nimport replace from 'lodash/replace';\n\nimport {\n CustomInput,\n CustomRadio,\n CustomButton,\n CustomToggle,\n} from '../../components';\nimport { IFields, TPaymentMethodSection } from './types';\n\nimport { displayIban, isValidIban } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\nconst ModificationPayment: React.FC<{\n fields: IFields;\n showError: boolean;\n paymentMethodSection: TPaymentMethodSection;\n validateItems: {\n isValidIbanCode: boolean;\n isValidDebitDay: boolean;\n };\n handleCheckUpdate(section: string, value: boolean): void;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n handleDebitDay(value: string): void;\n handlePaymentSection(section: TPaymentMethodSection): void;\n handleShowErrorMessage(section: string): void;\n handleShowModal(section: string): void;\n}> = ({\n fields,\n showError,\n handleInputChange,\n handleDebitDay,\n handlePaymentSection,\n paymentMethodSection,\n handleShowErrorMessage,\n handleShowModal,\n validateItems,\n handleCheckUpdate,\n}) => {\n const ibanCondition = paymentMethodSection === 'IBAN';\n const debitDayCondition = paymentMethodSection === 'DEBIT_DAY';\n return (\n <>\n <div className=\"profile-container__update-payment-method\">\n <div\n className={`profile-container__update-payment-method__iban ${\n !ibanCondition ? '--off' : ''\n }`}\n >\n <div\n className=\"tg-block\"\n onClick={() => handlePaymentSection('IBAN')}\n >\n <CustomToggle\n checked={ibanCondition}\n handleCheck={() => {}}\n text={Wording.paymentMethod.IBAN}\n />\n </div>\n\n <CustomInput\n placeholder={Wording.paymentMethod.inputs.IBAN}\n value={displayIban(fields.billing.iban)}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'billing', 'iban')\n }\n error={\n !isValidIban(fields.billing.iban) &&\n fields.billing.iban.length >= 15\n ? Wording.error.billing.iban\n : ''\n }\n disabled={!ibanCondition}\n />\n {ibanCondition && (\n <CustomButton\n title={Wording.buttons.validate}\n disabled={!validateItems.isValidIbanCode}\n onClick={() => {\n if (validateItems.isValidIbanCode) {\n handleShowErrorMessage('iban');\n handleShowModal('iban');\n handleCheckUpdate('iban', false);\n }\n }}\n color={\n validateItems.isValidIbanCode\n ? 'orange'\n : 'gray'\n }\n />\n )}\n </div>\n <div\n className={`profile-container__update-payment-method__debit-day \n ${!debitDayCondition ? '--off' : ''}\n \n `}\n >\n <div\n className=\"tg-block\"\n onClick={() => handlePaymentSection('DEBIT_DAY')}\n >\n <CustomToggle\n checked={debitDayCondition}\n handleCheck={() => {}}\n text={Wording.paymentMethod.titleDebitDay}\n />\n </div>\n\n <div className=\"profile-container__update-payment-method__debit-day__container\">\n {Wording.paymentMethod.debitDaysEnum.map(dd => (\n <CustomRadio\n key={dd}\n checked={dd === fields.debitDay}\n text={replace(\n Wording.paymentMethod.debitDayLabel,\n '{{ddValue}}',\n dd,\n )}\n value={dd}\n handleCheck={() =>\n debitDayCondition && handleDebitDay(dd)\n }\n />\n ))}\n </div>\n\n {debitDayCondition && (\n <CustomButton\n title={Wording.buttons.validate}\n onClick={() => {\n if (validateItems.isValidDebitDay) {\n handleShowErrorMessage('debitDay');\n handleShowModal('debitDay');\n }\n }}\n color={\n validateItems.isValidDebitDay\n ? 'orange'\n : 'gray'\n }\n />\n )}\n </div>\n </div>\n </>\n );\n};\n\nexport default ModificationPayment;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\nimport { IFields } from './types';\nimport { CustomInput } from '../../components';\nimport {\n isValidEmail,\n isValidPhone,\n displayPhoneWithoutPrefix,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst ModificationContact: React.FC<{\n fields: IFields;\n showError: boolean;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n}> = props => {\n const {\n fields: {\n contact: { email, phone },\n },\n handleInputChange,\n showError,\n } = props;\n\n const phoneUpdated = displayPhoneWithoutPrefix(phone);\n return (\n <div className=\"profile-container__inputs\">\n <div className=\"profile-container__inputs__content\">\n <h3>{Wording.consumption.title}</h3>\n <CustomInput\n placeholder={Wording.consumption.inputs.email}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'contact', 'email')\n }\n value={email}\n error={\n !isValidEmail(email) && showError\n ? Wording.error.email\n : undefined\n }\n />\n <CustomInput\n placeholder={Wording.consumption.inputs.phone}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'contact', 'phone')\n }\n minLength={10}\n maxLength={10}\n value={phoneUpdated}\n error={\n !isValidPhone(phoneUpdated) && showError\n ? Wording.error.phone\n : undefined\n }\n />\n </div>\n <div className=\"profile-container__inputs__right\" />\n </div>\n );\n};\n\nexport default ModificationContact;\n","import React from 'react';\nimport Select from 'react-select';\n\nimport { InputEvent } from 'Types';\nimport { IFields, ISetting } from './types';\nimport { CustomInput, CustomSelect } from '../../components';\nimport { isValidEmail, getLabelCivility } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\ntype InfoInput = {\n placeholder: string;\n value: string;\n label: string;\n error?: string;\n};\n\nconst ModificationBilling: React.FC<{\n handleChangeCivility: any;\n fields: IFields;\n setting: ISetting;\n handleChangeDropdown: any;\n handleAddressChange: any;\n onFocusDropdown: any;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n}> = ({\n fields,\n setting,\n handleInputChange,\n handleAddressChange,\n handleChangeDropdown,\n handleChangeCivility,\n onFocusDropdown,\n}) => {\n const { billing } = fields;\n const { showErrorBilling } = setting;\n\n const infoInputs: InfoInput[] = [\n {\n placeholder: Wording.billing.contact.lastName,\n value: billing.lastName,\n label: 'lastName',\n error:\n billing.lastName === '' && showErrorBilling\n ? Wording.error.billing.lastName\n : undefined,\n },\n {\n placeholder: Wording.billing.contact.firstName,\n value: billing.firstName,\n label: 'firstName',\n error:\n billing.firstName === '' && showErrorBilling\n ? Wording.error.billing.firstName\n : undefined,\n },\n {\n placeholder: Wording.billing.contact.email,\n value: billing.email,\n label: 'email',\n error:\n showErrorBilling && !isValidEmail(billing.email)\n ? Wording.error.billing.email\n : undefined,\n },\n ];\n return (\n <div className=\"profile-container__update-billing\">\n <div className=\"profile-container__update-billing__contact\">\n <h3>{Wording.billing.title}</h3>\n <CustomSelect\n id=\"civility\"\n defaultValue={billing.civility}\n options={Wording.civility.values}\n handleChangeSelect={(e: any) =>\n handleChangeCivility('billing', e.value)\n }\n value={billing.civility}\n error={\n getLabelCivility(billing.civility) === '' &&\n showErrorBilling\n ? Wording.error.mainText\n : undefined\n }\n />\n {infoInputs.map((info: InfoInput, index: number) => (\n <CustomInput\n key={index}\n placeholder={info.placeholder}\n value={info.value}\n onInputChange={(e: InputEvent) =>\n handleInputChange(e, 'billing', info.label)\n }\n maxLength={info.label === 'phone' ? 10 : 200}\n error={info.error}\n />\n ))}\n </div>\n <div className=\"profile-container__update-billing__address\">\n <h3>{Wording.billing.contact.address}</h3>\n <CustomInput\n value={setting.addressVal || ''}\n placeholder={Wording.billing.contact.address}\n onInputChange={(e: InputEvent) =>\n handleAddressChange(e.currentTarget.value, 'address')\n }\n error={\n setting.addressVal === '' && showErrorBilling\n ? Wording.error.billing.address\n : undefined\n }\n />\n\n <Select\n className=\"select\"\n classNamePrefix=\"react-select\"\n placeholder={Wording.billing.contact.postalCode}\n onInputChange={(val: string) => {\n handleAddressChange(val, 'postalCode');\n }}\n onChange={handleChangeDropdown}\n inputValue={setting.pc}\n onFocus={onFocusDropdown}\n options={setting.postalCodes}\n value={billing.currentPostalCode}\n defaultValue={billing.currentPostalCode}\n styles={{\n placeholder: () => ({\n color:\n billing.address.postalCode !== ''\n ? 'black'\n : '#746d6d',\n }),\n }}\n />\n {billing.address.postalCode === '' && showErrorBilling && (\n <p className=\"profile-container__update-billing__address__errorPostalCode\">\n {Wording.error.billing.postalCode}\n </p>\n )}\n\n <CustomInput\n value={billing.address.townName || ''}\n isLocked={true}\n placeholder={Wording.billing.contact.city}\n onInputChange={() => {}}\n />\n </div>\n </div>\n );\n};\n\nexport default ModificationBilling;\n","import React, { useState } from 'react';\nimport { InputEvent } from 'Types';\nimport { TContract } from 'Models';\nimport {\n IFields,\n ISetting,\n IContact,\n IBilling,\n TPaymentMethodSection,\n} from './types';\nimport { ECustomerType } from '../../utils/enums';\n\nimport CustomerContact from './CustomerContact';\nimport Payment from './Payment';\nimport ModificationCoholder from './ModificationCoholder';\nimport ModificationPayment from './ModificationPayment';\nimport ModificationContact from './ModificationContact';\nimport ModificationBilling from './ModificationBilling';\nimport ModificationButtons from './ModificationButtons';\n\nimport {\n isValidEmail,\n isValidPhone,\n isValidIban,\n isValidString,\n isValidName,\n displayPhoneWithoutPrefix,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nexport type Props = {\n selectedContractNumber: string;\n contracts: TContract[];\n customerType: string;\n setting: ISetting;\n fields: IFields;\n currentContact: IContact;\n billing: IBilling;\n handleChangeDropdown?: any;\n handleAddressChange?: any;\n onFocusDropdown?: any;\n checkUpdateProfile: any;\n handleResetCoholder(civility?: string, firstName?: string): void;\n handleInputChange(e: InputEvent, section: string, type: string): void;\n handleChangeCivility(section: string, value: string): void;\n handleShowErrorMessage(section: string): void;\n handleShowModal(section: string): void;\n handleDebitDay(value: string): void;\n handlePaymentSection(section: TPaymentMethodSection): void;\n handleCheckUpdate(section: string, value: boolean): void;\n};\n\n/**\n * Display the only container for profile\n * @param currentContact is fixed data containing contact info\n * @param billing is fixed data containing billing info\n * @param fields is variable data containing contact info and billing info\n * @param setting is variable data containing error and address info\n */\nconst ProfileContainer: React.FC<Props> = ({\n selectedContractNumber,\n contracts,\n customerType,\n currentContact,\n billing,\n fields,\n setting,\n handleChangeDropdown,\n onFocusDropdown,\n handleAddressChange,\n handleResetCoholder,\n handleShowModal,\n handleShowErrorMessage,\n handleInputChange,\n handleChangeCivility,\n handleDebitDay,\n handlePaymentSection,\n handleCheckUpdate,\n checkUpdateProfile,\n}) => {\n const handleValidateContact = (): boolean => {\n const {\n contact: { email, phone, coholderCivility, coholderFirstName },\n } = fields;\n const coholderCondition =\n coholderCivility && coholderFirstName\n ? isValidName(coholderFirstName)\n : !setting.checkCoholder;\n return (\n isValidEmail(email) &&\n isValidPhone(displayPhoneWithoutPrefix(phone)) &&\n coholderCondition\n );\n };\n\n const handleValidateBilling = (): boolean => {\n const {\n email,\n firstName,\n lastName,\n address: { postalCode, street, townName },\n } = fields.billing;\n return (\n isValidString(firstName) &&\n isValidString(lastName) &&\n isValidEmail(email) &&\n postalCode !== '' &&\n street !== '' &&\n townName !== ''\n );\n };\n\n const handleValidateIban = (): boolean => {\n const {\n billing: { iban },\n } = fields;\n return isValidIban(iban);\n };\n\n const handleValidateDebitDay = () => {\n const { debitDay } = fields;\n\n return debitDay !== contract.finance.debitDay;\n };\n\n const contract =\n contracts.find(\n (c: TContract) => c.contractNumber === selectedContractNumber,\n ) || contracts[0];\n\n const isValidContact = handleValidateContact();\n const isValidBilling = handleValidateBilling();\n const isValidIbanCode = handleValidateIban();\n const isValidDebitDay = handleValidateDebitDay();\n\n return (\n <div className=\"profile-container\">\n <h1 className=\"profile-container__subtitle\">{Wording.subtitle}</h1>\n {!checkUpdateProfile.checkUpdateContact ? (\n <CustomerContact\n type=\"contact\"\n contractNumber={contract.contractNumber}\n contact={currentContact}\n billing={billing}\n customerType={customerType}\n />\n ) : (\n <>\n <ModificationContact\n fields={fields}\n handleInputChange={handleInputChange}\n showError={setting.showErrorCustomer}\n />\n {customerType === ECustomerType.INDIVIDUAL && (\n <ModificationCoholder\n fields={fields}\n setting={setting}\n showError={setting.showErrorCustomer}\n handleChangeCivility={handleChangeCivility}\n handleInputChange={handleInputChange}\n handleResetCoholder={handleResetCoholder}\n />\n )}\n </>\n )}\n <ModificationButtons\n showButton={!checkUpdateProfile.checkUpdateContact}\n condition={isValidContact}\n handleButtonClick={() => handleCheckUpdate('contact', true)}\n handleButtonCancel={() => handleCheckUpdate('contact', false)}\n handleButtonValidate={\n isValidContact\n ? () => handleShowModal('contact')\n : () => handleShowErrorMessage('contact')\n }\n />\n <span className=\"profile-container__line\" />\n {!checkUpdateProfile.checkUpdateBilling ? (\n <React.Fragment>\n <CustomerContact\n type=\"billing\"\n contact={currentContact}\n billing={billing}\n contractNumber={contract.contractNumber}\n />\n </React.Fragment>\n ) : (\n <ModificationBilling\n fields={fields}\n setting={setting}\n handleChangeCivility={handleChangeCivility}\n handleChangeDropdown={handleChangeDropdown}\n handleAddressChange={handleAddressChange}\n handleInputChange={handleInputChange}\n onFocusDropdown={onFocusDropdown}\n />\n )}\n <ModificationButtons\n showButton={!checkUpdateProfile.checkUpdateBilling}\n condition={isValidBilling}\n handleButtonClick={() => handleCheckUpdate('billing', true)}\n handleButtonCancel={() => handleCheckUpdate('billing', false)}\n handleButtonValidate={\n isValidBilling\n ? () => handleShowModal('billing')\n : () => handleShowErrorMessage('billing')\n }\n />\n <span className=\"profile-container__line\" />\n {!checkUpdateProfile.checkUpdateIban ? (\n <Payment finance={contract.finance} />\n ) : (\n <ModificationPayment\n fields={fields}\n handleCheckUpdate={handleCheckUpdate}\n showError={setting.showErrorIban}\n handleInputChange={handleInputChange}\n handleDebitDay={handleDebitDay}\n paymentMethodSection={setting.paymentMethodSection}\n handlePaymentSection={handlePaymentSection}\n validateItems={{\n isValidIbanCode,\n isValidDebitDay,\n }}\n handleShowModal={handleShowModal}\n handleShowErrorMessage={handleShowErrorMessage}\n />\n )}\n <ModificationButtons\n showButton={!checkUpdateProfile.checkUpdateIban}\n condition={isValidIbanCode}\n disabledValidate={true}\n handleButtonClick={() => handleCheckUpdate('iban', true)}\n handleButtonCancel={() => {\n handleCheckUpdate('iban', false);\n handlePaymentSection('IBAN');\n }}\n handleButtonValidate={() => {}}\n />\n </div>\n );\n};\n\nexport default ProfileContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { RootState, InputEvent } from 'Types';\nimport { TContract } from 'Models';\nimport { ECivility, EModeUpdateBilling } from '../../utils/enums';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport SearchService from '../../utils/search';\n\nimport {\n findContractByNumber,\n findCoholder,\n getTodayDate,\n getPhoneWithPrefix,\n} from '../../utils/helpers';\nimport { initialAddress } from '../../utils/initialState';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\n\nimport {\n updateCustomerAsync,\n resetUpdate,\n updateBillingAsync,\n IRequestUpdateCustomerCoholderEvent,\n IRequestUpdateBillingEvent,\n} from '../../_actions/profile.actions';\nimport ProfileContainer, {\n Props as ContainerProps,\n} from '../../containers/ProfileContainer/ProfileContainer';\nimport {\n IFields,\n ISetting,\n IBilling,\n IContact,\n IPostalCode,\n TPaymentMethodSection,\n} from '../../containers/ProfileContainer/types';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ProfilePage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n updateCustomerDispatch: updateCustomerAsync.request,\n resetUpdateDispatch: resetUpdate,\n updateBillingDispatch: updateBillingAsync.request,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n};\n\ntype State = {\n fields: IFields;\n setting: ISetting;\n checkUpdateProfile: {\n checkUpdateContact: boolean;\n checkUpdateBilling: boolean;\n checkUpdateIban: boolean;\n };\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedProfile = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(ProfileContainer);\n\nclass ProfilePage extends React.Component<Props, State> {\n searchService: any;\n\n constructor(props: Props) {\n super(props);\n\n const { profileState, contractState } = this.props;\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n const contact: IContact = {\n civility: profileState.contact.customerFullName.civility,\n firstName: profileState.contact.customerFullName.firstName,\n lastName: profileState.contact.customerFullName.lastName,\n birthdate: profileState.contact.birthdate,\n address: profileState.contact.address,\n email: profileState.contact.email,\n phone: profileState.contact.phone,\n };\n const coholder = findCoholder(contract);\n if (coholder) {\n contact.coholderCivility = coholder.civility as ECivility;\n contact.coholderFirstName = coholder.firstName;\n } else {\n contact.coholderCivility = ECivility.MR;\n }\n const { billingContact } = contract.finance;\n const billing = {\n civility: contact.civility || ECivility.MR,\n firstName: contact.firstName || '',\n lastName: contact.lastName || '',\n email: contact.email || '',\n iban: '',\n address: Object.assign({}, contact.address) || {\n ...initialAddress,\n },\n currentPostalCode: {\n label: contact.address.postalCode || '',\n value: contact.address.postalCode || '',\n codeValue: contact.address.postalCode || '',\n cityValue: contact.address.townName || '',\n netAreaValue: contact.address.netArea || '',\n },\n };\n billing.iban = contract.finance.ibanCode || '';\n if (billingContact && billingContact.customerFullName) {\n billing.civility =\n billingContact.customerFullName.civility || billing.civility;\n billing.firstName = billingContact.customerFullName.firstName;\n billing.lastName = billingContact.customerFullName.lastName;\n }\n if (billingContact && billingContact.address) {\n billing.address = billingContact.address;\n const currentPostalCode = {\n label: billingContact.address.postalCode,\n value: billingContact.address.postalCode,\n codeValue: billingContact.address.postalCode,\n cityValue: billingContact.address.townName,\n netAreaValue: billingContact.address.netArea,\n };\n billing.currentPostalCode = currentPostalCode;\n }\n if (contract.finance.billingContact) {\n billing.email = contract.finance.billingContact.email;\n }\n const checkCoholder =\n coholder !== undefined &&\n coholder.civility !== undefined &&\n coholder.firstName !== undefined;\n this.state = {\n fields: {\n contractNumber: '',\n customerNumber: '',\n contact,\n billing,\n debitDay:\n contract.finance.debitDay ||\n Wording.paymentMethod.debitDaysEnum[0],\n },\n setting: {\n loadingPostalCode: false,\n addressVal: `${billing.address.number} ${billing.address.street}`,\n postalCodes: [],\n pc: '',\n showErrorBilling: false,\n showErrorCustomer: false,\n showErrorIban: false,\n checkCoholder,\n paymentMethodSection: 'IBAN',\n },\n checkUpdateProfile: {\n checkUpdateContact: false,\n checkUpdateBilling: false,\n checkUpdateIban: false,\n },\n };\n\n this.searchService = new SearchService();\n }\n\n componentDidMount() {\n this.searchService.getResults().subscribe((res: any) => {\n const { setting } = this.state;\n setting.postalCodes = res.map((dt: any) => ({\n label: `${dt.code} - - - ${dt.city}`,\n value: `${dt.code}__${dt.city}`,\n codeValue: dt.code,\n cityValue: dt.city,\n netAreaValue: dt.netArea,\n }));\n setting.loadingPostalCode = false;\n this.setState({ setting });\n });\n }\n\n componentWillUnmount() {\n this.searchService.unsubscribe();\n }\n\n handleAddressChange = (value: string, type: string) => {\n const { setting, fields } = this.state;\n if (type === 'postalCode') {\n setting.pc = value.replace(/[^\\d ]/g, '');\n setting.loadingPostalCode = true;\n this.searchService.search(value);\n this.setState({ setting });\n } else {\n setting.addressVal = value;\n const splitArr = value.split(' ');\n if (splitArr[0] === '') {\n splitArr.shift();\n }\n fields.billing.address.number = splitArr[0];\n splitArr.shift();\n fields.billing.address.street = splitArr.join(' ').trim();\n this.setState({ fields, setting });\n }\n };\n\n handleChangeDropdown = ({\n value,\n codeValue,\n cityValue,\n netAreaValue,\n }: IPostalCode) => {\n const { fields, setting } = this.state;\n fields.billing.address.netArea = netAreaValue;\n fields.billing.address.postalCode = codeValue;\n fields.billing.address.townName = cityValue;\n fields.billing.currentPostalCode = {\n value,\n label: `${codeValue}`,\n codeValue,\n cityValue,\n netAreaValue,\n };\n setting.postalCodes = [];\n this.setState({ fields, setting });\n };\n\n onFocusDropdown = () => {\n const { setting, fields } = this.state;\n if (fields.billing.address.postalCode !== '') {\n setting.pc = fields.billing.address.postalCode;\n }\n this.setState({ setting });\n };\n\n handleInputChange = (e: InputEvent, section: string, type: string) => {\n const { fields } = this.state;\n const s = section === 'iban' ? 'billing' : section;\n fields[s][type] = e.currentTarget.value;\n this.setState({ fields });\n };\n\n handleDebitDay = (value: string) => {\n const { fields } = this.state;\n\n fields.debitDay = value;\n this.setState({ fields });\n };\n\n handlePaymentSection = (section: TPaymentMethodSection) => {\n const { setting, fields } = this.state;\n setting.paymentMethodSection = section;\n\n const { contractState } = this.props;\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n\n if (\n section === 'IBAN' &&\n fields.debitDay !== contract.finance.debitDay\n ) {\n fields.debitDay = contract.finance.debitDay;\n }\n\n this.setState({ setting, fields });\n };\n\n handleChangeCivility = (section: string, value: string) => {\n const { fields } = this.state;\n if (section === 'contact') {\n fields[section].coholderCivility = value as ECivility;\n } else {\n fields[section].civility = value as ECivility;\n }\n this.setState({ fields });\n };\n\n handleResetCoholder = (civility?: string, firstName?: string) => {\n const { fields, setting } = this.state;\n if (!setting.checkCoholder) {\n fields.contact.coholderCivility = civility as ECivility;\n fields.contact.coholderFirstName = firstName;\n } else {\n fields.contact.coholderCivility = ECivility.MR;\n fields.contact.coholderFirstName = undefined;\n }\n setting.checkCoholder = !setting.checkCoholder;\n this.setState({ fields, setting });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const { fields, setting } = this.state;\n const {\n updateCustomerDispatch,\n profileState,\n updateBillingDispatch,\n contractState,\n }: Props = this.props;\n switch (section) {\n case 'contact': {\n const payload: IRequestUpdateCustomerCoholderEvent = {\n customer: {\n customerNbr: profileState.customerNumber,\n email: fields.contact.email,\n phone: getPhoneWithPrefix(fields.contact.phone),\n marketing: profileState.contact.marketing,\n newsletter: profileState.contact.newsletter,\n },\n coholder: undefined,\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.consumptionContactChange\n .value,\n message:\n Wording.subCategories.consumptionContactChange\n .label,\n },\n };\n if (\n fields.contact.coholderCivility &&\n fields.contact.coholderFirstName &&\n fields.contact.coholderFirstName !== '' &&\n profileState.customerType !== 'PROFESSIONAL'\n ) {\n payload.coholder = {\n mode: 'insertOrUpdate',\n //customerNbr: contractState.selectedContractNumber,\n contractNbr: contractState.selectedContractNumber,\n civility: fields.contact.coholderCivility,\n firstName: fields.contact.coholderFirstName,\n };\n payload.event.message =\n Wording.subCategories.consumptionContactChange.addCoholder;\n } else {\n const contract = findContractByNumber(\n contractState.selectedContractNumber,\n contractState.contracts,\n );\n const coholder = findCoholder(contract);\n if (coholder && coholder.firstName) {\n payload.coholder = {\n mode: 'delete',\n contractNbr: contractState.selectedContractNumber,\n //customerNbr: contractState.selectedContractNumber,\n civility: coholder.civility as ECivility,\n firstName: coholder.firstName || '',\n };\n payload.event.message =\n Wording.subCategories.consumptionContactChange.deleteCoholder;\n setting.checkCoholder = false;\n this.setState({ setting });\n }\n }\n updateCustomerDispatch(payload);\n break;\n }\n\n case 'billing': {\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.BILLING_ADDRESS,\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n billingAddress: fields.billing.address,\n customerFullName: {\n civility: fields.billing.civility,\n firstName: fields.billing.firstName,\n lastName: fields.billing.lastName,\n },\n email: fields.billing.email,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.invoicingContactChange.value,\n message:\n Wording.subCategories.invoicingContactChange.label,\n },\n };\n updateBillingDispatch(payload);\n break;\n }\n\n case 'iban': {\n const { contracts, selectedContractNumber } = contractState;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.IBAN,\n customerNbr: profileState.customerNumber,\n ibanCode: fields.billing.iban,\n rumCode: contract.finance.rumCode,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.paymentModeChange.value,\n message: Wording.subCategories.paymentModeChange.label,\n },\n };\n updateBillingDispatch(payload);\n break;\n }\n case 'debitDay': {\n const payload: IRequestUpdateBillingEvent = {\n paymentMode: {\n mode: EModeUpdateBilling.DEBIT_DAY,\n customerNbr: contractState.selectedContractNumber,\n debitDay: fields.debitDay,\n contractNbr: contractState.selectedContractNumber,\n },\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory:\n Wording.subCategories.paymentModeChange.value,\n message:\n Wording.subCategories.paymentModeChange\n .label_debitDay,\n },\n };\n updateBillingDispatch(payload);\n break;\n }\n\n default:\n break;\n }\n };\n\n handleShowErrorMessage = (section: string): void => {\n const { setting } = this.state;\n if (section === 'billing') {\n setting.showErrorBilling = true;\n } else if (section === 'contact') {\n setting.showErrorCustomer = true;\n } else {\n setting.showErrorIban = true;\n }\n this.setState({ setting });\n };\n\n /**\n * By default, use the contact information to be displayed on billing section\n * These params cannot be modified using state\n */\n getBilling = (contract: TContract): IBilling => {\n const {\n profileState: { contact },\n } = this.props;\n const finance = contract.finance;\n const billing = {\n civility: contact.customerFullName.civility,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n email: contact.email,\n phone: contact.phone,\n iban: '',\n address: contact.address,\n };\n if (finance) {\n billing.iban = finance.ibanCode;\n if (finance.billingContact) {\n billing.email = finance.billingContact.email;\n billing.phone = finance.billingContact.phone;\n if (finance.billingContact.customerFullName) {\n billing.civility =\n finance.billingContact.customerFullName.civility ||\n billing.civility;\n billing.firstName =\n finance.billingContact.customerFullName.firstName;\n billing.lastName =\n finance.billingContact.customerFullName.lastName;\n }\n if (finance.billingContact.address) {\n billing.address = finance.billingContact.address;\n }\n }\n }\n return billing;\n };\n\n /**\n * Load all contact info necessary to be displayed on contact section\n * These params cannot be modified using state\n */\n getContact = (contract: TContract): IContact => {\n const {\n profileState: { contact },\n } = this.props;\n const thirdParties = contract.thirdParties;\n const currentContact: IContact = {\n civility: contact.customerFullName.civility,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n email: contact.email,\n phone: contact.phone,\n birthdate: contact.birthdate,\n address: contact.address,\n companyName: contact.companyName,\n companyType: contact.companyType,\n activityCode: contact.activityCode,\n identificationNumber: contact.identificationNumber,\n };\n if (thirdParties) {\n const coholder = thirdParties.find(p => p.role === 'COHOLDER') || {\n civility: ECivility.MR,\n firstName: undefined,\n };\n currentContact.coholderCivility = coholder.civility as ECivility;\n currentContact.coholderFirstName = coholder.firstName;\n }\n return currentContact;\n };\n handleCheckUpdate = (section: string, value: boolean) => {\n if (section === 'contact') {\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateContact: value,\n },\n }));\n } else if (section === 'billing') {\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateBilling: value,\n },\n }));\n } else if (section === 'iban') {\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateIban: value,\n },\n }));\n }\n };\n\n render() {\n const {\n profileState: { contact, updateResponse, customerType },\n contractState: { contracts, selectedContractNumber, error },\n resetUpdateDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const { setting, fields, checkUpdateProfile } = this.state;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n const billing = this.getBilling(contract);\n const currentContact = this.getContact(contract);\n\n const handleReset = () => {\n resetUpdateDispatch();\n this.setState(prevState => ({\n checkUpdateProfile: {\n ...prevState.checkUpdateProfile,\n checkUpdateContact: false,\n checkUpdateBilling: false,\n checkUpdateIban: false,\n },\n }));\n };\n\n return (\n <WrappedProfile\n setting={setting}\n fields={fields}\n currentContact={currentContact}\n billing={billing}\n handleCheckUpdate={this.handleCheckUpdate}\n handleInputChange={this.handleInputChange}\n handleChangeCivility={this.handleChangeCivility}\n handleResetCoholder={this.handleResetCoholder}\n handleChangeDropdown={this.handleChangeDropdown}\n handleAddressChange={this.handleAddressChange}\n onFocusDropdown={this.onFocusDropdown}\n handleShowErrorMessage={this.handleShowErrorMessage}\n handleDebitDay={this.handleDebitDay}\n handlePaymentSection={this.handlePaymentSection}\n checkUpdateProfile={checkUpdateProfile}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={handleReset}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(ProfilePage);\n","import ProfilePage from './ProfilePage';\n\nexport default ProfilePage;\n","import React, { useState } from 'react';\n\nimport { InputEvent } from 'Types';\nimport { CustomInput, CustomButton, CustomModal } from '../../components/index';\nimport { isValidEmail } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.ParentingPage;\n\nexport type Props = {\n fields: {\n email: string;\n error?: string;\n };\n handleInputChange(e: InputEvent, type: string): void;\n handleInputError(): boolean;\n handleShowModal(section: string): void;\n};\n\nconst SponsorContainer: React.FC<Props> = ({\n fields: { email, error },\n handleInputChange,\n handleInputError,\n handleShowModal,\n}) => {\n const isEmail = isValidEmail(email);\n\n return (\n <div className=\"sponsor-container\">\n <h2 className=\"sponsor-container__subtitle\">{Wording.subTitle}</h2>\n <p className=\"sponsor-container__subtitle2\">\n {Wording.textParenting}\n </p>\n <p className=\"sponsor-container__inputTitle\">\n {Wording.inputTitle}\n </p>\n <CustomInput\n placeholder={Wording.placholderInput}\n value={email}\n error={error}\n onInputChange={(e: InputEvent) => handleInputChange(e, 'email')}\n />\n <a\n className=\"sponsor-container__rule\"\n href=\" https://www.wekiwi.fr/conditions-parrainage\"\n target=\"_blank\"\n >\n {Wording.ruleDescription}\n </a>\n <CustomButton\n title={Wording.buttonValue}\n color={isEmail ? 'orange' : 'gray'}\n onClick={() => {\n if (handleInputError()) {\n handleShowModal('');\n }\n }}\n />\n </div>\n );\n};\n\nexport default SponsorContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport ParentingContainer, {\n Props as ContainerProps,\n} from '../../containers/SponsorContainer/SponsorContainer';\n\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport { isValidEmail, findContractByNumber } from '../../utils/helpers';\nimport {\n createSponsorAsync,\n resetUpdate,\n} from '../../_actions/profile.actions';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ParentingPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n createSponsorDispatch: createSponsorAsync.request,\n resetDispatch: resetUpdate,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedParenting = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(ParentingContainer);\n\ntype State = {\n fields: {\n email: string;\n error?: string;\n [key: string]: string | undefined;\n };\n};\n\nclass SponsorPage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n fields: {\n email: '',\n error: undefined,\n },\n };\n }\n\n handleInputChange = (e: InputEvent, type: string) => {\n const { fields } = this.state;\n fields[type] = e.currentTarget.value;\n this.setState({ fields });\n };\n\n handleInputError = (): boolean => {\n const { fields } = this.state;\n\n if (isValidEmail(fields.email)) {\n fields.error = undefined;\n this.setState({ fields });\n return true;\n }\n fields.error = Wording.errorInput;\n this.setState({ fields });\n return false;\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = () => {\n const { fields } = this.state;\n const {\n profileState: {\n customerNumber,\n contact: {\n customerFullName: { firstName, lastName },\n },\n },\n createSponsorDispatch,\n } = this.props;\n createSponsorDispatch({\n sponsorId: customerNumber,\n sponsorFirstName: firstName,\n sponsorLastName: lastName,\n targetEmail: fields.email,\n });\n fields.email = '';\n this.setState({ fields });\n };\n\n render() {\n const { fields } = this.state;\n const {\n profileState: { contact, updateResponse, customerType },\n contractState: { contracts, selectedContractNumber },\n resetDispatch,\n }: Props = this.props;\n return (\n <WrappedParenting\n fields={fields}\n handleInputChange={this.handleInputChange}\n handleInputError={this.handleInputError}\n // Banner\n title={Wording.title}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetDispatch}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(SponsorPage);\n","import SponsorPage from './SponsorPage';\n\nexport default SponsorPage;\n","import React, { Fragment } from 'react';\n\nimport { CustomTable } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.RequestPage;\n\nimport * as helpers from '../../utils/helpers';\n\nexport const findLabel = (Arr: any[], categ: string) => {\n return Arr.find(x => x.value === categ)\n ? Arr.find(x => x.value === categ).label\n : '';\n};\n\ninterface ISelect {\n id: string;\n value: string;\n label: string;\n}\n\nconst compare = (a: any, b: any) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0;\n\nconst renderDataInOption = (tab: ISelect[]) =>\n tab\n .sort(compare)\n .map(\n (\n {\n label,\n value,\n }: {\n id: string;\n value: string;\n label: string;\n },\n key: number,\n ) => (\n <option key={key} value={value}>\n {label}\n </option>\n ),\n );\n\nconst columnsTable = [\n {\n Header: 'RÉFÉRENCE',\n accessor: 'eventNbr',\n width: 120,\n },\n {\n Header: 'CATÉGORIE',\n accessor: 'eventCategory',\n Cell: (props: any) => {\n return findLabel(Wording.categories, props.value);\n },\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row.eventCategory === filter.value;\n },\n Filter: ({ filter, onChange }: any) => (\n <select\n onChange={event => onChange(event.target.value)}\n style={{ width: '100%' }}\n value={filter ? filter.value : 'all'}\n >\n <option value=\"all\">Toutes les catégories</option>\n {renderDataInOption(Wording.categories)}\n </select>\n ),\n },\n {\n Header: 'SOUS-CATÉGORIE',\n accessor: 'eventSubcategory',\n Cell: (props: any) => {\n return findLabel(Wording.subCategories, props.value);\n },\n\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row.eventSubcategory === filter.value;\n },\n Filter: ({ filter, onChange }: any) => (\n <select\n onChange={event => onChange(event.target.value)}\n style={{ width: '100%' }}\n value={filter ? filter.value : 'all'}\n >\n <option value=\"all\">Toutes les sous-catégories</option>\n {renderDataInOption(Wording.subCategories)}\n </select>\n ),\n },\n {\n Header: 'DATE',\n accessor: 'referenceDate',\n filterable: false,\n Cell: (props: any) => {\n return helpers.getFormattedDate(props.value);\n },\n width: 125,\n },\n {\n Header: 'STATUT',\n accessor: 'eventStatusCode',\n Cell: (props: any) => {\n return findLabel(Wording.statusEvent, props.value);\n },\n filterMethod: (filter: any, row: any) => {\n if (filter.value === 'all') {\n return true;\n }\n return row.eventStatusCode === filter.value;\n },\n Filter: ({ filter, onChange }: any) => (\n <select\n onChange={event => onChange(event.target.value)}\n style={{ width: '100%' }}\n value={filter ? filter.value : 'all'}\n >\n <option value=\"all\">Tout les statuts</option>\n {renderDataInOption(Wording.statusEvent)}\n </select>\n ),\n width: 200,\n },\n];\n\nconst EventContainer: React.FC<{\n data: object[];\n}> = ({ data }) => {\n return (\n <div className=\"request-container\">\n <h2 className=\"request-container__sub-title\">{Wording.subTitle}</h2>\n\n <CustomTable\n columns={columnsTable}\n filterable={true}\n data={data}\n defaultPageSize={data.length > 10 ? 10 : data.length}\n noDataText={Wording.noDataText}\n sortable={true}\n className=\"-striped -highlight\"\n SubComponent={(row: any) => {\n return (\n <div className=\"sub-component\">\n {row.original.message}\n <span className=\"line\" />\n </div>\n );\n }}\n />\n </div>\n );\n};\n\nexport default EventContainer;\n","import EventContainer from './EventContainer';\n\nexport default EventContainer;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport EventContainer from '../../containers/EventContainer/';\nimport { fetchEventAsync } from '../../_actions/event.actions';\nimport {\n fetchContractAsync,\n setContract,\n} from '../../_actions/contract.actions';\nimport withBanner from '../../libraries/withBanner';\nimport { findContractByNumber } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.RequestPage;\n\nconst mapStateToProps = (state: RootState) => ({\n eventState: state.eventReducer,\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n eventDispatch: fetchEventAsync.request,\n contractDispatch: fetchContractAsync.request,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedEvent = withBanner()(EventContainer);\n\nexport class EventPage extends Component<Props, {}> {\n componentDidMount() {\n const {\n profileState,\n contractState,\n eventDispatch,\n }: Props = this.props;\n\n eventDispatch({\n contractNbr: contractState.selectedContractNumber,\n customerNbr: profileState.customerNumber,\n });\n }\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n eventDispatch,\n setContractDispatch,\n } = this.props;\n const payload = {\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n };\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch(payload);\n }\n eventDispatch(payload);\n };\n\n render() {\n const {\n eventState: { events },\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber },\n }: Props = this.props;\n const data = events && events.length > 0 ? events : [];\n return (\n <WrappedEvent\n data={data}\n // Banner\n title={Wording.title}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n selectedContractNumber={selectedContractNumber}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(EventPage);\n","import EventPage from './EventPage';\nexport default EventPage;\n","import React from 'react';\n\nimport { CustomButton } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.MovePage;\n\ntype Props = {\n handleClick: () => void;\n};\n\nconst MoveContainer: React.FC<Props> = props => {\n return (\n <div className=\"move-container\">\n <h1 className=\"move-container__title\">{Wording.title}</h1>\n <h1 className=\"move-container__sub-title\">{Wording.subTitle}</h1>\n\n <p className=\"move-container__content\">{Wording.content}</p>\n\n <CustomButton\n onClick={() => props.handleClick()}\n color=\"orange\"\n title={Wording.buttonValue}\n />\n <br />\n\n <p className=\"move-container__content\">\n {`${Wording.textWithLink1} ${Wording.textLink} `}\n <a\n href={`${Wording.link}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {Wording.textWithLink2}\n </a>\n .\n </p>\n </div>\n );\n};\n\nexport default MoveContainer;\n","import MoveContainer from './MoveContainer';\n\nexport default MoveContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { RootState } from 'Types';\n\nimport MoveContainer from '../../containers/MoveContainer';\nimport { TCustomer } from 'Models';\nimport { ECustomerStatus } from '../../utils/enums';\nimport { concatUrl } from '../../utils/helpers';\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\ntype Props = ReturnType<typeof mapStateToProps>;\n\nclass MovePage extends React.Component<Props> {\n handleClick = () => {\n const {\n profileState: {\n contact,\n customerCategoryCode,\n customerNumber,\n customerType,\n },\n contractState: { contracts },\n } = this.props;\n const customer: TCustomer = {\n customerCategoryCode,\n contact,\n customerNumber,\n customerStatus: ECustomerStatus.CUSTOMER,\n type: customerType,\n };\n const thirdParties = contracts[0].thirdParties;\n const link = concatUrl(customer, thirdParties);\n window.open(link);\n };\n\n render() {\n return <MoveContainer handleClick={this.handleClick} />;\n }\n}\n\nexport default connect(mapStateToProps)(MovePage);\n","import MovePage from './MovePage';\n\nexport default MovePage;\n","import React from 'react';\n\nimport { TPrepaymentFrequency } from 'Models';\n\nimport { CustomRadio } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.PackagePage;\nconst CommonWording = WordingConstant.Common;\n\nexport type Props = {\n loading: boolean;\n chosenFrequency: string;\n prepaymentFrequencies: TPrepaymentFrequency[];\n onChange: any;\n};\n\nconst frequencyWording: { [key: string]: string } = CommonWording.frequency;\n\nconst FrequencyContainer: React.FC<Props> = ({\n loading,\n chosenFrequency,\n prepaymentFrequencies,\n onChange,\n}) => {\n return (\n <div className=\"frequency-container\">\n <p className=\"frequency-container__title\">\n {Wording.plan.frequency.title}\n </p>\n\n <div className=\"frequency-container__frequency\">\n <p className=\"frequency-container__frequency__title\">\n {Wording.plan.frequency.subtitle}\n </p>\n <div className=\"frequency-container__frequency__radios\">\n {prepaymentFrequencies ? (\n prepaymentFrequencies.map(\n ({ frequency, fee, currency }, index) => {\n const label = frequencyWording[frequency];\n return (\n <CustomRadio\n key={index}\n text={label}\n value={frequency}\n id={`id__${index}__${frequency}`}\n description={`${fee}${currency}`}\n checked={chosenFrequency === frequency}\n handleCheck={onChange}\n />\n );\n },\n )\n ) : (\n <p>\n {loading\n ? CommonWording.isLoading\n : CommonWording.noData}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default FrequencyContainer;\n","import FrequencyContainer from './FrequencyContainer';\n\nexport default FrequencyContainer;\n","import React from 'react';\nimport Slider from 'react-slick';\n\nimport { TPackage } from 'Models';\n\nimport resources from '../../utils/resources';\n\nimport { PackageElement, EnergyGauge, CustomSelect } from '../../components';\n\nimport WordingConstant from '../../utils/wording.json';\nimport {\n buildPackagesForSlider,\n canSelectAllPackage,\n} from '../../utils/helpers';\n\nconst Wording = WordingConstant.PackagePage;\nconst CommonWording = WordingConstant.Common;\n\nexport type Props = {\n loading: boolean;\n packages?: TPackage[];\n ranges: number[][];\n showGaugeTab: boolean;\n prices: number[];\n packageID: string;\n handleSetAdminChosenPackages: (pkg: TPackage[]) => void;\n handleToggleGauge(gauge: boolean): void;\n handleChangePackageID(packageID: string): void;\n handleChangePrices(prices: number[]): void;\n};\n\nconst SlickButtonFix = ({\n currentSlide,\n slideCount,\n children,\n ...props\n}: any) => <span {...props}>{children}</span>;\n\nconst NextArrow = () => (\n <img src={resources['ic-arrow-next']} alt=\"ic-arrow-next\" />\n);\nconst BackArrow = () => (\n <img src={resources['ic-arrow-back']} alt=\"ic-arrow-back\" />\n);\n\nconst GaugeContainer: React.FC<Props> = ({\n loading,\n packages,\n ranges,\n prices,\n packageID,\n showGaugeTab,\n handleToggleGauge,\n handleChangePackageID,\n handleChangePrices,\n handleSetAdminChosenPackages,\n}: Props) => {\n let initialProgress = 0;\n if (prices && prices.length > 1) {\n initialProgress = ranges.findIndex(\n r => r[0] === prices[0] && r[1] === prices[1],\n );\n initialProgress = initialProgress === -1 ? 0 : initialProgress;\n }\n const reducer = (accumulator: any, current: any) => {\n const max = current[0] > current[1] ? current[0] : current[1];\n return accumulator > max ? accumulator : max;\n };\n const gaugeMaxValue = ranges.reduce(reducer, 0);\n\n const isMultiple = packages && packages.length > 5;\n\n return (\n <div className=\"gauge-container\">\n <p className=\"gauge-container__title\">{Wording.plan.gauge.title}</p>\n\n <div className=\"gauge-container__gauge\">\n <input\n id=\"tab1\"\n type=\"radio\"\n checked={!showGaugeTab}\n onChange={() => handleToggleGauge(false)}\n />\n <input\n id=\"tab2\"\n type=\"radio\"\n checked={showGaugeTab}\n onChange={() => handleToggleGauge(true)}\n />\n\n <ul>\n <li className=\"tab1\">\n <label htmlFor=\"tab1\">{Wording.plan.gauge.tab1}</label>\n </li>\n <li className=\"tab2\">\n <label htmlFor=\"tab2\">{Wording.plan.gauge.tab2}</label>\n </li>\n </ul>\n\n <section>\n {!showGaugeTab ? (\n <React.Fragment>\n <div className=\"tab1\">\n {packages ? (\n <div className={`package-slider-carousel`}>\n <Slider\n speed={500}\n slidesToShow={\n isMultiple\n ? 4\n : (packages as any).length\n }\n slidesToScroll={4}\n arrows={isMultiple}\n nextArrow={\n <SlickButtonFix>\n <NextArrow />\n </SlickButtonFix>\n }\n prevArrow={\n <SlickButtonFix>\n <BackArrow />\n </SlickButtonFix>\n }\n >\n {(isMultiple\n ? buildPackagesForSlider(\n packages as any,\n )\n : packages\n ).map(\n (\n { amount, id, recommended },\n index,\n ) => (\n <PackageElement\n key={index}\n price={amount}\n chosen={\n id === packageID\n }\n recommended={\n recommended\n }\n onClick={() => {\n handleChangePackageID(\n id,\n );\n }}\n />\n ),\n )}\n </Slider>\n </div>\n ) : (\n <p>\n {loading\n ? CommonWording.isLoading\n : CommonWording.noData}\n </p>\n )}\n </div>\n\n <div\n className=\"modal\"\n onClick={() =>\n // handleToggle('modalPackage', !modalPackage)\n {}\n }\n tabIndex={0}\n role=\"button\"\n >\n {Wording.plan.popupChoosePackage}\n </div>\n </React.Fragment>\n ) : (\n <div className=\"tab2\">\n {packages && canSelectAllPackage() && (\n <CustomSelect\n options={packages.map(pkg => ({\n id: `${pkg.id}`,\n label: `${pkg.id}${\n pkg.recommended\n ? ' (Recommandé)'\n : ''\n }`,\n value: pkg,\n }))}\n handleChangeSelect={(props: any) => {\n handleSetAdminChosenPackages([\n props.value,\n ] as TPackage[]);\n }}\n />\n )}\n {ranges.length > 0 && ranges[0].length > 0 ? (\n <>\n <EnergyGauge\n initial={initialProgress}\n maxValue={gaugeMaxValue}\n ranges={ranges}\n onChange={(p: number[]) => {\n handleChangePrices(p);\n }}\n />\n </>\n ) : (\n <p>{CommonWording.noData}</p>\n )}\n </div>\n )}\n </section>\n </div>\n </div>\n );\n};\n\nexport default GaugeContainer;\n","import GaugeContainer from './GaugeContainer';\n\nexport default GaugeContainer;\n","import React, { useState } from 'react';\n\nimport { InputEvent } from 'Types';\nimport { TPackage, TPrepaymentFrequency } from 'Models';\nimport { EFrequency, EModeManageOffer } from '../../utils/enums';\nimport { CustomButton } from '../../components';\nimport FrequencyContainer from '../FrequencyContainer';\nimport GaugeContainer from '../GaugeContainer';\nimport { IPayloadUpdatePackage as PackagePayload } from '../../_actions/package.actions';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { findPackagesByRange, findPackageById } from '../../utils/helpers';\n\nconst Wording = WordingConstant.PackagePage;\n\n/**\n * Props current contains 4 params to be only displayed by default\n */\ntype Props = {\n current: {\n currentPackages?: TPackage[];\n frequency: EFrequency;\n packageID: string;\n prices: number[];\n };\n loading: boolean;\n packages?: TPackage[];\n ranges: number[][];\n prepaymentFrequencies?: TPrepaymentFrequency[];\n adminChosenPackages?: TPackage[];\n handleSetAdminChosenPackages: (pkg: TPackage[]) => void;\n handleFetchPackage(): void;\n handleSetShowOption(showOption: boolean): void;\n handleValidate(section: string, payload: PackagePayload): void;\n};\n\nconst PackageSettingContainer: React.FC<Props> = ({\n current,\n loading,\n packages,\n ranges,\n prepaymentFrequencies,\n handleSetShowOption,\n handleFetchPackage,\n handleValidate,\n handleSetAdminChosenPackages,\n adminChosenPackages,\n}) => {\n const [showFrequency, setShowFrequency] = useState<boolean>(false);\n const [showGauge, setShowGauge] = useState<boolean>(false);\n const [showGaugeTab, setShowGaugeTab] = useState<boolean>(false);\n const [frequency, setFrequency] = useState<string>(current.frequency);\n const [packageID, setPackageID] = useState<string>(current.packageID);\n const [prices, setPrices] = useState<number[]>(current.prices);\n\n if (!showGauge && !showFrequency) {\n return (\n <div className=\"package-container__body__right__button\">\n <CustomButton\n title={Wording.plan.gauge.buttonTitle}\n color=\"orange\"\n onClick={() => {\n setShowGauge(true);\n setPackageID(current.packageID);\n handleSetShowOption(false);\n handleFetchPackage();\n }}\n />\n <CustomButton\n title={Wording.plan.frequency.buttonTitle}\n color=\"orange\"\n onClick={() => {\n setShowFrequency(true);\n setFrequency(current.frequency);\n handleSetShowOption(false);\n }}\n />\n </div>\n );\n }\n\n const handleValidateClick = () => {\n let section = '';\n\n let payload: PackagePayload = {\n mode: EModeManageOffer.INSTALLMENT_FREQUENCY,\n };\n if (showFrequency) {\n section = 'frequency';\n // The frequency is currently chosen from state\n payload = {\n frequency: frequency as EFrequency,\n mode: EModeManageOffer.INSTALLMENT_FREQUENCY,\n };\n } else if (showGaugeTab) {\n section = 'prices';\n // The price ranges are based on current chosenPackage\n // If the winter-summer prices are already chosen and no packageID found\n // choose the recommended package\n\n let authorizedPackages: TPackage[][] | undefined = [];\n let currentPackage: TPackage | undefined;\n\n if (adminChosenPackages) {\n currentPackage = findPackageById(\n adminChosenPackages[0].id,\n packages,\n );\n } else {\n currentPackage = findPackageById(\n current.packageID,\n packages,\n true,\n );\n }\n\n if (!currentPackage && current.currentPackages) {\n const curr = current.currentPackages.find(\n pk => pk.id === current.packageID,\n );\n\n authorizedPackages = curr ? curr.authorizedPackages : undefined;\n } else {\n authorizedPackages = currentPackage\n ? currentPackage.authorizedPackages\n : undefined;\n }\n\n const chosenPackages = findPackagesByRange(\n prices,\n authorizedPackages,\n );\n payload = {\n chosenPackages,\n mode: EModeManageOffer.PACKAGE,\n };\n } else {\n section = 'packageID';\n // The packageID is currently chosen from state\n const currentPackage = findPackageById(packageID, packages, false);\n const chosenPackages = currentPackage\n ? [currentPackage]\n : undefined;\n payload = {\n chosenPackages,\n mode: EModeManageOffer.PACKAGE,\n };\n }\n\n handleValidate(section, payload);\n };\n\n return (\n <div className=\"package-container__body__right__setting\">\n {showFrequency ? (\n <FrequencyContainer\n loading={loading}\n chosenFrequency={frequency}\n prepaymentFrequencies={prepaymentFrequencies || []}\n onChange={(freq: InputEvent) => {\n setFrequency(freq.currentTarget.value);\n }}\n />\n ) : (\n <GaugeContainer\n loading={loading}\n packages={packages}\n ranges={ranges}\n prices={prices}\n packageID={packageID}\n showGaugeTab={showGaugeTab}\n handleToggleGauge={gauge => {\n setShowGaugeTab(gauge);\n if (gauge && current.prices.length < 2) {\n setPrices(ranges[0]);\n }\n }}\n handleChangePackageID={(value: string) =>\n setPackageID(value)\n }\n handleChangePrices={(value: number[]) => setPrices(value)}\n handleSetAdminChosenPackages={handleSetAdminChosenPackages}\n />\n )}\n\n <div className=\"package-container__body__right__setting__button\">\n <CustomButton\n title={Wording.plan.gauge.cancelButton}\n color=\"gray\"\n onClick={() => {\n setShowGauge(false);\n setShowFrequency(false);\n handleSetShowOption(true);\n }}\n />\n <CustomButton\n title={Wording.plan.gauge.validateButton}\n color=\"orange\"\n onClick={() => {\n setShowGauge(false);\n setShowFrequency(false);\n handleSetShowOption(true);\n handleValidateClick();\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default PackageSettingContainer;\n","import React, { useState, useEffect } from 'react';\n\nimport Config from '../../utils/config';\n\nimport {\n TContract,\n TProduct,\n TOffer,\n TPackage,\n TPrepaymentFrequency,\n TAdditionalRate,\n} from 'Models';\nimport {\n EEnergy,\n EFrequency,\n EContractStatus,\n EAmountType,\n EBillingMode,\n} from '../../utils/enums';\nimport { IPayloadUpdatePackage as PackagePayload } from '../../_actions/package.actions';\nimport { PlanElement, EnergyDetail, OptionElement } from '../../components';\nimport PackageSettingContainer from './PackageSettingContainer';\n\nimport {\n getFormattedDate,\n displayRateOption,\n displayFrequency,\n transformAuthorizedPackages,\n findBillingModeCode,\n} from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { TCurrentActionMode } from '../../pages/PackagePage/PackagePage';\n\nconst Wording = WordingConstant.PackagePage;\n\nexport type Props = {\n loadingPackage: boolean;\n loadingOffer: boolean;\n contract: TContract;\n packages?: TPackage[];\n products: TProduct[];\n offer: TOffer;\n groupe?: string;\n prepaymentFrequencies: TPrepaymentFrequency[];\n handleFetchPackage(): void;\n handleSetPayload(payload: PackagePayload): void;\n handleShowModal(section: string): void;\n handleWordingModalMyMode(section: TCurrentActionMode): void;\n};\n\nconst PackageContainer: React.FC<Props> = ({\n loadingPackage,\n loadingOffer,\n contract,\n products,\n offer,\n packages,\n prepaymentFrequencies,\n handleFetchPackage,\n groupe,\n handleSetPayload,\n handleShowModal,\n handleWordingModalMyMode,\n}) => {\n const [localUserGroup, setLocalUserGroup] = useState<null | string>(null);\n\n const [adminChosenPackages, setAdminChosenPackages] = useState<\n TPackage[] | undefined\n >(undefined);\n const [showOption, setShowOption] = useState<boolean>(true);\n const options: TAdditionalRate[] = contract.chosenProduct.additionalRates\n ? contract.chosenProduct.additionalRates.filter(\n r => r.type === EAmountType.OPTION,\n )\n : [];\n const currentAdditionalOptions: string[] = options\n .filter(r => r.active)\n .map(r => r.label);\n\n const currentProductCodes: string[] = products\n .filter(p => p.productCode === contract.chosenProduct.productCode)\n .map(p => p.productCode);\n\n const chosenPackages = contract.chosenPackages;\n const packageID: string =\n chosenPackages && chosenPackages.length === 1\n ? chosenPackages[0].id\n : '';\n const prices: number[] = chosenPackages\n ? chosenPackages.map(p => Number(p.amount))\n : [];\n let ranges: number[][] = [[]];\n\n if (adminChosenPackages && adminChosenPackages.length === 1) {\n ranges = transformAuthorizedPackages(\n adminChosenPackages[0].authorizedPackages,\n );\n } else if (chosenPackages && chosenPackages.length === 1) {\n ranges = transformAuthorizedPackages(\n chosenPackages[0].authorizedPackages,\n );\n } else {\n if (packages) {\n const recommendPackage = packages.find(p => p.recommended);\n ranges = recommendPackage\n ? transformAuthorizedPackages(\n recommendPackage.authorizedPackages,\n )\n : [[]];\n }\n }\n\n useEffect(() => {\n const localGrp = localStorage.getItem('userGroup');\n setLocalUserGroup(localGrp);\n }, []);\n\n const current = {\n currentPackages: chosenPackages,\n packageID,\n prices,\n frequency: contract.installmentFrequency as EFrequency,\n };\n\n const renderDetail = () => {\n const deliveryPoint = contract.deliveryPoint;\n const details = [];\n let separateDetails = [];\n if (contract.energy === EEnergy.EL) {\n details.push({\n title: Wording.detailDescription.PDL,\n value: deliveryPoint.pointOfDelivery,\n });\n } else {\n details.push({\n title: Wording.detailDescription.PCE,\n value: deliveryPoint.pointOfDelivery,\n });\n }\n details.push({\n title: Wording.detailDescription.beginDate,\n value: getFormattedDate(contract.effectiveStartDate) || '',\n });\n if (contract.energy === EEnergy.EL) {\n const rateOption = displayRateOption(contract.rateOption);\n separateDetails = [\n {\n title: Wording.detailDescription.contractualCapacityEL,\n value: `${deliveryPoint.contractualCapacity} ${deliveryPoint.contractualCapacityUnit}`,\n },\n {\n title: Wording.detailDescription.meterReading,\n value: deliveryPoint.meterNumber,\n },\n {\n title: Wording.detailDescription.priceOption,\n value: rateOption,\n },\n ];\n } else {\n separateDetails = [\n {\n title: Wording.detailDescription.profile,\n value: deliveryPoint.profile,\n },\n {\n title: Wording.detailDescription.meterReading,\n value: deliveryPoint.meterNumber,\n },\n {\n title: Wording.detailDescription.priceOption,\n value: deliveryPoint.gridRate,\n },\n ];\n if (contract.estimates && contract.estimates.length > 0) {\n separateDetails.unshift({\n title: Wording.detailDescription.contractualCapacityNG,\n value: `${contract.estimates[0].quantity} ${Wording.detailDescription.contractualCapacityUnitNG}`,\n });\n }\n }\n const readingFrequency = displayFrequency(\n deliveryPoint.readingFrequency as EFrequency,\n );\n\n const installmentFrequency = displayFrequency(\n contract.installmentFrequency as EFrequency,\n );\n const settlementFrequency = displayFrequency(\n contract.settlementFrequency as EFrequency,\n );\n\n details.push(\n ...separateDetails,\n ...[\n {\n title: Wording.detailDescription.readingFrequency,\n value: readingFrequency,\n },\n {\n title: Wording.detailDescription.installmentFrequency,\n value: installmentFrequency,\n },\n {\n title: Wording.detailDescription.settlementFrequency,\n value: settlementFrequency,\n },\n ],\n );\n\n return <EnergyDetail details={details} />;\n };\n\n const handleSetAdminChosenPackages = (pkg: TPackage[]) => {\n setAdminChosenPackages(pkg);\n };\n\n const handleValidate = (section: string, payload: PackagePayload) => {\n handleWordingModalMyMode(section as TCurrentActionMode);\n handleShowModal(section);\n handleSetPayload(payload);\n };\n\n const renderContents = () => (\n <>\n <h1 className=\"package-container__subtitle\">{Wording.subtitle}</h1>\n\n <div className=\"package-container__body\">\n <PlanElement\n loading={loadingOffer}\n prices={prices}\n offer={offer}\n products={products}\n additionalOptions={options}\n currentProductCodes={currentProductCodes}\n currentAdditionalOptions={currentAdditionalOptions}\n loadingOption={false}\n handleToggle={handleValidate}\n contractProduct={contract.chosenProduct}\n />\n <div className=\"package-container__body__right\">\n {renderDetail()}\n {showOption && options && options.length > 0 && (\n <OptionElement\n idToggle={contract.energy}\n options={options}\n currentOptions={currentAdditionalOptions}\n handleToggle={handleValidate}\n />\n )}\n {findBillingModeCode(contract) !==\n EBillingMode.CYCLICAL_BILLING && (\n <PackageSettingContainer\n current={current}\n loading={loadingPackage}\n packages={packages}\n ranges={ranges}\n prepaymentFrequencies={prepaymentFrequencies}\n handleSetShowOption={(value: boolean) => {\n setShowOption(value);\n }}\n handleFetchPackage={handleFetchPackage}\n handleValidate={handleValidate}\n handleSetAdminChosenPackages={\n handleSetAdminChosenPackages\n }\n adminChosenPackages={adminChosenPackages}\n />\n )}\n </div>\n </div>\n </>\n );\n\n /**\n * TODO: uncomment the block to reuse the contractStatus\n * If the contract is not yet activated, should only display messages\n */\n return (\n <div className=\"package-container\">\n {contract.contractStatus !== EContractStatus.EFFECTIVE &&\n (localUserGroup === null || localUserGroup === '') ? (\n <div className=\"package-container__contractStatus\">\n <p>\n {contract.contractStatus ===\n EContractStatus.WAITING_FOURTEEN_DAY ||\n contract.contractStatus === EContractStatus.RECOVERY ||\n contract.contractStatus ===\n EContractStatus.INITIALIZED ||\n contract.contractStatus ===\n EContractStatus.SENT_TO_MARKET\n ? Wording.contractStatus.inProgress\n : Wording.contractStatus.notAccessible}\n </p>\n </div>\n ) : (\n renderContents()\n )}\n </div>\n );\n};\n\nexport default PackageContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\nimport { RootState } from 'Types';\nimport { EEnergy, ECustomerType, EModeManageOffer } from '../../utils/enums';\n\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\n\nimport PackageContainer, {\n Props as ContainerProps,\n} from '../../containers/PackageContainer/PackageContainer';\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchPackageAsync,\n fetchProductAsync,\n updatePackageAsync,\n resetUpdate,\n IPayloadUpdatePackage as PackagePayload,\n} from '../../_actions/package.actions';\n\nimport { findContractByNumber, getTodayDate } from '../../utils/helpers';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { TEstimate } from 'Models';\n\nconst Wording = WordingConstant.PackagePage;\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n packageState: state.packageReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n fetchPackageDispatch: fetchPackageAsync.request,\n fetchProductDispatch: fetchProductAsync.request,\n updatePackageDispatch: updatePackageAsync.request,\n resetContractDispatch: resetContractState,\n resetUpdateDispatch: resetUpdate,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedPackage = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(PackageContainer);\n\nexport type TCurrentActionMode = 'packageID' | 'option' | 'frequency';\ntype State = {\n options: [];\n additionalOptions: [];\n payload?: PackagePayload;\n modalMode: TCurrentActionMode;\n};\n\nclass PackagePage extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n options: [],\n additionalOptions: [],\n payload: undefined,\n modalMode: 'packageID',\n };\n }\n\n componentDidMount() {\n const {\n fetchProductDispatch,\n profileState: { customerType },\n contractState: { contracts, selectedContractNumber },\n } = this.props;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n fetchProductDispatch({\n customerType: customerType as ECustomerType,\n contracts: [contract],\n });\n }\n\n componentDidUpdate(prevProps: Props) {\n const { contractState } = prevProps;\n const {\n fetchProductDispatch,\n profileState: { customerType },\n contractState: { contracts, selectedContractNumber },\n } = this.props;\n if (selectedContractNumber !== contractState.selectedContractNumber) {\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n fetchProductDispatch({\n customerType,\n contracts: [contract],\n });\n }\n }\n\n handleFetchPackage = () => {\n const {\n fetchPackageDispatch,\n profileState: { customerType },\n contractState: { contracts, selectedContractNumber },\n } = this.props;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const newEstimates =\n contract.estimates &&\n contract.estimates.map((e: TEstimate) => {\n return {\n ...e,\n energy: contract.energy,\n };\n });\n\n fetchPackageDispatch({\n contract: contract,\n customerType: customerType as ECustomerType,\n contractNbr: selectedContractNumber,\n estimates: newEstimates as TEstimate[],\n energy: contract.energy as EEnergy,\n reference: contract.deliveryPoint.pointOfDelivery,\n productCode: contract.chosenProduct,\n });\n };\n\n prepareEvent = () => {\n const { payload } = this.state;\n const {\n profileState: { customerNumber },\n contractState: { selectedContractNumber },\n } = this.props;\n\n let subCategory = '';\n let message = '';\n\n if (payload) {\n switch (payload.mode) {\n case EModeManageOffer.INSTALLMENT_FREQUENCY: {\n subCategory =\n Wording.subCategories.prepaymentFrequency.value;\n message = Wording.subCategories.prepaymentFrequency.label;\n break;\n }\n\n case EModeManageOffer.PACKAGE: {\n if (\n payload.chosenPackages &&\n payload.chosenPackages.length === 2\n ) {\n subCategory =\n Wording.subCategories.seasonalityThreshold.value;\n message =\n Wording.subCategories.seasonalityThreshold.label;\n } else {\n subCategory = Wording.subCategories.packageChange.value;\n message = Wording.subCategories.packageChange.label;\n }\n\n break;\n }\n\n case EModeManageOffer.OPTIONS: {\n if (payload.option) {\n switch (payload.option.label) {\n case Wording.eventCheckOptions.saveTree:\n subCategory = payload.option.active\n ? Wording.subCategories.saveTreeAdd.value\n : Wording.subCategories.saveTreeSupp.value;\n\n message = payload.option.active\n ? Wording.subCategories.saveTreeAdd.label\n : Wording.subCategories.saveTreeSupp.label;\n break;\n\n case Wording.eventCheckOptions.green:\n subCategory = payload.option.active\n ? Wording.subCategories.greenAdd.value\n : Wording.subCategories.greenSupp.value;\n\n message = payload.option.active\n ? Wording.subCategories.greenAdd.label\n : Wording.subCategories.greenSupp.label;\n break;\n\n case Wording.eventCheckOptions.plastic:\n subCategory = payload.option.active\n ? Wording.subCategories.plasticAdd.value\n : Wording.subCategories.plasticSupp.value;\n\n message = payload.option.active\n ? Wording.subCategories.plasticAdd.label\n : Wording.subCategories.plasticSupp.label;\n break;\n\n default:\n message = Wording.subCategories.default.label;\n subCategory = '';\n break;\n }\n }\n break;\n }\n case EModeManageOffer.PRODUCT: {\n subCategory = Wording.subCategories.changeOffer.value;\n message = Wording.subCategories.changeOffer.label;\n }\n\n default:\n break;\n }\n }\n\n return {\n customerNbr: customerNumber,\n contractNbr: selectedContractNumber,\n category: Wording.categoryToSend,\n date: getTodayDate(),\n subCategory,\n message,\n };\n };\n\n handleUpdate = () => {\n const { payload } = this.state;\n if (payload) {\n const {\n profileState: { customerNumber },\n contractState: { contracts, selectedContractNumber },\n updatePackageDispatch,\n } = this.props;\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const event = this.prepareEvent();\n\n updatePackageDispatch({\n customerNbr: customerNumber,\n contract,\n event,\n ...payload,\n });\n }\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n renderWordingModalByMode = () => {\n const { modalMode } = this.state;\n return modalMode === 'option' ? Wording.popup_option : Wording.popup;\n };\n\n handleWordingModalMyMode = (mode: TCurrentActionMode) => {\n this.setState({ modalMode: mode });\n };\n\n render() {\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber, error },\n authState: { groupe },\n packageState: {\n loadingPackage,\n loadingOffer,\n pkg,\n products,\n offer,\n prepaymentFrequencies,\n updateResponse,\n description,\n },\n resetUpdateDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n const packages = pkg[selectedContractNumber];\n const currentOffer = contract.offer || offer[selectedContractNumber];\n const pf = prepaymentFrequencies[selectedContractNumber];\n\n return (\n <WrappedPackage\n handleWordingModalMyMode={this.handleWordingModalMyMode}\n loadingPackage={loadingPackage}\n loadingOffer={loadingOffer}\n contract={contract}\n packages={packages}\n products={products}\n groupe={groupe}\n prepaymentFrequencies={pf}\n offer={currentOffer}\n handleFetchPackage={this.handleFetchPackage}\n handleSetPayload={(payload: PackagePayload) =>\n this.setState({\n payload: {\n ...payload,\n customerType,\n },\n })\n }\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={this.renderWordingModalByMode()}\n customDescription={description}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={() => resetUpdateDispatch()}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(PackagePage);\n","import PackagePage from './PackagePage';\n\nexport default PackagePage;\n","import React from 'react';\n\nimport { InputEvent } from 'Types';\n\nimport { CustomCheckbox, CustomInput, CustomButton } from '../../components';\nimport { isValidPassword } from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\nconst Wording = WordingConstant.SettingPage;\n\ninterface IFields {\n toggles: IToggles;\n password: IPassword;\n}\n\ninterface IPassword {\n old: string;\n new: string;\n confirm: string;\n}\n\ninterface IToggles {\n isReceiveNews: boolean;\n isAuthorizeData: boolean;\n}\ninterface IErrors {\n showNewPass: boolean;\n showConfirmPass: boolean;\n}\n\nexport type Props = {\n fields: IFields;\n errors: IErrors;\n handleToggle: any;\n handleInput: any;\n handleError: any;\n handleShowModal(section: string): void;\n};\n\nconst SettingContainer: React.FC<Props> = props => {\n const isNewValid = isValidPassword(props.fields.password.new);\n const isConfirmValid =\n props.fields.password.new === props.fields.password.confirm;\n\n const isValid =\n // props.fields.password.confirm !== '' &&\n // props.fields.password.new !== '' &&\n props.fields.password.old !== '' && isNewValid && isConfirmValid;\n\n return (\n <div className=\"setting-container\">\n <h2 className=\"setting-container__subTitle\">{Wording.subTitle}</h2>\n <p className=\"setting-container__toggle-title\">\n {Wording.toggle.title}\n </p>\n <CustomCheckbox\n checked={props.fields.toggles.isReceiveNews}\n text={Wording.toggle.isReceiveNews}\n handleCheck={() => props.handleToggle('isReceiveNews')}\n />\n <CustomCheckbox\n text={Wording.toggle.isAuthorizeData}\n checked={props.fields.toggles.isAuthorizeData}\n handleCheck={() => props.handleToggle('isAuthorizeData')}\n />\n\n <CustomButton\n title={Wording.buttonValue}\n color={'orange'}\n onClick={() => props.handleShowModal('customer')}\n />\n <h2 className=\"setting-container__password-title\">\n {Wording.password.title}\n </h2>\n <p className=\"setting-container__password-subTitle\">\n {Wording.password.subTitle}\n </p>\n <div className=\"setting-container__password-inputs\">\n <span className=\"setting-container__password-inputs__title\">\n {Wording.password.old}\n </span>\n <CustomInput\n type=\"password\"\n value={props.fields.password.old}\n onInputChange={(e: InputEvent) =>\n props.handleInput(e, 'old')\n }\n placeholder={Wording.password.placeholder}\n />\n <span className=\"setting-container__password-inputs__title\">\n {Wording.password.new}\n </span>\n <CustomInput\n type=\"password\"\n value={props.fields.password.new}\n onInputChange={(e: InputEvent) =>\n props.handleInput(e, 'new')\n }\n placeholder={Wording.password.placeholder}\n onBlur={() => props.handleError('showNewPass', !isNewValid)}\n error={\n props.errors.showNewPass\n ? Wording.password.error.new\n : undefined\n }\n />\n <span className=\"setting-container__password-inputs__title\">\n {Wording.password.confirm}\n </span>\n <CustomInput\n type=\"password\"\n value={props.fields.password.confirm}\n onInputChange={(e: InputEvent) =>\n props.handleInput(e, 'confirm')\n }\n placeholder={Wording.password.placeholder}\n onBlur={() =>\n props.handleError('showConfirmPass', !isConfirmValid)\n }\n error={\n props.errors.showConfirmPass\n ? Wording.password.error.confirm\n : undefined\n }\n />\n </div>\n <CustomButton\n title={Wording.buttonValue1}\n color={isValid ? 'orange' : 'gray'}\n onClick={() =>\n isValid ? props.handleShowModal('password') : null\n }\n />\n </div>\n );\n};\n\nexport default SettingContainer;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport SettingContainer, {\n Props as ContainerProps,\n} from '../../containers/SettingContainer/SettingContainer';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n updateCustomerAsync,\n updatePasswordAsync,\n resetUpdate,\n} from '../../_actions/profile.actions';\n\nimport WordingConstant from '../../utils/wording.json';\nimport { getTodayDate, findContractByNumber } from '../../utils/helpers';\n\nconst Wording = WordingConstant.SettingPage;\n\ninterface IFields {\n toggles: {\n isReceiveNews: boolean;\n isAuthorizeData: boolean;\n [key: string]: boolean;\n };\n password: {\n old: string;\n new: string;\n confirm: string;\n [key: string]: string;\n };\n}\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n updateCustomerDispatch: updateCustomerAsync.request,\n updatePasswordDispatch: updatePasswordAsync.request,\n resetUpdateDispatch: resetUpdate,\n resetContractDispatch: resetContractState,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nexport const WrappedSetting = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(SettingContainer);\n\ntype State = {\n fields: IFields;\n errors: {\n showNewPass: boolean;\n showConfirmPass: boolean;\n [key: string]: boolean;\n };\n};\n\nexport class SettingPage extends React.Component<Props, State> {\n constructor(props: any) {\n super(props);\n\n const { profileState }: Props = this.props;\n\n this.state = {\n fields: {\n password: {\n old: '',\n new: '',\n confirm: '',\n },\n toggles: {\n isAuthorizeData: profileState.contact.marketing,\n isReceiveNews: profileState.contact.newsletter,\n },\n },\n errors: {\n showNewPass: false,\n showConfirmPass: false,\n },\n };\n }\n\n handleToggle = (type: string) => {\n const { fields } = this.state;\n fields.toggles[type] = !fields.toggles[type];\n this.setState({ fields });\n };\n\n handleInput = (e: InputEvent, type: string) => {\n const { fields } = this.state;\n const { value } = e.currentTarget;\n fields.password[type] = value;\n this.setState({ fields });\n };\n\n handleError = (type: string, val: boolean) => {\n const { errors } = this.state;\n errors[type] = val;\n this.setState({ errors });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const { fields } = this.state;\n const {\n updateCustomerDispatch,\n profileState,\n updatePasswordDispatch,\n contractState,\n } = this.props;\n\n if (section === 'customer') {\n updateCustomerDispatch({\n customer: {\n customerNbr: profileState.customerNumber,\n email: profileState.contact.email,\n phone: profileState.contact.phone,\n marketing: fields.toggles.isAuthorizeData,\n newsletter: fields.toggles.isReceiveNews,\n },\n\n event: {\n customerNbr: profileState.customerNumber,\n contractNbr: contractState.selectedContractNumber,\n category: WordingConstant.ProfilePage.categoryToSend,\n date: getTodayDate(),\n subCategory:\n WordingConstant.ProfilePage.subCategories\n .consumptionContactChange.value,\n message:\n WordingConstant.ProfilePage.subCategories\n .consumptionContactChange.label,\n },\n });\n } else {\n const token = localStorage.getItem('accessToken');\n if (token) {\n updatePasswordDispatch({\n token,\n user: profileState.customerNumber,\n oldPassword: fields.password.old,\n newPassword: fields.password.new,\n });\n }\n\n fields.password.confirm = '';\n fields.password.new = '';\n fields.password.old = '';\n }\n this.setState({ fields });\n };\n\n render() {\n const { fields, errors } = this.state;\n const {\n profileState: { contact, updateResponse, customerType },\n contractState: { contracts, selectedContractNumber, error },\n resetUpdateDispatch,\n resetContractDispatch,\n }: Props = this.props;\n return (\n <WrappedSetting\n fields={fields}\n errors={errors}\n handleToggle={this.handleToggle}\n handleInput={this.handleInput}\n handleError={this.handleError}\n // Banner\n title={Wording.title}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n selectedContractNumber={selectedContractNumber}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetUpdateDispatch}\n />\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n dispatchProps,\n)(SettingPage);\n","import SettingPage from './SettingPage';\n\nexport default SettingPage;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\nimport { Subtract } from 'utility-types';\n\nimport { RootState, InputEvent } from 'Types';\nimport { ERateOption } from '../../utils/enums';\n\nimport withBanner, {\n ExternalProps as ExternalPropsBanner,\n} from '../../libraries/withBanner';\nimport withModal, {\n ExternalProps as ExternalPropsModal,\n InjectedProps as InjectedPropsModal,\n} from '../../libraries/withModal';\nimport ConsumptionContainer, {\n Props as ContainerProps,\n} from '../../containers/ConsumptionContainer/ConsumptionContainer';\nimport { InputItem } from '../../components/CustomTransfer/CustomTransfer';\n\nimport {\n fetchContractAsync,\n resetContractState,\n setContract,\n} from '../../_actions/contract.actions';\nimport {\n fetchMeterConfigAsync,\n createIndexAsync,\n resetCreateIndex,\n} from '../../_actions/consumption.actions';\nimport {\n displayPlaceholder,\n getTodayDate,\n findContractByNumber,\n getTimeframeFromLabel,\n sortedConsumptionList,\n} from '../../utils/helpers';\nimport WordingConstant from '../../utils/wording.json';\n\nconst Wording = WordingConstant.ConsumptionPage;\n\nconst mapStateToProps = (state: RootState) => ({\n profileState: state.profileReducer,\n contractState: state.contractReducer,\n consumptionState: state.consumptionReducer,\n});\n\nconst dispatchProps = {\n contractDispatch: fetchContractAsync.request,\n fetchMeterDispatch: fetchMeterConfigAsync.request,\n createIndexDispatch: createIndexAsync.request,\n resetContractDispatch: resetContractState,\n resetCreateIndexDispatch: resetCreateIndex,\n setContractDispatch: setContract,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nconst WrappedConsumption = compose<\n ContainerProps,\n Subtract<ContainerProps, InjectedPropsModal> &\n ExternalPropsBanner &\n ExternalPropsModal\n>(\n withBanner(),\n withModal(),\n)(ConsumptionContainer);\n\ntype State = {\n fields: {\n inputs: InputItem[];\n };\n};\n\nclass ConsumptionPage extends React.Component<Props, State> {\n // TODO: Should move fields input to corresponding container\n // to avoid rerendering graph\n state = {\n fields: {\n inputs: [\n {\n label: '',\n value: '',\n maxLength: 0,\n onChange: (e: InputEvent) => {},\n },\n ],\n },\n };\n\n componentDidMount() {\n const {\n contractState: { selectedContractNumber, contracts },\n fetchMeterDispatch,\n } = this.props;\n const {\n consumptionState: { rateOption },\n } = this.props;\n if (rateOption !== ERateOption.UNKNOWN) {\n this.setInitialState();\n }\n if (selectedContractNumber === '') {\n return;\n }\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n if (contract) {\n fetchMeterDispatch({\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n }\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n // Typical usage (don't forget to compare props):\n const {\n fetchMeterDispatch,\n contractState: { contracts, selectedContractNumber },\n consumptionState: { rateOption },\n } = this.props;\n\n if (\n prevState.fields.inputs[0].label === '' &&\n rateOption !== prevProps.consumptionState.rateOption\n ) {\n this.setInitialState();\n }\n const { contractState } = prevProps;\n if (selectedContractNumber !== contractState.selectedContractNumber) {\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n if (contract) {\n fetchMeterDispatch({\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n }\n }\n }\n\n setInitialState = () => {\n const { fields } = this.state;\n const {\n consumptionState: { rateOption, digitSize },\n } = this.props;\n\n let list: Array<{ label: string; placeholder?: string }> = [];\n if (rateOption === ERateOption.HIGH_LOW) {\n list = Wording.autoTransfer.input.highlow;\n } else if (rateOption === ERateOption.TOTAL_HOUR) {\n list = Wording.autoTransfer.input.totalhour;\n } else {\n list = [\n {\n label: '',\n },\n ];\n }\n const inputs = list.map((input, index) => {\n const onChange = (e: InputEvent) =>\n this.handleInputChange(e, index);\n const placeholder = displayPlaceholder(digitSize);\n return {\n ...input,\n onChange,\n placeholder,\n value: '',\n maxLength: digitSize,\n };\n });\n fields.inputs = inputs;\n\n this.setState({ fields });\n };\n\n handleInputChange = (e: InputEvent, idx: number) => {\n const { fields } = this.state;\n fields.inputs[idx].value = e.currentTarget.value.replace(/[^\\d]/, '');\n this.setState({ fields });\n };\n\n handleChangeBanner = (contractNumber: string) => {\n const {\n contractState: { contracts },\n contractDispatch,\n profileState: { customerNumber },\n setContractDispatch,\n } = this.props;\n const contract = findContractByNumber(contractNumber, contracts);\n if (contract.isFetched) {\n setContractDispatch({ contract });\n } else {\n contractDispatch({\n customerNbr: customerNumber,\n contractNbr: contractNumber,\n });\n }\n };\n\n handleUpdate = (section: string) => {\n const {\n contractState: { selectedContractNumber, contracts },\n consumptionState: { meterNumber },\n createIndexDispatch,\n } = this.props;\n if (selectedContractNumber === '') {\n return;\n }\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n if (contract) {\n const { fields } = this.state;\n const meterReads = fields.inputs.map(input => {\n return {\n meterNumber,\n registerName: '',\n value: input.value,\n timeframeCode: getTimeframeFromLabel(input.label),\n };\n });\n createIndexDispatch({\n meterReads,\n contractNbr: selectedContractNumber,\n pointOfDelivery: contract.deliveryPoint.pointOfDelivery,\n readingDate: getTodayDate(),\n energyType: contract.energy,\n });\n }\n };\n\n handleInputError = (): boolean => {\n const { fields } = this.state;\n const reducer = (acc: boolean, current: InputItem) =>\n acc && current.value.length === current.maxLength;\n const condition = fields.inputs.reduce(reducer, true);\n if (!condition) {\n fields.inputs = fields.inputs.map(input => {\n const error =\n input.value.length !== input.maxLength\n ? `Veuillez saisir les ${input.maxLength} derniers chiffres`\n : undefined;\n return {\n ...input,\n error,\n };\n });\n this.setState({ fields });\n return false;\n }\n fields.inputs = fields.inputs.map(input => {\n return {\n ...input,\n error: undefined,\n };\n });\n\n this.setState({ fields });\n return true;\n };\n\n render() {\n const {\n profileState: { contact, customerType },\n contractState: { contracts, selectedContractNumber, error },\n consumptionState: {\n meters,\n updateResponse,\n errorMeterConfig,\n errorMeterReading,\n },\n resetCreateIndexDispatch,\n resetContractDispatch,\n }: Props = this.props;\n\n const {\n fields: { inputs },\n } = this.state;\n\n const contract = findContractByNumber(\n selectedContractNumber,\n contracts,\n );\n\n return (\n <WrappedConsumption\n meters={sortedConsumptionList(meters)}\n inputs={inputs}\n contract={contract}\n handleInputChange={this.handleInputChange}\n handleInputError={this.handleInputError}\n errorMeterConfig={errorMeterConfig}\n errorMeterReading={errorMeterReading}\n // Banner\n title={Wording.title}\n selectedContractNumber={selectedContractNumber}\n bannerError={error}\n handleCloseModalBanner={() => resetContractDispatch()}\n contracts={contracts}\n contact={contact}\n customerType={customerType}\n handleChangeBanner={this.handleChangeBanner}\n // Modal\n modalMessage={Wording.popup}\n updateResponse={updateResponse}\n handleValidate={this.handleUpdate}\n handleReset={resetCreateIndexDispatch}\n customDescription={updateResponse.message}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(ConsumptionPage);\n","import ConsumptionPage from './ConsumptionPage';\n\nexport default ConsumptionPage;\n","import React from 'react';\n\nimport HomePage from './HomePage';\nimport ApplicationFormPage from './FormPage';\nimport BillPage from './BillPage';\nimport FilePage from './FilePage';\nimport PaymentPage from './PaymentPage';\nimport ProfilePage from './ProfilePage';\nimport SponsorPage from './SponsorPage';\nimport EventPage from './EventPage';\nimport MovePage from './MovePage';\nimport PackagePage from './PackagePage';\nimport SettingPage from './SettingPage';\nimport ConsumptionPage from './ConsumptionPage';\nimport NotFoundPage from './defaults/NotFoundPage';\n\nimport WordingConstant from '../utils/wording.json';\nconst WordingRoutes = WordingConstant.MainPage.SideBar.routes;\n\nexport default [\n {\n title: WordingRoutes.home.title,\n path: WordingRoutes.home.path,\n links: [\n {\n path: WordingRoutes.home.links.path,\n exact: true,\n sidebar: () => <div>Mon dashboard</div>,\n main: () => <HomePage />,\n title: WordingRoutes.home.links.title,\n },\n ],\n },\n {\n title: WordingRoutes.consumption.title,\n path: WordingRoutes.consumption.path,\n links: [\n {\n path: WordingRoutes.consumption.links.history.path,\n sidebar: () => <div>Historique de ma consommation</div>,\n main: () => <ConsumptionPage />,\n title: WordingRoutes.consumption.links.history.title,\n },\n // {\n // path: WordingRoutes.consumption.links.lastMonth.path,\n // sidebar: () => <div>Consommation du mois passé</div>,\n // main: () => <ConsumptionPage />,\n // title: WordingRoutes.consumption.links.lastMonth.title,\n // },\n // {\n // path: WordingRoutes.consumption.links.selfRelief.path,\n // sidebar: () => <div>Mon auto-relève</div>,\n // main: () => <ConsumptionPage />,\n // title: WordingRoutes.consumption.links.selfRelief.title,\n // },\n ],\n },\n {\n title: WordingRoutes.offer.title,\n path: WordingRoutes.offer.path,\n links: [\n {\n path: WordingRoutes.offer.links.package.path,\n sidebar: () => <div>Mon forfait</div>,\n main: () => <PackagePage />,\n title: WordingRoutes.offer.links.package.title,\n },\n // {\n // path: WordingRoutes.offer.links.options.path,\n // sidebar: () => <div>Mes options</div>,\n // main: () => <PackagePage />,\n // title: WordingRoutes.offer.links.options.title,\n // },\n // {\n // path: WordingRoutes.offer.links.changePackege.path,\n // sidebar: () => <div>Changer de forfait</div>,\n // main: () => <PackagePage />,\n // title: WordingRoutes.offer.links.changePackege.title,\n // },\n ],\n },\n {\n title: WordingRoutes.profile.title,\n path: WordingRoutes.profile.path,\n links: [\n {\n path: WordingRoutes.profile.links.information.path,\n sidebar: () => (\n <div>Informations personnelles et bancaires</div>\n ),\n main: () => <ProfilePage />,\n title: WordingRoutes.profile.links.information.title,\n },\n {\n path: WordingRoutes.profile.links.setting.path,\n sidebar: () => <div>Paramètres</div>,\n main: () => <SettingPage />,\n title: WordingRoutes.profile.links.setting.title,\n },\n {\n path: WordingRoutes.profile.links.sponsorship.path,\n sidebar: () => <div>Parrainage</div>,\n main: () => <SponsorPage />,\n title: WordingRoutes.profile.links.sponsorship.title,\n },\n {\n path: WordingRoutes.profile.links.move.path,\n sidebar: () => <div>Je déménage</div>,\n main: () => <MovePage />,\n title: WordingRoutes.profile.links.move.title,\n },\n ],\n },\n {\n title: WordingRoutes.document.title,\n path: WordingRoutes.document.path,\n links: [\n {\n path: WordingRoutes.document.links.files.path,\n sidebar: () => <div>Mes fichiers</div>,\n main: () => <FilePage />,\n title: WordingRoutes.document.links.files.title,\n },\n {\n path: WordingRoutes.document.links.bills.path,\n sidebar: () => <div>Mes factures</div>,\n main: () => <BillPage />,\n title: WordingRoutes.document.links.bills.title,\n },\n {\n path: WordingRoutes.document.links.payments.path,\n sidebar: () => <div>Mes paiements</div>,\n main: () => <PaymentPage />,\n title: WordingRoutes.document.links.payments.title,\n },\n ],\n },\n {\n title: WordingRoutes.contact.title,\n path: WordingRoutes.contact.path,\n links: [\n {\n path: WordingRoutes.contact.links.applicationForms.path,\n sidebar: () => <div>Formulaires de demandes</div>,\n main: () => <ApplicationFormPage />,\n title: WordingRoutes.contact.links.applicationForms.title,\n },\n {\n path: WordingRoutes.contact.links.requests.path,\n sidebar: () => <div>Mes demandes</div>,\n main: () => <EventPage />,\n title: WordingRoutes.contact.links.requests.title,\n },\n {\n path: WordingRoutes.contact.links.FAQ.path,\n title: WordingRoutes.contact.links.FAQ.title,\n sidebar: () => <div>FAQ</div>,\n main: () => <div />,\n },\n ],\n },\n {\n title: WordingRoutes.notFound.title,\n path: WordingRoutes.notFound.path,\n hidden: true,\n links: [\n {\n path: WordingRoutes.notFound.links.default.path,\n sidebar: () => <div>Page non trouvée</div>,\n main: () => <NotFoundPage />,\n title: WordingRoutes.notFound.links.default.title,\n },\n ],\n },\n];\n","/**\n * @author Ivan Naluzhnyi | Nawin Kim\n * @email [ivan.naluzhnyi@gmail.com]\n * @email [nawin.kim@uppli.fr]\n * @create date 2019-09-16 16:44:55\n * @modify date 2019-09-16 16:50:47\n * @desc [client-space | Uppli]\n */\n\nimport React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { RootState, RouteProps, SubRouteProps } from 'Types';\nimport { SideBar, Footer, Modal } from '../components';\nimport routes from './routes';\nimport { resetReduxStore } from '../_actions/auth.actions';\nimport withLoader from '../libraries/withLoader';\nimport AuthService from '../services/auth-service';\n\nimport Wording from '../utils/wording.json';\nimport { resetUpdate } from '../_actions/profile.actions';\nconst WordingCommon = Wording.Common;\n\nconst Content = () => (\n <div className=\"content\" id=\"content\">\n {routes.map((route: RouteProps) =>\n route.links.map((subRoute: SubRouteProps, index: number) => (\n <Route\n key={index}\n path={route.path + subRoute.path}\n exact={subRoute.exact}\n component={subRoute.main}\n />\n )),\n )}\n </div>\n);\n\nconst WrappedContent = withLoader()(Content);\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n profileState: state.profileReducer,\n});\n\nconst dispatchProps = {\n resetReduxStoreDispatch: resetReduxStore,\n resetUpdateDispatch: resetUpdate,\n};\n\ntype Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;\n\nclass Main extends React.Component<Props, {}> {\n render() {\n const {\n profileState: { contact, customerNumber, updateResponse },\n authState: { loading, unauthorized },\n resetReduxStoreDispatch,\n resetUpdateDispatch,\n }: Props = this.props;\n\n const props = {\n routes,\n firstName: contact.customerFullName.firstName,\n lastName: contact.customerFullName.lastName,\n customerNbr: customerNumber,\n handleLogout: () => resetReduxStoreDispatch(),\n };\n const isSignIn = AuthService.isAuthenticated();\n if (!isSignIn) {\n return <Redirect to={{ pathname: '/login' }} />;\n }\n\n return (\n <div className=\"main-page\">\n <div className=\"main-page__content\">\n <SideBar {...props} />\n <WrappedContent\n loading={loading}\n unauthorized={unauthorized}\n handleCloseModal={() => {\n // this.props.history.push('')\n AuthService.logout();\n props.handleLogout();\n }}\n />\n\n <Modal\n title={WordingCommon.contextModal.title}\n description={\n updateResponse.message ||\n WordingCommon.contextModal.description\n }\n state={1}\n show={\n updateResponse.code === '505' ||\n updateResponse.code === '0'\n }\n handleCancel={() => {\n window.close();\n resetUpdateDispatch();\n }}\n />\n </div>\n <Footer />\n </div>\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(Main);\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport AdminMain from './admin/root';\nimport UserMain from './root';\nimport { connect } from 'react-redux';\nimport { resetReduxStore } from '../_actions/auth.actions';\nimport { fetchContextAsync } from '../_actions/profile.actions';\nimport { getGroupAsync } from '../_actions/getGroup.actions';\nimport { RootState } from 'Types';\n\nconst mapStateToProps = (state: RootState) => ({\n authState: state.authReducer,\n});\n\nconst dispatchProps = {\n resetReduxStoreDispatch: resetReduxStore,\n getGroupAsyncDispatch: getGroupAsync.request,\n};\n\ntype IProps = ReturnType<typeof mapStateToProps> &\n typeof dispatchProps & {\n initialSearchParams: Map<string, string | number>;\n };\ntype IState = {\n isAdmin: boolean;\n};\n\nclass Main extends React.Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n isAdmin: false,\n };\n }\n componentDidMount() {\n const { groupe } = this.props.authState;\n const { initialSearchParams: isp, getGroupAsyncDispatch } = this.props;\n\n if (groupe && isp.get('client') === undefined) {\n getGroupAsyncDispatch();\n this.setState({ isAdmin: true });\n } else if (groupe && isp.get('client') !== undefined) {\n this.setState({ isAdmin: true });\n } else {\n this.setState({ isAdmin: false });\n }\n }\n\n componentWillUnmount() {\n const { groupe } = this.props.authState;\n if (groupe === undefined) {\n this.setState({ isAdmin: false });\n }\n }\n\n render() {\n const { initialSearchParams: isp } = this.props;\n const { isAdmin } = this.state;\n const isUserAlias = isp.has('client') && !!isp.get('client');\n\n return (\n <Route\n path=\"/\"\n component={isAdmin && !isUserAlias ? AdminMain : UserMain}\n />\n );\n }\n}\n\nexport default connect(mapStateToProps, dispatchProps)(Main);\n","/**\n * @author Ivan Naluzhnyi | Nawin Kim\n * @email [ivan.naluzhnyi@gmail.com]\n * @email [nawin.kim@uppli.fr]\n * @create date 2019-09-16 16:44:55\n * @modify date 2019-09-16 16:50:47\n * @desc [client-space | Uppli]\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport {\n BrowserRouter as Router,\n Route,\n Switch,\n Redirect,\n RouteProps,\n RouteComponentProps,\n} from 'react-router-dom';\n\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\n\nimport store from './store';\nimport './index.css';\nimport * as serviceWorker from './serviceWorker';\nimport { version } from '../package.json';\n\nimport { log, parseQueryParams } from './utils/helpers';\nimport AuthService from './services/auth-service';\nimport AuthPage from './pages/AuthPage';\nimport ResetPasswordPage from './pages/ResetPasswordPage';\nimport ConnectedMain from './pages/Main';\n\nlet isFirstRedirect = true;\nlet initialSearchParams = new Map<string, string | number>();\n\ninterface IPrivateRouteProps extends RouteProps {\n component:\n | React.ComponentType<\n RouteComponentProps<any> & {\n initialSearchParams: Map<string, string | number>;\n }\n >\n | React.ComponentType<any>;\n}\n\nconst PrivateRoute: React.FC<IPrivateRouteProps> = ({\n component: Component,\n ...rest\n}) => {\n const isSignIn = AuthService.isAuthenticated();\n return (\n <Route\n {...rest}\n render={props => {\n if (isFirstRedirect) {\n isFirstRedirect = false;\n initialSearchParams = parseQueryParams(\n props.location,\n window.location.host,\n window.location.protocol,\n );\n }\n\n if (!isSignIn && initialSearchParams.has('client')) {\n initialSearchParams = new Map();\n }\n\n return isSignIn ? (\n <Component\n {...props}\n initialSearchParams={initialSearchParams}\n />\n ) : (\n <Redirect\n to={{\n pathname: '/login',\n state: { from: props.location },\n }}\n />\n );\n }}\n />\n );\n};\n\nReactDOM.render(\n <Provider store={store}>\n <Router>\n <Switch>\n <Route exact path=\"/login\" component={AuthPage} />\n <Route\n exact\n path=\"/createPassword\"\n component={ResetPasswordPage}\n />\n <PrivateRoute path=\"/\" component={ConnectedMain} />\n </Switch>\n </Router>\n </Provider>,\n document.getElementById('root'),\n);\n\nconsole.log('Version : ', version);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}