{"version":3,"file":"static/js/main.cc2ee7d3.chunk.js","sources":["styles/_variables.module.scss","store/config/ActionTypes.ts","services/config.ts","helpers/urlHelper.ts","store/config/enums.ts","helpers/filteringHelper.ts","helpers/errorHelper.ts","services/base.service.ts","services/endpoints.ts","services/payments.service.ts","store/action_creators/payments.actions.ts","store/middlewares/signalRMiddleware.ts","store/reducers/auth.ts","store/reducers/business.ts","store/reducers/clients.ts","store/reducers/collaborators.ts","store/reducers/links.ts","store/reducers/notifications.ts","store/reducers/paymentMethods.ts","data/values.ts","store/reducers/payments.ts","store/reducers/subBusiness.ts","store/config/configureStore.ts","styles/theme.ts","assets/logo-blue.svg","components/Landing/LandingLayout.tsx","components/ErrorBoundary/ErrorBoundary.tsx","components/Forbidden/Forbidden.tsx","data/schemas.ts","services/collaborators.service.ts","store/action_creators/collaborators.actions.ts","components/Icons/CheckCircleIcon.tsx","components/Icons/ErrorIcon.tsx","components/CustomSnackbar/CustomSnackbar.tsx","components/Icons/EyeIcon.tsx","components/Icons/EyeSlashIcon.tsx","components/forms/FormTextField/FormTextField.tsx","components/PasswordField/PasswordField.tsx","components/ReturnButton/ReturnButton.tsx","components/ScreenTitle/ScreenTitle.tsx","components/SubmitButton/SubmitButton.tsx","services/auth.service.ts","store/action_creators/auth.actions.ts","components/dialogs/ChangePasswordDialog/ChangePasswordDialog.tsx","components/forms/SubUser/SubUser.tsx","assets/logo.svg","components/Icons/SettingsIcon.tsx","components/Header/CogMenu.tsx","components/Icons/Clients/Clients.tsx","components/Icons/Dashboard/Dashboard.tsx","components/Icons/Payments/Payments.tsx","components/Icons/PermanentLink/PermanentLink.tsx","components/Icons/SingleLink/SingleLink.tsx","components/Header/navigationOptions.tsx","components/Header/DesktopNavigation.tsx","components/Header/LogoutDialog.tsx","components/Icons/Close.tsx","components/Icons/Hamburguer.tsx","components/Icons/PlexoLinks.tsx","components/Icons/Question.tsx","components/Icons/NavigationBorder.tsx","components/Header/MobileNavigation/NavigationItem.tsx","components/Icons/Profile.tsx","components/Header/MobileNavigation/ProfileNavigationItem.tsx","components/Header/MobileNavigation/MobileNavigation.tsx","assets/BoltMarginlessIcon.tsx","components/Header/OnTheFlyButton.tsx","components/Header/UserMenu.tsx","components/Header/Header.tsx","components/Loading/Loading.tsx","assets/logo-white.svg","assets/question-circle.svg","components/PublicHeader/PublicHeader.tsx","components/ScrollToTop/ScrollToTop.tsx","screens/ConfirmEmail/ConfirmEmail.tsx","assets/dummy.png","components/Icons/AlertTriangle/AlertTriangle.tsx","assets/UploadIcon.tsx","components/ImageUpload/ImageUpload.tsx","components/Icons/QuestionMark/QuestionMark.tsx","components/Link/VATTooltip.tsx","helpers/currencyHelper.ts","helpers/dateHelper.ts","helpers/inclusionLawHelper.ts","components/Link/inputData.tsx","assets/addIcon.tsx","assets/deleteIcon.tsx","helpers/issuerHelper.ts","services/links.service.ts","store/action_creators/links.actions.ts","hooks/useFetchLinksOnUpdate.tsx","services/paymentMethods.service.ts","store/action_creators/paymentMethods.actions.ts","components/dialogs/DeleteDialog/DeleteDialog.tsx","data/constants.ts","components/dialogs/PaymentMethodDialog/InstallmentsField.tsx","components/CustomSwitch/CustomSwitch.tsx","components/forms/FormSwitchField/FormSwitchField.tsx","components/dialogs/PaymentMethodDialog/PlexoFields.tsx","components/forms/FormSelectField/FormSelectField.tsx","components/forms/PaymentMethodForm/IssuerAndAcquirer.tsx","components/forms/PaymentMethodForm/SnackbarManager.tsx","components/forms/PaymentMethodForm/SoftDescriptor.tsx","components/forms/PaymentMethodForm/SubmitButton.tsx","components/forms/PaymentMethodForm/PaymentMethodForm.tsx","components/dialogs/PaymentMethodDialog/PaymentMethodDialog.tsx","components/PaymentMethods/SingleDeletePaymentMethodDeleteTooltip.tsx","components/PaymentMethods/PaymentMethods.tsx","components/Warning/Warning.tsx","services/business.service.ts","store/action_creators/business.actions.ts","screens/Business/Business.tsx","screens/ChangePassword.tsx/ChangePassword.tsx","assets/SplitIcon.tsx","components/ClientSecret/ClientSecret.tsx","screens/Configuration/DisableSplitPaymentsDialog.tsx","components/forms/FormDateField/FormDateField.tsx","data/csv.ts","helpers/paymentStatusEnumHelper.ts","screens/Configuration/NotificationReport.tsx","screens/Configuration/Configuration.tsx","assets/EmailSent.png","components/EmailSent/EmailSent.tsx","screens/ConfirmResetPassword/ConfirmResetPassword.tsx","screens/Contact/Contact.tsx","assets/MultiUseLinkIcon.tsx","assets/OneTimeLinkIcon.tsx","components/Dashboard/EmptyLinksMessage.tsx","assets/ShareIcon.tsx","helpers/linkHelper.ts","assets/BoltIcon.tsx","helpers/linkTypeEnumHelper.tsx","helpers/numberHelper.ts","helpers/paymentTypeHelper.ts","components/LinkCard/LinkToShareTooltip.tsx","components/Icons/ShareByEmail/ShareByEmail.tsx","components/Icons/ShareByQr/ShareByQr.tsx","components/Icons/ShareByWhatsapp/ShareByWhatsapp.tsx","helpers/windowDimensionsHelper.ts","components/dialogs/QRCodeDialog/PdfQr.tsx","components/dialogs/QRCodeDialog/QrCodeDialog.tsx","components/dialogs/ShareByWhatsAppDialog/ShareByWhatsAppDialog.tsx","components/dialogs/ShareOptions/ShareOptions.tsx","components/dialogs/ShareLinkDialog/ShareLinkDialog.tsx","components/Dashboard/LinkListRow.tsx","components/Dashboard/DashboardLinkList.tsx","components/EmptyMessage/EmptyMessage.tsx","components/StatusPill/StatusPill.tsx","components/PaymentsCards/PaymentCard.tsx","components/Icons/ViewIcon/ViewIcon.tsx","components/Dashboard/PaymentCardDesktop.tsx","components/Dashboard/DashboardPayments.tsx","screens/Dashboard/Dashboard.tsx","screens/FAQs/FAQs.tsx","assets/network@2x.png","assets/phone.png","screens/Home/Home.tsx","components/ErrorCard/ErrorCard.tsx","components/ExpiredLinkCard/ExpiredLinkCard.tsx","components/IssuersCardList/IssuerCard.tsx","components/Icons/ArrowDown/ArrowDown.tsx","components/LandingComponents/LinkDetailCard/PaymentDetails.tsx","components/LandingComponents/LinkDetailCard/AccordionLinkDetails.tsx","components/LandingComponents/LinkDetailCard/LinkDetailContent.tsx","components/LandingComponents/LinkDetailCard/LinkDetailCard.tsx","components/Icons/LongArrowLeft/LongArrowLeft.tsx","components/LandingComponents/MobileNavigation/FloatingButtons.tsx","components/LandingComponents/OnTheFlyDetailCard/OnTheFlyDetailCard.tsx","components/LandingComponents/ConsumerInstallments/ConsumerInstallments.tsx","components/IssuersCardList/IssuersCardList.tsx","components/LandingComponents/OnTheFlyLanding/OnTheFlyLanding.tsx","components/LandingComponents/PermanentLinkLanding/PermanentLinkLanding.tsx","components/PDFReceipt/PDFReceipt.tsx","assets/logo-white.png","components/PaidLinkCard/PaidLinkCard.tsx","screens/ValidatePayment/ValidatePayment.tsx","screens/Landing/Landing.tsx","components/ConditionalTooltip/ConditionalTooltip.tsx","components/Link/LinkActions.tsx","components/Link/Header.tsx","components/PaymentMethodCard/PaymentMethodCard.tsx","components/Link/RegularLink/AmountInput.tsx","components/Link/Inputs.tsx","components/Link/RegularLink/RegularLink.tsx","components/Link/SplitLink/PaymentMethods.tsx","components/Link/SplitLink/SubBusinessInputs.tsx/SplitLinkPaymentInput.tsx","components/Link/SplitLink/SubBusinessInputs.tsx/SplitLinkPaymentInputs.tsx","components/Link/SplitLink/UpdatePaymentMethodsOptions.tsx","components/Link/SplitLink/SplitLink.tsx","screens/Link/Link.tsx","components/ErrorMessage/ErrorMessage.tsx","components/Icons/CsvFile/CsvFile.tsx","assets/EditIcon.tsx","components/LinkCard/CardFooter.tsx","components/LinkCard/LinkStatusPill.tsx","components/LinkCard/LinkCard.tsx","hooks/useFilterLogic.tsx","components/FiltersComponent/CollaboratorFilters.tsx","components/FiltersComponent/CurrencyFilters.tsx","components/FiltersComponent/DateRangeDialog.tsx","components/FiltersComponent/DateFilters.tsx","components/FiltersComponent/IssuerFilters.tsx","components/Icons/Cancel/Cancel.tsx","components/FiltersComponent/Search.tsx","components/FiltersComponent/FiltersComponent.tsx","components/Icons/Filters/Filters.tsx","screens/Links/LinksFiltersLayout.tsx","screens/Links/LinksFilters.tsx","screens/Links/OneUseLinksFilters.tsx","screens/Links/Links.tsx","screens/Login/Login.tsx","assets/logo.png","assets/maintenance.png","screens/Maintenance/Maintenance.tsx","components/ClientSettings/ClientSettings.tsx","helpers/tableHelper.ts","components/CustomTable/CustomTable.tsx","components/Icons/AdminCrown/AdminCrown.tsx","components/Icons/Check/Check.tsx","components/Icons/Resend/Resend.tsx","components/ClientUsersTable/ClientUsersTable.tsx","components/Icons/ArrowForwardOutlined/ArrowForwardOutlined.tsx","services/clients.service.ts","store/action_creators/clients.actions.ts","screens/ManageClients/PlexoCommerceText.tsx","screens/ManageClients/ManageClients.tsx","screens/ManageClientUsers/ManageClientUsers.tsx","components/OnTheFlyPayments/OnTheFlyPaymentsActions.tsx","screens/OnTheFly/OnTheFlyPayments.tsx","hooks/useNotificationId.tsx","components/PaymentDetail/PaymentDetailActions.tsx","assets/BankIcon.tsx","helpers/issuerCardHelpers.tsx","components/PaymentDetail/DetailRow.tsx","components/Icons/HelpIcon.tsx","components/PaymentDetail/LinkExternalIdRow.tsx","components/PaymentDetail/SplitPaymentDetail.tsx","components/PaymentDetail/PaymentDetailContent.tsx","components/PaymentDetail/PaymentDetailHeader.tsx","services/notifications.service.ts","store/action_creators/notifications.actions.ts","screens/PaymentDetail/PaymentDetail.tsx","components/Icons/ArrowUp/ArrowUp.tsx","components/ScrollTopButton/ScrollTopButton.tsx","components/TotalsAccordion/ColoredCardWithTotals.tsx","components/TotalsAccordion/ColoredCardsWithTotals.tsx","components/PaymentsCards/PaymentsCards.tsx","components/Icons/SplitIcon/SplitIcon.tsx","components/Icons/ChevronLeft/ChevronLeft.tsx","components/Icons/ChevronRight/ChevronRight.tsx","components/PaymentsTable/CustomPagination.tsx","components/PaymentsTable/PaymentsTable.tsx","components/TotalsAccordion/TotalsAccordion.tsx","components/ClientsFilter/ClientsFilter.tsx","screens/Payments/PaymentsFilters.tsx","components/Icons/PdfFile/PdfFile.tsx","components/PDFPayments/PDFPayments.tsx","components/ExportPayments/ExportPayments.tsx","screens/Payments/PaymentsScreenTitle.tsx","screens/Payments/Payments.tsx","screens/PlexoPayment/GoBackDialog.tsx","screens/PlexoPayment/PlexoPayment.tsx","components/dialogs/ChangeEmailDialog/ChangeEmailDialog.tsx","screens/Profile/Profile.tsx","screens/Redirect/Redirect.tsx","components/Register/RegisterHeader.tsx","components/dialogs/BusinessConfirmationDialog/BusinessConfirmationDialog.tsx","components/forms/BusinessForm/BusinessForm.tsx","components/forms/UserForm/UserForm.tsx","screens/Register/Register.tsx","screens/Register/FirstPaymentMethod.tsx","components/forms/IssuersForm/IssuersForm.tsx","screens/RequestIssuers/RequestIssuers.tsx","screens/ResetPassword/ResetPassword.tsx","screens/Result/Result.tsx","components/SubBusiness/MobileSubBusinessCard.tsx","components/SubBusiness/SubBusinessCard.tsx","services/subBusiness.service.ts","store/action_creators/subBusiness.actions.ts","screens/SplitPayments/SplitPayments.tsx","components/dialogs/PaymentMethodDialog/PlexoFieldsForSubBusiness.tsx","components/forms/SubBusinessPaymentMethodForm/IssuerAndAcquirer.tsx","components/forms/SubBusinessPaymentMethodForm/SoftDescriptor.tsx","components/forms/SubBusinessPaymentMethodForm/SubmitButton.tsx","components/forms/SubBusinessPaymentMethodForm/SubBusinessPaymentMethodForm.tsx","components/dialogs/PaymentMethodDialog/SubBusinessDialog.tsx","components/Icons/AddPaymentMethodIcon/AddPaymentMethodIcon.tsx","components/PaymentMethods/PaymentMethodsToAdd.tsx","screens/SubBusiness/DisableSubBusinessDialog.tsx","screens/SubBusiness/PaymentMethodSnackbar.tsx","screens/SubBusiness/SubBusinessActions.tsx","screens/SubBusiness/SubBusinessForm.tsx","screens/SubBusiness/SubBusiness.tsx","screens/TermsAndConditions/TermsAndConditions.tsx","components/UnconfirmedUsersTable/UnconfirmedUsersTable.tsx","screens/UnconfirmedUsers/UnconfirmedUsers.tsx","components/dialogs/CSVUploadConfirmationDialog/CSVUploadDialog.tsx","components/ReviewCSVLinks/ErrorsTable.tsx","components/ReviewCSVLinks/AlertErrors.tsx","components/ReviewCSVLinks/ReviewCSVLinksScreenTitle.tsx","screens/UploadCSVLinks/ReviewCSVLinks.tsx","hooks/useParseCSV.tsx","assets/examples/csvExample.tsx","screens/UploadCSVLinks/UploadCSVLinks.tsx","hooks/useValidationCSV.tsx","components/Users/UpdateButton.tsx","components/Users/UsersDesktop.tsx","components/Users/UserCard.tsx","components/Users/UsersMobile.tsx","screens/Users/Users.tsx","screens/Main.tsx","App.tsx","index.tsx"],"sourceRoot":"","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"backgroundColor\":\"#f4f7fc\",\"red\":\"#f11930\",\"lightRed\":\"#ffe5e5\",\"yellow\":\"#ffc130\",\"skyBlue\":\"#0c9fe1\",\"blue\":\"#327cbc\",\"slateBlue\":\"#7e84a3\",\"slateBlueLight\":\"#7e84a41a\",\"green\":\"#50a750\",\"lightGreen\":\"#1fd286\",\"lightestGreen\":\"#e9fbf3\",\"white\":\"#fff\",\"warning\":\"#c38924\",\"warningBorder\":\"#ffca4d\",\"warningBackground\":\"#ffca4d40\",\"lightGrey\":\"#f5f5f5\",\"veryLightGrey\":\"#e0e0e0\",\"greyTableHead\":\"#f5f6fa\",\"grey\":\"#bfbfbf\",\"greyChipBackground\":\"#bfbfbf1f\",\"almostGrey\":\"#b7b7b7\",\"darkGrey\":\"#707070\",\"softGrey\":\"#e0e0e0\",\"veryDarkGrey\":\"#333\",\"shadeGrey\":\"#c4c4c4\",\"notBlack\":\"#232323\",\"black\":\"#000\",\"blackText\":\"#41464b\",\"darkBlue\":\"#171725\",\"transparentBlack\":\"#00000029\",\"plexoGreen\":\"#cecf00\",\"plexoLightGreen\":\"#dedf4a\",\"plexoBlue\":\"#004889\",\"plexoRed\":\"#ce3535\",\"plexoYellow\":\"#e89b1b\",\"yellowWarningBorder\":\"#dea110\",\"yellowWarningText\":\"#c38900\",\"yellowWarningBackground\":\"#fffaed\",\"primary\":\"#00b2b8\",\"primaryShade\":\"#00b2b816\",\"primaryLight\":\"#00d3dc\",\"primaryMidtone\":\"#12868a\",\"primaryDark\":\"#187177\",\"primaryDisabled\":\"#00b2b880\",\"textButtonSecondary\":\"#5a607f\",\"borderButtonSecondary\":\"#d7dbec\",\"transparentPrimary\":\"rgba(241,25,48,.9)\",\"secondary\":\"#000c55\",\"secondaryMain\":\"#004889\",\"transparentYellow\":\"rgba(255,193,48,.2)\",\"limeGreen\":\"#0cd782\",\"darkLimeGreen\":\"#0ab16b\",\"darkPurple\":\"#5f5fa7\",\"deepBlue\":\"#081e50\",\"veryDarkBlue\":\"#062045\",\"purple\":\"#7070bf\",\"strongCyan\":\"#00a1cb\",\"darkStrongCyan\":\"#0091ba\",\"pureBlue\":\"#0091ea\",\"inputBorder\":\"rgba(0,0,0,.23)\",\"borderColor\":\"#9cbffb\",\"iconColor\":\"#8b8b8b\",\"dottedBorder\":\"#d0d6e8\",\"mobile\":\"\\\"only screen and (max-width: 768px)\\\"\",\"tablet\":\"\\\"only screen and (min-width: 769px) and (max-width: 1280px)\\\"\",\"belowDesktop\":\"\\\"only screen and (max-width: 1279px)\\\"\",\"desktop\":\"\\\"only screen and (min-width: 1280px)\\\"\",\"largeDesktop\":\"\\\"only screen and (min-width: 1441px)\\\"\",\"headerHeight\":\"68px\",\"headerContentHeight\":\"68px\",\"whiteLineHeight\":\"20px\",\"footerHeight\":\"60px\",\"contentWidth\":\"1200px\",\"normalTextWeight\":\"400\",\"semiBoldTextWeight\":\"500\",\"boldTextWeight\":\"600\",\"titleTextWeight\":\"700\",\"headerShadow\":\"0 .0625rem .1875rem 0 rgba(126,132,163,.2)\",\"boxShadow\":\"0px 0px 15px 0px #7e84a312\",\"boxShadowSmall\":\"0px 1px 4px 0px #7e84a31a\",\"boxShadowDark\":\"0px 1px 4px 0px #1522321f\",\"publicHeaderShadow\":\"0 .0625rem .1875rem #fff\",\"boxShadowDropdownMenu\":\"0px 2px 15px 0px #7e84a31f\",\"boxShadowFloatingButtons\":\"0px 1px 6px 0px rgba(0,0,0,.161)\",\"boxShadowSmallCard\":\"0px 1px 4px 0px #15223214\",\"dividerColor\":\"#41464b\",\"dividerHorizontal\":\"#ececec\"};","import { LinkTypeEnum } from './enums';\nimport {\n BeginPaymentResponse,\n Business,\n BusinessIssuer,\n Client,\n Collaborator,\n CollaboratorResponse,\n ConfirmPaymentResponse,\n ConfirmResetPasswordSuccessResponse,\n Issuer,\n Link,\n LinkDataResponse,\n LinkToPay,\n LinksResponse,\n NotificationsResponse,\n Payment,\n PaymentMethod,\n PaymentResponse,\n PaymentsFilters,\n SubBusiness,\n ToggleBillingRequest,\n TransactionStatus,\n UnconfirmedUsersResponse,\n User,\n UserCredentials,\n} from './types';\n\n//#region Auth actions\n\nexport const LOGGING_IN = 'LOGGING_IN';\nexport const LOGIN_SUCCESS = 'LOGIN_SUCCESS';\nexport const LOGIN_ERROR = 'LOGIN_ERROR';\n\nexport interface LoggingInAction {\n type: typeof LOGGING_IN;\n}\n\nexport interface LoginSuccessAction {\n type: typeof LOGIN_SUCCESS;\n account: User;\n}\n\nexport interface LoginErrorAction {\n type: typeof LOGIN_ERROR;\n error: string;\n}\n\nexport type LoginActionTypes = LoggingInAction | LoginSuccessAction | LoginErrorAction;\n\nexport const LOGOUT = 'LOGOUT';\n\nexport interface LogoutAction {\n type: typeof LOGOUT;\n}\n\nexport type LogoutActionTypes = LogoutAction;\n\nexport const RESETING_PASSWORD = 'RESETING_PASSWORD';\nexport const RESET_PASSWORD_SUCCESS = 'RESET_PASSWORD_SUCCESS';\nexport const RESET_PASSWORD_ERROR = 'RESET_PASSWORD_ERROR';\n\nexport interface ResetingPassword {\n type: typeof RESETING_PASSWORD;\n}\nexport interface ResetPasswordSuccess {\n type: typeof RESET_PASSWORD_SUCCESS;\n}\nexport interface ResetPasswordError {\n type: typeof RESET_PASSWORD_ERROR;\n error: string;\n}\n\nexport type ResetPasswordActionTypes = ResetingPassword | ResetPasswordSuccess | ResetPasswordError;\n\nexport const CONFIRMING_RESET_PASSWORD = 'CONFIRMING_RESET_PASSWORD';\nexport const CONFIRM_RESET_PASSWORD_SUCCESS = 'CONFIRM_RESET_PASSWORD_SUCCESS';\nexport const CONFIRM_RESET_PASSWORD_ERROR = 'CONFIRM_RESET_PASSWORD_ERROR';\n\nexport interface ConfirmingResetPassword {\n type: typeof CONFIRMING_RESET_PASSWORD;\n}\nexport interface ConfirmResetPasswordSuccess {\n type: typeof CONFIRM_RESET_PASSWORD_SUCCESS;\n response: ConfirmResetPasswordSuccessResponse;\n}\nexport interface ConfirmResetPasswordError {\n type: typeof CONFIRM_RESET_PASSWORD_ERROR;\n error: string;\n}\n\nexport type ConfirmResetPasswordActionTypes =\n | ConfirmingResetPassword\n | ConfirmResetPasswordSuccess\n | ConfirmResetPasswordError;\n\nexport const REGISTERING_USER = 'REGISTERING_USER';\nexport const REGISTER_USER_SUCCESS = 'REGISTER_USER_SUCCESS';\nexport const REGISTER_USER_ERROR = 'REGISTER_USER_ERROR';\n\nexport interface RegisteringUserAction {\n type: typeof REGISTERING_USER;\n}\n\nexport interface RegisterUserSuccessAction {\n type: typeof REGISTER_USER_SUCCESS;\n user: UserCredentials;\n}\n\nexport interface RegisterUserErrorAction {\n type: typeof REGISTER_USER_ERROR;\n error: string;\n}\n\nexport type RegisterUserActionTypes =\n | RegisteringUserAction\n | RegisterUserSuccessAction\n | RegisterUserErrorAction;\n\nexport const VALIDATING_REGISTER = 'VALIDATING_REGISTER';\nexport const VALIDATE_REGISTER_SUCCESS = 'VALIDATE_REGISTER_SUCCESS';\nexport const VALIDATE_REGISTER_ERROR = 'VALIDATE_REGISTER_ERROR';\n\nexport interface ValidatingRegister {\n type: typeof VALIDATING_REGISTER;\n}\n\nexport interface ValidateRegisterSuccess {\n type: typeof VALIDATE_REGISTER_SUCCESS;\n}\n\nexport interface ValidateRegisterError {\n type: typeof VALIDATE_REGISTER_ERROR;\n error: string;\n}\n\nexport type ValidateRegisterActionTypes =\n | ValidatingRegister\n | ValidateRegisterSuccess\n | ValidateRegisterError;\n\nexport const REGISTERING_BUSINESS = 'REGISTERING_BUSINESS';\nexport const REGISTER_BUSINESS_SUCCESS = 'REGISTER_BUSINESS_SUCCESS';\nexport const REGISTER_BUSINESS_ERROR = 'REGISTER_BUSINESS_ERROR';\n\nexport interface RegisteringBusinessAction {\n type: typeof REGISTERING_BUSINESS;\n}\n\nexport interface RegisterBusinessSuccessAction {\n type: typeof REGISTER_BUSINESS_SUCCESS;\n business: Business;\n}\n\nexport interface RegisterBusinessErrorAction {\n type: typeof REGISTER_BUSINESS_ERROR;\n error: string;\n}\n\nexport type RegisterBusinessActionTypes =\n | RegisteringBusinessAction\n | RegisterBusinessSuccessAction\n | RegisterBusinessErrorAction;\n\nexport const GETTING_ACCOUNT = 'GETTING_ACCOUNT';\nexport const GET_ACCOUNT_SUCCESS = 'GET_ACCOUNT_SUCCESS';\nexport const GET_ACCOUNT_ERROR = 'GET_ACCOUNT_ERROR';\n\nexport interface GettingAccount {\n type: typeof GETTING_ACCOUNT;\n}\n\nexport interface GetAccountSuccess {\n type: typeof GET_ACCOUNT_SUCCESS;\n account: User;\n}\n\nexport interface GetAccountError {\n type: typeof GET_ACCOUNT_ERROR;\n error: string;\n}\n\nexport type GetAccountActionTypes = GettingAccount | GetAccountSuccess | GetAccountError;\n\nexport const UPDATING_ACCOUNT = 'UPDATING_ACCOUNT';\nexport const UPDATE_ACCOUNT_SUCCESS = 'UPDATE_ACCOUNT_SUCCESS';\nexport const UPDATE_ACCOUNT_ERROR = 'UPDATE_ACCOUNT_ERROR';\n\nexport interface UpdatingAccount {\n type: typeof UPDATING_ACCOUNT;\n}\n\nexport interface UpdateAccountSuccess {\n type: typeof UPDATE_ACCOUNT_SUCCESS;\n account: User;\n}\n\nexport interface UpdateAccountError {\n type: typeof UPDATE_ACCOUNT_ERROR;\n error: string;\n}\n\nexport type UpdateAccountActionTypes = UpdatingAccount | UpdateAccountSuccess | UpdateAccountError;\n\nexport const CHANGING_CREDENTIALS = 'CHANGING_CREDENTIALS';\nexport const CHANGE_CREDENTIALS_SUCCESS = 'CHANGE_CREDENTIALS_SUCCESS';\nexport const CHANGE_CREDENTIALS_ERROR = 'CHANGE_CREDENTIALS_ERROR';\n\nexport interface ChangingCredentials {\n type: typeof CHANGING_CREDENTIALS;\n}\n\nexport interface ChangeCredentialsSuccess {\n type: typeof CHANGE_CREDENTIALS_SUCCESS;\n}\n\nexport interface ChangeCredentialsError {\n type: typeof CHANGE_CREDENTIALS_ERROR;\n error: string;\n}\n\nexport type ChangeCredentialsActionTypes =\n | ChangingCredentials\n | ChangeCredentialsSuccess\n | ChangeCredentialsError;\n\nexport const CHANGING_USER_PASSWORD = 'CHANGING_USER_PASSWORD';\nexport const CHANGE_USER_PASSWORD_SUCCESS = 'CHANGE_USER_PASSWORD_SUCCESS';\nexport const CHANGE_USER_PASSWORD_ERROR = 'CHANGE_USER_PASSWORD_ERROR';\n\nexport interface ChangingUserPassword {\n type: typeof CHANGING_USER_PASSWORD;\n}\n\nexport interface ChangeUserPasswordSuccess {\n type: typeof CHANGE_USER_PASSWORD_SUCCESS;\n}\n\nexport interface ChangeUserPasswordError {\n type: typeof CHANGE_USER_PASSWORD_ERROR;\n error: string;\n}\n\nexport type ChangeUserPasswordActionTypes =\n | ChangingUserPassword\n | ChangeUserPasswordSuccess\n | ChangeUserPasswordError;\n\nexport const GETTING_UNCONFIRMED_USERS = 'GETTING_UNCONFIRMED_USERS';\nexport const GET_UNCONFIRMED_USERS_SUCCESS = 'GET_UNCONFIRMED_USERS_SUCCESS';\nexport const GET_UNCONFIRMED_USERS_ERROR = 'GET_UNCONFIRMED_USERS_ERROR';\n\nexport interface GettingUnconfirmedUsers {\n type: typeof GETTING_UNCONFIRMED_USERS;\n}\n\nexport interface GetUnconfirmedUsersSuccess {\n type: typeof GET_UNCONFIRMED_USERS_SUCCESS;\n users: UnconfirmedUsersResponse;\n}\n\nexport interface GetUnconfirmedUsersError {\n type: typeof GET_UNCONFIRMED_USERS_ERROR;\n error: string;\n}\n\nexport type GetUnconfirmedUsersActionTypes =\n | GettingUnconfirmedUsers\n | GetUnconfirmedUsersSuccess\n | GetUnconfirmedUsersError;\n\nexport const VERIFYING_USER = 'VERIFYING_USER';\nexport const VERIFY_USER_SUCCESS = 'VERIFY_USER_SUCCESS';\nexport const VERIFY_USER_ERROR = 'VERIFY_USER_ERROR';\n\nexport interface VerifyingUser {\n type: typeof VERIFYING_USER;\n}\n\nexport interface VerifyUserSuccess {\n type: typeof VERIFY_USER_SUCCESS;\n verification: string;\n}\n\nexport interface VerifyUserError {\n type: typeof VERIFY_USER_ERROR;\n error: string;\n}\n\nexport type VerifyUserActionTypes = VerifyingUser | VerifyUserSuccess | VerifyUserError;\n\nexport const RESENDING_CONFIRMATION = 'RESENDING_CONFIRMATION';\nexport const RESEND_CONFIRMATION_SUCCESS = 'RESEND_CONFIRMATION_SUCCESS';\nexport const RESEND_CONFIRMATION_FAILED = 'RESEND_CONFIRMATION_FAILED';\n\nexport interface ResendingConfirmationAction {\n type: typeof RESENDING_CONFIRMATION;\n}\n\nexport interface ResendConfirmationSuccess {\n type: typeof RESEND_CONFIRMATION_SUCCESS;\n confirmation: string;\n}\n\nexport interface ResendConfirmationFailedAction {\n type: typeof RESEND_CONFIRMATION_FAILED;\n error: string;\n}\n\nexport type ResendConfirmationTypes =\n | ResendingConfirmationAction\n | ResendConfirmationSuccess\n | ResendConfirmationFailedAction;\n\n//#endregion\n\nexport type AuthDataTypes =\n | LoginActionTypes\n | LogoutActionTypes\n | ResetPasswordActionTypes\n | ConfirmResetPasswordActionTypes\n | RegisterUserActionTypes\n | ValidateRegisterActionTypes\n | RegisterBusinessActionTypes\n | GetAccountActionTypes\n | UpdateAccountActionTypes\n | ChangeCredentialsActionTypes\n | ChangeUserPasswordActionTypes\n | ResendConfirmationTypes\n | VerifyUserActionTypes\n | GetUnconfirmedUsersActionTypes;\n\n//#endregion\n\n//#region Clients\n\nexport const FETCHING_CLIENTS = 'FETCHING_CLIENTS';\nexport const ADD_CLIENTS = 'ADD_CLIENTS';\nexport const FETCH_CLIENTS_FAILED = 'FETCH_CLIENTS_FAILED';\n\nexport interface FetchingClientsAction {\n type: typeof FETCHING_CLIENTS;\n}\n\nexport interface AddClientsAction {\n type: typeof ADD_CLIENTS;\n clients: Client[];\n}\n\nexport interface FetchClientsailedAction {\n type: typeof FETCH_CLIENTS_FAILED;\n error: string;\n}\n\nexport type FetchClientsTypes = FetchingClientsAction | AddClientsAction | FetchClientsailedAction;\n\nexport const TOGGLING_CLIENT_BILLING = 'TOGGLING_CLIENT_BILLING';\nexport const TOGGLE_CLIENT_BILLING_SUCCESS = 'TOGGLE_CLIENT_BILLING_SUCCESS';\nexport const TOGGLE_CLIENT_BILLING_FAILED = 'TOGGLE_CLIENT_BILLING_FAILED';\n\nexport interface TogglingClientBillingAction {\n type: typeof TOGGLING_CLIENT_BILLING;\n}\n\nexport interface ToggleClientBillingSuccessAction {\n type: typeof TOGGLE_CLIENT_BILLING_SUCCESS;\n request: ToggleBillingRequest;\n}\n\nexport interface ToggleClientBillingFailedAction {\n type: typeof TOGGLE_CLIENT_BILLING_FAILED;\n error: string;\n}\n\nexport type ToggleClientBillingTypes =\n | TogglingClientBillingAction\n | ToggleClientBillingSuccessAction\n | ToggleClientBillingFailedAction;\n\nexport type ClientDataTypes = FetchClientsTypes | ToggleClientBillingTypes;\n\n//#endregion\n\n//#region Business\n\nexport const FETCHING_BUSINESSES = 'FETCHING_BUSINESSES';\nexport const ADD_BUSINESSES = 'ADD_BUSINESSES';\nexport const FETCH_BUSINESSES_FAILED = 'FETCH_BUSINESSES_FAILED';\n\nexport interface FetchingBusinessesAction {\n type: typeof FETCHING_BUSINESSES;\n}\n\nexport interface AddBusinessesAction {\n type: typeof ADD_BUSINESSES;\n businesses: Business[];\n}\n\nexport interface FetchBusinessesFailedAction {\n type: typeof FETCH_BUSINESSES_FAILED;\n error: string;\n}\n\nexport type FetchBusinessesTypes =\n | FetchingBusinessesAction\n | AddBusinessesAction\n | FetchBusinessesFailedAction;\n\nexport const CREATING_BUSINESS = 'CREATING_BUSINESS';\nexport const CREATE_BUSINESS_SUCCESS = 'CREATE_BUSINESS_SUCCESS';\nexport const CREATE_BUSINESS_FAILED = 'CREATE_BUSINESS_FAILED';\n\nexport interface CreatingBusinessAction {\n type: typeof CREATING_BUSINESS;\n}\n\nexport interface CreateBusinessSuccessAction {\n type: typeof CREATE_BUSINESS_SUCCESS;\n business: Business;\n}\n\nexport interface CreateBusinessFailedAction {\n type: typeof CREATE_BUSINESS_FAILED;\n error: string;\n}\n\nexport type CreateBusinessTypes =\n | CreatingBusinessAction\n | CreateBusinessSuccessAction\n | CreateBusinessFailedAction;\n\nexport const UPDATING_BUSINESS = 'UPDATING_BUSINESS';\nexport const UPDATE_BUSINESS_SUCCESS = 'UPDATE_BUSINESS_SUCCESS';\nexport const UPDATE_BUSINESS_FAILED = 'UPDATE_BUSINESS_FAILED';\n\nexport interface UpdatingBusinessAction {\n type: typeof UPDATING_BUSINESS;\n}\n\nexport interface UpdateBusinessSuccessAction {\n type: typeof UPDATE_BUSINESS_SUCCESS;\n business: Business;\n}\n\nexport interface UpdateBusinessFailedAction {\n type: typeof UPDATE_BUSINESS_FAILED;\n error: string;\n}\n\nexport type UpdateBusinessTypes =\n | UpdatingBusinessAction\n | UpdateBusinessSuccessAction\n | UpdateBusinessFailedAction;\n\nexport const GETTING_BUSINESS = 'GETTING_BUSINESS';\nexport const GET_BUSINESS_SUCCESS = 'GET_BUSINESS_SUCCESS';\nexport const GET_BUSINESS_FAILED = 'GET_BUSINESS_FAILED';\n\nexport interface GettingBusinessAction {\n type: typeof GETTING_BUSINESS;\n}\n\nexport interface GetBusinessSuccessAction {\n type: typeof GET_BUSINESS_SUCCESS;\n business: Business;\n}\n\nexport interface GetBusinessFailedAction {\n type: typeof GET_BUSINESS_FAILED;\n error: string;\n}\n\nexport type GetBusinessTypes = GettingBusinessAction | GetBusinessSuccessAction | GetBusinessFailedAction;\n\nexport const GETTING_BUSINESS_SUB_BUSINESSES = 'GETTING_BUSINESS_SUB_BUSINESSES';\nexport const GET_BUSINESS_SUB_BUSINESSES_SUCCESS = 'GET_BUSINESS_SUB_BUSINESSES_SUCCESS';\nexport const GET_BUSINESS_SUB_BUSINESSES_FAILED = 'GET_BUSINESS_SUB_BUSINESSES_FAILED';\n\nexport interface GettingBusinessSubBusinessesAction {\n type: typeof GETTING_BUSINESS_SUB_BUSINESSES;\n}\n\nexport interface GetBusinessSubBusinessesSuccessAction {\n type: typeof GET_BUSINESS_SUB_BUSINESSES_SUCCESS;\n subBusinesses: SubBusiness[];\n}\n\nexport interface GetBusinessSubBusinessesFailedAction {\n type: typeof GET_BUSINESS_SUB_BUSINESSES_FAILED;\n error: string;\n}\n\nexport type GetBusinessSubBusinessesTypes =\n | GettingBusinessSubBusinessesAction\n | GetBusinessSubBusinessesSuccessAction\n | GetBusinessSubBusinessesFailedAction;\n\nexport const UPDATING_SECRET = 'UPDATING_SECRET';\nexport const UPDATE_SECRET_SUCCESS = 'UPDATE_SECRET_SUCCESS';\nexport const UPDATE_SECRET_FAILED = 'UPDATE_SECRET_FAILED';\n\nexport interface UpdatingSecretAction {\n type: typeof UPDATING_SECRET;\n}\n\nexport interface UpdateSecretSuccessAction {\n type: typeof UPDATE_SECRET_SUCCESS;\n}\n\nexport interface UpdateSecretFailedAction {\n type: typeof UPDATE_SECRET_FAILED;\n error: string;\n}\n\nexport type UpdateSecretTypes = UpdatingSecretAction | UpdateSecretSuccessAction | UpdateSecretFailedAction;\n\nexport type BusinessDataTypes =\n | FetchBusinessesTypes\n | CreateBusinessTypes\n | UpdateBusinessTypes\n | GetBusinessTypes\n | GetBusinessSubBusinessesTypes\n | UpdateSecretTypes;\n\n//#endregion\n\n//#region Collaborators\n\nexport const FETCHING_COLLABORATORS = 'FETCHING_COLLABORATORS';\nexport const ADD_COLLABORATORS = 'ADD_COLLABORATORS';\nexport const FETCH_COLLABORATORS_FAILED = 'FETCH_COLLABORATORS_FAILED';\n\nexport interface FetchingCollaboratorsAction {\n type: typeof FETCHING_COLLABORATORS;\n}\n\nexport interface AddCollaboratorsAction {\n type: typeof ADD_COLLABORATORS;\n collaboratorsResponse: Collaborator[] | CollaboratorResponse;\n}\n\nexport interface FetchCollaboratorsFailedAction {\n type: typeof FETCH_COLLABORATORS_FAILED;\n error: string;\n}\n\nexport type FetchCollaboratorsTypes =\n | FetchingCollaboratorsAction\n | AddCollaboratorsAction\n | FetchCollaboratorsFailedAction;\n\nexport const CREATING_COLLABORATOR = 'CREATING_COLLABORATOR';\nexport const CREATE_COLLABORATOR_SUCCESS = 'CREATE_COLLABORATOR_SUCCESS';\nexport const CREATE_COLLABORATOR_FAILED = 'CREATE_COLLABORATOR_FAILED';\n\nexport interface CreatingCollaboratorAction {\n type: typeof CREATING_COLLABORATOR;\n}\n\nexport interface CreateCollaboratorSuccessAction {\n type: typeof CREATE_COLLABORATOR_SUCCESS;\n collaborator: Collaborator;\n}\n\nexport interface CreateCollaboratorFailedAction {\n type: typeof CREATE_COLLABORATOR_FAILED;\n error: string;\n}\n\nexport type CreateCollaboratorTypes =\n | CreatingCollaboratorAction\n | CreateCollaboratorSuccessAction\n | CreateCollaboratorFailedAction;\n\nexport const UPDATING_COLLABORATOR = 'UPDATING_COLLABORATOR';\nexport const UPDATE_COLLABORATOR_SUCCESS = 'UPDATE_COLLABORATOR_SUCCESS';\nexport const UPDATE_COLLABORATOR_FAILED = 'UPDATE_COLLABORATOR_FAILED';\n\nexport interface UpdatingCollaboratorAction {\n type: typeof UPDATING_COLLABORATOR;\n}\n\nexport interface UpdateCollaboratorSuccessAction {\n type: typeof UPDATE_COLLABORATOR_SUCCESS;\n collaborator: Collaborator;\n}\n\nexport interface UpdateCollaboratorFailedAction {\n type: typeof UPDATE_COLLABORATOR_FAILED;\n error: string;\n}\n\nexport type UpdateCollaboratorTypes =\n | UpdatingCollaboratorAction\n | UpdateCollaboratorSuccessAction\n | UpdateCollaboratorFailedAction;\n\nexport const DELETING_COLLABORATOR = 'DELETING_COLLABORATOR';\nexport const DELETE_COLLABORATOR_SUCCESS = 'DELETE_COLLABORATOR_SUCCESS';\nexport const DELETE_COLLABORATOR_FAILED = 'DELETE_COLLABORATOR_FAILED';\n\nexport interface DeletingCollaboratorAction {\n type: typeof DELETING_COLLABORATOR;\n}\n\nexport interface DeleteCollaboratorSuccessAction {\n type: typeof DELETE_COLLABORATOR_SUCCESS;\n collaboratorId: string;\n}\n\nexport interface DeleteCollaboratorFailedAction {\n type: typeof DELETE_COLLABORATOR_FAILED;\n error: string;\n}\n\nexport type DeleteCollaboratorTypes =\n | DeletingCollaboratorAction\n | DeleteCollaboratorSuccessAction\n | DeleteCollaboratorFailedAction;\n\nexport const ENABLING_COLLABORATOR = 'ENABLING_COLLABORATOR';\nexport const ENABLE_COLLABORATOR_SUCCESS = 'ENABLE_COLLABORATOR_SUCCESS';\nexport const ENABLE_COLLABORATOR_FAILED = 'ENABLE_COLLABORATOR_FAILED';\n\nexport interface EnablingCollaboratorAction {\n type: typeof ENABLING_COLLABORATOR;\n}\n\nexport interface EnableCollaboratorSuccessAction {\n type: typeof ENABLE_COLLABORATOR_SUCCESS;\n userId: string;\n}\n\nexport interface EnableCollaboratorFailedAction {\n type: typeof ENABLE_COLLABORATOR_FAILED;\n error: string;\n}\n\nexport type EnableCollaboratorTypes =\n | EnablingCollaboratorAction\n | EnableCollaboratorSuccessAction\n | EnableCollaboratorFailedAction;\n\nexport type CollaboratorsDataTypes =\n | FetchCollaboratorsTypes\n | CreateCollaboratorTypes\n | UpdateCollaboratorTypes\n | DeleteCollaboratorTypes\n | EnableCollaboratorTypes;\n\n//#endregion\n\n//#region PaymentMethods\n\nexport const FETCHING_PAYMENT_METHODS = 'FETCHING_PAYMENT_METHODS';\nexport const ADD_PAYMENT_METHODS = 'ADD_PAYMENT_METHODS';\nexport const FETCH_PAYMENT_METHODS_FAILED = 'FETCH_PAYMENT_METHODS_FAILED';\n\nexport interface FetchingPaymentMethodsAction {\n type: typeof FETCHING_PAYMENT_METHODS;\n}\n\nexport interface AddPaymentMethodsAction {\n type: typeof ADD_PAYMENT_METHODS;\n paymentMethods: PaymentMethod[];\n}\n\nexport interface FetchPaymentMethodsFailedAction {\n type: typeof FETCH_PAYMENT_METHODS_FAILED;\n error: string;\n}\n\nexport type FetchPaymentMethodsTypes =\n | FetchingPaymentMethodsAction\n | AddPaymentMethodsAction\n | FetchPaymentMethodsFailedAction;\n\nexport const CREATING_PAYMENT_METHOD = 'CREATING_PAYMENT_METHOD';\nexport const CREATE_PAYMENT_METHOD_SUCCESS = 'CREATE_PAYMENT_METHOD_SUCCESS';\nexport const CREATE_PAYMENT_METHOD_FAILED = 'CREATE_PAYMENT_METHOD_FAILED';\n\nexport interface CreatingPaymentMethodAction {\n type: typeof CREATING_PAYMENT_METHOD;\n}\n\nexport interface CreatePaymentMethodSuccessAction {\n type: typeof CREATE_PAYMENT_METHOD_SUCCESS;\n paymentMethod: PaymentMethod;\n}\n\nexport interface CreatePaymentMethodFailedAction {\n type: typeof CREATE_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport type CreatePaymentMethodTypes =\n | CreatingPaymentMethodAction\n | CreatePaymentMethodSuccessAction\n | CreatePaymentMethodFailedAction;\n\nexport const CREATING_BUSINESS_PAYMENT_METHOD = 'CREATING_BUSINESS_PAYMENT_METHOD';\nexport const CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS = 'CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS';\nexport const CREATE_BUSINESS_PAYMENT_METHOD_FAILED = 'CREATE_BUSINESS_PAYMENT_METHOD_FAILED';\n\nexport interface CreatingBusinessPaymentMethodAction {\n type: typeof CREATING_BUSINESS_PAYMENT_METHOD;\n}\n\nexport interface CreateBusinessPaymentMethodSuccessAction {\n type: typeof CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS;\n paymentMethod: PaymentMethod;\n businessId: number;\n}\n\nexport interface CreateBusinessPaymentMethodFailedAction {\n type: typeof CREATE_BUSINESS_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport type CreateBusinessPaymentMethodTypes =\n | CreatingBusinessPaymentMethodAction\n | CreateBusinessPaymentMethodSuccessAction\n | CreateBusinessPaymentMethodFailedAction;\n\nexport const UPDATING_PAYMENT_METHOD = 'UPDATING_PAYMENT_METHOD';\nexport const UPDATE_PAYMENT_METHOD_SUCCESS = 'UPDATE_PAYMENT_METHOD_SUCCESS';\nexport const UPDATE_PAYMENT_METHOD_FAILED = 'UPDATE_PAYMENT_METHOD_FAILED';\n\nexport interface UpdatingPaymentMethodAction {\n type: typeof UPDATING_PAYMENT_METHOD;\n}\n\nexport interface UpdatePaymentMethodSuccessAction {\n type: typeof UPDATE_PAYMENT_METHOD_SUCCESS;\n paymentMethod: PaymentMethod;\n}\n\nexport interface UpdatePaymentMethodFailedAction {\n type: typeof UPDATE_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport type UpdatePaymentMethodTypes =\n | UpdatingPaymentMethodAction\n | UpdatePaymentMethodSuccessAction\n | UpdatePaymentMethodFailedAction;\n\nexport const UPDATING_BUSINESS_PAYMENT_METHOD = 'UPDATING_BUSINESS_PAYMENT_METHOD';\nexport const UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS = 'UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS';\nexport const UPDATE_BUSINESS_PAYMENT_METHOD_FAILED = 'UPDATE_BUSINESS_PAYMENT_METHOD_FAILED';\n\nexport interface UpdatingBusinessPaymentMethodAction {\n type: typeof UPDATING_BUSINESS_PAYMENT_METHOD;\n}\n\nexport interface UpdateBusinessPaymentMethodSuccessAction {\n type: typeof UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS;\n paymentMethod: PaymentMethod;\n businessId: number;\n}\n\nexport interface UpdateBusinessPaymentMethodFailedAction {\n type: typeof UPDATE_BUSINESS_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport type UpdateBusinessPaymentMethodTypes =\n | UpdatingBusinessPaymentMethodAction\n | UpdateBusinessPaymentMethodSuccessAction\n | UpdateBusinessPaymentMethodFailedAction;\n\nexport const DELETING_PAYMENT_METHOD = 'DELETING_PAYMENT_METHOD';\nexport const DELETE_PAYMENT_METHOD_SUCCESS = 'DELETE_PAYMENT_METHOD_SUCCESS';\nexport const DELETE_PAYMENT_METHOD_FAILED = 'DELETE_PAYMENT_METHOD_FAILED';\n\nexport interface DeletingPaymentMethodAction {\n type: typeof DELETING_PAYMENT_METHOD;\n}\n\nexport interface DeletePaymentMethodSuccessAction {\n type: typeof DELETE_PAYMENT_METHOD_SUCCESS;\n paymentMethodId: number;\n isLast: boolean;\n}\n\nexport interface DeletePaymentMethodFailedAction {\n type: typeof DELETE_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport type DeletePaymentMethodTypes =\n | DeletingPaymentMethodAction\n | DeletePaymentMethodSuccessAction\n | DeletePaymentMethodFailedAction;\n\nexport const DELETING_BUSINESS_PAYMENT_METHOD = 'DELETING_BUSINESS_PAYMENT_METHOD';\nexport const DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS = 'DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS';\nexport const DELETE_BUSINESS_PAYMENT_METHOD_FAILED = 'DELETE_BUSINESS_PAYMENT_METHOD_FAILED';\n\nexport interface DeletingBusinessPaymentMethodAction {\n type: typeof DELETING_BUSINESS_PAYMENT_METHOD;\n}\n\nexport interface DeleteBusinessPaymentMethodSuccessAction {\n type: typeof DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS;\n paymentMethodId: number;\n businessId: number;\n}\n\nexport interface DeleteBusinessPaymentMethodFailedAction {\n type: typeof DELETE_BUSINESS_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport type DeleteBusinessPaymentMethodTypes =\n | DeletingBusinessPaymentMethodAction\n | DeleteBusinessPaymentMethodSuccessAction\n | DeleteBusinessPaymentMethodFailedAction;\n\nexport const FETCHING_ISSUERS = 'FETCHING_ISSUERS';\nexport const ADD_ISSUERS = 'ADD_ISSUERS';\nexport const FETCH_ISSUERS_FAILED = 'FETCH_ISSUERS_FAILED';\n\nexport interface FetchingIssuersAction {\n type: typeof FETCHING_ISSUERS;\n}\n\nexport interface AddIssuersAction {\n type: typeof ADD_ISSUERS;\n issuers: Issuer[];\n}\n\nexport interface FetchIssuersFailedAction {\n type: typeof FETCH_ISSUERS_FAILED;\n error: string;\n}\n\nexport type FetchIssuersTypes = FetchingIssuersAction | AddIssuersAction | FetchIssuersFailedAction;\n\nexport const FETCHING_BUSINESS_ISSUERS = 'FETCHING_BUSINESS_ISSUERS';\nexport const ADD_BUSINESS_ISSUERS = 'ADD_BUSINESS_ISSUERS';\nexport const FETCH_BUSINESS_ISSUERS_FAILED = 'FETCH_BUSINESS_ISSUERS_FAILED';\n\nexport interface FetchingBusinessIssuersAction {\n type: typeof FETCHING_BUSINESS_ISSUERS;\n}\n\nexport interface AddBusinessIssuersAction {\n type: typeof ADD_BUSINESS_ISSUERS;\n issuers: BusinessIssuer[];\n}\n\nexport interface FetchBusinessIssuersFailedAction {\n type: typeof FETCH_BUSINESS_ISSUERS_FAILED;\n error: string;\n}\n\nexport type FetchBusinessIssuersTypes =\n | FetchingBusinessIssuersAction\n | AddBusinessIssuersAction\n | FetchBusinessIssuersFailedAction;\n\nexport const SENDING_DESIRED_ISSUERS = 'SENDING_DESIRED_ISSUERS';\nexport const DESIRED_ISSUERS_SUCCESS = 'DESIRED_ISSUERS_SUCCESS';\nexport const DESIRED_ISSUERS_FAILED = 'DESIRED_ISSUERS_FAILED';\n\nexport interface SendingDesiredIssuersAction {\n type: typeof SENDING_DESIRED_ISSUERS;\n}\n\nexport interface DesiredIssuersSuccessAction {\n type: typeof DESIRED_ISSUERS_SUCCESS;\n}\n\nexport interface DesiredIssuersFailedAction {\n type: typeof DESIRED_ISSUERS_FAILED;\n error: string;\n}\n\nexport type DesiredIssuersTypes =\n | SendingDesiredIssuersAction\n | DesiredIssuersSuccessAction\n | DesiredIssuersFailedAction;\n\nexport const FETCHING_INSTALLMENTS = 'FETCHING_INSTALLMENTS';\nexport const FETCH_INSTALLMENTS_SUCCESS = 'FETCH_INSTALLMENTS_SUCCESS';\nexport const FETCH_INSTALLMENTS_FAILED = 'FETCH_INSTALLMENTS_FAILED';\n\nexport interface FetchingInstallmentsAction {\n type: typeof FETCHING_INSTALLMENTS;\n}\n\nexport interface FetchInstallmentsSuccessAction {\n type: typeof FETCH_INSTALLMENTS_SUCCESS;\n installments: number[];\n}\n\nexport interface FetchInstallmentsFailedAction {\n type: typeof FETCH_INSTALLMENTS_FAILED;\n error: string;\n}\n\nexport type InstallmentsTypes =\n | FetchingInstallmentsAction\n | FetchInstallmentsSuccessAction\n | FetchInstallmentsFailedAction;\n\nexport type PaymentMethodsDataTypes =\n | FetchPaymentMethodsTypes\n | CreatePaymentMethodTypes\n | CreateBusinessPaymentMethodTypes\n | UpdatePaymentMethodTypes\n | UpdateBusinessPaymentMethodTypes\n | DeletePaymentMethodTypes\n | DeleteBusinessPaymentMethodTypes\n | FetchIssuersTypes\n | FetchBusinessIssuersTypes\n | DesiredIssuersTypes\n | InstallmentsTypes;\n\n//#endregion\n\n//#region Notifications actions\n\nexport const SENDING_NOTIFICATION = 'SENDING_NOTIFICATION';\nexport const SEND_NOTIFICATION_SUCCESS = 'SEND_NOTIFICATION_SUCCESS';\nexport const SEND_NOTIFICATION_ERROR = 'SEND_NOTIFICATION_ERROR';\n\nexport interface SendingNotificationAction {\n type: typeof SENDING_NOTIFICATION;\n}\n\nexport interface SendNotificationSuccessAction {\n type: typeof SEND_NOTIFICATION_SUCCESS;\n notification: NotificationsResponse;\n}\n\nexport interface SendNotificationErrorAction {\n type: typeof SEND_NOTIFICATION_ERROR;\n error: string;\n}\n\nexport type SendNotificationActionTypes =\n | SendingNotificationAction\n | SendNotificationSuccessAction\n | SendNotificationErrorAction;\n\nexport const RESENDING_NOTIFICATION = 'RESENDING_NOTIFICATION';\nexport const RESEND_NOTIFICATION_SUCCESS = 'RESEND_NOTIFICATION_SUCCESS';\nexport const RESEND_NOTIFICATION_ERROR = 'RESEND_NOTIFICATION_ERROR';\n\nexport interface ResendingNotificationAction {\n type: typeof RESENDING_NOTIFICATION;\n notificationId: string;\n}\n\nexport interface ResendNotificationSuccessAction {\n type: typeof RESEND_NOTIFICATION_SUCCESS;\n}\n\nexport interface ResendNotificationErrorAction {\n type: typeof RESEND_NOTIFICATION_ERROR;\n error: string;\n}\n\nexport type ResendNotificationActionTypes =\n | ResendingNotificationAction\n | ResendNotificationSuccessAction\n | ResendNotificationErrorAction;\n\nexport type NotificationsDataTypes = ResendNotificationActionTypes | SendNotificationActionTypes;\n\n//#endregion\n\n//#region Payments actions\n\nexport const FETCHING_PAYMENTS = 'FETCHING_PAYMENTS';\nexport const ADD_PAYMENTS = 'ADD_PAYMENTS';\nexport const ADD_DASHBOARD_PAYMENTS = 'ADD_DASHBOARD_PAYMENTS';\nexport const FETCH_PAYMENTS_ERROR = 'FETCH_PAYMENTS_ERROR';\nexport const VISA_REDIRECTED = 'VISA_REDIRECTED';\n\nexport interface FetchingPayments {\n type: typeof FETCHING_PAYMENTS;\n}\n\nexport interface AddPayments {\n type: typeof ADD_PAYMENTS;\n paymentResponse: PaymentResponse;\n}\n\nexport interface AddDashboardPayments {\n type: typeof ADD_DASHBOARD_PAYMENTS;\n paymentResponse: PaymentResponse;\n}\n\nexport interface FetchPaymentsError {\n type: typeof FETCH_PAYMENTS_ERROR;\n error: string;\n}\n\nexport type FetchPaymentsTypes = FetchingPayments | AddPayments | AddDashboardPayments | FetchPaymentsError;\n\nexport const BEGINNING_PAYMENT = 'BEGINNING_PAYMENT';\nexport const BEGIN_PAYMENT_SUCCESS = 'BEGIN_PAYMENT_SUCCESS';\nexport const BEGIN_PAYMENT_ERROR = 'BEGIN_PAYMENT_ERROR';\n\nexport interface BeginningPayment {\n type: typeof BEGINNING_PAYMENT;\n}\n\nexport interface BeginPaymentSuccess {\n type: typeof BEGIN_PAYMENT_SUCCESS;\n confirmPaymentResponse: BeginPaymentResponse;\n paymentUrl: string;\n}\n\nexport interface BeginPaymentError {\n type: typeof BEGIN_PAYMENT_ERROR;\n error: string;\n}\n\nexport type BeginPaymentTypes = BeginningPayment | BeginPaymentSuccess | BeginPaymentError;\n\nexport const GETTING_PAYMENT = 'GETTING_PAYMENT';\nexport const GET_PAYMENT_SUCCESS = 'GET_PAYMENT_SUCCESS';\nexport const GET_PAYMENT_ERROR = 'GET_PAYMENT_ERROR';\n\nexport interface GettingPayment {\n type: typeof GETTING_PAYMENT;\n}\n\nexport interface GetPaymentSuccess {\n type: typeof GET_PAYMENT_SUCCESS;\n paymentResponse: Payment;\n}\n\nexport interface GetPaymentError {\n type: typeof GET_PAYMENT_ERROR;\n error: string;\n}\n\nexport type GetPaymentTypes = GettingPayment | GetPaymentSuccess | GetPaymentError;\n\nexport const LOAD_PAYMENT_FILTERS = 'LOAD_PAYMENT_FILTERS';\n\nexport interface LoadPaymentsFiltersAction {\n type: typeof LOAD_PAYMENT_FILTERS;\n filters: PaymentsFilters;\n}\n\nexport const TOGGLE_RESET_CLIENT_FILTER = 'RESET_CLIENT_FILTER';\n\nexport interface ToggleResetClientFilter {\n type: typeof TOGGLE_RESET_CLIENT_FILTER;\n}\n\nexport const CLEAR_INSTRUMENT = 'CLEAR_INSTRUMENT';\n\nexport interface ClearInstrument {\n type: typeof CLEAR_INSTRUMENT;\n}\n\nexport const CANCELLING_PAYMENT = 'CANCELLING_PAYMENT';\nexport const CANCEL_PAYMENT_SUCCESS = 'CANCEL_PAYMENT_SUCCESS';\nexport const CANCEL_PAYMENT_ERROR = 'CANCEL_PAYMENT_ERROR';\n\nexport interface CancellingPayment {\n type: typeof CANCELLING_PAYMENT;\n}\n\nexport interface CancelPaymentSuccess {\n type: typeof CANCEL_PAYMENT_SUCCESS;\n plexoReferenceId: string;\n}\n\nexport interface CancelPaymentError {\n type: typeof CANCEL_PAYMENT_ERROR;\n error: string;\n}\n\nexport type CancelPaymentTypes = CancellingPayment | CancelPaymentSuccess | CancelPaymentError;\n\nexport type ClearInstrumentTypes = ClearInstrument;\n\nexport const CONFIRMING_PAYMENT = 'CONFIRMING_PAYMENT';\nexport const CONFIRM_PAYMENT_SUCCESS = 'CONFIRM_PAYMENT_SUCCESS';\nexport const CONFIRM_PAYMENT_ERROR = 'CONFIRM_PAYMENT_ERROR';\nexport const TRANSACTION_CALLBACK = 'TRANSACTION_CALLBACK';\nexport const REGISTER_CALLBACK_FAILED = 'REGISTER_CALLBACK_FAILED';\n\nexport interface ConfirmingPayment {\n type: typeof CONFIRMING_PAYMENT;\n}\n\nexport interface ConfirmPaymentSuccess {\n type: typeof CONFIRM_PAYMENT_SUCCESS;\n response: ConfirmPaymentResponse;\n}\n\nexport interface ConfirmPaymentError {\n type: typeof CONFIRM_PAYMENT_ERROR;\n error: string;\n}\n\nexport type ConfirmPaymentTypes = ConfirmingPayment | ConfirmPaymentSuccess | ConfirmPaymentError;\n\nexport type RegisterCallbackFailedType = {\n type: typeof REGISTER_CALLBACK_FAILED;\n response: boolean;\n};\n\nexport type TransactionCallbackType = {\n type: typeof TRANSACTION_CALLBACK;\n response: TransactionStatus;\n};\n\nexport type VisaRedirectedType = {\n type: typeof VISA_REDIRECTED;\n paymentId: string;\n};\n\nexport type PaymentDataTypes =\n | FetchPaymentsTypes\n | BeginPaymentTypes\n | GetPaymentTypes\n | ClearInstrumentTypes\n | ConfirmPaymentTypes\n | LoadPaymentsFiltersAction\n | ToggleResetClientFilter\n | VisaRedirectedType\n | TransactionCallbackType\n | RegisterCallbackFailedType\n | CancelPaymentTypes;\n\n//#endregion\n\n//#region Links actions\n\nexport const FETCHING_LINKS = 'FETCHING_LINKS';\nexport const ADD_LINKS = 'ADD_LINKS';\nexport const ADD_DASHBOARD_LINKS = 'ADD_DASHBOARD_LINKS';\nexport const FETCH_LINKS_FAILED = 'FETCH_LINKS_FAILED';\n\nexport interface FetchingLinksAction {\n type: typeof FETCHING_LINKS;\n kind: LinkTypeEnum;\n reset: boolean;\n}\n\nexport interface AddLinksAction {\n type: typeof ADD_LINKS;\n links: LinksResponse;\n}\n\nexport interface AddDashboardLinksAction {\n type: typeof ADD_DASHBOARD_LINKS;\n links: LinksResponse;\n}\n\nexport interface FetchLinksFailedAction {\n type: typeof FETCH_LINKS_FAILED;\n error: string;\n}\n\nexport type FetchLinksTypes =\n | FetchingLinksAction\n | AddLinksAction\n | AddDashboardLinksAction\n | FetchLinksFailedAction;\n\n//\nexport const FETCHING_ONE_USE_LINKS = 'FETCHING_ONE_USE_LINKS';\nexport const ADD_ONE_USE_LINKS = 'ADD_ONE_USE_LINKS';\nexport const FETCH_ONE_USE_LINKS_FAILED = 'FETCH_ONE_USELINKS_FAILED';\nexport interface FetchingOneUseLinksAction {\n type: typeof FETCHING_ONE_USE_LINKS;\n kind: LinkTypeEnum;\n reset: boolean;\n}\n\nexport interface AddOneUseLinksAction {\n type: typeof ADD_ONE_USE_LINKS;\n links: LinksResponse;\n}\n\nexport interface FetchOneUseLinksFailedAction {\n type: typeof FETCH_ONE_USE_LINKS_FAILED;\n error: string;\n}\n\nexport type FetchOneUseLinksTypes =\n | FetchingOneUseLinksAction\n | AddOneUseLinksAction\n | FetchOneUseLinksFailedAction;\n//\n\nexport const CREATING_LINK = 'CREATING_LINK';\nexport const CREATE_LINK_SUCCESS = 'CREATE_LINK_SUCCESS';\nexport const CREATE_LINK_FAILED = 'CREATE_LINK_FAILED';\n\nexport interface CreatingLinkAction {\n type: typeof CREATING_LINK;\n}\n\nexport interface CreateLinkSuccessAction {\n type: typeof CREATE_LINK_SUCCESS;\n link: Link;\n}\n\nexport interface CreateLinkFailedAction {\n type: typeof CREATE_LINK_FAILED;\n error: string;\n}\nexport type CreateLinkTypes = CreatingLinkAction | CreateLinkSuccessAction | CreateLinkFailedAction;\n\nexport const CREATING_LINKS_WITH_CSV = 'CREATING_LINKS_WITH_CSV';\nexport const CREATE_LINKS_WITH_CSV_SUCCESS = 'CREATE_LINKS_WITH_CSV_SUCCESS';\nexport const CREATE_LINKS_WITH_CSV_FAILED = 'CREATE_LINKS_WITH_CSV_FAILED';\n\nexport interface CreatingLinksWithCSVAction {\n type: typeof CREATING_LINKS_WITH_CSV;\n}\n\nexport interface CreateLinksWithCSVSuccessAction {\n type: typeof CREATE_LINKS_WITH_CSV_SUCCESS;\n links: Link[];\n}\n\nexport interface CreateLinksWithCSVFailedAction {\n type: typeof CREATE_LINKS_WITH_CSV_FAILED;\n error: string;\n}\n\nexport type CreateLinkWithCSVTypes =\n | CreatingLinksWithCSVAction\n | CreateLinksWithCSVSuccessAction\n | CreateLinksWithCSVFailedAction;\n\nexport const UPDATING_LINK = 'UPDATING_LINK';\nexport const UPDATE_LINK_SUCCESS = 'UPDATE_LINK_SUCCESS';\nexport const UPDATE_LINK_FAILED = 'UPDATE_LINK_FAILED';\n\nexport interface UpdatingLinkAction {\n type: typeof UPDATING_LINK;\n}\n\nexport interface UpdateLinkSuccessAction {\n type: typeof UPDATE_LINK_SUCCESS;\n link: Link;\n}\n\nexport interface UpdateLinkFailedAction {\n type: typeof UPDATE_LINK_FAILED;\n error: string;\n}\n\nexport type UpdateLinkTypes = UpdatingLinkAction | UpdateLinkSuccessAction | UpdateLinkFailedAction;\n\nexport const DELETING_LINK = 'DELETING_LINK';\nexport const DELETE_LINK_SUCCESS = 'DELETE_LINK_SUCCESS';\nexport const DELETE_LINK_FAILED = 'DELETE_LINK_FAILED';\n\nexport interface DeletingLinkAction {\n type: typeof DELETING_LINK;\n}\n\nexport interface DeleteLinkSuccessAction {\n type: typeof DELETE_LINK_SUCCESS;\n linkId: string;\n}\n\nexport interface DeleteLinkFailedAction {\n type: typeof DELETE_LINK_FAILED;\n error: string;\n}\n\nexport type DeleteLinkTypes = DeletingLinkAction | DeleteLinkSuccessAction | DeleteLinkFailedAction;\n\nexport const SHARING_LINK = 'SHARING_LINK';\nexport const SHARE_LINK_SUCCESS = 'SHARE_LINK_SUCCESS';\nexport const SHARE_LINK_FAILED = 'SHARE_LINK_FAILED';\n\nexport interface SharingLinkAction {\n type: typeof SHARING_LINK;\n}\n\nexport interface ShareLinkSuccessAction {\n type: typeof SHARE_LINK_SUCCESS;\n}\n\nexport interface ShareLinkFailedAction {\n type: typeof SHARE_LINK_FAILED;\n error: string;\n}\n\nexport const LOAD_LINK_FILTERS = 'LOAD_LINKS_FILTERS';\n\nexport interface LoadLinksFiltersAction {\n type: typeof LOAD_LINK_FILTERS;\n filters: PaymentsFilters;\n}\n\nexport const LOAD_ONE_USE_LINK_FILTERS = 'LOAD_ONE_USE_LINK_FILTERS';\nexport interface LoadOneUseLinksFiltersAction {\n type: typeof LOAD_ONE_USE_LINK_FILTERS;\n filters: PaymentsFilters;\n}\n\nexport type ShareLinkTypes = SharingLinkAction | ShareLinkSuccessAction | ShareLinkFailedAction;\n\nexport const GETTING_LINK_DATA = 'GETTING_LINK_DATA';\nexport const GET_LINK_DATA_SUCCESS = 'GET_LINK_DATA_SUCCESS';\nexport const GET_LINK_DATA_FAILED = 'GET_LINK_DATA_FAILED';\n\nexport interface GettingLinkDataAction {\n type: typeof GETTING_LINK_DATA;\n}\n\nexport interface GetLinkDataSuccessAction {\n type: typeof GET_LINK_DATA_SUCCESS;\n link: LinkDataResponse;\n}\n\nexport interface GetLinkDataFailedAction {\n type: typeof GET_LINK_DATA_FAILED;\n error: string;\n}\n\nexport type GetLinkDataTypes = GettingLinkDataAction | GetLinkDataSuccessAction | GetLinkDataFailedAction;\n\nexport const VALIDATING_LINK = 'VALIDATING_LINK';\nexport const VALIDATE_LINK_SUCCESS = 'VALIDATE_LINK_SUCCESS';\nexport const VALIDATE_LINK_FAILED = 'VALIDATE_LINK_FAILED';\n\nexport interface ValidatingLinkAction {\n type: typeof VALIDATING_LINK;\n}\n\nexport interface ValidateLinkSuccessAction {\n type: typeof VALIDATE_LINK_SUCCESS;\n link: LinkToPay;\n}\n\nexport interface ValidateLinkFailedAction {\n type: typeof VALIDATE_LINK_FAILED;\n error: string;\n}\n\nexport type ValidateLinkTypes = ValidatingLinkAction | ValidateLinkSuccessAction | ValidateLinkFailedAction;\n\nexport type LinksDataTypes =\n | FetchLinksTypes\n | FetchOneUseLinksTypes\n | LoadLinksFiltersAction\n | LoadOneUseLinksFiltersAction\n | CreateLinkTypes\n | UpdateLinkTypes\n | DeleteLinkTypes\n | ShareLinkTypes\n | GetLinkDataTypes\n | ValidateLinkTypes\n | CreateLinkWithCSVTypes;\n\n//#endregion\n\nexport type AppActions =\n | AuthDataTypes\n | CollaboratorsDataTypes\n | PaymentMethodsDataTypes\n | PaymentDataTypes\n | LinksDataTypes;\n\n//#region SubBusiness actions\nexport const FETCHING_SUB_BUSINESS = 'FETCHING_SUB_BUSINESS';\nexport const ADD_SUB_BUSINESS = 'ADD_SUB_BUSINESS';\nexport const FETCH_SUB_BUSINESS_FAILED = 'FETCH_SUB_BUSINESS_FAILED';\n\nexport interface FetchingSubBusinessAction {\n type: typeof FETCHING_SUB_BUSINESS;\n}\n\nexport interface AddSubBusinessAction {\n type: typeof ADD_SUB_BUSINESS;\n subBusiness: SubBusiness[];\n}\n\nexport interface FetchSubBusinessFailedAction {\n type: typeof FETCH_SUB_BUSINESS_FAILED;\n error: string;\n}\n\nexport type FetchSubBusinessTypes =\n | FetchingSubBusinessAction\n | AddSubBusinessAction\n | FetchSubBusinessFailedAction;\n\nexport const CREATING_SUB_BUSINESS = 'CREATING_SUB_BUSINESS';\nexport const CREATE_SUB_BUSINESS_SUCCESS = 'CREATE_SUB_BUSINESS_SUCCESS';\nexport const CREATE_SUB_BUSINESS_FAILED = 'CREATE_SUB_BUSINESS_FAILED';\n\nexport interface CreatingSubBusinessAction {\n type: typeof CREATING_SUB_BUSINESS;\n}\n\nexport interface CreateSubBusinessSuccessAction {\n type: typeof CREATE_SUB_BUSINESS_SUCCESS;\n subBusiness: SubBusiness;\n}\n\nexport interface CreateSubBusinessFailedAction {\n type: typeof CREATE_SUB_BUSINESS_FAILED;\n error: string;\n}\n\nexport type CreateSubBusinessTypes =\n | CreatingSubBusinessAction\n | CreateSubBusinessSuccessAction\n | CreateSubBusinessFailedAction;\n\nexport const UPDATING_SUB_BUSINESS = 'UPDATING_SUB_BUSINESS';\nexport const UPDATE_SUB_BUSINESS_SUCCESS = 'UPDATE_SUB_BUSINESS_SUCCESS';\nexport const ADDING_SUB_BUSINESS_PAYMENT_METHOD = 'ADDING_SUB_BUSINESS_PAYMENT_METHOD';\nexport const ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS = 'ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS';\nexport const ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED = 'ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED';\nexport const DELETING_SUB_BUSINESS_PAYMENT_METHOD = 'DELETING_SUB_BUSINESS_PAYMENT_METHOD';\nexport const DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS = 'DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS';\nexport const DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED = 'DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED';\nexport const UPDATE_SUB_BUSINESS_FAILED = 'UPDATE_SUB_BUSINESS_FAILED';\nexport const UPDATING_SUB_BUSINESS_PAYMENT_METHOD = 'UPDATING_SUB_BUSINESS_PAYMENT_METHOD';\nexport const RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE =\n 'RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE';\n\nexport interface UpdatingSubBusinessAction {\n type: typeof UPDATING_SUB_BUSINESS;\n}\n\nexport interface UpdateSubBusinessSuccessAction {\n type: typeof UPDATE_SUB_BUSINESS_SUCCESS;\n subBusiness: SubBusiness;\n}\n\nexport interface UpdateSubBusinessFailedAction {\n type: typeof UPDATE_SUB_BUSINESS_FAILED;\n error: string;\n}\n\nexport interface AddingSubBusinessPaymentMethodAction {\n type: typeof ADDING_SUB_BUSINESS_PAYMENT_METHOD;\n}\n\nexport interface AddSubBusinessPaymentMethodSuccesAction {\n type: typeof ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS;\n paymentMethod: PaymentMethod;\n}\n\nexport interface AddSubBusinessPaymentMethodFailedAction {\n type: typeof ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport interface DeletingSubBusinessPaymentMethodAction {\n type: typeof DELETING_SUB_BUSINESS_PAYMENT_METHOD;\n}\n\nexport interface DeleteSubBusinessPaymentMethodSuccessAction {\n type: typeof DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS;\n}\n\nexport interface DeleteSubBusinessPaymentMethodFailedAction {\n type: typeof DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED;\n error: string;\n}\n\nexport interface ResetUpdateSubBusinessPaymentMethodStateAction {\n type: typeof RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE;\n}\n\nexport type UpdateSubBusinessTypes =\n | UpdatingSubBusinessAction\n | UpdateSubBusinessSuccessAction\n | UpdateSubBusinessFailedAction\n | AddSubBusinessPaymentMethodSuccesAction\n | AddingSubBusinessPaymentMethodAction\n | AddSubBusinessPaymentMethodFailedAction\n | DeletingSubBusinessPaymentMethodAction\n | DeleteSubBusinessPaymentMethodSuccessAction\n | DeleteSubBusinessPaymentMethodFailedAction\n | ResetUpdateSubBusinessPaymentMethodStateAction;\n\nexport type SubBusinessDataTypes = FetchSubBusinessTypes | CreateSubBusinessTypes | UpdateSubBusinessTypes;\n","const BASE_URL = process.env.REACT_APP_API_URL;\nconst B2B_URL = process.env.REACT_APP_B2B_URL;\n\nexport { B2B_URL, BASE_URL };\n","import { BASE_URL } from '../services/config';\n\nexport const urlHelper = {\n parseQueryString,\n isPublicPage,\n isPrivatePage,\n buildImageUrl,\n getHubUrl,\n generateUrlBusinessName,\n isRegisterStep,\n};\n\nfunction parseQueryString(queryString?: string): any {\n if (!queryString) {\n queryString = window.location.search.substring(1);\n }\n\n const params: any = {};\n\n const queries = queryString.split('&');\n\n queries.forEach((indexQuery: string) => {\n const indexPair = indexQuery.split('=');\n\n const queryKey = indexPair[0];\n const queryValue = indexPair.length > 1 ? indexPair[1] : '';\n\n params[queryKey] = queryValue;\n });\n\n return params;\n}\n\nconst publicPages = [\n '/confirm',\n '/landing',\n '/loading',\n '/login',\n '/redirect',\n '/register',\n '/reset',\n '/result',\n '/user-faqs',\n '/request-issuers',\n '/first-payment-method',\n];\n\nconst privatePages = [\n '/business',\n '/configuration',\n '/dashboard',\n '/links',\n '/permanent-link',\n '/one-use-link',\n '/one-use-links',\n '/upload-csv-links',\n '/review-csv-links',\n '/on-the-fly-payments',\n '/payments',\n '/profile',\n '/users',\n '/split-payments',\n '/sub-business',\n '/user-contact',\n '/manage-clients',\n '/manage-users',\n '/verifications',\n '/user',\n '/change-password',\n];\n\nconst privatePagesWithParams = ['/payments', '/sub-business'];\n\nfunction isPublicPage(url: string): boolean {\n return publicPages.indexOf(url) > -1;\n}\n\nfunction isPrivatePage(url: string): boolean {\n if (url === '/register') {\n let urlVars = urlHelper.parseQueryString();\n return urlVars.step > 1;\n }\n\n if (privatePagesWithParams.some((page) => url.includes(page))) {\n return true;\n }\n\n return privatePages.indexOf(url) > -1;\n}\n\nfunction buildImageUrl(businessId: number): string {\n return `${BASE_URL}/business/${businessId}/picture`;\n}\n\nfunction getHubUrl() {\n return `${BASE_URL}/plexoHub`;\n}\n\nfunction generateUrlBusinessName(name: string) {\n return name\n .toLowerCase()\n .trim()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '') // Remove accents\n .replace(/[^a-z/\\- ]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with a single hyphen\n .replace(/empresa/g, '') // Remove the word \"empresa\"\n .substring(0, 30) // Limit to 30 characters\n .replace(/^-|-$/g, ''); // Remove leading and trailing hyphens\n}\n\nfunction isRegisterStep(url: string): boolean {\n return url.includes('register') || url.includes('first-payment-method') || url.includes('request-issuers');\n}\n","export enum Currency {\n PESO = 1,\n DOLAR = 2,\n}\n\nexport enum Status {\n SUCCESS = 0,\n ERROR = 1,\n}\n\nexport enum DateSpan {\n TODAY = 0,\n LAST7DAYS = 1,\n LAST15DAYS = 2,\n LAST30DAYS = 3,\n ALL = 4,\n CUSTOM = 5,\n}\n\nexport enum LinkTypeEnum {\n ONETIME = 1,\n PERMANENT = 2,\n ONTHEFLY = 3,\n ALL = 4,\n}\n\nexport enum LinkStatusEnum {\n Active = 1,\n Inactive = 2,\n}\n\nexport enum OrderFilterEnum {\n AscendingDate = 1,\n DescendingDate = 2,\n AscendingAmount = 3,\n DescendingAmount = 4,\n}\n\nexport enum PaymentStatusEnum {\n CREATED = 0,\n PENDING = 1,\n APPROVED = 2,\n REJECTED = 3,\n CANCELLED = 4,\n}\n\nexport enum PaymentsColumnSortEnum {\n Date = 1,\n Description = 2,\n Username = 3,\n BusinessName = 4,\n LinkType = 5,\n IssuerName = 6,\n PaymentsStatus = 7,\n Amount = 8,\n BillNumber = 9,\n}\n\nexport enum CurrencyEnum {\n All,\n PESO,\n DOLLAR,\n}\n\nexport enum SortEnum {\n ASC = 1,\n DESC = 2,\n}\n\nexport enum UserTypeEnum {\n OWNER = 1,\n COLLABORATOR = 2,\n SUPERADMIN = 3,\n}\n\nexport enum ValidUntil {\n NONE = 0,\n HALFHOUR = 1,\n ONEHOUR = 2,\n TWOHOURS = 3,\n DAYEND = 4,\n MONTHEND = 5,\n CUSTOM = 6,\n}\n\nexport enum PaymentNotificationTypeEnum {\n PAYMENT_OK = 1,\n PAYMENT_CANCELLATION = 2,\n}\n\nexport enum PaymentTypeEnum {\n Regular = 1,\n Split = 2,\n}\n\nexport enum SubBusinessStatusEnum {\n ACTIVE = 0,\n INACTIVE = 1,\n}\n\nexport enum NotificationChannelEnum {\n Ninguno = 1,\n Email = 2,\n}\n\nexport enum InclusionLawEnum {\n LAW19210 = 6,\n LAW17934 = 1,\n NONE = 0,\n}\n","import moment from 'moment';\nimport {\n CurrencyEnum,\n DateSpan,\n LinkTypeEnum,\n PaymentsColumnSortEnum,\n SortEnum,\n} from '../store/config/enums';\nimport { FetchLinksRequest, PaymentsFilters } from '../store/config/types';\n\nexport const filteringHelper = {\n getFiltersForLinks,\n getFiltersForPayments,\n getPaymentsFiltersString,\n getFiltersFromSearchParams,\n};\n\nfunction getFiltersForLinks(fetchRequest: FetchLinksRequest, type?: LinkTypeEnum): string {\n let filterString = getFiltersString(fetchRequest, type);\n filterString += getDatesFilterToAntiquity(fetchRequest.dateSpan, fetchRequest.from, fetchRequest.to);\n\n return filterString;\n}\n\nfunction getFiltersForPayments(fetchRequest: PaymentsFilters, type?: LinkTypeEnum): string {\n let filterString = getPaymentsFiltersString(fetchRequest, type);\n filterString += getDatesFilterToAntiquity(fetchRequest.dateSpan, fetchRequest.from, fetchRequest.to);\n\n return filterString;\n}\n\nfunction getFiltersString(fetchLinksRequest: FetchLinksRequest, type?: LinkTypeEnum): string {\n let filterString = '';\n\n if (fetchLinksRequest.currency !== undefined) {\n let currencyId = 0;\n\n if (fetchLinksRequest.currency.pesos && !fetchLinksRequest.currency.dollars) {\n currencyId = 1;\n } else if (!fetchLinksRequest.currency.pesos && fetchLinksRequest.currency.dollars) {\n currencyId = 2;\n }\n\n filterString += `¤cy=${currencyId}`;\n }\n\n if (fetchLinksRequest.term !== undefined) {\n filterString += `&filter=${fetchLinksRequest.term}`;\n }\n\n if (type) {\n filterString += `&idLinkType=${type}`;\n }\n\n if (fetchLinksRequest.issuer !== undefined) {\n filterString += `&issuerId=${fetchLinksRequest.issuer}`;\n }\n\n if (fetchLinksRequest.columnSort !== undefined) {\n filterString += `&columnSort=${fetchLinksRequest.columnSort}`;\n }\n\n if (fetchLinksRequest.sortDirection !== undefined) {\n filterString += `&sort=${fetchLinksRequest.sortDirection}`;\n }\n\n if (fetchLinksRequest.collaborator !== undefined) {\n filterString += `&creatorUserId=${fetchLinksRequest.collaborator}`;\n }\n\n if (fetchLinksRequest.onlyActive !== undefined) {\n filterString += `&onlyActive=${fetchLinksRequest.onlyActive}`;\n }\n\n return filterString;\n}\n\nfunction getPaymentsFiltersString(fetchPaymentsRequest: PaymentsFilters, type?: LinkTypeEnum): string {\n let filterString = '';\n\n if (fetchPaymentsRequest.currency !== undefined) {\n let currencyId = CurrencyEnum.All;\n\n if (fetchPaymentsRequest.currency.pesos && !fetchPaymentsRequest.currency.dollars) {\n currencyId = CurrencyEnum.PESO;\n } else if (!fetchPaymentsRequest.currency.pesos && fetchPaymentsRequest.currency.dollars) {\n currencyId = CurrencyEnum.DOLLAR;\n }\n\n filterString += `¤cy=${currencyId}`;\n }\n\n if (fetchPaymentsRequest.term !== undefined) {\n filterString += `&filter=${fetchPaymentsRequest.term}`;\n }\n\n if (type) {\n filterString += `&idLinkType=${type}`;\n }\n\n if (fetchPaymentsRequest.issuer !== undefined) {\n filterString += `&issuerId=${fetchPaymentsRequest.issuer}`;\n }\n\n if (fetchPaymentsRequest.paymentStatus !== undefined) {\n filterString += `&state=${fetchPaymentsRequest.paymentStatus}`;\n }\n\n if (fetchPaymentsRequest.columnSort !== undefined) {\n filterString += `&columnSort=${fetchPaymentsRequest.columnSort}`;\n }\n\n if (fetchPaymentsRequest.sortDirection !== undefined) {\n filterString += `&sort=${fetchPaymentsRequest.sortDirection}`;\n }\n\n if (fetchPaymentsRequest.collaborator !== undefined) {\n filterString += `&linkCreatorUserId=${fetchPaymentsRequest.collaborator}`;\n }\n\n return filterString;\n}\n\nfunction getDatesFilterToAntiquity(dateSpan?: DateSpan, from?: string, to?: string): string {\n const today = moment();\n\n switch (dateSpan) {\n case DateSpan.TODAY:\n return `&dateSpan=${DateSpan.TODAY}&from=${moment()\n .startOf('day')\n .toISOString()}&until=${today.toISOString()}`;\n\n case DateSpan.LAST7DAYS:\n return `&dateSpan=${DateSpan.LAST7DAYS}&from=${moment()\n .subtract(7, 'days')\n .toISOString()}&until=${today.toISOString()}`;\n\n case DateSpan.LAST15DAYS:\n return `&dateSpan=${DateSpan.LAST15DAYS}&from=${moment()\n .subtract(15, 'days')\n .toISOString()}&until=${today.toISOString()}`;\n\n case DateSpan.LAST30DAYS:\n return `&dateSpan=${DateSpan.LAST30DAYS}&from=${moment()\n .subtract(30, 'days')\n .toISOString()}&until=${today.toISOString()}`;\n\n case DateSpan.ALL:\n return '';\n\n case DateSpan.CUSTOM:\n return `&from=${from}&until=${to}`;\n\n default:\n return '';\n }\n}\n\nfunction getDateSpanFromAntiquity(from: string): DateSpan {\n const today = moment();\n const days = today.diff(from, 'days');\n let dateSpan: DateSpan;\n\n switch (days) {\n case 0:\n dateSpan = DateSpan.TODAY;\n break;\n case 7:\n dateSpan = DateSpan.LAST7DAYS;\n break;\n case 15:\n dateSpan = DateSpan.LAST15DAYS;\n break;\n case 30:\n dateSpan = DateSpan.LAST30DAYS;\n break;\n default:\n dateSpan = DateSpan.LAST7DAYS;\n }\n\n return dateSpan;\n}\n\nfunction getFiltersFromSearchParams(\n searchParams: URLSearchParams,\n previousFilters: PaymentsFilters | null,\n): PaymentsFilters {\n const filters: PaymentsFilters = previousFilters || {};\n\n if (searchParams.has('currency')) {\n const currency = searchParams.get('currency');\n filters.currency = {\n pesos: currency === '1' || currency === '0',\n dollars: currency === '2' || currency === '0',\n };\n }\n\n if (searchParams.has('issuerId') && searchParams.get('issuerId') !== '') {\n filters.issuer = Number(searchParams.get('issuerId'));\n }\n\n if (searchParams.has('state')) {\n filters.paymentStatus = Number(searchParams.get('state'));\n }\n\n if (searchParams.has('columnSort')) {\n filters.columnSort = searchParams.get('columnSort') as unknown as PaymentsColumnSortEnum;\n }\n\n if (searchParams.has('sort')) {\n filters.sortDirection = searchParams.get('sort') as unknown as SortEnum;\n }\n\n if (searchParams.has('linkCreatorUserId')) {\n filters.collaborator = searchParams.get('linkCreatorUserId') || '';\n }\n\n if (searchParams.has('from') && searchParams.has('until') && !searchParams.has('dateSpan')) {\n filters.dateSpan = DateSpan.CUSTOM;\n filters.from = searchParams.get('from') || '';\n filters.to = searchParams.get('until') || '';\n } else if (searchParams.has('from')) {\n filters.dateSpan = getDateSpanFromAntiquity(searchParams.get('from')!);\n }\n\n return filters;\n}\n\nexport const getColumnMap = (columnMap: K, columnId: T) => {\n if (columnId in columnMap) {\n const columnEnum = columnMap[columnId as unknown as keyof K];\n return columnEnum;\n }\n return undefined;\n};\n\nexport const getColumnIdFromColumnMap = , T extends string | number>(\n columnMap: K,\n columnEnum: T,\n): keyof K | undefined => {\n for (const key in columnMap) {\n if (Object.hasOwnProperty.call(columnMap, key) && columnMap[key] === columnEnum) {\n return key as keyof K;\n }\n }\n return undefined;\n};\n\nexport const getSortDirectionFromEnum = (sortEnum: SortEnum) => {\n return sortEnum === SortEnum.ASC ? 'asc' : 'desc';\n};\n","export const errorHelper = {\n getErrorString,\n};\n\nfunction getErrorString(code: number, message: string): string {\n switch (code) {\n //Businesses\n case 300:\n return 'La empresa que buscas no existe.';\n case 301:\n return 'El nombre seleccionado está siendo usado por otra empresa.';\n //Identity\n case 461:\n return 'Ya existe una cuenta con el email seleccionado.';\n case 462:\n return 'El email o la contraseña ingresados no son correctos.';\n case 463:\n return 'Error al cambiar la contraseña.';\n case 465:\n return message.includes('Invalid date')\n ? 'La hora de vencimiento del link no puede ser previa a la actual'\n : 'El link ingresado no es válido.';\n case 466:\n return 'El código ingresado no es válido.';\n case 468:\n return 'Este email ya ha sido verificado.';\n case 469:\n return 'No existe el usuario indicado.';\n case 470:\n return 'El email indicado no se ha verificado aún.';\n //Images\n case 510:\n return 'Se ingresó un archivo vacío.';\n case 511:\n return 'Solo se admiten imágenes en formatos .png y .jpeg.';\n case 512:\n return 'El tamaño de la imagen debe ser menor a 5MB.';\n //Users\n case 601:\n return 'El usuario ya existe.';\n case 602:\n return 'El usuario no existe.';\n case 603:\n return 'El usuario no tiene permisos para realizar esta operación.';\n //Links\n case 700:\n return 'El estado del link no es válido.';\n case 701:\n return 'No pueden crearse links de un solo uso para esta empresa.';\n //Commerces\n case 800:\n return 'El comercio seleccionado no existe.';\n case 801:\n return 'Ya existe un comercio con este medio de pago para esta empresa.';\n //Issuer\n case 900:\n return 'El medio de pago seleccionado no existe.';\n //Payments\n case 1000:\n return 'No se encontró el pago seleccionado.';\n case 1001:\n return 'El valor de IVA indicado no es válido.';\n\n default:\n return 'Ha ocurrido un error inesperado';\n }\n}\n","import Cookies from 'universal-cookie';\nimport { errorHelper } from '../helpers/errorHelper';\n\nexport interface HttpResponse extends Response {\n parsedBody?: T;\n stringBody?: string;\n}\n\nconst cookies = new Cookies();\n\nasync function http(request: RequestInfo): Promise> {\n const response: HttpResponse = await fetch(request);\n await response.text().then((body) => {\n try {\n response.parsedBody = JSON.parse(body);\n } catch (ex) {\n response.stringBody = body;\n }\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n cookies.remove('token');\n window.location.pathname = '/login';\n }\n if (response.parsedBody !== undefined && 'errorCode' in response.parsedBody) {\n const code = (response.parsedBody as unknown as { errorCode: string })['errorCode'];\n const message = (response.parsedBody as unknown as { message: string })['message'];\n let error =\n Number(code) < 1200 ? errorHelper.getErrorString(Number(code), message) : `Error ${code}: ${message}`;\n throw error;\n }\n\n throw new Error(response.statusText);\n }\n\n return response;\n}\n\nexport async function get(\n path: string,\n args: RequestInit = {},\n headers: Record = {},\n): Promise> {\n const defaultHeaders = {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${new Cookies().get('token')}`,\n };\n\n const mergedHeaders = new Headers({ ...defaultHeaders, ...headers });\n\n const requestOptions: RequestInit = {\n method: 'get',\n headers: mergedHeaders,\n ...args,\n };\n\n return await http(new Request(path, requestOptions));\n}\n\nexport async function post(\n path: string,\n body: any,\n args: RequestInit = {\n method: 'post',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${cookies.get('token')}`,\n }),\n body: JSON.stringify(body),\n },\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function postForm(\n path: string,\n body: FormData,\n args: RequestInit = {\n method: 'post',\n headers: new Headers({\n Authorization: `Bearer ${cookies.get('token')}`,\n }),\n body,\n },\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function put(\n path: string,\n body: any,\n args: RequestInit = {\n method: 'put',\n headers: new Headers({\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${cookies.get('token')}`,\n }),\n body: JSON.stringify(body),\n },\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function putForm(\n path: string,\n body: FormData,\n args: RequestInit = {\n method: 'put',\n headers: new Headers({\n Authorization: `Bearer ${cookies.get('token')}`,\n }),\n body,\n },\n): Promise> {\n return await http(new Request(path, args));\n}\n\nexport async function httpDelete(\n path: string,\n body?: any,\n args: RequestInit = {\n method: 'delete',\n headers: new Headers({\n Authorization: `Bearer ${cookies.get('token')}`,\n 'Content-Type': 'application/json',\n }),\n body: body ? JSON.stringify(body) : undefined,\n },\n): Promise> {\n return await http(new Request(path, args));\n}\n","import { BASE_URL } from './config';\n\nexport const endpoints = {\n login: `${BASE_URL}/auth/login`,\n resetPassword: `${BASE_URL}/auth/forgetPassword`,\n confirmResetPassword: `${BASE_URL}/auth/validateRecoverPasswordToken`,\n registerUser: `${BASE_URL}/user`,\n confirmEmail: `${BASE_URL}/user/confirmation`,\n registerBusiness: `${BASE_URL}/auth/business`,\n changeUserPassword: `${BASE_URL}/user/password`,\n account: `${BASE_URL}/user`,\n modifyCredentials: `${BASE_URL}/user/credentials`,\n resendConfirmation: `${BASE_URL}/user/unconfirmed`,\n unconfirmed: `${BASE_URL}/user/unconfirmed`,\n verify: `${BASE_URL}/user/verify`,\n collaborators: `${BASE_URL}/user`,\n business: `${BASE_URL}/business`,\n subbusiness: `${BASE_URL}/subbusiness`,\n issuers: `${BASE_URL}/issuers`,\n links: `${BASE_URL}/links`,\n payments: `${BASE_URL}/payments`,\n beginPayment: `${BASE_URL}/payments/beginPay`,\n emailVerification: `${BASE_URL}/user/verification`,\n installments: `${BASE_URL}/installments`,\n clients: `${BASE_URL}/business`,\n billing: `${BASE_URL}/electronicbilling`,\n notifications: `${BASE_URL}/notification`,\n subBusiness: `${BASE_URL}/subbusiness`,\n csv: `${BASE_URL}/links/csv`,\n};\n","import { filteringHelper } from '../helpers/filteringHelper';\nimport {\n BaseResponse,\n BeginPaymentRequest,\n BeginPaymentResponse,\n ConfirmPaymentResponse,\n FetchPaymentRequest,\n FetchPaymentsRequest,\n FinalizePaymentRequest,\n Payment,\n PaymentResponse,\n} from '../store/config/types';\nimport { get, post } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const paymentsService = {\n fetchPayments,\n beginPayment,\n getPayment,\n confirmPayment,\n cancelPayment,\n};\n\nasync function fetchPayments(\n request: FetchPaymentsRequest,\n businessId?: number,\n): Promise {\n const filterString = filteringHelper.getFiltersForPayments(request);\n return await get(\n `${endpoints['payments']}?${businessId && businessId > 0 ? `businessId=${businessId}&` : ''}page=${\n request.page\n }&limit=${request.limit}&filter=${request.term ?? ''}${filterString}`,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function beginPayment(\n beginPaymentRequest: BeginPaymentRequest,\n): Promise {\n return await post(`${endpoints['beginPayment']}`, beginPaymentRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function getPayment({ paymentId, businessId }: FetchPaymentRequest): Promise {\n const additionalHeaders: Record = {};\n\n if (businessId) {\n additionalHeaders.businessId = businessId.toString();\n }\n\n return await get(`${endpoints['payments']}/${paymentId}`, {}, additionalHeaders)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function confirmPayment(\n finalizePaymentRequest: FinalizePaymentRequest,\n): Promise {\n return await post(endpoints['payments'], finalizePaymentRequest)\n .then((response) => {\n return response.parsedBody!;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function cancelPayment(plexoReferenceId: string, businessId: number): Promise {\n return await post(`${endpoints['payments']}/cancel`, { plexoReferenceId, businessId })\n .then((response) => {\n return response.parsedBody!;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { paymentsService } from '../../services/payments.service';\nimport {\n ADD_DASHBOARD_PAYMENTS,\n ADD_PAYMENTS,\n BEGINNING_PAYMENT,\n BEGIN_PAYMENT_ERROR,\n BEGIN_PAYMENT_SUCCESS,\n BeginPaymentTypes,\n CANCELLING_PAYMENT,\n CANCEL_PAYMENT_ERROR,\n CANCEL_PAYMENT_SUCCESS,\n CLEAR_INSTRUMENT,\n CONFIRMING_PAYMENT,\n CONFIRM_PAYMENT_ERROR,\n CONFIRM_PAYMENT_SUCCESS,\n CancelPaymentTypes,\n ClearInstrumentTypes,\n ConfirmPaymentTypes,\n FETCHING_PAYMENTS,\n FETCH_PAYMENTS_ERROR,\n FetchPaymentsTypes,\n GETTING_PAYMENT,\n GET_PAYMENT_ERROR,\n GET_PAYMENT_SUCCESS,\n GetPaymentTypes,\n LOAD_PAYMENT_FILTERS,\n LoadPaymentsFiltersAction,\n REGISTER_CALLBACK_FAILED,\n RegisterCallbackFailedType,\n TOGGLE_RESET_CLIENT_FILTER,\n TRANSACTION_CALLBACK,\n TransactionCallbackType,\n VISA_REDIRECTED,\n VisaRedirectedType,\n} from '../config/ActionTypes';\nimport {\n BeginPaymentRequest,\n BeginPaymentResponse,\n ConfirmPaymentResponse,\n FinalizePaymentRequest,\n Payment,\n PaymentResponse,\n PaymentsFilters,\n TransactionStatus,\n} from '../config/types';\n\n//#region Fetch payments\n\nexport const fetchPayments =\n (filters: PaymentsFilters, page: number, limit: number, businessId: number, isDashboard: boolean = false) =>\n (dispatch: Dispatch) => {\n dispatch(fetchingPayments());\n\n return paymentsService.fetchPayments({ ...filters, page, limit }, businessId).then(\n (response) => {\n if (isDashboard) {\n dispatch(addDashboardPayments(response!));\n } else {\n dispatch(addPayments(response!));\n }\n },\n (error) => {\n dispatch(fetchPaymentsError(error));\n },\n );\n };\n\nconst fetchingPayments = (): FetchPaymentsTypes => ({\n type: FETCHING_PAYMENTS,\n});\n\nexport const loadPaymentsFilters = (\n filters: PaymentsFilters,\n page: number,\n limit: number,\n businessId?: number,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(loadFilters(filters));\n\n return paymentsService\n .fetchPayments(\n {\n ...filters,\n page,\n limit,\n },\n businessId,\n )\n .then(\n (response) => {\n dispatch(addPayments(response!));\n },\n (error) => {\n dispatch(fetchPaymentsError(error));\n },\n );\n };\n};\n\nexport const loadFilters = (filters: PaymentsFilters): LoadPaymentsFiltersAction => ({\n type: LOAD_PAYMENT_FILTERS,\n filters: filters,\n});\n\nconst addPayments = (paymentResponse: PaymentResponse): FetchPaymentsTypes => ({\n type: ADD_PAYMENTS,\n paymentResponse,\n});\n\nconst addDashboardPayments = (paymentResponse: PaymentResponse): FetchPaymentsTypes => ({\n type: ADD_DASHBOARD_PAYMENTS,\n paymentResponse,\n});\n\nconst fetchPaymentsError = (error: string): FetchPaymentsTypes => ({\n type: FETCH_PAYMENTS_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Begin payment\n\nexport const beginPayment =\n (beginPaymentRequest: BeginPaymentRequest) => (dispatch: Dispatch) => {\n dispatch(beginningPayment());\n\n return paymentsService.beginPayment(beginPaymentRequest).then(\n (response) => {\n console.log(response);\n dispatch(beginPaymentSuccess(response!, beginPaymentRequest.paymentUrl));\n },\n (error) => {\n dispatch(beginPaymentError(error));\n },\n );\n };\n\nconst beginningPayment = (): BeginPaymentTypes => ({\n type: BEGINNING_PAYMENT,\n});\n\nconst beginPaymentSuccess = (\n confirmPaymentResponse: BeginPaymentResponse,\n paymentUrl: string,\n): BeginPaymentTypes => ({\n type: BEGIN_PAYMENT_SUCCESS,\n confirmPaymentResponse,\n paymentUrl,\n});\n\nconst beginPaymentError = (error: string): BeginPaymentTypes => ({\n type: BEGIN_PAYMENT_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Get payment\n\nexport const getPayment =\n (paymentId: string, businessId?: number) => (dispatch: Dispatch) => {\n dispatch(gettingPayment());\n\n return paymentsService.getPayment({ paymentId, businessId }).then(\n (response) => {\n dispatch(getPaymentSuccess(response!));\n },\n (error) => {\n dispatch(getPaymentError(error));\n },\n );\n };\n\nconst gettingPayment = (): GetPaymentTypes => ({\n type: GETTING_PAYMENT,\n});\n\nconst getPaymentSuccess = (paymentResponse: Payment): GetPaymentTypes => ({\n type: GET_PAYMENT_SUCCESS,\n paymentResponse,\n});\n\nconst getPaymentError = (error: string): GetPaymentTypes => ({\n type: GET_PAYMENT_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Clear instrument\n\nexport const clearInstrument = (): ClearInstrumentTypes => ({\n type: CLEAR_INSTRUMENT,\n});\n\n//#endregion\n\n//#region Confirm payment\n\nexport const confirmPayment =\n (finalizePaymentRequest: FinalizePaymentRequest) => (dispatch: Dispatch) => {\n dispatch(confirmingPayment());\n\n return paymentsService.confirmPayment(finalizePaymentRequest).then(\n (response) => {\n dispatch(confirmPaymentSuccess(response!));\n },\n (error) => {\n dispatch(confirmPaymentError(error));\n },\n );\n };\n\nconst confirmingPayment = (): ConfirmPaymentTypes => ({\n type: CONFIRMING_PAYMENT,\n});\n\nconst confirmPaymentSuccess = (response: ConfirmPaymentResponse): ConfirmPaymentTypes => ({\n type: CONFIRM_PAYMENT_SUCCESS,\n response,\n});\n\nconst confirmPaymentError = (error: string): ConfirmPaymentTypes => ({\n type: CONFIRM_PAYMENT_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Cancel payment\n\nexport const cancelPayment =\n (plexoReferenceId: string, businessId: number) => (dispatch: Dispatch) => {\n dispatch(cancellingPayment());\n\n return paymentsService.cancelPayment(plexoReferenceId, businessId).then(\n (response) => {\n dispatch(cancelPaymentSuccess(plexoReferenceId));\n },\n (error) => {\n dispatch(cancelPaymentError(error));\n },\n );\n };\n\nconst cancellingPayment = (): CancelPaymentTypes => ({\n type: CANCELLING_PAYMENT,\n});\n\nconst cancelPaymentSuccess = (plexoReferenceId: string): CancelPaymentTypes => ({\n type: CANCEL_PAYMENT_SUCCESS,\n plexoReferenceId,\n});\n\nconst cancelPaymentError = (error: string): CancelPaymentTypes => ({\n type: CANCEL_PAYMENT_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Visa Redirect\n\nexport const visaRedirect = (paymentId: string): VisaRedirectedType => ({\n type: VISA_REDIRECTED,\n paymentId,\n});\n\n//#endregion\n\n//#region TransactionCallback\n\nexport const transactionCallback = (response: TransactionStatus): TransactionCallbackType => ({\n type: TRANSACTION_CALLBACK,\n response,\n});\n\n//#endregion\n\n//#region RegisterCallbackFailed\n\nexport const registerCallbackFailed = (response: boolean): RegisterCallbackFailedType => ({\n type: REGISTER_CALLBACK_FAILED,\n response,\n});\n\n//#endregion\n\n//#region ResetClientFilerTrigger\n\nexport const toggleResetClientFilter = () => ({\n type: TOGGLE_RESET_CLIENT_FILTER,\n});\n\n//#endregion\n","import * as signalR from '@microsoft/signalr';\nimport * as ActionTypes from '../config/ActionTypes';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { Middleware } from 'redux';\nimport { RootState, TransactionStatus } from '../config/types';\nimport { registerCallbackFailed, transactionCallback } from '../action_creators/payments.actions';\n\nconst startSignalRConnection = async (\n connection: signalR.HubConnection,\n paymentId: string,\n message: string,\n) => {\n return await connection\n .start()\n .then(() => {\n connection.send(message, paymentId);\n return connection;\n })\n .catch((error) => {\n console.log('signalR error: ' + error);\n });\n};\n\nconst signalRMiddleware: Middleware<\n {}, // legacy type parameter added to satisfy interface signature\n RootState\n> = (store) => (next) => (action) => {\n const connectionHub = urlHelper.getHubUrl();\n const protocol = new signalR.JsonHubProtocol();\n //const transport = signalR.HttpTransportType.WebSockets;\n\n const options = {\n //transport,\n };\n\n const connection = new signalR.HubConnectionBuilder()\n .withUrl(connectionHub, options)\n .configureLogging(signalR.LogLevel.Critical)\n .withAutomaticReconnect()\n .withHubProtocol(protocol)\n .build();\n\n //connection.onclose(() => setTimeout(startSignalRConnection(connection), 5000));\n\n connection.on('RegisterCallback', (success: boolean) => {\n console.log('RegisterCallback received: ' + success);\n if (!success) {\n next(registerCallbackFailed(success));\n }\n });\n\n connection.on('TransactionCallback', (transaction: TransactionStatus) => {\n console.log('TransactionCallback received');\n console.log(transaction);\n connection.send('PlexoDisconnect');\n connection.stop();\n next(transactionCallback(transaction));\n });\n\n if (action.type === ActionTypes.BEGIN_PAYMENT_SUCCESS) {\n let paymentId = action.confirmPaymentResponse.paymentId;\n\n startSignalRConnection(connection, paymentId, 'PlexoInit');\n }\n\n if (action.type === ActionTypes.VISA_REDIRECTED) {\n // got paymentId from query string\n console.log('VISA REDIRECTED, starting signalR connection');\n startSignalRConnection(connection, action.paymentId, 'VisaStatus');\n }\n\n return next(action);\n};\n\nexport default signalRMiddleware;\n","import {\n AuthDataTypes,\n BusinessDataTypes,\n CHANGE_CREDENTIALS_ERROR,\n CHANGE_CREDENTIALS_SUCCESS,\n CHANGE_USER_PASSWORD_ERROR,\n CHANGE_USER_PASSWORD_SUCCESS,\n CHANGING_CREDENTIALS,\n CHANGING_USER_PASSWORD,\n CONFIRMING_RESET_PASSWORD,\n CONFIRM_RESET_PASSWORD_ERROR,\n CONFIRM_RESET_PASSWORD_SUCCESS,\n CREATE_BUSINESS_SUCCESS,\n CREATE_PAYMENT_METHOD_SUCCESS,\n DELETE_PAYMENT_METHOD_SUCCESS,\n GETTING_ACCOUNT,\n GETTING_UNCONFIRMED_USERS,\n GET_ACCOUNT_ERROR,\n GET_ACCOUNT_SUCCESS,\n GET_UNCONFIRMED_USERS_ERROR,\n GET_UNCONFIRMED_USERS_SUCCESS,\n LOGGING_IN,\n LOGIN_ERROR,\n LOGIN_SUCCESS,\n LOGOUT,\n LogoutActionTypes,\n PaymentMethodsDataTypes,\n REGISTERING_BUSINESS,\n REGISTERING_USER,\n REGISTER_BUSINESS_ERROR,\n REGISTER_BUSINESS_SUCCESS,\n REGISTER_USER_ERROR,\n REGISTER_USER_SUCCESS,\n RESENDING_CONFIRMATION,\n RESEND_CONFIRMATION_FAILED,\n RESEND_CONFIRMATION_SUCCESS,\n RESETING_PASSWORD,\n RESET_PASSWORD_ERROR,\n RESET_PASSWORD_SUCCESS,\n UPDATE_ACCOUNT_ERROR,\n UPDATE_ACCOUNT_SUCCESS,\n UPDATE_BUSINESS_SUCCESS,\n UPDATING_ACCOUNT,\n VALIDATE_REGISTER_ERROR,\n VALIDATE_REGISTER_SUCCESS,\n VALIDATING_REGISTER,\n VERIFYING_USER,\n VERIFY_USER_ERROR,\n VERIFY_USER_SUCCESS,\n} from '../config/ActionTypes';\nimport { UserTypeEnum } from '../config/enums';\nimport { AuthState, User } from '../config/types';\n\nexport const initialState: AuthState = {\n loggingIn: false,\n loggedIn: false,\n user: null,\n logInErrorMessage: null,\n resetingPassword: false,\n resetPasswordSuccess: false,\n resetPasswordErrorMessage: null,\n confirmingResetPassword: false,\n confirmResetPasswordSuccess: null,\n confirmResetPasswordErrorMessage: null,\n registeringUser: false,\n registeredUser: null,\n registerUserSuccess: false,\n registerUserErrorMessage: null,\n validatingRegister: false,\n validateRegisterSuccess: false,\n validateRegisterErrorMessage: null,\n registeringBusiness: false,\n registeredBusiness: null,\n registerBusinessSuccess: false,\n registerBusinessErrorMessage: null,\n gettingAccount: false,\n account: null,\n getAccountErrorMessage: null,\n updatingAccount: false,\n updateAccountSuccess: false,\n updateAccountErrorMessage: null,\n changingCredentials: false,\n changeCredentialsSuccess: false,\n changeCredentialsErrorMessage: null,\n changingUserPassword: false,\n changeUserPasswordSuccess: false,\n changeUserPasswordErrorMessage: null,\n gettingUnconfirmedUsers: false,\n unconfirmedUsers: null,\n getUnconfirmedUsersErrorMessage: null,\n resendingConfirmation: false,\n resendConfirmationSuccess: false,\n resendConfirmationErrorMessage: null,\n verifyingUser: false,\n verifyUserSuccess: false,\n verifyUserErrorMessage: null,\n};\n\nexport function authReducer(\n state = initialState,\n action: AuthDataTypes | BusinessDataTypes | PaymentMethodsDataTypes | LogoutActionTypes,\n): AuthState {\n switch (action.type) {\n case LOGGING_IN:\n return {\n ...state,\n loggingIn: true,\n loggedIn: false,\n user: null,\n logInErrorMessage: null,\n };\n\n case LOGIN_SUCCESS:\n return {\n ...state,\n loggingIn: false,\n loggedIn: true,\n account: action.account,\n logInErrorMessage: null,\n };\n\n case LOGIN_ERROR:\n return {\n ...state,\n loggingIn: false,\n loggedIn: false,\n user: null,\n logInErrorMessage: action.error,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n case RESETING_PASSWORD:\n return {\n ...state,\n resetingPassword: true,\n resetPasswordSuccess: false,\n resetPasswordErrorMessage: null,\n };\n\n case RESET_PASSWORD_SUCCESS:\n return {\n ...state,\n resetingPassword: false,\n resetPasswordSuccess: true,\n resetPasswordErrorMessage: null,\n };\n\n case RESET_PASSWORD_ERROR:\n return {\n ...state,\n resetingPassword: false,\n resetPasswordSuccess: false,\n resetPasswordErrorMessage: action.error,\n };\n\n case CONFIRMING_RESET_PASSWORD:\n return {\n ...state,\n confirmingResetPassword: true,\n confirmResetPasswordSuccess: null,\n confirmResetPasswordErrorMessage: null,\n };\n\n case CONFIRM_RESET_PASSWORD_SUCCESS:\n return {\n ...state,\n confirmingResetPassword: false,\n confirmResetPasswordSuccess: action.response,\n confirmResetPasswordErrorMessage: null,\n };\n\n case CONFIRM_RESET_PASSWORD_ERROR:\n return {\n ...state,\n confirmingResetPassword: false,\n confirmResetPasswordSuccess: null,\n confirmResetPasswordErrorMessage: action.error,\n };\n\n case REGISTERING_USER:\n return {\n ...state,\n registeringUser: true,\n registeredUser: null,\n registerUserSuccess: false,\n registerUserErrorMessage: null,\n };\n\n case REGISTER_USER_SUCCESS:\n return {\n ...state,\n registeringUser: false,\n registeredUser: action.user,\n registerUserSuccess: true,\n registerUserErrorMessage: null,\n };\n\n case REGISTER_USER_ERROR:\n return {\n ...state,\n registeringUser: false,\n registeredUser: null,\n registerUserSuccess: false,\n registerUserErrorMessage: action.error,\n };\n\n case VALIDATING_REGISTER:\n return {\n ...state,\n validatingRegister: true,\n validateRegisterSuccess: false,\n validateRegisterErrorMessage: null,\n };\n\n case VALIDATE_REGISTER_SUCCESS:\n return {\n ...state,\n validatingRegister: false,\n validateRegisterSuccess: true,\n validateRegisterErrorMessage: null,\n };\n\n case VALIDATE_REGISTER_ERROR:\n return {\n ...state,\n validatingRegister: false,\n validateRegisterSuccess: false,\n validateRegisterErrorMessage: action.error,\n };\n\n case REGISTERING_BUSINESS:\n return {\n ...state,\n registeringBusiness: true,\n registeredBusiness: null,\n registerBusinessSuccess: false,\n registerBusinessErrorMessage: null,\n };\n\n case REGISTER_BUSINESS_SUCCESS:\n return {\n ...state,\n registeringBusiness: false,\n registeredBusiness: action.business,\n registerBusinessSuccess: true,\n registerBusinessErrorMessage: null,\n };\n\n case REGISTER_BUSINESS_ERROR:\n return {\n ...state,\n registeringBusiness: false,\n registeredBusiness: null,\n registerBusinessSuccess: false,\n registerBusinessErrorMessage: action.error,\n };\n\n case GETTING_ACCOUNT:\n return {\n ...state,\n loggingIn: true,\n gettingAccount: true,\n account: null,\n getAccountErrorMessage: null,\n };\n\n case GET_ACCOUNT_SUCCESS:\n return {\n ...state,\n loggedIn: true,\n gettingAccount: false,\n account: action.account,\n getAccountErrorMessage: null,\n };\n\n case GET_ACCOUNT_ERROR:\n return {\n ...state,\n gettingAccount: false,\n account: null,\n getAccountErrorMessage: action.error,\n };\n\n case UPDATING_ACCOUNT:\n return {\n ...state,\n updatingAccount: true,\n updateAccountSuccess: false,\n updateAccountErrorMessage: null,\n };\n\n case UPDATE_ACCOUNT_SUCCESS:\n const newAccount: User = {\n ...action.account,\n business: {\n ...state.account!.business,\n },\n };\n\n return {\n ...state,\n updatingAccount: false,\n updateAccountSuccess: true,\n account: newAccount,\n updateAccountErrorMessage: null,\n };\n\n case UPDATE_ACCOUNT_ERROR:\n return {\n ...state,\n updatingAccount: false,\n updateAccountSuccess: false,\n updateAccountErrorMessage: action.error,\n };\n\n case CHANGING_CREDENTIALS:\n return {\n ...state,\n changingCredentials: true,\n changeCredentialsSuccess: false,\n changeCredentialsErrorMessage: null,\n };\n\n case CHANGE_CREDENTIALS_SUCCESS:\n return {\n ...state,\n changingCredentials: false,\n changeCredentialsSuccess: true,\n changeCredentialsErrorMessage: null,\n };\n\n case CHANGE_CREDENTIALS_ERROR:\n return {\n ...state,\n changingCredentials: false,\n changeCredentialsSuccess: false,\n changeCredentialsErrorMessage: action.error,\n };\n\n case CHANGING_USER_PASSWORD:\n return {\n ...state,\n changingUserPassword: true,\n changeUserPasswordSuccess: false,\n changeUserPasswordErrorMessage: null,\n };\n\n case CHANGE_USER_PASSWORD_SUCCESS:\n return {\n ...state,\n changingUserPassword: false,\n changeUserPasswordSuccess: true,\n changeUserPasswordErrorMessage: null,\n };\n\n case CHANGE_USER_PASSWORD_ERROR:\n return {\n ...state,\n changingUserPassword: false,\n changeUserPasswordSuccess: false,\n changeUserPasswordErrorMessage: action.error,\n };\n\n case UPDATE_BUSINESS_SUCCESS:\n if (state.account) {\n let newAccount: User = {\n ...state.account,\n business: {\n ...action.business,\n hasCommerces: state.account.business.hasCommerces,\n },\n };\n\n return {\n ...state,\n account: newAccount,\n };\n } else {\n return { ...state };\n }\n\n case CREATE_PAYMENT_METHOD_SUCCESS:\n if (\n state.account &&\n state.account.type !== UserTypeEnum.SUPERADMIN &&\n !state.account.business.hasCommerces\n ) {\n let accountWithCommerce: User = {\n ...state.account,\n business: {\n ...state.account.business,\n hasCommerces: true,\n },\n };\n\n return {\n ...state,\n account: accountWithCommerce,\n };\n } else {\n return { ...state };\n }\n\n case DELETE_PAYMENT_METHOD_SUCCESS:\n const account = state.account;\n if (account && account.business && account.business.hasCommerces && action.isLast) {\n let accountWithoutPaymentMethods: User = {\n ...account,\n business: {\n ...account.business,\n hasCommerces: false,\n },\n };\n\n return {\n ...state,\n account: accountWithoutPaymentMethods,\n };\n } else {\n return { ...state };\n }\n\n case CREATE_BUSINESS_SUCCESS:\n if (state.account) {\n return {\n ...state,\n account: {\n ...state.account,\n business: action.business,\n },\n };\n } else {\n return { ...state };\n }\n\n case GETTING_UNCONFIRMED_USERS:\n return {\n ...state,\n gettingUnconfirmedUsers: true,\n unconfirmedUsers: null,\n getUnconfirmedUsersErrorMessage: null,\n };\n\n case GET_UNCONFIRMED_USERS_SUCCESS:\n return {\n ...state,\n gettingUnconfirmedUsers: false,\n unconfirmedUsers: action.users.users,\n getUnconfirmedUsersErrorMessage: null,\n };\n\n case GET_UNCONFIRMED_USERS_ERROR:\n return {\n ...state,\n gettingUnconfirmedUsers: false,\n unconfirmedUsers: null,\n getUnconfirmedUsersErrorMessage: action.error,\n };\n\n case RESENDING_CONFIRMATION: {\n return {\n ...state,\n resendingConfirmation: true,\n resendConfirmationSuccess: false,\n resendConfirmationErrorMessage: null,\n };\n }\n\n case RESEND_CONFIRMATION_SUCCESS: {\n return {\n ...state,\n resendingConfirmation: false,\n resendConfirmationSuccess: true,\n resendConfirmationErrorMessage: null,\n };\n }\n\n case RESEND_CONFIRMATION_FAILED: {\n return {\n ...state,\n resendingConfirmation: false,\n resendConfirmationSuccess: false,\n resendConfirmationErrorMessage: action.error,\n };\n }\n\n case VERIFYING_USER: {\n return {\n ...state,\n verifyingUser: true,\n verifyUserSuccess: false,\n verifyUserErrorMessage: null,\n };\n }\n\n case VERIFY_USER_SUCCESS: {\n return {\n ...state,\n verifyingUser: false,\n verifyUserSuccess: true,\n verifyUserErrorMessage: null,\n };\n }\n\n case VERIFY_USER_ERROR: {\n return {\n ...state,\n verifyingUser: false,\n verifyUserSuccess: false,\n verifyUserErrorMessage: action.error,\n };\n }\n\n default:\n return state;\n }\n}\n","import {\n ADD_BUSINESSES,\n BusinessDataTypes,\n CREATE_BUSINESS_FAILED,\n CREATE_BUSINESS_SUCCESS,\n CREATING_BUSINESS,\n FETCHING_BUSINESSES,\n FETCH_BUSINESSES_FAILED,\n GETTING_BUSINESS,\n GETTING_BUSINESS_SUB_BUSINESSES,\n GET_BUSINESS_FAILED,\n GET_BUSINESS_SUB_BUSINESSES_FAILED,\n GET_BUSINESS_SUB_BUSINESSES_SUCCESS,\n GET_BUSINESS_SUCCESS,\n LOGOUT,\n LogoutActionTypes,\n UPDATE_BUSINESS_FAILED,\n UPDATE_BUSINESS_SUCCESS,\n UPDATE_SECRET_FAILED,\n UPDATE_SECRET_SUCCESS,\n UPDATING_BUSINESS,\n UPDATING_SECRET,\n} from '../config/ActionTypes';\nimport { BusinessState } from '../config/types';\n\nexport const initialState: BusinessState = {\n loadingBusinesses: false,\n businesses: null,\n businessesErrorMessage: null,\n creatingBusiness: false,\n createBusinessSuccess: false,\n createdBusiness: null,\n createBusinessErrorMessage: null,\n updatingBusiness: false,\n updateBusinessSuccess: false,\n updatedBusiness: null,\n updateBusinessErrorMessage: null,\n gettingBusiness: false,\n getBusinessSuccess: false,\n business: null,\n getBusinessErrorMessage: null,\n gettingSubBusinesses: false,\n subBusinesses: null,\n subBusinessesErrorMessage: null,\n updatingClientSecret: false,\n updateClientSecretSuccess: false,\n updateClientSecretErrorMessage: null,\n};\n\nexport function businessReducer(\n state = initialState,\n action: BusinessDataTypes | LogoutActionTypes,\n): BusinessState {\n switch (action.type) {\n case FETCHING_BUSINESSES:\n return {\n ...state,\n loadingBusinesses: true,\n businesses: null,\n businessesErrorMessage: null,\n };\n\n case ADD_BUSINESSES:\n return {\n ...state,\n loadingBusinesses: false,\n businesses: action.businesses,\n businessesErrorMessage: null,\n };\n\n case FETCH_BUSINESSES_FAILED:\n return {\n ...state,\n loadingBusinesses: false,\n businesses: null,\n businessesErrorMessage: action.error,\n };\n\n case CREATING_BUSINESS:\n return {\n ...state,\n creatingBusiness: true,\n createBusinessSuccess: false,\n createBusinessErrorMessage: null,\n };\n\n case CREATE_BUSINESS_SUCCESS:\n return {\n ...state,\n creatingBusiness: false,\n createBusinessSuccess: true,\n createdBusiness: action.business,\n createBusinessErrorMessage: null,\n business: action.business,\n };\n\n case CREATE_BUSINESS_FAILED:\n return {\n ...state,\n creatingBusiness: false,\n createBusinessSuccess: false,\n createBusinessErrorMessage: action.error,\n business: null,\n };\n\n case UPDATING_BUSINESS:\n return {\n ...state,\n updatingBusiness: true,\n updateBusinessSuccess: false,\n updateBusinessErrorMessage: null,\n };\n\n case UPDATE_BUSINESS_SUCCESS:\n return {\n ...state,\n updatingBusiness: false,\n updateBusinessSuccess: true,\n updatedBusiness: action.business,\n updateBusinessErrorMessage: null,\n };\n\n case UPDATE_BUSINESS_FAILED:\n return {\n ...state,\n updatingBusiness: false,\n updateBusinessSuccess: false,\n updateBusinessErrorMessage: action.error,\n };\n\n case GETTING_BUSINESS:\n return {\n ...state,\n gettingBusiness: true,\n getBusinessSuccess: false,\n business: null,\n getBusinessErrorMessage: null,\n };\n\n case GET_BUSINESS_SUCCESS:\n return {\n ...state,\n gettingBusiness: false,\n getBusinessSuccess: true,\n business: action.business,\n getBusinessErrorMessage: null,\n };\n\n case GET_BUSINESS_FAILED:\n return {\n ...state,\n gettingBusiness: false,\n getBusinessSuccess: false,\n business: null,\n getBusinessErrorMessage: action.error,\n };\n\n case GETTING_BUSINESS_SUB_BUSINESSES:\n return {\n ...state,\n gettingSubBusinesses: true,\n subBusinesses: null,\n subBusinessesErrorMessage: null,\n };\n\n case GET_BUSINESS_SUB_BUSINESSES_SUCCESS:\n return {\n ...state,\n gettingSubBusinesses: false,\n subBusinesses: action.subBusinesses,\n subBusinessesErrorMessage: null,\n };\n\n case GET_BUSINESS_SUB_BUSINESSES_FAILED:\n return {\n ...state,\n gettingSubBusinesses: false,\n subBusinesses: null,\n subBusinessesErrorMessage: action.error,\n };\n\n case UPDATING_SECRET:\n return {\n ...state,\n updatingClientSecret: true,\n updateClientSecretSuccess: false,\n updateClientSecretErrorMessage: null,\n };\n\n case UPDATE_SECRET_SUCCESS:\n return {\n ...state,\n updatingClientSecret: false,\n updateClientSecretSuccess: true,\n updateClientSecretErrorMessage: null,\n };\n\n case UPDATE_SECRET_FAILED:\n return {\n ...state,\n updatingClientSecret: false,\n updateClientSecretSuccess: false,\n updateClientSecretErrorMessage: action.error,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n default:\n return state;\n }\n}\n","import {\n ADD_CLIENTS,\n ClientDataTypes,\n CREATE_BUSINESS_PAYMENT_METHOD_FAILED,\n CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n CREATING_BUSINESS_PAYMENT_METHOD,\n DELETE_BUSINESS_PAYMENT_METHOD_FAILED,\n DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n DELETING_BUSINESS_PAYMENT_METHOD,\n FETCH_CLIENTS_FAILED,\n FETCHING_CLIENTS,\n LogoutActionTypes,\n PaymentMethodsDataTypes,\n TOGGLE_CLIENT_BILLING_FAILED,\n TOGGLE_CLIENT_BILLING_SUCCESS,\n TOGGLING_CLIENT_BILLING,\n UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n UPDATING_BUSINESS_PAYMENT_METHOD,\n} from '../config/ActionTypes';\nimport { ClientsState } from '../config/types';\n\nexport const initialState: ClientsState = {\n loadingClients: false,\n clients: null,\n loadingClientsErrorMessage: null,\n updatingBilling: false,\n billingUpdateSuccess: false,\n billingUpdateError: null,\n creatingPaymentMethods: false,\n creatingPaymentMethodsSuccess: false,\n creatingPaymentMethodsErrorMessage: null,\n updatingPaymentMethods: false,\n updatingPaymentMethodsSuccess: false,\n updatingPaymentMethodsErrorMessage: null,\n deletingPaymentMethods: false,\n deletingPaymentMethodsSuccess: false,\n deletingPaymentMethodsErrorMessage: null,\n};\n\nexport function clientsReducer(\n state = initialState,\n action: ClientDataTypes | LogoutActionTypes | PaymentMethodsDataTypes,\n): ClientsState {\n switch (action.type) {\n case FETCHING_CLIENTS:\n return {\n ...state,\n loadingClients: true,\n clients: null,\n loadingClientsErrorMessage: null,\n };\n case ADD_CLIENTS:\n return {\n ...state,\n loadingClients: false,\n clients: action.clients,\n loadingClientsErrorMessage: null,\n };\n case FETCH_CLIENTS_FAILED:\n return {\n ...state,\n loadingClients: false,\n clients: null,\n loadingClientsErrorMessage: action.error,\n };\n case TOGGLING_CLIENT_BILLING:\n return {\n ...state,\n updatingBilling: true,\n billingUpdateSuccess: false,\n billingUpdateError: null,\n };\n case TOGGLE_CLIENT_BILLING_SUCCESS:\n const updatedClients = state.clients?.map((cli) => {\n if (cli.id === action.request.id) {\n const newCli = cli;\n cli.billingEnabled = action.request.enabled;\n return newCli;\n } else return cli;\n });\n return {\n ...state,\n updatingBilling: false,\n billingUpdateSuccess: true,\n billingUpdateError: null,\n clients: updatedClients ?? null,\n };\n case TOGGLE_CLIENT_BILLING_FAILED:\n return {\n ...state,\n updatingBilling: false,\n billingUpdateSuccess: false,\n billingUpdateError: action.error,\n };\n\n case CREATING_BUSINESS_PAYMENT_METHOD: {\n return {\n ...state,\n creatingPaymentMethods: true,\n creatingPaymentMethodsSuccess: false,\n creatingPaymentMethodsErrorMessage: null,\n };\n }\n\n case CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS: {\n const clientsWithNewCommerce =\n state.clients &&\n state.clients.map((cli) => {\n if (cli.id === action.businessId) {\n cli.commerces\n ? cli.commerces.push(action.paymentMethod)\n : (cli.commerces = [action.paymentMethod]);\n }\n return cli;\n });\n return {\n ...state,\n creatingPaymentMethods: false,\n creatingPaymentMethodsSuccess: true,\n creatingPaymentMethodsErrorMessage: null,\n clients: clientsWithNewCommerce,\n };\n }\n\n case CREATE_BUSINESS_PAYMENT_METHOD_FAILED: {\n return {\n ...state,\n creatingPaymentMethods: false,\n creatingPaymentMethodsSuccess: false,\n creatingPaymentMethodsErrorMessage: action.error,\n };\n }\n\n case UPDATING_BUSINESS_PAYMENT_METHOD: {\n return {\n ...state,\n updatingPaymentMethods: true,\n updatingPaymentMethodsSuccess: false,\n updatingPaymentMethodsErrorMessage: null,\n };\n }\n\n case UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS: {\n const clientsWithUpdatedCommerce =\n state.clients &&\n state.clients.map((cli) => {\n if (cli.id === action.businessId) {\n const i = cli.commerces!.findIndex((co) => co.id === action.paymentMethod.id);\n cli.commerces![i] = action.paymentMethod;\n }\n return cli;\n });\n\n return {\n ...state,\n updatingPaymentMethods: false,\n updatingPaymentMethodsSuccess: true,\n updatingPaymentMethodsErrorMessage: null,\n clients: clientsWithUpdatedCommerce,\n };\n }\n\n case DELETING_BUSINESS_PAYMENT_METHOD: {\n return {\n ...state,\n deletingPaymentMethods: true,\n deletingPaymentMethodsSuccess: false,\n deletingPaymentMethodsErrorMessage: null,\n };\n }\n\n case DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS: {\n const clientsWithDelCommerce =\n state.clients &&\n state.clients.map((cli) => {\n if (cli.id === action.businessId) {\n const filteredComms = cli.commerces!.filter((co) => co.id !== action.paymentMethodId);\n cli.commerces = filteredComms;\n }\n return cli;\n });\n return {\n ...state,\n deletingPaymentMethods: false,\n deletingPaymentMethodsSuccess: true,\n deletingPaymentMethodsErrorMessage: null,\n clients: clientsWithDelCommerce,\n };\n }\n\n case DELETE_BUSINESS_PAYMENT_METHOD_FAILED: {\n return {\n ...state,\n deletingPaymentMethods: false,\n deletingPaymentMethodsSuccess: false,\n deletingPaymentMethodsErrorMessage: action.error,\n };\n }\n\n default:\n return state;\n }\n}\n","import {\n ADD_COLLABORATORS,\n CREATE_COLLABORATOR_FAILED,\n CREATE_COLLABORATOR_SUCCESS,\n CREATING_COLLABORATOR,\n CollaboratorsDataTypes,\n DELETE_COLLABORATOR_FAILED,\n DELETE_COLLABORATOR_SUCCESS,\n DELETING_COLLABORATOR,\n ENABLE_COLLABORATOR_FAILED,\n ENABLE_COLLABORATOR_SUCCESS,\n ENABLING_COLLABORATOR,\n FETCHING_COLLABORATORS,\n FETCH_COLLABORATORS_FAILED,\n LOGOUT,\n LogoutActionTypes,\n UPDATE_COLLABORATOR_FAILED,\n UPDATE_COLLABORATOR_SUCCESS,\n UPDATING_COLLABORATOR,\n} from '../config/ActionTypes';\nimport { Collaborator, CollaboratorResponse, CollaboratorsState } from '../config/types';\n\nexport const initialState: CollaboratorsState = {\n loadingCollaborators: false,\n collaborators: null,\n collaboratorsErrorMessage: null,\n creatingCollaborator: false,\n createCollaboratorSuccess: false,\n createCollaboratorErrorMessage: null,\n updatingCollaborator: false,\n updateCollaboratorSuccess: false,\n updateCollaboratorErrorMessage: null,\n deletingCollaborator: false,\n deleteCollaboratorSuccess: false,\n deleteCollaboratorErrorMessage: null,\n enablingCollaborator: false,\n enableCollaboratorSuccess: false,\n enableCollaboratorErrorMessage: null,\n};\n\nfunction isCollaboratorResponse(\n response: Collaborator[] | CollaboratorResponse,\n): response is CollaboratorResponse {\n return response !== undefined && (response as CollaboratorResponse).users !== undefined;\n}\n\nexport function collaboratorsReducer(\n state = initialState,\n action: CollaboratorsDataTypes | LogoutActionTypes,\n): CollaboratorsState {\n switch (action.type) {\n case FETCHING_COLLABORATORS:\n return {\n ...state,\n loadingCollaborators: true,\n collaborators: null,\n collaboratorsErrorMessage: null,\n };\n\n case ADD_COLLABORATORS:\n let collaborators: Collaborator[] = [];\n\n collaborators = isCollaboratorResponse(action.collaboratorsResponse)\n ? action.collaboratorsResponse.users\n : action.collaboratorsResponse;\n\n return {\n ...state,\n loadingCollaborators: false,\n collaborators: collaborators,\n collaboratorsErrorMessage: null,\n };\n\n case FETCH_COLLABORATORS_FAILED:\n return {\n ...state,\n loadingCollaborators: false,\n collaborators: null,\n collaboratorsErrorMessage: action.error,\n };\n\n case CREATING_COLLABORATOR:\n return {\n ...state,\n creatingCollaborator: true,\n createCollaboratorSuccess: false,\n createCollaboratorErrorMessage: null,\n };\n\n case CREATE_COLLABORATOR_SUCCESS:\n const newCollaborators = state.collaborators ? [...state.collaborators] : [];\n newCollaborators.push({ ...action.collaborator, active: true });\n\n return {\n ...state,\n collaborators: newCollaborators,\n creatingCollaborator: false,\n createCollaboratorSuccess: true,\n createCollaboratorErrorMessage: null,\n };\n\n case CREATE_COLLABORATOR_FAILED:\n return {\n ...state,\n creatingCollaborator: false,\n createCollaboratorSuccess: false,\n createCollaboratorErrorMessage: action.error,\n };\n\n case UPDATING_COLLABORATOR:\n return {\n ...state,\n updatingCollaborator: true,\n updateCollaboratorSuccess: false,\n updateCollaboratorErrorMessage: null,\n };\n\n case UPDATE_COLLABORATOR_SUCCESS:\n let updatedCollaborators = state.collaborators?.map((collaborator: Collaborator) => {\n if (collaborator.userId === action.collaborator.userId) {\n let returnedCollaborator: Collaborator = {\n ...collaborator,\n names: action.collaborator.names,\n surnames: action.collaborator.surnames,\n };\n\n return returnedCollaborator;\n }\n\n return collaborator;\n });\n\n return {\n ...state,\n updatingCollaborator: false,\n updateCollaboratorSuccess: true,\n collaborators: updatedCollaborators || [],\n updateCollaboratorErrorMessage: null,\n };\n\n case UPDATE_COLLABORATOR_FAILED:\n return {\n ...state,\n updatingCollaborator: false,\n updateCollaboratorSuccess: false,\n updateCollaboratorErrorMessage: action.error,\n };\n\n case DELETING_COLLABORATOR:\n return {\n ...state,\n deletingCollaborator: true,\n deleteCollaboratorSuccess: false,\n deleteCollaboratorErrorMessage: null,\n };\n\n case DELETE_COLLABORATOR_SUCCESS:\n const nonDeletedCollaborators =\n state.collaborators &&\n state.collaborators.filter(\n (collaborator: Collaborator) => collaborator.userId !== action.collaboratorId,\n );\n\n return {\n ...state,\n deletingCollaborator: false,\n deleteCollaboratorSuccess: true,\n collaborators: nonDeletedCollaborators,\n deleteCollaboratorErrorMessage: null,\n };\n\n case DELETE_COLLABORATOR_FAILED:\n return {\n ...state,\n deletingCollaborator: false,\n deleteCollaboratorSuccess: false,\n deleteCollaboratorErrorMessage: action.error,\n };\n\n case ENABLING_COLLABORATOR:\n return {\n ...state,\n enablingCollaborator: true,\n enableCollaboratorSuccess: false,\n enableCollaboratorErrorMessage: null,\n };\n\n case ENABLE_COLLABORATOR_SUCCESS:\n let newEnabledCollaborators = state.collaborators!.map((collaborator: Collaborator) => {\n if (collaborator.userId === action.userId) {\n let returnedCollaborator: Collaborator = {\n ...collaborator,\n active: !collaborator.active,\n };\n\n return returnedCollaborator;\n }\n\n return collaborator;\n });\n\n return {\n ...state,\n enablingCollaborator: false,\n enableCollaboratorSuccess: true,\n collaborators: newEnabledCollaborators,\n enableCollaboratorErrorMessage: null,\n };\n\n case ENABLE_COLLABORATOR_FAILED:\n return {\n ...state,\n enablingCollaborator: false,\n enableCollaboratorSuccess: false,\n enableCollaboratorErrorMessage: action.error,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n default:\n return state;\n }\n}\n","import {\n ADD_DASHBOARD_LINKS,\n ADD_LINKS,\n ADD_ONE_USE_LINKS,\n CREATE_LINKS_WITH_CSV_FAILED,\n CREATE_LINKS_WITH_CSV_SUCCESS,\n CREATE_LINK_FAILED,\n CREATE_LINK_SUCCESS,\n CREATING_LINK,\n CREATING_LINKS_WITH_CSV,\n DELETE_LINK_FAILED,\n DELETE_LINK_SUCCESS,\n DELETING_LINK,\n FETCHING_LINKS,\n FETCHING_ONE_USE_LINKS,\n FETCH_LINKS_FAILED,\n FETCH_ONE_USE_LINKS_FAILED,\n GETTING_LINK_DATA,\n GET_LINK_DATA_FAILED,\n GET_LINK_DATA_SUCCESS,\n LOAD_LINK_FILTERS,\n LOAD_ONE_USE_LINK_FILTERS,\n LOGOUT,\n LinksDataTypes,\n LogoutActionTypes,\n SHARE_LINK_FAILED,\n SHARE_LINK_SUCCESS,\n SHARING_LINK,\n UPDATE_LINK_FAILED,\n UPDATE_LINK_SUCCESS,\n UPDATING_LINK,\n VALIDATE_LINK_FAILED,\n VALIDATE_LINK_SUCCESS,\n VALIDATING_LINK,\n} from '../config/ActionTypes';\nimport { DateSpan, LinkTypeEnum, OrderFilterEnum } from '../config/enums';\nimport { Link, LinksState } from '../config/types';\n\nexport const initialState: LinksState = {\n loadingLinks: false,\n loadingOneUseLinks: false,\n links: null,\n dashboardLinks: null,\n oneUseLinks: null,\n currentPage: 0,\n pageCount: 0,\n oneUseCurrentPage: 0,\n oneUsePageCount: 0,\n linksType: LinkTypeEnum.ONTHEFLY,\n linksFilters: {\n currency: { pesos: false, dollars: false },\n order: OrderFilterEnum.DescendingDate,\n dateSpan: DateSpan.LAST7DAYS,\n term: '',\n sortDirection: 2,\n columnSort: 1,\n },\n oneUseLinksFilters: {\n currency: { pesos: false, dollars: false },\n order: OrderFilterEnum.DescendingDate,\n dateSpan: DateSpan.LAST7DAYS,\n term: '',\n sortDirection: 2,\n columnSort: 1,\n },\n linksErrorMessage: null,\n oneUseLinksErrorMessage: null,\n creatingLink: false,\n createLinkSuccess: false,\n latestLink: null,\n createLinkErrorMessage: null,\n updatingLink: false,\n updateLinkSuccess: false,\n updateLinkErrorMessage: null,\n deletingLink: false,\n deleteLinkSuccess: false,\n deleteLinkErrorMessage: null,\n sharingLink: false,\n shareLinkSuccess: false,\n shareLinkErrorMessage: null,\n gettingLinkData: false,\n getLinkDataSuccess: false,\n linkData: null,\n getLinkDataErrorMessage: null,\n validatingLink: false,\n validateLinkSuccess: false,\n linkToPay: null,\n validateLinkErrorMessage: null,\n creatingLinksWithCSV: false,\n createLinksWithCSVSuccess: false,\n createLinksWithCSVErrorMessage: null,\n};\n\nexport function linksReducer(state = initialState, action: LinksDataTypes | LogoutActionTypes): LinksState {\n switch (action.type) {\n case LOAD_LINK_FILTERS:\n return {\n ...state,\n linksFilters: action.filters,\n loadingLinks: true,\n links: null,\n };\n\n case LOAD_ONE_USE_LINK_FILTERS:\n return {\n ...state,\n oneUseLinksFilters: action.filters,\n loadingOneUseLinks: true,\n oneUseLinks: null,\n };\n\n case FETCHING_LINKS:\n const leftoverLinks = action.reset ? null : state.links;\n\n return {\n ...state,\n loadingLinks: true,\n links: leftoverLinks,\n linksType: action.kind,\n linksErrorMessage: null,\n };\n\n case ADD_LINKS:\n let linksToAdd = state.links;\n\n if (linksToAdd && action.links) {\n linksToAdd = linksToAdd.concat(action.links.results);\n } else {\n linksToAdd = action.links ? action.links.results : [];\n }\n return {\n ...state,\n loadingLinks: false,\n links: linksToAdd,\n currentPage: action.links ? action.links.currentPage : state.currentPage,\n pageCount: action.links ? action.links.pageCount : state.pageCount,\n linksErrorMessage: null,\n };\n\n case ADD_DASHBOARD_LINKS:\n return {\n ...state,\n loadingLinks: false,\n dashboardLinks: action.links ? action.links.results : [],\n linksErrorMessage: null,\n };\n\n case FETCH_LINKS_FAILED:\n return {\n ...state,\n loadingLinks: false,\n // links: null,\n linksErrorMessage: action.error,\n };\n\n //\n case FETCHING_ONE_USE_LINKS:\n const leftoverOneUseLinks = action.reset ? null : state.oneUseLinks;\n\n return {\n ...state,\n loadingOneUseLinks: true,\n oneUseLinks: leftoverOneUseLinks,\n linksType: action.kind,\n oneUseLinksErrorMessage: null,\n };\n\n case ADD_ONE_USE_LINKS:\n let oneUSeLinksToAdd = state.oneUseLinks;\n\n if (oneUSeLinksToAdd && action.links) {\n oneUSeLinksToAdd = oneUSeLinksToAdd.concat(action.links.results);\n } else {\n oneUSeLinksToAdd = action.links ? action.links.results : [];\n }\n return {\n ...state,\n loadingOneUseLinks: false,\n oneUseLinks: oneUSeLinksToAdd,\n oneUseCurrentPage: action.links ? action.links.currentPage : state.oneUseCurrentPage,\n oneUsePageCount: action.links ? action.links.pageCount : state.oneUsePageCount,\n oneUseLinksErrorMessage: null,\n };\n\n case FETCH_ONE_USE_LINKS_FAILED:\n return {\n ...state,\n loadingOneUseLinks: false,\n // links: null,\n oneUseLinksErrorMessage: action.error,\n };\n //\n case CREATING_LINK:\n return {\n ...state,\n creatingLink: true,\n createLinkSuccess: false,\n createLinkErrorMessage: null,\n };\n\n case CREATE_LINK_SUCCESS:\n const newLinks = state.links ? [...state.links] : [];\n const newOneUseLinks = state.oneUseLinks ? [...state.oneUseLinks] : [];\n const dashboardLinks = state.dashboardLinks ? [...state.dashboardLinks] : [];\n\n if (action.link.linkType === LinkTypeEnum.PERMANENT) {\n newLinks.unshift(action.link);\n } else {\n newOneUseLinks.unshift(action.link);\n }\n\n dashboardLinks.unshift(action.link);\n\n return {\n ...state,\n links: newLinks,\n oneUseLinks: newOneUseLinks,\n creatingLink: false,\n dashboardLinks: dashboardLinks,\n latestLink: action.link,\n createLinkSuccess: true,\n createLinkErrorMessage: null,\n };\n\n case CREATE_LINK_FAILED:\n return {\n ...state,\n creatingLink: false,\n createLinkSuccess: false,\n latestLink: null,\n createLinkErrorMessage: action.error,\n };\n\n case UPDATING_LINK:\n return {\n ...state,\n updatingLink: true,\n updateLinkSuccess: false,\n updateLinkErrorMessage: null,\n };\n\n case UPDATE_LINK_SUCCESS:\n let linksToUpdate = action.link.linkType === LinkTypeEnum.PERMANENT ? state.links : state.oneUseLinks;\n\n const updatedLinks = linksToUpdate?.map((link: Link) => {\n if (link.id === action.link.id) {\n const updatedLink: Link = {\n ...action.link,\n };\n if (action.link.description) updatedLink.description = action.link.description;\n if (action.link.reference) updatedLink.reference = action.link.reference;\n return updatedLink;\n }\n return link;\n });\n return {\n ...state,\n links: action.link.linkType === LinkTypeEnum.PERMANENT ? updatedLinks! : state.links,\n oneUseLinks: action.link.linkType === LinkTypeEnum.PERMANENT ? state.oneUseLinks : updatedLinks!,\n dashboardLinks:\n state.dashboardLinks &&\n state.dashboardLinks.map((link) =>\n link.id === action.link.id ? { ...link, ...action.link } : link,\n ),\n latestLink: action.link,\n updatingLink: false,\n updateLinkSuccess: true,\n updateLinkErrorMessage: null,\n };\n\n case UPDATE_LINK_FAILED:\n return {\n ...state,\n updatingLink: false,\n updateLinkSuccess: false,\n updateLinkErrorMessage: action.error,\n };\n\n case DELETING_LINK:\n return {\n ...state,\n deletingLink: true,\n deleteLinkSuccess: false,\n deleteLinkErrorMessage: null,\n };\n\n case DELETE_LINK_SUCCESS:\n const survivingLinks = state.links?.filter((link: Link) => link.id !== action.linkId);\n const survivingOneUseLinks = state.oneUseLinks?.filter((link: Link) => link.id !== action.linkId);\n const survivingDashboardLinks = state.dashboardLinks?.filter((link: Link) => link.id !== action.linkId);\n\n return {\n ...state,\n links: survivingLinks ? survivingLinks : null,\n oneUseLinks: survivingOneUseLinks ? survivingOneUseLinks : null,\n dashboardLinks: survivingDashboardLinks ? survivingDashboardLinks : null,\n deletingLink: false,\n deleteLinkSuccess: true,\n deleteLinkErrorMessage: null,\n };\n\n case DELETE_LINK_FAILED:\n return {\n ...state,\n deletingLink: false,\n deleteLinkSuccess: false,\n deleteLinkErrorMessage: action.error,\n };\n\n case SHARING_LINK:\n return {\n ...state,\n sharingLink: true,\n shareLinkSuccess: false,\n shareLinkErrorMessage: null,\n };\n\n case SHARE_LINK_SUCCESS:\n return {\n ...state,\n sharingLink: false,\n shareLinkSuccess: true,\n shareLinkErrorMessage: null,\n };\n\n case SHARE_LINK_FAILED:\n return {\n ...state,\n sharingLink: false,\n shareLinkSuccess: false,\n shareLinkErrorMessage: action.error,\n };\n\n case GETTING_LINK_DATA:\n return {\n ...state,\n gettingLinkData: true,\n getLinkDataSuccess: false,\n linkData: null,\n getLinkDataErrorMessage: null,\n };\n\n case GET_LINK_DATA_SUCCESS:\n return {\n ...state,\n gettingLinkData: false,\n getLinkDataSuccess: true,\n linkData: action.link,\n getLinkDataErrorMessage: null,\n };\n\n case GET_LINK_DATA_FAILED:\n return {\n ...state,\n gettingLinkData: false,\n getLinkDataSuccess: false,\n linkData: null,\n getLinkDataErrorMessage: action.error,\n };\n\n case VALIDATING_LINK: {\n return {\n ...state,\n validatingLink: true,\n validateLinkSuccess: false,\n linkToPay: null,\n validateLinkErrorMessage: null,\n };\n }\n\n case VALIDATE_LINK_SUCCESS: {\n return {\n ...state,\n validatingLink: false,\n validateLinkSuccess: true,\n linkToPay: action.link,\n validateLinkErrorMessage: null,\n };\n }\n\n case VALIDATE_LINK_FAILED: {\n return {\n ...state,\n validatingLink: false,\n validateLinkSuccess: false,\n linkToPay: null,\n validateLinkErrorMessage: action.error,\n };\n }\n\n case CREATING_LINKS_WITH_CSV:\n return {\n ...state,\n creatingLinksWithCSV: true,\n createLinksWithCSVSuccess: false,\n createLinkErrorMessage: null,\n };\n\n case CREATE_LINKS_WITH_CSV_SUCCESS:\n return {\n ...state,\n creatingLinksWithCSV: false,\n createLinksWithCSVSuccess: true,\n createLinksWithCSVErrorMessage: null,\n };\n\n case CREATE_LINKS_WITH_CSV_FAILED:\n return {\n ...state,\n creatingLinksWithCSV: false,\n createLinksWithCSVSuccess: false,\n latestLink: null,\n createLinksWithCSVErrorMessage: action.error,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n default:\n return state;\n }\n}\n","import {\n LOGOUT,\n LogoutActionTypes,\n NotificationsDataTypes,\n RESENDING_NOTIFICATION,\n RESEND_NOTIFICATION_ERROR,\n RESEND_NOTIFICATION_SUCCESS,\n SENDING_NOTIFICATION,\n SEND_NOTIFICATION_ERROR,\n SEND_NOTIFICATION_SUCCESS,\n} from '../config/ActionTypes';\nimport { NotificationsState } from '../config/types';\n\nexport const initialState: NotificationsState = {\n sendingNotification: false,\n sendNotificationSuccess: false,\n sendNotificationErrorMessage: null,\n resendingNotification: false,\n notification: null,\n resendNotificationSuccess: false,\n resendNotificationErrorMessage: null,\n};\n\nexport function notificationsReducer(\n state = initialState,\n action: NotificationsDataTypes | LogoutActionTypes,\n): NotificationsState {\n switch (action.type) {\n case SENDING_NOTIFICATION:\n return {\n ...state,\n ...initialState,\n sendingNotification: true,\n sendNotificationSuccess: false,\n sendNotificationErrorMessage: null,\n };\n\n case SEND_NOTIFICATION_SUCCESS:\n return {\n ...state,\n ...initialState,\n notification: action.notification,\n sendingNotification: false,\n sendNotificationSuccess: true,\n sendNotificationErrorMessage: null,\n };\n\n case SEND_NOTIFICATION_ERROR:\n return {\n ...state,\n ...initialState,\n sendingNotification: false,\n sendNotificationSuccess: false,\n sendNotificationErrorMessage: action.error,\n };\n\n case RESENDING_NOTIFICATION:\n return {\n ...state,\n ...initialState,\n resendingNotification: true,\n resendNotificationSuccess: false,\n resendNotificationErrorMessage: null,\n };\n\n case RESEND_NOTIFICATION_SUCCESS:\n return {\n ...state,\n ...initialState,\n resendingNotification: false,\n resendNotificationSuccess: true,\n resendNotificationErrorMessage: null,\n };\n\n case RESEND_NOTIFICATION_ERROR:\n return {\n ...state,\n ...initialState,\n resendingNotification: false,\n resendNotificationSuccess: false,\n resendNotificationErrorMessage: action.error,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n default:\n return state;\n }\n}\n","import {\n ADD_BUSINESS_ISSUERS,\n ADD_ISSUERS,\n ADD_PAYMENT_METHODS,\n CREATE_PAYMENT_METHOD_FAILED,\n CREATE_PAYMENT_METHOD_SUCCESS,\n CREATING_PAYMENT_METHOD,\n DELETE_PAYMENT_METHOD_FAILED,\n DELETE_PAYMENT_METHOD_SUCCESS,\n DELETING_PAYMENT_METHOD,\n DESIRED_ISSUERS_FAILED,\n DESIRED_ISSUERS_SUCCESS,\n FETCHING_BUSINESS_ISSUERS,\n FETCHING_INSTALLMENTS,\n FETCHING_ISSUERS,\n FETCHING_PAYMENT_METHODS,\n FETCH_BUSINESS_ISSUERS_FAILED,\n FETCH_INSTALLMENTS_FAILED,\n FETCH_INSTALLMENTS_SUCCESS,\n FETCH_ISSUERS_FAILED,\n FETCH_PAYMENT_METHODS_FAILED,\n LOGOUT,\n LogoutActionTypes,\n PaymentMethodsDataTypes,\n SENDING_DESIRED_ISSUERS,\n UPDATE_PAYMENT_METHOD_FAILED,\n UPDATE_PAYMENT_METHOD_SUCCESS,\n UPDATING_PAYMENT_METHOD,\n} from '../config/ActionTypes';\nimport { PaymentMethod, PaymentMethodsState } from '../config/types';\n\nexport const initialState: PaymentMethodsState = {\n loadingPaymentMethods: false,\n paymentMethods: null,\n paymentMethodsErrorMessage: null,\n creatingPaymentMethod: false,\n createPaymentMethodSuccess: false,\n createPaymentMethodErrorMessage: null,\n updatingPaymentMethod: false,\n updatePaymentMethodSuccess: false,\n updatePaymentMethodErrorMessage: null,\n deletingPaymentMethod: false,\n deletePaymentMethodSuccess: false,\n deletePaymentMethodErrorMessage: null,\n loadingIssuers: false,\n issuers: null,\n issuersErrorMessage: null,\n businessIssuers: null,\n loadingBusinessIssuers: false,\n businessIssuersErrorMessage: null,\n sendingDesiredIssuers: false,\n desiredIssuersSuccess: false,\n desiredIssuersErrorMessage: null,\n possibleInstallments: null,\n fetchingPossibleInstallments: false,\n fetchInstallmentsError: null,\n};\n\nexport function paymentMethodsReducer(\n state = initialState,\n action: PaymentMethodsDataTypes | LogoutActionTypes,\n): PaymentMethodsState {\n switch (action.type) {\n case FETCHING_PAYMENT_METHODS:\n return {\n ...state,\n loadingPaymentMethods: true,\n paymentMethods: null,\n paymentMethodsErrorMessage: null,\n };\n\n case ADD_PAYMENT_METHODS:\n return {\n ...state,\n loadingPaymentMethods: false,\n paymentMethods: action.paymentMethods,\n paymentMethodsErrorMessage: null,\n };\n\n case FETCH_PAYMENT_METHODS_FAILED:\n return {\n ...state,\n loadingPaymentMethods: false,\n paymentMethods: null,\n paymentMethodsErrorMessage: action.error,\n };\n\n case CREATING_PAYMENT_METHOD:\n return {\n ...state,\n creatingPaymentMethod: true,\n createPaymentMethodSuccess: false,\n createPaymentMethodErrorMessage: null,\n };\n\n case CREATE_PAYMENT_METHOD_SUCCESS:\n const newPaymentMethods = state.paymentMethods ? [...state.paymentMethods] : [];\n newPaymentMethods.push(action.paymentMethod);\n\n return {\n ...state,\n paymentMethods: newPaymentMethods,\n creatingPaymentMethod: false,\n createPaymentMethodSuccess: true,\n createPaymentMethodErrorMessage: null,\n };\n\n case CREATE_PAYMENT_METHOD_FAILED:\n return {\n ...state,\n creatingPaymentMethod: false,\n createPaymentMethodSuccess: false,\n createPaymentMethodErrorMessage: action.error,\n };\n\n case UPDATING_PAYMENT_METHOD:\n return {\n ...state,\n updatingPaymentMethod: true,\n updatePaymentMethodSuccess: false,\n updatePaymentMethodErrorMessage: null,\n };\n\n case UPDATE_PAYMENT_METHOD_SUCCESS:\n let updatedPaymentMethod = state.paymentMethods!.map((c) => {\n if (c.id === action.paymentMethod.id) {\n let returnedPaymentMethod: PaymentMethod = {\n ...c,\n values: action.paymentMethod.values,\n };\n\n return returnedPaymentMethod;\n }\n\n return c;\n });\n\n return {\n ...state,\n updatingPaymentMethod: false,\n updatePaymentMethodSuccess: true,\n paymentMethods: updatedPaymentMethod,\n updatePaymentMethodErrorMessage: null,\n };\n\n case UPDATE_PAYMENT_METHOD_FAILED:\n return {\n ...state,\n updatingPaymentMethod: false,\n updatePaymentMethodSuccess: false,\n updatePaymentMethodErrorMessage: action.error,\n };\n\n case DELETING_PAYMENT_METHOD:\n return {\n ...state,\n deletingPaymentMethod: true,\n deletePaymentMethodSuccess: false,\n deletePaymentMethodErrorMessage: null,\n };\n\n case DELETE_PAYMENT_METHOD_SUCCESS:\n const nonDeletedPaymentMethods =\n state.paymentMethods && state.paymentMethods.filter((c) => c.issuerId !== action.paymentMethodId);\n\n return {\n ...state,\n deletingPaymentMethod: false,\n deletePaymentMethodSuccess: true,\n paymentMethods: nonDeletedPaymentMethods,\n deletePaymentMethodErrorMessage: null,\n };\n\n case DELETE_PAYMENT_METHOD_FAILED:\n return {\n ...state,\n deletingPaymentMethod: false,\n deletePaymentMethodSuccess: false,\n deletePaymentMethodErrorMessage: action.error,\n };\n\n case FETCHING_ISSUERS:\n return {\n ...state,\n loadingIssuers: true,\n issuers: null,\n issuersErrorMessage: null,\n };\n\n case ADD_ISSUERS:\n return {\n ...state,\n loadingIssuers: false,\n issuers: action.issuers,\n issuersErrorMessage: null,\n };\n\n case FETCHING_BUSINESS_ISSUERS:\n return {\n ...state,\n loadingBusinessIssuers: true,\n businessIssuers: null,\n businessIssuersErrorMessage: null,\n };\n\n case ADD_BUSINESS_ISSUERS:\n return {\n ...state,\n loadingBusinessIssuers: false,\n businessIssuers: action.issuers,\n businessIssuersErrorMessage: null,\n };\n\n case FETCH_BUSINESS_ISSUERS_FAILED:\n return {\n ...state,\n loadingBusinessIssuers: false,\n businessIssuers: null,\n businessIssuersErrorMessage: action.error,\n };\n\n case FETCH_ISSUERS_FAILED:\n return {\n ...state,\n loadingIssuers: false,\n issuers: null,\n issuersErrorMessage: action.error,\n };\n\n case SENDING_DESIRED_ISSUERS:\n return {\n ...state,\n sendingDesiredIssuers: true,\n desiredIssuersSuccess: false,\n desiredIssuersErrorMessage: null,\n };\n\n case DESIRED_ISSUERS_SUCCESS:\n return {\n ...state,\n sendingDesiredIssuers: false,\n desiredIssuersSuccess: true,\n desiredIssuersErrorMessage: null,\n };\n\n case DESIRED_ISSUERS_FAILED:\n return {\n ...state,\n sendingDesiredIssuers: false,\n desiredIssuersSuccess: false,\n desiredIssuersErrorMessage: action.error,\n };\n\n case FETCHING_INSTALLMENTS:\n return {\n ...state,\n possibleInstallments: null,\n fetchingPossibleInstallments: true,\n fetchInstallmentsError: null,\n };\n\n case FETCH_INSTALLMENTS_SUCCESS:\n return {\n ...state,\n possibleInstallments: action.installments,\n fetchingPossibleInstallments: false,\n fetchInstallmentsError: null,\n };\n\n case FETCH_INSTALLMENTS_FAILED:\n return {\n ...state,\n possibleInstallments: null,\n fetchingPossibleInstallments: false,\n fetchInstallmentsError: action.error,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n default:\n return state;\n }\n}\n","const paymentPageLimit = 10;\nconst linksPageLimit = 10;\n\nexport const possibleInstallments = [1, 2, 3, 4, 5, 6, 10, 12, 18];\nexport const ivas = [0, 10, 22];\nexport const timeToValidateLinks = 3000; // in milliseconds\n\nconst values = {\n paymentPageLimit,\n linksPageLimit,\n timeToValidateLinks,\n};\n\nexport default values;\n","import values from '../../data/values';\nimport {\n ADD_DASHBOARD_PAYMENTS,\n ADD_PAYMENTS,\n BEGINNING_PAYMENT,\n BEGIN_PAYMENT_ERROR,\n BEGIN_PAYMENT_SUCCESS,\n CANCELLING_PAYMENT,\n CANCEL_PAYMENT_ERROR,\n CANCEL_PAYMENT_SUCCESS,\n CLEAR_INSTRUMENT,\n CONFIRMING_PAYMENT,\n CONFIRM_PAYMENT_ERROR,\n CONFIRM_PAYMENT_SUCCESS,\n FETCHING_PAYMENTS,\n FETCH_PAYMENTS_ERROR,\n GETTING_PAYMENT,\n GET_PAYMENT_ERROR,\n GET_PAYMENT_SUCCESS,\n LOAD_PAYMENT_FILTERS,\n LOGOUT,\n LogoutActionTypes,\n PaymentDataTypes,\n REGISTER_CALLBACK_FAILED,\n TOGGLE_RESET_CLIENT_FILTER,\n TRANSACTION_CALLBACK,\n VISA_REDIRECTED,\n} from '../config/ActionTypes';\nimport { Currency, DateSpan, PaymentStatusEnum, PaymentsColumnSortEnum, SortEnum } from '../config/enums';\nimport { Payment, PaymentsState } from '../config/types';\n\nexport const initialState: PaymentsState = {\n loadingPayments: false,\n payments: null,\n dashboardPayments: null,\n paymentsTotals: {\n oneTimeOnlyTotals: {\n uruguayanPesoAmount: 0,\n uruguayanPesoCount: 0,\n dollarAmount: 0,\n dollarCount: 0,\n },\n approvedTotals: {\n uruguayanPesoAmount: 0,\n uruguayanPesoCount: 0,\n dollarAmount: 0,\n dollarCount: 0,\n },\n rejectedTotals: {\n uruguayanPesoAmount: 0,\n uruguayanPesoCount: 0,\n dollarAmount: 0,\n dollarCount: 0,\n },\n },\n currentPage: 1,\n pageCount: 1,\n pageSize: values.paymentPageLimit,\n rowCount: 0,\n firstRowOnPage: 0,\n lastRowOnPage: 0,\n filters: {\n currency: { pesos: false, dollars: false },\n sortDirection: SortEnum.DESC,\n columnSort: PaymentsColumnSortEnum.Date,\n dateSpan: DateSpan.LAST7DAYS,\n issuer: undefined,\n collaborator: undefined,\n },\n paymentsErrorMessage: null,\n beginningPayment: false,\n plexoUrl: null,\n paymentId: null,\n beginPaymentErrorMessage: null,\n gettingPayment: false,\n transactionPayment: null,\n selectedPayment: null,\n issuer: null,\n getPaymentErrorMessage: null,\n confirmingPayment: false,\n confirmPaymentSuccess: false,\n confirmedPayment: null,\n confirmPaymentErrorMessage: null,\n cancellingPayment: false,\n cancelPaymentSuccess: false,\n cancelPaymentErrorMessage: null,\n paymentUrl: null,\n resetClientFilter: false,\n};\n\nexport function paymentsReducer(\n state = initialState,\n action: PaymentDataTypes | LogoutActionTypes,\n): PaymentsState {\n switch (action.type) {\n case FETCHING_PAYMENTS:\n return {\n ...state,\n loadingPayments: true,\n paymentsErrorMessage: null,\n };\n\n case ADD_PAYMENTS:\n let payments = [];\n if (action.paymentResponse?.payments?.results) {\n if (state.payments) payments = state.payments.concat(action.paymentResponse.payments.results);\n else payments = action.paymentResponse.payments.results;\n } else {\n payments = state.payments ?? [];\n }\n\n return {\n ...state,\n loadingPayments: false,\n payments: payments,\n paymentsTotals: {\n oneTimeOnlyTotals: action.paymentResponse?.oneTimeOnlyTotals,\n approvedTotals: action.paymentResponse?.approvedTotals,\n rejectedTotals: action.paymentResponse?.rejectedTotals,\n },\n currentPage: action.paymentResponse?.payments?.currentPage ?? 1,\n pageCount: action.paymentResponse?.payments.pageCount,\n pageSize: action.paymentResponse?.payments.pageSize ?? values.paymentPageLimit,\n rowCount: action.paymentResponse ? action.paymentResponse.payments.rowCount : 0,\n firstRowOnPage: action.paymentResponse?.payments.firstRowOnPage,\n lastRowOnPage: action.paymentResponse?.payments.lastRowOnPage,\n paymentsErrorMessage: null,\n };\n\n case ADD_DASHBOARD_PAYMENTS:\n return {\n ...state,\n loadingPayments: false,\n dashboardPayments: action.paymentResponse?.payments.results,\n paymentsErrorMessage: null,\n };\n\n case FETCH_PAYMENTS_ERROR:\n return {\n ...state,\n loadingPayments: false,\n payments: null,\n paymentsErrorMessage: action.error,\n };\n\n case LOAD_PAYMENT_FILTERS:\n return {\n ...state,\n filters: action.filters,\n loadingPayments: true,\n payments: null,\n currentPage: 1,\n };\n\n case BEGINNING_PAYMENT:\n return {\n ...state,\n beginningPayment: true,\n plexoUrl: null,\n beginPaymentErrorMessage: null,\n };\n\n case BEGIN_PAYMENT_SUCCESS:\n return {\n ...state,\n beginningPayment: false,\n plexoUrl: action.confirmPaymentResponse.plexoUrl,\n paymentId: action.confirmPaymentResponse.paymentId,\n beginPaymentErrorMessage: null,\n paymentUrl: action.paymentUrl,\n };\n\n case BEGIN_PAYMENT_ERROR:\n return {\n ...state,\n beginningPayment: false,\n plexoUrl: null,\n beginPaymentErrorMessage: action.error,\n };\n\n case GETTING_PAYMENT:\n return {\n ...state,\n gettingPayment: true,\n issuer: null,\n getPaymentErrorMessage: null,\n };\n\n case GET_PAYMENT_SUCCESS:\n return {\n ...state,\n gettingPayment: false,\n selectedPayment: action.paymentResponse,\n getPaymentErrorMessage: null,\n };\n\n case GET_PAYMENT_ERROR:\n return {\n ...state,\n gettingPayment: false,\n issuer: null,\n getPaymentErrorMessage: action.error,\n };\n\n case CLEAR_INSTRUMENT:\n return {\n ...state,\n selectedPayment: null,\n };\n\n case CONFIRMING_PAYMENT:\n return {\n ...state,\n confirmingPayment: true,\n confirmPaymentSuccess: false,\n confirmPaymentErrorMessage: null,\n };\n\n case CONFIRM_PAYMENT_SUCCESS:\n return {\n ...state,\n confirmingPayment: false,\n confirmPaymentSuccess: true,\n confirmedPayment: action.response,\n confirmPaymentErrorMessage: null,\n };\n\n case CONFIRM_PAYMENT_ERROR:\n return {\n ...state,\n confirmingPayment: false,\n confirmPaymentSuccess: false,\n confirmPaymentErrorMessage: action.error,\n };\n\n case CANCELLING_PAYMENT:\n return {\n ...state,\n cancelPaymentSuccess: false,\n cancelPaymentErrorMessage: null,\n cancellingPayment: true,\n };\n\n case CANCEL_PAYMENT_SUCCESS:\n let newTotals = state.paymentsTotals;\n let newPayments =\n state.payments &&\n state.payments?.map((payment: Payment) => {\n if (action.plexoReferenceId === payment.plexoReferenceId) {\n if (payment.amount.currency === Currency.DOLAR) {\n newTotals.approvedTotals.dollarAmount -= payment.amount.value;\n newTotals.approvedTotals.dollarCount--;\n newTotals.rejectedTotals.dollarAmount += payment.amount.value;\n newTotals.rejectedTotals.dollarCount++;\n } else {\n newTotals.approvedTotals.uruguayanPesoAmount -= payment.amount.value;\n newTotals.approvedTotals.uruguayanPesoCount--;\n newTotals.rejectedTotals.uruguayanPesoAmount += payment.amount.value;\n newTotals.rejectedTotals.uruguayanPesoCount++;\n }\n\n return {\n ...payment,\n status: PaymentStatusEnum.CANCELLED,\n };\n } else {\n return payment;\n }\n });\n\n let newPaymentsDashboardPayments =\n state.dashboardPayments &&\n state.dashboardPayments?.map((payment: Payment) => {\n if (action.plexoReferenceId === payment.plexoReferenceId) {\n if (payment.amount.currency === Currency.DOLAR) {\n newTotals.approvedTotals.dollarAmount -= payment.amount.value;\n newTotals.approvedTotals.dollarCount--;\n newTotals.rejectedTotals.dollarAmount += payment.amount.value;\n newTotals.rejectedTotals.dollarCount++;\n } else {\n newTotals.approvedTotals.uruguayanPesoAmount -= payment.amount.value;\n newTotals.approvedTotals.uruguayanPesoCount--;\n newTotals.rejectedTotals.uruguayanPesoAmount += payment.amount.value;\n newTotals.rejectedTotals.uruguayanPesoCount++;\n }\n\n return {\n ...payment,\n status: PaymentStatusEnum.CANCELLED,\n };\n } else {\n return payment;\n }\n });\n\n return {\n ...state,\n cancelPaymentSuccess: true,\n cancelPaymentErrorMessage: null,\n cancellingPayment: false,\n dashboardPayments: newPaymentsDashboardPayments,\n payments: newPayments,\n paymentsTotals: newTotals,\n };\n\n case CANCEL_PAYMENT_ERROR:\n return {\n ...state,\n cancelPaymentSuccess: false,\n cancelPaymentErrorMessage: action.error,\n cancellingPayment: false,\n };\n\n case VISA_REDIRECTED:\n return {\n ...state,\n confirmingPayment: true,\n };\n\n case REGISTER_CALLBACK_FAILED:\n return {\n ...state,\n confirmingPayment: false,\n confirmPaymentSuccess: false,\n //confirmPaymentErrorMessage: action.response,\n };\n\n case TRANSACTION_CALLBACK:\n return {\n ...state,\n confirmingPayment: false,\n confirmPaymentSuccess:\n action.response.isSuccess &&\n (action.response.status === PaymentStatusEnum.APPROVED ||\n action.response.status === PaymentStatusEnum.PENDING),\n confirmedPayment: action.response.paymentInfo\n ? {\n amountValue: action.response.totalAmount,\n currency: action.response.paymentInfo.amount.currency,\n errorCode: action.response.errorCode,\n selectedInstallment: action.response.paymentInfo.selectedInstallment,\n isSuccess: action.response.isSuccess,\n message: action.response.message,\n plexoReferenceId: action.response.paymentInfo.plexoReferenceId,\n validationErrors: action.response.validationErrors,\n plexoResultText: action.response.paymentInfo.plexoResultText,\n linkReference: action.response.linkReference,\n }\n : null,\n transactionPayment: action.response.paymentInfo ?? null,\n confirmPaymentErrorMessage: action.response.message\n ? action.response.message\n : action.response.status === PaymentStatusEnum.REJECTED ||\n action.response.status === PaymentStatusEnum.CANCELLED\n ? 'Pago fallido'\n : null,\n };\n\n case TOGGLE_RESET_CLIENT_FILTER:\n return {\n ...state,\n resetClientFilter: !state.resetClientFilter,\n };\n\n case LOGOUT:\n return {\n ...initialState,\n };\n\n default:\n return state;\n }\n}\n","import {\n ADD_SUB_BUSINESS,\n ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED,\n ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS,\n ADDING_SUB_BUSINESS_PAYMENT_METHOD,\n CREATE_SUB_BUSINESS_FAILED,\n CREATE_SUB_BUSINESS_SUCCESS,\n CREATING_SUB_BUSINESS,\n DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED,\n DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS,\n DELETING_SUB_BUSINESS_PAYMENT_METHOD,\n FETCH_SUB_BUSINESS_FAILED,\n FETCHING_SUB_BUSINESS,\n LogoutActionTypes,\n RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE,\n SubBusinessDataTypes,\n UPDATE_SUB_BUSINESS_FAILED,\n UPDATE_SUB_BUSINESS_SUCCESS,\n UPDATING_SUB_BUSINESS,\n} from '../config/ActionTypes';\nimport { SubBusiness, SubBusinessState } from '../config/types';\n\nexport const initialState: SubBusinessState = {\n loadingSubBusiness: false,\n subBusinesses: null,\n subBusinessErrorMessage: null,\n creatingSubBusiness: false,\n createSubBusinessSuccess: false,\n createSubBusinessErrorMessage: null,\n updatingSubBusiness: false,\n updateSubBusinessSuccess: false,\n updateSubBusinessErrorMessage: null,\n deletingSubBusiness: false,\n deleteSubBusinessSuccess: false,\n deleteSubBusinessErrorMessage: null,\n addingSubBusinessPaymentMethod: false,\n addSubBusinessPaymentMethodSuccess: false,\n addSubBusinessPaymentMethodErrorMessage: null,\n deletingSubBusinessPaymentMethod: false,\n deleteSubBusinessPaymentMethodSuccess: false,\n deleteSubBusinessPaymentMethodErrorMessage: null,\n};\n\nexport function subBusinessReducer(\n state = initialState,\n action: SubBusinessDataTypes | LogoutActionTypes,\n): SubBusinessState {\n switch (action.type) {\n case FETCHING_SUB_BUSINESS:\n return {\n ...state,\n loadingSubBusiness: true,\n subBusinesses: null,\n subBusinessErrorMessage: null,\n };\n\n case ADD_SUB_BUSINESS:\n return {\n ...state,\n loadingSubBusiness: false,\n subBusinesses: action.subBusiness,\n subBusinessErrorMessage: null,\n };\n\n case CREATING_SUB_BUSINESS:\n return {\n ...state,\n creatingSubBusiness: true,\n createSubBusinessSuccess: false,\n createSubBusinessErrorMessage: null,\n };\n\n case CREATE_SUB_BUSINESS_SUCCESS:\n const newSubBusiness = state.subBusinesses ? [...state.subBusinesses] : [];\n newSubBusiness.push({ ...action.subBusiness });\n\n return {\n ...state,\n subBusinesses: newSubBusiness,\n creatingSubBusiness: false,\n createSubBusinessSuccess: true,\n createSubBusinessErrorMessage: null,\n };\n\n case CREATE_SUB_BUSINESS_FAILED:\n return {\n ...state,\n creatingSubBusiness: false,\n createSubBusinessSuccess: false,\n createSubBusinessErrorMessage: action.error,\n };\n\n case FETCH_SUB_BUSINESS_FAILED:\n return {\n ...state,\n loadingSubBusiness: false,\n subBusinesses: null,\n subBusinessErrorMessage: action.error,\n };\n\n case UPDATING_SUB_BUSINESS:\n return {\n ...state,\n updatingSubBusiness: true,\n updateSubBusinessSuccess: false,\n updateSubBusinessErrorMessage: null,\n };\n\n case UPDATE_SUB_BUSINESS_SUCCESS:\n let updatedSubBusiness = state.subBusinesses!.map((s) => {\n if (s.id === action.subBusiness.id) {\n let returnedSubBusiness: SubBusiness = {\n ...s,\n name: action.subBusiness.name,\n status: action.subBusiness.status,\n };\n\n return returnedSubBusiness;\n }\n\n return s;\n });\n\n return {\n ...state,\n updatingSubBusiness: false,\n updateSubBusinessSuccess: true,\n subBusinesses: updatedSubBusiness,\n updateSubBusinessErrorMessage: null,\n };\n\n case ADDING_SUB_BUSINESS_PAYMENT_METHOD:\n return {\n ...state,\n addingSubBusinessPaymentMethod: true,\n addSubBusinessPaymentMethodSuccess: false,\n addSubBusinessPaymentMethodErrorMessage: null,\n };\n\n case ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS:\n return {\n ...state,\n addingSubBusinessPaymentMethod: false,\n addSubBusinessPaymentMethodSuccess: true,\n addSubBusinessPaymentMethodErrorMessage: null,\n };\n\n case ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED:\n return {\n ...state,\n addingSubBusinessPaymentMethod: false,\n addSubBusinessPaymentMethodSuccess: false,\n addSubBusinessPaymentMethodErrorMessage: action.error,\n };\n\n case DELETING_SUB_BUSINESS_PAYMENT_METHOD:\n return {\n ...state,\n deletingSubBusinessPaymentMethod: true,\n deleteSubBusinessPaymentMethodSuccess: false,\n deleteSubBusinessPaymentMethodErrorMessage: null,\n };\n\n case DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS:\n return {\n ...state,\n deletingSubBusinessPaymentMethod: false,\n deleteSubBusinessPaymentMethodSuccess: true,\n deleteSubBusinessPaymentMethodErrorMessage: null,\n };\n\n case DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED:\n return {\n ...state,\n deletingSubBusinessPaymentMethod: false,\n deleteSubBusinessPaymentMethodSuccess: false,\n deleteSubBusinessPaymentMethodErrorMessage: action.error,\n };\n\n case UPDATE_SUB_BUSINESS_FAILED:\n return {\n ...state,\n updatingSubBusiness: false,\n updateSubBusinessSuccess: false,\n updateSubBusinessErrorMessage: action.error,\n };\n\n case RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE:\n return {\n ...state,\n addingSubBusinessPaymentMethod: false,\n addSubBusinessPaymentMethodSuccess: false,\n addSubBusinessPaymentMethodErrorMessage: null,\n deletingSubBusinessPaymentMethod: false,\n deleteSubBusinessPaymentMethodSuccess: false,\n deleteSubBusinessPaymentMethodErrorMessage: null,\n };\n\n default:\n return state;\n }\n}\n","import * as Sentry from '@sentry/react';\nimport { applyMiddleware, combineReducers, compose, createStore } from 'redux';\nimport thunk, { ThunkMiddleware } from 'redux-thunk';\nimport signalRMiddleware from '../middlewares/signalRMiddleware';\nimport { authReducer } from '../reducers/auth';\nimport { businessReducer } from '../reducers/business';\nimport { clientsReducer } from '../reducers/clients';\nimport { collaboratorsReducer } from '../reducers/collaborators';\nimport { linksReducer } from '../reducers/links';\nimport { notificationsReducer } from '../reducers/notifications';\nimport { paymentMethodsReducer } from '../reducers/paymentMethods';\nimport { paymentsReducer } from '../reducers/payments';\nimport { subBusinessReducer } from '../reducers/subBusiness';\nimport { AppActions } from './ActionTypes';\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: typeof compose;\n }\n}\n\nexport const rootReducer = combineReducers({\n auth: authReducer,\n business: businessReducer,\n collaborators: collaboratorsReducer,\n paymentMethods: paymentMethodsReducer,\n links: linksReducer,\n payments: paymentsReducer,\n clients: clientsReducer,\n notifications: notificationsReducer,\n subBusiness: subBusinessReducer,\n});\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\nconst sentryReduxEnhancer = Sentry.createReduxEnhancer();\n\nexport type AppState = ReturnType;\n\nexport const store = createStore(\n rootReducer,\n composeEnhancers(\n applyMiddleware(thunk as ThunkMiddleware, signalRMiddleware),\n sentryReduxEnhancer,\n ),\n);\n","import { createMuiTheme } from '@material-ui/core/styles';\nimport styles from './_variables.module.scss';\n\nexport const theme = createMuiTheme({\n palette: {\n primary: {\n main: styles.primary,\n light: '#E8F0F8',\n },\n secondary: {\n main: styles.secondary,\n },\n error: {\n main: '#FF0000',\n light: 'rgb(from #FF0000 r g b / 10%',\n dark: '#FF0000',\n },\n warning: {\n main: '#ffc400',\n light: '#fff9e5',\n dark: '#ffc400',\n },\n success: {\n main: '#1FD286',\n light: 'rgb(from #1FD286 r g b / 10%',\n dark: '#039054',\n },\n info: {\n main: styles.slateBlue,\n light: styles.slateBlueLight,\n dark: styles.slateBlue,\n },\n background: {\n default: '#f6f6f6',\n },\n },\n typography: {\n fontFamily: `\"Rubik\", sans-serif`,\n h1: {\n fontSize: '3.75rem',\n },\n h2: {\n fontSize: '3rem',\n },\n h3: {\n fontSize: '2.125rem',\n },\n h4: {\n fontSize: '1.5rem',\n },\n h5: {\n fontSize: '1.25rem',\n },\n h6: {\n fontSize: '1.0625rem',\n },\n subtitle1: {\n color: styles.slateBlue,\n fontSize: '0.875rem',\n fontWeight: Number(styles.normalTextWeight),\n },\n subtitle2: {\n color: styles.slateBlue,\n fontSize: '0.9375rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n },\n breakpoints: {\n values: {\n xs: 300,\n sm: 768,\n md: 960,\n lg: 1280,\n xl: 1920,\n },\n },\n overrides: {\n MuiButton: {\n root: {\n borderRadius: 6,\n textTransform: 'none',\n padding: '0.5rem 1rem',\n fontSize: 16,\n fontWeight: Number(styles.normalTextWeight),\n minWidth: '9.375rem',\n minHeight: '2.5rem',\n },\n outlined: {\n padding: '0.5rem 1rem',\n },\n contained: {\n boxShadow: 'none',\n },\n containedPrimary: {\n color: styles.white,\n border: `1px solid ${styles.primary}`,\n boxShadow: 'none !important',\n '@media (hover: hover) and (pointer: fine)': {\n '&:hover': {\n color: styles.primary,\n boxShadow: 'none !important',\n backgroundColor: styles.white,\n border: `1px solid ${styles.primary}`,\n },\n },\n '&.Mui-disabled': {\n backgroundColor: `${styles.primaryDisabled} !important`,\n boxShadow: 'none',\n borderColor: 'transparent !important',\n color: `${styles.white} !important`,\n },\n },\n outlinedSecondary: {\n color: styles.textButtonSecondary,\n borderColor: styles.borderButtonSecondary,\n fontWeight: Number(styles.normalTextWeight),\n backgroundColor: styles.white,\n '&:hover': {\n borderColor: styles.borderButtonSecondary,\n backgroundColor: styles.borderButtonSecondary,\n '@media (max-width: 768px)': {\n backgroundColor: `${styles.white} !important`,\n },\n },\n '&.Mui-disabled': {\n color: styles.textButtonSecondary,\n borderColor: styles.borderButtonSecondary,\n fontWeight: Number(styles.normalTextWeight),\n backgroundColor: styles.white,\n opacity: 0.5,\n },\n },\n },\n MuiIconButton: {\n root: {\n borderRadius: '4px',\n '&:hover': {\n '& svg': {\n '& rect': {\n fill: styles.borderButtonSecondary,\n },\n },\n },\n },\n },\n MuiChip: {\n root: {\n color: styles.slateBlue,\n border: `1px solid ${styles.borderButtonSecondary}`,\n width: '2.75rem',\n height: '2.75rem',\n borderRadius: '0.25rem',\n backgroundColor: styles.white,\n },\n clickable: {\n '&:hover': {\n backgroundColor: styles.borderButtonSecondary,\n },\n '&:focus': {\n backgroundColor: styles.borderButtonSecondary,\n },\n },\n clickableColorPrimary: {\n borderColor: styles.primary,\n },\n colorPrimary: {\n color: styles.white,\n },\n },\n MuiTab: {\n root: {\n textTransform: 'none',\n padding: '0.375rem 1.25rem',\n '@media (min-width: 768px)': {\n minWidth: 0,\n },\n },\n },\n MuiBackdrop: {\n root: {\n backgroundColor: 'rgba(112, 112, 112, 0.9)',\n },\n },\n MuiAppBar: {\n positionSticky: {\n top: 0,\n },\n colorPrimary: {\n backgroundColor: styles.white,\n boxShadow: styles.headerShadow,\n },\n colorSecondary: {\n backgroundColor: styles.secondary,\n boxShadow: styles.publicHeaderShadow,\n },\n },\n MuiPaper: {\n elevation1: {\n boxShadow: styles.boxShadow,\n },\n elevation2: {\n padding: '2.6rem 2rem 2rem',\n boxShadow: styles.boxShadow,\n width: '100%',\n marginTop: '1rem',\n },\n elevation3: {\n padding: '0.8rem 1.6rem',\n boxShadow: styles.boxShadow,\n width: '100%',\n marginTop: '1rem',\n },\n elevation8: {\n boxShadow: styles.boxShadowDropdownMenu,\n },\n },\n MuiOutlinedInput: {\n root: {\n '& $notchedOutline': {\n borderColor: styles.borderButtonSecondary,\n },\n '&:hover $notchedOutline': {\n borderColor: styles.borderButtonSecondary,\n },\n '&:focus $notchedOutline': {\n borderColor: styles.borderButtonSecondary,\n },\n color: styles.slateBlue,\n '&.Mui-disabled': {\n backgroundColor: styles.lightGrey,\n color: styles.iconColor,\n '& $notchedOutline': {\n borderColor: styles.lightGrey,\n },\n },\n },\n },\n MuiFormLabel: {\n root: {\n color: styles.slateBlue,\n },\n },\n MuiFormControlLabel: {\n root: {\n marginRight: 0,\n },\n },\n MuiSelect: {\n icon: {\n color: styles.slateBlue,\n },\n },\n MuiTableContainer: {\n root: {\n padding: '1.5rem',\n },\n },\n MuiTableRow: {\n root: {\n backgroundColor: styles.white,\n transition: 'background-color 500ms',\n border: 'none',\n '&.MuiTableRow-hover:hover': {\n backgroundColor: 'unset',\n cursor: 'default',\n },\n '&.MuiTableRow-head': {\n '&:hover': {\n backgroundColor: styles.greyTableHead,\n },\n },\n },\n head: {\n backgroundColor: styles.greyTableHead,\n '&:hover': {\n backgroundColor: styles.grayTableHead,\n cursor: 'default',\n },\n },\n },\n MuiTableCell: {\n root: {\n textAlign: 'center',\n border: 'none',\n fontSize: '0.875rem',\n borderBottom: 'none',\n padding: '0.25rem',\n wordBreak: 'break-word',\n maxWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n head: {\n color: styles.slateBlue,\n fontWeight: 'bold',\n marginLeft: '1rem',\n whiteSpace: 'nowrap',\n minWidth: '6rem',\n },\n body: {\n color: styles.black,\n },\n },\n MuiListItem: {\n root: {\n '&.Mui-selected': {\n backgroundColor: styles.borderButtonSecondary,\n },\n },\n button: {\n '&:hover': {\n backgroundColor: styles.borderButtonSecondary,\n },\n },\n },\n MuiTableSortLabel: {\n root: {\n transform: 'translateX(1rem)',\n '&.MuiTableSortLabel-active': {\n color: styles.slateBlue,\n },\n },\n },\n MuiLink: {\n underlineHover: {\n '&:hover': {\n textDecoration: 'none',\n },\n },\n },\n MuiTooltip: {\n tooltip: {\n fontSize: '0.75rem',\n },\n touch: {\n fontSize: '0.75rem',\n padding: '0.5rem',\n },\n },\n MuiDivider: {\n root: {\n height: '1px',\n backgroundColor: styles.dividerHorizontal,\n },\n },\n },\n props: {\n MuiTableRow: {\n hover: true,\n },\n MuiTableCell: {\n align: 'center',\n },\n },\n});\n","export default __webpack_public_path__ + \"static/media/logo-blue.a507fd12.svg\";","import { Theme, Typography, createStyles, makeStyles, useMediaQuery, useTheme } from '@material-ui/core';\nimport { ReactNode } from 'react';\nimport logo from '../../assets/logo-blue.svg';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n flexDirection: 'row',\n gap: '1rem',\n justifyContent: 'center',\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'column',\n padding: '0 1rem',\n alignItems: 'center',\n },\n },\n informationContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'flex-start',\n gap: '1rem',\n minWidth: '38.5rem',\n [theme.breakpoints.down('sm')]: {\n gap: '0.5rem',\n width: '100%',\n minWidth: 'auto',\n justifyContent: 'center',\n alignItems: 'center',\n textAlign: 'center',\n marginBottom: '5%',\n },\n [theme.breakpoints.up('xl')]: {\n width: '50%',\n },\n },\n informationTitle: {\n paddingTop: '1rem',\n textAlign: 'left',\n fontSize: '3.8125rem',\n color: styles.secondary,\n [theme.breakpoints.down('lg')]: {\n maxWidth: '36.875rem',\n },\n [theme.breakpoints.down('sm')]: {\n paddingTop: '0',\n textAlign: 'center',\n fontSize: '2rem',\n },\n },\n informationSubtitle: {\n textAlign: 'left',\n fontSize: '1.125rem',\n color: styles.secondary,\n fontWeight: Number(styles.normalTextWeight),\n [theme.breakpoints.down('sm')]: {\n textAlign: 'center',\n textWrap: 'wrap',\n padding: '0 2rem',\n },\n [theme.breakpoints.down('xs')]: {\n padding: '0 1rem',\n },\n },\n detailTitle: {\n fontSize: '1.125rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n rowTitle: {\n fontSize: '0.875rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n logo: {\n width: 'auto',\n height: '4.6875rem',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n animation: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n [theme.breakpoints.down('sm')]: {\n height: 'auto',\n },\n '& div': {\n width: '18rem',\n [theme.breakpoints.down('sm')]: {\n width: '14rem',\n },\n },\n },\n }),\n);\n\ninterface LandingLayoutProps {\n title: string;\n subtitle?: string | JSX.Element;\n children?: ReactNode;\n content?: JSX.Element;\n animation?: JSX.Element;\n}\n\nfunction LandingLayout({ title, subtitle, content, animation, children }: LandingLayoutProps) {\n const classes = useStyles();\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\n\n return (\n <>\n
\n
\n \"logo\"\n {!isDesktop && animation &&
{animation}
}\n \n {title}\n \n \n {subtitle}\n \n {children}\n {animation && content}\n
\n {isDesktop && animation &&
{animation}
}\n {!animation && content}\n
\n \n );\n}\n\nexport default LandingLayout;\n","import { Button } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport { Component, ErrorInfo, ReactNode } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport errorAnimation from '../../assets/plinks-error.json';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { LandingLayout } from '../Landing';\n\ninterface Props {\n children: ReactNode;\n navigate: (path: string) => void;\n}\n\ninterface State {\n hasError: boolean;\n}\n\nclass ErrorBoundary extends Component {\n state: State = {\n hasError: false,\n };\n\n static getDerivedStateFromError(_: Error): State {\n console.log(_);\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error('Uncaught error:', error, errorInfo);\n }\n\n render() {\n const errorAnimationData = ;\n\n const handleOnclick = () => {\n if (urlHelper.isPublicPage(window.location.pathname)) {\n this.props.navigate('/');\n } else {\n this.props.navigate('/dashboard');\n }\n window.location.reload();\n };\n\n if (this.state.hasError) {\n return (\n
\n
\n \n

Por favor vuelve a intentarlo más tarde

\n \n \n }\n />\n
\n
\n );\n }\n\n return this.props.children;\n }\n}\n\nfunction ErrorBoundaryWithNavigate(props: Omit) {\n const navigate = useNavigate();\n return ;\n}\n\nexport default ErrorBoundaryWithNavigate;\n","import { createStyles, Theme, makeStyles, Typography } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport alertAnimation from '../../assets/plinks-alert.json';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n marginTop: '2rem',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n }),\n);\n\nfunction Forbidden() {\n const classes = useStyles();\n\n return (\n
\n \n No tienes permisos para acceder a la página solicitada\n
\n );\n}\n\nexport default Forbidden;\n","import moment from 'moment';\nimport * as Yup from 'yup';\n\nconst requiredString = 'Campo requerido';\nconst passwordFormatString = 'La contraseña debe tener al menos una mayúscula, una minúscula y un número';\nconst mailString = 'Formato de mail inválido';\nconst passwordLength = 6;\nconst passwordLengthErrorString = `La contraseña debe tener al menos ${passwordLength} caracteres`;\nconst phoneString = 'El teléfono solo puede incluir números';\nconst cellphoneFormatString = 'El celular solo puede incluir números';\nconst numberString = 'Debe ser un número mayor a cero';\nconst BANRED_ISSUER_ID = '23';\nconst REDPAGOS_ISSUER_ID = '19';\nconst ISSUERS_WITHOUT_ACQUIRER = [BANRED_ISSUER_ID, REDPAGOS_ISSUER_ID];\n\nconst passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/;\nconst businessNameRegex = /^[a-zA-Z_-]*$/;\nconst phoneRegex = /^[0-9]*$/;\nconst cellphoneRegex = /^[0-9]*$/;\nconst businessTextRegex = /^((?!(empresa|EMPRESA)).)*$/;\n\nconst LoginSchema = Yup.object().shape({\n email: Yup.string().email(mailString).required(requiredString),\n password: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .min(passwordLength, passwordLengthErrorString),\n});\n\nconst ResetPasswordSchema = Yup.object().shape({\n email: Yup.string().email(mailString).required(requiredString),\n});\n\nconst RegisterUserSchema = Yup.object().shape({\n email: Yup.string().email(mailString).required(requiredString),\n password: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .min(passwordLength, passwordLengthErrorString),\n repeatPassword: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .oneOf([Yup.ref('password'), null], 'Las contraseñas no coinciden'),\n names: Yup.string()\n .required(requiredString)\n .min(3, 'Este campo debe tener al menos 3 caracteres.')\n .max(18, 'Este campo no debe tener más de 18 caracteres.'),\n surnames: Yup.string()\n .required(requiredString)\n .min(3, 'Este campo debe tener al menos 3 caracteres.')\n .max(18, 'Este campo no debe tener más de 18 caracteres.'),\n telephoneNo: Yup.string().required(requiredString).matches(phoneRegex, phoneString),\n});\n\nconst ChangeEmailSchema = Yup.object().shape({\n email: Yup.string().email(mailString).required(requiredString),\n actualPassword: Yup.string().matches(passwordRegex, passwordFormatString).required(requiredString),\n password: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .notOneOf([Yup.ref('actualPassword'), null], 'La contraseña debe ser distinta a la ya existente')\n .min(passwordLength, passwordLengthErrorString),\n repeatPassword: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .oneOf([Yup.ref('password'), null], 'Las contraseñas no coinciden'),\n});\n\nconst ChangePasswordSchema = Yup.object().shape({\n currentPassword: Yup.string().matches(passwordRegex, passwordFormatString).required(requiredString),\n password: Yup.string()\n .min(passwordLength, passwordLengthErrorString)\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .notOneOf([Yup.ref('actualPassword'), null], 'La contraseña debe ser distinta a la ya existente'),\n repeatPassword: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .oneOf([Yup.ref('password'), null], 'Las contraseñas no coinciden'),\n});\n\nconst ChangeUserPasswordSchema = Yup.object().shape({\n password: Yup.string()\n .min(passwordLength, passwordLengthErrorString)\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString),\n repeatPassword: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .oneOf([Yup.ref('password'), null], 'Las contraseñas no coinciden'),\n});\n\nconst ProfileSchema = Yup.object().shape({\n names: Yup.string().required(requiredString).min(3, 'Este campo debe tener al menos 3 caracteres.'),\n surnames: Yup.string().required(requiredString),\n email: Yup.string().email(mailString).required(requiredString),\n});\n\nconst UserSchema = Yup.object().shape({\n names: Yup.string().required(requiredString),\n surnames: Yup.string().required(requiredString),\n email: Yup.string().email(mailString).required(requiredString),\n password: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .min(passwordLength, passwordLengthErrorString),\n repeatPassword: Yup.string()\n .matches(passwordRegex, passwordFormatString)\n .required(requiredString)\n .oneOf([Yup.ref('password'), null], 'Las contraseñas no coinciden'),\n});\n\nconst LinkSchema = Yup.object().shape({\n value: Yup.number()\n .typeError(numberString)\n .min(1, 'El número debe ser mayor a cero')\n .required(requiredString),\n});\n\nconst SplitLinkSchema = Yup.object().shape({\n amount: Yup.number()\n .typeError(numberString)\n .min(1, 'El número debe ser mayor a cero')\n .required(requiredString),\n subBusinessAmount: Yup.number()\n .typeError(numberString)\n .min(1, 'El número debe ser mayor a cero')\n .required(requiredString),\n});\n\nconst BusinessSchema = Yup.object().shape({\n prettyName: Yup.string()\n .min(3, 'El nombre debe tener al menos 3 caracteres.')\n .max(50, 'El nombre debe tener máximo 50 caracteres.')\n .required(requiredString),\n urlName: Yup.string()\n .min(3, 'El nombre de la url debe tener al menos 3 caracteres.')\n .max(50, 'El nombre de la url debe tener máximo 50 caracteres.')\n .matches(businessNameRegex, 'Formato del nombre incorrecto')\n .matches(businessTextRegex, 'No puede utilizarse la palabra empresa')\n .required(requiredString),\n legalId: Yup.string()\n .required(requiredString)\n .min(12, 'El RUT debe contener 12 caracteres.')\n .max(12, 'El RUT debe contener 12 caracteres.'),\n description: Yup.string().required(requiredString),\n vat: Yup.number().not([99], 'Debes seleccionar un valor'),\n});\n\nconst EditBusinessSchema = Yup.object().shape({\n prettyName: Yup.string()\n .min(3, 'El nombre debe tener al menos 3 caracteres.')\n .max(50, 'El nombre debe tener máximo 50 caracteres.')\n .required(requiredString),\n vat: Yup.number().not([99], 'Debes seleccionar un valor'),\n});\n\nconst PaymentMethodSchema = Yup.object().shape({\n issuer: Yup.string().required(requiredString),\n acquirer: Yup.string().when('issuer', {\n is: (issuer: string) => !ISSUERS_WITHOUT_ACQUIRER.includes(issuer),\n then: Yup.string().required(requiredString),\n }),\n softDescriptor: Yup.string().required(requiredString),\n /* accountNumber: Yup.string().when('issuer', {\n is: (issuer: string) => issuer === BANRED_ISSUER_ID,\n then: Yup.string().required(requiredString),\n }), */\n});\n\nconst QuickLinkSchema = Yup.object().shape({\n currency: Yup.number().required(requiredString),\n amount: Yup.number().typeError(numberString),\n});\n\nconst OnTheFlySchema = Yup.object().shape({\n amount: Yup.number().typeError(numberString).required(requiredString),\n});\n\nconst ShareLinkSchema = Yup.object().shape({\n email: Yup.string().email(mailString).required(requiredString),\n});\n\nconst AddReferenceSchema = Yup.object().shape({\n reference: Yup.string().required(requiredString),\n});\n\nconst ContactSchema = Yup.object().shape({\n name: Yup.string().required(requiredString),\n email: Yup.string().email(mailString).required(requiredString),\n message: Yup.string().required(requiredString),\n});\n\nconst ShareByWhatsAppSchema = Yup.object().shape({\n phone: Yup.string().required(requiredString).matches(cellphoneRegex, cellphoneFormatString),\n});\n\nconst ResendConfirmationSchema = Yup.object().shape({\n email: Yup.string().email(mailString),\n});\n\nconst CsvLinkSchema = Yup.object().shape({\n amount: Yup.string()\n .required(requiredString)\n .test('is-valid-number', 'Debe ser un número válido mayor que 0', (value) => {\n if (!value) return false;\n const parsedValue = parseFloat(value);\n return !isNaN(parsedValue) && parsedValue > 0 && /^\\d+(\\.\\d+)?$/.test(value);\n }),\n currency: Yup.string()\n .required(requiredString)\n .test(\n 'is-valid-currency',\n 'Debe ser un número y los valores posibles son 1 (pesos) y 2 (dólares)',\n (value) => {\n if (!value) return false;\n const parsedValue = parseInt(value, 10);\n return !isNaN(parsedValue) && [1, 2].includes(parsedValue);\n },\n ),\n description: Yup.string().max(50, 'Debe tener como máximo 50 caracteres'),\n reference: Yup.string().max(50, 'Debe tener como máximo 50 caracteres'),\n email: Yup.string().email(mailString),\n validUntil: Yup.string().test(\n 'is-valid-future-date',\n 'Debe ser una fecha válida en formato DD/MM/YYYY y posterior al día de hoy',\n (value) => {\n if (!value) return true;\n const inputDate = moment(value, 'DD/MM/YYYY', true);\n const today = moment().startOf('day');\n return inputDate.isValid() && inputDate.isAfter(today);\n },\n ),\n});\n\nconst schemas = {\n LoginSchema,\n ResetPasswordSchema,\n RegisterUserSchema,\n ChangeEmailSchema,\n ChangePasswordSchema,\n ChangeUserPasswordSchema,\n ProfileSchema,\n UserSchema,\n LinkSchema,\n SplitLinkSchema,\n BusinessSchema,\n EditBusinessSchema,\n PaymentMethodSchema,\n QuickLinkSchema,\n ShareLinkSchema,\n AddReferenceSchema,\n OnTheFlySchema,\n ContactSchema,\n ShareByWhatsAppSchema,\n ResendConfirmationSchema,\n CsvLinkSchema,\n};\n\nexport default schemas;\n","import {\n Collaborator,\n CreateCollaboratorRequest,\n EnableCollaboratorRequest,\n UpdateCollaboratorRequest,\n} from '../store/config/types';\nimport { get, post, httpDelete, put } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const collaboratorsService = {\n fetchCollaborators,\n fetchAllUsers,\n createCollaborator,\n updateCollaborator,\n deleteCollaborator,\n enableCollaborator,\n};\n\nasync function fetchCollaborators(businessId: number): Promise {\n return await get(`${endpoints['collaborators']}/${businessId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function fetchAllUsers(businessId: number, searchTerm?: string): Promise {\n return await get(\n `${endpoints['collaborators']}/all/${businessId}${searchTerm ? `/?filter=${searchTerm}` : ''}`,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function createCollaborator(\n createCollaboratorRequest: CreateCollaboratorRequest,\n): Promise {\n return await post(`${endpoints['collaborators']}/collaborator`, createCollaboratorRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateCollaborator(\n updateCollaboratorRequest: UpdateCollaboratorRequest,\n): Promise {\n return await put(`${endpoints['collaborators']}`, updateCollaboratorRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function deleteCollaborator(collaboratorId: string): Promise {\n return await httpDelete(`${endpoints['collaborators']}/${collaboratorId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function enableCollaborator(\n enableCollaboratorRequest: EnableCollaboratorRequest,\n): Promise {\n return await put(\n `${endpoints['collaborators']}/enable/${enableCollaboratorRequest.userId}`,\n enableCollaboratorRequest,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { collaboratorsService } from '../../services/collaborators.service';\nimport {\n FetchCollaboratorsTypes,\n FETCHING_COLLABORATORS,\n ADD_COLLABORATORS,\n FETCH_COLLABORATORS_FAILED,\n CreateCollaboratorTypes,\n CREATING_COLLABORATOR,\n CREATE_COLLABORATOR_SUCCESS,\n CREATE_COLLABORATOR_FAILED,\n UpdateCollaboratorTypes,\n UPDATING_COLLABORATOR,\n UPDATE_COLLABORATOR_SUCCESS,\n UPDATE_COLLABORATOR_FAILED,\n DeleteCollaboratorTypes,\n DELETING_COLLABORATOR,\n DELETE_COLLABORATOR_SUCCESS,\n DELETE_COLLABORATOR_FAILED,\n EnableCollaboratorTypes,\n ENABLING_COLLABORATOR,\n ENABLE_COLLABORATOR_SUCCESS,\n ENABLE_COLLABORATOR_FAILED,\n} from '../config/ActionTypes';\nimport {\n Collaborator,\n CollaboratorResponse,\n CreateCollaboratorRequest,\n EnableCollaboratorRequest,\n UpdateCollaboratorRequest,\n} from '../config/types';\n\n//#region Fetch collaborators\n\nexport const fetchCollaborators = (businessId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingCollaborators());\n\n return collaboratorsService.fetchCollaborators(businessId).then(\n (response) => {\n dispatch(addCollaborators(response!));\n },\n (error) => {\n dispatch(collaboratorsFailed(error));\n },\n );\n };\n};\n\nexport const fetchAllUsers = (businessId: number, searchTerm?: string) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingCollaborators());\n\n return collaboratorsService.fetchAllUsers(businessId, searchTerm).then(\n (response) => {\n dispatch(addCollaborators(response!));\n },\n (error) => {\n dispatch(collaboratorsFailed(error));\n },\n );\n };\n};\n\nexport const loadingCollaborators = (): FetchCollaboratorsTypes => ({\n type: FETCHING_COLLABORATORS,\n});\n\nexport const addCollaborators = (\n collaboratorsResponse: Collaborator[] | CollaboratorResponse,\n): FetchCollaboratorsTypes => ({\n type: ADD_COLLABORATORS,\n collaboratorsResponse,\n});\n\nexport const collaboratorsFailed = (error: string): FetchCollaboratorsTypes => ({\n type: FETCH_COLLABORATORS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Create collaborator\n\nexport const createCollaborator = (createCollaboratorRequest: CreateCollaboratorRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingCollaborator());\n\n return collaboratorsService.createCollaborator(createCollaboratorRequest).then(\n (response) => {\n dispatch(createCollaboratorSuccess(response!));\n },\n (error) => {\n dispatch(createCollaboratorFailed(error));\n },\n );\n };\n};\n\nexport const creatingCollaborator = (): CreateCollaboratorTypes => ({\n type: CREATING_COLLABORATOR,\n});\n\nexport const createCollaboratorSuccess = (collaborator: Collaborator): CreateCollaboratorTypes => ({\n type: CREATE_COLLABORATOR_SUCCESS,\n collaborator,\n});\n\nexport const createCollaboratorFailed = (error: string): CreateCollaboratorTypes => ({\n type: CREATE_COLLABORATOR_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Update collaborator\n\nexport const updateCollaborator = (updateCollaboratorRequest: UpdateCollaboratorRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingCollaborator());\n\n return collaboratorsService.updateCollaborator(updateCollaboratorRequest).then(\n (response) => {\n dispatch(updateCollaboratorSuccess(response!));\n },\n (error) => {\n dispatch(updateCollaboratorFailed(error));\n },\n );\n };\n};\n\nexport const updatingCollaborator = (): UpdateCollaboratorTypes => ({\n type: UPDATING_COLLABORATOR,\n});\n\nexport const updateCollaboratorSuccess = (collaborator: Collaborator): UpdateCollaboratorTypes => ({\n type: UPDATE_COLLABORATOR_SUCCESS,\n collaborator,\n});\n\nexport const updateCollaboratorFailed = (error: string): UpdateCollaboratorTypes => ({\n type: UPDATE_COLLABORATOR_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Delete collaborator\n\nexport const deleteCollaborator = (collaboratorId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(deletingCollaborator());\n\n return collaboratorsService.deleteCollaborator(collaboratorId).then(\n (response) => {\n dispatch(deleteCollaboratorSuccess(collaboratorId));\n },\n (error) => {\n dispatch(deleteCollaboratorFailed(error));\n },\n );\n };\n};\n\nexport const deletingCollaborator = (): DeleteCollaboratorTypes => ({\n type: DELETING_COLLABORATOR,\n});\n\nexport const deleteCollaboratorSuccess = (collaboratorId: string): DeleteCollaboratorTypes => ({\n type: DELETE_COLLABORATOR_SUCCESS,\n collaboratorId,\n});\n\nexport const deleteCollaboratorFailed = (error: string): DeleteCollaboratorTypes => ({\n type: DELETE_COLLABORATOR_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Enable collaborator\n\nexport const enableCollaborator = (enableCollaboratorRequest: EnableCollaboratorRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(enablingCollaborator());\n\n return collaboratorsService.enableCollaborator(enableCollaboratorRequest).then(\n (response) => {\n dispatch(enableCollaboratorSuccess(enableCollaboratorRequest.userId));\n },\n (error) => {\n dispatch(enableCollaboratorFailed(error));\n },\n );\n };\n};\n\nexport const enablingCollaborator = (): EnableCollaboratorTypes => ({\n type: ENABLING_COLLABORATOR,\n});\n\nexport const enableCollaboratorSuccess = (userId: string): EnableCollaboratorTypes => ({\n type: ENABLE_COLLABORATOR_SUCCESS,\n userId,\n});\n\nexport const enableCollaboratorFailed = (error: string): EnableCollaboratorTypes => ({\n type: ENABLE_COLLABORATOR_FAILED,\n error,\n});\n\n//#endregion\n","import { SVGProps } from 'react';\nimport variables from '../../styles/_variables.module.scss';\n\nfunction CheckCircleIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default CheckCircleIcon;\n","import variables from '../../styles/_variables.module.scss';\n\nfunction ErrorIcon() {\n return (\n \n \n \n );\n}\n\nexport default ErrorIcon;\n","import { Slide, Snackbar, SnackbarContent, makeStyles } from '@material-ui/core';\nimport React from 'react';\nimport { Status } from '../../store/config/enums';\nimport variables from '../../styles/_variables.module.scss';\nimport CheckCircleIcon from '../Icons/CheckCircleIcon';\nimport ErrorIcon from '../Icons/ErrorIcon';\n\nconst useSnackbarStyles = makeStyles((theme) => ({\n snackbar: {\n margin: '3.2rem auto',\n [theme.breakpoints.down('sm')]: {\n width: '92%',\n },\n },\n message: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n fontWeight: 500,\n width: '45rem',\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n icon: {\n marginRight: 15,\n display: 'flex',\n alignItems: 'center',\n },\n}));\n\ninterface CustomSnackbarProps {\n open: boolean;\n message: string;\n autoHide?: number;\n handleClose(event: React.SyntheticEvent): void;\n type: number;\n onExited?: () => void;\n}\n\nfunction CustomSnackbar({ open, message, autoHide, handleClose, type, onExited }: CustomSnackbarProps) {\n const classes = useSnackbarStyles();\n const statusIcon = type === Status.SUCCESS ? : ;\n\n const statusStyle = {\n backgroundColor: type === Status.SUCCESS ? variables.lightestGreen : variables.lightRed,\n border: `1px solid ${type === Status.SUCCESS ? variables.green : variables.red}`,\n color: type === Status.SUCCESS ? variables.green : variables.red,\n };\n\n return (\n \n \n {statusIcon}\n {message}\n \n }\n />\n \n );\n}\n\nexport default CustomSnackbar;\n","import variables from '../../styles/_variables.module.scss';\n\nfunction EyeIcon() {\n return (\n \n \n \n );\n}\n\nexport default EyeIcon;\n","import variables from '../../styles/_variables.module.scss';\n\nfunction EyeSlashIcon() {\n return (\n \n \n \n );\n}\n\nexport default EyeSlashIcon;\n","import { InputAdornment, TextField, TextFieldProps, Typography, makeStyles } from '@material-ui/core';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport { FieldProps } from 'formik';\nimport React, { ChangeEvent } from 'react';\nimport variables from '../../../styles/_variables.module.scss';\n\nconst useTextFieldStyles = makeStyles({\n root: {\n width: '100%',\n },\n icon: {\n cursor: 'pointer',\n },\n error: {\n color: variables.red,\n fontSize: 14,\n },\n});\n\ninterface CustomProps {\n startAdornment?: string;\n noLeadingZeros: boolean;\n}\n\ntype FormTextFieldProps = CustomProps & FieldProps & React.HTMLProps & TextFieldProps;\n\nfunction FormTextField({ startAdornment, noLeadingZeros, field, form, ...props }: FormTextFieldProps) {\n const classes = useTextFieldStyles();\n const hasError = (form.touched[field.name] && form.errors[field.name]) !== undefined;\n\n const handleChange = (event: ChangeEvent) => {\n const { value } = event.target;\n\n // Only numbers and one decimal separator allowed\n let sanitizedValue = value.replace(/[^0-9.]/g, '').replace(/(\\..*)\\./g, '$1');\n\n if (props.type === 'tel') {\n // Limit input to two decimal places\n if (sanitizedValue.includes('.')) {\n const parts = sanitizedValue.split('.');\n if (parts[1] && parts[1].length > 2) {\n parts[1] = parts[1].substring(0, 2);\n }\n sanitizedValue = parts[0] + '.' + parts[1];\n }\n\n // Remove leading zeros\n if (sanitizedValue.startsWith('0')) {\n sanitizedValue = sanitizedValue.replace(/^0+([1-9])/g, '$1').replace(/^0+(\\.)/, '0$1');\n }\n\n event.target.value = sanitizedValue;\n }\n\n field.onChange(event);\n\n if (props.onChange) {\n props.onChange(event);\n }\n };\n\n return (\n <>\n {startAdornment}\n ) : null,\n endAdornment: hasError ? (\n \n \n \n ) : null,\n }}\n {...field}\n onChange={handleChange}\n type={props.type}\n label={props.placeholder}\n disabled={props.disabled}\n multiline={props.multiline}\n rows={props.rows}\n style={props.style}\n />\n {hasError && form.errors[field.name] && (\n {form.errors[field.name]!.toString()}\n )}\n \n );\n}\n\nexport default FormTextField;\n","import { IconButton, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { Field, useField } from 'formik';\nimport { useState } from 'react';\nimport EyeIcon from '../Icons/EyeIcon';\nimport EyeSlashIcon from '../Icons/EyeSlashIcon';\nimport { FormTextField } from '../forms/FormTextField';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n passwordField: {\n position: 'relative',\n },\n eyeButton: {\n padding: '0.5rem',\n position: 'absolute',\n right: '0.625rem',\n top: '60%',\n transform: 'translateY(-50%)',\n '&:hover': {\n borderRadius: '50%',\n },\n },\n eyeButtonError: {\n padding: '0.5rem',\n position: 'absolute',\n right: '2.25rem',\n top: '44%',\n transform: 'translateY(-50%)',\n '&:hover': {\n borderRadius: '50%',\n },\n [theme.breakpoints.down('xs')]: {\n top: '36%',\n },\n },\n }),\n);\n\ninterface PasswordFieldProps {\n inputName: string;\n placeholder?: string;\n inputStyles?: string;\n buttonStyles?: string;\n}\n\nfunction PasswordField({\n inputName = 'password',\n placeholder,\n inputStyles,\n buttonStyles,\n}: PasswordFieldProps) {\n const classes = useStyles();\n const [showPassword, setShowPassword] = useState(false);\n const [field, meta] = useField(inputName);\n\n const togglePasswordVisibility = () => {\n setShowPassword((prev) => !prev);\n };\n\n const { value, touched, error } = meta;\n\n return (\n
\n \n \n {showPassword ? : }\n \n
\n );\n}\n\nexport default PasswordField;\n","import { Button, Theme, createStyles, makeStyles, useMediaQuery, useTheme } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n returnButton: {\n width: 'fit-content',\n minWidth: 'unset',\n [theme.breakpoints.down('sm')]: {\n padding: '0.5rem',\n marginBottom: '1.25rem',\n marginRight: '1rem',\n },\n },\n }),\n);\n\nfunction ReturnButton() {\n const navigate = useNavigate();\n const classes = useStyles();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n navigate(-1)}\n className={classes.returnButton}\n >\n {isMobile ? <>← : 'Volver'}\n \n );\n}\n\nexport default ReturnButton;\n","import {\n Button,\n CircularProgress,\n Divider,\n Theme,\n Tooltip,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\nimport clsx from 'clsx';\nimport { ReactNode } from 'react';\nimport styles from '../../styles/_variables.module.scss';\nimport { ReturnButton } from '../ReturnButton';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n screenTitle: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyContent: 'space-between',\n },\n screenTitleWithSpaceBetween: {\n justifyContent: 'space-between',\n width: '100%',\n },\n screenInfo: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '1rem',\n gap: '0.8rem',\n '& h5': {\n fontWeight: 500,\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n paddingRight: '0.5rem',\n '& h5': { maxWidth: 'unset', width: 'max-content' },\n },\n },\n infoIcon: {\n color: styles.slateBlue,\n fontSize: '2.3rem',\n width: '1.25rem',\n height: '1.25rem',\n },\n titleWithChild: {\n [theme.breakpoints.down('sm')]: {\n gap: '1.5rem',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n },\n submitButton: {\n fontSize: '0.875rem',\n fontWeight: Number(styles.normalTextWeight),\n },\n extraInfo: {\n fontSize: '0.75rem',\n color: styles.slateBlue,\n height: '1.0625rem',\n },\n divider: {\n height: '1.25rem',\n width: '1px',\n backgroundColor: styles.slateBlue,\n opacity: '20%',\n },\n buttonContainer: {\n display: 'flex',\n gap: '1rem',\n },\n returnButton: {\n width: 'fit-content',\n minWidth: 'unset',\n },\n stepText: {\n fontSize: '0.8125rem',\n color: styles.slateBlue,\n },\n titleDivider: {\n width: '1px',\n backgroundColor: styles.slateBlue,\n opacity: '20%',\n },\n }),\n);\n\ninterface ScreenTitleProps {\n title: string;\n elementsAmount?: number | string;\n tooltip?: string;\n children?: ReactNode;\n formId?: string;\n submitButtonText?: string;\n loading?: boolean;\n hasReturnButton?: boolean;\n step?: number;\n}\n\nfunction ScreenTitle({\n title,\n elementsAmount,\n tooltip,\n children,\n formId,\n submitButtonText,\n loading,\n hasReturnButton,\n step,\n}: ScreenTitleProps) {\n const classes = useStyles();\n\n const buttonClasses = clsx({\n [classes.screenTitle]: true,\n [classes.screenTitleWithSpaceBetween]: hasReturnButton || children,\n [classes.titleWithChild]: children,\n });\n\n return (\n
\n
\n {title}\n {tooltip && (\n \n \n \n )}\n {step && (\n <>\n \n {`Paso ${step} de 2`}\n \n )}\n {elementsAmount !== null && elementsAmount !== undefined && (\n <>\n
\n \n {elementsAmount} elemento{elementsAmount !== 1 ? 's' : ''}\n \n \n )}\n
\n
\n {hasReturnButton && }\n {formId ? (\n \n {loading ? : submitButtonText || 'Guardar cambios'}\n \n ) : (\n children\n )}\n
\n
\n );\n}\n\nexport default ScreenTitle;\n","import {\n Button,\n CircularProgress,\n Theme,\n createStyles,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n button: {\n minWidth: '10rem',\n minHeight: '2.75rem',\n [theme.breakpoints.down('sm')]: {\n marginBottom: '1.25rem',\n },\n },\n }),\n);\n\ninterface SubmitButtonProps {\n loading: boolean;\n disabled?: boolean;\n formId: string;\n className?: string;\n label?: string;\n}\n\nfunction SubmitButton({ loading, formId, className, label, disabled }: SubmitButtonProps) {\n const classes = useStyles();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n \n {loading ? (\n \n ) : (\n `${label || 'Guardar cambios'}`\n )}\n \n );\n}\n\nexport default SubmitButton;\n","import {\n Account,\n Business,\n ChangeCredentialsRequest,\n ChangeUserPasswordRequest,\n ConfirmEmailRequest,\n ConfirmResetPasswordRequest,\n ConfirmResetPasswordSuccessResponse,\n LoginRequest,\n LoginResponse,\n RegisterRequest,\n ResetPasswordRequest,\n TokenResponse,\n UnconfirmedUsersResponse,\n User,\n UserCredentials,\n} from '../store/config/types';\nimport { get, post, put } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const authService = {\n login,\n resetPassword,\n confirmResetPassword,\n changeUserPassword,\n registerUser,\n validateRegister,\n registerBusiness,\n getAccount,\n updateAccount,\n modifyCredentials,\n checkEmailAvailability,\n resendConfirmation,\n getUnconfirmedUsers,\n verifyUser,\n};\n\nasync function login({ user }: LoginRequest): Promise {\n return await post(`${endpoints['login']}`, user)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function resetPassword(resetPasswordRequest: ResetPasswordRequest): Promise {\n return await post(`${endpoints['resetPassword']}`, resetPasswordRequest)\n .then((response) => {\n return response.stringBody!;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function confirmResetPassword({\n id,\n token,\n}: ConfirmResetPasswordRequest): Promise {\n return await get(\n `${endpoints['confirmResetPassword']}?id=${id}&token=${token}`,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function changeUserPassword({ userId, newPassword }: ChangeUserPasswordRequest): Promise {\n return await put(`${endpoints['changeUserPassword']}/${userId}`, { newPassword })\n .then((response) => {\n return response.stringBody!;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function registerUser({ user }: RegisterRequest): Promise {\n return await post(`${endpoints['registerUser']}`, user)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function validateRegister({ userId, token }: ConfirmEmailRequest): Promise {\n return await get(`${endpoints['confirmEmail']}?userId=${userId}&token=${token}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function registerBusiness(business: Business): Promise {\n return await post(`${endpoints['registerBusiness']}`, business)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function getAccount(): Promise {\n return await get(`${endpoints['account']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateAccount(account: Account): Promise {\n return await put(`${endpoints['account']}`, account)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function modifyCredentials(changeCredentialsRequest: ChangeCredentialsRequest): Promise {\n return await put(\n `${endpoints['modifyCredentials']}/${changeCredentialsRequest.userId}`,\n changeCredentialsRequest,\n )\n .then((response) => {\n return response.stringBody!;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function checkEmailAvailability(email: string): Promise {\n return await get(`${endpoints['emailVerification']}?email=${email}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function resendConfirmation(userId: string): Promise {\n return await post(`${endpoints['resendConfirmation']}`, { userId })\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function getUnconfirmedUsers(searchTerm?: string): Promise {\n return await get(\n `${endpoints['unconfirmed']}${searchTerm ? `/?keyword=${searchTerm}` : ''}`,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function verifyUser(userId: string): Promise {\n return await put(`${endpoints['verify']}/${userId}`, {})\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport Cookies from 'universal-cookie';\nimport { authService } from '../../services/auth.service';\nimport {\n CHANGE_CREDENTIALS_ERROR,\n CHANGE_CREDENTIALS_SUCCESS,\n CHANGE_USER_PASSWORD_ERROR,\n CHANGE_USER_PASSWORD_SUCCESS,\n CHANGING_CREDENTIALS,\n CHANGING_USER_PASSWORD,\n CONFIRMING_RESET_PASSWORD,\n CONFIRM_RESET_PASSWORD_ERROR,\n CONFIRM_RESET_PASSWORD_SUCCESS,\n ChangeCredentialsActionTypes,\n ChangeUserPasswordActionTypes,\n ConfirmResetPasswordActionTypes,\n GETTING_ACCOUNT,\n GET_ACCOUNT_ERROR,\n GET_ACCOUNT_SUCCESS,\n GetAccountActionTypes,\n GetUnconfirmedUsersActionTypes,\n LOGGING_IN,\n LOGIN_ERROR,\n LOGIN_SUCCESS,\n LOGOUT,\n LoginActionTypes,\n LogoutActionTypes,\n REGISTERING_BUSINESS,\n REGISTERING_USER,\n REGISTER_BUSINESS_ERROR,\n REGISTER_BUSINESS_SUCCESS,\n REGISTER_USER_ERROR,\n REGISTER_USER_SUCCESS,\n RESENDING_CONFIRMATION,\n RESEND_CONFIRMATION_FAILED,\n RESEND_CONFIRMATION_SUCCESS,\n RESETING_PASSWORD,\n RESET_PASSWORD_ERROR,\n RESET_PASSWORD_SUCCESS,\n RegisterBusinessActionTypes,\n RegisterUserActionTypes,\n ResendConfirmationTypes,\n ResetPasswordActionTypes,\n UPDATE_ACCOUNT_ERROR,\n UPDATE_ACCOUNT_SUCCESS,\n UPDATING_ACCOUNT,\n UpdateAccountActionTypes,\n VALIDATE_REGISTER_ERROR,\n VALIDATE_REGISTER_SUCCESS,\n VALIDATING_REGISTER,\n VERIFYING_USER,\n VERIFY_USER_ERROR,\n VERIFY_USER_SUCCESS,\n ValidateRegisterActionTypes,\n VerifyUserActionTypes,\n} from '../config/ActionTypes';\nimport {\n Account,\n Business,\n ChangeCredentialsRequest,\n ChangeUserPasswordRequest,\n ConfirmEmailRequest,\n ConfirmResetPasswordRequest,\n ConfirmResetPasswordSuccessResponse,\n ResetPasswordRequest,\n UnconfirmedUsersResponse,\n User,\n UserCredentials,\n UserRequest,\n} from '../config/types';\n\n//#region Login\n\nexport const login = (user: UserCredentials) => (dispatch: Dispatch) => {\n dispatch(loggingIn());\n\n return authService.login({ user }).then(\n (response) => {\n const cookies = new Cookies();\n cookies.set('token', response!.token, { path: '/' });\n\n dispatch(loginSuccess(response!.user));\n },\n (error) => {\n dispatch(loginError(error));\n },\n );\n};\n\nconst loggingIn = (): LoginActionTypes => ({\n type: LOGGING_IN,\n});\n\nconst loginSuccess = (account: User): LoginActionTypes => ({\n type: LOGIN_SUCCESS,\n account,\n});\n\nconst loginError = (error: string): LoginActionTypes => ({\n type: LOGIN_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Logout\n\nexport const logout = (): LogoutActionTypes => ({\n type: LOGOUT,\n});\n\n//#endregion\n\n//#region Reset password\n\nexport const resetPassword =\n ({ email }: ResetPasswordRequest) =>\n (dispatch: Dispatch) => {\n dispatch(resetingPassword());\n\n const resetPasswordRequest: ResetPasswordRequest = {\n email,\n };\n\n return authService.resetPassword(resetPasswordRequest).then(\n (response) => {\n dispatch(resetPasswordSuccess());\n },\n (error) => {\n dispatch(resetPasswordError(error));\n },\n );\n };\n\nconst resetingPassword = (): ResetPasswordActionTypes => ({\n type: RESETING_PASSWORD,\n});\n\nconst resetPasswordSuccess = (): ResetPasswordActionTypes => ({\n type: RESET_PASSWORD_SUCCESS,\n});\n\nconst resetPasswordError = (error: string): ResetPasswordActionTypes => ({\n type: RESET_PASSWORD_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Confirm reset password\n\nexport const confirmResetPassword =\n ({ id, token }: ConfirmResetPasswordRequest) =>\n (dispatch: Dispatch) => {\n dispatch(confirmingResetPassword());\n\n return authService.confirmResetPassword({ id, token }).then(\n (response) => {\n dispatch(confirmResetPasswordSuccess(response!));\n },\n (error) => {\n dispatch(confirmResetPasswordError(error));\n },\n );\n };\n\nconst confirmingResetPassword = (): ConfirmResetPasswordActionTypes => ({\n type: CONFIRMING_RESET_PASSWORD,\n});\n\nconst confirmResetPasswordSuccess = (\n response: ConfirmResetPasswordSuccessResponse,\n): ConfirmResetPasswordActionTypes => ({\n type: CONFIRM_RESET_PASSWORD_SUCCESS,\n response,\n});\n\nconst confirmResetPasswordError = (error: string): ConfirmResetPasswordActionTypes => ({\n type: CONFIRM_RESET_PASSWORD_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Register user\n\nexport const registerUser = (user: UserRequest) => (dispatch: Dispatch) => {\n dispatch(registeringUser());\n\n return authService.registerUser({ user }).then(\n (response) => {\n dispatch(registerUserSuccess(response!));\n },\n (error) => {\n dispatch(registerUserError(error));\n },\n );\n};\n\nconst registeringUser = (): RegisterUserActionTypes => ({\n type: REGISTERING_USER,\n});\n\nconst registerUserSuccess = (user: UserCredentials): RegisterUserActionTypes => ({\n type: REGISTER_USER_SUCCESS,\n user,\n});\n\nconst registerUserError = (error: string): RegisterUserActionTypes => ({\n type: REGISTER_USER_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Validate register\n\nexport const validateRegister =\n ({ userId, token }: ConfirmEmailRequest) =>\n (dispatch: Dispatch) => {\n dispatch(validatingRegister());\n\n return authService.validateRegister({ userId, token }).then(\n (response) => {\n if (response) {\n const cookies = new Cookies();\n cookies.set('token', response!.token, { path: '/' });\n\n dispatch(validateRegisterSuccess());\n } else {\n dispatch(validateRegisterError('Email ya existente.'));\n }\n },\n (error) => {\n dispatch(validateRegisterError(error));\n },\n );\n };\n\nconst validatingRegister = (): ValidateRegisterActionTypes => ({\n type: VALIDATING_REGISTER,\n});\n\nconst validateRegisterSuccess = (): ValidateRegisterActionTypes => ({\n type: VALIDATE_REGISTER_SUCCESS,\n});\n\nconst validateRegisterError = (error: string): ValidateRegisterActionTypes => ({\n type: VALIDATE_REGISTER_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Register business\n\nexport const registerBusiness = (business: Business) => (dispatch: Dispatch) => {\n dispatch(registeringBusiness());\n\n return authService.registerBusiness(business).then(\n (response) => {\n dispatch(registerBusinessSuccess(response!));\n },\n (error) => {\n dispatch(registerBusinessError(error));\n },\n );\n};\n\nconst registeringBusiness = (): RegisterBusinessActionTypes => ({\n type: REGISTERING_BUSINESS,\n});\n\nconst registerBusinessSuccess = (business: Business): RegisterBusinessActionTypes => ({\n type: REGISTER_BUSINESS_SUCCESS,\n business,\n});\n\nconst registerBusinessError = (error: string): RegisterBusinessActionTypes => ({\n type: REGISTER_BUSINESS_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Get account\n\nexport const getAccount = () => (dispatch: Dispatch) => {\n dispatch(gettingAccount());\n\n return authService.getAccount().then(\n (response) => {\n dispatch(getAccountSuccess(response!));\n },\n (error) => {\n dispatch(getAccountError(error));\n },\n );\n};\n\nconst gettingAccount = (): GetAccountActionTypes => ({\n type: GETTING_ACCOUNT,\n});\n\nconst getAccountSuccess = (account: User): GetAccountActionTypes => ({\n type: GET_ACCOUNT_SUCCESS,\n account,\n});\n\nconst getAccountError = (error: string): GetAccountActionTypes => ({\n type: GET_ACCOUNT_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Update account\n\nexport const updateAccount = (account: Account) => (dispatch: Dispatch) => {\n dispatch(updatingAccount());\n\n return authService.updateAccount(account).then(\n (response) => {\n dispatch(updateAccountSuccess(response!));\n },\n (error) => {\n dispatch(updateAccountError(error));\n },\n );\n};\n\nconst updatingAccount = (): UpdateAccountActionTypes => ({\n type: UPDATING_ACCOUNT,\n});\n\nconst updateAccountSuccess = (account: User): UpdateAccountActionTypes => ({\n type: UPDATE_ACCOUNT_SUCCESS,\n account,\n});\n\nconst updateAccountError = (error: string): UpdateAccountActionTypes => ({\n type: UPDATE_ACCOUNT_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Change credentials\n\nexport const changeCredentials =\n (changeCredentialsRequest: ChangeCredentialsRequest) =>\n (dispatch: Dispatch) => {\n dispatch(changingCredentials());\n\n return authService.modifyCredentials(changeCredentialsRequest).then(\n (response) => {\n dispatch(changeCredentialsSuccess());\n },\n (error) => {\n dispatch(changeCredentialsError(error));\n },\n );\n };\n\nconst changingCredentials = (): ChangeCredentialsActionTypes => ({\n type: CHANGING_CREDENTIALS,\n});\n\nconst changeCredentialsSuccess = (): ChangeCredentialsActionTypes => ({\n type: CHANGE_CREDENTIALS_SUCCESS,\n});\n\nconst changeCredentialsError = (error: string): ChangeCredentialsActionTypes => ({\n type: CHANGE_CREDENTIALS_ERROR,\n error,\n});\n\n//#endregion\n\n//#endregion\n\n//#region Change credentials\n\nexport const changeUserPassword =\n (changeUserPasswordRequest: ChangeUserPasswordRequest) =>\n (dispatch: Dispatch) => {\n dispatch(changingUserPassword());\n\n return authService.changeUserPassword(changeUserPasswordRequest).then(\n (response) => {\n dispatch(changeUserPasswordSuccess());\n },\n (error) => {\n dispatch(changeUserPasswordError(error));\n },\n );\n };\n\nconst changingUserPassword = (): ChangeUserPasswordActionTypes => ({\n type: CHANGING_USER_PASSWORD,\n});\n\nconst changeUserPasswordSuccess = (): ChangeUserPasswordActionTypes => ({\n type: CHANGE_USER_PASSWORD_SUCCESS,\n});\n\nconst changeUserPasswordError = (error: string): ChangeUserPasswordActionTypes => ({\n type: CHANGE_USER_PASSWORD_ERROR,\n error,\n});\n\n//#endregion\n\n//#region Unconfirmed users\n\nexport const getUnconfirmedUsers = (searchTerm?: string) => {\n return (dispatch: Dispatch) => {\n dispatch(gettingUnconfirmedUsers());\n\n return authService.getUnconfirmedUsers(searchTerm).then(\n (response) => {\n dispatch(getUnconfirmedUsersSuccess(response!));\n },\n (error) => {\n dispatch(getUnconfirmedUsersError(error));\n },\n );\n };\n};\n\nconst gettingUnconfirmedUsers = (): GetUnconfirmedUsersActionTypes => ({\n type: 'GETTING_UNCONFIRMED_USERS',\n});\n\nconst getUnconfirmedUsersSuccess = (users: UnconfirmedUsersResponse): GetUnconfirmedUsersActionTypes => ({\n type: 'GET_UNCONFIRMED_USERS_SUCCESS',\n users: users,\n});\n\nconst getUnconfirmedUsersError = (error: string): GetUnconfirmedUsersActionTypes => ({\n type: 'GET_UNCONFIRMED_USERS_ERROR',\n error,\n});\n\n//#endregion\n\n//#region Resend confirmation\n\nexport const resendConfirmation = (email: string) => {\n return (dispatch: Dispatch) => {\n dispatch(resendingConfirmation());\n\n return authService.resendConfirmation(email).then(\n (response) => {\n dispatch(resendConfirmationSuccess(response!));\n },\n (error) => {\n dispatch(resendConfirmationError(error));\n },\n );\n };\n};\n\nexport const resendingConfirmation = (): ResendConfirmationTypes => ({\n type: RESENDING_CONFIRMATION,\n});\n\nexport const resendConfirmationSuccess = (confirmation: string): ResendConfirmationTypes => ({\n type: RESEND_CONFIRMATION_SUCCESS,\n confirmation,\n});\n\nexport const resendConfirmationError = (error: string): ResendConfirmationTypes => ({\n type: RESEND_CONFIRMATION_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Verify User\n\nexport const verifyUser = (userId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(verifyingUser());\n\n return authService.verifyUser(userId).then(\n (response) => {\n dispatch(verifyUserSuccess(response!));\n },\n (error) => {\n dispatch(verifyUserError(error));\n },\n );\n };\n};\n\nexport const verifyingUser = (): VerifyUserActionTypes => ({\n type: VERIFYING_USER,\n});\n\nexport const verifyUserSuccess = (verification: string): VerifyUserActionTypes => ({\n type: VERIFY_USER_SUCCESS,\n verification,\n});\n\nexport const verifyUserError = (error: string): VerifyUserActionTypes => ({\n type: VERIFY_USER_ERROR,\n error,\n});\n\n//#endregion\n","import { Dialog, DialogActions, DialogContent, DialogTitle, Typography } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport schemas from '../../../data/schemas';\nimport { changeCredentials, changeUserPassword } from '../../../store/action_creators/auth.actions';\nimport { Status, UserTypeEnum } from '../../../store/config/enums';\nimport {\n ChangeCredentialsRequest,\n ChangeUserPasswordRequest,\n Collaborator,\n RootState,\n} from '../../../store/config/types';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport PasswordField from '../../PasswordField/PasswordField';\nimport { SubmitButton } from '../../SubmitButton';\n\ninterface ChangePasswordDialogProps {\n open: boolean;\n setOpen: React.Dispatch>;\n collaborator?: Collaborator | null;\n}\n\nexport interface Values {\n currentPassword: string;\n password: string;\n repeatPassword: string;\n}\n\nfunction ChangePasswordDialog({ open, setOpen, collaborator }: ChangePasswordDialogProps) {\n const dispatch = useDispatch();\n const location = useLocation();\n const auth = useSelector((state: RootState) => state.auth);\n const [submitting, setSubmitting] = useState(false);\n\n const isUpdatingOwnPassword =\n location.pathname === '/profile' || auth.account?.type === UserTypeEnum.COLLABORATOR;\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n const submitPassword = (values: Values, helpers: FormikHelpers) => {\n if (auth.account) {\n if (!isUpdatingOwnPassword && collaborator) {\n const ChangeUserPasswordRequest: ChangeUserPasswordRequest = {\n userId: collaborator.userId,\n newPassword: values.password,\n };\n setSubmitting(true);\n dispatch(changeUserPassword(ChangeUserPasswordRequest));\n } else {\n const changeCredentialsRequest: ChangeCredentialsRequest = {\n userId: auth.account.userId,\n email: auth.account.email,\n oldPassword: values.currentPassword,\n newPassword: values.password,\n };\n setSubmitting(true);\n dispatch(changeCredentials(changeCredentialsRequest));\n }\n }\n };\n\n const closeSnack = () => {\n setSubmitting(false);\n\n if (auth.changeCredentialsSuccess || auth.changeUserPasswordSuccess) {\n closeDialog();\n }\n };\n\n return (\n \n \n \n \n \n
\n \n Cambiar contraseña\n {isUpdatingOwnPassword && (\n \n )}\n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport default ChangePasswordDialog;\n","import { Button, Link, Paper, useMediaQuery, useTheme } from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport schemas from '../../../data/schemas';\nimport { createCollaborator, updateCollaborator } from '../../../store/action_creators/collaborators.actions';\nimport { Status, UserTypeEnum } from '../../../store/config/enums';\nimport {\n Collaborator,\n CreateCollaboratorRequest,\n RootState,\n UpdateCollaboratorRequest,\n} from '../../../store/config/types';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport PasswordField from '../../PasswordField/PasswordField';\nimport { ReturnButton } from '../../ReturnButton';\nimport { ScreenTitle } from '../../ScreenTitle';\nimport { SubmitButton } from '../../SubmitButton';\nimport { ChangePasswordDialog } from '../../dialogs/ChangePasswordDialog';\nimport { FormTextField } from '../FormTextField';\n\ninterface UserState {\n collaborator: Collaborator | null;\n}\n\ninterface Values {\n names: string;\n surnames: string;\n email: string;\n password: string;\n repeatPassword: string;\n}\n\nfunction SubUser() {\n const theme = useTheme();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const location = useLocation();\n const userState = location.state as UserState;\n const client = location.state?.client;\n const collaborator = userState?.collaborator;\n const { auth, collaborators } = useSelector((state: RootState) => state);\n const [creatingCollaborator, setCreatingCollaborator] = useState(false);\n const [updatingCollaborator, setUpdatingCollaborator] = useState(false);\n const [resetingPassword, setResetingPassword] = useState(false);\n const [passwordOpen, setPasswordOpen] = useState(false);\n\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const submitCollaborator = (values: Values, helpers: FormikHelpers) => {\n if (auth.account) {\n if (collaborator) {\n setUpdatingCollaborator(true);\n\n const updateCollaboratorRequest: UpdateCollaboratorRequest = {\n userId: collaborator.userId,\n email: collaborator.email,\n businessId: auth.account?.business?.id || -1,\n names: values.names,\n surnames: values.surnames,\n telephoneNo: collaborator.telephoneNo,\n type: 2,\n };\n\n dispatch(updateCollaborator(updateCollaboratorRequest));\n } else {\n setCreatingCollaborator(true);\n\n const createCollaboratorRequest: CreateCollaboratorRequest = {\n active: true,\n businessId: auth.account?.business?.id || -1,\n names: values.names,\n surnames: values.surnames,\n email: values.email,\n password: values.password,\n telephoneNo: '1',\n };\n\n dispatch(createCollaborator(createCollaboratorRequest));\n }\n }\n };\n\n const closeSnack = () => {\n if (collaborator) {\n setUpdatingCollaborator(false);\n setResetingPassword(false);\n } else {\n setCreatingCollaborator(false);\n }\n isSuperAdmin ? navigate('/manage-clients', { state: { client: client } }) : navigate(-1);\n };\n\n const submitButton = (\n \n );\n\n return (\n
\n \n {isSuperAdmin && (\n navigate('/manage-clients', { state: { client: client } })}\n >\n Volver\n \n )}\n {!isMobile && submitButton}\n \n \n \n
\n \n \n \n {collaborator ? (\n
\n setPasswordOpen(true)}>\n Cambiar contraseña\n \n
\n ) : (\n <>\n \n \n \n )}\n
\n {isMobile && (\n <>\n \n {submitButton}\n \n )}\n
\n \n \n \n \n \n \n
\n
\n );\n}\n\nexport default SubUser;\n","export default __webpack_public_path__ + \"static/media/logo.f8b2709d.svg\";","import { SVGProps } from 'react';\nimport variables from '../../styles/_variables.module.scss';\n\nfunction SettingsIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default SettingsIcon;\n","import { Menu, MenuItem, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport colors from '../../styles/_variables.module.scss';\nimport SettingsIcon from '../Icons/SettingsIcon';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n button: {\n background: 'none',\n border: 'none',\n display: 'flex',\n alignItems: 'center',\n padding: 0,\n '&:hover': {\n color: colors.secondaryMain,\n cursor: 'pointer',\n userSelect: 'none',\n '& path': {\n fill: colors.secondaryMain,\n },\n },\n },\n selected: {\n '& path': {\n fill: colors.secondaryMain,\n },\n },\n menu: {\n marginTop: 32,\n '& .MuiMenuItem-root': {\n width: '10rem',\n color: colors.slateBlue,\n margin: '0.5rem 0',\n padding: '0.5rem 0',\n justifyContent: 'center',\n '&:focus': {\n backgroundColor: 'transparent',\n },\n '&:hover': {\n backgroundColor: colors.borderButtonSecondary,\n },\n },\n },\n }),\n);\n\ninterface CogMenuProps {\n acceptsSplitPayments: boolean;\n}\n\nfunction CogMenu({ acceptsSplitPayments }: CogMenuProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const selectOption = (option: string) => {\n navigate(option);\n setAnchorEl(null);\n };\n\n return (\n <>\n \n \n selectOption('/business')}>Empresa\n selectOption('/configuration')}>Configuración\n selectOption('/users')}>Colaboradores\n {acceptsSplitPayments && (\n selectOption('/split-payments')}>Split payments\n )}\n \n \n );\n}\n\nexport default CogMenu;\n","import { useTheme } from '@material-ui/core/styles';\nimport { IconProps } from '../../../data/icon.type';\n\nfunction Clients({ color, className }: IconProps) {\n const theme = useTheme();\n color = color ?? theme.palette.grey[400];\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default Clients;\n","import { SVGProps } from 'react';\nimport variables from '../../../styles/_variables.module.scss';\n\nfunction Dashboard(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default Dashboard;\n","import { SVGProps } from 'react';\nimport variables from '../../../styles/_variables.module.scss';\n\nfunction Payments(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default Payments;\n","import { SVGProps } from 'react';\nimport variables from '../../../styles/_variables.module.scss';\n\nfunction PermanentLink(props: SVGProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport default PermanentLink;\n","import { SVGProps } from 'react';\nimport variables from '../../../styles/_variables.module.scss';\n\nfunction SingleLink(props: SVGProps) {\n return (\n \n \n \n \n \n );\n}\n\nexport default SingleLink;\n","import { UserTypeEnum } from '../../store/config/enums';\nimport { Clients } from '../Icons/Clients';\nimport Dashboard from '../Icons/Dashboard/Dashboard';\nimport { Payments } from '../Icons/Payments';\nimport { PermanentLink } from '../Icons/PermanentLink';\nimport { SingleLink } from '../Icons/SingleLink';\n\nexport const options = [\n {\n name: 'Tablero',\n icon: ,\n route: '/dashboard',\n value: 0,\n roles: [UserTypeEnum.OWNER, UserTypeEnum.COLLABORATOR],\n },\n {\n name: 'Links multiuso',\n icon: ,\n route: '/links',\n secondaryRoute: '/permanent-link',\n value: 1,\n roles: [UserTypeEnum.OWNER, UserTypeEnum.COLLABORATOR],\n },\n {\n name: 'Links de 1 uso',\n icon: ,\n route: '/one-use-links',\n secondaryRoute: '/one-use-link',\n value: 2,\n roles: [UserTypeEnum.OWNER, UserTypeEnum.COLLABORATOR],\n },\n {\n name: 'Pagos',\n icon: ,\n route: '/payments',\n value: 3,\n roles: [UserTypeEnum.SUPERADMIN, UserTypeEnum.OWNER, UserTypeEnum.COLLABORATOR],\n },\n {\n name: 'Clientes',\n icon: ,\n route: '/manage-clients',\n value: 5,\n roles: [UserTypeEnum.SUPERADMIN],\n },\n {\n name: 'Verificaciones',\n icon: ,\n route: '/verifications',\n value: 6,\n roles: [UserTypeEnum.SUPERADMIN],\n },\n {\n name: 'Hidden',\n icon: ,\n route: '/hidden',\n value: 99,\n roles: [UserTypeEnum.SUPERADMIN, UserTypeEnum.OWNER, UserTypeEnum.COLLABORATOR],\n },\n];\n\nexport const settingsOptions = [\n {\n name: 'Empresa',\n route: '/business',\n value: 1,\n roles: [UserTypeEnum.OWNER],\n },\n {\n name: 'Configuración',\n route: '/configuration',\n value: 2,\n roles: [UserTypeEnum.OWNER],\n },\n {\n name: 'Colaboradores',\n route: '/users',\n value: 3,\n roles: [UserTypeEnum.OWNER],\n },\n];\n\nexport const getOptionsFromRole = (role?: UserTypeEnum) => {\n return options.filter((o) => {\n if (role && o.roles?.includes(role)) {\n return o;\n }\n return null;\n });\n};\n\nexport const getActiveTabIndex = (path: string, fromRoute: string) => {\n if (path.includes('/payment')) {\n return fromRoute === '/dashboard' ? 0 : 3;\n }\n return options.findIndex((o) => o.route === path);\n};\n","import { Tab, Tabs } from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { getOptionsFromRole } from './navigationOptions';\n\nfunction getTabOfPath(path: string, fromRoute?: string) {\n // THis workaround is to keep the active tab when the user navigates to the payment detail page\n if (path.includes('/payment')) {\n if (fromRoute === '/dashboard') {\n return 0;\n } else {\n return 3;\n }\n }\n\n switch (path) {\n case '/dashboard':\n return 0;\n\n case '/links':\n return 1;\n\n case '/permanent-link':\n return 1;\n\n case '/one-use-links':\n return 2;\n\n case '/one-use-link':\n return 2;\n\n case '/upload-csv-links':\n return 2;\n\n case '/review-csv-links':\n return 2;\n\n case '/manage-clients':\n return 5;\n\n case '/verifications':\n return 6;\n\n case '/hidden':\n return 99;\n\n default:\n return 99;\n }\n}\ninterface DesktopNavigatonProps {\n role?: UserTypeEnum;\n}\n\nfunction DesktopNavigation({ role }: DesktopNavigatonProps) {\n const navigate = useNavigate();\n const location = useLocation();\n const fromRoute = location.state?.from || '/payments';\n const [value, setValue] = useState(getTabOfPath(location.pathname));\n const options = getOptionsFromRole(role);\n const handleChange = (event: React.ChangeEvent<{}>, newValue: any) => {\n setValue(newValue);\n };\n\n useEffect(() => {\n setValue(getTabOfPath(location.pathname, fromRoute));\n }, [fromRoute, location.pathname]);\n\n return (\n
\n \n {options &&\n options.map((o, index) => {\n return (\n \n {o.icon}\n {o.name}\n \n }\n onClick={() => navigate(o.route)}\n value={o.value}\n classes={{ selected: 'selected-option', root: o.name === 'Hidden' ? 'hidden-option' : '' }}\n />\n );\n })}\n \n
\n );\n}\n\nexport default DesktopNavigation;\n","import { Button, Dialog, DialogContent, DialogTitle } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\nimport Cookies from 'universal-cookie';\nimport { logout } from '../../store/action_creators/auth.actions';\nimport { AppActions } from '../../store/config/ActionTypes';\nimport { RootState } from '../../store/config/types';\n\nexport interface LogoutDialogProps {\n open: boolean;\n setOpen(open: boolean): void;\n}\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n logout: () => dispatch(logout()),\n});\n\nconst connector = connect(null, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & LogoutDialogProps;\n\nfunction LogoutDialog({ logout, open, setOpen }: PropsType) {\n const navigate = useNavigate();\n\n const handleDialogClose = () => {\n setOpen(false);\n };\n\n const confirmLogout = () => {\n setOpen(false);\n logout();\n navigate('/login');\n\n const cookies = new Cookies();\n cookies.remove('token');\n };\n\n return (\n \n \n \n \n \n ¿Estás seguro que deseas cerrar sesión?\n
\n \n \n
\n
\n
\n );\n}\n\nexport default connector(LogoutDialog);\n","import variables from '../../styles/_variables.module.scss';\n\nfunction Close() {\n return (\n \n \n \n );\n}\n\nexport default Close;\n","function Hamburguer() {\n return (\n \n \n \n \n \n );\n}\n\nexport default Hamburguer;\n","function PlexoLinks() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default PlexoLinks;\n","import { SVGProps } from 'react';\nimport variables from '../../styles/_variables.module.scss';\n\nfunction Question(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default Question;\n","import variables from '../../styles/_variables.module.scss';\n\nfunction NavigationBorder() {\n return (\n \n \n \n );\n}\n\nexport default NavigationBorder;\n","import { ReactNode } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport NavigationBorder from '../../Icons/NavigationBorder';\n\ninterface NavigationItemProps {\n path: string;\n secondaryPath?: string;\n setMobileMenuOpened: React.Dispatch>;\n icon?: ReactNode;\n title: string;\n isActive?: boolean;\n handleOptionSelect: (path: string) => void;\n className?: string;\n}\n\nfunction NavigationItem({\n path,\n secondaryPath,\n setMobileMenuOpened,\n icon,\n title,\n isActive,\n handleOptionSelect,\n className,\n}: NavigationItemProps) {\n const location = useLocation();\n\n const isSelected = location.pathname === path || location.pathname === secondaryPath || isActive;\n\n const handleClick = () => {\n handleOptionSelect(path);\n setMobileMenuOpened(false);\n };\n\n return (\n
  • \n \n {isSelected && }\n {icon ? icon :
    }\n {title}\n \n
  • \n );\n}\n\nexport default NavigationItem;\n","import { SVGProps } from 'react';\nimport variables from '../../styles/_variables.module.scss';\n\nfunction Profile(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default Profile;\n","import { Collapse } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { UserTypeEnum } from '../../../store/config/enums';\nimport { RootState } from '../../../store/config/types';\nimport Profile from '../../Icons/Profile';\nimport NavigationItem from './NavigationItem';\n\ninterface ProfileNavigationItemProps {\n setMobileMenuOpened: React.Dispatch>;\n profileExpanded: boolean;\n setProfileExpanded: React.Dispatch>;\n handleOptionSelect: (path: string) => void;\n}\n\nfunction ProfileNavigationItem({\n setMobileMenuOpened,\n profileExpanded,\n setProfileExpanded,\n handleOptionSelect,\n}: ProfileNavigationItemProps) {\n const location = useLocation();\n const isCollaborator = useSelector(\n (state: RootState) => state.auth.account?.type === UserTypeEnum.COLLABORATOR,\n );\n\n const path = location.pathname;\n const isProfileSelected = path === '/profile' || path === '/change-password';\n\n const toggleProfile = () => {\n setProfileExpanded(!profileExpanded);\n };\n\n return !isCollaborator ? (\n }\n title=\"Mi perfil\"\n handleOptionSelect={handleOptionSelect}\n />\n ) : (\n <>\n
  • \n Mi Perfil\n \n
  • \n \n \n \n \n );\n}\n\nexport default ProfileNavigationItem;\n","import { Button, Collapse, Slide } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { UserTypeEnum } from '../../../store/config/enums';\nimport { RootState } from '../../../store/config/types';\nimport Close from '../../Icons/Close';\nimport Hamburguer from '../../Icons/Hamburguer';\nimport PlexoLinks from '../../Icons/PlexoLinks';\nimport Question from '../../Icons/Question';\nimport Settings from '../../Icons/SettingsIcon';\nimport LogoutDialog from '../LogoutDialog';\nimport { getActiveTabIndex, getOptionsFromRole, settingsOptions } from './../navigationOptions';\nimport NavigationItem from './NavigationItem';\nimport ProfileNavigationItem from './ProfileNavigationItem';\n\ninterface MobileNavigationProps {\n mobileMenuOpened: boolean;\n role?: UserTypeEnum;\n setMobileMenuOpened: React.Dispatch>;\n acceptsSplitPayments: boolean;\n}\n\nfunction MobileNavigation({\n mobileMenuOpened,\n role,\n setMobileMenuOpened,\n acceptsSplitPayments,\n}: MobileNavigationProps) {\n const location = useLocation();\n const options = getOptionsFromRole(role);\n const fromRoute = location.state?.from || '/payments';\n const isCollaborator = useSelector(\n (state: RootState) => state.auth.account?.type === UserTypeEnum.COLLABORATOR,\n );\n const [open, setOpen] = useState(false);\n const [settingsExpanded, setSettingsExpanded] = useState(false);\n const [profileExpanded, setProfileExpanded] = useState(false);\n\n const activeTab = getActiveTabIndex(location.pathname, fromRoute);\n const isSettingSelected = settingsOptions.some((option) => location.pathname.includes(option.route));\n\n const toggleSettings = () => {\n setSettingsExpanded(!settingsExpanded);\n };\n\n const handleOptionSelect = (path: string) => {\n const isSettingOption = settingsOptions.some((option) => option.route === path);\n if (!isSettingOption) {\n setSettingsExpanded(false);\n }\n\n if (path !== '/change-password') {\n setProfileExpanded(false);\n }\n };\n\n return (\n <>\n {mobileMenuOpened &&
    }\n \n \n );\n}\n\nexport default MobileNavigation;\n","import { SVGProps } from 'react';\n\nfunction BoltMarginlessIcon(props: SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default BoltMarginlessIcon;\n","import { Button, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport BoltMarginlessIcon from '../../assets/BoltMarginlessIcon';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n button: {\n fontWeight: Number(styles.normalTextWeight),\n height: 'fit-content',\n marginRight: '1rem',\n '& .MuiButton-startIcon': {\n color: styles.white,\n marginRight: '0.5rem',\n },\n [theme.breakpoints.down('md')]: {\n margin: 0,\n },\n },\n }),\n);\n\nfunction OnTheFlyButton() {\n const classes = useStyles();\n const navigate = useNavigate();\n\n return (\n }\n onClick={() => navigate('/on-the-fly-payments')}\n >\n Pago rápido\n \n );\n}\n\nexport default OnTheFlyButton;\n","import { Button, Menu, MenuItem, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { RootState } from '../../store/config/types';\nimport colors from '../../styles/_variables.module.scss';\nimport { ChangePasswordDialog } from '../dialogs/ChangePasswordDialog';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n icon: {\n '&:hover': {\n color: colors.secondaryMain,\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n selected: {\n color: colors.secondaryMain,\n },\n menu: {\n marginTop: 32,\n '& .MuiMenuItem-root': {\n color: colors.slateBlue,\n margin: '0.5rem 0',\n justifyContent: 'center',\n '&:focus': {\n backgroundColor: 'transparent',\n },\n '&:hover': {\n backgroundColor: colors.borderButtonSecondary,\n },\n },\n },\n logoutMenuItem: {\n '&.MuiMenuItem-root': {\n '&:hover': {\n backgroundColor: colors.white,\n },\n },\n },\n }),\n);\n\ninterface UserMenuProps {\n setOpen(value: boolean): void;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst connector = connect(mapStateToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & UserMenuProps;\n\nfunction UserMenu({ auth, setOpen }: PropsType) {\n const classes = useStyles();\n const navigate = useNavigate();\n const location = useLocation();\n const [anchorEl, setAnchorEl] = useState(null);\n const [passwordDialogOpen, setPasswordDialogOpen] = useState(false);\n\n const isFAQsPage = location.pathname === '/faqs' || location.pathname === '/user-faqs';\n const isRegisterStep = urlHelper.isRegisterStep(location.pathname);\n\n const showProfile =\n auth.account?.type === UserTypeEnum.OWNER || auth.account?.type === UserTypeEnum.SUPERADMIN;\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const selectOption = (option: string) => {\n if (option === 'logout') {\n setOpen(true);\n } else if (option === '/user-faqs') {\n window.open('/user-faqs', '_blank');\n } else {\n navigate(option);\n }\n setAnchorEl(null);\n };\n\n return (\n
    \n {auth && auth.account && auth.account.names}\n \n\n \n {showProfile && !isRegisterStep && (\n selectOption('/profile')}>Editar perfil\n )}\n {auth.account?.type !== UserTypeEnum.SUPERADMIN && !isFAQsPage && (\n selectOption('/user-faqs')}>FAQs\n )}\n {auth.account?.type === UserTypeEnum.COLLABORATOR && auth.account?.business?.id && (\n selectOption('/change-password')}>Modificar contraseña\n )}\n \n \n \n \n \n
    \n );\n}\n\nexport default connector(UserMenu);\n","import { AppBar, useMediaQuery, useTheme } from '@material-ui/core';\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport logo from '../../assets/logo.svg';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { RootState } from '../../store/config/types';\nimport CogMenu from './CogMenu';\nimport DesktopNavigation from './DesktopNavigation';\nimport LogoutDialog from './LogoutDialog';\nimport MobileNavigation from './MobileNavigation/MobileNavigation';\nimport OnTheFlyButton from './OnTheFlyButton';\nimport UserMenu from './UserMenu';\n\nfunction Header() {\n const navigate = useNavigate();\n const { auth } = useSelector((state: RootState) => state);\n const [open, setOpen] = useState(false);\n const [mobileMenuOpened, setMobileMenuOpened] = useState(false);\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('lg'));\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n const acceptsOnTheFly = !isSuperAdmin && auth.account && auth.account.business?.acceptsOnTheFly;\n const acceptsSplitPayments = auth.account?.business?.acceptsSplitPayments!;\n\n const goHome = () => {\n navigate('/dashboard');\n };\n\n return (\n \n
    \n {isDesktop && (\n \n )}\n {isDesktop && }\n {!isDesktop && (\n \n )}\n {isDesktop ? (\n
    \n {acceptsOnTheFly && }\n {auth.account && auth.account?.type === UserTypeEnum.OWNER && (\n <>\n \n
    \n \n )}\n \n
    \n ) : (\n <>{acceptsOnTheFly && }\n )}\n \n
    \n \n );\n}\n\nexport default Header;\n","import { Theme, createStyles, makeStyles } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport loadAnimation from '../../assets/loading.json';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n }),\n);\n\ninterface LoadingProps {\n height?: string;\n width?: string;\n}\n\nfunction Loading({ height = '12rem', width = '12rem' }: LoadingProps) {\n const classes = useStyles();\n\n return (\n
    \n \n
    \n );\n}\n\nexport default Loading;\n","export default __webpack_public_path__ + \"static/media/logo-white.b8c894f1.svg\";","export default __webpack_public_path__ + \"static/media/question-circle.6d75f0c7.svg\";","import { AppBar, Button, Link } from '@material-ui/core';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport whiteLogo from '../../assets/logo-white.svg';\nimport logo from '../../assets/logo.svg';\nimport questionCircle from '../../assets/question-circle.svg';\n\ninterface PublicHeaderProps {\n isHome?: boolean;\n}\n\nfunction PublicHeader({ isHome = false }: PublicHeaderProps) {\n const navigate = useNavigate();\n const location = useLocation();\n\n const isRegister =\n location.pathname.includes('verify') ||\n location.pathname.includes('register') ||\n location.pathname.includes('first-payment-method') ||\n location.pathname.includes('request-issuers');\n\n const redirectTo = (path: string) => {\n navigate(path);\n };\n\n return (\n \n
    \n !isRegister && redirectTo('/')}\n />\n {!isHome && !location.pathname.includes('/faqs') && !location.pathname.includes('/user-faqs') ? (\n \n \n \n ) : (\n !location.pathname.includes('/faqs') &&\n !location.pathname.includes('/user-faqs') && (\n
    \n redirectTo('/register')}\n className=\"outlined-home-button\"\n disableElevation\n >\n Registrarme\n \n redirectTo('/login')}\n className=\"contained-home-button\"\n color=\"primary\"\n >\n Ingresar a mi cuenta\n \n
    \n )\n )}\n
    \n
    \n );\n}\n\nexport default PublicHeader;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nfunction ScrollToTop() {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n}\n\nexport default ScrollToTop;\n","import { Button } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport errorAnimation from '../../assets/plinks-error.json';\nimport successAnimation from '../../assets/plinks-success.json';\nimport alertAnimation from '../../assets/plinks-cancelled.json';\nimport { LandingLayout } from '../../components/Landing';\nimport { Loading } from '../../components/Loading';\nimport { getAccount, validateRegister } from '../../store/action_creators/auth.actions';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { AuthState, RootState } from '../../store/config/types';\nimport { urlHelper } from './../../helpers/urlHelper';\nimport { useSelector, useDispatch } from 'react-redux';\n\nfunction ConfirmEmail() {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const errorAnimationData = ;\n const alertAnimationData = ;\n const successAnimationData = ;\n const errorMessage = auth.validateRegisterErrorMessage;\n const alreadyValidated = errorMessage?.includes('ha sido verificado');\n\n useEffect(() => {\n if (\n !auth.validatingRegister &&\n !auth.validateRegisterSuccess &&\n auth.validateRegisterErrorMessage === null\n ) {\n let urlVars = urlHelper.parseQueryString();\n if (urlVars.id && urlVars.token) {\n dispatch(validateRegister({ userId: urlVars.id, token: urlVars.token }));\n }\n }\n }, [auth.validatingRegister, auth.validateRegisterSuccess, auth.validateRegisterErrorMessage, dispatch]);\n\n useEffect(() => {\n if (auth.validateRegisterSuccess && !auth.account && !auth.loggingIn && !auth.loggedIn) {\n dispatch(getAccount());\n }\n }, [auth.validateRegisterSuccess, auth.account, auth.loggingIn, auth.loggedIn, dispatch]);\n\n return (\n
    \n {auth.validatingRegister ? (\n \n ) : !auth.validateRegisterSuccess ? (\n \n {alreadyValidated ? (\n <>\n \n El email que intentas validar fue verificado anteriormente. Por favor, inicia sesión con\n tus datos para acceder a tu cuenta.{' '}\n \n navigate('/login')}\n color=\"primary\"\n variant=\"contained\"\n disableElevation\n >\n Ir al login\n \n \n ) : (\n <>\n Por favor, intenta de nuevo en unos minutos o contáctanos a \n soporte@plexo.com.uy\n para poder ayudarte. Si deseas salir solo debes cerrar la ventana.\n \n )}\n
    \n }\n />\n ) : (\n \n navigate(auth.account!.type === UserTypeEnum.OWNER ? '/register?step=2' : '/login')\n }\n color=\"primary\"\n variant=\"contained\"\n disableElevation\n >\n {auth.account?.type === UserTypeEnum.OWNER ? 'Continuar con el registro' : 'Ir al login'}\n \n }\n />\n )}\n
    \n );\n}\n\nexport default ConfirmEmail;\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAkCAYAAAAU/hMoAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAKaADAAQAAAABAAAAJAAAAAA4sEDuAAAEkklEQVRYCb1YXXIiNxBWC/yWVLhB8A3YEyx7AnsfU7HXcALD4xa2EQZqH41PAP5J5dHeE9g5wTo3wCcIm2yePKPO15oRxiwwI1JGVdCS+kc93eqfGVJrjJP+VVspqinmcm52orFSPDpt7Xdy86SEFMrQ7l2esaJGKJ+nZ8XN7tGHgV/ngUFKmv5vFcv2iwgm4jFb+ozpJNdBmg+YqSz0Ovph25j3ufhEdlH+8g5Y4dDTko7fdVr1sV9nQdO7nLBSZ6ArqcK3CuB9Fo/Haz/JA3FIVehg/nvzMb+CTnYUj8DnrMekcKfzD+du8+n3MttI7po84fKRBoomrpvWh9FywsWYk96V8Bw4rAukxXSK1YRIPZAudMzHX8ZFUdDGkdyzEqJvCdfcto7v53ZyLTWrkaVUyYzMwKwqbOOqMTdvqN27vsNdq8oppOgef2OZLxuW1Z/do73BMnzWfrt/PcyiUcpW0yCD3WyH4AJnPiIadVp79WwBm6Fo967+gmLi3c/TwGHLj5s5Pu8p9CCU8O5PQSkoS7z5NCx7muDo94wL4P9W0nSvdpFSDuGaio3FPcnANUKE0i1ZvjDH+/d+fx24tpJJ9eGhVVxZcnCJmWt4gBqCZeTTyRLaldvTO7mSag55BOuhPN7hUjsFJUlL4GnUZSZdF4g8d+vZRFlr4ztJd34vBAZbMs2rQxySuJbVOcWRMaY+mTt4IHeUbfEMOW9XOianKPJeSN0WmcFKykFeQVd5jpLK4+6mph1Rhkg3TevXhzR43p90rwYI00PBcfHfNvibcnjeEeTu4/5lTQ5ywpFkpTSKZU96119QSW7cHUR9txybWQVOj/cbrlBgE4WjgSqSeGGWaMU8SEnN+kBkSZumi3Yk88Syz3cTyLFmcjjB+0HMHT+3hb8bfp4HBinpy6dS2nVBLyyr1AVF0fZpa28bKed2/nBJQxJgso/r8HYev2qdW8nZRC31W4RqhTuYDDSyEdz4XfCk6BRQ0kMyUfklYvUqt5IvxBA5i/g9WGicqSCIEeVfPU8IDI5uJ5y5JJB01OSo+Ag4cvsZfwien3FlFO7ni4fMYMufgiSdoDORV4ASkrW4eZCmmEbWIc/4JMCg6OPzXvYsyN1QUF68pDWuhlYPCTJ5QOHXM9VI1lkjSEnprL1AjqOhn2dBeSBSui10kr7U04+3WTyz+CAlXRpJrSDWTD4SzIr7fp6U0fjGFwHL+vzVyyI9RXW1Vai49p6VOelf17TFi9lcOyZVJd76ZxfJHhacfum4WOfVIzi6JdUgZ75TtnCXKIrGgdQdlB2T4gc4dAKlSpa/VYkJdxA2T8bF6dF+zS9CYJC7vWCJanqK3+D8c7/nmgd0O65+S9eTBolUGSSd5roKivxgS3ql0uTdgFUHKi7sstI7aHDLHi9WRT78Q+GjQDerEnmmJXBtJb28NFcOsJbfq4y13P0qmqwQirzqOxP1dgXdRlFJoZhWp6807ZoTNSbItpONarTosKQ3KAlKuv+ixvsJbxV20s8aJUSpQy7i3fgesofB6wm8nQzjamtYM+p5XwPOvq//B2xxDFo/jnvFAAAAAElFTkSuQmCC\"","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction AlertTriangle({ color, className }: IconProps) {\n color = color ?? colors.warning;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default AlertTriangle;\n","import colors from '../styles/_variables.module.scss';\n\nfunction UploadIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default UploadIcon;\n","import { CircularProgress } from '@material-ui/core';\nimport React, { Dispatch, SetStateAction, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport UploadIcon from '../../assets/UploadIcon';\nimport dummy from '../../assets/dummy.png';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { RootState } from '../../store/config/types';\n\ninterface ImageUploadProps {\n image: File | null;\n setImage: Dispatch>;\n error: string | null;\n setError: Dispatch>;\n imageRef: React.RefObject;\n isUpdating?: boolean;\n}\n\nconst ImageUpload: React.FC = ({\n isUpdating = false,\n image,\n setImage,\n error,\n setError,\n imageRef,\n}) => {\n const auth = useSelector((state: RootState) => state.auth);\n const imageInput = useRef(null);\n const [loadingImage, setLoadingImage] = useState(false);\n\n const onImageSelected = (files: FileList | null) => {\n if (files) {\n const file = files[0];\n const fileType = file?.type;\n if (file?.size > 5 * 1024 * 1024) {\n setError('*La imagen que intentas cargar supera los 5MB. Por favor, elige otra.');\n setImage(null);\n return;\n }\n if (!['image/jpeg', 'image/jpeg', 'image/png'].includes(fileType)) {\n setError('*La imagen que intentas cargar no está en formato JPG, JPEG o PNG. Por favor, elige otra.');\n setImage(null);\n return;\n }\n setError(null);\n setLoadingImage(false);\n setImage(file);\n\n if (FileReader) {\n const fr = new FileReader();\n fr.onload = function () {\n if (imageRef.current) imageRef.current.src = fr.result!.toString();\n };\n fr.readAsDataURL(file);\n }\n }\n };\n\n const onImageError = () => {\n if (imageRef.current) {\n imageRef.current.src = dummy;\n }\n };\n\n const businessExistingImage =\n auth.account && auth.account?.business?.id ? urlHelper.buildImageUrl(auth.account.business.id) : null;\n\n const imageSrc = error ? dummy : image ? image.name : businessExistingImage || dummy;\n\n return (\n <>\n

    Logo de la empresa

    \n

    Debes proporcionar el logo de tu empresa para su identificación.

    \n
    \n
    \n \"img\"\n {((!image && !isUpdating) || error) && (\n

    \n La imagen que incluyas debe estar en formato JPG, JPEG o PNG y no pesar más de 5MB\n

    \n )}\n
    \n
    \n \n
    \n \n onImageSelected(imageInput && imageInput.current ? imageInput.current?.files : null)\n }\n style={{ display: 'none' }}\n />\n
    \n {error &&

    {error}

    }\n \n );\n};\n\nexport default ImageUpload;\n","import styles from '../../../styles/_variables.module.scss';\n\nfunction QuestionMark() {\n return (\n \n \n \n );\n}\n\nexport default QuestionMark;\n","import { Tooltip, useMediaQuery, useTheme } from '@material-ui/core';\nimport React, { CSSProperties, MutableRefObject, useEffect, useRef, useState } from 'react';\nimport { QuestionMark } from '../Icons/QuestionMark';\n\ninterface VATTooltipProps {\n title: string;\n}\n\nfunction VATTooltip({ title }: VATTooltipProps) {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const tooltipRef: MutableRefObject = useRef(null);\n\n const handleOutsideClick = (event: MouseEvent) => {\n if (tooltipOpen && tooltipRef.current && !tooltipRef.current.contains(event.target as Node)) {\n setTooltipOpen(false);\n }\n };\n\n useEffect(() => {\n if (isMobile) {\n document.addEventListener('mousedown', handleOutsideClick);\n return () => {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }\n // eslint-disable-next-line\n }, [isMobile, tooltipOpen]);\n\n const handleTooltipToggle = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n if (isMobile) {\n setTooltipOpen(!tooltipOpen);\n }\n };\n\n const popperStyles: CSSProperties = {\n pointerEvents: tooltipOpen ? 'auto' : 'none',\n width: '8.75rem',\n };\n\n return (\n setTooltipOpen(false)}\n key={isMobile ? 'mobile' : 'desktop'}\n PopperProps={{ style: popperStyles }}\n >\n (tooltipRef.current = ref) : undefined}>\n \n \n \n );\n}\n\nexport default VATTooltip;\n","import { Currency } from '../store/config/enums';\n\nexport const currencyHelper = {\n getCurrencyToken,\n getCurrencyName,\n mapCurrency,\n isValidCurrency,\n formatCurrencyToNumber,\n};\n\nfunction getCurrencyToken(currency: Currency): string {\n if (currency === Currency.PESO) {\n return '$';\n } else {\n return 'USD';\n }\n}\n\nfunction getCurrencyName(currency: Currency, urlFriendly: boolean = false): string | undefined {\n if (currency === Currency.PESO) {\n return urlFriendly ? 'pesos' : 'Pesos';\n } else if (currency === Currency.DOLAR) {\n return urlFriendly ? 'dolares' : 'Dólares';\n } else {\n return undefined;\n }\n}\n\ntype EnumType = { [s: number]: string };\n\nfunction mapCurrency(enumerable: EnumType, fn: Function): any[] {\n // get all the members of the enum\n let enumMembers: any[] = Object.keys(enumerable).map((key: any) => enumerable[key]);\n\n // we are only interested in the numeric identifiers as these represent the values\n let enumValues: number[] = enumMembers.filter((v) => typeof v === 'number');\n\n // now map through the enum values\n return enumValues.map((m) => fn(m));\n}\n\nfunction isValidCurrency(currency: number) {\n return currency === Currency.PESO || currency === Currency.DOLAR;\n}\n\nfunction formatCurrencyToNumber(currency: string): string {\n const normalizedCurrencyName = currency\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n\n if (normalizedCurrencyName === 'pesos') {\n return Currency.PESO.toString();\n }\n\n if (normalizedCurrencyName === 'dolares') {\n return Currency.DOLAR.toString();\n }\n\n return currency;\n}\n","import moment from 'moment';\nimport { ValidUntil } from '../store/config/enums';\n\nexport const dateHelper = {\n toNiceString,\n toShorterNiceString,\n toEvenShorterNiceString,\n getValidUntilName,\n getDateFromEnum,\n getDashboardPaymentDate,\n};\n\nconst options: Intl.DateTimeFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n\nfunction toNiceString(date: Date): string {\n return new Date(date).toLocaleTimeString('es-ES', options);\n}\n\nfunction toShorterNiceString(date: Date): string {\n const theDate = moment(date);\n\n return theDate.format('DD/MM/YY HH:mm');\n}\n\nfunction toEvenShorterNiceString(date: Date): string {\n const theDate = moment(date);\n\n return theDate.format('DD/MM/YY');\n}\n\nfunction toSendableString(date: moment.Moment): string {\n return date.format('MM/DD/YYYY HH:mm');\n}\n\nfunction getValidUntilName(validUntil: ValidUntil): string {\n switch (validUntil) {\n case ValidUntil.NONE:\n return 'Sin vencimiento';\n\n case ValidUntil.HALFHOUR:\n return 'En media hora';\n\n case ValidUntil.ONEHOUR:\n return 'En una hora';\n\n case ValidUntil.TWOHOURS:\n return 'En dos horas';\n\n case ValidUntil.DAYEND:\n return 'Al final del día';\n\n case ValidUntil.MONTHEND:\n return 'Al final del mes';\n\n case ValidUntil.CUSTOM:\n return 'Personalizado';\n }\n}\n\nfunction getDateFromEnum(validUntil: ValidUntil, validUntilDate: Date): string | null {\n switch (validUntil) {\n case ValidUntil.NONE:\n return null;\n\n case ValidUntil.HALFHOUR:\n return toSendableString(moment().add(30, 'minutes'));\n\n case ValidUntil.ONEHOUR:\n return toSendableString(moment().add(1, 'hour'));\n\n case ValidUntil.TWOHOURS:\n return toSendableString(moment().add(2, 'hours'));\n\n case ValidUntil.DAYEND:\n return toSendableString(moment().endOf('day'));\n\n case ValidUntil.MONTHEND:\n return toSendableString(moment().endOf('month'));\n\n case ValidUntil.CUSTOM:\n return toSendableString(moment(validUntilDate));\n }\n}\n\nfunction getDashboardPaymentDate(date: Date): string {\n const theDate = moment(date);\n const today = moment().startOf('day');\n const yesterday = moment().subtract(1, 'days').startOf('day');\n\n if (theDate.isSame(today, 'd')) {\n return 'Hoy ' + theDate.format('HH:mm');\n } else if (theDate.isSame(yesterday, 'd')) {\n return 'Ayer ' + theDate.format('HH:mm');\n } else {\n return theDate.format('DD/MM/YY HH:mm');\n }\n}\n","import { InclusionLawEnum } from '../store/config/enums';\n\nexport const inclusionLawHelper = {\n getInclusionLawName,\n};\n\nfunction getInclusionLawName(inclusionLaw: InclusionLawEnum): string | undefined {\n switch (inclusionLaw) {\n case InclusionLawEnum.LAW17934:\n return 'Ley 17934';\n case InclusionLawEnum.LAW19210:\n return 'Ley 19210';\n case InclusionLawEnum.NONE:\n return 'Ninguna';\n default:\n return undefined;\n }\n}\n","import { Currency, InclusionLawEnum, ValidUntil } from '../../store/config/enums';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { inclusionLawHelper } from '../../helpers/inclusionLawHelper';\n\nconst options = {\n currency: [\n {\n id: Currency.PESO,\n value: `${currencyHelper.getCurrencyName(Currency.PESO)}`,\n },\n {\n id: Currency.DOLAR,\n value: `${currencyHelper.getCurrencyName(Currency.DOLAR)}`,\n },\n ],\n vatRate: [\n {\n id: 0,\n value: '0%',\n },\n {\n id: 10,\n value: '10%',\n },\n {\n id: 22,\n value: '22%',\n },\n ],\n vatRateFor17934: [\n {\n id: 10,\n value: '10%',\n },\n {\n id: 22,\n value: '22%',\n },\n ],\n validUntil: [\n {\n id: ValidUntil.NONE,\n value: dateHelper.getValidUntilName(ValidUntil.NONE),\n },\n {\n id: ValidUntil.HALFHOUR,\n value: dateHelper.getValidUntilName(ValidUntil.HALFHOUR),\n },\n {\n id: ValidUntil.ONEHOUR,\n value: dateHelper.getValidUntilName(ValidUntil.ONEHOUR),\n },\n {\n id: ValidUntil.TWOHOURS,\n value: dateHelper.getValidUntilName(ValidUntil.TWOHOURS),\n },\n {\n id: ValidUntil.DAYEND,\n value: dateHelper.getValidUntilName(ValidUntil.DAYEND),\n },\n {\n id: ValidUntil.MONTHEND,\n value: dateHelper.getValidUntilName(ValidUntil.MONTHEND),\n },\n {\n id: ValidUntil.CUSTOM,\n value: dateHelper.getValidUntilName(ValidUntil.CUSTOM),\n },\n ],\n inclusionLaw: [\n {\n id: 0,\n value: inclusionLawHelper.getInclusionLawName(InclusionLawEnum.NONE),\n },\n {\n id: 1,\n value: inclusionLawHelper.getInclusionLawName(InclusionLawEnum.LAW17934),\n },\n {\n id: 6,\n value: inclusionLawHelper.getInclusionLawName(InclusionLawEnum.LAW19210),\n },\n ],\n};\n\nexport default options;\n","import styles from '../styles/_variables.module.scss';\n\nfunction AddIcon() {\n return (\n \n \n \n );\n}\n\nexport default AddIcon;\n","import styles from '../styles/_variables.module.scss';\n\nfunction DeleteIcon({ disabled, borderColor }: { disabled?: boolean; borderColor?: string }) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default DeleteIcon;\n","import { PaymentMethod, PaymentMethodsState } from '../store/config/types';\n\nexport const issuerHelper = {\n getIssuersList,\n};\n\nfunction getIssuersList(paymentMethods: PaymentMethodsState, paymentMethod: PaymentMethod | null) {\n return paymentMethods?.issuers?.map((i) => {\n const existsPaymentMethod =\n paymentMethods.paymentMethods &&\n paymentMethods.paymentMethods.filter((c) => c.issuerId && c.issuerId === Number(i.id)).length > 0;\n\n return {\n id: i.id,\n value: i.issuer,\n disabled: paymentMethod ? false : existsPaymentMethod,\n paymentProcessors: i.paymentProcessors,\n };\n });\n}\n","import { filteringHelper } from '../helpers/filteringHelper';\nimport { LinkTypeEnum } from '../store/config/enums';\nimport {\n CreateLinkRequest,\n CreateLinksWithCSVRequest,\n CreateSplitLinkRequest,\n DeleteLinkRequest,\n FetchLinksRequest,\n Link,\n LinkDataResponse,\n LinkToPay,\n LinksResponse,\n ShareLinkRequest,\n UpdateLinkRequest,\n UpdateSplitLinkRequest,\n} from '../store/config/types';\nimport { get, httpDelete, post, postForm, put } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const linksService = {\n fetchLinks,\n createLink,\n createSplitLink,\n updateLink,\n updateSplitLink,\n deleteLink,\n shareLink,\n getLinkData,\n validateLink,\n uploadLinksCSV,\n};\n\nasync function fetchLinks(\n request: FetchLinksRequest,\n businessId: number,\n type: LinkTypeEnum,\n): Promise {\n const filterString = filteringHelper.getFiltersForLinks(request, type);\n\n return await get(\n `${endpoints['links']}/${businessId}?page=${request.page}&limit=${request.count}${filterString}`,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function createLink(linkRequest: CreateLinkRequest): Promise {\n return await post(`${endpoints['links']}`, linkRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function createSplitLink(linkRequest: CreateSplitLinkRequest): Promise {\n return await post(`${endpoints['links']}/splitLink`, linkRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateLink(\n linkRequest: UpdateLinkRequest,\n linkId: string,\n businessId: string,\n): Promise {\n return await put(`${endpoints['links']}/${businessId}/${linkId}`, linkRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateSplitLink(\n linkRequest: UpdateSplitLinkRequest,\n linkId: string,\n businessId: string,\n): Promise {\n return await put(`${endpoints['links']}/splitLink/${linkId}`, linkRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function deleteLink({ businessId, linkId }: DeleteLinkRequest): Promise {\n return await httpDelete(`${endpoints['links']}/${businessId}/${linkId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function shareLink({ linkId, email }: ShareLinkRequest): Promise {\n return await post(`${endpoints['links']}/share/${linkId}`, { email })\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function getLinkData(linkId: string): Promise {\n return await get(`${endpoints['links']}/data/${linkId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function validateLink(linkId: string): Promise {\n return await get(`${endpoints['links']}/validate/${linkId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function uploadLinksCSV(\n createLinksWhitCSVRequest: CreateLinksWithCSVRequest,\n): Promise {\n const formData = new FormData();\n formData.append('file', createLinksWhitCSVRequest.file);\n\n return postForm(`${endpoints['csv']}`, formData)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { linksService } from '../../services/links.service';\nimport {\n ADD_DASHBOARD_LINKS,\n ADD_LINKS,\n ADD_ONE_USE_LINKS,\n CREATE_LINKS_WITH_CSV_FAILED,\n CREATE_LINKS_WITH_CSV_SUCCESS,\n CREATE_LINK_FAILED,\n CREATE_LINK_SUCCESS,\n CREATING_LINK,\n CREATING_LINKS_WITH_CSV,\n CreateLinkTypes,\n CreateLinkWithCSVTypes,\n DELETE_LINK_FAILED,\n DELETE_LINK_SUCCESS,\n DELETING_LINK,\n DeleteLinkTypes,\n FETCHING_LINKS,\n FETCHING_ONE_USE_LINKS,\n FETCH_LINKS_FAILED,\n FETCH_ONE_USE_LINKS_FAILED,\n FetchLinksTypes,\n FetchOneUseLinksTypes,\n GETTING_LINK_DATA,\n GET_LINK_DATA_FAILED,\n GET_LINK_DATA_SUCCESS,\n GetLinkDataTypes,\n LOAD_LINK_FILTERS,\n LOAD_ONE_USE_LINK_FILTERS,\n LoadLinksFiltersAction,\n LoadOneUseLinksFiltersAction,\n SHARE_LINK_FAILED,\n SHARE_LINK_SUCCESS,\n SHARING_LINK,\n ShareLinkTypes,\n UPDATE_LINK_FAILED,\n UPDATE_LINK_SUCCESS,\n UPDATING_LINK,\n UpdateLinkTypes,\n VALIDATE_LINK_FAILED,\n VALIDATE_LINK_SUCCESS,\n VALIDATING_LINK,\n ValidateLinkTypes,\n} from '../config/ActionTypes';\nimport { LinkTypeEnum, PaymentTypeEnum } from '../config/enums';\nimport {\n CreateLinkRequest,\n CreateLinksWithCSVRequest,\n CreateSplitLinkRequest,\n DeleteLinkRequest,\n Filters,\n Link,\n LinkDataResponse,\n LinkToPay,\n LinksResponse,\n ShareLinkRequest,\n UpdateLinkRequest,\n UpdateSplitLinkRequest,\n} from '../config/types';\n\n//#region Fetch links\n\nexport const fetchLinks = (\n filters: Filters,\n page: number,\n count: number,\n businessId: number,\n type: LinkTypeEnum,\n reset: boolean,\n onlyActive?: boolean,\n isDashboard?: boolean,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingLinks(type, reset));\n\n return linksService.fetchLinks({ ...filters, page, count, onlyActive }, businessId, type).then(\n (response) => {\n if (isDashboard) {\n dispatch(addDashboardLinks(response!));\n } else {\n dispatch(addLinks(response!));\n }\n },\n (error) => {\n dispatch(linksFailed(error));\n },\n );\n };\n};\n\nexport const loadingLinks = (kind: LinkTypeEnum, reset: boolean): FetchLinksTypes => ({\n type: FETCHING_LINKS,\n kind,\n reset,\n});\n\nexport const addLinks = (links: LinksResponse): FetchLinksTypes => ({\n type: ADD_LINKS,\n links,\n});\n\nexport const addDashboardLinks = (links: LinksResponse): FetchLinksTypes => ({\n type: ADD_DASHBOARD_LINKS,\n links,\n});\n\nexport const linksFailed = (error: string): FetchLinksTypes => ({\n type: FETCH_LINKS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Fetch one use links\n\nexport const fetchOneUseLinks = (\n filters: Filters,\n page: number,\n count: number,\n businessId: number,\n type: LinkTypeEnum,\n reset: boolean,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingOneUseLinks(type, reset));\n\n return linksService.fetchLinks({ ...filters, page, count }, businessId, type).then(\n (response) => {\n dispatch(addOneUseLinks(response!));\n },\n (error) => {\n dispatch(oneUselinksFailed(error));\n },\n );\n };\n};\n\nexport const loadingOneUseLinks = (kind: LinkTypeEnum, reset: boolean): FetchOneUseLinksTypes => ({\n type: FETCHING_ONE_USE_LINKS,\n kind,\n reset,\n});\n\nexport const addOneUseLinks = (links: LinksResponse): FetchOneUseLinksTypes => ({\n type: ADD_ONE_USE_LINKS,\n links,\n});\n\nexport const oneUselinksFailed = (error: string): FetchOneUseLinksTypes => ({\n type: FETCH_ONE_USE_LINKS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Load filters\n\nexport const loadLinksFilters = (\n filters: Filters,\n page: number,\n count: number,\n businessId: number,\n type: LinkTypeEnum,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(loadFilters(filters));\n\n return linksService\n .fetchLinks(\n {\n page,\n count,\n ...filters,\n },\n businessId,\n type,\n )\n .then(\n (response) => {\n dispatch(addLinks(response!));\n },\n (error) => {\n dispatch(linksFailed(error));\n },\n );\n };\n};\n\nexport const loadFilters = (filters: Filters): LoadLinksFiltersAction => ({\n type: LOAD_LINK_FILTERS,\n filters: filters,\n});\n\n//#endregion\n\n//#region Load One Use filters\n\nexport const loadOneUseLinksFilters = (\n filters: Filters,\n page: number,\n count: number,\n businessId: number,\n type: LinkTypeEnum,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(loadOneUSeFilters(filters));\n\n return linksService\n .fetchLinks(\n {\n page,\n count,\n ...filters,\n },\n businessId,\n type,\n )\n .then(\n (response) => {\n dispatch(addOneUseLinks(response!));\n },\n (error) => {\n dispatch(oneUselinksFailed(error));\n },\n );\n };\n};\n\nexport const loadOneUSeFilters = (filters: Filters): LoadOneUseLinksFiltersAction => ({\n type: LOAD_ONE_USE_LINK_FILTERS,\n filters: filters,\n});\n\n//#endregion\n\n//#region Create link\n\nexport const createLink = (linkRequest: CreateLinkRequest | CreateSplitLinkRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingLink());\n\n if (linkRequest.paymentType === PaymentTypeEnum.Split) {\n return linksService.createSplitLink(linkRequest as CreateSplitLinkRequest).then(\n (response) => {\n dispatch(createLinkSuccess(response!));\n },\n (error) => {\n dispatch(createLinkFailed(error));\n },\n );\n } else {\n return linksService.createLink(linkRequest as CreateLinkRequest).then(\n (response) => {\n dispatch(createLinkSuccess(response!));\n },\n (error) => {\n dispatch(createLinkFailed(error));\n },\n );\n }\n };\n};\n\nexport const creatingLink = (): CreateLinkTypes => ({\n type: CREATING_LINK,\n});\n\nexport const createLinkSuccess = (link: Link): CreateLinkTypes => ({\n type: CREATE_LINK_SUCCESS,\n link,\n});\n\nexport const createLinkFailed = (error: string): CreateLinkTypes => ({\n type: CREATE_LINK_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Create link\n\nexport const createLinksWhitCSV = (createLinksWhitCSVRequest: CreateLinksWithCSVRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingLinksWhitCSV());\n\n return linksService.uploadLinksCSV(createLinksWhitCSVRequest).then(\n (response) => {\n dispatch(createLinksWithCSVSuccess(response!));\n },\n (error) => {\n dispatch(createLinksWithCSVFailed(error));\n },\n );\n };\n};\n\nexport const creatingLinksWhitCSV = (): CreateLinkWithCSVTypes => ({\n type: CREATING_LINKS_WITH_CSV,\n});\n\nexport const createLinksWithCSVSuccess = (links: Link[]): CreateLinkWithCSVTypes => ({\n type: CREATE_LINKS_WITH_CSV_SUCCESS,\n links,\n});\n\nexport const createLinksWithCSVFailed = (error: string): CreateLinkWithCSVTypes => ({\n type: CREATE_LINKS_WITH_CSV_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Update link\n\nexport const updateLink = (\n request: UpdateLinkRequest | UpdateSplitLinkRequest,\n linkId: string,\n businessId: string,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingLink());\n\n if (request.paymentType === PaymentTypeEnum.Split) {\n return linksService.updateSplitLink(request as UpdateSplitLinkRequest, linkId, businessId).then(\n (response) => {\n dispatch(updateLinkSuccess(response!));\n },\n (error) => {\n dispatch(updateLinkFailed(error));\n },\n );\n } else {\n return linksService.updateLink(request as UpdateLinkRequest, linkId, businessId).then(\n (response) => {\n dispatch(updateLinkSuccess(response!));\n },\n (error) => {\n dispatch(updateLinkFailed(error));\n },\n );\n }\n };\n};\n\nexport const updatingLink = (): UpdateLinkTypes => ({\n type: UPDATING_LINK,\n});\n\nexport const updateLinkSuccess = (link: Link): UpdateLinkTypes => ({\n type: UPDATE_LINK_SUCCESS,\n link,\n});\n\nexport const updateLinkFailed = (error: string): UpdateLinkTypes => ({\n type: UPDATE_LINK_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Delete link\n\nexport const deleteLink = ({ businessId, linkId }: DeleteLinkRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(deletingLink());\n return linksService.deleteLink({ businessId, linkId }).then(\n (response) => {\n dispatch(deleteLinkSuccess(linkId));\n },\n (error) => {\n dispatch(deleteLinkFailed(error));\n },\n );\n };\n};\n\nexport const deletingLink = (): DeleteLinkTypes => ({\n type: DELETING_LINK,\n});\n\nexport const deleteLinkSuccess = (linkId: string): DeleteLinkTypes => ({\n type: DELETE_LINK_SUCCESS,\n linkId,\n});\n\nexport const deleteLinkFailed = (error: string): DeleteLinkTypes => ({\n type: DELETE_LINK_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Share link\n\nexport const shareLink = (request: ShareLinkRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(sharingLink());\n\n return linksService.shareLink(request).then(\n (response) => {\n dispatch(shareLinkSuccess());\n },\n (error) => {\n dispatch(shareLinkFailed(error));\n },\n );\n };\n};\n\nexport const sharingLink = (): ShareLinkTypes => ({\n type: SHARING_LINK,\n});\n\nexport const shareLinkSuccess = (): ShareLinkTypes => ({\n type: SHARE_LINK_SUCCESS,\n});\n\nexport const shareLinkFailed = (error: string): ShareLinkTypes => ({\n type: SHARE_LINK_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Get link data\nexport const getLinkData = (linkId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(gettingLinkData());\n\n return linksService.getLinkData(linkId).then(\n (response) => {\n if (response) {\n dispatch(getLinkDataSuccess(response));\n }\n },\n (error) => {\n dispatch(getLinkDataFailed(error));\n },\n );\n };\n};\n\nexport const gettingLinkData = (): GetLinkDataTypes => ({\n type: GETTING_LINK_DATA,\n});\n\nexport const getLinkDataSuccess = (link: LinkDataResponse): GetLinkDataTypes => ({\n type: GET_LINK_DATA_SUCCESS,\n link,\n});\n\nexport const getLinkDataFailed = (error: string): GetLinkDataTypes => ({\n type: GET_LINK_DATA_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Validate link\n\nexport const validateLink = (linkId: string) => {\n return (dispatch: Dispatch) => {\n dispatch(validatingLink());\n\n return linksService.validateLink(linkId).then(\n (response) => {\n if (response) {\n dispatch(validateLinkSuccess(response!));\n }\n },\n (error) => {\n dispatch(validateLinkFailed(error));\n },\n );\n };\n};\n\nexport const validatingLink = (): ValidateLinkTypes => ({\n type: VALIDATING_LINK,\n});\n\nexport const validateLinkSuccess = (link: LinkToPay): ValidateLinkTypes => ({\n type: VALIDATE_LINK_SUCCESS,\n link,\n});\n\nexport const validateLinkFailed = (error: string): ValidateLinkTypes => ({\n type: VALIDATE_LINK_FAILED,\n error,\n});\n\n//#endregion\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchLinks, fetchOneUseLinks } from '../store/action_creators/links.actions';\nimport { DateSpan, LinkTypeEnum, PaymentsColumnSortEnum, SortEnum } from '../store/config/enums';\nimport { RootState } from '../store/config/types';\nimport { initialState as initialLinks } from '../store/reducers/links';\n\nexport const useFetchLinksOnUpdate = () => {\n const dispatch = useDispatch();\n const auth = useSelector((state: RootState) => state.auth);\n const links = useSelector((state: RootState) => state.links);\n\n const fetchLinksOnUpdate = useCallback(() => {\n const filters = {\n dateSpan: DateSpan.LAST7DAYS,\n columnSort: PaymentsColumnSortEnum.Date,\n sortDirection: SortEnum.DESC,\n };\n\n dispatch(\n fetchOneUseLinks(\n links.oneUseLinksFilters || initialLinks.oneUseLinksFilters,\n links.oneUseCurrentPage || 1,\n 10,\n auth.account!.business.id!,\n LinkTypeEnum.ONETIME,\n true,\n ),\n );\n dispatch(\n fetchLinks(\n links.linksFilters || initialLinks.linksFilters,\n links.currentPage || 1,\n 10,\n auth.account!.business.id!,\n LinkTypeEnum.PERMANENT,\n true,\n ),\n );\n dispatch(fetchLinks(filters, 1, 7, auth.account!.business.id!, LinkTypeEnum.ALL, true, true, true));\n }, [dispatch, auth.account, links]);\n\n return fetchLinksOnUpdate;\n};\n","import {\n BusinessIssuer,\n CreatePaymentMethodRequest,\n DesiredIssuersRequest,\n Issuer,\n PaymentMethod,\n UpdatePaymentMethodRequest,\n} from '../store/config/types';\nimport { get, httpDelete, post, put } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const paymentMethodsService = {\n fetchPaymentMethods,\n fetchPossibleInstallments,\n createPaymentMethod,\n updatePaymentMethod,\n deletePaymentMethod,\n fetchIssuers,\n fetchBusinessIssuers,\n sendDesiredIssuers,\n};\n\nasync function fetchPaymentMethods(businessId: number): Promise {\n return await get(`${endpoints['issuers']}/configuration/user/${businessId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function fetchPossibleInstallments(): Promise {\n return await get(endpoints['installments'])\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function createPaymentMethod(\n createPaymentMethodRequest: CreatePaymentMethodRequest,\n): Promise {\n return await post(`${endpoints['issuers']}/configuration`, createPaymentMethodRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updatePaymentMethod(\n updatePaymentMethodRequest: UpdatePaymentMethodRequest,\n): Promise {\n return await put(\n `${endpoints['issuers']}/configuration/${updatePaymentMethodRequest.businessId}/${updatePaymentMethodRequest.issuerId}`,\n updatePaymentMethodRequest,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function deletePaymentMethod(\n businessId: number,\n issuerId: number,\n subBusinessId?: string,\n): Promise {\n return await httpDelete(`${endpoints['issuers']}/configuration/${businessId}/${issuerId}`, {\n subBusinessId: subBusinessId || null,\n })\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function fetchIssuers(): Promise {\n return await get(`${endpoints['issuers']}/issuersPaymentProcessors`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function fetchBusinessIssuers(businessId: number): Promise {\n return await get(`${endpoints['issuers']}/configuration/${businessId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw new Error(error);\n });\n}\n\nasync function sendDesiredIssuers(\n businessId: number,\n issuers: DesiredIssuersRequest,\n): Promise {\n return await post(`${endpoints['issuers']}/${businessId}`, issuers.issuers)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { paymentMethodsService } from '../../services/paymentMethods.service';\nimport {\n ADD_BUSINESS_ISSUERS,\n ADD_ISSUERS,\n ADD_PAYMENT_METHODS,\n CREATE_BUSINESS_PAYMENT_METHOD_FAILED,\n CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n CREATE_PAYMENT_METHOD_FAILED,\n CREATE_PAYMENT_METHOD_SUCCESS,\n CreateBusinessPaymentMethodTypes,\n CreatePaymentMethodTypes,\n CREATING_BUSINESS_PAYMENT_METHOD,\n CREATING_PAYMENT_METHOD,\n DELETE_BUSINESS_PAYMENT_METHOD_FAILED,\n DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n DELETE_PAYMENT_METHOD_FAILED,\n DELETE_PAYMENT_METHOD_SUCCESS,\n DeleteBusinessPaymentMethodTypes,\n DeletePaymentMethodTypes,\n DELETING_BUSINESS_PAYMENT_METHOD,\n DELETING_PAYMENT_METHOD,\n DESIRED_ISSUERS_FAILED,\n DESIRED_ISSUERS_SUCCESS,\n DesiredIssuersTypes,\n FETCH_BUSINESS_ISSUERS_FAILED,\n FETCH_INSTALLMENTS_FAILED,\n FETCH_INSTALLMENTS_SUCCESS,\n FETCH_ISSUERS_FAILED,\n FETCH_PAYMENT_METHODS_FAILED,\n FetchBusinessIssuersTypes,\n FETCHING_BUSINESS_ISSUERS,\n FETCHING_INSTALLMENTS,\n FETCHING_ISSUERS,\n FETCHING_PAYMENT_METHODS,\n FetchIssuersTypes,\n FetchPaymentMethodsTypes,\n InstallmentsTypes,\n SENDING_DESIRED_ISSUERS,\n UPDATE_BUSINESS_PAYMENT_METHOD_FAILED,\n UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n UPDATE_PAYMENT_METHOD_FAILED,\n UPDATE_PAYMENT_METHOD_SUCCESS,\n UpdateBusinessPaymentMethodTypes,\n UpdatePaymentMethodTypes,\n UPDATING_BUSINESS_PAYMENT_METHOD,\n UPDATING_PAYMENT_METHOD,\n} from '../config/ActionTypes';\nimport {\n BusinessIssuer,\n CreatePaymentMethodRequest,\n DesiredIssuersRequest,\n Issuer,\n PaymentMethod,\n UpdatePaymentMethodRequest,\n} from '../config/types';\n\n//#region Fetch payment methods\n\nexport const fetchPaymentMethods = (businessId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingPaymentMethods());\n\n return paymentMethodsService.fetchPaymentMethods(businessId).then(\n (response) => {\n dispatch(addPaymentMethods(response!));\n },\n (error) => {\n dispatch(paymentMethodsFailed(error));\n },\n );\n };\n};\n\nexport const loadingPaymentMethods = (): FetchPaymentMethodsTypes => ({\n type: FETCHING_PAYMENT_METHODS,\n});\n\nexport const addPaymentMethods = (paymentMethods: PaymentMethod[]): FetchPaymentMethodsTypes => ({\n type: ADD_PAYMENT_METHODS,\n paymentMethods: paymentMethods,\n});\n\nexport const paymentMethodsFailed = (error: string): FetchPaymentMethodsTypes => ({\n type: FETCH_PAYMENT_METHODS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Create payment method\n\nexport const createPaymentMethod = (createPaymentMethodRequest: CreatePaymentMethodRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingPaymentMethod());\n\n return paymentMethodsService.createPaymentMethod(createPaymentMethodRequest).then(\n (response) => {\n dispatch(createPaymentMethodSuccess(response!));\n },\n (error) => {\n dispatch(createPaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const creatingPaymentMethod = (): CreatePaymentMethodTypes => ({\n type: CREATING_PAYMENT_METHOD,\n});\n\nexport const createPaymentMethodSuccess = (paymentMethod: PaymentMethod): CreatePaymentMethodTypes => ({\n type: CREATE_PAYMENT_METHOD_SUCCESS,\n paymentMethod,\n});\n\nexport const createPaymentMethodFailed = (error: string): CreatePaymentMethodTypes => ({\n type: CREATE_PAYMENT_METHOD_FAILED,\n error,\n});\n//#endregion\n\n//#region createBusinessPaymentMethod\nexport const createBusinessPaymentMethod = (\n createPaymentMethodRequest: CreatePaymentMethodRequest,\n businessId: number,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingBusinessPaymentMethod());\n\n return paymentMethodsService.createPaymentMethod(createPaymentMethodRequest).then(\n (response) => {\n dispatch(createBusinessPaymentMethodSuccess(response!, businessId));\n },\n (error) => {\n dispatch(createBusinessPaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const creatingBusinessPaymentMethod = (): CreateBusinessPaymentMethodTypes => ({\n type: CREATING_BUSINESS_PAYMENT_METHOD,\n});\n\nexport const createBusinessPaymentMethodSuccess = (\n paymentMethod: PaymentMethod,\n businessId: number,\n): CreateBusinessPaymentMethodTypes => ({\n type: CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n paymentMethod,\n businessId,\n});\n\nexport const createBusinessPaymentMethodFailed = (error: string): CreateBusinessPaymentMethodTypes => ({\n type: CREATE_BUSINESS_PAYMENT_METHOD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Update payment method\n\nexport const updatePaymentMethod = (updatePaymentMethodRequest: UpdatePaymentMethodRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingPaymentMethod());\n\n return paymentMethodsService.updatePaymentMethod(updatePaymentMethodRequest).then(\n (response) => {\n dispatch(updatePaymentMethodSuccess(response!));\n },\n (error) => {\n dispatch(updatePaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const updatingPaymentMethod = (): UpdatePaymentMethodTypes => ({\n type: UPDATING_PAYMENT_METHOD,\n});\n\nexport const updatePaymentMethodSuccess = (paymentMethod: PaymentMethod): UpdatePaymentMethodTypes => ({\n type: UPDATE_PAYMENT_METHOD_SUCCESS,\n paymentMethod,\n});\n\nexport const updatePaymentMethodFailed = (error: string): UpdatePaymentMethodTypes => ({\n type: UPDATE_PAYMENT_METHOD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region updateBusinessPaymentMethod\n\nexport const updateBusinessPaymentMethod = (\n updatePaymentMethodRequest: UpdatePaymentMethodRequest,\n businessId: number,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingBusinessPaymentMethod());\n return paymentMethodsService.updatePaymentMethod(updatePaymentMethodRequest).then(\n (response) => {\n dispatch(updateBusinessPaymentMethodSuccess(response!, businessId));\n },\n (error) => {\n dispatch(updateBusinessPaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const updatingBusinessPaymentMethod = (): UpdateBusinessPaymentMethodTypes => ({\n type: UPDATING_BUSINESS_PAYMENT_METHOD,\n});\n\nexport const updateBusinessPaymentMethodSuccess = (\n paymentMethod: PaymentMethod,\n businessId: number,\n): UpdateBusinessPaymentMethodTypes => ({\n type: UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n paymentMethod,\n businessId,\n});\n\nexport const updateBusinessPaymentMethodFailed = (error: string): UpdateBusinessPaymentMethodTypes => ({\n type: UPDATE_BUSINESS_PAYMENT_METHOD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Delete payment method\n\nexport const deletePaymentMethod = (businessId: number, issuerId: number, isLast: boolean) => {\n return (dispatch: Dispatch) => {\n dispatch(deletingPaymentMethod());\n\n return paymentMethodsService.deletePaymentMethod(businessId, issuerId).then(\n (response) => {\n dispatch(deletePaymentMethodSuccess(issuerId, isLast));\n },\n (error) => {\n dispatch(deletePaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const deletingPaymentMethod = (): DeletePaymentMethodTypes => ({\n type: DELETING_PAYMENT_METHOD,\n});\n\nexport const deletePaymentMethodSuccess = (\n paymentMethodId: number,\n isLast: boolean,\n): DeletePaymentMethodTypes => ({\n type: DELETE_PAYMENT_METHOD_SUCCESS,\n paymentMethodId,\n isLast,\n});\n\nexport const deletePaymentMethodFailed = (error: string): DeletePaymentMethodTypes => ({\n type: DELETE_PAYMENT_METHOD_FAILED,\n error,\n});\n\nexport const deleteBusinessPaymentMethod = (businessId: number, paymentMethodId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(deletingBusinessPaymentMethod());\n\n return paymentMethodsService.deletePaymentMethod(businessId, paymentMethodId).then(\n (response) => {\n dispatch(deleteBusinessPaymentMethodSuccess(paymentMethodId, businessId));\n },\n (error) => {\n dispatch(deleteBusinessPaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const deletingBusinessPaymentMethod = (): DeleteBusinessPaymentMethodTypes => ({\n type: DELETING_BUSINESS_PAYMENT_METHOD,\n});\n\nexport const deleteBusinessPaymentMethodSuccess = (\n paymentMethodId: number,\n businessId: number,\n): DeleteBusinessPaymentMethodTypes => ({\n type: DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS,\n paymentMethodId,\n businessId,\n});\n\nexport const deleteBusinessPaymentMethodFailed = (error: string): DeleteBusinessPaymentMethodTypes => ({\n type: DELETE_BUSINESS_PAYMENT_METHOD_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Fetch issuers\n\nexport const fetchIssuers = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingIssuers());\n\n return paymentMethodsService.fetchIssuers().then(\n (response) => {\n dispatch(addIssuers(response!));\n },\n (error) => {\n dispatch(issuersFailed(error));\n },\n );\n };\n};\n\nexport const loadingIssuers = (): FetchIssuersTypes => ({\n type: FETCHING_ISSUERS,\n});\n\nexport const addIssuers = (issuers: Issuer[]): FetchIssuersTypes => ({\n type: ADD_ISSUERS,\n issuers,\n});\n\nexport const issuersFailed = (error: string): FetchIssuersTypes => ({\n type: FETCH_ISSUERS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Fetch business' issuers\n\nexport const fetchBusinessIssuers = (businessId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingBusinessIssuers());\n\n return paymentMethodsService.fetchBusinessIssuers(businessId).then(\n (response) => {\n dispatch(addBusinessIssuers(response!));\n },\n (error) => {\n dispatch(issuersBusinessFailed(error));\n },\n );\n };\n};\n\nexport const loadingBusinessIssuers = (): FetchBusinessIssuersTypes => ({\n type: FETCHING_BUSINESS_ISSUERS,\n});\n\nexport const addBusinessIssuers = (issuers: BusinessIssuer[]): FetchBusinessIssuersTypes => ({\n type: ADD_BUSINESS_ISSUERS,\n issuers,\n});\n\nexport const issuersBusinessFailed = (error: string): FetchBusinessIssuersTypes => ({\n type: FETCH_BUSINESS_ISSUERS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Send desired issuers\n\nexport const sendDesiredIssuers = (businessId: number, issuers: DesiredIssuersRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(sendingDesiredIssuers());\n\n return paymentMethodsService.sendDesiredIssuers(businessId, issuers).then(\n (response) => {\n dispatch(desiredIssuersSuccess());\n },\n (error) => {\n dispatch(desiredIssuersFailed(error));\n },\n );\n };\n};\n\nexport const sendingDesiredIssuers = (): DesiredIssuersTypes => ({\n type: SENDING_DESIRED_ISSUERS,\n});\n\nexport const desiredIssuersSuccess = (): DesiredIssuersTypes => ({\n type: DESIRED_ISSUERS_SUCCESS,\n});\n\nexport const desiredIssuersFailed = (error: string): DesiredIssuersTypes => ({\n type: DESIRED_ISSUERS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region fetch installments\n\nexport const fetchInstallments = () => {\n return (dispatch: Dispatch) => {\n dispatch(fetchingInstallments());\n\n return paymentMethodsService.fetchPossibleInstallments().then(\n (response) => {\n dispatch(fetchingInstallmentsSuccess(response!));\n },\n (error) => {\n dispatch(fetchInstallmentsFailed(error));\n },\n );\n };\n};\n\nexport const fetchingInstallments = (): InstallmentsTypes => ({\n type: FETCHING_INSTALLMENTS,\n});\n\nexport const fetchingInstallmentsSuccess = (installments: number[]): InstallmentsTypes => ({\n type: FETCH_INSTALLMENTS_SUCCESS,\n installments,\n});\n\nexport const fetchInstallmentsFailed = (error: string): InstallmentsTypes => ({\n type: FETCH_INSTALLMENTS_FAILED,\n error,\n});\n\n//#endregion\n","import {\n Button,\n CircularProgress,\n Dialog,\n DialogContent,\n DialogTitle,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport styles from '../../../styles/_variables.module.scss';\n\nconst useDialogStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n paddingBottom: 0,\n },\n icon: {\n cursor: 'pointer',\n userSelect: 'none',\n color: theme.palette.grey[500],\n },\n content: {\n padding: '2rem 1rem',\n paddingTop: '1rem',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n textAlign: 'center',\n },\n message: {\n fontWeight: 'bold',\n },\n actions: {\n marginTop: '1.4rem',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '0.6875rem',\n width: '100%',\n },\n button: {\n [theme.breakpoints.down('sm')]: {\n minWidth: 'auto',\n maxWidth: '7.25rem',\n width: '100%',\n },\n },\n deleteButton: {\n backgroundColor: theme.palette.error.main,\n border: `1px solid ${theme.palette.error.main}`,\n color: styles.white,\n '&:hover': {\n backgroundColor: styles.white,\n color: theme.palette.error.main,\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.error.main,\n border: `1px solid ${theme.palette.error.main}`,\n color: styles.white,\n opacity: 0.5,\n },\n [theme.breakpoints.down('sm')]: {\n maxWidth: '11.25rem',\n },\n },\n }),\n);\n\ninterface DeleteDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n message: string;\n deleteAction(): void;\n hasCancelButton?: boolean;\n deleteButtonText?: string;\n deleteDisabled?: boolean;\n}\n\nfunction DeleteDialog({\n open,\n setOpen,\n message,\n deleteAction,\n deleteButtonText,\n hasCancelButton = true,\n deleteDisabled,\n}: DeleteDialogProps) {\n const classes = useDialogStyles();\n\n const handleDelete = () => {\n deleteAction();\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n return (\n \n \n \n \n \n \n {message}\n \n
    \n {hasCancelButton && (\n \n Cancelar\n \n )}\n \n {deleteDisabled ? : deleteButtonText ?? 'Eliminar'}\n \n
    \n
    \n
    \n );\n}\n\nexport default DeleteDialog;\n","export const PIX_ISSUER_ID = 62;\nexport const ISSUERS_WITHOUT_INSTALLMENTS = [13, 21, 52, 53, 54, 55, 56, 57, 58, 59];\n","import { Chip, Grid, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { PIX_ISSUER_ID } from '../../../data/constants';\nimport { fetchInstallments } from '../../../store/action_creators/paymentMethods.actions';\nimport { Issuer, PaymentMethod, RootState } from '../../../store/config/types';\nimport colors from '../../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n helperText: {\n paddingTop: '0.5rem',\n },\n subtitle: {\n marginBottom: '0.6rem',\n color: colors.slateBlue,\n fontWeight: 500,\n lineHeight: 1.57,\n fontSize: '0.9375rem',\n },\n installmentsBox: {\n border: `1px solid ${colors.borderButtonSecondary}`,\n padding: '1.0625rem 1.25rem',\n borderRadius: '4px',\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(2.8125rem, 1fr))',\n justifyItems: 'center',\n alignItems: 'center',\n gap: '0.9375rem',\n },\n installment: {\n flex: 1,\n textAlign: 'center',\n padding: '0.625rem',\n },\n }),\n);\n\ninterface InstallmentsFieldProps {\n paymentMethod: PaymentMethod | null;\n selectedInstallments: number[];\n setSelectedInstallments(installments: number[]): void;\n selectedIssuer?: Issuer | null;\n}\n\nfunction InstallmentsField({\n paymentMethod,\n selectedInstallments,\n setSelectedInstallments,\n selectedIssuer,\n}: InstallmentsFieldProps) {\n const dispatch = useDispatch();\n const paymentMethods = useSelector((state: RootState) => state.paymentMethods);\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n if (!loaded) {\n setLoaded(true);\n setSelectedInstallments(paymentMethod ? paymentMethod.values : [1]);\n }\n }, [loaded, setLoaded, setSelectedInstallments, paymentMethod]);\n\n const classes = useStyles();\n\n useEffect(() => {\n if (\n !paymentMethods.fetchingPossibleInstallments &&\n paymentMethods.possibleInstallments === null &&\n paymentMethods.fetchInstallmentsError === null\n ) {\n dispatch(fetchInstallments());\n }\n }, [\n paymentMethods.fetchingPossibleInstallments,\n paymentMethods.possibleInstallments,\n paymentMethods.fetchInstallmentsError,\n dispatch,\n ]);\n\n useEffect(() => {\n if (!selectedInstallments.length) setSelectedInstallments([1]);\n }, [selectedInstallments.length, setSelectedInstallments]);\n\n const checkInstallment = (installment: number) => {\n const existingInstallment = selectedInstallments.find((i) => i === installment);\n\n if (existingInstallment) {\n setSelectedInstallments(selectedInstallments.filter((i) => i !== installment));\n } else {\n setSelectedInstallments([...selectedInstallments, installment]);\n }\n };\n\n return (\n <>\n {paymentMethods.possibleInstallments && (\n \n Cuotas disponibles\n
    \n {paymentMethod?.id === PIX_ISSUER_ID || selectedIssuer?.issuerId === PIX_ISSUER_ID ? (\n \n ) : (\n paymentMethods.possibleInstallments.map((i, index) => {\n const isSelected = selectedInstallments.find((ins) => ins === i) !== undefined;\n\n return (\n checkInstallment(i)}\n />\n );\n })\n )}\n
    \n
    \n )}\n \n );\n}\n\nexport default InstallmentsField;\n","import { Switch, SwitchProps, Theme, makeStyles } from '@material-ui/core';\nimport colors from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n width: 42,\n height: 26,\n padding: 0,\n margin: theme.spacing(1),\n '& .MuiIconButton-root:hover': {\n backgroundColor: 'unset',\n },\n },\n switchBase: {\n padding: 6,\n top: '50%',\n transform: 'translateY(-50%)',\n color: colors.slateBlue,\n '&$checked': {\n transform: 'translateX(0.75rem) translateY(-50%)',\n color: theme.palette.common.white,\n '& + $track': {\n backgroundColor: colors.primary,\n opacity: 1,\n border: 'none',\n },\n },\n '&$focusVisible $thumb': {\n color: colors.white,\n border: `0.375rem solid ${colors.white}`,\n },\n },\n thumb: {\n width: 20,\n height: 20,\n },\n track: {\n borderRadius: 26 / 2,\n border: `1px solid ${colors.slateBlue}`,\n backgroundColor: colors.white,\n opacity: 1,\n },\n checked: {},\n focusVisible: {},\n disabled: {\n opacity: 0.5,\n '& .MuiSwitch-thumb': {\n backgroundColor: colors.slateBlue,\n },\n '& + $track': {\n opacity: '0.5 !important',\n backgroundColor: `${colors.white} !important`,\n border: `1px solid ${colors.slateBlue} !important`,\n },\n },\n}));\n\nfunction CustomSwitch(props: SwitchProps) {\n const classes = useStyles();\n\n return (\n \n );\n}\n\nexport default CustomSwitch;\n","import { createStyles, FormControl, makeStyles, Theme, Typography } from '@material-ui/core';\nimport { FieldProps } from 'formik';\nimport React, { ChangeEvent } from 'react';\nimport { CustomSwitch } from '../../CustomSwitch';\n\nconst useSwitchStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n }),\n);\n\ntype FormSwitchProps = FieldProps & React.HTMLProps;\n\nfunction FormSwitchField({ field, form, label, ...props }: FormSwitchProps) {\n const classes = useSwitchStyles();\n\n const onSwitchChange = (event: ChangeEvent<{ name?: string | undefined; checked: boolean }>): void => {\n form.setFieldValue(field.name, event.target.checked);\n };\n\n return (\n \n {label}\n \n \n );\n}\n\nexport default FormSwitchField;\n","import { Grid } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { PaymentMethod, Field as PlexoField } from '../../../store/config/types';\nimport { FormSwitchField } from '../../forms/FormSwitchField';\nimport { FormTextField } from '../../forms/FormTextField';\n\ninterface PlexoFieldsProps {\n fields: PlexoField[] | undefined;\n paymentMethod: PaymentMethod | null;\n isRegisterStep?: boolean;\n firstPaymentMethod?: boolean;\n}\n\nfunction PlexoFields({ fields, paymentMethod, isRegisterStep, firstPaymentMethod }: PlexoFieldsProps) {\n const getPlexoFieldData = (type: number) => {\n switch (type) {\n case 2049:\n return {\n name: 'Código de comercio',\n value: 'commerceNumber',\n };\n\n case 2051:\n return {\n name: 'Número de terminal',\n value: 'terminalNumber',\n };\n\n case 270:\n return {\n name: 'Número de cuenta',\n value: 'accountNumber',\n };\n case 532:\n return {\n name: 'Transferencias entre bancos',\n value: 'crossBankTransfers',\n };\n case 2060:\n return {\n name: 'RUT',\n value: 'rut',\n };\n case 2057:\n return {\n name: 'MCC',\n value: 'merchantCategoryCode',\n };\n case 2065:\n return {\n name: 'Código de comercio',\n value: 'paymentFacilitatorCommerceId',\n };\n case 2067:\n return {\n name: 'Bancos disponibles',\n value: 'availableBanks',\n };\n default:\n return { name: '', value: '', setValue: null };\n }\n };\n\n return (\n <>\n {fields &&\n fields.map((f) => {\n const fieldData = getPlexoFieldData(f.fieldType);\n\n switch (fieldData.value) {\n case '':\n return null;\n\n case 'crossBankTransfers':\n return (\n \n \n \n );\n\n default:\n return (\n \n \n \n );\n }\n })}\n \n );\n}\n\nexport default PlexoFields;\n","import {\n FormControl,\n FormHelperText,\n InputLabel,\n MenuItem,\n Select,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { FieldProps } from 'formik';\nimport React, { ChangeEvent } from 'react';\n\nconst useSelectStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n width: '100%',\n },\n select: {\n '&:focus': {\n backgroundColor: 'transparent',\n },\n display: 'flex',\n },\n image: {\n height: 'auto',\n width: 'auto',\n maxWidth: '60px',\n maxHeight: '30px',\n marginRight: '1rem',\n },\n item: {\n display: 'flex',\n },\n errorText: {\n margin: 0,\n marginTop: '0.4rem',\n color: theme.palette.error.main,\n },\n }),\n);\n\ninterface Option {\n id: string;\n value: string;\n disabled?: boolean;\n}\n\ninterface SelectProps {\n label: string;\n options: Option[];\n}\n\ntype FormSelectProps = FieldProps & React.HTMLProps & SelectProps;\n\nfunction FormSelectField({ field, form, label, options, ...props }: FormSelectProps) {\n const classes = useSelectStyles();\n const hasError = (form.touched[field.name] && form.errors[field.name]) !== undefined;\n\n const onSelectChange = (event: ChangeEvent<{ name?: string | undefined; value: unknown }>): void => {\n form.setFieldValue(field.name, event.target.value);\n };\n\n return (\n \n {label}\n {\n props.onChange?.(event);\n onSelectChange(event);\n }}\n label={label}\n disabled={props.disabled}\n error={hasError}\n >\n {options.map((option, index) => {\n if (option.disabled) {\n return null;\n }\n\n return (\n \n {option.value}\n \n );\n })}\n \n {hasError && (\n {form.errors[field.name]}\n )}\n \n );\n}\n\nexport default FormSelectField;\n","import { Grid } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { ReactElement } from 'react';\nimport { useSelector } from 'react-redux';\nimport { issuerHelper } from '../../../helpers/issuerHelper';\nimport { Issuer, PaymentMethod, RootState } from '../../../store/config/types';\nimport { FormSelectField } from '../FormSelectField';\n\ninterface IssuerAndAcquirerProps {\n paymentMethod: PaymentMethod | null;\n selectedIssuer: Issuer | null;\n installmentsField: ReactElement | boolean;\n}\n\nfunction IssuerAndAcquirer({ paymentMethod, selectedIssuer, installmentsField }: IssuerAndAcquirerProps) {\n const paymentMethods = useSelector((state: RootState) => state.paymentMethods);\n\n const issuersList = issuerHelper.getIssuersList(paymentMethods, paymentMethod);\n\n return (\n <>\n \n \n \n \n {installmentsField}\n \n {selectedIssuer?.paymentProcessors && (\n \n {\n return {\n id: pp.acquirer,\n value: pp.acquirer,\n disabled: false,\n };\n })\n : []\n }\n />\n \n )}\n \n );\n}\n\nexport default IssuerAndAcquirer;\n","import { useSelector } from 'react-redux';\nimport { Status } from '../../../store/config/enums';\nimport { RootState } from '../../../store/config/types';\nimport { CustomSnackbar } from '../../CustomSnackbar';\n\ninterface SnackbarManagerProps {\n creatingPaymentMethod: boolean;\n updatingPaymentMethod: boolean;\n handleClose: () => void;\n firstPaymentMethod?: boolean;\n}\n\nfunction SnackbarManager({\n creatingPaymentMethod,\n updatingPaymentMethod,\n handleClose,\n firstPaymentMethod,\n}: SnackbarManagerProps) {\n const paymentMethods = useSelector((state: RootState) => state.paymentMethods);\n\n return (\n <>\n \n \n \n );\n}\n\nexport default SnackbarManager;\n","import { Grid } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { PaymentMethod } from '../../../store/config/types';\nimport { FormTextField } from '../FormTextField';\n\ninterface SoftDescriptorProps {\n paymentMethod?: PaymentMethod | null;\n}\n\nfunction SoftDescriptor({ paymentMethod }: SoftDescriptorProps) {\n return (\n <>\n \n \n \n \n El \"Soft descriptor\" es el texto que se le muestra al cliente en el estado de cuenta de la tarjeta\n \n \n );\n}\n\nexport default SoftDescriptor;\n","import { Button, CircularProgress } from '@material-ui/core';\nimport { PaymentMethod } from '../../../store/config/types';\n\ninterface SubmitButtonProps {\n isRegisterStep: boolean;\n creatingPaymentMethod: boolean;\n updatingPaymentMethod: boolean;\n paymentMethod: PaymentMethod | null;\n disabled?: boolean;\n}\n\nfunction SubmitButton({\n isRegisterStep,\n creatingPaymentMethod,\n updatingPaymentMethod,\n paymentMethod,\n disabled,\n}: SubmitButtonProps) {\n return (\n
    \n \n {creatingPaymentMethod || updatingPaymentMethod ? (\n \n ) : paymentMethod ? (\n 'Guardar cambios'\n ) : (\n 'Agregar medio de pago'\n )}\n \n
    \n );\n}\n\nexport default SubmitButton;\n","import { Grid, Paper, Typography } from '@material-ui/core';\nimport { Form, Formik, FormikHelpers } from 'formik';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { ISSUERS_WITHOUT_INSTALLMENTS } from '../../../data/constants';\nimport schemas from '../../../data/schemas';\nimport { issuerHelper } from '../../../helpers/issuerHelper';\nimport {\n createPaymentMethod,\n fetchIssuers,\n updatePaymentMethod,\n} from '../../../store/action_creators/paymentMethods.actions';\nimport { UserTypeEnum } from '../../../store/config/enums';\nimport {\n BasePaymentMethod,\n Client,\n CreatePaymentMethodRequest,\n Issuer,\n PaymentMethod,\n RootState,\n UpdatePaymentMethodRequest,\n} from '../../../store/config/types';\nimport InstallmentsField from '../../dialogs/PaymentMethodDialog/InstallmentsField';\nimport PlexoFields from '../../dialogs/PaymentMethodDialog/PlexoFields';\nimport { Loading } from '../../Loading';\nimport IssuerAndAcquirer from './IssuerAndAcquirer';\nimport SnackbarManager from './SnackbarManager';\nimport SoftDescriptor from './SoftDescriptor';\nimport SubmitButton from './SubmitButton';\n\ninterface Values extends Omit {\n issuer: string;\n acquirer: string;\n installments: number;\n crossBankTransfers: boolean;\n commerceNumber: string;\n terminalNumber: string;\n paymentFacilitatorCommerceId: string | undefined;\n availableBanks: string | undefined;\n}\n\ninterface PaymentMethodFormProps {\n handleSuccess: () => void;\n paymentMethod: PaymentMethod | null;\n firstPaymentMethod?: boolean;\n client?: Client;\n isRegisterStep?: boolean;\n isDialog?: boolean;\n}\n\nfunction PaymentMethodForm({\n paymentMethod,\n handleSuccess,\n firstPaymentMethod = false,\n client,\n isRegisterStep = false,\n isDialog = false,\n}: PaymentMethodFormProps) {\n const dispatch = useDispatch();\n const { auth, paymentMethods } = useSelector((state: RootState) => state);\n const [creatingPaymentMethod, setCreatingPaymentMethod] = useState(false);\n const [updatingPaymentMethod, setUpdatingPaymentMethod] = useState(false);\n const [selectedInstallments, setSelectedInstallments] = useState(\n paymentMethod ? paymentMethod.values : [1],\n );\n\n useEffect(() => {\n if (!paymentMethods.issuers) {\n dispatch(fetchIssuers());\n }\n }, [paymentMethods.issuers, dispatch]);\n\n const isIssuerWithoutInstallments = (selectedIssuer: Issuer | null): boolean => {\n return selectedIssuer ? ISSUERS_WITHOUT_INSTALLMENTS.includes(selectedIssuer?.issuerId) : false;\n };\n\n const submitPaymentMethod = (values: Values, helpers: FormikHelpers) => {\n const crossBankTransfers = values.crossBankTransfers ? 'True' : 'False';\n\n if (auth.account) {\n const selectedIssuer =\n paymentMethods.issuers && paymentMethods.issuers.filter((i) => i.id === values.issuer)[0];\n const noInstallmentsIssuer = isIssuerWithoutInstallments(selectedIssuer);\n\n if (auth.account.type === UserTypeEnum.SUPERADMIN) {\n if (paymentMethod) {\n setUpdatingPaymentMethod(true);\n const updatePaymentMethodRequest: UpdatePaymentMethodRequest = {\n businessId: client!.id,\n issuerId: Number(paymentMethod.issuerId),\n installments: noInstallmentsIssuer ? [1] : selectedInstallments,\n maxInstallments: values.installments ?? 1,\n softDescriptor: values.softDescriptor?.trim(),\n acquirer: values.acquirer?.trim(),\n accountNumber: values.accountNumber?.trim(),\n crossBankTransfers,\n rut: values.rut?.trim(),\n merchantCategoryCode: values.merchantCategoryCode?.trim(),\n };\n dispatch(updatePaymentMethod(updatePaymentMethodRequest));\n } else {\n setCreatingPaymentMethod(true);\n\n const createPaymentMethodRequest: CreatePaymentMethodRequest = {\n businessId: client!.id,\n maxInstallments: values.installments ?? 1,\n installments: noInstallmentsIssuer ? [1] : selectedInstallments,\n softDescriptor: values.softDescriptor?.trim(),\n accountNumber: values.accountNumber?.trim(),\n commerceNumber: values.commerceNumber?.trim(),\n terminalNumber: values.terminalNumber?.trim(),\n issuerId: selectedIssuer!.issuerId,\n acquirer: selectedIssuer?.paymentProcessors ? values.acquirer?.trim() : null,\n crossBankTransfers,\n rut: values.rut?.trim(),\n merchantCategoryCode: values.merchantCategoryCode.trim(),\n paymentFacilitatorCommerceId: values.paymentFacilitatorCommerceId?.trim(),\n availableBanks: values.availableBanks ?? '',\n };\n dispatch(createPaymentMethod(createPaymentMethodRequest));\n }\n } else {\n if (paymentMethod) {\n setUpdatingPaymentMethod(true);\n\n const updatePaymentMethodRequest: UpdatePaymentMethodRequest = {\n businessId: auth.account.business.id!,\n issuerId: Number(paymentMethod.issuerId),\n maxInstallments: values.installments ?? 1,\n installments: noInstallmentsIssuer ? [1] : selectedInstallments,\n softDescriptor: values.softDescriptor?.trim() ?? '',\n accountNumber: values.accountNumber?.trim() ?? '',\n acquirer: values.acquirer?.trim() ?? '',\n crossBankTransfers,\n rut: values.rut?.trim() ?? '',\n merchantCategoryCode: values.merchantCategoryCode?.trim() ?? '',\n };\n\n dispatch(updatePaymentMethod(updatePaymentMethodRequest));\n } else {\n setCreatingPaymentMethod(true);\n\n const createPaymentMethodRequest: CreatePaymentMethodRequest = {\n businessId: auth.account.business.id!,\n maxInstallments: values.installments ?? 1,\n installments: noInstallmentsIssuer ? [1] : selectedInstallments,\n softDescriptor: values.softDescriptor?.trim(),\n accountNumber: values.accountNumber?.trim(),\n commerceNumber: values.commerceNumber?.trim(),\n terminalNumber: values.terminalNumber?.trim(),\n issuerId: selectedIssuer!.issuerId,\n acquirer: selectedIssuer?.paymentProcessors ? values.acquirer : null,\n crossBankTransfers,\n rut: values.rut?.trim(),\n merchantCategoryCode: values.merchantCategoryCode?.trim(),\n paymentFacilitatorCommerceId: values.paymentFacilitatorCommerceId?.trim(),\n availableBanks: values.availableBanks ?? '',\n };\n\n dispatch(createPaymentMethod(createPaymentMethodRequest));\n }\n }\n }\n };\n\n const closeSnack = () => {\n if (paymentMethod) {\n setUpdatingPaymentMethod(false);\n } else {\n setCreatingPaymentMethod(false);\n }\n\n if (paymentMethods.createPaymentMethodSuccess || paymentMethods.updatePaymentMethodSuccess) {\n handleSuccess();\n }\n };\n\n const issuersList = issuerHelper.getIssuersList(paymentMethods, paymentMethod);\n\n if (!paymentMethods.issuers) {\n return ;\n }\n\n const renderContent = (noInstallmentsIssuer: boolean, selectedIssuer: Issuer | undefined, fields: any) => (\n <>\n \n {firstPaymentMethod || isRegisterStep\n ? 'Agrega un primer medio de pago'\n : paymentMethod\n ? 'Editar medio de pago'\n : 'Agregar nuevo medio de pago'}\n \n {(isRegisterStep || firstPaymentMethod) && (\n \n Antes de poder empezar a operar deberás agregar un primer medio de pago. ¿Aún no tienes códigos de\n comercio? Solicítalo aquí\n \n )}\n \n \n )\n }\n selectedIssuer={selectedIssuer!}\n />\n {!isRegisterStep && !firstPaymentMethod && !paymentMethod && (\n \n ¿Necesitas un código de comercio?{' '}\n \n Solicítalo aquí\n \n \n )}\n \n \n \n \n );\n\n return (\n !il.disabled)[0].id\n : '4',\n acquirer: (paymentMethod && paymentMethod.fields?.paymentProcessorId) || '',\n installments: paymentMethod ? Math.max(...paymentMethod.values) : 1,\n softDescriptor: (paymentMethod && paymentMethod.fields?.softDescriptor) || '',\n accountNumber: (paymentMethod && paymentMethod.fields?.accountNumber) || '',\n commerceNumber: (paymentMethod && paymentMethod.fields?.providerCommerceNumber) || '',\n terminalNumber: (paymentMethod && paymentMethod.fields?.terminalNumber) || '',\n crossBankTransfers:\n (paymentMethod && paymentMethod.fields?.crossBankTransfers === 'True' ? true : false) || false,\n paymentFacilitatorCommerceId: paymentMethod ? paymentMethod.fields?.paymentFacilitatorCommerceId : '',\n availableBanks: paymentMethod ? paymentMethod.fields?.availableBanks : '',\n rut: (paymentMethod && paymentMethod.fields?.commerceRUT) || '',\n merchantCategoryCode: (paymentMethod && paymentMethod.fields?.mcc) || '',\n }}\n validationSchema={schemas.PaymentMethodSchema}\n onSubmit={submitPaymentMethod}\n enableReinitialize={true}\n >\n {({ values }) => {\n const selectedIssuer =\n paymentMethods.issuers && paymentMethods.issuers.filter((i) => i.id === values.issuer)[0];\n\n const selectedAcquirer = selectedIssuer?.paymentProcessors\n ? selectedIssuer?.paymentProcessors.filter((pp) => pp.acquirer === values.acquirer)[0]\n : '';\n\n const fields = selectedAcquirer\n ? selectedAcquirer.fields\n : !selectedIssuer || !selectedIssuer.paymentProcessors\n ? selectedIssuer?.fields\n : paymentMethod\n ? selectedIssuer?.fields\n : [];\n\n const noInstallmentsIssuer = isIssuerWithoutInstallments(selectedIssuer);\n\n const isSubmitButtonDisabled = (!paymentMethod && !values.softDescriptor) || !values.acquirer;\n\n return (\n
    \n {isRegisterStep ? (\n \n {renderContent(noInstallmentsIssuer, selectedIssuer!, fields)}\n \n ) : (\n renderContent(noInstallmentsIssuer, selectedIssuer!, fields)\n )}\n \n \n \n );\n }}\n \n );\n}\n\nexport default PaymentMethodForm;\n","import { Dialog, DialogContent, DialogTitle } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchIssuers } from '../../../store/action_creators/paymentMethods.actions';\nimport { PaymentMethod, RootState } from '../../../store/config/types';\nimport { Client } from '../../../store/config/types/clients.types';\nimport LogoutDialog from '../../Header/LogoutDialog';\nimport { Loading } from '../../Loading';\nimport { PaymentMethodForm } from '../../forms/PaymentMethodForm';\n\ninterface PaymentMethodDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n paymentMethod: PaymentMethod | null;\n firstPaymentMethod?: boolean;\n client?: Client;\n}\n\nfunction PaymentMethodDialog({\n open,\n setOpen,\n paymentMethod,\n firstPaymentMethod = false,\n client,\n}: PaymentMethodDialogProps) {\n const dispatch = useDispatch();\n const paymentMethods = useSelector((state: RootState) => state.paymentMethods);\n const [logoutOpen, setLogoutOpen] = useState(false);\n\n const closeDialog = () => setOpen(false);\n\n useEffect(() => {\n if (\n !paymentMethods.loadingIssuers &&\n paymentMethods.issuers === null &&\n paymentMethods.issuersErrorMessage === null\n ) {\n dispatch(fetchIssuers());\n }\n }, [paymentMethods.loadingIssuers, paymentMethods.issuers, paymentMethods.issuersErrorMessage, dispatch]);\n\n const openLogout = () => {\n setLogoutOpen(true);\n };\n\n return (\n \n \n \n \n {paymentMethods.issuers ? (\n <>\n \n \n \n \n ) : (\n \n )}\n \n \n );\n}\n\nexport default PaymentMethodDialog;\n","import { Tooltip, useMediaQuery, useTheme } from '@material-ui/core';\nimport React, { CSSProperties, MutableRefObject, useEffect, useRef, useState } from 'react';\nimport DeleteIcon from '../../assets/deleteIcon';\n\nfunction SinglePaymentMethodDeleteTooltip() {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const tooltipRef: MutableRefObject = useRef(null);\n\n const handleOutsideClick = (event: MouseEvent) => {\n if (tooltipOpen && tooltipRef.current && !tooltipRef.current.contains(event.target as Node)) {\n setTooltipOpen(false);\n }\n };\n\n useEffect(() => {\n if (isMobile) {\n document.addEventListener('mousedown', handleOutsideClick);\n return () => {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }\n // eslint-disable-next-line\n }, [isMobile, tooltipOpen]);\n\n const handleTooltipToggle = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n if (isMobile) {\n setTooltipOpen(!tooltipOpen);\n }\n };\n\n const popperStyles: CSSProperties = {\n pointerEvents: tooltipOpen ? 'auto' : 'none',\n width: '8.75rem',\n };\n\n return (\n setTooltipOpen(false)}\n key={isMobile ? 'mobile' : 'desktop'}\n PopperProps={{ style: popperStyles }}\n >\n (tooltipRef.current = ref) : undefined}>\n \n \n \n );\n}\n\nexport default SinglePaymentMethodDeleteTooltip;\n","import { CircularProgress, Divider, Tooltip, Typography } from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport AddIcon from '../../assets/addIcon';\nimport DeleteIcon from '../../assets/deleteIcon';\nimport { issuerHelper } from '../../helpers/issuerHelper';\nimport { useFetchLinksOnUpdate } from '../../hooks/useFetchLinksOnUpdate';\nimport { deletePaymentMethod, fetchPaymentMethods } from '../../store/action_creators/paymentMethods.actions';\nimport { Status } from '../../store/config/enums';\nimport { PaymentMethod, RootState } from '../../store/config/types';\nimport { CustomSnackbar } from '../CustomSnackbar';\nimport { DeleteDialog } from '../dialogs/DeleteDialog';\nimport { PaymentMethodDialog } from '../dialogs/PaymentMethodDialog';\nimport SinglePaymentMethodDeleteTooltip from './SingleDeletePaymentMethodDeleteTooltip';\n\nfunction PaymentMethods() {\n const dispatch = useDispatch();\n const { auth, paymentMethods } = useSelector((state: RootState) => state);\n const [open, setOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [deletingPaymentMethod, setDeletingPaymentMethod] = useState(false);\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(null);\n const [paymentMethodToDelete, setPaymentMethodToDelete] = useState(null);\n const fetchLinksOnUpdate = useFetchLinksOnUpdate();\n const issuersList = issuerHelper.getIssuersList(paymentMethods, selectedPaymentMethod);\n const addPaymentMethodDisabled = paymentMethods.paymentMethods?.length === issuersList?.length;\n\n useEffect(() => {\n if (\n auth.account &&\n !paymentMethods.loadingPaymentMethods &&\n paymentMethods.paymentMethods === null &&\n paymentMethods.paymentMethodsErrorMessage === null\n ) {\n dispatch(fetchPaymentMethods(auth.account.business.id!));\n }\n }, [\n auth.account,\n paymentMethods.loadingPaymentMethods,\n paymentMethods.paymentMethods,\n paymentMethods.paymentMethodsErrorMessage,\n dispatch,\n ]);\n\n const createPaymentMethod = () => {\n setSelectedPaymentMethod(null);\n setOpen(true);\n };\n\n const updatePaymentMethod = (paymentMethod: PaymentMethod) => {\n setSelectedPaymentMethod(paymentMethod);\n setOpen(true);\n };\n\n const beginDeletePaymentMethod = (paymentMethod: PaymentMethod) => {\n setPaymentMethodToDelete(paymentMethod);\n setDeleteOpen(true);\n };\n\n const confirmDeletePaymentMethod = () => {\n setDeletingPaymentMethod(true);\n\n if (paymentMethodToDelete && auth.account && paymentMethods.paymentMethods)\n dispatch(\n deletePaymentMethod(\n auth.account.business.id!,\n paymentMethodToDelete?.issuerId,\n paymentMethods.paymentMethods.length === 1,\n ),\n );\n };\n\n const closeSnack = () => {\n setDeletingPaymentMethod(false);\n\n if (paymentMethods.deletePaymentMethodSuccess) {\n fetchLinksOnUpdate();\n }\n\n setDeleteOpen(false);\n };\n\n if (paymentMethods.loadingPaymentMethods) return ;\n\n return (\n <>\n
    \n \n \n Nuevo medio de pago\n
    \n {paymentMethods.paymentMethods &&\n paymentMethods.paymentMethods.map((paymentMethod, index) => {\n return (\n
    updatePaymentMethod(paymentMethod)} key={index}>\n
    \n {paymentMethods.paymentMethods && paymentMethods.paymentMethods.length === 1 ? (\n \n ) : (\n \n ) => {\n e.stopPropagation();\n beginDeletePaymentMethod(paymentMethod);\n }}\n >\n \n \n \n )}\n
    \n \"logo\"\n \n
    \n \n {paymentMethod.issuerName}\n \n
    \n
    \n );\n })}\n
    \n \n \n \n \n );\n}\n\nexport default PaymentMethods;\n","import { Theme, createStyles, makeStyles } from '@material-ui/core';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n warningContainter: {\n marginTop: '1.5625rem',\n padding: '0.8125rem',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: styles.warningBackground,\n borderRadius: '3px',\n border: `1px solid ${styles.warningBorder}`,\n },\n text: {\n fontSize: '0.875rem',\n margin: 0,\n color: styles.warning,\n '& svg': {\n marginRight: '0.375rem',\n },\n },\n }),\n);\ninterface WarningProps {\n text: string;\n icon: any;\n}\n\nfunction Warning({ text, icon }: WarningProps) {\n const classes = useStyles();\n\n return (\n
    \n

    \n {icon}\n {text}\n

    \n
    \n );\n}\n\nexport default Warning;\n","import moment, { Moment } from 'moment';\nimport {\n Business,\n BusinessRequest,\n ClientSecretRequest,\n DownloadNotificationsReport,\n SubBusiness,\n UpdateBusinessRequest,\n UpdateImageRequest,\n} from '../store/config/types';\nimport { get, httpDelete, postForm, put, putForm } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const businessService = {\n fetchBusinesses,\n createBusiness,\n updateBusiness,\n updateBusinessPicture,\n removeBusinessPicture,\n getBusiness,\n getBusinessSubBusinesses,\n updateClientSecret,\n downloadNotificationsReport,\n};\n\nasync function fetchBusinesses(): Promise {\n return await get(`${endpoints['business']}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function createBusiness(business: BusinessRequest, picture: File): Promise {\n let formData = new FormData();\n formData.append('file', picture);\n formData.append('request', JSON.stringify(business));\n return await postForm(`${endpoints['business']}`, formData)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateBusiness(updateBusinessRequest: UpdateBusinessRequest): Promise {\n return await put(`${endpoints['business']}`, updateBusinessRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateBusinessPicture(updateImageRequest: UpdateImageRequest): Promise {\n let formData = new FormData();\n formData.append('file', updateImageRequest.file);\n\n return await putForm(`${endpoints['business']}/${updateImageRequest.businessId}/picture`, formData)\n .then((response) => {\n return response.stringBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function removeBusinessPicture(businessId: number): Promise {\n return await httpDelete(`${endpoints['business']}/${businessId}/picture`)\n .then((response) => {\n return response.stringBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function getBusiness(businessUrlName: string): Promise {\n return await get(`${endpoints['business']}/${businessUrlName}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function getBusinessSubBusinesses(businessId: number): Promise {\n return await get(`${endpoints['subbusiness']}?businessId=${businessId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateClientSecret(clientSecretRequest: ClientSecretRequest): Promise {\n return await put(\n `${endpoints['business']}/clientSecret/${clientSecretRequest.businessId}`,\n clientSecretRequest,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function downloadNotificationsReport(fromDate: Moment, toDate: Moment) {\n const formattedFromDate = moment(fromDate).toISOString();\n const formattedToDate = moment(toDate).toISOString();\n\n return await get(\n `${endpoints['notifications']}?from=${formattedFromDate}&to=${formattedToDate}`,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { businessService } from '../../services/business.service';\nimport {\n ADD_BUSINESSES,\n CREATE_BUSINESS_FAILED,\n CREATE_BUSINESS_SUCCESS,\n CREATING_BUSINESS,\n CreateBusinessTypes,\n FETCHING_BUSINESSES,\n FETCH_BUSINESSES_FAILED,\n FetchBusinessesTypes,\n GETTING_BUSINESS,\n GETTING_BUSINESS_SUB_BUSINESSES,\n GET_BUSINESS_FAILED,\n GET_BUSINESS_SUB_BUSINESSES_FAILED,\n GET_BUSINESS_SUB_BUSINESSES_SUCCESS,\n GET_BUSINESS_SUCCESS,\n GetBusinessSubBusinessesTypes,\n GetBusinessTypes,\n UPDATE_BUSINESS_FAILED,\n UPDATE_BUSINESS_SUCCESS,\n UPDATE_SECRET_FAILED,\n UPDATE_SECRET_SUCCESS,\n UPDATING_BUSINESS,\n UPDATING_SECRET,\n UpdateBusinessTypes,\n UpdateSecretTypes,\n} from '../config/ActionTypes';\nimport {\n Business,\n BusinessRequest,\n ClientSecretRequest,\n SubBusiness,\n UpdateBusinessRequest,\n} from '../config/types';\n\n//#region Fetch businesses\n\nexport const fetchBusinesses = () => {\n return (dispatch: Dispatch) => {\n dispatch(loadingBusinesses());\n\n return businessService.fetchBusinesses().then(\n (response) => {\n dispatch(addBusinesses(response!));\n },\n (error) => {\n dispatch(fetchBusinessesFailed(error));\n },\n );\n };\n};\n\nexport const loadingBusinesses = (): FetchBusinessesTypes => ({\n type: FETCHING_BUSINESSES,\n});\n\nexport const addBusinesses = (businesses: Business[]): FetchBusinessesTypes => ({\n type: ADD_BUSINESSES,\n businesses,\n});\n\nexport const fetchBusinessesFailed = (error: string): FetchBusinessesTypes => ({\n type: FETCH_BUSINESSES_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Create business\n\nexport const createBusiness = (business: BusinessRequest, picture: File) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingBusiness());\n\n return businessService.createBusiness(business, picture).then(\n (response) => {\n dispatch(createBusinessSuccess(response!));\n },\n (error) => {\n dispatch(createBusinessFailed(error));\n },\n );\n };\n};\n\nexport const creatingBusiness = (): CreateBusinessTypes => ({\n type: CREATING_BUSINESS,\n});\n\nexport const createBusinessSuccess = (business: Business): CreateBusinessTypes => ({\n type: CREATE_BUSINESS_SUCCESS,\n business,\n});\n\nexport const createBusinessFailed = (error: string): CreateBusinessTypes => ({\n type: CREATE_BUSINESS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Update business\n\nexport const updateBusiness = (updateBusinessRequest: UpdateBusinessRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingBusiness());\n\n return businessService.updateBusiness(updateBusinessRequest).then(\n (response) => {\n dispatch(updateBusinessSuccess(response!));\n },\n (error) => {\n dispatch(updateBusinessFailed(error));\n },\n );\n };\n};\n\nexport const updatingBusiness = (): UpdateBusinessTypes => ({\n type: UPDATING_BUSINESS,\n});\n\nexport const updateBusinessSuccess = (business: Business): UpdateBusinessTypes => ({\n type: UPDATE_BUSINESS_SUCCESS,\n business,\n});\n\nexport const updateBusinessFailed = (error: string): UpdateBusinessTypes => ({\n type: UPDATE_BUSINESS_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Get business\n\nexport const getBusiness = (businessUrlName: string) => {\n return (dispatch: Dispatch) => {\n dispatch(gettingBusiness());\n\n return businessService.getBusiness(businessUrlName).then(\n (response) => {\n dispatch(getBusinessSuccess(response!));\n },\n (error) => {\n dispatch(getBusinessFailed(error));\n },\n );\n };\n};\n\nexport const gettingBusiness = (): GetBusinessTypes => ({\n type: GETTING_BUSINESS,\n});\n\nexport const getBusinessSuccess = (business: Business): GetBusinessTypes => ({\n type: GET_BUSINESS_SUCCESS,\n business,\n});\n\nexport const getBusinessFailed = (error: string): GetBusinessTypes => ({\n type: GET_BUSINESS_FAILED,\n error,\n});\n\n//#region Get businessSubBusinesses\n\nexport const getBusinessSubBusinesses = (businessId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(gettingBusinessSubBusinesses());\n\n return businessService.getBusinessSubBusinesses(businessId).then(\n (response) => {\n dispatch(getBusinessSubBusinessesSuccess(response!));\n },\n (error) => {\n dispatch(getBusinessSubBusinessesFailed(error));\n },\n );\n };\n};\n\nexport const gettingBusinessSubBusinesses = (): GetBusinessSubBusinessesTypes => ({\n type: GETTING_BUSINESS_SUB_BUSINESSES,\n});\n\nexport const getBusinessSubBusinessesSuccess = (\n subBusinesses: SubBusiness[],\n): GetBusinessSubBusinessesTypes => ({\n type: GET_BUSINESS_SUB_BUSINESSES_SUCCESS,\n subBusinesses,\n});\n\nexport const getBusinessSubBusinessesFailed = (error: string): GetBusinessSubBusinessesTypes => ({\n type: GET_BUSINESS_SUB_BUSINESSES_FAILED,\n error,\n});\n\n//#endregion\n\n//#region Update client secret\n\nexport const updateClientSecret = (clientSecretRequest: ClientSecretRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingSecret());\n\n return businessService.updateClientSecret(clientSecretRequest).then(\n (response) => {\n dispatch(updateSecretSuccess());\n },\n (error) => {\n dispatch(updateSecretFailed(error));\n },\n );\n };\n};\n\nexport const updatingSecret = (): UpdateSecretTypes => ({\n type: UPDATING_SECRET,\n});\n\nexport const updateSecretSuccess = (): UpdateSecretTypes => ({\n type: UPDATE_SECRET_SUCCESS,\n});\n\nexport const updateSecretFailed = (error: string): UpdateSecretTypes => ({\n type: UPDATE_SECRET_FAILED,\n error,\n});\n\n//#endregion\n","import { Paper, Theme, createStyles, makeStyles, useMediaQuery, useTheme } from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport dummy from '../../assets/dummy.png';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { AlertTriangle } from '../../components/Icons/AlertTriangle';\nimport { ImageUpload } from '../../components/ImageUpload';\nimport VATTooltip from '../../components/Link/VATTooltip';\nimport options from '../../components/Link/inputData';\nimport { Loading } from '../../components/Loading';\nimport { PaymentMethods } from '../../components/PaymentMethods';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { SubmitButton } from '../../components/SubmitButton';\nimport { Warning } from '../../components/Warning';\nimport { FormSelectField } from '../../components/forms/FormSelectField';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport schemas from '../../data/schemas';\nimport { businessService } from '../../services/business.service';\nimport { updateBusiness } from '../../store/action_creators/business.actions';\nimport { RootState, UpdateBusinessRequest, UpdateImageRequest } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n informationCol: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 1,\n '& p': {\n margin: '0.8rem 0 -0.6rem 0 ',\n },\n },\n informationRow: {\n display: 'flex',\n flexDirection: 'row',\n gap: '0.9375rem',\n flexWrap: 'nowrap',\n width: '100%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n tooltipContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.8rem 0 -0.6rem 0 ',\n '& span': {\n display: 'flex',\n marginLeft: '0.375rem',\n },\n '& p': {\n margin: 0,\n },\n },\n }),\n);\ninterface Values {\n prettyName: string;\n urlName: string;\n plexoCommerceName: string;\n legalId: string;\n description: string;\n vat: number;\n}\n\nfunction Business() {\n const theme = useTheme();\n const dispatch = useDispatch();\n const classes = useStyles();\n const { auth, business } = useSelector((state: RootState) => state);\n const [initialized, setInitialized] = useState(false);\n const [updating, setUpdating] = useState(false);\n const [selectedPhoto, setSelectedPhoto] = useState(null);\n const [pictureError, setPictureError] = useState(null);\n const [imageError, setImageError] = useState(null);\n const imageRef = useRef(null);\n\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n useEffect(() => {\n if (imageRef.current && imageRef.current.src === '') {\n imageRef.current.src = dummy;\n }\n });\n\n useEffect(() => {\n if (!initialized && auth.account && imageRef.current !== null) {\n setInitialized(true);\n\n if (auth.account.business.logoImage) {\n imageRef.current.src = `data:${auth.account.business.logoImage.contentType};base64,${auth.account.business.logoImage.data}`;\n }\n }\n }, [initialized, auth.account]);\n\n const submitBusiness = (values: Values, helpers: FormikHelpers) => {\n if (auth.account) {\n setUpdating(true);\n setPictureError(null);\n\n const updatedBusiness: UpdateBusinessRequest = {\n businessId: auth.account.business.id!,\n urlName: values.urlName,\n prettyName: values.prettyName,\n plexoCommerceName: auth.account.business.plexoCommerceName,\n legalId: values.legalId,\n acceptsOnTheFly: auth.account.business.acceptsOnTheFly!,\n softDescriptor: values.description,\n vatRate: values.vat!,\n sendNotification: auth.account.business.mailNotificationsEnabled!,\n mailForNotifications: auth.account.business.mailForNotifications,\n urlForSystemNotifications: auth.account.business.urlForSystemNotifications,\n clientId: auth.account.business.clientId,\n clientSecret: auth.account.business.clientSecret,\n acceptsSplitPayments: auth.account.business.acceptsSplitPayments!,\n };\n\n dispatch(updateBusiness(updatedBusiness));\n\n if (selectedPhoto) {\n const updateImageRequest: UpdateImageRequest = {\n businessId: auth.account.business.id!,\n file: selectedPhoto!,\n };\n\n businessService.updateBusinessPicture(updateImageRequest).catch((error) => {\n setPictureError(error.message);\n });\n }\n }\n };\n\n const closeSnack = () => {\n setUpdating(false);\n };\n\n const submitButton = ;\n\n return (\n
    \n \n \n \n {auth.account ? (\n \n {({ values }) => {\n return (\n <>\n
    \n
    \n
    \n

    Nombre

    \n \n
    \n
    \n

    Nombre para la dirección web

    \n \n
    \n
    \n

    Nombre en Plexo

    \n \n
    \n
    \n
    \n
    \n
    \n

    IVA

    \n \n
    \n \n
    \n
    \n

    RUT

    \n \n
    \n
    \n
    \n {auth.account?.business.vatRate !== values.vat && (\n }\n />\n )}\n \n );\n }}\n \n ) : (\n \n )}\n
    \n {isMobile && submitButton}\n \n \n \n
    \n );\n}\n\nexport default Business;\n","import { Paper, useMediaQuery, useTheme } from '@material-ui/core';\nimport { Form, Formik, FormikProps } from 'formik';\nimport { useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { Values } from '../../components/dialogs/ChangePasswordDialog/ChangePasswordDialog';\nimport { Loading } from '../../components/Loading';\nimport PasswordField from '../../components/PasswordField/PasswordField';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { SubmitButton } from '../../components/SubmitButton';\nimport schemas from '../../data/schemas';\nimport { changeCredentials } from '../../store/action_creators/auth.actions';\nimport { Status } from '../../store/config/enums';\nimport { ChangeCredentialsRequest, RootState } from '../../store/config/types';\n\nfunction ChangePassword() {\n const dispatch = useDispatch();\n const auth = useSelector((state: RootState) => state.auth);\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const [changingPassword, setChangingPassword] = useState(false);\n const formikRef = useRef>(null);\n\n const submitPassword = (values: Values) => {\n if (auth.account) {\n const changeCredentialsRequest: ChangeCredentialsRequest = {\n userId: auth.account.userId,\n email: auth.account.email,\n oldPassword: values.currentPassword,\n newPassword: values.password,\n };\n setChangingPassword(true);\n dispatch(changeCredentials(changeCredentialsRequest));\n }\n };\n\n const closeSnack = () => {\n setChangingPassword(false);\n\n if (auth.changeCredentialsSuccess) {\n formikRef.current?.resetForm();\n }\n };\n\n const submitButton = (\n \n );\n\n return (\n
    \n {!isMobile && submitButton}\n \n {auth.account ? (\n \n
    \n \n \n \n {isMobile && submitButton}\n \n \n \n ) : (\n \n )}\n
    \n
    \n );\n}\n\nexport default ChangePassword;\n","import { SVGProps } from 'react';\n\nfunction SplitIcon(props: SVGProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default SplitIcon;\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormHelperText,\n IconButton,\n InputAdornment,\n TextField,\n Theme,\n Tooltip,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport AutorenewIcon from '@material-ui/icons/Autorenew';\nimport CloseIcon from '@material-ui/icons/CloseOutlined';\nimport VpnKeyIcon from '@material-ui/icons/VpnKey';\nimport generator from 'generate-password';\nimport { useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { ThunkDispatch } from 'redux-thunk';\nimport { updateClientSecret } from '../../store/action_creators/business.actions';\nimport { AppActions } from '../../store/config/ActionTypes';\nimport { Status } from '../../store/config/enums';\nimport { ClientSecretRequest, RootState } from '../../store/config/types';\nimport colors from '../../styles/_variables.module.scss';\nimport { CustomSnackbar } from '../CustomSnackbar';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n content: {\n display: 'flex',\n flexDirection: 'column',\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n button: {\n margin: '1rem',\n width: 200,\n fontSize: '1rem',\n },\n clientSecret: {\n padding: '0.3rem 1rem',\n marginTop: '1rem',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n backgroundColor: theme.palette.grey['200'],\n },\n title: {\n padding: '0.3rem',\n paddingLeft: '1.4rem',\n '& h2': {\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n },\n root: {\n width: '100%',\n },\n icon: {\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n helperText: {\n margin: 0,\n marginTop: '0.4rem',\n color: colors.iconColor,\n fontSize: '0.875rem',\n lineHeight: '1.25rem',\n },\n }),\n);\n\ninterface ClientSecretProps {\n secret: string;\n setSecret(value: string): void;\n creating?: boolean;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n business: state.business,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n updateClientSecret: (clientSecretRequest: ClientSecretRequest) =>\n dispatch(updateClientSecret(clientSecretRequest)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & ClientSecretProps;\n\nfunction ClientSecret({ auth, business, updateClientSecret, secret, setSecret, creating }: PropsType) {\n const classes = useStyles();\n const [updating, setUpdating] = useState(false);\n const [open, setOpen] = useState(false);\n\n const generateSecretText = () => {\n return generator.generate({ length: 12, numbers: true, uppercase: true });\n };\n\n const generateSecret = () => {\n setSecret(generateSecretText());\n };\n\n const submitSecret = () => {\n if (auth.account) {\n if (creating) {\n setOpen(false);\n } else {\n setUpdating(true);\n\n const clientSecretRequest: ClientSecretRequest = {\n businessId: auth.account.business.id!,\n clientSecret: secret,\n };\n\n updateClientSecret(clientSecretRequest);\n }\n }\n };\n\n const closeSnack = () => {\n setUpdating(false);\n };\n\n return (\n <>\n \n \n setOpen(true)} classes={{ root: classes.icon }} />\n \n \n ),\n }}\n />\n \n Este valor funcionará como llave de seguridad para los usuarios avanzados que deseen integrar\n funcionalidades a través de servicios web\n \n setOpen(false)}>\n \n Generar client secret\n setOpen(false)} className={classes.icon}>\n \n \n \n \n El nuevo client secret será\n
    \n \n \n \n \n
    \n
    \n \n setOpen(false)}\n className={classes.button}\n color=\"secondary\"\n variant=\"outlined\"\n >\n Cancelar\n \n \n \n
    \n \n \n );\n}\n\nexport default connector(ClientSecret);\n","import {\n Button,\n createStyles,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport colors from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n margin: '1.5625rem',\n [theme.breakpoints.down('sm')]: {\n '& .MuiDialog-paper': {\n margin: '0',\n width: '100%',\n },\n },\n '& .MuiDialogActions-root': {\n justifyContent: 'center',\n paddingBottom: '1.5625rem',\n },\n },\n title: {\n padding: '1.5625rem 1.875rem 0.3125rem',\n textAlign: 'center',\n },\n contentText: {\n textAlign: 'center',\n fontSize: '0.9375rem',\n color: colors.slateBlue,\n },\n }),\n);\n\ninterface DisableSplitPaymentsDialogProps {\n open: boolean;\n handleClose(): void;\n handleConfirm(): void;\n}\n\nfunction DisableSplitPaymentsDialog({ open, handleClose, handleConfirm }: DisableSplitPaymentsDialogProps) {\n const classes = useStyles();\n\n return (\n \n \n ¿Estás seguro que deseas deshabilitar los split-payments?\n \n \n \n Si deshabilitas los split-payments, todos los links creados bajo esta modalidad quedarán inactivos,\n y los clientes no podrán usarlos para pagar.\n \n \n \n \n \n \n \n );\n}\n\nexport default DisableSplitPaymentsDialog;\n","import { makeStyles } from '@material-ui/core';\nimport { DateTimePicker } from '@material-ui/pickers';\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\nimport { FieldProps } from 'formik';\n\nconst useDateFieldStyles = makeStyles({\n date: {\n marginTop: '16px',\n marginBottom: '8px',\n width: '100%',\n },\n});\n\ninterface CustomProps {\n placeholder: string;\n minDateMessage?: string;\n}\n\ntype FormDateFieldProps = FieldProps & CustomProps;\n\nfunction FormDateField({ field, form, placeholder, minDateMessage, ...props }: FormDateFieldProps) {\n const classes = useDateFieldStyles();\n\n const onChange = (date: MaterialUiPickersDate) => {\n if (date) {\n const newDate = new Date(date.toISOString());\n form.setFieldValue(field.name, newDate);\n }\n };\n\n return (\n \n );\n}\n\nexport default FormDateField;\n","interface CsvHeader {\n key: string;\n label: string;\n}\n\nexport const csvHeaders: CsvHeader[] = [\n { label: 'Estado', key: 'status' },\n { label: 'Fecha', key: 'date' },\n { label: 'Descripción', key: 'description' },\n { label: 'Tipo de link', key: 'linkType' },\n { label: 'Medio de pago', key: 'issuerName' },\n { label: 'Últimos 4 dígitos', key: 'maskedPan' },\n { label: 'Tipo de tarjeta', key: 'cardType' },\n { label: 'Importe', key: 'amount' },\n { label: 'Cuotas', key: 'installments' },\n { label: 'Nro. Autorización', key: 'authorization' },\n { label: 'Ticket', key: 'ticket' },\n { label: 'Referencia link', key: 'referencePayment' },\n { label: 'Referencia usuario', key: 'clientComments' },\n];\n\nexport const csvNotificationHeaders: CsvHeader[] = [\n { label: 'HTTP Status', key: 'httpCodeResponse' },\n { label: 'Fecha de la notificación', key: 'created' },\n { label: 'Id Plexo', key: 'plexoTransactionId' },\n { label: 'Link External Id', key: 'externalId' },\n { label: 'Cuotas', key: 'installments' },\n { label: 'Tarjeta', key: 'issuerName' },\n { label: 'Últimos 4 dígitos', key: 'maskedPan' },\n { label: 'Monto', key: 'value' },\n { label: 'Moneda', key: 'currency' },\n { label: 'Estado del pago', key: 'status' },\n { label: 'Fecha del pago', key: 'date' },\n];\n\nexport const csvLinksHeaders: CsvHeader[] = [\n { label: 'Importe', key: 'amount' },\n { label: 'Moneda', key: 'currency' },\n { label: 'Descripción', key: 'description' },\n { label: 'Referencia', key: 'reference' },\n { label: 'Email', key: 'email' },\n { label: 'Valido hasta', key: 'validUntil' },\n];\n","import { Theme } from '@material-ui/core/styles';\nimport { PaymentStatusEnum } from '../store/config/enums';\n\nexport const paymentStatusEnumHelper = {\n useBackgroundColorByStatus,\n useIconColorByStatus,\n getStatusText,\n getStatusColorVariant,\n};\n\nfunction useBackgroundColorByStatus(paymentStatus: PaymentStatusEnum, theme: Theme): string {\n switch (paymentStatus) {\n case PaymentStatusEnum.PENDING:\n return theme.palette.warning.light;\n case PaymentStatusEnum.APPROVED:\n return theme.palette.success.light;\n case PaymentStatusEnum.REJECTED:\n return theme.palette.error.light;\n case PaymentStatusEnum.CANCELLED:\n return theme.palette.grey[200];\n default:\n return '';\n }\n}\n\nfunction useIconColorByStatus(paymentStatus: PaymentStatusEnum, theme: Theme) {\n switch (paymentStatus) {\n case PaymentStatusEnum.PENDING:\n return theme.palette.warning.dark;\n case PaymentStatusEnum.APPROVED:\n return theme.palette.success.dark;\n case PaymentStatusEnum.REJECTED:\n return theme.palette.error.dark;\n case PaymentStatusEnum.CANCELLED:\n return theme.palette.grey[500];\n default:\n return '';\n }\n}\n\nfunction getStatusText(paymentStatus: PaymentStatusEnum): string {\n switch (paymentStatus) {\n case PaymentStatusEnum.PENDING:\n return 'Pendiente';\n case PaymentStatusEnum.APPROVED:\n return 'Aprobado';\n case PaymentStatusEnum.REJECTED:\n return 'Rechazado';\n case PaymentStatusEnum.CANCELLED:\n return 'Cancelado';\n default:\n return '';\n }\n}\n\nfunction getStatusColorVariant(paymentStatus: PaymentStatusEnum) {\n switch (paymentStatus) {\n case PaymentStatusEnum.PENDING:\n return 'warning';\n case PaymentStatusEnum.APPROVED:\n return 'success';\n case PaymentStatusEnum.REJECTED:\n return 'error';\n case PaymentStatusEnum.CANCELLED:\n return 'info';\n default:\n return 'info';\n }\n}\n","import {\n Box,\n Button,\n CircularProgress,\n createStyles,\n makeStyles,\n Paper,\n Theme,\n Typography,\n} from '@material-ui/core';\nimport { Field, Form, Formik } from 'formik';\nimport moment, { Moment } from 'moment';\nimport { useEffect, useRef, useState } from 'react';\nimport { CSVLink } from 'react-csv';\nimport { FormDateField } from '../../components/forms/FormDateField';\nimport { csvNotificationHeaders } from '../../data/csv';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { businessService } from '../../services/business.service';\nimport { CSVPaymentNotificationReport, PaymentNotificationReport } from '../../store/config/types';\nimport variables from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n downloadNotificationsContainer: {\n padding: '1.6rem 2rem',\n width: '100%',\n [theme.breakpoints.down('md')]: {\n marginTop: '1rem',\n },\n },\n downloadNotificationsForm: {\n color: variables.slateBlue,\n display: 'flex',\n flexDirection: 'column',\n gap: '1.25rem',\n alignItems: 'flex-start',\n },\n dateContainer: {\n display: 'flex',\n flexDirection: 'row',\n gap: '1.25rem',\n alignItems: 'center',\n width: '100%',\n '& div': {\n margin: 0,\n },\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n button: {\n height: '3.5rem',\n minWidth: '12rem',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n height: '100%',\n },\n },\n }),\n);\n\ninterface DownloadProps {\n fromDate: Moment;\n toDate: Moment;\n}\n\nexport default function NotificationReport() {\n const currentDate = moment();\n const past7daysDate = moment().subtract(7, 'd');\n const classes = useStyles();\n const csvRef = useRef();\n const [notificationsToDownload, setNotificationsToDownload] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [shouldDownload, setShouldDownload] = useState(false);\n\n useEffect(() => {\n if (shouldDownload && !isLoading) {\n csvRef.current.link.click();\n setShouldDownload(false);\n }\n }, [isLoading, notificationsToDownload, shouldDownload]);\n\n const handleDownloadWebhookReport = async ({ fromDate, toDate }: DownloadProps) => {\n setIsLoading(true);\n const notifications = await businessService.downloadNotificationsReport(fromDate, toDate);\n\n const buildNotifications = (\n notifications: PaymentNotificationReport[] | undefined,\n ): CSVPaymentNotificationReport[] => {\n return notifications\n ? notifications?.map((notification: PaymentNotificationReport) => {\n return {\n httpCodeResponse: notification.httpCodeResponse,\n created: notification.created.toLocaleString(),\n plexoTransactionId: notification.metadata.PlexoTransactionId,\n externalId: notification.metadata.ExternalId,\n installments: notification.metadata.Installments,\n issuerName: notification.metadata.Instrument.IssuerName,\n maskedPan: notification.metadata.Instrument.Name.slice(-4),\n value: notification.metadata.Amount.Value,\n currency: currencyHelper.getCurrencyToken(notification.metadata.Amount.Currency),\n status: paymentStatusEnumHelper.getStatusText(notification.metadata.Status),\n date: notification.metadata.Date.toLocaleString(),\n };\n })\n : [];\n };\n\n const csvData = buildNotifications(notifications?.notificationsDto);\n\n setNotificationsToDownload(csvData);\n setIsLoading(false);\n setShouldDownload(true);\n };\n\n return (\n \n \n
    \n Reporte de Webhooks enviados\n \n \n \n \n {!isLoading ? 'Generar Reporte' : }\n \n \n \n
    \n \n
    \n );\n}\n","// TO-DO: UNCOMMENT WHEN SPLIT PAYMENTS.\n\nimport {\n Button,\n CircularProgress,\n createStyles,\n Divider,\n makeStyles,\n Paper,\n Theme,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { ChangeEvent, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport BoltMarginlessIcon from '../../assets/BoltMarginlessIcon';\nimport SplitIcon from '../../assets/SplitIcon';\nimport { ClientSecret } from '../../components/ClientSecret';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { CustomSwitch } from '../../components/CustomSwitch';\nimport { Loading } from '../../components/Loading';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport { useFetchLinksOnUpdate } from '../../hooks/useFetchLinksOnUpdate';\nimport { updateBusiness } from '../../store/action_creators/business.actions';\nimport { Status } from '../../store/config/enums';\nimport { AuthState, BusinessState, RootState, UpdateBusinessRequest } from '../../store/config/types';\nimport colors from '../../styles/_variables.module.scss';\nimport DisableSplitPaymentsDialog from './DisableSplitPaymentsDialog';\nimport NotificationReport from './NotificationReport';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n configurationContainer: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n configurationTitleContainer: {\n display: 'flex',\n flexDirection: 'row',\n },\n divider: {\n margin: '0 0.8rem',\n backgroundColor: colors.slateBlue,\n opacity: '0.2',\n },\n description: {\n margin: '0.4375rem 0 0 0',\n fontSize: '0.875rem',\n color: colors.iconColor,\n },\n }),\n);\n\ninterface Values {\n email: string;\n clientId: string;\n url: string;\n}\n\nfunction Configuration() {\n const classes = useStyles();\n const dispatch = useDispatch();\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const business: BusinessState = useSelector((state: RootState) => state.business);\n const [updating, setUpdating] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [fastPaymentsEnabled, setFastPaymentsEnabled] = useState(false);\n const [splitPaymentsEnabled, setSplitPaymentsEnabled] = useState(false);\n const [emailsEnabled, setEmailsEnabled] = useState(false);\n const [secret, setSecret] = useState('');\n const [openDialog, setOpenDialog] = useState(false);\n const [pendingSubmit, setPendingSubmit] = useState<{\n values: Values;\n helpers: FormikHelpers;\n } | null>(null);\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const fetchLinksOnUpdate = useFetchLinksOnUpdate();\n\n useEffect(() => {\n if (!initialized && auth.account) {\n setInitialized(true);\n setFastPaymentsEnabled(auth.account.business.acceptsOnTheFly ?? false);\n setSplitPaymentsEnabled(auth.account.business.acceptsSplitPayments ?? false);\n setEmailsEnabled(auth.account.business.mailNotificationsEnabled ?? false);\n setSecret(auth.account.business.clientSecret ?? '');\n }\n }, [initialized, auth.account]);\n\n const handleOnTheFlySwitchChange = (event: ChangeEvent) => {\n setFastPaymentsEnabled(event.target.checked);\n };\n\n const handleSplitPaymentsSwitchChange = (event: ChangeEvent) => {\n setSplitPaymentsEnabled(event.target.checked);\n };\n\n const handleEmailSwitchChange = (event: ChangeEvent) => {\n setEmailsEnabled(event.target.checked);\n };\n\n const handleConfirmDisableSplitPayments = () => {\n setOpenDialog(false);\n if (pendingSubmit) {\n proceedToSubmitBusiness(pendingSubmit.values, pendingSubmit.helpers);\n setPendingSubmit(null);\n }\n };\n\n const handleCancelDisableSplitPayments = () => {\n setOpenDialog(false);\n setPendingSubmit(null);\n };\n\n const submitBusiness = (values: Values, helpers: FormikHelpers) => {\n if (auth.account) {\n if (!splitPaymentsEnabled && auth.account.business.acceptsSplitPayments) {\n setOpenDialog(true);\n setPendingSubmit({ values, helpers });\n } else {\n proceedToSubmitBusiness(values, helpers);\n }\n }\n };\n\n const proceedToSubmitBusiness = (values: Values, helpers: FormikHelpers) => {\n if (auth.account) {\n setUpdating(true);\n\n const updatedBusiness: UpdateBusinessRequest = {\n businessId: auth.account.business.id!,\n urlName: auth.account.business.urlName,\n prettyName: auth.account.business.prettyName,\n legalId: auth.account.business.legalId,\n acceptsOnTheFly: fastPaymentsEnabled,\n acceptsSplitPayments: splitPaymentsEnabled,\n softDescriptor: auth.account.business.softDescriptor,\n vatRate: auth.account.business.vatRate!,\n sendNotification: emailsEnabled,\n mailForNotifications: values.email,\n urlForSystemNotifications: values.url,\n clientId: values.clientId,\n clientSecret: secret,\n plexoCommerceName: auth.account.business.plexoCommerceName,\n };\n\n dispatch(updateBusiness(updatedBusiness));\n }\n };\n\n const closeSnack = () => {\n if (business.updateBusinessSuccess && !splitPaymentsEnabled) {\n fetchLinksOnUpdate();\n }\n\n setUpdating(false);\n };\n\n return (\n
    \n \n {auth.account ? (\n <>\n \n
    \n \n
    \n
    \n
    \n \n \n Habilitar pagos rápidos\n
    \n \n
    \n

    \n Optimiza la gestión de tus cobros mas rápido y fácil. Simplemente comparte una URL o un\n código QR con tus clientes para recibir pagos de manera eficiente.\n

    \n
    \n
    \n \n
    \n
    \n
    \n \n \n Habilitar split payments\n
    \n \n
    \n

    \n Divide el pago en dos partes, cada una con sus propias condiciones y destinos. Para poder\n usar esta función, asegúrate de crear y configurar los comercios necesarios para gestionar\n correctamente los destinos de los pagos.\n

    \n
    \n
    \n \n
    \n
    \n
    \n Habilitar envío de correos\n
    \n \n
    \n {emailsEnabled && (\n <>\n

    \n Recibirás notificaciones sobre los pagos realizados.\n

    \n \n \n )}\n
    \n
    \n \n Configuración avanzada\n \n \n \n \n \n \n {isMobile && (\n \n )}\n
    \n \n \n \n ) : (\n \n )}\n \n \n
    \n );\n}\n\nexport default Configuration;\n","export default __webpack_public_path__ + \"static/media/EmailSent.a09df01d.png\";","import { Button, Link, Theme, createStyles, makeStyles, useMediaQuery, useTheme } from '@material-ui/core';\nimport { ReactNode } from 'react';\nimport emailSentImg from '../../assets/EmailSent.png';\nimport Logo from '../../assets/logo.svg';\nimport questionCircle from '../../assets/question-circle.svg';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n paddingLeft: '12%',\n display: 'flex',\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n [theme.breakpoints.down('md')]: {\n paddingLeft: 0,\n width: '70vw',\n flexDirection: 'column-reverse',\n justifyContent: 'center',\n },\n '& img': {\n maxWidth: '50%',\n [theme.breakpoints.down('md')]: {\n maxWidth: '100%',\n marginRight: '-33%',\n marginBottom: '-10%',\n },\n },\n },\n texts: {\n width: '40%',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n textAlign: 'center',\n },\n '& img': {\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n '& h1': {\n fontWeight: Number(styles.normalTextWeight),\n color: styles.deepBlue,\n fontSize: '3.75rem',\n [theme.breakpoints.down('md')]: {\n fontSize: '2rem',\n },\n },\n '& p': {\n color: styles.veryDarkBlue,\n fontWeight: Number(styles.normalTextWeight),\n fontSize: '1rem',\n },\n '& span': {\n color: styles.primary,\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n },\n help: {\n position: 'absolute',\n right: 34,\n top: 30,\n },\n icon: {\n marginRight: '0.3125rem',\n },\n }),\n);\n\ninterface EmailSentProps {\n text: ReactNode;\n}\n\nfunction EmailSent({ text }: EmailSentProps) {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const classes = useStyles();\n\n return (\n <>\n \n {!isMobile && (\n \n )}\n \n
    \n
    \n \"Plexo\n

    ¡Email enviado!

    \n {text}\n {/* TODO: onClick resend email */}\n
    \n \"\"\n
    \n \n );\n}\nexport default EmailSent;\n","import Lottie from 'lottie-react';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport errorAnimation from '../../assets/plinks-error.json';\nimport { EmailSent } from '../../components/EmailSent';\nimport { LandingLayout } from '../../components/Landing';\nimport { Loading } from '../../components/Loading';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { confirmResetPassword } from '../../store/action_creators/auth.actions';\nimport { RootState } from '../../store/config/types';\n\nfunction ConfirmResetPassword() {\n const dispatch = useDispatch();\n const auth = useSelector((state: RootState) => state.auth);\n\n const errorAnimationData = ;\n\n const emailSentText = (\n <>\n

    Enviamos un mail a {auth.confirmResetPasswordSuccess?.email}

    \n

    Allí encontrarás las instrucciones para reiniciar tu contraseña.

    \n

    Si no recibiste este correo después de unos minutos, por favor revisa tu casilla de spam.

    \n \n );\n\n useEffect(() => {\n if (\n !auth.confirmingResetPassword &&\n !auth.confirmResetPasswordSuccess &&\n auth.confirmResetPasswordErrorMessage === null\n ) {\n let urlVars = urlHelper.parseQueryString();\n if (urlVars.id && urlVars.token) {\n dispatch(confirmResetPassword({ id: urlVars.id, token: urlVars.token }));\n }\n }\n }, [\n auth.confirmResetPasswordErrorMessage,\n auth.confirmResetPasswordSuccess,\n auth.confirmingResetPassword,\n dispatch,\n ]);\n\n return (\n <>\n {auth.confirmingResetPassword ? (\n \n ) : !auth.confirmResetPasswordSuccess ? (\n
    \n \n Por favor, intenta de nuevo en unos minutos o contáctanos a \n soporte@plexo.com.uy\n para poder ayudarte. Si deseas salir solo debes cerrar la ventana.\n
    \n }\n />\n
    \n ) : (\n \n )}\n \n );\n}\n\nexport default ConfirmResetPassword;\n","import { Button, Paper } from '@material-ui/core';\nimport axios from 'axios';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport schemas from '../../data/schemas';\nimport { Status } from '../../store/config/enums';\n\ninterface Values {\n name: string;\n email: string;\n message: string;\n}\n\nfunction Contact() {\n const navigate = useNavigate();\n const location = useLocation();\n\n const [serverState, setServerState] = useState(null);\n const [serverMessage, setServerMessage] = useState(null);\n const [snackOpened, setSnackOpened] = useState(false);\n\n const handleServerResponse = (ok: boolean, msg: string) => {\n setServerState(ok);\n setServerMessage(msg);\n setSnackOpened(true);\n };\n\n const handleOnSubmit = (values: Values, actions: FormikHelpers) => {\n axios({\n method: 'POST',\n url: 'https://formspree.io/f/moqpblzg',\n data: values,\n })\n .then((response: any) => {\n actions.setSubmitting(false);\n actions.resetForm();\n handleServerResponse(true, 'Gracias por contactarnos');\n })\n .catch((error: any) => {\n actions.setSubmitting(false);\n handleServerResponse(false, error.response.data.error);\n });\n };\n\n const closeSnack = () => {\n setSnackOpened(false);\n\n setTimeout(() => {\n if (serverState) {\n if (location.pathname === '/contact') {\n navigate('/faqs');\n } else {\n navigate('/user-faqs');\n }\n }\n\n setServerState(null);\n setServerMessage(null);\n }, 200);\n };\n\n return (\n
    \n \n \n \n {({ isSubmitting }) => (\n
    \n \n \n \n \n \n )}\n \n
    \n \n
    \n );\n}\n\nexport default Contact;\n","import colors from '../styles/_variables.module.scss';\n\ninterface MultiUseLinkIconProps {\n color?: string;\n transparent?: boolean;\n}\n\nfunction MultiUseLinkIcon({ color = colors.plexoBlue, transparent = false }: MultiUseLinkIconProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default MultiUseLinkIcon;\n","import colors from '../styles/_variables.module.scss';\n\ninterface OneTimeLinkIconProps {\n color?: string;\n transparent?: boolean;\n}\n\nfunction OneTimeLinkIcon({ color = colors.plexoBlue, transparent = false }: OneTimeLinkIconProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default OneTimeLinkIcon;\n","import { Button, createStyles, makeStyles, Theme, Typography } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport MultiUseLinkIcon from '../../assets/MultiUseLinkIcon';\nimport OneTimeLinkIcon from '../../assets/OneTimeLinkIcon';\nimport { AuthState, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'grid',\n height: '100%',\n gridTemplateRows: '1fr auto',\n gridTemplateColumns: '1fr',\n },\n texts: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n '& h6': {\n textAlign: 'center',\n },\n [theme.breakpoints.down('md')]: {\n marginBottom: '2rem',\n },\n },\n buttonsDiv: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n gap: '0.75rem',\n alignSelf: 'flex-end',\n },\n button: {\n fontWeight: Number(styles.normalTextWeight),\n width: '100%',\n '& .MuiButton-startIcon': {\n color: styles.white,\n },\n '&:hover': {\n '& path': {\n fill: styles.primary,\n },\n },\n },\n }),\n);\n\nfunction EmptyLinksMessage() {\n const classes = useStyles();\n const navigate = useNavigate();\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const noLinksEverCreated = !auth.account?.business?.hasLinks;\n\n return (\n
    \n
    \n
    \n \n {noLinksEverCreated ? '¡Bienvenido a Plexo Links! ' : 'Aún no tienes links de pago creados'}\n \n \n {`${\n noLinksEverCreated ? 'Aún no tienes links de pago creados.' : ''\n } Podrás visualizarlos aquí una vez que los crees.`}\n \n
    \n
    \n }\n onClick={() => navigate('/one-use-link')}\n >\n Crear link de 1 uso\n \n }\n onClick={() => navigate('/permanent-link')}\n >\n Crear link multiuso\n \n
    \n
    \n
    \n );\n}\n\nexport default EmptyLinksMessage;\n","import styles from '../styles/_variables.module.scss';\n\nfunction ShareIcon({ disabled }: { disabled?: boolean }) {\n return (\n <>\n \n \n \n \n \n );\n}\n\nexport default ShareIcon;\n","import { Link, LinkIssuer, LinkToPay } from '../store/config/types';\n\nfunction verifyValidation(date: Date | string): boolean {\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n const now = new Date();\n return dateObj < now;\n}\n\nfunction verifyPaymentMethods(linkIssuers: LinkIssuer[] | undefined): boolean {\n return linkIssuers?.length === 0;\n}\n\nfunction getTotalLinkAmount(link?: Link | LinkToPay): number {\n if (!link) return 0;\n\n return +link.amount.value + (link.splitLinkDto?.amount?.value || 0);\n}\n\nexport const linkHelper = { verifyValidation, verifyPaymentMethods, getTotalLinkAmount };\n","import { IconProps } from '../data/icon.type';\nimport colors from '../styles/_variables.module.scss';\n\ninterface BoltIconProps extends IconProps {\n transparent?: boolean;\n}\n\nfunction BoltIcon({ color = colors.plexoBlue, className, transparent = false }: BoltIconProps) {\n return (\n \n \n \n \n );\n}\n\nexport default BoltIcon;\n","import BoltIcon from '../assets/BoltIcon';\nimport MultiUseLinkIcon from '../assets/MultiUseLinkIcon';\nimport OneTimeLinkIcon from '../assets/OneTimeLinkIcon';\nimport { LinkTypeEnum } from '../store/config/enums';\n\nexport const linkTypeEnumHelper = {\n toNiceString,\n getIcon,\n};\n\nfunction toNiceString(linkType: LinkTypeEnum): string {\n switch (linkType) {\n case LinkTypeEnum.ONETIME:\n return 'Link de 1 solo uso';\n case LinkTypeEnum.PERMANENT:\n return 'Link multiuso';\n case LinkTypeEnum.ONTHEFLY:\n return 'Pago rápido';\n default:\n return '';\n }\n}\n\nfunction getIcon(linkType?: LinkTypeEnum): JSX.Element | null {\n switch (linkType) {\n case LinkTypeEnum.ONETIME:\n return ;\n case LinkTypeEnum.PERMANENT:\n return ;\n case LinkTypeEnum.ONTHEFLY:\n return ;\n default:\n return null;\n }\n}\n","export const numberHelper = {\n getNumberWithDots,\n getSubtotal,\n getIVA,\n};\n\nfunction getNumberWithDots(number: number) {\n return number\n .toFixed(2)\n .toString()\n .replace('.', ',')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\nfunction getSubtotal(totalAmount: number, iva: number) {\n return (totalAmount / (1 + iva / 100)).toFixed(2).replace('.', ',');\n}\n\nfunction getIVA(totalAmount: number, options: { taxedAmount?: number; iva?: number }): string {\n const { taxedAmount, iva } = options;\n\n if (taxedAmount) {\n return getNumberWithDots(totalAmount - taxedAmount);\n }\n\n return getNumberWithDots(totalAmount - totalAmount / (1 + (iva ?? 0) / 100));\n}\n","import { PaymentTypeEnum } from '../store/config/enums';\n\nconst paymentTypesTitle: Record = {\n [PaymentTypeEnum.Regular]: 'Tradicional',\n [PaymentTypeEnum.Split]: 'Split payments',\n};\n\nconst paymentTypesSubtitle: Record = {\n [PaymentTypeEnum.Regular]:\n 'Procesa el pago completo hacia un único destino, ideal para transacciones sencillas.',\n [PaymentTypeEnum.Split]:\n 'Divide el pago en dos partes, cada una con su propio destino y condiciones específicas.',\n};\n\nexport const paymentTypeHelper = { paymentTypesTitle, paymentTypesSubtitle };\n","import { Tooltip, useMediaQuery, useTheme } from '@material-ui/core';\nimport React, { CSSProperties, MutableRefObject, useEffect, useRef, useState } from 'react';\nimport ShareIcon from '../../assets/ShareIcon';\n\ninterface LinkToShareTooltipProps {\n reason: string;\n}\n\nfunction LinkToShareTooltip({ reason }: LinkToShareTooltipProps) {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const tooltipRef: MutableRefObject = useRef(null);\n const title =\n reason === 'expired'\n ? 'Actualiza la fecha de vencimiento del link para volver a compartirlo'\n : 'Este link no tiene configurado ningún medio de pago, añade uno para poder compartirlo';\n\n const handleOutsideClick = (event: MouseEvent) => {\n if (tooltipOpen && tooltipRef.current && !tooltipRef.current.contains(event.target as Node)) {\n setTooltipOpen(false);\n }\n };\n\n useEffect(() => {\n if (isMobile) {\n document.addEventListener('mousedown', handleOutsideClick);\n return () => {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }\n // eslint-disable-next-line\n }, [isMobile, tooltipOpen]);\n\n const handleTooltipToggle = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n if (isMobile) {\n setTooltipOpen(!tooltipOpen);\n }\n };\n\n const popperStyles: CSSProperties = {\n pointerEvents: tooltipOpen ? 'auto' : 'none',\n width: '8.75rem',\n };\n const iconStyles: CSSProperties = {\n padding: '3px',\n display: 'flex',\n alignItems: 'center',\n };\n\n return (\n setTooltipOpen(false)}\n key={isMobile ? 'mobile' : 'desktop'}\n PopperProps={{ style: popperStyles }}\n >\n (tooltipRef.current = ref) : undefined}\n style={iconStyles}\n >\n \n \n \n );\n}\n\nexport default LinkToShareTooltip;\n","import colors from '../../../styles/_variables.module.scss';\n\nfunction ShareByEmail() {\n return (\n \n \n \n );\n}\n\nexport default ShareByEmail;\n","import colors from '../../../styles/_variables.module.scss';\n\nfunction ShareByQr() {\n return (\n \n \n \n );\n}\n\nexport default ShareByQr;\n","import colors from '../../../styles/_variables.module.scss';\n\nfunction ShareByWhatsapp() {\n return (\n \n \n \n );\n}\n\nexport default ShareByWhatsapp;\n","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n}\n","import { Document, Image, Page, StyleSheet, Text, View } from '@react-pdf/renderer';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { urlHelper } from '../../../helpers/urlHelper';\nimport { Amount, Business } from '../../../store/config/types';\n\nconst styles = StyleSheet.create({\n page: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: 32,\n width: 600,\n },\n title: {\n marginBottom: 25,\n fontSize: 20,\n },\n textContainer: {\n textAlign: 'center',\n width: '50%',\n },\n description: {\n fontSize: 13,\n marginTop: 15,\n color: 'gray',\n },\n value: {\n marginTop: 12,\n fontSize: 20,\n fontWeight: 'bold',\n },\n logo: {\n height: '80pt',\n width: '80pt',\n objectFit: 'contain',\n },\n image: {\n height: '350pt',\n width: '350pt',\n objectFit: 'contain',\n },\n});\n\ninterface PdfQrProps {\n url: string | null;\n description?: string;\n price?: Amount;\n business?: Business;\n}\n\nfunction PdfQr({ url, description, price, business }: PdfQrProps) {\n const priceValueFormatted: string = `Valor: ${currencyHelper.getCurrencyToken(\n price?.currency!,\n )}${price?.value.toLocaleString('de-DE')}`;\n\n return (\n \n \n \n {business?.urlName}\n \n \n {description && {description}}\n {price && {priceValueFormatted}}\n \n \n \n );\n}\n\nexport default PdfQr;\n","import {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { pdf } from '@react-pdf/renderer';\nimport { saveAs } from 'file-saver';\nimport QRCode from 'qrcode.react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { numberHelper } from '../../../helpers/numberHelper';\nimport useWindowDimensions from '../../../helpers/windowDimensionsHelper';\nimport { Amount, RootState } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport PdfQr from './PdfQr';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n paddingTop: 0,\n paddingBottom: '1.3125rem',\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n },\n },\n closeContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n\n '& *': {\n cursor: 'pointer',\n fill: styles.iconColor,\n },\n },\n titleContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n title: {\n margin: '0 0.625rem',\n fontSize: '1.0625rem',\n lineHeight: '1.3',\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n descriptionText: {\n maxWidth: '18.625rem',\n margin: '0.7813rem 0.625rem 0',\n color: styles.slateBlue,\n },\n icon: {\n cursor: 'pointer',\n },\n qrCode: {\n display: 'flex',\n justifyContent: 'center',\n },\n noWrap: {\n whiteSpace: 'nowrap',\n },\n amountText: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n margin: '0 0.625rem 1.125rem',\n fontSize: '1rem',\n color: styles.textButtonSecondary,\n },\n }),\n);\n\nconst calculateQrWidth = (windowWidth: number): number => {\n // 64 for margins, 48 for paddings\n return windowWidth - 64 - 48;\n};\n\ninterface QrCodeDialogProps {\n open: boolean;\n setOpen: (value: boolean) => void;\n url: string;\n description?: string;\n price?: Amount;\n}\n\nfunction QrCodeDialog({ open, setOpen, url, description, price }: QrCodeDialogProps) {\n const auth = useSelector((state: RootState) => state.auth);\n const [hasClicked, setHasClicked] = useState(null);\n\n const classes = useStyles();\n const closeDialog = () => {\n setOpen(false);\n };\n const { width } = useWindowDimensions();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('xs'));\n\n const downloadPDF = useCallback(async () => {\n const base64Image: string = (document.querySelector('canvas') as HTMLCanvasElement).toDataURL();\n const blob = await pdf(\n ,\n ).toBlob();\n saveAs(blob, `${auth.account?.business.urlName}_QR`);\n setHasClicked(false);\n }, [auth, description, price]);\n\n useEffect(() => {\n if (hasClicked) {\n downloadPDF();\n }\n }, [downloadPDF, hasClicked]);\n\n return (\n \n \n \n \n \n
    \n \n {description\n ? description\n : price\n ? `${price.value} ${currencyHelper.getCurrencyName(price.currency)}`\n : 'Código QR'}\n \n
    \n {url && (\n
    \n

    \n Muestra este QR a quien te pagará.\n
    \n Al capturarlo con su teléfono móvil, tu cliente podrá navegar hacia la página de pago.\n

    \n
    \n \n
    \n {!!price?.value && (\n

    \n Importe{' '}\n \n {currencyHelper.getCurrencyToken(price.currency)}{' '}\n {numberHelper.getNumberWithDots(price.value)}\n \n

    \n )}\n \n
    \n )}\n
    \n \n );\n}\n\nexport default QrCodeDialog;\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Field, Form, Formik } from 'formik';\nimport schemas from '../../../data/schemas';\nimport { FormTextField } from '../../forms/FormTextField';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n },\n },\n dialogActions: {\n padding: '2rem 0',\n },\n }),\n);\n\ninterface DialogProps {\n open: boolean;\n setOpen: (value: boolean) => void;\n url: string;\n}\n\ninterface Values {\n phone: string;\n}\n\nfunction ShareByWhatsAppDialog({ open, setOpen, url }: DialogProps) {\n const classes = useStyles();\n const message = 'Paga+tu+compra+con+Plexo+Links+haciendo+clic+aquí:';\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n const openWhatsAppLink = (values: Values) => {\n let phone = values.phone.trim();\n phone = phone.startsWith('09') ? `598${phone.slice(1)}` : phone;\n const whatsAppLink = `https://api.whatsapp.com/send/?phone=${phone}&text=${message}+${url}&app_absent=0`;\n window.open(whatsAppLink);\n closeDialog();\n };\n return (\n \n \n \n \n \n \n Compartir por WhatsApp\n \n \n
    \n \n \n \n \n \n \n
    \n \n );\n}\n\nexport default ShareByWhatsAppDialog;\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Field, Form, Formik } from 'formik';\nimport { useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport schemas from '../../../data/schemas';\nimport { Status } from '../../../store/config/enums';\nimport { RootState } from '../../../store/config/types';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport { FormTextField } from '../../forms/FormTextField';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n },\n },\n dialogActions: {\n padding: '2rem 0',\n },\n }),\n);\n\ninterface ShareValues {\n email: string;\n}\n\ninterface ShareOptionProps {\n open: boolean;\n setOpen: (value: boolean) => void;\n share: (email: string) => void;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n links: state.links,\n});\n\nconst connector = connect(mapStateToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & ShareOptionProps;\n\nfunction ShareOptions({ links, open, setOpen, share }: PropsType) {\n const classes = useStyles();\n\n const [sharingLink, setSharingLink] = useState(false);\n const closeDialog = () => {\n setOpen(false);\n };\n const submitLink = (values: ShareValues) => {\n setSharingLink(true);\n share(values.email);\n };\n const closeSnack = () => {\n setSharingLink(false);\n closeDialog();\n };\n return (\n \n \n \n \n \n \n Compartir por email\n \n \n
    \n \n \n \n \n \n \n
    \n \n \n );\n}\n\nexport default connector(ShareOptions);\n","import {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Divider,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Field, Form, Formik } from 'formik';\nimport { useEffect, useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { ThunkDispatch } from 'redux-thunk';\nimport schemas from '../../../data/schemas';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { linkHelper } from '../../../helpers/linkHelper';\nimport { numberHelper } from '../../../helpers/numberHelper';\nimport { createLink, shareLink } from '../../../store/action_creators/links.actions';\nimport { AppActions } from '../../../store/config/ActionTypes';\nimport { LinkTypeEnum, Status } from '../../../store/config/enums';\nimport {\n CreateLinkRequest,\n CreateSplitLinkRequest,\n Link,\n RootState,\n ShareLinkRequest,\n} from '../../../store/config/types';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport { ShareByEmail } from '../../Icons/ShareByEmail';\nimport { ShareByQr } from '../../Icons/ShareByQr';\nimport { ShareByWhatsapp } from '../../Icons/ShareByWhatsapp';\nimport { FormTextField } from '../../forms/FormTextField';\nimport { QrCodeDialog } from '../QRCodeDialog';\nimport { ShareByWhatsAppDialog } from '../ShareByWhatsAppDialog';\nimport { ShareOptions } from '../ShareOptions';\nimport colors from './../../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n valueFieldsContainer: {\n display: 'flex',\n },\n currencySelect: {\n width: '40%',\n marginRight: '1rem',\n },\n valueField: {\n fontSize: '1.5rem',\n },\n title: {\n display: 'flex',\n alignItems: 'baseline',\n '& svg': {\n color: theme.palette.secondary.main,\n marginRight: '0.5rem',\n },\n },\n linkContainer: {\n border: `solid 1px ${colors.veryLightGrey}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '1rem',\n marginTop: '2rem',\n '& button': {\n minWidth: '5.9375rem',\n marginLeft: '2rem',\n [theme.breakpoints.down('xs')]: {\n marginLeft: 0,\n width: '100%',\n },\n },\n [theme.breakpoints.down('xs')]: {\n padding: 0,\n border: 'none',\n },\n },\n linkInfo: {\n margin: '1rem 0',\n },\n shareBoxesContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n margin: '1rem 0',\n gap: '1rem',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n },\n '& button': {\n width: '100%',\n color: colors.white,\n padding: '0.6rem 1rem',\n '& .MuiButton-label': {\n display: 'flex',\n gap: 8,\n },\n },\n },\n whatsapp: {\n backgroundColor: colors.limeGreen,\n '&:hover': {\n backgroundColor: colors.darkLimeGreen,\n },\n },\n email: {\n backgroundColor: colors.purple,\n '&:hover': {\n backgroundColor: colors.darkPurple,\n },\n },\n qr: {\n backgroundColor: colors.strongCyan,\n '&:hover': {\n backgroundColor: colors.darkStrongCyan,\n },\n },\n shareBox: {\n border: `solid 1px ${theme.palette.background.default}`,\n borderRadius: theme.shape.borderRadius,\n padding: '2rem',\n height: '170px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n '& svg': {\n marginBottom: '1rem',\n },\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n height: 'auto',\n padding: '1rem',\n },\n '&:not(:first-child)': {\n marginLeft: '1rem',\n [theme.breakpoints.down('xs')]: {\n marginLeft: 0,\n marginTop: '1rem',\n },\n },\n },\n formRow: {\n display: 'flex',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n },\n '& button': {\n [theme.breakpoints.up('sm')]: {\n marginLeft: '1rem',\n },\n [theme.breakpoints.down('xs')]: {\n margin: '1rem 0',\n },\n },\n },\n linkUrl: {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontSize: '0.9rem',\n [theme.breakpoints.down('xs')]: {\n display: 'none',\n },\n },\n subtitle: {\n marginTop: '1rem',\n [theme.breakpoints.down('xs')]: {\n marginTop: 0,\n },\n },\n divider: {\n margin: '1rem 0',\n },\n shareTitle: {\n textAlign: 'center',\n color: theme.palette.text.disabled,\n },\n qrIcon: {\n color: colors.white,\n padding: '2px',\n borderRadius: '2px',\n marginBottom: '0px!important',\n },\n qrIconContainer: {\n width: '64px',\n height: '64px',\n borderRadius: '50%',\n backgroundColor: colors.pureBlue,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: '1rem',\n },\n }),\n);\n\nexport interface ShareLinkDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n link: Link;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n links: state.links,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n shareLink: (shareRequest: ShareLinkRequest) => dispatch(shareLink(shareRequest)),\n createLink: (createRequest: CreateLinkRequest) => dispatch(createLink(createRequest)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & ShareLinkDialogProps;\n\nfunction ShareLinkDialog({ auth, links, shareLink, createLink, open, setOpen, link }: PropsType) {\n const classes = useStyles();\n const [openEmailOptions, setOpenEmailOptions] = useState(false);\n const [openWhatsAppOptions, setOpenWhatsAppOptions] = useState(false);\n const [openQrDialog, setOpenQrDialog] = useState(false);\n const [copyingLink, setCopyingLink] = useState(false);\n const [sharingLink, setSharingLink] = useState(false);\n const [creatingOneUseLink, setCreatingOneUseLink] = useState(false);\n const [newLink, setNewLink] = useState(null);\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('xs'));\n\n const closeDialog = () => {\n setOpen(false);\n setNewLink(null);\n };\n\n const copyToClipboard = () => {\n setCopyingLink(true);\n navigator.clipboard.writeText(link.url ? link.url : '');\n };\n\n const shareEmail = (email: string) => {\n shareLink({ linkId: link.id, email });\n };\n\n const createOneUseLink = (values: { reference: string }) => {\n if (link.installmentsDto) {\n setCreatingOneUseLink(true);\n const baseRequest = {\n businessId: auth.account?.business.id !== undefined ? auth.account?.business.id! : 0,\n amount: link.amount,\n description: link.description ?? '',\n reference: values.reference,\n userId: auth.account ? auth.account.userId : '',\n linkType: LinkTypeEnum.ONETIME,\n validUntil: null,\n vatRate: link.vatRate,\n installmentsIds: link.installmentsDto.map((installment) => installment.id),\n paymentType: link.paymentType,\n };\n\n if (link.splitLinkDto) {\n const splitLinkRequest: CreateSplitLinkRequest = {\n ...baseRequest,\n splitLinkRequest: {\n subBusinessId: link.splitLinkDto.subBusinessId,\n amount: link.splitLinkDto.amount.value,\n vatRate: link.splitLinkDto.vatRate,\n },\n };\n\n createLink(splitLinkRequest);\n } else {\n createLink(baseRequest);\n }\n }\n };\n\n const closeSnack = () => {\n if (sharingLink) {\n setSharingLink(false);\n } else if (creatingOneUseLink) {\n setCreatingOneUseLink(false);\n } else if (copyingLink) {\n setCopyingLink(false);\n }\n };\n\n useEffect(() => {\n if (creatingOneUseLink) {\n setNewLink(links.latestLink);\n }\n }, [links.latestLink, creatingOneUseLink]);\n\n return (\n \n \n
    \n \n \n \n
    \n {`Compartir link ${\n newLink || link.linkType === LinkTypeEnum.ONETIME\n ? 'de 1 uso'\n : link.linkType === LinkTypeEnum.PERMANENT\n ? 'multiuso'\n : ''\n }`}\n
    \n
    \n {newLink ? newLink.url : link?.url}\n \n
    \n {`${currencyHelper.getCurrencyToken(\n newLink ? newLink.amount.currency : link?.amount.currency,\n )} ${numberHelper.getNumberWithDots(\n newLink ? newLink.amount.value : linkHelper.getTotalLinkAmount(link),\n )} ${newLink ? newLink.description : link && link.description ? link.description : ''}`}\n\n {newLink === null && link.linkType === LinkTypeEnum.PERMANENT && (\n \n
    \n
    \n \n \n
    \n \n Al agregar referencia o destinatario, se creará un link de 1 uso a partir de este link\n multiuso.\n \n
    \n \n )}\n \n \n Compartir por\n \n
    \n \n \n {link.url && (\n \n )}\n
    \n
    \n \n \n \n \n \n
    \n );\n}\n\nexport default connector(ShareLinkDialog);\n","import { Divider, IconButton, Paper, Theme, Tooltip, createStyles, makeStyles } from '@material-ui/core';\nimport { useState } from 'react';\nimport ShareIcon from '../../assets/ShareIcon';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { linkHelper } from '../../helpers/linkHelper';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentTypeHelper } from '../../helpers/paymentTypeHelper';\nimport { Link } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport LinkToShareTooltip from '../LinkCard/LinkToShareTooltip';\nimport { ShareLinkDialog } from '../dialogs/ShareLinkDialog';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n padding: '0.5rem 0.875rem',\n boxSizing: 'border-box',\n border: `0.5px solid ${styles.dividerHorizontal}`,\n boxShadow: 'none',\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n boxSizing: 'border-box',\n gap: '0.625rem',\n },\n detailInfo: {\n display: 'flex',\n alignItems: 'center',\n gap: '0.625rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '& svg': {\n flexShrink: 0,\n width: 'auto',\n height: 'auto',\n },\n '& p': {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n },\n amountInfo: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n '& p': {\n textAlign: 'right',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontWeight: styles.boldTextWeight,\n },\n },\n descriptionRow: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n smallIconButton: {\n fontSize: '1rem',\n padding: 0,\n '&:hover': { backgroundColor: 'transparent' },\n },\n divider: {\n margin: '0 0.5rem',\n alignSelf: 'center',\n height: '1.6rem',\n },\n }),\n);\n\ninterface LinkListRowProps {\n link: Link;\n}\n\nfunction LinkListRow({ link }: LinkListRowProps) {\n const classes = useStyles();\n const currencyToken = currencyHelper.getCurrencyToken(link.amount.currency);\n const totalAmount = link.amount.value + (link.splitLinkDto?.amount.value || 0);\n const amountWithDots = numberHelper.getNumberWithDots(totalAmount);\n const [shareOpen, setShareOpen] = useState(false);\n const isLinkExpired = link.validUntil ? linkHelper.verifyValidation(link.validUntil) : undefined;\n const noPaymentMethods = linkHelper.verifyPaymentMethods(link.installmentsDto ?? []);\n\n const handleShareClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n setShareOpen(true);\n };\n\n return (\n \n
    \n
    \n {linkTypeEnumHelper.getIcon(link.linkType)}\n \n {paymentTypeHelper.paymentTypesTitle[link.paymentType]}\n
    \n
    \n

    {`${currencyToken} ${amountWithDots}`}

    \n
    \n
    \n \n
    \n

    {link.description ? link.description : Sin descripción}

    \n {isLinkExpired || noPaymentMethods ? (\n \n ) : (\n \n \n \n \n \n )}\n
    \n \n
    \n );\n}\n\nexport default LinkListRow;\n","import { Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { Loading } from '../Loading';\nimport EmptyLinksMessage from './EmptyLinksMessage';\nimport LinkListRow from './LinkListRow';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n padding: '1.125rem 1.25rem',\n display: 'flex',\n flexDirection: 'column',\n width: '40%',\n '& div:last-child': {\n marginBottom: 0,\n },\n gap: '0.625rem',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n marginTop: '1rem',\n },\n },\n title: {\n fontSize: '1.0625rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n color: styles.black,\n marginBottom: '0.5rem',\n },\n }),\n);\n\nfunction DashboardLinkList() {\n const classes = useStyles();\n const { links } = useSelector((state: RootState) => state);\n const dashboardLinks = links.dashboardLinks;\n\n return (\n \n \n Links de los últimos 7 días\n \n {links.loadingLinks ? (\n \n ) : dashboardLinks && dashboardLinks.length > 0 ? (\n dashboardLinks?.map((link) => )\n ) : (\n \n )}\n \n );\n}\n\nexport default DashboardLinkList;\n","import { Typography } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport emptyAnimation from '../../assets/plinks-empty.json';\n\ninterface EmptyMessageProps {\n title?: string;\n message?: string;\n}\n\nfunction EmptyMessage({ title, message }: EmptyMessageProps) {\n return (\n
    \n \n \n {title}\n \n \n {message}\n \n
    \n );\n}\n\nexport default EmptyMessage;\n","import { Chip, Theme, createStyles, makeStyles, useMediaQuery, useTheme } from '@material-ui/core';\nimport React from 'react';\n\nexport interface StatusPillProps {\n label: string | JSX.Element;\n color: 'success' | 'warning' | 'error' | 'info';\n isCard?: boolean;\n customStyles?: React.CSSProperties;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '0.4rem',\n border: 'none',\n borderRadius: '1rem',\n width: 'fit-content',\n fontSize: '0.875rem',\n height: 'auto',\n margin: 0,\n },\n fullWidth: {\n width: '100%',\n },\n }),\n);\n\nfunction StatusPill({ label, color, isCard, customStyles }: StatusPillProps) {\n const theme = useTheme();\n const classes = useStyles();\n\n const colorValue = theme.palette[color].dark;\n const backgroundColor = theme.palette[color].light;\n const isDesktop = useMediaQuery(theme.breakpoints.up('lg'));\n const isTablet = useMediaQuery('(min-width: 1280px) and (max-width: 1510px)');\n\n return (\n \n );\n}\n\nexport default StatusPill;\n","import { Divider, Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { Payment } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { StatusPill } from '../StatusPill';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n padding: '1rem',\n display: 'flex',\n flexDirection: 'column',\n marginBottom: '1rem',\n gap: '0.5rem',\n },\n paperBorder: {\n border: `0.5px solid ${styles.dividerHorizontal}`,\n boxShadow: 'none',\n padding: '0.6rem 1rem',\n },\n row: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n },\n rowDescription: {\n maxWidth: '50%',\n color: styles.iconColor,\n fontSize: '0.75rem',\n },\n rowAmount: {\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n gap: '0.5rem',\n '& h6': {\n fontSize: '0.875rem',\n fontWeight: styles.boldTextWeight,\n },\n },\n rowDate: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: '0.5rem',\n },\n linkTypeIcon: {\n display: 'flex',\n alignItems: 'center',\n },\n }),\n);\n\ninterface PaymentCardProps {\n payment: Payment;\n isDashboard?: boolean;\n}\n\nfunction PaymentCard({ payment, isDashboard }: PaymentCardProps) {\n const classes = useStyles();\n const splitPaymentTotal = payment.splitPayment && payment.splitPayment.amount.value + payment.amount.value;\n const amountWithDots = numberHelper.getNumberWithDots(splitPaymentTotal || payment.amount.value);\n\n return (\n \n
    \n
    \n {!isDashboard && (\n {linkTypeEnumHelper.getIcon(payment.linkType)}\n )}\n {dateHelper.toShorterNiceString(payment.date)}\n
    \n \n
    \n \n
    \n
    {payment.description || '-'}
    \n
    \n \n {currencyHelper.getCurrencyToken(payment.amount.currency)}\n {amountWithDots}\n \n {!isDashboard && (\n <>\n \n {payment.issuerName}\n \n )}\n
    \n
    \n
    \n );\n}\n\nexport default PaymentCard;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction ViewIcon({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n \n );\n}\nexport default ViewIcon;\n","import { Divider, IconButton, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { ViewIcon } from '../../components/Icons/ViewIcon';\nimport { StatusPill } from '../../components/StatusPill';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { Payment } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n boxSizing: 'border-box',\n margin: '0.6875rem 0',\n '& p': {\n margin: 0,\n },\n },\n detailInfo: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n '& svg': {\n flexShrink: 0,\n width: 'auto',\n height: 'auto',\n },\n '& p': {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n },\n amountInfo: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexGrow: 1,\n '& p': {\n textAlign: 'right',\n minWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontWeight: styles.boldTextWeight,\n },\n },\n divider: {\n margin: '0 0.5rem',\n alignSelf: 'center',\n height: '1.6rem',\n },\n button: {\n padding: '0',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n amountSection: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n amountText: {\n color: styles.darkBlue,\n fontWeight: 500,\n },\n dateAndDescriptionContainer: {\n width: '70%',\n },\n description: {\n width: '100%',\n color: styles.iconColor,\n fontSize: '0.75rem',\n textWrap: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n }),\n);\n\ninterface PaymentCardDesktopProps {\n payment: Payment;\n isLast?: boolean;\n}\n\nfunction PaymentCardDesktop({ payment }: PaymentCardDesktopProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const location = useLocation();\n const currencyToken = currencyHelper.getCurrencyToken(payment.amount.currency);\n const splitPaymentTotal = payment.splitPayment && payment.splitPayment.amount.value + payment.amount.value;\n const amountWithDots = numberHelper.getNumberWithDots(splitPaymentTotal || payment.amount.value);\n\n return (\n
    \n
    \n \n \n
    \n
    {dateHelper.getDashboardPaymentDate(payment.date)}
    \n
    {payment.description || Sin descripción}
    \n
    \n
    \n
    \n

    {`${currencyToken} ${amountWithDots}`}

    \n \n \n navigate(`/payments/${payment.id}`, {\n state: { from: location.pathname },\n })\n }\n >\n \n \n
    \n \n
    \n );\n}\n\nexport default PaymentCardDesktop;\n","import {\n Button,\n Divider,\n Paper,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { Payment, PaymentsState, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { EmptyMessage } from '../EmptyMessage';\nimport { Loading } from '../Loading';\nimport PaymentCardMobile from '../PaymentsCards/PaymentCard';\nimport PaymentCardDesktop from './PaymentCardDesktop';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n subtitle: {\n color: styles.black,\n fontWeight: +styles.semiBoldTextWeight,\n fontSize: '1.0625rem',\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n maxWidth: '8.125rem',\n },\n },\n payments: {\n display: 'flex',\n flexDirection: 'column',\n padding: '1.125rem 1.25rem',\n width: '60%',\n [theme.breakpoints.up('md')]: {\n '& > div:last-child > div > hr': {\n display: 'none',\n },\n '& > div:last-child > div > div': {\n paddingBottom: '0',\n },\n },\n [theme.breakpoints.down('md')]: {\n padding: '1rem',\n width: '100%',\n '& > div:last-child > div': {\n marginBottom: '0',\n },\n },\n },\n paymentsHeader: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '1rem',\n [theme.breakpoints.down('md')]: {\n gap: '2rem',\n },\n },\n noWrap: {\n whiteSpace: 'nowrap',\n fontSize: '0.875rem',\n },\n contentContainer: {\n display: 'flex',\n height: '100%',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n paymentsContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n emptyMessageContainer: {\n height: 'calc(100% - 4rem)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginBottom: '1.2rem',\n },\n showAllPaymentsButton: {\n width: '100%',\n display: 'flex',\n [theme.breakpoints.down('md')]: {\n maxWidth: '8.125rem',\n },\n '& button': {\n minHeight: 0,\n minWidth: 0,\n margin: '0 auto',\n padding: '0.2rem 1.7rem',\n [theme.breakpoints.down('md')]: {\n margin: 0,\n alignSelf: 'baseline',\n },\n },\n },\n lastPaymentCard: {\n marginBottom: '2rem',\n '& hr:last-child': {\n display: 'none',\n },\n },\n }),\n);\n\nfunction DashboardPayments() {\n const theme = useTheme();\n const classes = useStyles();\n const location = useLocation();\n const navigate = useNavigate();\n const payments: PaymentsState = useSelector((state: RootState) => state.payments);\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const paymentDesktopQty = 7;\n const paymentMobileQty = 4;\n\n const viewAllPaymentsButton = (\n
    \n \n
    \n );\n\n const handleOnClick = (row: Payment) => {\n navigate(`/payments/${row.id}`, { state: { from: location.pathname } });\n };\n\n const filteredPayments =\n payments?.dashboardPayments?.slice(0, isMobile ? paymentMobileQty : paymentDesktopQty) || null;\n\n return (\n \n
    \n \n Pagos de los últimos 7 días\n \n {isMobile && viewAllPaymentsButton}\n
    \n {payments.loadingPayments ? (\n \n ) : filteredPayments && filteredPayments.length > 0 ? (\n
    \n
    \n {filteredPayments.map((payment, index) => (\n isMobile && handleOnClick(payment)}\n className={`${\n !isMobile && index === filteredPayments.length - 1 ? classes.lastPaymentCard : ''\n }`}\n >\n {isMobile ? (\n \n ) : (\n <>\n \n {index < filteredPayments.length - 1 && }\n \n )}\n
    \n ))}\n
    \n {!isMobile && viewAllPaymentsButton}\n \n ) : (\n
    \n \n
    \n )}\n
    \n );\n}\n\nexport default DashboardPayments;\n","import { Button, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport MultiUseLinkIcon from '../../assets/MultiUseLinkIcon';\nimport OneTimeLinkIcon from '../../assets/OneTimeLinkIcon';\nimport DashboardLinkList from '../../components/Dashboard/DashboardLinkList';\nimport DashboardPayments from '../../components/Dashboard/DashboardPayments';\nimport { Loading } from '../../components/Loading';\nimport { fetchLinks } from '../../store/action_creators/links.actions';\nimport { DateSpan, LinkTypeEnum, PaymentsColumnSortEnum, SortEnum } from '../../store/config/enums';\nimport { PaymentsFilters } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { ScreenTitle } from './../../components/ScreenTitle';\nimport { fetchPayments } from './../../store/action_creators/payments.actions';\nimport { RootState } from './../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n buttonsDiv: {\n display: 'flex',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n width: '100%',\n },\n },\n buttonSeparation: {\n width: '2rem',\n },\n button: {\n fontWeight: Number(styles.normalTextWeight),\n width: '100%',\n '& .MuiButton-startIcon': {\n color: styles.white,\n },\n [theme.breakpoints.down('md')]: {\n width: '100%',\n marginTop: '0.4rem',\n },\n '&:hover': {\n '& .MuiButton-startIcon': {\n '& path': {\n fill: styles.primary,\n },\n },\n },\n },\n noWrap: {\n whiteSpace: 'nowrap',\n fontSize: '0.875rem',\n },\n containerDiv: {\n display: 'flex',\n gap: '1.1875rem',\n minHeight: '35.4rem',\n '& > *': {\n marginTop: '2rem',\n [theme.breakpoints.down('md')]: {\n marginTop: '0',\n },\n },\n '& > div:first-child': {\n [theme.breakpoints.down('md')]: {\n marginTop: '2rem',\n },\n },\n '& > div:last-child': {\n [theme.breakpoints.down('md')]: {\n marginBottom: '2rem',\n },\n },\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n linkList: {\n marginTop: '0',\n [theme.breakpoints.down('md')]: {\n gridTemplateColumns: 'auto',\n },\n },\n }),\n);\n\nfunction Dashboard() {\n const dispatch = useDispatch();\n const { auth, payments, links } = useSelector((state: RootState) => state);\n const navigate = useNavigate();\n const classes = useStyles();\n const filters = useMemo(\n () => ({\n dateSpan: DateSpan.LAST7DAYS,\n columnSort: PaymentsColumnSortEnum.Date,\n sortDirection: SortEnum.DESC,\n }),\n [],\n );\n\n const page = 1;\n const pageLimit = 7;\n const businessId = auth?.account?.business?.id ?? -1;\n\n useEffect(() => {\n const dashboardPaymentsFilters: PaymentsFilters = {\n dateSpan: DateSpan.LAST7DAYS,\n currency: { pesos: true, dollars: true },\n columnSort: PaymentsColumnSortEnum.Date,\n sortDirection: SortEnum.DESC,\n };\n if (\n businessId !== -1 &&\n !payments.loadingPayments &&\n payments.dashboardPayments === null &&\n payments.paymentsErrorMessage === null\n ) {\n dispatch(fetchPayments(dashboardPaymentsFilters, page, pageLimit, businessId, true));\n }\n }, [\n businessId,\n dispatch,\n payments.dashboardPayments,\n payments.loadingPayments,\n payments.payments,\n payments.paymentsErrorMessage,\n ]);\n\n useEffect(() => {\n if (\n businessId !== -1 &&\n !links.loadingLinks &&\n links.dashboardLinks === null &&\n links.linksErrorMessage === null\n ) {\n dispatch(fetchLinks(filters, page, pageLimit, businessId, LinkTypeEnum.ALL, true, true, true));\n }\n }, [businessId, dispatch, links.dashboardLinks, links.linksErrorMessage, links.loadingLinks, filters]);\n\n if (links.loadingLinks || payments.loadingPayments) return ;\n\n return (\n
    \n 0 ? (\n
    \n }\n onClick={() => navigate('/one-use-link')}\n >\n Crear link de 1 uso\n \n
    \n }\n onClick={() => navigate('/permanent-link')}\n >\n Crear link multiuso\n \n
    \n ) : (\n ''\n )\n }\n />\n
    \n \n \n
    \n
    \n );\n}\n\nexport default Dashboard;\n","import { Button, Divider, Typography, useMediaQuery, useTheme } from '@material-ui/core';\nimport { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { RootState } from '../../store/config/types';\n\nfunction FAQs() {\n const navigate = useNavigate();\n const location = useLocation();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('xs'));\n const auth = useSelector((state: RootState) => state.auth);\n\n const goToContact = () => {\n if (location.pathname === '/faqs') {\n navigate('/contact');\n } else {\n navigate('/user-contact');\n }\n };\n\n useEffect(() => {\n if (!auth.account) navigate(-1);\n }, [auth.account, navigate]);\n\n const userFAQs = (\n
    \n
    \n \n ¿Qué son los links de pago?\n \n \n Son la manera más fácil de recibir dinero. Existen dos tipo de links de pago:\n
      \n
    1. \n Links multiuso: Son aquellos que puedes usarlos indefinidamente y nunca expiran. Los\n creas una vez y puedes compartirlos tantas veces como quieras con todos tus clientes.\n Normalmente se usan para cobros de valores fijos a una cartera de clientes.\n
    2. \n
    3. \n Links de un uso: Estos links expiran o se inactivan cuando un cliente lo utiliza para\n pagarte. Es decir que si compartes este link con tu cliente, a partir de que el mismo lo use y\n te pague, no podrás compartirlo con otro cliente. Con estos links solo recibirás un pago.\n
    4. \n
    \n
    \n \n
    \n
    \n \n ¿Cómo comienzo a operar con los links de pago?\n \n \n Consulta a comercial@plexo.com.uy o también puedes contactarnos para más información al número 2623\n 0132, todos los días de 9 a 19hs.\n \n \n
    \n
    \n \n ¿Cómo funciona un link de pago?\n \n \n Es sencillo. Solo te registras en Plexo y abres una cuenta gratis. Generas tus links, los compartes,\n te pagan, y recibes los pagos en tu cuenta bancaria.\n \n \n
    \n
    \n \n ¿Qué beneficios tengo con los links de pago?\n \n \n
      \n
    1. \n Cierras ventas en tiempo real, con solo compartir el link a tus usuarios por Whatsapp, email,\n SMS o redes sociales, incluso en la misma conversación online con tu cliente.\n
    2. \n
    3. Puedes personalizar tu link para identificar el pago, fácilmente.
    4. \n
    5. \n No necesitas compartir tu información bancaria. Tu link se encarga de depositar el dinero en tu\n cuenta.\n
    6. \n
    7. \n Tus clientes solo tendrán que hacer clic el link y seguir simples instrucciones para realizar el\n pago, recibiendo la confirmación del mismo en tiempo real.\n
    8. \n
    9. No precisas ninguna solución de POS físico.
    10. \n
    11. \n No tienes que visitar a ninguno de tus clientes para cobrarle. Puedes enviarle la solicitud de\n cobro por los medios anteriormente citados.\n
    12. \n
    13. \n Puedes mantener tu cuenta de links de pago activa, sin costos mensuales de ningún tipo y generar\n los links que precises, cuando los precises.\n
    14. \n
    \n
    \n \n
    \n
    \n \n ¿Quiénes pueden usar los links de pago?\n \n \n Cualquier empresa o persona que quiera tener una solución rápida y sencilla para efectuar sus\n cobros. Especialmente diseñado para trabajadores independientes, vendedores en redes sociales,\n proveedores, agencias de viaje, vendedores, etc.\n \n \n
    \n
    \n \n ¿Qué costos tengo para implementar la solución del link de pago?\n \n \n El registro y apertura de cuenta en Plexo es gratis. Dependiendo del método de pago que tu cliente\n use para pagar, tendrás un arancel de la tarjeta de crédito o débito que tu cliente use en el pago.\n Adicionalmente, cada transacción exitosa tiene un costo de $6.15 más IVA cómo comisión de Plexo. No\n hay costos ocultos ni fees mensuales.\n \n \n
    \n
    \n \n ¿Es seguro cobrar y pagar por link de pago?\n \n \n Es totalmente seguro. Tus datos nunca estarán expuestos y tus clientes manejan su propios datos\n ingresándolos en una plataforma segura auditada por las normas PCI. De hecho es mucho más seguro\n pagar con un link de pago que entregarle la tarjeta a un desconocido para que te cobre.\n \n \n
    \n
    \n \n ¿Puedo integrar los links de pago a mi facturación electrónica?\n \n \n Sí, totalmente. Esta integración puede tener un costo adicional. Consulta en comercial@plexo.com.uy.\n \n \n
    \n
    \n \n ¿En cuánto tiempo recibo el dinero por mis ventas?\n \n \n Los plazos de acreditación son los mismos que manejas con tu proveedor, dependiendo si es débito o\n crédito. Esto depende de la característica de tu código de comercio.\n \n \n
    \n
    \n \n ¿Cuál es la validez de un link de pago?\n \n \n Salvo que sea un link de un solo uso, todos los links mantienen validez hasta que tu cliente los\n utilice.\n \n \n
    \n
    \n \n ¿Qué es el campo \"soft descriptor\" y para qué sirve?\n \n \n Es un valor que solicitamos en el registro de la empresa y que puede editarse luego. Algunos medios\n de pago usan el texto allí ingresado como descripción del movimiento / transacción en los estados de\n cuenta.Sugerimos usar algo simple e identificable como el nombre de fantasía de la empresa.\n \n \n
    \n \n ¿Aún no encuentras lo que buscabas?\n \n
    \n
    \n
    \n );\n\n const clientFAQs = (\n
    \n
    \n \n ¿Es seguro pagar por link de pago?\n \n \n Es totalmente seguro. Tus datos nunca estarán expuestos y tu mismo los controlas ingresandolos en\n Plexo que es una plataforma de pagos seguros auditada por las normas internacionales PCI. De hecho,\n es mucho más seguro pagar con un link de pago que entregarle la tarjeta a un desconocido para que te\n cobre.\n \n \n
    \n
    \n \n ¿Qué debo hacer cuando recibo un link de pago?\n \n \n Seguramente serás notificado con anticipación que te enviaran al cobro una cuota o un servicio por\n este medio. Simplemente deberás seguir los pasos indicados en el email o por el medio que te lo\n hayan enviado.\n \n \n
    \n
    \n \n ¿Recibo una constancia de pago luego de haber pagado?\n \n \n Sí, podrás descargar un recibo con un número de referencia el cual indica el pago realizado.\n \n \n
    \n
    \n \n ¿Es válido fiscalmente el recibo del link de pago?\n \n \n No. Debes exigirle a tu proveedor o empresa que te haya enviado el link de pago, el comprobante\n fiscal correspondiente.\n \n \n
    \n
    \n \n ¿Se puede perder mi pago?\n \n \n No. Es imposible que esto suceda. Todas las transacciones están trackeadas y debidamente almacenadas\n bajo estándares de seguridad internacionales.\n \n \n
    \n
    \n \n Si recibo un link para efectuar un pago, ¿cuánto tiempo tengo para hacerlo?\n \n \n Los links no vencen por tiempo, así que lo puedes usar para pagar cuando dispongas de tiempo\n \n \n
    \n
    \n \n Si recibo un link por un importe o una moneda que no es correcto, ¿cómo procedo?\n \n \n Comunicate con tu proveedor o quien te haya enviado el link y dile que tienes dudas respecto al\n importe a pagar. El proveedor o empresa que te haya enviado el link también puede haberse equivocado\n al generarlo.\n \n \n
    \n
    \n \n ¿Aún no encuentras lo que buscabas?\n \n
    \n
    \n );\n\n const contactUsButton = (\n \n );\n\n return (\n
    \n
    \n \n
    \n {location.pathname === '/faqs' ? clientFAQs : userFAQs}\n
    {isMobile && contactUsButton}
    \n
    \n );\n}\n\nexport default FAQs;\n","export default __webpack_public_path__ + \"static/media/network@2x.31cedb71.png\";","export default __webpack_public_path__ + \"static/media/phone.7c71504d.png\";","import { Button, Typography } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport network from '../../assets/network@2x.png';\nimport phone from '../../assets/phone.png';\n\nfunction Home() {\n const navigate = useNavigate();\n const cookies = new Cookies();\n\n if (cookies.get('token') !== undefined) {\n cookies.remove('token', {\n path: '/',\n });\n window.location.reload();\n }\n\n return (\n
    \n
    \n \n Genera y gestiona\n
    links de un uso o
    \n de múltiples usos.\n
    \n \n El link de pago es la herramienta más adaptable
    y rápida para gestionar tus cobranzas online.\n
    \n \"network\"\n
    \n
    \n navigate('/login')}\n className=\"contained-home-button\"\n color=\"primary\"\n fullWidth\n >\n Ingresar a mi cuenta\n \n navigate('/register')}\n className=\"outlined-home-button\"\n disableElevation\n fullWidth\n >\n Registrarme\n \n
    \n
    \n \"phone\"\n
    \n
    \n );\n}\n\nexport default Home;\n","import { Typography } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport errorAnimation from '../../assets/plinks-error.json';\nimport { LandingLayout } from '../Landing';\n\ninterface ErrorCardProps {\n title?: string;\n subtitle?: string;\n paymentReference?: string;\n}\n\nfunction ErrorCard({ title, subtitle, paymentReference }: ErrorCardProps) {\n const titleToShow = title ? title : 'Ha ocurrido un error';\n\n const subTitleElement =

    {subtitle ? subtitle : 'Vuelve a intentarlo más tarde'}

    ;\n\n const animation = ;\n\n const content: JSX.Element | undefined = (\n <>\n {paymentReference && (\n \n Referencia de pago:
    \n {paymentReference}\n
    \n )}\n \n );\n\n return (\n
    \n \n
    \n );\n}\n\nexport default ErrorCard;\n","import { Divider, Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { Business, LinkDataResponse } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { LandingLayout } from '../Landing';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n padding: '1.25rem',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '1.15rem',\n background: styles.white,\n maxWidth: '34.375rem',\n boxShadow: styles.boxShadow,\n border: `1px solid ${styles.borderButtonSecondary}`,\n },\n detailTitle: {\n fontSize: '1.125rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n }),\n);\n\ninterface ExpiredLinkCardProps {\n link: LinkDataResponse;\n business: Business;\n}\n\nfunction ExpiredLinkCard({ link, business }: ExpiredLinkCardProps) {\n const classes = useStyles();\n\n const content: JSX.Element = (\n \n Detalle\n
    \n Vencimiento del link\n {dateHelper.toShorterNiceString(link?.link.validUntil!)}\n
    \n \n
    \n Empresa emisora\n {business.prettyName}\n
    \n \n
    \n Descripción\n {link?.link.description || '-'}\n
    \n
    \n \n Importe\n {link.link.vatRate > 0 && IVA inc.}\n \n \n {currencyHelper.getCurrencyToken(link.link.amount.currency!)}\n {numberHelper.getNumberWithDots(link.link.amount.value!)}\n \n
    \n \n
    \n Referencia\n {link?.link.reference || '-'}\n
    \n
    \n );\n\n return (\n
    \n \n
    \n );\n}\n\nexport default ExpiredLinkCard;\n","import { Card, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { BusinessIssuer, LinkIssuer } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paymentMethodsCard: {\n display: 'flex',\n marginBottom: '0.625rem',\n padding: '0.625rem 1rem',\n cursor: 'pointer',\n boxShadow: styles.boxShadowSmall,\n },\n paymentMethodsCardSelected: {\n display: 'flex',\n marginBottom: '0.625rem',\n padding: '0.625rem 1rem',\n cursor: 'pointer',\n boxShadow: styles.boxShadowSmall,\n backgroundColor: styles.primaryShade,\n border: `1px solid ${styles.primary}`,\n },\n imageContainer: {\n backgroundColor: styles.white,\n display: 'flex',\n justifyContent: 'center',\n alignContent: 'center',\n padding: '0.4rem 0',\n border: `1px solid ${styles.greyTableHead}`,\n marginRight: '0.8125rem',\n '& img': {\n width: '80%',\n },\n },\n paymentMethodsDetails: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n '& h2': {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.darkBlue,\n margin: 0,\n },\n '& p': {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.slateBlue,\n margin: 0,\n },\n },\n }),\n);\n\ninterface IssuerCardProps {\n issuer: BusinessIssuer | LinkIssuer;\n selectedIssuer?: BusinessIssuer | null;\n clickAction?: (issuer: BusinessIssuer) => void;\n}\n\nfunction IssuerCard({ issuer, selectedIssuer, clickAction }: IssuerCardProps) {\n const maxInstallments = issuer.values.sort((a, b) => b - a)[0];\n const classes = useStyles();\n\n return (\n {\n clickAction && clickAction(issuer);\n }}\n >\n
    \n {issuer.issuerName}\n
    \n
    \n

    {issuer.issuerName}

    \n

    {`Hasta en ${maxInstallments} ${maxInstallments === 1 ? 'cuota' : 'cuotas'}`}

    \n
    \n \n );\n}\n\nexport default IssuerCard;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction ArrowDown({ color, className }: IconProps) {\n color = color ?? colors.veryDarkBlue;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default ArrowDown;\n","import { Divider, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { LinkTypeEnum } from '../../../store/config/enums';\nimport { LinkToPay } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n descriptionRow: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n margin: '1.5625rem 0',\n gap: '4rem',\n '& p': {\n color: styles.slateBlue,\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n margin: 0,\n textAlign: 'end',\n },\n '&:last-child': {\n margin: '1.5625rem 0 0 0',\n },\n },\n }),\n);\n\ninterface PaymentDetailsProps {\n linkToPay: LinkToPay;\n}\n\nfunction PaymentDetails({ linkToPay }: PaymentDetailsProps) {\n const classes = useStyles();\n\n return (\n <>\n
    \n

    Descripción

    \n

    {linkToPay.description}

    \n
    \n {linkToPay.linkType === LinkTypeEnum.ONETIME && (\n <>\n \n
    \n

    Referencia

    \n

    {linkToPay.reference ? linkToPay.reference : '-'}

    \n
    \n \n )}\n \n );\n}\n\nexport default PaymentDetails;\n","import {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { LinkToPay } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport { ArrowDown } from '../../Icons/ArrowDown';\nimport PaymentDetails from './PaymentDetails';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n accordionRoot: {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n '&.Mui-expanded': {\n margin: 0,\n },\n '&.MuiAccordion-root:before': {\n display: 'none',\n },\n },\n accordionSummary: {\n width: '100%',\n marginTop: '1.25rem',\n backgroundColor: '#F5F6FA',\n '& .MuiAccordionSummary-content': {\n margin: 0,\n padding: 0,\n },\n '& p': {\n color: styles.slateBlue,\n fontWeight: 600,\n fontSize: '0.75rem',\n },\n '& .MuiAccordionSummary-root.Mui-expanded': {\n minHeight: '3rem',\n },\n },\n accordionDetails: {\n flexDirection: 'column',\n padding: '0 1rem',\n },\n }),\n);\n\ninterface AccordionLinkDetailsProps {\n linkToPay: LinkToPay;\n}\n\nfunction AccordionLinkDetails({ linkToPay }: AccordionLinkDetailsProps) {\n const classes = useStyles();\n\n return (\n \n
    \n }>\n

    Detalle del pago

    \n
    \n
    \n \n \n \n
    \n );\n}\n\nexport default AccordionLinkDetails;\n","import { Divider, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { numberHelper } from '../../../helpers/numberHelper';\nimport { LinkToPay } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport PaymentDetails from './PaymentDetails';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paymentDetailHeader: {\n backgroundColor: styles.greyTableHead,\n width: '100%',\n marginTop: '1.375rem',\n textAlign: 'center',\n '& p': {\n margin: '0.75rem',\n color: styles.slateBlue,\n fontWeight: 600,\n fontSize: '0.75rem',\n },\n },\n descriptionRow: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n margin: '1.5625rem 0',\n '& p': {\n color: styles.slateBlue,\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n margin: 0,\n },\n '&:last-child': {\n margin: '1.5625rem 0 0 0',\n },\n },\n total: {\n color: styles.secondaryMain,\n fontSize: '1rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n '& span': {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.slateBlue,\n },\n },\n totalAmount: {\n color: styles.secondaryMain,\n fontSize: '1.375rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n },\n }),\n);\n\ninterface LinkDetailContentProps {\n linkToPay: LinkToPay;\n}\n\nfunction LinkDetailContent({ linkToPay }: LinkDetailContentProps) {\n const classes = useStyles();\n const totalAmount = linkToPay.amount.value + (linkToPay.splitLinkDto?.amount.value || 0);\n\n return (\n <>\n
    \n

    Detalle del pago

    \n
    \n \n \n
    \n

    Total {linkToPay.vatRate > 0 && IVA inc.}

    \n

    \n {currencyHelper.getCurrencyToken(linkToPay.amount.currency)}\n {numberHelper.getNumberWithDots(totalAmount)}\n

    \n
    \n \n );\n}\n\nexport default LinkDetailContent;\n","import { Card, Divider, useMediaQuery } from '@material-ui/core';\nimport { Theme, createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useState } from 'react';\nimport dummy from '../../../assets/dummy.png';\nimport { urlHelper } from '../../../helpers/urlHelper';\nimport { Business, LinkToPay } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport AccordionLinkDetails from './AccordionLinkDetails';\nimport LinkDetailContent from './LinkDetailContent';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n cardLeft: {\n display: 'flex',\n flexDirection: 'column',\n width: '45%',\n padding: '2.5625rem',\n height: 'fit-content',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n },\n image: {\n maxWidth: '150px',\n maxHeight: '150px',\n marginRight: '0.75rem',\n },\n divider: {\n height: '80%',\n margin: '0 10px',\n },\n businessData: {\n '& p': {\n color: styles.slateBlue,\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n margin: 0,\n },\n '& h1': {\n color: styles.slateBlue,\n fontSize: '1.0625rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: '0.5625rem 0 0 0',\n },\n },\n }),\n);\n\ninterface LinkDetailCardProps {\n linkToPay: LinkToPay;\n business: Business | null;\n}\n\nfunction LinkDetailCard({ business, linkToPay }: LinkDetailCardProps) {\n const classes = useStyles();\n const theme = useTheme();\n const [src, setSrc] = useState(urlHelper.buildImageUrl(linkToPay.businessId));\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n const onImageError = () => {\n setSrc(dummy);\n };\n\n return (\n \n
    \n \"payment\n \n
    \n

    Empresa emisora

    \n

    {business?.prettyName}

    \n
    \n
    \n {isMobile ? (\n \n ) : (\n \n )}\n
    \n );\n}\n\nexport default LinkDetailCard;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction LongArrowLeft({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default LongArrowLeft;\n","import { Button, CircularProgress, Divider, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { numberHelper } from '../../../helpers/numberHelper';\nimport { Currency } from '../../../store/config/enums';\nimport { LinkIssuer } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport { LongArrowLeft } from '../../Icons/LongArrowLeft';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n floatingButtons: {\n position: 'fixed',\n padding: '1rem 2rem',\n bottom: 0,\n right: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n justifyContent: 'flex-end',\n backgroundColor: 'white',\n width: '100%',\n boxShadow: styles.boxShadowFloatingButtons,\n },\n descriptionRow: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n '& p': {\n color: styles.slateBlue,\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n margin: 0,\n },\n '&:last-child': {\n margin: '1.5625rem 0 0 0',\n },\n },\n total: {\n color: styles.secondaryMain,\n fontSize: '1rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n '& span': {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.slateBlue,\n },\n },\n totalAmount: {\n color: styles.secondaryMain,\n fontSize: '1.375rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n },\n buttons: {\n display: 'flex',\n flexDirection: 'row',\n gap: '1rem',\n width: '100%',\n justifyContent: 'flex-end',\n },\n backButton: {\n width: '25%',\n [theme.breakpoints.down('md')]: {\n maxWidth: '3.75rem',\n minWidth: '3.75rem',\n },\n },\n }),\n);\n\ninterface FloatingButtonsProps {\n step: number;\n setStep: (step: number) => void;\n selectedIssuer: LinkIssuer | null;\n amount: number;\n currency: Currency;\n vatRate?: number;\n isOntheFly?: boolean;\n formId?: string;\n submitting?: boolean;\n}\n\nfunction FloatingButtons({\n step,\n setStep,\n selectedIssuer,\n amount,\n currency,\n vatRate,\n isOntheFly = false,\n formId,\n submitting,\n}: FloatingButtonsProps) {\n const classes = useStyles();\n\n const handleClickPrimaryButton = () => {\n if (!formId) setStep(2);\n };\n\n return (\n
    \n {(!isOntheFly || (isOntheFly && step === 2 && amount)) && (\n <>\n
    \n

    Total {vatRate && vatRate > 0 ? IVA inc. : ''}

    \n

    \n {currencyHelper.getCurrencyToken(currency)}\n {numberHelper.getNumberWithDots(amount)}\n

    \n
    \n \n \n )}\n
    \n {step === 2 && (\n setStep(1)}\n variant=\"outlined\"\n color=\"secondary\"\n className={classes.backButton}\n >\n \n \n )}\n \n {submitting ? : 'Continuar'}\n \n
    \n
    \n );\n}\n\nexport default FloatingButtons;\n","import { Card, Divider, useMediaQuery } from '@material-ui/core';\nimport { Theme, createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useState } from 'react';\nimport dummy from '../../../assets/dummy.png';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { numberHelper } from '../../../helpers/numberHelper';\nimport { urlHelper } from '../../../helpers/urlHelper';\nimport { Amount, Business, LandingParams } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n cardLeft: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '45%',\n padding: '2.5625rem',\n height: 'fit-content',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n divider: {\n width: '100%',\n height: '0.0625rem',\n },\n imgContainerWithoutImage: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '1.875rem',\n marginBottom: '1.3125rem',\n width: '100%',\n border: `1px dashed ${styles.grey}`,\n },\n imgContainerWithImage: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: 0,\n marginBottom: '1.3125rem',\n width: '100%',\n },\n image: {\n maxWidth: '9.375rem',\n maxHeight: '9.375rem',\n [theme.breakpoints.down('md')]: {\n marginRight: '0.75rem',\n },\n },\n paymentDetailHeader: {\n backgroundColor: styles.greyTableHead,\n width: '100%',\n marginTop: '1.375rem',\n textAlign: 'center',\n '& p': {\n margin: '0.75rem',\n color: styles.slateBlue,\n fontWeight: 600,\n fontSize: '0.75rem',\n },\n },\n descriptionRow: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n margin: '1.5625rem 0',\n '& p': {\n color: styles.slateBlue,\n fontSize: '0.875rem',\n fontWeight: Number(styles.normalTextWeight),\n margin: 0,\n },\n '&:last-child': {\n margin: '1.5625rem 0 0 0',\n },\n '& :last-child': {\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n },\n total: {\n color: styles.secondaryMain,\n fontSize: '1rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n '& span': {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.slateBlue,\n },\n },\n totalAmount: {\n color: styles.secondaryMain,\n fontSize: '1.375rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n },\n businessData: {\n '& p': {\n color: styles.slateBlue,\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n margin: 0,\n },\n '& h1': {\n color: styles.slateBlue,\n fontSize: '1.0625rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: '0.5625rem 0 0 0',\n },\n },\n }),\n);\n\ninterface OnTheFlyDetailCardProps {\n business: Business;\n params: LandingParams;\n amount?: Amount | null;\n}\n\nfunction OnTheFlyDetailCard({ business, params, amount }: OnTheFlyDetailCardProps) {\n const classes = useStyles();\n const [src, setSrc] = useState(urlHelper.buildImageUrl(business?.id!));\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n const onImageError = () => {\n setSrc(dummy);\n };\n\n return (\n \n {!isMobile ? (\n <>\n
    \n \"payment\n
    \n
    \n

    Detalle del pago

    \n
    \n
    \n

    Empresa

    \n

    {params.companyId}

    \n
    \n \n {amount && (\n
    \n

    \n Total {business.vatRate && business.vatRate > 0 && IVA inc.}\n

    \n

    \n {currencyHelper.getCurrencyToken(amount.currency)}\n {numberHelper.getNumberWithDots(+amount.value)}\n

    \n
    \n )}\n \n ) : (\n
    \n \"payment\n
    \n

    Empresa emisora

    \n

    {business?.prettyName}

    \n
    \n
    \n )}\n
    \n );\n}\n\nexport default OnTheFlyDetailCard;\n","import {\n Button,\n Card,\n Chip,\n CircularProgress,\n Grid,\n TextareaAutosize,\n useMediaQuery,\n} from '@material-ui/core';\nimport { Theme, createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { Field, Form, Formik } from 'formik';\nimport { Amount, Business, BusinessIssuer, LandingParams, LinkToPay } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport IssuerCard from '../../IssuersCardList/IssuerCard';\nimport { LinkDetailCard } from '../LinkDetailCard';\nimport { FloatingButtons } from '../MobileNavigation';\nimport { OnTheFlyDetailCard } from '../OnTheFlyDetailCard';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n flexDirection: 'row',\n margin: '0 auto',\n gap: '3rem',\n width: '70%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n width: '100%',\n gap: '1rem',\n },\n },\n cardRight: {\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n height: 'max-content',\n flexGrow: 1,\n padding: '2.375rem',\n marginBottom: '9.375rem',\n },\n title: {\n color: styles.slateBlue,\n fontSize: '1.125rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: '0 0 1.1875rem 0',\n },\n installmentsBox: {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(2.8125rem, 1fr))',\n justifyItems: 'center',\n alignItems: 'center',\n gap: '0.9375rem',\n margin: '1.2rem auto',\n },\n form: {\n display: 'flex',\n flexDirection: 'column',\n '& h3': {\n marginBottom: '0',\n color: styles.secondaryMain,\n fontSize: '1.125rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n },\n commentLabel: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'end',\n '& i': {\n fontSize: '0.875rem',\n margin: '0.8rem 0 -0.6rem 0 ',\n color: styles.almostGrey,\n },\n },\n textarea: {\n padding: '0.5625rem 1.5625rem 0.5625rem 0.625rem',\n color: styles.slateBlue,\n border: `1px solid ${styles.borderButtonSecondary}`,\n borderRadius: '4px',\n resize: 'none',\n fontFamily: 'Rubik',\n fontSize: '1rem',\n '&::placeholder': {\n color: styles.slateBlue,\n },\n '&:focus': {\n border: '1px solid transparent',\n outline: `${styles.primary} solid 2px`,\n },\n margin: '1rem 0',\n width: '100%',\n },\n actionButtons: {\n width: '100%',\n display: 'flex',\n justifyContent: 'flex-end',\n },\n backButton: {\n width: '25%',\n },\n payButton: {\n marginLeft: '1rem',\n width: '40%',\n },\n }),\n);\n\ninterface InstallmentProps {\n submit: (values: InstallmentValues) => void;\n issuer: BusinessIssuer;\n beginningPayment: boolean;\n linkToPay: LinkToPay;\n business: Business | null;\n step: number;\n setStep: (step: number) => void;\n params: LandingParams;\n selectedAmount?: Amount | null;\n}\n\ninterface InstallmentValues {\n installments: number;\n comment: string;\n}\n\nfunction ConsumerInstallments({\n submit,\n issuer,\n beginningPayment,\n linkToPay,\n business,\n step,\n setStep,\n params,\n selectedAmount,\n}: InstallmentProps) {\n const classes = useStyles();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const numericInstallments = issuer.values.map((installment) => Number(installment));\n const sortedInstallments = numericInstallments.sort((a, b) => a - b);\n\n const vatRate = linkToPay?.vatRate || business?.vatRate || 0;\n const amount = linkToPay?.amount || selectedAmount;\n\n return (\n
    \n {!linkToPay ? (\n \n ) : (\n \n )}\n \n

    Medio de pago

    \n \n \n {({ values, setFieldValue }) => (\n
    \n

    Selecciona las cuotas

    \n (\n \n
    \n {sortedInstallments.map((installment, index) => (\n {\n setFieldValue('installments', installment);\n }}\n />\n ))}\n
    \n
    \n )}\n />\n
    \n Restan {50 - values.comment?.length!} caracteres\n
    \n (\n \n )}\n type=\"text\"\n />\n {isMobile ? (\n \n ) : (\n
    \n setStep(1)}\n variant=\"outlined\"\n color=\"secondary\"\n disabled={beginningPayment}\n >\n Volver\n \n \n {beginningPayment ? : 'Continuar'}\n \n
    \n )}\n \n )}\n \n
    \n
    \n );\n}\n\nexport default ConsumerInstallments;\n","import { Button } from '@material-ui/core';\nimport { Theme, createStyles, makeStyles } from '@material-ui/core/styles';\nimport { BusinessIssuer, LinkIssuer } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport IssuerCard from './IssuerCard';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n color: styles.secondaryMain,\n fontSize: '1.125rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n marginBottom: '21px',\n },\n button: {\n marginTop: '1rem',\n alignSelf: 'flex-end',\n justifySelf: 'flex-end',\n width: '40%',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n }),\n);\n\ninterface IssuerListProps {\n issuers: BusinessIssuer[] | LinkIssuer[];\n selectedIssuer: BusinessIssuer | null;\n disabled: boolean;\n clickAction: (issuer: BusinessIssuer) => void;\n setStep: (step: number) => void;\n hasButton?: boolean;\n}\n\nfunction IssuersCardList({\n issuers,\n selectedIssuer,\n disabled,\n clickAction,\n setStep,\n hasButton,\n}: IssuerListProps) {\n const classes = useStyles();\n\n return (\n <>\n

    Elige el medio de pago

    \n {issuers.map((issuer) => {\n return (\n \n );\n })}\n {hasButton && (\n setStep(2)}\n variant=\"contained\"\n color=\"primary\"\n disabled={!selectedIssuer}\n >\n Continuar\n \n )}\n \n );\n}\n\nexport default IssuersCardList;\n","import { Button, Card, Typography, useMediaQuery } from '@material-ui/core';\nimport { Theme, createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { Field, Form, Formik } from 'formik';\nimport { useEffect } from 'react';\nimport schemas from '../../../data/schemas';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { Currency } from '../../../store/config/enums';\nimport { Amount, Business, BusinessIssuer, LandingParams } from '../../../store/config/types';\nimport styles from '../../../styles/_variables.module.scss';\nimport { IssuersCardList } from '../../IssuersCardList';\nimport { FormSelectField } from '../../forms/FormSelectField';\nimport { FormTextField } from '../../forms/FormTextField';\nimport { FloatingButtons } from '../MobileNavigation';\nimport { OnTheFlyDetailCard } from '../OnTheFlyDetailCard';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n flexDirection: 'row',\n margin: '0 auto',\n gap: '3rem',\n width: '70%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n width: '100%',\n gap: '1rem',\n },\n },\n cardLeft: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '45%',\n padding: '2.5625rem',\n height: 'fit-content',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n '& p': {\n fontSize: '0.875rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.slateBlue,\n margin: '1.5625rem 0 0.3125rem 0',\n },\n '& h2': {\n fontSize: '0.875rem',\n fontWeight: Number(styles.boldTextWeight),\n color: styles.slateBlue,\n margin: 0,\n },\n },\n divider: {\n width: '100%',\n height: '0.0625rem',\n },\n image: {\n maxWidth: '9.375rem',\n maxHeight: '9.375rem',\n },\n cardRight: {\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n flexGrow: 1,\n padding: '2.5625rem',\n height: 'max-content',\n '& h3': {\n color: styles.secondaryMain,\n fontSize: '1.125rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: '0 0 1.375rem 0',\n },\n marginBottom: '9.375rem',\n },\n fieldsContainer: {\n display: 'flex',\n flexDirection: 'row',\n gap: '1.0625rem',\n },\n currencyField: {\n maxWidth: '33%',\n },\n submitButton: {\n float: 'right',\n padding: '0.5625rem 3.125rem',\n },\n }),\n);\n\ninterface OnTheFlyLandingProps {\n params: LandingParams;\n businessIssuers: BusinessIssuer[] | null;\n selectedIssuer: BusinessIssuer | null;\n setSelectedIssuer: (issuer: BusinessIssuer) => void;\n business: Business;\n beginningPayment: boolean;\n setAmount: (amount: Amount) => void;\n selectedAmount: Amount | null;\n step: number;\n setStep: (step: number) => void;\n}\n\ninterface Values {\n currency: Currency;\n amount: number;\n issuer: number | string;\n}\n\nfunction OnTheFlyLanding({\n params,\n businessIssuers,\n selectedIssuer,\n setSelectedIssuer,\n business,\n beginningPayment,\n setAmount,\n selectedAmount,\n setStep,\n step,\n}: OnTheFlyLandingProps) {\n const classes = useStyles();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n const submit = (values: Values) => {\n setAmount({ value: +values.amount, currency: values.currency });\n setStep(2);\n };\n\n useEffect(() => {\n if (businessIssuers && businessIssuers.length === 1) {\n setSelectedIssuer(businessIssuers[0]);\n }\n }, [businessIssuers, setSelectedIssuer]);\n\n return (\n
    \n \n \n \n \n {({ values }) => (\n
    \n

    Importe a pagar

    \n
    \n {\n return {\n id: i,\n value: currencyHelper.getCurrencyToken(i),\n };\n })}\n />\n \n
    \n {businessIssuers && (\n {\n setSelectedIssuer(issuer);\n }}\n setStep={setStep}\n hasButton={false}\n />\n )}\n {isMobile ? (\n \n ) : (\n \n Continuar\n \n )}\n \n )}\n \n
    \n
    \n );\n}\n\nexport default OnTheFlyLanding;\n","import { Card, useMediaQuery } from '@material-ui/core';\nimport { Theme, createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { useEffect } from 'react';\nimport { Business, LinkIssuer, LinkToPay } from '../../../store/config/types';\nimport { IssuersCardList } from '../../IssuersCardList';\nimport { LinkDetailCard } from '../LinkDetailCard';\nimport { FloatingButtons } from '../MobileNavigation';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n flexDirection: 'row',\n margin: '0 auto',\n gap: '3rem',\n width: '70%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n width: '100%',\n gap: '1rem',\n },\n },\n cardRight: {\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n flexGrow: 1,\n padding: '2.5625rem',\n height: 'max-content',\n marginBottom: '9.375rem',\n },\n }),\n);\ninterface PermanentLinkLandingProps {\n linkToPay: LinkToPay;\n business: Business | null;\n step: number;\n setStep: (step: number) => void;\n selectedIssuer: LinkIssuer | null;\n setSelectedIssuer: (issuer: LinkIssuer) => void;\n}\n\nfunction PermanentLinkLanding({\n linkToPay,\n business,\n step,\n setStep,\n selectedIssuer,\n setSelectedIssuer,\n}: PermanentLinkLandingProps) {\n const classes = useStyles();\n const theme = useTheme();\n const linkIssuers = linkToPay.installmentsDto;\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n useEffect(() => {\n if (linkIssuers && linkIssuers.length === 1) {\n setSelectedIssuer(linkIssuers[0]);\n }\n }, [linkIssuers, setSelectedIssuer]);\n\n return (\n
    \n \n \n {linkIssuers && (\n {\n setSelectedIssuer(issuer);\n }}\n hasButton={!isMobile}\n />\n )}\n \n {isMobile && (\n \n )}\n
    \n );\n}\n\nexport default PermanentLinkLanding;\n","import { Document, Image, Page, StyleSheet, Text, View } from '@react-pdf/renderer';\nimport moment from 'moment';\nimport image from '../../assets/logo-white.png';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { inclusionLawHelper } from '../../helpers/inclusionLawHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { InclusionLawEnum } from '../../store/config/enums';\nimport {\n ConfirmedPaymentPDFInfo,\n LinkDataPaymentPDFType,\n PaymentPDFType,\n SelectedPaymentPDFType,\n} from '../../store/config/types';\nimport { theme } from '../../styles/theme';\n\ntype HTTPMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\ntype SourceObject =\n | string\n | { data: Buffer; format: 'png' | 'jpg' }\n | { uri: string; method: HTTPMethod; body: any; headers: any };\n\nconst styles = StyleSheet.create({\n page: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '50px 15px',\n },\n imageContainer: {\n width: '500px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: 16,\n paddingBottom: 16,\n },\n footerContainer: {\n width: '500px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.palette.secondary.main,\n paddingTop: 16,\n paddingBottom: 16,\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n },\n image: {\n height: 60,\n width: 'auto',\n },\n content: {\n margin: '0',\n marginTop: '30px',\n width: '500px',\n height: '500px',\n fontSize: 14,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n details: {\n display: 'flex',\n flexGrow: 1,\n border: '1 solid #666',\n borderTopLeftRadius: 10,\n borderTopRightRadius: 10,\n borderBottomColor: '#FFF',\n flexDirection: 'column',\n padding: 15,\n },\n line: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 15,\n },\n separator: {\n margin: '15px',\n borderTop: '1 solid #666',\n },\n horizontalChunk: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n amountChunk: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n verticalChunk: {\n display: 'flex',\n flexDirection: 'column',\n },\n verticalLastChunk: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n },\n smallText: {\n fontSize: 12,\n color: '#666',\n marginTop: 4,\n marginBottom: 4,\n },\n date: {\n marginLeft: 7,\n },\n currency: {\n fontSize: 20,\n marginBottom: 2,\n },\n bigNumber: {\n marginLeft: 5,\n marginRight: 5,\n fontSize: 24,\n },\n issuerName: {\n marginRight: 6,\n },\n cardNumber: {\n marginLeft: 6,\n },\n});\n\ntype PDFReceiptProps = {\n confirmedPayment: ConfirmedPaymentPDFInfo;\n businessVatRate?: number;\n} & (SelectedPaymentPDFType | LinkDataPaymentPDFType | PaymentPDFType);\n\nconst isPaymentInstrument = (\n anyPayment: SelectedPaymentPDFType | LinkDataPaymentPDFType | PaymentPDFType,\n): anyPayment is PaymentPDFType => anyPayment.type === 'payment';\nconst isSelectedPaymentInstrument = (\n anyPayment: SelectedPaymentPDFType | LinkDataPaymentPDFType | PaymentPDFType,\n): anyPayment is SelectedPaymentPDFType => anyPayment.type === 'selectedPayment';\n\nfunction PDFReceipt(props: PDFReceiptProps) {\n let issuerNamePDF: string;\n let cardNumber: string;\n let datePDF: Date;\n let descriptionPDF: string;\n\n if (isPaymentInstrument(props)) {\n const { issuerName, maskedPan, date, description } = props;\n issuerNamePDF = issuerName;\n cardNumber = maskedPan;\n datePDF = date;\n descriptionPDF = description;\n } else if (isSelectedPaymentInstrument(props)) {\n const { instrument, createdAt, linkDescription } = props;\n issuerNamePDF = instrument.issuerName;\n datePDF = createdAt;\n descriptionPDF = linkDescription;\n cardNumber = instrument.name;\n } else {\n const { description, created, instrument } = props;\n issuerNamePDF = instrument.issuer.name;\n datePDF = created;\n descriptionPDF = description;\n cardNumber = instrument.name;\n }\n\n const { businessId, businessVatRate, confirmedPayment, inclusionLaw } = props;\n\n const urlObject: SourceObject = {\n uri: urlHelper.buildImageUrl(businessId),\n method: 'GET',\n body: '',\n headers: {},\n };\n\n return (\n \n \n \n \n \n \n \n \n \n {'Pago realizado'}\n {props.confirmedPayment.plexoReferenceId}\n \n \n \n \n {issuerNamePDF && {issuerNamePDF}}\n terminada en\n {` ${cardNumber.substring(cardNumber.length - 4)}`}\n \n \n Fecha\n {moment(datePDF).format('DD/MM/YYYY')}\n \n \n \n \n \n Moneda\n {currencyHelper.getCurrencyName(confirmedPayment.currency)}\n \n \n \n \n {currencyHelper.getCurrencyToken(confirmedPayment.currency)}\n \n \n {numberHelper.getNumberWithDots(confirmedPayment.amountValue)}\n \n \n {businessVatRate && businessVatRate > 0 ? 'IVA inc.' : ''}\n \n \n \n {`(${confirmedPayment.selectedInstallment} cuota${\n confirmedPayment.selectedInstallment > 1 ? 's' : ''\n })`}\n \n {inclusionLaw !== InclusionLawEnum.NONE && (\n \n {inclusionLawHelper.getInclusionLawName(inclusionLaw)}\n \n )}\n \n \n \n {!!descriptionPDF ? (\n \n \n Concepto\n {descriptionPDF}\n \n \n ) : null}\n {confirmedPayment.linkReference ? (\n <>\n \n \n \n Referencia o Destinatario\n {confirmedPayment.linkReference}\n \n \n \n ) : null}\n \n \n \n \n \n \n \n \n );\n}\n\nexport default PDFReceipt;\n","export default \"data:image/png;base64,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\"","import { Button, Typography } from '@material-ui/core';\nimport { PDFDownloadLink } from '@react-pdf/renderer';\nimport Lottie from 'lottie-react';\nimport { useEffect, useState } from 'react';\nimport cancelledAnimation from '../../assets/plinks-cancelled.json';\nimport successAnimation from '../../assets/plinks-success.json';\nimport { ConfirmedPaymentPDFInfo, LinkDataPayment, Payment } from '../../store/config/types';\nimport { LandingLayout } from '../Landing';\nimport { PDFReceipt } from '../PDFReceipt';\n\ninterface PaidLinkCardProps {\n payment?: Payment | LinkDataPayment;\n businessId?: number;\n businessVatRate?: number;\n}\n\nfunction isPayment(payment: LinkDataPayment | Payment): payment is LinkDataPayment {\n return (payment as Payment).issuerName === undefined;\n}\n\nfunction PaidLinkCard({ payment, businessId, businessVatRate }: PaidLinkCardProps) {\n const title: string = payment ? '¡Tu pago ha sido confirmado!' : '¡Tu pago está cancelado!';\n const subtitle = (\n

    \n {payment\n ? 'Hemos verificado que tu pago ya se ha recibido y procesado correctamente. No es necesario efectuar un segundo pago.'\n : 'Hemos verificado que tu pago fue cancelado correctamente, para salir solo debes cerrar la ventana.'}\n

    \n );\n const animationData = payment ? successAnimation : cancelledAnimation;\n const animation = ;\n let confirmedPaymentInfo: ConfirmedPaymentPDFInfo | undefined;\n const [generatePdf, setGeneratePdf] = useState(false);\n\n if (payment) {\n let amountValue = payment.amount.value;\n\n if (!isPayment(payment) && payment.splitPayment) {\n amountValue += payment.splitPayment.amount.value ?? 0;\n }\n\n confirmedPaymentInfo = {\n plexoReferenceId: payment.plexoReferenceId,\n currency: payment.amount.currency,\n amountValue: amountValue,\n selectedInstallment: payment.installments,\n inclusionLaw: payment.inclusionLaw,\n };\n }\n\n useEffect(() => {\n if (payment && confirmedPaymentInfo) {\n setGeneratePdf(true);\n }\n }, [payment, confirmedPaymentInfo]);\n\n const content: JSX.Element | undefined = payment && confirmedPaymentInfo && (\n <>\n \n Referencia de pago: {payment!.plexoReferenceId}\n \n {generatePdf && (\n \n ) : (\n \n )\n }\n fileName={`Pago ${payment!.plexoReferenceId}`}\n style={{ textDecoration: 'none' }}\n >\n {({ loading }) => (\n \n )}\n \n )}\n \n );\n\n return (\n
    \n \n
    \n );\n}\n\nexport default PaidLinkCard;\n","import { Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { LandingLayout } from '../../components/Landing';\nimport { Loading } from '../../components/Loading';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { linkHelper } from '../../helpers/linkHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n padding: '1rem',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n background: styles.white,\n maxWidth: '38.5rem',\n boxShadow: styles.boxShadowDark,\n },\n flexRow: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '0.5rem',\n gap: '4rem',\n justifyContent: 'space-between',\n [theme.breakpoints.down('sm')]: {\n marginBottom: '0.5rem',\n },\n },\n detailTitle: {\n fontSize: '1.125rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n rowTitle: {\n fontSize: '0.875rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n rowText: {\n fontSize: '0.875rem',\n textAlign: 'end',\n },\n iva: {\n marginLeft: '0.5rem',\n fontSize: '0.625rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.normalTextWeight),\n fontStyle: 'italic',\n },\n amount: {\n fontSize: '1rem',\n fontWeight: Number(styles.titleTextWeight),\n },\n }),\n);\n\nfunction ValidatePayment() {\n const classes = useStyles();\n const links = useSelector((state: RootState) => state.links);\n\n if (!links.linkData) {\n return ;\n }\n\n const title = 'Verificación en curso';\n const subtitle = (\n \n Realizamos una rápida verificación para garantizar un mejor proceso.
    Agradecemos tu paciencia\n mientras completamos esta revisión.\n
    \n );\n const totalAmount = linkHelper.getTotalLinkAmount(links.linkData?.link);\n const content = (\n \n Detalle\n
    \n Descripción\n {links.linkData?.link.description}\n
    \n
    \n \n Importe\n {links.linkData && links.linkData.link.vatRate > 0 && IVA inc.}\n \n \n {currencyHelper.getCurrencyToken(links.linkData?.link.amount.currency!)}\n {numberHelper.getNumberWithDots(totalAmount)}\n \n
    \n
    \n );\n\n return } />;\n}\n\nexport default ValidatePayment;\n","import { Typography } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { setTimeout } from 'timers';\nimport { uuid } from 'uuidv4';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { ErrorCard } from '../../components/ErrorCard';\nimport ExpiredLinkCard from '../../components/ExpiredLinkCard/ExpiredLinkCard';\nimport { AlertTriangle } from '../../components/Icons/AlertTriangle';\nimport { ConsumerInstallments } from '../../components/LandingComponents/ConsumerInstallments';\nimport { OnTheFlyLanding } from '../../components/LandingComponents/OnTheFlyLanding';\nimport { PermanentLinkLanding } from '../../components/LandingComponents/PermanentLinkLanding';\nimport { Loading } from '../../components/Loading';\nimport { PaidLinkCard } from '../../components/PaidLinkCard';\nimport { timeToValidateLinks } from '../../data/values';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { linkHelper } from '../../helpers/linkHelper';\nimport { getBusiness } from '../../store/action_creators/business.actions';\nimport { getLinkData, validateLink } from '../../store/action_creators/links.actions';\nimport { fetchBusinessIssuers } from '../../store/action_creators/paymentMethods.actions';\nimport { beginPayment } from '../../store/action_creators/payments.actions';\nimport { LinkTypeEnum, PaymentStatusEnum, Status } from '../../store/config/enums';\nimport {\n Amount,\n BeginPaymentRequest,\n BusinessIssuer,\n LandingParams,\n LinkDataPayment,\n Payment,\n RootState,\n} from '../../store/config/types';\nimport { ValidatePayment } from '../ValidatePayment';\n\ninterface InstallmentValues {\n installments: number;\n comment: string;\n}\n\nfunction Landing() {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const location = useLocation();\n const params: LandingParams = useParams();\n const { business, links, payments, paymentMethods } = useSelector((state: RootState) => state);\n const isLink = params.companyId && params.currency && params.amount && params.linkId;\n const isOnTheFly = params.companyId && params.linkId === undefined;\n const paymentUrl = location.pathname;\n const errorTitle = 'Ocurrió un error al validar el link ingresado';\n\n const [malformed, setMalformed] = useState(false);\n const [warnings, setWarnings] = useState(null);\n const [step, setStep] = useState(1);\n const [selectedIssuer, setSelectedIssuer] = useState(null);\n const [amountToPay, setAmountToPay] = useState(null);\n const [validatingPayment, setValidatingPayment] = useState(true);\n const [gettingLinkData, setGettingLinkData] = useState(true);\n const [beginningPayment, setBeginningPayment] = useState(false);\n\n const gettingLinkDataOrValidatingLink: boolean =\n links.gettingLinkData || links.validatingLink || gettingLinkData || validatingPayment;\n const expiredLink =\n links.linkData &&\n !!links.linkData.link.validUntil &&\n new Date(links.linkData.link.validUntil) < new Date();\n const oneTimeLink =\n links.linkData?.link.linkType === LinkTypeEnum.ONETIME && !(links.gettingLinkData || gettingLinkData);\n const oneTimeLinkWithPayments =\n oneTimeLink &&\n links.linkData?.payments &&\n links.linkData?.payments.length > 0 &&\n !gettingLinkDataOrValidatingLink;\n const expiredOneTimeLink = expiredLink && oneTimeLink && !gettingLinkDataOrValidatingLink;\n const expiredOneTimeLinkWithPaymentCreated =\n expiredOneTimeLink &&\n links.linkData?.payments &&\n links.linkData?.payments.length > 0 &&\n !links.linkData?.payments.find(\n (payment) =>\n payment.status === PaymentStatusEnum.APPROVED || payment.status === PaymentStatusEnum.CANCELLED,\n ) &&\n links.linkData?.payments.find((payment) => payment.status === PaymentStatusEnum.CREATED);\n\n const linkWithoutIssuers =\n isLink &&\n links.linkData &&\n links.linkData.link.installmentsDto &&\n links.linkData.link.installmentsDto.length === 0;\n\n const linkToValidate: boolean =\n !!params.linkId &&\n (!expiredLink || (expiredLink && !!expiredOneTimeLinkWithPaymentCreated)) &&\n (!oneTimeLink ||\n (oneTimeLink &&\n ((!!links.linkData?.payments && !(links.linkData?.payments.length > 0)) ||\n (!!links.linkData?.payments &&\n links.linkData?.payments.length > 0 &&\n !!!links.linkData?.payments.find(\n (payment) =>\n payment.status === PaymentStatusEnum.APPROVED ||\n payment.status === PaymentStatusEnum.CANCELLED,\n ))))) &&\n !gettingLinkData &&\n !links.gettingLinkData &&\n !links.validatingLink &&\n links.linkToPay === null &&\n links.validateLinkErrorMessage === null;\n\n useEffect(() => {\n if (\n isLink &&\n !links.gettingLinkData &&\n links.linkData === null &&\n links.getLinkDataErrorMessage === null\n ) {\n dispatch(getLinkData(params.linkId!));\n }\n\n if (\n !business.gettingBusiness &&\n business.business === null &&\n business.getBusinessErrorMessage === null\n ) {\n dispatch(getBusiness(params.companyId!));\n }\n\n if (!params.companyId) {\n setMalformed(true);\n }\n }, [\n params,\n links.validatingLink,\n links.linkToPay,\n links.validateLinkErrorMessage,\n links.gettingLinkData,\n links.getLinkDataErrorMessage,\n links.linkData,\n business.gettingBusiness,\n business.business,\n business.getBusinessErrorMessage,\n isLink,\n isOnTheFly,\n dispatch,\n ]);\n\n useEffect(() => {\n if (payments.plexoUrl) {\n navigate('/plexo-payment');\n }\n }, [payments.plexoUrl, navigate]);\n\n useEffect(() => {\n if (\n !paymentMethods.loadingBusinessIssuers &&\n paymentMethods.businessIssuers === null &&\n paymentMethods.businessIssuersErrorMessage === null &&\n business.business?.id\n ) {\n dispatch(fetchBusinessIssuers(business.business!.id));\n }\n }, [\n paymentMethods.loadingBusinessIssuers,\n paymentMethods.businessIssuers,\n paymentMethods.businessIssuersErrorMessage,\n business.business,\n dispatch,\n ]);\n\n useEffect(() => {\n if (!links.validatingLink && links.linkToPay !== null) {\n const amount = {\n currency: links.linkToPay.amount.currency,\n value: linkHelper.getTotalLinkAmount(links.linkToPay),\n };\n setAmountToPay(amount);\n }\n }, [links.validatingLink, links.linkToPay, setAmountToPay]);\n\n useEffect(() => {\n if (warnings === null && links.validateLinkSuccess && links.linkToPay) {\n const totalAmountFetched = linkHelper.getTotalLinkAmount(links.linkToPay);\n const businessFetched = links.linkToPay.businessUrlName;\n\n if (params.amount !== undefined && totalAmountFetched !== +params.amount) {\n setWarnings('El importe que hemos encontrado difiere del importe que está ingresado en la URL.');\n }\n\n if (businessFetched !== params.companyId) {\n setWarnings('La empresa que hemos encontrado difiere de la que está ingresada en la URL.');\n }\n\n if (\n params.amount !== undefined &&\n totalAmountFetched !== +params.amount &&\n businessFetched !== params.companyId\n ) {\n setWarnings(\n 'Los datos de importe y empresa que hemos encontrado difieren de los que están ingresados en la URL.',\n );\n }\n\n if (\n params.amount !== undefined &&\n totalAmountFetched === +params.amount &&\n businessFetched === params.companyId\n ) {\n setWarnings('');\n }\n }\n\n if (params.currency) {\n params.currency = currencyHelper.formatCurrencyToNumber(params.currency);\n }\n\n if (warnings === null && params.currency && !currencyHelper.isValidCurrency(Number(params.currency))) {\n setWarnings('La moneda que está ingresada en la URL no existe en el sistema.');\n }\n }, [\n params,\n warnings,\n setWarnings,\n links.validateLinkSuccess,\n links.linkToPay,\n params.currency,\n params.amount,\n params.companyId,\n linkWithoutIssuers,\n ]);\n\n const isTest =\n window.location.host === 'localhost:3000' ||\n window.location.host === 'px-links.netlify.app' ||\n window.location.host === 'plinks.handsoft.com.uy';\n const environmentId = isTest ? '1snn5n9w' : 'k8vif92e';\n const paymentMethodId = isTest ? '123' : 'visanetuy_px_2048256716';\n const fingerprintId = uuid();\n const visaFingerprint = paymentMethodId + fingerprintId;\n let fingerprint = isTest ? 'd1cab7e203194d09972b7fb3d4657fc8' : fingerprintId;\n\n const loadVisaDeviceFingerprint = (callback: any) => {\n const existingScript = document.getElementById('visaDeviceFingerprint');\n if (!existingScript) {\n const script = document.createElement('script');\n script.src = `https://h.online-metrix.net/fp/tags.js?org_id=${environmentId}&session_id=${visaFingerprint}`;\n script.id = 'visaDeviceFingerprint';\n document.body.appendChild(script);\n\n script.onload = () => {\n if (callback) callback();\n };\n }\n\n if (existingScript && callback) callback();\n };\n\n useEffect(() => {\n loadVisaDeviceFingerprint(() => console.log('fingerprint loaded'));\n });\n\n const submitPayment = (values: InstallmentValues) => {\n setBeginningPayment(true);\n\n if (links.linkToPay) {\n const linkToPayRequest: BeginPaymentRequest = {\n linkId: links.linkToPay.id,\n businessUrlName: links.linkToPay.businessName,\n currency: links.linkToPay.amount.currency,\n value: linkHelper.getTotalLinkAmount(links.linkToPay),\n redirectUrl: `${window.location.origin}/redirect`,\n selectedInstallment: values.installments,\n issuerPlexoId: selectedIssuer!.issuerId,\n deviceFingerprint: fingerprint,\n clientComment: values.comment,\n paymentUrl,\n };\n dispatch(beginPayment(linkToPayRequest));\n } else if (amountToPay && business.business?.acceptsOnTheFly) {\n const onTheFlyRequest: BeginPaymentRequest = {\n businessUrlName: params.companyId!,\n currency: amountToPay.currency,\n value: amountToPay.value,\n redirectUrl: `${window.location.origin}/redirect`,\n selectedInstallment: values.installments,\n issuerPlexoId: selectedIssuer!.issuerId,\n deviceFingerprint: fingerprint,\n clientComment: values.comment,\n paymentUrl,\n };\n dispatch(beginPayment(onTheFlyRequest));\n }\n };\n\n useEffect(() => {\n if (linkToValidate) {\n dispatch(validateLink(params.linkId!));\n }\n }, [linkToValidate, params.linkId, dispatch]);\n\n function renderPaidLinkCard(\n payment: LinkDataPayment | Payment,\n businessId: number,\n businessVatRate: number,\n ) {\n if (payment.status === PaymentStatusEnum.APPROVED) {\n return ;\n }\n if (payment.status === PaymentStatusEnum.CANCELLED) {\n return ;\n }\n return null;\n }\n\n // Workaround to show ValidatePayment for at least 3 seconds\n useEffect(() => {\n setTimeout(() => {\n if (!links.gettingLinkData) {\n setGettingLinkData(false);\n }\n if (!links.validatingLink) {\n setValidatingPayment(false);\n }\n }, timeToValidateLinks);\n }, [linkToValidate, links.gettingLinkData, links.validatingLink, params.linkId, dispatch]);\n\n const handleCloseSnackbar = () => {\n setBeginningPayment(false);\n };\n\n if (\n ((expiredLink && !oneTimeLink) ||\n (expiredLink && !!expiredOneTimeLinkWithPaymentCreated && links.validateLinkErrorMessage) ||\n (expiredLink && links.linkData?.payments && !!!links.linkData?.payments.length) ||\n (expiredLink &&\n !!links.linkData?.payments &&\n links.linkData?.payments.length > 0 &&\n !links.linkData?.payments.find(\n (payment) =>\n payment.status === PaymentStatusEnum.APPROVED || payment.status === PaymentStatusEnum.CANCELLED,\n ) &&\n !!links.linkToPay?.payments &&\n links.linkToPay.payments.length > 0 &&\n !links.linkToPay.payments.find(\n (payment) =>\n payment.status === PaymentStatusEnum.APPROVED || payment.status === PaymentStatusEnum.CANCELLED,\n ))) &&\n business.business &&\n !validatingPayment &&\n !links.validatingLink\n ) {\n return ;\n }\n\n if (oneTimeLinkWithPayments) {\n const payment = links.linkData?.payments.find(\n (payment) =>\n payment.status === PaymentStatusEnum.APPROVED || payment.status === PaymentStatusEnum.CANCELLED,\n );\n if (payment) {\n if (payment.status === PaymentStatusEnum.CANCELLED || payment.status === PaymentStatusEnum.APPROVED) {\n return renderPaidLinkCard(payment, business.business!.id!, business.business!.vatRate!);\n }\n }\n }\n\n if (\n !!links.linkToPay?.payments &&\n links.linkToPay.payments.length > 0 &&\n !gettingLinkDataOrValidatingLink\n ) {\n const payment = links.linkToPay.payments.find(\n (payment) =>\n payment.status === PaymentStatusEnum.APPROVED || payment.status === PaymentStatusEnum.CANCELLED,\n );\n if (payment) {\n return renderPaidLinkCard(payment, business.business!.id!, business.business!.vatRate!);\n }\n }\n\n if (\n (links.getLinkDataErrorMessage || links.validateLinkErrorMessage) &&\n !expiredLink &&\n !gettingLinkDataOrValidatingLink\n ) {\n return (\n \n );\n } else if (linkWithoutIssuers) {\n return (\n \n );\n } else if (business.getBusinessErrorMessage) {\n return ;\n } else if (isOnTheFly && business.business && !business.business.acceptsOnTheFly) {\n return (\n \n );\n } else if (malformed) {\n return ;\n } else if (step === 1) {\n return (\n <>\n {warnings && (\n
    \n \n
    \n {`${warnings} Antes de efectivizar el pago, revisa que la información del pago que se muestra es la deseada`}\n
    \n
    \n )}\n {gettingLinkDataOrValidatingLink ? (\n
    \n \n
    \n ) : (\n
    \n {links.linkToPay ? (\n \n ) : business.business ? (\n \n ) : (\n \n )}\n
    \n )}\n \n );\n } else if (step === 2) {\n return (\n <>\n \n \n \n );\n } else {\n return ;\n }\n}\n\nexport default Landing;\n","import { Tooltip, TooltipProps } from '@material-ui/core';\n\ninterface ConditionalTooltipProps extends Omit {\n showTooltip: boolean;\n children: TooltipProps['children'];\n}\n\nfunction ConditionalTooltip({ showTooltip, children, ...props }: ConditionalTooltipProps) {\n return showTooltip ? (\n \n {children}\n \n ) : (\n <>{children}\n );\n}\n\nexport default ConditionalTooltip;\n","import {\n Button,\n CircularProgress,\n Divider,\n Theme,\n createStyles,\n makeStyles,\n useMediaQuery,\n} from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport { Link } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { theme } from '../../styles/theme';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n divider: {\n margin: '0 0.8rem',\n backgroundColor: styles.slateBlue,\n opacity: '0.2',\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n minWidth: 'max-content',\n [theme.breakpoints.down('sm')]: {\n justifyContent: 'space-between',\n width: '100%',\n margin: '1.5rem 0 0.5rem 0',\n },\n },\n primaryButton: {\n marginLeft: '0.8rem',\n '& span': {\n '& a': {\n color: styles.white,\n },\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n secondaryButton: {\n minWidth: '10.625rem',\n color: styles.textButtonSecondary,\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n [theme.breakpoints.down('xs')]: {\n padding: '0.5rem 0',\n },\n },\n }),\n);\n\ninterface LinkActionsProps {\n setClickedCopy: React.Dispatch>;\n link: Link;\n updatingLink: boolean;\n creatingLink: boolean;\n paymentMethodsIds: number[];\n clickedCopy: boolean | null;\n}\n\nfunction LinkActions({\n setClickedCopy,\n link,\n creatingLink,\n updatingLink,\n clickedCopy,\n paymentMethodsIds,\n}: LinkActionsProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n
    \n {!isMobile && (\n <>\n navigate(-1)}\n className={classes.secondaryButton}\n >\n Volver\n \n {' '}\n \n )}\n setClickedCopy(true)}\n disabled={((creatingLink! || updatingLink!) && clickedCopy!) || paymentMethodsIds?.length === 0}\n className={classes.secondaryButton}\n form=\"new-link-form\"\n >\n {(creatingLink || updatingLink) && clickedCopy ? (\n \n ) : link ? (\n 'Editar y copiar link'\n ) : (\n 'Crear y copiar link'\n )}\n \n setClickedCopy(false)}\n form=\"new-link-form\"\n disabled={((creatingLink || updatingLink) && !clickedCopy) || paymentMethodsIds?.length === 0}\n >\n {(creatingLink || updatingLink) && !clickedCopy ? (\n \n ) : link ? (\n 'Guardar'\n ) : (\n 'Crear link'\n )}\n \n
    \n );\n}\n\nexport default LinkActions;\n","import { Button, Theme, createStyles, makeStyles, useMediaQuery } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport { LinkTypeEnum } from '../../store/config/enums';\nimport { Link } from '../../store/config/types';\nimport { theme } from '../../styles/theme';\nimport { ScreenTitle } from '../ScreenTitle';\nimport LinkActions from './LinkActions';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n marginBottom: '2rem',\n '& button': {\n [theme.breakpoints.down('sm')]: {\n padding: '0.4375rem 0.75rem',\n },\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: '1.5rem',\n },\n },\n }),\n);\n\ninterface NewLinkHeaderProps {\n setClickedCopy: React.Dispatch>;\n linkType: LinkTypeEnum;\n link: Link;\n updatingLink: boolean;\n creatingLink: boolean;\n paymentMethodsIds: number[];\n clickedCopy: boolean | null;\n}\n\nfunction NewLinkHeader({\n linkType,\n link,\n setClickedCopy,\n clickedCopy,\n updatingLink,\n creatingLink,\n paymentMethodsIds,\n}: NewLinkHeaderProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const isPermantent = linkType === LinkTypeEnum.PERMANENT;\n const screenTitle = link\n ? 'Editar Link de pago'\n : isPermantent\n ? 'Nuevo link multiuso'\n : 'Nuevo link de 1 uso';\n\n return (\n
    \n \n {!isMobile && (\n \n )}\n \n {isMobile && (\n \n )}\n
    \n );\n}\n\nexport default NewLinkHeader;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\nimport { PaymentMethod } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { CustomSwitch } from '../CustomSwitch';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n card: {\n padding: '0.625rem 0.8125rem',\n boxShadow: styles.boxShadowSmall,\n boxSizing: 'border-box',\n flexBasis: '49%',\n marginTop: '1.1875rem',\n [theme.breakpoints.down('sm')]: {\n flexBasis: '100%',\n },\n },\n details: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n image: {\n padding: '0.5rem 1rem',\n width: '30%',\n border: `1px solid ${styles.greyTableHead}`,\n },\n issuerNameText: {\n color: styles.darkBlue,\n fontSize: '0.9375rem',\n margin: 0,\n },\n maxInstallmentsText: {\n color: styles.slateBlue,\n fontSize: '0.875rem',\n margin: 0,\n },\n }),\n);\n\ninterface PaymentMethodCardProps {\n paymentMethod: PaymentMethod;\n paymentMethodsIds: number[];\n setPaymentMethodsIds(value: number[]): void;\n}\n\nfunction PaymentMethodCard({\n paymentMethod,\n paymentMethodsIds,\n setPaymentMethodsIds,\n}: PaymentMethodCardProps) {\n const classes = useStyles();\n const maxInstallments = paymentMethod.values.sort((a: number, b: number) => b - a)[0];\n\n const handleTogglePaymentMethod = (paymentMethod: PaymentMethod) => {\n const existingIndex = paymentMethodsIds.findIndex((id) => id === Number(paymentMethod.id));\n\n if (existingIndex !== -1) {\n const newIds = [...paymentMethodsIds];\n newIds.splice(existingIndex, 1);\n setPaymentMethodsIds(newIds);\n } else {\n setPaymentMethodsIds([...paymentMethodsIds, Number(paymentMethod.id)]);\n }\n };\n\n return (\n
    \n
    \n {paymentMethod.issuerName}\n
    \n

    {paymentMethod.issuerName}

    \n

    {`Hasta en ${maxInstallments} ${\n maxInstallments > 1 ? 'cuotas' : 'cuota'\n }`}

    \n
    \n handleTogglePaymentMethod(paymentMethod)}\n checked={paymentMethodsIds.includes(Number(paymentMethod.id))}\n />\n
    \n
    \n );\n}\n\nexport default PaymentMethodCard;\n","import { Field } from 'formik';\nimport { currencyHelper } from '../../../helpers/currencyHelper';\nimport { LinkValues } from '../../../store/config/types';\nimport { FormTextField } from '../../forms/FormTextField';\n\ninterface AmountInputProps {\n values: LinkValues;\n informationLabelClass: string;\n}\n\nfunction AmountInput({ values, informationLabelClass }: AmountInputProps) {\n const currencyToken = currencyHelper.getCurrencyToken(values.currency);\n const vatAsDecimal = values.vatRate / 100;\n const subTotal = values.value / (1 + vatAsDecimal);\n const vatAmount = values.value - values.value / (1 + vatAsDecimal);\n\n return (\n <>\n
    \n

    Importe Total

    \n \n Subtotal: {currencyToken} {subTotal.toFixed(2)} | IVA: {currencyToken} {vatAmount.toFixed(2)}\n \n
    \n \n \n );\n}\n\nexport default AmountInput;\n","import { TextareaAutosize, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { InclusionLawEnum, LinkTypeEnum, PaymentTypeEnum, ValidUntil } from '../../store/config/enums';\nimport { LinkValues, SplitLinkRequestValues } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { FormDateField } from '../forms/FormDateField';\nimport { FormSelectField } from '../forms/FormSelectField';\nimport { FormTextField } from '../forms/FormTextField';\nimport options from './inputData';\nimport AmountInput from './RegularLink/AmountInput';\nimport VATtooltip from './VATTooltip';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n informationCol: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 1,\n '& p': {\n margin: '0.8rem 0 -0.6rem 0 ',\n },\n },\n informationRow: {\n display: 'flex',\n flexDirection: 'row',\n gap: '0.9375rem',\n flexWrap: 'nowrap',\n width: '100%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n textarea: {\n padding: '0.5625rem 1.5625rem 0.5625rem 0.625rem',\n margin: '1rem 0',\n color: styles.slateBlue,\n border: `1px solid ${styles.borderButtonSecondary}`,\n borderRadius: '4px',\n fontFamily: 'Rubik',\n fontSize: '1rem',\n '&::placeholder': {\n color: styles.slateBlue,\n },\n resize: 'none',\n '&:focus': {\n border: '1px solid transparent',\n outline: `${styles.primary} solid 2px`,\n },\n },\n tooltipContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.8rem 0 -0.6rem 0 ',\n '& span': {\n display: 'flex',\n marginLeft: '0.375rem',\n },\n '& p': {\n margin: 0,\n },\n },\n informationLabel: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n '& i': {\n fontSize: '0.875rem',\n margin: '0.8rem 0 -0.6rem 0 ',\n color: styles.almostGrey,\n textAlign: 'right',\n },\n },\n }),\n);\n\ninterface InputsProps {\n values: LinkValues | SplitLinkRequestValues;\n linkType: LinkTypeEnum;\n paymentType?: PaymentTypeEnum;\n setFieldValue: (field: string, value: any, shouldValidate?: boolean | undefined) => void;\n}\n\nfunction Inputs({ values, linkType, paymentType, setFieldValue }: InputsProps) {\n const classes = useStyles();\n const isRegularPayment = paymentType === PaymentTypeEnum.Regular;\n const regularPaymentValues = values as LinkValues;\n const law17934Selected = values.inclusionLaw === InclusionLawEnum.LAW17934;\n\n return (\n <>\n
    \n
    \n

    Moneda

    \n \n
    \n
    \n {isRegularPayment ? (\n \n ) : (\n <>\n
    \n
    \n

    Ley de Inclusión Financiera

    \n \n
    \n
    \n ) => {\n const selectedValue: number = Number(event.target.value);\n setFieldValue('inclusionLaw', selectedValue);\n const newVatRateOptions =\n selectedValue === InclusionLawEnum.LAW17934 ? options.vatRateFor17934 : options.vatRate;\n const currentVatRate = values.vatRate;\n const isCurrentOptionValid = newVatRateOptions.some(\n (option) => option.id === currentVatRate,\n );\n const newSubBusinessVatRateOptions =\n selectedValue === InclusionLawEnum.LAW17934 ? options.vatRateFor17934 : options.vatRate;\n const updatedVatRate = isCurrentOptionValid ? currentVatRate : newVatRateOptions[0].id;\n const currentSubbusinessVatRate = (values as SplitLinkRequestValues).subBusinessVatRate;\n const isCurrentSubbusinessOptionValid = newSubBusinessVatRateOptions.some(\n (option) => option.id === currentSubbusinessVatRate,\n );\n const updatedSubBusinessVatRate = isCurrentSubbusinessOptionValid\n ? currentSubbusinessVatRate\n : newSubBusinessVatRateOptions[0].id;\n setFieldValue('vatRate', updatedVatRate);\n setFieldValue('subBusinessVatRate', updatedSubBusinessVatRate);\n }}\n />\n \n )}\n
    \n {!isRegularPayment && linkType === LinkTypeEnum.PERMANENT && (\n
    \n

    Vencimiento

    \n \n {values.validUntil === ValidUntil.CUSTOM && (\n \n )}\n
    \n )}\n
    \n
    \n {isRegularPayment && (\n
    \n
    \n

    IVA

    \n \n
    \n \n
    \n )}\n {isRegularPayment && linkType === LinkTypeEnum.PERMANENT && (\n
    \n
    \n

    Ley de Inclusión Financiera

    \n \n
    \n ) => {\n const selectedValue: number = Number(event.target.value);\n setFieldValue('inclusionLaw', selectedValue);\n const newVatRateOptions =\n selectedValue === InclusionLawEnum.LAW17934 ? options.vatRateFor17934 : options.vatRate;\n const currentVatRate = values.vatRate;\n const isCurrentOptionValid = newVatRateOptions.some((option) => option.id === currentVatRate);\n const updatedVatRate = isCurrentOptionValid ? currentVatRate : newVatRateOptions[0].id;\n setFieldValue('vatRate', updatedVatRate);\n }}\n />\n
    \n )}\n {isRegularPayment && linkType === LinkTypeEnum.ONETIME ? (\n
    \n
    \n
    \n

    Ley de Inclusión Financiera

    \n \n
    \n ) => {\n const selectedValue: number = Number(event.target.value);\n setFieldValue('inclusionLaw', selectedValue);\n const newVatRateOptions =\n selectedValue === InclusionLawEnum.LAW17934 ? options.vatRateFor17934 : options.vatRate;\n const currentVatRate = values.vatRate;\n const isCurrentOptionValid = newVatRateOptions.some(\n (option) => option.id === currentVatRate,\n );\n const updatedVatRate = isCurrentOptionValid ? currentVatRate : newVatRateOptions[0].id;\n setFieldValue('vatRate', updatedVatRate);\n }}\n />\n
    \n
    \n ) : (\n isRegularPayment &&\n linkType === LinkTypeEnum.PERMANENT && (\n
    \n

    Vencimiento

    \n \n {values.validUntil === ValidUntil.CUSTOM && (\n \n )}\n
    \n )\n )}\n
    \n
    \n {isRegularPayment && linkType === LinkTypeEnum.ONETIME && (\n
    \n

    Vencimiento

    \n \n {values.validUntil === ValidUntil.CUSTOM && (\n \n )}\n
    \n )}\n {linkType === LinkTypeEnum.ONETIME && !isRegularPayment && (\n <>\n
    \n

    Vencimiento

    \n \n {values.validUntil === ValidUntil.CUSTOM && (\n \n )}\n
    \n
    \n
    \n

    Referencia o destinatario (Opcional)

    \n
    \n \n
    \n \n )}\n
    \n
    \n
    \n
    \n

    Descripción del producto o servicio (Opcional)

    \n Restan {50 - values.description?.length!} caracteres\n
    \n (\n \n )}\n type=\"text\"\n />\n
    \n
    \n \n );\n}\n\nexport default Inputs;\n","import { Paper, useMediaQuery } from '@material-ui/core';\nimport { Form, Formik, FormikHelpers } from 'formik';\nimport React, { useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { CustomSwitch } from '../../../components/CustomSwitch';\nimport { Loading } from '../../../components/Loading';\nimport { PaymentMethodCard } from '../../../components/PaymentMethodCard';\nimport schemas from '../../../data/schemas';\nimport { dateHelper } from '../../../helpers/dateHelper';\nimport { createLink, updateLink } from '../../../store/action_creators/links.actions';\nimport { Currency, LinkTypeEnum, PaymentTypeEnum, ValidUntil } from '../../../store/config/enums';\nimport {\n AuthState,\n CreateLinkRequest,\n Link,\n LinkValues,\n PaymentMethod,\n PaymentMethodsState,\n RootState,\n UpdateLinkRequest,\n} from '../../../store/config/types';\nimport { theme } from '../../../styles/theme';\nimport Inputs from '../Inputs';\nimport LinkActions from '../LinkActions';\n\ninterface RegularLinkProps {\n clickedCopy: boolean | null;\n setClickedCopy: React.Dispatch>;\n creatingLink: boolean;\n setCreatingLink: React.Dispatch>;\n updatingLink: boolean;\n setUpdatingLink: React.Dispatch>;\n paymentMethodsIds: number[];\n setPaymentMethodsIds: React.Dispatch>;\n commonClasses: Record;\n}\n\nfunction RegularLink({\n clickedCopy,\n setClickedCopy,\n creatingLink,\n setCreatingLink,\n updatingLink,\n setUpdatingLink,\n paymentMethodsIds,\n setPaymentMethodsIds,\n commonClasses,\n}: RegularLinkProps) {\n const location = useLocation();\n const dispatch = useDispatch();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const paymentMethods: PaymentMethodsState = useSelector((state: RootState) => state.paymentMethods);\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const linkType = location.pathname.includes('one-use') ? LinkTypeEnum.ONETIME : LinkTypeEnum.PERMANENT;\n const link = (location.state?.link as Link) ?? null;\n const allInstallmentIds = useMemo(\n () => paymentMethods.paymentMethods?.map((paymentMethod) => paymentMethod.id),\n [paymentMethods],\n );\n const businessDefaultInclusionLaw = auth.account?.business.defaultInclusionLaw || 0;\n\n\n useEffect(() => {\n if (!link && paymentMethods.paymentMethods) {\n setPaymentMethodsIds(paymentMethods.paymentMethods?.map((paymentMethod) => Number(paymentMethod.id)));\n }\n }, [paymentMethods, link, setPaymentMethodsIds]);\n\n const sendLinkRequest = (values: LinkValues) => {\n if (link) {\n setUpdatingLink(true);\n const request: UpdateLinkRequest = {\n vatRate: values.vatRate,\n amount: {\n value: values.value,\n currency: values.currency,\n },\n linkType: link.linkType,\n description: values.description !== undefined ? values.description : '',\n status: link.status,\n validUntil: dateHelper.getDateFromEnum(values.validUntil, values.validUntilDate),\n installmentsIds: paymentMethodsIds,\n reference: values.reference || '',\n paymentType: PaymentTypeEnum.Regular,\n inclusionLaw: values.inclusionLaw\n };\n\n if (linkType === LinkTypeEnum.ONETIME) request.reference = values.reference;\n dispatch(updateLink(request, link.id, auth.account!.business.id!.toString()));\n } else {\n setCreatingLink(true);\n const request: CreateLinkRequest = {\n businessId: auth.account?.business.id !== undefined ? auth.account?.business.id! : 0,\n vatRate: values.vatRate,\n amount: {\n value: values.value,\n currency: values.currency,\n },\n linkType: linkType ? linkType : LinkTypeEnum.PERMANENT,\n userId: auth.account?.userId!,\n description: values.description !== undefined ? values.description : '',\n reference: values.reference || '',\n validUntil: dateHelper.getDateFromEnum(values.validUntil, values.validUntilDate),\n installmentsIds: paymentMethodsIds,\n paymentType: PaymentTypeEnum.Regular,\n inclusionLaw: values.inclusionLaw\n };\n if (linkType === LinkTypeEnum.ONETIME) request.reference = values.reference;\n dispatch(createLink(request));\n }\n };\n\n const submitLink = (values: LinkValues, actions: FormikHelpers) => {\n clickedCopy ? setClickedCopy(true) : setClickedCopy(false);\n\n if (paymentMethodsIds.length === 0) {\n actions.setSubmitting(false);\n } else {\n sendLinkRequest(values);\n }\n };\n\n const handleSwitchAllPaymentMethods = (event: React.ChangeEvent) => {\n setPaymentMethodsIds(event.target.checked ? allInstallmentIds || [] : []);\n };\n\n return (\n <>\n submitLink(values, actions)}\n >\n {({ values, setFieldValue }) => {\n return (\n
    \n
    \n );\n }}\n \n \n );\n}\n\nexport default RegularLink;\n","import { Paper } from '@material-ui/core';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport { CustomSwitch } from '../../../components/CustomSwitch';\nimport { PaymentMethodCard } from '../../../components/PaymentMethodCard';\nimport { PaymentMethod, RootState } from '../../../store/config/types';\nimport { EmptyMessage } from '../../EmptyMessage';\n\ninterface PaymentMethodsProps {\n paymentMethods: PaymentMethod[];\n paymentMethodsIds: number[];\n setPaymentMethodsIds: React.Dispatch>;\n allInstallmentIds: number[];\n subBusinessId?: string | null;\n classes: Record;\n}\n\nfunction PaymentMethods({\n paymentMethods,\n paymentMethodsIds,\n setPaymentMethodsIds,\n allInstallmentIds,\n subBusinessId,\n classes,\n}: PaymentMethodsProps) {\n const subBusinesses = useSelector((state: RootState) => state.business.subBusinesses);\n const handleSwitchAllPaymentMethods = (event: React.ChangeEvent) => {\n setPaymentMethodsIds(event.target.checked ? allInstallmentIds : []);\n };\n const hasPaymentMethodsAvailable = paymentMethods.length > 0;\n const selectedSubBusinessName = subBusinesses?.find((sb) => sb.id === subBusinessId)?.name;\n\n return (\n \n
    \n

    Medios de Pago

    \n {subBusinessId && hasPaymentMethodsAvailable && (\n
    \n

    Todos habilitados

    \n \n
    \n )}\n
    \n {!subBusinessId ? (\n \n ) : !hasPaymentMethodsAvailable ? (\n \n ) : (\n <>\n

    \n Elige los medios de pago con los que deseas que puedan realizarse los pagos a través de los links\n

    \n {paymentMethods && paymentMethodsIds.length === 0 && (\n

    Debes seleccionar al menos un medio de pago

    \n )}\n
    \n {paymentMethods.map((paymentMetod: PaymentMethod) => (\n \n ))}\n
    \n \n )}\n
    \n );\n}\n\nexport default PaymentMethods;\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { Link, SplitLinkRequestValues } from '../../../../store/config/types';\nimport { FormSelectField } from '../../../forms/FormSelectField';\nimport { FormTextField } from '../../../forms/FormTextField';\nimport { StatusPill } from '../../../StatusPill';\nimport options from '../../inputData';\nimport VATtooltip from '../../VATTooltip';\nimport { InclusionLawEnum } from '../../../../store/config/enums';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n informationCol: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n '& p': {\n margin: '0.8rem 0 -0.6rem 0 ',\n },\n },\n informationRow: {\n display: 'flex',\n flexDirection: 'row',\n gap: '0.9375rem',\n flexWrap: 'nowrap',\n width: '100%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n tooltipContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0.8rem 0 -0.6rem 0 ',\n '& span': {\n display: 'flex',\n marginLeft: '0.375rem',\n },\n '& p': {\n margin: 0,\n },\n },\n flex: {\n flex: 1,\n },\n flexTwo: {\n flex: 2,\n },\n }),\n);\n\ninterface SplitLinkPaymentInputProps {\n valueId: string;\n availableSelectOptions: { id: string; value: string }[];\n link?: Link;\n isBusiness?: boolean;\n values: SplitLinkRequestValues;\n}\n\nfunction SplitLinkPaymentInput({\n valueId,\n availableSelectOptions,\n link,\n isBusiness,\n values\n}: SplitLinkPaymentInputProps) {\n const classes = useStyles();\n const law17934Selected = values.inclusionLaw === InclusionLawEnum.LAW17934;\n\n return (\n <>\n \n
    \n
    \n

    Empresa

    \n \n
    \n
    \n <>\n

    Importe

    \n \n \n
    \n
    \n
    \n

    IVA

    \n \n
    \n \n
    \n
    \n \n );\n}\n\nexport default SplitLinkPaymentInput;\n","import { Divider, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useFormikContext } from 'formik';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { currencyHelper } from '../../../../helpers/currencyHelper';\nimport { numberHelper } from '../../../../helpers/numberHelper';\nimport { LinkTypeEnum, PaymentTypeEnum, SubBusinessStatusEnum } from '../../../../store/config/enums';\nimport { Link, RootState, SplitLinkRequestValues, SubBusiness } from '../../../../store/config/types';\nimport styles from '../../../../styles/_variables.module.scss';\nimport SplitLinkPaymentInput from './SplitLinkPaymentInput';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n totalContainer: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n textAlign: 'end',\n [theme.breakpoints.down('md')]: {\n textAlign: 'start',\n },\n },\n totalRow: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n gap: '0.625rem',\n '& div': {\n fontSize: '0.875rem',\n fontWeight: styles.semiBoldTextWeight,\n },\n '& p': {\n fontSize: '1.0625rem',\n fontWeight: styles.semiBoldTextWeight,\n margin: '0.25rem 0',\n color: styles.secondaryMain,\n },\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n alignItems: 'start',\n },\n },\n amountDetail: {\n color: styles.blackText,\n },\n divider: {\n width: '100%',\n margin: '1rem 0',\n },\n }),\n);\n\ninterface SplitLinkPaymentInputsProps {\n linkType: LinkTypeEnum;\n link?: Link;\n paymentType?: PaymentTypeEnum;\n}\n\nfunction SplitLinkPaymentInputs({ link }: SplitLinkPaymentInputsProps) {\n const classes = useStyles();\n const account = useSelector((state: RootState) => state.auth.account);\n const subBusinesses = useSelector((state: RootState) => state.business.subBusinesses);\n const { values } = useFormikContext();\n const currencyToken = currencyHelper.getCurrencyToken(values.currency);\n const [availableOptions, setAvailableOptions] = useState<{ value: string; id: string }[]>([]);\n\n useEffect(() => {\n if (subBusinesses && subBusinesses.length > 0) {\n const options = subBusinesses\n .filter((subBusiness: SubBusiness) => subBusiness.status === SubBusinessStatusEnum.ACTIVE)\n .map((subBusiness) => ({\n id: subBusiness.id.toString(),\n value: subBusiness.name,\n }));\n\n setAvailableOptions(options);\n }\n }, [subBusinesses]);\n\n const { totalAmount, subTotalAmount, totalVat } = useMemo(() => {\n const subTotalAmountOne = +values.amount / (1 + +values.vatRate / 100);\n const subTotalAmountTwo = +values.subBusinessAmount / (1 + +values.subBusinessVatRate / 100);\n const subTotalAmount = subTotalAmountOne + subTotalAmountTwo;\n\n const totalAmount = +values.amount + +values.subBusinessAmount;\n\n const totalVat = totalAmount - subTotalAmount;\n\n return { totalAmount, subTotalAmount, totalVat };\n }, [values.amount, values.subBusinessAmount, values.subBusinessVatRate, values.vatRate]);\n\n return (\n <>\n \n \n \n \n
    \n
    \n
    Total a pagar
    \n

    \n {currencyToken} {numberHelper.getNumberWithDots(totalAmount)}\n

    \n
    \n
    \n {currencyToken} {numberHelper.getNumberWithDots(subTotalAmount)} + {currencyToken}{' '}\n {numberHelper.getNumberWithDots(totalVat)} (IVA)\n
    \n
    \n \n );\n}\n\nexport default SplitLinkPaymentInputs;\n","import { useFormikContext } from 'formik';\nimport { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { PaymentMethod, RootState, SplitLinkRequestValues } from '../../../store/config/types';\n\ninterface UpdatePaymentMethodsOptionsProps {\n setPaymentMethods: (paymentMethods: PaymentMethod[]) => void;\n}\n\nfunction UpdatePaymentMethodsOptions({ setPaymentMethods }: UpdatePaymentMethodsOptionsProps) {\n const { values } = useFormikContext();\n const subBusinesses = useSelector((state: RootState) => state.business.subBusinesses);\n\n useEffect(() => {\n if (subBusinesses && subBusinesses.length > 0 && values.subBusinessId) {\n const selectedSubBusiness = subBusinesses.find(\n (subBusiness) => subBusiness.id === values.subBusinessId,\n );\n if (selectedSubBusiness) {\n setPaymentMethods(selectedSubBusiness.installmentsDto);\n } else {\n setPaymentMethods([]);\n }\n } else {\n setPaymentMethods([]);\n }\n }, [setPaymentMethods, subBusinesses, values.subBusinessId]);\n\n return null;\n}\n\nexport default UpdatePaymentMethodsOptions;\n","import { Paper, useMediaQuery } from '@material-ui/core';\nimport { Form, Formik, FormikHelpers } from 'formik';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport schemas from '../../../data/schemas';\nimport { dateHelper } from '../../../helpers/dateHelper';\nimport { createLink, updateLink } from '../../../store/action_creators/links.actions';\nimport { Currency, LinkTypeEnum, PaymentTypeEnum, ValidUntil } from '../../../store/config/enums';\nimport {\n AuthState,\n CreateSplitLinkRequest,\n Link,\n PaymentMethod,\n RootState,\n SplitLinkRequestValues,\n UpdateSplitLinkRequest,\n UpdateSplitLInkRequestValues,\n} from '../../../store/config/types';\nimport { theme } from '../../../styles/theme';\nimport Inputs from '../Inputs';\nimport LinkActions from '../LinkActions';\nimport PaymentMethods from './PaymentMethods';\nimport SplitLinkPaymentInputs from './SubBusinessInputs.tsx/SplitLinkPaymentInputs';\nimport UpdatePaymentMethodsOptions from './UpdatePaymentMethodsOptions';\n\ninterface SplitLinkProps {\n clickedCopy: boolean | null;\n setClickedCopy: React.Dispatch>;\n creatingLink: boolean;\n setCreatingLink: React.Dispatch>;\n updatingLink: boolean;\n setUpdatingLink: React.Dispatch>;\n paymentMethodsIds: number[];\n setPaymentMethodsIds: React.Dispatch>;\n commonClasses: Record;\n}\n\nfunction SplitLink({\n clickedCopy,\n setClickedCopy,\n creatingLink,\n setCreatingLink,\n updatingLink,\n setUpdatingLink,\n paymentMethodsIds,\n setPaymentMethodsIds,\n commonClasses,\n}: SplitLinkProps) {\n const location = useLocation();\n const dispatch = useDispatch();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const linkType = location.pathname.includes('one-use') ? LinkTypeEnum.ONETIME : LinkTypeEnum.PERMANENT;\n const link = (location.state?.link as Link) ?? null;\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const subBusinesses = useSelector((state: RootState) => state.business.subBusinesses);\n const [paymentMethods, setPaymentMethods] = useState([]);\n const allInstallmentIds = useMemo(\n () => paymentMethods.map((paymentMethod) => paymentMethod.id),\n [paymentMethods],\n );\n const businessDefaultInclusionLaw = auth.account?.business.defaultInclusionLaw || 0;\n\n const initialValues: SplitLinkRequestValues = {\n businessId: auth.account?.business.id ? auth.account?.business.id.toString() : '',\n currency: link ? link.amount?.currency : Currency.PESO,\n amount: link ? link.amount.value : 0,\n vatRate: link ? link.vatRate : 0,\n description: link ? link.description : '',\n reference: link ? link.reference : '',\n validUntil: link && link.validUntil !== null ? ValidUntil.CUSTOM : ValidUntil.NONE,\n validUntilDate: link && link.validUntil ? new Date(link.validUntil) : new Date(),\n linkType: linkType,\n inclusionLaw: link ? link.inclusionLaw : businessDefaultInclusionLaw,\n installmentsIds: link ? link.commerceIds : [],\n subBusinessId: link ? link.splitLinkDto?.subBusinessId || '' : '',\n subBusinessAmount: link ? link.splitLinkDto?.amount.value || 0 : 0,\n subBusinessVatRate: link ? link.splitLinkDto?.vatRate || 0 : 0,\n };\n\n useEffect(() => {\n if (subBusinesses && subBusinesses.length > 0 && initialValues.subBusinessId) {\n const selectedSubBusiness = subBusinesses.find((sb) => sb.id === initialValues.subBusinessId);\n if (selectedSubBusiness) {\n setPaymentMethods(selectedSubBusiness.installmentsDto);\n }\n } else {\n setPaymentMethods([]);\n }\n }, [subBusinesses, initialValues.subBusinessId]);\n\n const sendLinkRequest = (values: SplitLinkRequestValues) => {\n if (link && link.splitLinkDto) {\n const updateSplitLinkRequest: UpdateSplitLInkRequestValues = {\n splitLinkId: link.splitLinkDto.id,\n amount: +values.subBusinessAmount,\n vatRate: values.subBusinessVatRate,\n };\n\n setUpdatingLink(true);\n const request: UpdateSplitLinkRequest = {\n linkType: link.linkType,\n description: values.description !== undefined ? values.description : '',\n amount: { value: +values.amount, currency: values.currency },\n status: link.status,\n validUntil: dateHelper.getDateFromEnum(values.validUntil, values.validUntilDate),\n installmentsIds: paymentMethodsIds,\n reference: values.reference || '',\n currency: values.currency,\n vatRate: values.vatRate,\n updateSplitLinkRequest: updateSplitLinkRequest,\n paymentType: PaymentTypeEnum.Split,\n inclusionLaw: values.inclusionLaw,\n };\n\n if (linkType === LinkTypeEnum.ONETIME) request.reference = values.reference;\n dispatch(updateLink(request, link.id, auth.account!.business.id!.toString()));\n } else {\n setCreatingLink(true);\n const request: CreateSplitLinkRequest = {\n businessId: auth.account?.business.id !== undefined ? auth.account?.business.id! : 0,\n amount: { value: +values.amount, currency: values.currency },\n vatRate: values.vatRate,\n linkType: linkType ? linkType : LinkTypeEnum.PERMANENT,\n userId: auth.account?.userId!,\n description: values.description !== undefined ? values.description : '',\n reference: values.reference || '',\n validUntil: dateHelper.getDateFromEnum(values.validUntil, values.validUntilDate),\n installmentsIds: paymentMethodsIds,\n splitLinkRequest: {\n amount: +values.subBusinessAmount,\n subBusinessId: values.subBusinessId,\n vatRate: values.subBusinessVatRate,\n },\n paymentType: PaymentTypeEnum.Split,\n inclusionLaw: values.inclusionLaw,\n };\n if (linkType === LinkTypeEnum.ONETIME) request.reference = values.reference;\n dispatch(createLink(request));\n }\n };\n\n const submitLink = (values: SplitLinkRequestValues, actions: FormikHelpers) => {\n clickedCopy ? setClickedCopy(true) : setClickedCopy(false);\n\n if (paymentMethodsIds.length === 0) {\n actions.setSubmitting(false);\n } else {\n sendLinkRequest(values);\n }\n };\n\n useEffect(() => {\n if (paymentMethods && !link) {\n setPaymentMethodsIds(paymentMethods.map((paymentMethod) => paymentMethod.id));\n }\n }, [paymentMethods, setPaymentMethodsIds, link]);\n\n return (\n <>\n submitLink(values, actions)}\n >\n {({ values, setFieldValue }) => {\n return (\n
    \n \n
    \n );\n }}\n \n \n );\n}\n\nexport default SplitLink;\n","import {\n FormControlLabel,\n Paper,\n Radio,\n RadioGroup,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport SplitIcon from '../../assets/SplitIcon';\nimport ConditionalTooltip from '../../components/ConditionalTooltip/ConditionalTooltip';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport NewLinkHeader from '../../components/Link/Header';\nimport { RegularLink } from '../../components/Link/RegularLink';\nimport { SplitLink } from '../../components/Link/SplitLink';\nimport { Loading } from '../../components/Loading';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { paymentTypeHelper } from '../../helpers/paymentTypeHelper';\nimport { getBusinessSubBusinesses } from '../../store/action_creators/business.actions';\nimport { fetchPaymentMethods } from '../../store/action_creators/paymentMethods.actions';\nimport { LinkTypeEnum, PaymentTypeEnum, Status, SubBusinessStatusEnum } from '../../store/config/enums';\nimport { AuthState, Link as LinkType, LinksState, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n maxWidth: '56.25rem',\n margin: '0 auto',\n paddingBottom: '1.5rem',\n },\n paperRoot: {\n margin: '0',\n marginTop: '1.625rem',\n padding: '1.875rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'start',\n justifyContent: 'space-between',\n color: styles.slateBlue,\n },\n contentTitle: {\n color: styles.slateBlue,\n fontSize: '1rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: '0 0 1rem 0',\n },\n paymentHeader: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n margin: '0.75rem 0',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: '0.25rem',\n },\n },\n contentTitleHeader: {\n color: styles.slateBlue,\n fontSize: '0.875rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n },\n contentTitleDescription: {\n display: 'inline-flex',\n gap: '0.375rem',\n color: styles.black,\n fontSize: '0.875rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n '& span': {\n display: 'flex',\n alignSelf: 'center',\n },\n },\n titleContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n marginBottom: '1rem',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n '& div': {\n marginTop: '1rem',\n },\n },\n '& p': {\n margin: 0,\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n '& span': {\n fontWeight: Number(styles.normalTextWeight),\n },\n },\n radioOptionsContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '1.375rem',\n justifyContent: 'space-between',\n width: '100%',\n [theme.breakpoints.down('md')]: {\n flexDirection: 'column',\n },\n },\n radioOption: {\n border: `1px solid ${styles.dividerHorizontal}`,\n padding: '1.25rem',\n borderRadius: '0.3125rem',\n width: '50%',\n '& .MuiRadio-root': {\n alignSelf: 'flex-start',\n paddingTop: 0,\n color: styles.dividerHorizontal,\n },\n '& .MuiIconButton-colorSecondary:hover': {\n backgroundColor: 'transparent',\n },\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n selectedOption: {\n borderColor: styles.primary,\n '& .MuiRadio-root': {\n color: styles.primary,\n },\n },\n paymentTypeOption: {\n fontSize: '0.875rem',\n color: styles.slateBlue,\n '& p': {\n margin: 0,\n fontSize: '0.875rem',\n color: styles.iconColor,\n },\n '& p:first-child': {\n display: 'flex',\n gap: '0.375rem',\n color: styles.slateBlue,\n '& span': {\n display: 'flex',\n alignSelf: 'center',\n },\n },\n },\n paymentSwitchContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n '& p': {\n margin: 0,\n },\n },\n error: {\n color: styles.red,\n },\n paymentMethodContainer: {\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: '2%',\n width: '100%',\n },\n disabled: {\n opacity: 0.5,\n },\n }),\n);\n\nfunction Link() {\n const navigate = useNavigate();\n const location = useLocation();\n const dispatch = useDispatch();\n const classes = useStyles();\n const linkType = location.pathname.includes('one-use') ? LinkTypeEnum.ONETIME : LinkTypeEnum.PERMANENT;\n const link = (location.state?.link as LinkType) ?? null;\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const links: LinksState = useSelector((state: RootState) => state.links);\n const subBusinessState = useSelector((state: RootState) => state.subBusiness);\n const subBusinesses = subBusinessState.subBusinesses;\n const businessId = auth.account?.business.id!;\n const businessAcceptsSplitPayments = auth.account?.business.acceptsSplitPayments;\n const [creatingLink, setCreatingLink] = useState(false);\n const [updatingLink, setUpdatingLink] = useState(false);\n const [paymentMethodsIds, setPaymentMethodsIds] = useState(\n link && link.installmentsDto ? link.installmentsDto.map((installment) => installment.id) : [],\n );\n const [clickedCopy, setClickedCopy] = useState(null);\n const [paymentType, setPaymentType] = useState(\n link ? link.paymentType : PaymentTypeEnum.Regular,\n );\n\n const noSubBusinessesAvailable =\n subBusinesses?.length === 0 ||\n subBusinesses?.every((subBusiness) => subBusiness.status === SubBusinessStatusEnum.INACTIVE);\n\n useEffect(() => {\n dispatch(fetchPaymentMethods(businessId));\n }, [businessId, dispatch]);\n\n useEffect(() => {\n if (clickedCopy && links.createLinkSuccess && links.createLinkErrorMessage === null && links.latestLink) {\n navigator.clipboard.writeText(links.latestLink.url ?? '');\n }\n }, [clickedCopy, links.createLinkSuccess, links.createLinkErrorMessage, links.latestLink]);\n\n useEffect(() => {\n if (clickedCopy && links.updateLinkSuccess && links.updateLinkErrorMessage === null && links.latestLink) {\n navigator.clipboard.writeText(links.latestLink.url ?? '');\n }\n }, [clickedCopy, links.updateLinkSuccess, links.updateLinkErrorMessage, links.latestLink]);\n\n useEffect(() => {\n if (auth.account && auth.account.business.id && !subBusinesses) {\n dispatch(getBusinessSubBusinesses(auth.account.business.id));\n }\n }, [auth.account, subBusinesses, dispatch]);\n\n const paymentTypeLabel = (paymentType: PaymentTypeEnum) => {\n return (\n
    \n

    \n {paymentType === PaymentTypeEnum.Split && (\n \n \n \n )}\n {paymentTypeHelper.paymentTypesTitle[paymentType]}\n

    \n

    {paymentTypeHelper.paymentTypesSubtitle[paymentType]}

    \n
    \n );\n };\n\n const handlePaymentTypeChange = (event: React.ChangeEvent) => {\n const value = parseInt(event.target.value, 10) as PaymentTypeEnum;\n setPaymentType(value);\n };\n\n const closeSnack = () => {\n if (link) {\n setUpdatingLink(false);\n if (links.updateLinkSuccess) navigate(-1);\n } else {\n setCreatingLink(false);\n if (links.createLinkSuccess) navigate(-1);\n }\n };\n\n if (subBusinessState.loadingSubBusiness) {\n return ;\n }\n\n return (\n <>\n
    \n \n {(businessAcceptsSplitPayments || link) && (\n \n
    \n

    \n {link ? 'Detalle del link' : 'Elige cómo quieres cobrar'}\n

    \n
    \n {link ? (\n <>\n
    \n

    Fecha y hora de creación del link

    \n

    \n {dateHelper.toShorterNiceString(new Date(link.date))}\n

    \n
    \n {businessAcceptsSplitPayments && (\n
    \n

    Tipo de pago

    \n

    \n {paymentType === PaymentTypeEnum.Split && (\n \n \n \n )}\n {paymentTypeHelper.paymentTypesTitle[paymentType]}\n

    \n
    \n )}\n \n ) : (\n \n }\n label={paymentTypeLabel(PaymentTypeEnum.Regular)}\n className={`${classes.radioOption}\n ${paymentType === PaymentTypeEnum.Regular ? classes.selectedOption : ''}\n `}\n disabled={updatingLink}\n />\n \n }\n label={paymentTypeLabel(PaymentTypeEnum.Split)}\n className={`${classes.radioOption}\n ${paymentType === PaymentTypeEnum.Split ? classes.selectedOption : ''}\n ${noSubBusinessesAvailable ? classes.disabled : ''} `}\n disabled={updatingLink || noSubBusinessesAvailable}\n />\n \n \n )}\n
    \n )}\n {paymentType === PaymentTypeEnum.Regular ? (\n \n ) : (\n \n )}\n
    \n \n \n \n );\n}\n\nexport default Link;\n","import { Typography } from '@material-ui/core';\nimport Lottie from 'lottie-react';\nimport errorAnimation from '../../assets/plinks-error.json';\n\ninterface ErrorMessageProps {\n message: string;\n}\n\nfunction ErrorMessage({ message }: ErrorMessageProps) {\n return (\n
    \n \n {message}\n
    \n );\n}\n\nexport default ErrorMessage;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction CsvFile({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default CsvFile;\n","import styles from '../styles/_variables.module.scss';\n\nfunction EditIcon() {\n return (\n \n \n \n \n );\n}\n\nexport default EditIcon;\n","import { IconButton, Theme, Tooltip, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport EditIcon from '../../assets/EditIcon';\nimport ShareIcon from '../../assets/ShareIcon';\nimport DeleteIcon from '../../assets/deleteIcon';\nimport { linkHelper } from '../../helpers/linkHelper';\nimport { LinkTypeEnum } from '../../store/config/enums';\nimport { Link } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport LinkToShareTooltip from './LinkToShareTooltip';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n footer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginTop: '0.5rem',\n },\n creatorTitle: {\n fontSize: '0.75rem',\n fontWeight: Number(styles.titleTextWeight),\n color: styles.slateBlue,\n },\n creator: {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.darkBlue,\n marginLeft: '0.25rem',\n },\n smallIconButton: {\n fontSize: '1rem',\n '&:hover': { backgroundColor: 'transparent' },\n },\n iconContainer: {\n flexGrow: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n }),\n);\n\ninterface CardFooterProps {\n link: Link;\n setShareOpen: React.Dispatch>;\n setLinkToDelete(link: Link): void;\n}\n\nfunction CardFooter({ link, setShareOpen, setLinkToDelete }: CardFooterProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n\n const isLinkExpired = link.validUntil ? linkHelper.verifyValidation(link.validUntil) : undefined;\n const noPaymentMethods = linkHelper.verifyPaymentMethods(link.installmentsDto ?? []);\n\n const handleShareClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n setShareOpen(true);\n };\n\n const handleEditClick = () => {\n navigate(`/${link.linkType === LinkTypeEnum.ONETIME ? 'one-use' : 'permanent'}-link`, {\n state: { link: link },\n });\n };\n\n const handleDeleteClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n setLinkToDelete(link);\n };\n\n return (\n
    \n \n Creado por:{link.creatorName}\n \n
    \n {isLinkExpired || noPaymentMethods ? (\n \n ) : (\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n );\n}\n\nexport default CardFooter;\n","import { linkHelper } from '../../helpers/linkHelper';\nimport { Link } from '../../store/config/types';\nimport { StatusPill } from '../StatusPill';\nimport { StatusPillProps } from '../StatusPill/StatusPill';\n\ninterface LinkStatusPillProps {\n link: Link;\n}\n\nfunction LinkStatusPill({ link }: LinkStatusPillProps) {\n const getStatusLabel = (date: Date | null): string => {\n return date && linkHelper.verifyValidation(date) ? 'Vencido' : 'Activo';\n };\n\n const getStatusColor = (date: Date | null): StatusPillProps['color'] => {\n return date && linkHelper.verifyValidation(date) ? 'info' : 'success';\n };\n\n return (\n \n );\n}\n\nexport default LinkStatusPill;\n","import { Divider, Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { useState } from 'react';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { linkHelper } from '../../helpers/linkHelper';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentTypeHelper } from '../../helpers/paymentTypeHelper';\nimport { Link } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { ShareLinkDialog } from '../dialogs/ShareLinkDialog';\nimport CardFooter from './CardFooter';\nimport LinkStatusPill from './LinkStatusPill';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n flexDirection: 'column',\n padding: '1rem',\n },\n header: {\n color: theme.palette.secondary.main,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n row: { display: 'flex', alignItems: 'center' },\n date: {\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.darkBlue,\n },\n body: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '0.8rem',\n '& svg': {\n color: theme.palette.primary.main,\n fontSize: '1.3rem',\n },\n },\n amountContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.35rem',\n },\n text: {\n marginBlockStart: 0,\n marginBlockEnd: 0,\n fontSize: '0.875rem',\n fontWeight: Number(styles.normalTextWeight),\n color: styles.darkBlue,\n },\n descriptionText: {\n maxWidth: '70%',\n textAlign: 'center',\n height: '2.5rem',\n display: 'flex',\n alignItems: 'center',\n },\n expirationText: {\n fontWeight: 600,\n color: styles.slateBlue,\n },\n amount: {\n color: styles.darkBlue,\n fontSize: '1.5rem',\n fontWeight: 500,\n },\n divider: {\n margin: '0 0.5rem',\n alignSelf: 'center',\n height: '1.6rem',\n },\n }),\n);\n\ninterface LinkCardProps {\n link: Link;\n setLinkToDelete(link: Link): void;\n}\n\nfunction LinkCard({ link, setLinkToDelete }: LinkCardProps) {\n const classes = useStyles();\n const [shareOpen, setShareOpen] = useState(false);\n const totalAmount = linkHelper.getTotalLinkAmount(link);\n\n return (\n <>\n \n
    \n
    \n {linkTypeEnumHelper.getIcon(link.linkType)}\n \n {paymentTypeHelper.paymentTypesTitle[link.paymentType]}\n
    \n \n
    \n
    \n
    \n \n {currencyHelper.getCurrencyToken(link.amount.currency)}{' '}\n {numberHelper.getNumberWithDots(totalAmount)}\n \n

    \n {link.description || 'Sin descripción'}\n

    \n\n

    \n Vencimiento \n \n {link.validUntil ? dateHelper.toShorterNiceString(link.validUntil) : 'Sin vencimiento'}\n \n

    \n
    \n
    \n \n \n
    \n \n \n );\n}\n\nexport default LinkCard;\n","import { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { LinkTypeEnum } from '../store/config/enums';\nimport { Filters } from '../store/config/types';\n\ninterface UseFilterLogicParams {\n businessId: number;\n linkType: LinkTypeEnum;\n loadFiltersAction: (\n filters: Filters,\n page: number,\n pageSize: number,\n businessId: number,\n linkType: LinkTypeEnum,\n ) => void;\n filtersState: Filters;\n}\n\nfunction useFilterLogic({ businessId, linkType, loadFiltersAction, filtersState }: UseFilterLogicParams) {\n const dispatch = useDispatch();\n const [openFilters, setOpenFilters] = useState(false);\n const [searchTerm, setSearchTerm] = useState(filtersState.term || '');\n\n const loadFilters = (filters: Filters) => {\n dispatch(\n loadFiltersAction(\n { ...filters, sortDirection: 2, columnSort: 1 }, // sortDirection = 2 means DESC and columSort = 1 means sorting by date\n 1, // page\n 10, // pageSize\n businessId,\n linkType,\n ),\n );\n };\n\n const searchLinks = () => {\n if ((searchTerm.length > 3 || searchTerm.length === 0) && searchTerm !== filtersState.term) {\n const filters = { ...filtersState, term: searchTerm };\n dispatch(loadFiltersAction(filters, 1, 10, businessId, linkType));\n }\n };\n\n const closeFiltersDialog = () => setOpenFilters(false);\n\n return {\n openFilters,\n setOpenFilters,\n searchTerm,\n setSearchTerm,\n loadFilters,\n searchLinks,\n closeFiltersDialog,\n };\n}\n\nexport default useFilterLogic;\n","import {\n FormControl,\n FormGroup,\n FormLabel,\n MenuItem,\n OutlinedInput,\n Select,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { AuthState, Business, Collaborator, PaymentsFilters, RootState } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n [theme.breakpoints.down('sm')]: {\n maxHeight: '50vh',\n overflow: 'auto',\n },\n },\n }),\n);\ninterface CollaboratorFiltersProps {\n filters: PaymentsFilters | null;\n setFilters: (filters: PaymentsFilters) => void;\n hasDateFilters?: boolean;\n selectedBusiness?: Business | null;\n}\n\nfunction CollaboratorFilters({\n filters,\n setFilters,\n hasDateFilters,\n selectedBusiness,\n}: CollaboratorFiltersProps) {\n const classes = useStyles();\n\n const collaborators: Collaborator[] | null = useSelector(\n (state: RootState) => state.collaborators.collaborators,\n );\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n const isCollaborator = auth.account?.type === UserTypeEnum.COLLABORATOR;\n const sortedCollaborators = collaborators?.sort((a: Collaborator, b: Collaborator) =>\n a.names.toUpperCase().localeCompare(b.names.toUpperCase()),\n );\n\n useEffect(() => {\n let newPaymentsFilters: PaymentsFilters = {\n ...filters,\n collaborator: isCollaborator || isSuperAdmin ? '' : filters?.collaborator || '',\n };\n\n setFilters(newPaymentsFilters);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedBusiness]);\n\n const handleCollaboratorChange = (\n event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>,\n ) => {\n const targetValue = String(event.target.value);\n\n const selectedCollaborator = targetValue ? targetValue : undefined;\n var filterCollaborator;\n\n filterCollaborator = selectedCollaborator === filters?.collaborator ? undefined : selectedCollaborator;\n\n let newPaymentsFilters: PaymentsFilters = {\n ...filters,\n collaborator: filterCollaborator,\n };\n\n setFilters(newPaymentsFilters);\n };\n\n const selectValue = isSuperAdmin\n ? (selectedBusiness && filters?.collaborator) || ''\n : isCollaborator\n ? ''\n : filters?.collaborator || '';\n\n return (\n
    \n \n \n Creado por\n \n \n }\n className={`select ${isCollaborator ? 'disabled' : ''}`}\n onChange={handleCollaboratorChange}\n value={selectValue}\n disabled={isCollaborator}\n MenuProps={{\n classes: { paper: classes.paper },\n getContentAnchorEl: null,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n }}\n >\n \n Selecciona\n \n \n {isCollaborator ? `${auth.account?.names} ${auth.account?.surnames}` : 'Todos'}\n \n {sortedCollaborators &&\n sortedCollaborators.map((collaborator: Collaborator, index) => {\n return (\n \n {`${collaborator.names} ${collaborator.surnames}`}\n \n );\n })}\n \n \n \n
    \n );\n}\n\nexport default CollaboratorFilters;\n","import {\n FormControl,\n FormGroup,\n FormLabel,\n MenuItem,\n OutlinedInput,\n Select,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { SortEnum } from '../../store/config/enums';\nimport { PaymentsFilters } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n [theme.breakpoints.down('sm')]: {\n maxHeight: '50vh',\n overflow: 'auto',\n },\n },\n }),\n);\ninterface CurrencyFiltersProps {\n filters: PaymentsFilters | null;\n setFilters: (filters: PaymentsFilters) => void;\n hasDateFilters?: boolean;\n}\n\nfunction CurrencyFilters({ filters, setFilters, hasDateFilters }: CurrencyFiltersProps) {\n const classes = useStyles();\n\n const handleCurrencyChange = (event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>) => {\n const targetValue = String(event.target.value);\n const currency = {\n pesos: false,\n dollars: false,\n };\n\n if (\n (filters?.currency?.pesos || filters?.currency?.dollars) &&\n !(filters.currency?.pesos && filters.currency?.dollars)\n ) {\n filters.sortDirection = SortEnum.DESC;\n }\n\n let newLinksFilters: PaymentsFilters = {\n ...filters,\n currency: { ...currency, [targetValue]: true },\n };\n\n setFilters(newLinksFilters);\n };\n\n const getSelectedCurrency = () => {\n if (filters?.currency?.pesos && filters?.currency?.dollars) {\n return '';\n } else if (filters?.currency?.pesos) {\n return 'pesos';\n } else if (filters?.currency?.dollars) {\n return 'dollars';\n }\n return '';\n };\n\n return (\n
    \n \n \n Moneda\n \n \n }\n className=\"select\"\n onChange={handleCurrencyChange}\n value={getSelectedCurrency()}\n MenuProps={{\n classes: { paper: classes.paper },\n getContentAnchorEl: null,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n }}\n >\n \n Selecciona\n \n Todas\n Pesos\n Dólares\n \n \n \n
    \n );\n}\n\nexport default CurrencyFilters;\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { DatePicker } from '@material-ui/pickers';\nimport moment from 'moment';\nimport { useState } from 'react';\nimport { DateSpan } from '../../store/config/enums';\nimport { PaymentsFilters } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n width: '100%',\n textAlign: 'center',\n },\n dialog: {\n display: 'flex',\n flexDirection: 'row',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n paddingLeft: 0,\n paddingRight: 0,\n },\n },\n picker: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n marginTop: '1rem',\n [theme.breakpoints.down('xs')]: {\n marginTop: 0,\n },\n },\n from: {\n marginTop: '0.6rem',\n marginRight: '0.6rem',\n [theme.breakpoints.down('xs')]: {\n margin: 0,\n },\n },\n to: {\n marginTop: '0.6rem',\n marginLeft: '0.6rem',\n [theme.breakpoints.down('xs')]: {\n margin: 0,\n },\n },\n }),\n);\n\ninterface DateRangeDialogProps {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n filters: PaymentsFilters | null;\n setFilters: (filters: PaymentsFilters) => void;\n}\n\nfunction DateRangeDialog({ isOpen, setIsOpen, filters, setFilters }: DateRangeDialogProps) {\n const classes = useStyles();\n const [fromDate, setFromDate] = useState(moment().toISOString());\n const [toDate, setToDate] = useState(moment().toISOString());\n\n const closeDialog = () => {\n setFilters({ ...filters, dateSpan: DateSpan.ALL });\n setIsOpen(false);\n };\n\n const handleFromChange = (e: any) => {\n setFromDate(moment(e).startOf('day').toISOString());\n };\n\n const handleToChange = (e: any) => {\n setToDate(moment(e).endOf('day').toISOString());\n };\n\n const submitRange = () => {\n setIsOpen(false);\n setFilters({ ...filters, dateSpan: DateSpan.CUSTOM, from: fromDate, to: toDate });\n };\n\n return (\n \n \n \n Selecciona un rango de fechas\n \n \n \n
    \n Desde\n
    \n \n
    \n
    \n
    \n Hasta\n
    \n \n
    \n
    \n
    \n \n \n \n \n
    \n );\n}\n\nexport default DateRangeDialog;\n","import {\n FormControl,\n FormGroup,\n FormLabel,\n MenuItem,\n OutlinedInput,\n Select,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport moment from 'moment';\nimport React, { useState } from 'react';\nimport { DateSpan } from '../../store/config/enums';\nimport { PaymentsFilters } from '../../store/config/types';\nimport DateRangeDialog from './DateRangeDialog';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n [theme.breakpoints.down('sm')]: {\n maxHeight: '50vh',\n overflow: 'auto',\n },\n },\n }),\n);\ninterface DateFiltersProps {\n filters: PaymentsFilters | null;\n setFilters: (filters: PaymentsFilters) => void;\n isPaymentFilter?: boolean;\n}\n\nfunction DateFilters({ filters, setFilters, isPaymentFilter }: DateFiltersProps) {\n const classes = useStyles();\n const [isOpen, setIsOpen] = useState(false);\n\n const handleDateChange = (event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>) => {\n if (Number(event.target.value) !== DateSpan.CUSTOM) {\n setFilters({ ...filters, dateSpan: Number(event.target.value) });\n } else {\n setIsOpen(true);\n }\n };\n\n return (\n
    \n \n \n {`Fecha de ${isPaymentFilter ? 'pago' : 'creación'}`}\n \n \n }\n className=\"select\"\n onChange={handleDateChange}\n value={filters?.dateSpan !== undefined ? filters.dateSpan : DateSpan.LAST7DAYS}\n MenuProps={{\n classes: { paper: classes.paper },\n getContentAnchorEl: null,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n }}\n >\n \n Selecciona\n \n \n Todas\n \n \n Hoy\n \n \n Últimos 7 días\n \n \n Últimos 15 días\n \n \n Últimos 30 días\n \n setIsOpen(true)}>\n {filters && filters.dateSpan === DateSpan.CUSTOM\n ? `${moment(filters.from).format('DD/MM/YYYY')} - ${moment(filters.to).format('DD/MM/YYYY')}`\n : `Rango`}\n \n \n \n \n \n
    \n );\n}\n\nexport default DateFilters;\n","import {\n FormControl,\n FormGroup,\n FormLabel,\n MenuItem,\n OutlinedInput,\n Select,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchIssuers } from '../../store/action_creators/paymentMethods.actions';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { PaymentsFilters, RootState } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n [theme.breakpoints.down('sm')]: {\n maxHeight: '50vh',\n overflow: 'auto',\n },\n },\n }),\n);\n\ninterface IssuerFiltersProps {\n filters: PaymentsFilters | null;\n setFilters: (filters: PaymentsFilters) => void;\n hasDateFilters?: boolean;\n}\n\nfunction IssuerFilters({ filters, setFilters, hasDateFilters }: IssuerFiltersProps) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const { paymentMethods, auth } = useSelector((state: RootState) => state);\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n const issuersToSelect = isSuperAdmin ? paymentMethods.issuers : paymentMethods.paymentMethods;\n\n useEffect(() => {\n if (\n !paymentMethods.loadingIssuers &&\n paymentMethods.issuers === null &&\n paymentMethods.issuersErrorMessage === null\n ) {\n dispatch(fetchIssuers());\n }\n }, [paymentMethods.loadingIssuers, paymentMethods.issuers, paymentMethods.issuersErrorMessage, dispatch]);\n\n const handleIssuerChange = (event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>) => {\n const targetValue = String(event.target.value);\n\n const selectedIssuer = event.target.value ? parseInt(targetValue) : undefined;\n var filterIssuer;\n\n filterIssuer = selectedIssuer === filters?.issuer ? undefined : selectedIssuer;\n\n let newPaymentsFilters: PaymentsFilters = {\n ...filters,\n issuer: filterIssuer,\n };\n\n setFilters(newPaymentsFilters);\n };\n\n return (\n
    \n \n \n Medio de pago\n \n \n }\n className=\"select\"\n onChange={handleIssuerChange}\n value={filters?.issuer || ''}\n MenuProps={{\n classes: { paper: classes.paper },\n getContentAnchorEl: null,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n }}\n >\n \n Selecciona\n \n \n Todos\n \n {issuersToSelect &&\n issuersToSelect.map((issuer) => (\n \n {'issuer' in issuer ? issuer.issuer : issuer.issuerName}\n \n ))}\n \n \n \n
    \n );\n}\n\nexport default IssuerFilters;\n","import colors from '../../../styles/_variables.module.scss';\n\nfunction Cancel() {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport default Cancel;\n","import { IconButton, InputAdornment, InputBase, Tooltip } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport SearchIcon from '@material-ui/icons/Search';\nimport React, { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport styles from '../../styles/_variables.module.scss';\nimport { Cancel } from '../Icons/Cancel';\n\nconst useStyles = makeStyles({\n searchInput: {\n backgroundColor: styles.white,\n padding: '0.2rem 0rem',\n borderRadius: '6px',\n border: `1px solid ${styles.softGrey}`,\n },\n icon: {\n fill: styles.slateBlue,\n margin: '0 0.75rem 0 1.4375rem',\n },\n});\n\ninterface SearchProps {\n hasClearButton?: boolean;\n searchTerm: string;\n setSearchTerm: Dispatch>;\n triggerSearch: () => void;\n placeholder?: string;\n}\n\nfunction Search({\n searchTerm,\n setSearchTerm,\n triggerSearch,\n hasClearButton = true,\n placeholder = 'Buscar',\n}: SearchProps) {\n const [typingTimer, setTypingTimer] = useState(undefined);\n\n const classes = useStyles();\n\n const search = () => {\n if (searchTerm === '') {\n triggerSearch();\n } else {\n window.clearTimeout(typingTimer);\n setTypingTimer(window.setTimeout(triggerSearch, 1000));\n }\n };\n\n const searchTermChange = (event: React.ChangeEvent) => {\n setSearchTerm(event.target.value);\n };\n\n useEffect(() => {\n search();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [searchTerm]);\n\n return (\n \n \n \n }\n endAdornment={\n hasClearButton && (\n setSearchTerm('')}>\n \n \n \n \n )\n }\n placeholder={placeholder}\n fullWidth\n onChange={searchTermChange}\n onClick={(event) => event.stopPropagation()}\n onFocus={(event) => event.stopPropagation()}\n value={searchTerm}\n />\n );\n}\n\nexport default Search;\n","import { Button, Theme, createStyles, makeStyles, useMediaQuery, useTheme } from '@material-ui/core';\nimport React, { Dispatch, SetStateAction, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useSearchParams } from 'react-router-dom';\nimport { filteringHelper } from '../../helpers/filteringHelper';\nimport { toggleResetClientFilter } from '../../store/action_creators/payments.actions';\nimport { DateSpan } from '../../store/config/enums';\nimport { Business, PaymentsFilters } from '../../store/config/types';\nimport CollaboratorFilters from './CollaboratorFilters';\nimport CurrencyFilters from './CurrencyFilters';\nimport DateFilters from './DateFilters';\nimport IssuerFilters from './IssuerFilters';\nimport Search from './Search';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n outlinedRoot: {\n borderRadius: '2rem',\n backgroundColor: theme.palette.background.paper,\n },\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: '2rem',\n width: '100%',\n },\n filtersContainer: {\n maxWidth: '100%',\n display: 'flex',\n flexDirection: 'row',\n gap: '12px',\n [theme.breakpoints.down('sm')]: {\n marginTop: '1rem',\n flexDirection: 'column',\n gap: 8,\n },\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n fontWeight: theme.typography.fontWeightRegular,\n },\n actions: {\n display: 'flex',\n flexDirection: 'row',\n gap: '0.75rem',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n '& button': {\n minWidth: 'fit-content',\n width: 'fit-content',\n height: '2.3125rem',\n padding: '0.4375rem 1rem',\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n justifyContent: 'space-between',\n flexDirection: 'row-reverse',\n margin: '1rem 0',\n '& button': {\n width: '50%',\n minWidth: 'unset',\n },\n },\n },\n }),\n);\n\ninterface FiltersComponentProps {\n hasDateFilter?: boolean;\n hasIssuerFilter?: boolean;\n hasCollaboratorFilter?: boolean;\n searchTerm: string;\n setSearchTerm: Dispatch>;\n filters: PaymentsFilters | null;\n setFilters: (filters: PaymentsFilters) => void;\n triggerSearch: () => void;\n triggerTime?: number;\n clientsFilter?: React.ReactNode;\n selectedBusiness?: Business | null;\n closeDialog?: () => void;\n isPaymentFilter?: boolean;\n}\n\nfunction FiltersComponent({\n hasDateFilter = false,\n hasIssuerFilter = false,\n hasCollaboratorFilter = false,\n searchTerm,\n setSearchTerm,\n filters,\n selectedBusiness,\n setFilters,\n triggerSearch,\n clientsFilter,\n closeDialog,\n isPaymentFilter,\n}: FiltersComponentProps) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const [searchParams, setSearchParams] = useSearchParams();\n const initialFilters: PaymentsFilters = {\n dateSpan: DateSpan.LAST7DAYS,\n currency: { pesos: false, dollars: false },\n issuer: '',\n collaborator: '',\n };\n const [localFilters, setLocalFilters] = useState({ ...filters } || initialFilters);\n\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\n\n const applyFilters = () => {\n if (localFilters !== filters) {\n setSearchParams(filteringHelper.getFiltersForPayments(localFilters));\n setFilters(localFilters);\n }\n\n if (!isDesktop && closeDialog) {\n closeDialog();\n }\n };\n\n const resetFilters = () => {\n setSearchParams('');\n setLocalFilters(initialFilters);\n dispatch(toggleResetClientFilter());\n };\n\n useEffect(() => {\n const urlFilters = filteringHelper.getFiltersFromSearchParams(searchParams, filters);\n if (searchParams.size > 0) setLocalFilters(urlFilters);\n }, [filters, searchParams]);\n\n return (\n
    \n
    \n {hasDateFilter && (\n \n )}\n \n {hasIssuerFilter && }\n {clientsFilter}\n {hasCollaboratorFilter && (\n \n )}\n
    \n \n \n
    \n
    \n {isDesktop && (\n \n )}\n
    \n );\n}\n\nexport default FiltersComponent;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction Filters({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n \n \n \n );\n}\n\nexport default Filters;\n","import {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Dispatch, SetStateAction } from 'react';\nimport { FiltersComponent } from '../../components/FiltersComponent';\nimport Search from '../../components/FiltersComponent/Search';\nimport { Filters as FiltersIcon } from '../../components/Icons/Filters';\nimport { Filters } from '../../store/config/types';\n\ninterface LinksFilterLayoutProps {\n openFilters: boolean;\n setOpenFilters: (open: boolean) => void;\n searchTerm: string;\n setSearchTerm: Dispatch>;\n searchLinks: () => void;\n closeFiltersDialog: () => void;\n loadFilters: (filters: Filters) => void;\n filtersState: Filters;\n}\n\nfunction LinksFilterLayout({\n openFilters,\n setOpenFilters,\n searchTerm,\n setSearchTerm,\n searchLinks,\n closeFiltersDialog,\n loadFilters,\n filtersState,\n}: LinksFilterLayoutProps) {\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\n\n return isDesktop ? (\n
    \n \n
    \n ) : (\n <>\n
    \n \n \n
    \n \n \n \n \n \n Filtrar por\n \n \n \n \n );\n}\n\nexport default LinksFilterLayout;\n","import { useSelector } from 'react-redux';\nimport useFilterLogic from '../../hooks/useFilterLogic';\nimport { loadLinksFilters } from '../../store/action_creators/links.actions';\nimport { LinkTypeEnum } from '../../store/config/enums';\nimport { RootState } from '../../store/config/types';\nimport LinksFilterLayout from './LinksFiltersLayout';\n\ninterface LinksFiltersProps {\n businessId: number;\n linkType: LinkTypeEnum;\n}\n\nfunction LinksFilters({ businessId, linkType }: LinksFiltersProps) {\n const { links } = useSelector((state: RootState) => state);\n\n const {\n openFilters,\n setOpenFilters,\n searchTerm,\n setSearchTerm,\n loadFilters,\n searchLinks,\n closeFiltersDialog,\n } = useFilterLogic({\n businessId,\n linkType,\n loadFiltersAction: loadLinksFilters,\n filtersState: links.linksFilters,\n });\n\n return (\n \n );\n}\n\nexport default LinksFilters;\n","import { useSelector } from 'react-redux';\nimport useFilterLogic from '../../hooks/useFilterLogic';\nimport { loadOneUseLinksFilters } from '../../store/action_creators/links.actions';\nimport { LinkTypeEnum } from '../../store/config/enums';\nimport { RootState } from '../../store/config/types';\nimport LinksFilterLayout from './LinksFiltersLayout';\n\ninterface OneUseLinksFiltersProps {\n businessId: number;\n linkType: LinkTypeEnum;\n}\n\nfunction OneUseLinksFilters({ businessId, linkType }: OneUseLinksFiltersProps) {\n const { links } = useSelector((state: RootState) => state);\n\n const {\n openFilters,\n setOpenFilters,\n searchTerm,\n setSearchTerm,\n loadFilters,\n searchLinks,\n closeFiltersDialog,\n } = useFilterLogic({\n businessId,\n linkType,\n loadFiltersAction: loadOneUseLinksFilters,\n filtersState: links.oneUseLinksFilters,\n });\n\n return (\n \n );\n}\n\nexport default OneUseLinksFilters;\n","import { Button, Grid } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { EmptyMessage } from '../../components/EmptyMessage';\nimport { ErrorMessage } from '../../components/ErrorMessage';\nimport { CsvFile } from '../../components/Icons/CsvFile';\nimport { LinkCard } from '../../components/LinkCard';\nimport { Loading } from '../../components/Loading';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { DeleteDialog } from '../../components/dialogs/DeleteDialog';\nimport values from '../../data/values';\nimport { fetchAllUsers } from '../../store/action_creators/collaborators.actions';\nimport { deleteLink, fetchLinks, fetchOneUseLinks } from '../../store/action_creators/links.actions';\nimport { LinkTypeEnum, Status } from '../../store/config/enums';\nimport { Link, RootState } from '../../store/config/types';\nimport { initialState as initialLinks } from '../../store/reducers/links';\nimport LinksFilters from './LinksFilters';\nimport OneUseLinksFilters from './OneUseLinksFilters';\n\ninterface LinksProps {\n linkType: LinkTypeEnum;\n}\n\nfunction Links({ linkType }: LinksProps) {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const { auth, links, collaborators } = useSelector((state: RootState) => state);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [deletingLink, setDeletingLink] = useState(false);\n const [linkToDelete, setLinkToDelete] = useState(null);\n const businessId = auth.account?.business?.id ?? -1;\n const isOneTimeLink = linkType === LinkTypeEnum.ONETIME;\n\n const title = isOneTimeLink ? 'Links de 1 uso' : 'Links multiuso';\n const tooltip = isOneTimeLink\n ? 'Permite crear un link de pago para solo un usuario que podrá ser usado una única vez.'\n : 'Permite crear links de uso recurrente que podrán ser usados más de una vez y por distintos usuarios.';\n\n const linksToDisplay = isOneTimeLink ? links.oneUseLinks : links.links;\n const currentPage = isOneTimeLink ? links.oneUseCurrentPage : links.currentPage;\n const pageCount = isOneTimeLink ? links.oneUsePageCount : links.pageCount;\n const loading = isOneTimeLink ? links.loadingOneUseLinks : links.loadingLinks;\n const errorMessage = isOneTimeLink ? links.oneUseLinksErrorMessage : links.linksErrorMessage;\n\n const oneUseLinkCount = links.oneUseLinks?.length ?? 'Cargando';\n const linkCount = links.links?.length ?? 'Cargando';\n\n useEffect(() => {\n if (\n auth.account &&\n !collaborators.loadingCollaborators &&\n collaborators.collaborators === null &&\n collaborators.collaboratorsErrorMessage === null\n ) {\n dispatch(fetchAllUsers(businessId));\n }\n }, [\n auth.account,\n collaborators.loadingCollaborators,\n collaborators.collaborators,\n collaborators.collaboratorsErrorMessage,\n businessId,\n dispatch,\n ]);\n\n useEffect(() => {\n if (auth.account) {\n if (isOneTimeLink && !links.oneUseLinks && !links.loadingOneUseLinks) {\n dispatch(\n fetchOneUseLinks(\n initialLinks.oneUseLinksFilters,\n 1,\n values.linksPageLimit,\n businessId!,\n linkType,\n true,\n ),\n );\n } else if (linkType === LinkTypeEnum.PERMANENT && !links.links && !links.loadingLinks) {\n dispatch(\n fetchLinks(initialLinks.linksFilters, 1, values.linksPageLimit, businessId!, linkType, true),\n );\n }\n }\n }, [\n links.loadingLinks,\n links.links,\n links.linksType,\n links.linksFilters,\n auth.account,\n businessId,\n dispatch,\n linkType,\n links.oneUseLinks,\n links.loadingOneUseLinks,\n isOneTimeLink,\n ]);\n\n const beginDeleteLink = (link: Link) => {\n setDeleteOpen(true);\n setLinkToDelete(link);\n };\n\n const confirmDeleteLink = () => {\n setDeletingLink(true);\n\n if (businessId && linkToDelete) {\n dispatch(deleteLink({ businessId: businessId.toString(), linkId: linkToDelete.id }));\n }\n };\n\n const closeDeleteSnack = () => {\n setDeletingLink(false);\n\n if (links.deleteLinkSuccess) setDeleteOpen(false);\n };\n\n const loadMore = () => {\n if (isOneTimeLink) {\n dispatch(\n fetchOneUseLinks(\n links.oneUseLinksFilters,\n links.oneUseCurrentPage + 1,\n values.linksPageLimit,\n businessId!,\n linkType,\n false,\n ),\n );\n } else {\n dispatch(\n fetchLinks(\n links.linksFilters,\n links.currentPage + 1,\n values.linksPageLimit,\n businessId!,\n linkType,\n false,\n ),\n );\n }\n };\n\n return (\n
    \n
    \n
    \n \n
    \n {isOneTimeLink && (\n }\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => navigate('/upload-csv-links')}\n disableElevation\n >\n Crear con CSV\n \n )}\n navigate(`/${isOneTimeLink ? 'one-use' : 'permanent'}-link`)}\n disableElevation\n >\n Crear link\n \n
    \n {isOneTimeLink ? (\n \n ) : (\n \n )}\n {linksToDisplay ? (\n linksToDisplay.length > 0 ? (\n \n \n
    \n )\n }\n >\n \n {linksToDisplay.map((link) => (\n \n \n \n ))}\n \n \n ) : (\n \n )\n ) : loading ? (\n \n ) : (\n errorMessage && \n )}\n \n \n
    \n );\n}\n\nexport default Links;\n","import {\n Button,\n CircularProgress,\n Divider,\n Paper,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\nimport PasswordField from '../../components/PasswordField/PasswordField';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport schemas from '../../data/schemas';\nimport { login } from '../../store/action_creators/auth.actions';\nimport { AppActions } from '../../store/config/ActionTypes';\nimport { RootState, UserCredentials } from '../../store/config/types';\nimport variables from '../../styles/_variables.module.scss';\nimport { CustomSnackbar } from './../../components/CustomSnackbar';\nimport { Status } from './../../store/config/enums';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n divider: {\n margin: '1.75rem 0',\n },\n registerText: {\n textAlign: 'center',\n fontWeight: 400,\n },\n link: {\n color: variables.primary,\n fontWeight: 400,\n textDecoration: 'underline',\n '&:hover': {\n textDecoration: 'underline',\n color: variables.primaryMidtone,\n },\n },\n passwordField: {\n position: 'relative',\n },\n }),\n);\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n login: (user: UserCredentials) => dispatch(login(user)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\n\ninterface Values {\n email: string;\n password: string;\n}\n\nfunction Login({ auth, login }: PropsFromRedux) {\n const [loggingIn, setLoggingIn] = useState(false);\n\n const classes = useStyles();\n\n const submitLogin = (values: Values, helpers: FormikHelpers) => {\n const user: UserCredentials = {\n email: values.email,\n password: values.password,\n };\n\n setLoggingIn(true);\n login(user);\n };\n\n const closeSnack = () => {\n setLoggingIn(false);\n };\n\n return (\n
    \n \n \n \n {({ values, errors }) => (\n
    \n \n \n
    \n Reiniciar contraseña\n \n
    \n \n )}\n \n \n
    \n \n ¿Aún no tienes una cuenta?\n \n Regístrate aquí\n
    \n \n
    \n
    \n );\n}\n\nexport default connector(Login);\n","export default __webpack_public_path__ + \"static/media/logo.d346ccab.png\";","export default __webpack_public_path__ + \"static/media/maintenance.26d78a48.png\";","import { Theme, createStyles, makeStyles } from '@material-ui/core';\nimport Logo from '../../assets/logo.png';\nimport MaintenanceImg from '../../assets/maintenance.png';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n backgroundColor: '#F4F7FC',\n paddingLeft: '12%',\n paddingRight: '3%',\n display: 'flex',\n width: '100%',\n height: '100vh',\n flexDirection: 'row',\n justifyContent: 'space-between',\n [theme.breakpoints.down('md')]: {\n padding: '2.5rem 0 0 0',\n width: '100%',\n flexDirection: 'column',\n },\n },\n decoration: {\n [theme.breakpoints.down('md')]: {\n maxWidth: '100%',\n maxHeight: 'fit-content',\n alignSelf: 'center',\n },\n },\n texts: {\n alignSelf: 'center',\n width: '40%',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n '& h1': {\n fontFamily: 'Ubuntu',\n fontWeight: 700,\n color: '#081E50',\n fontSize: '3.375rem',\n [theme.breakpoints.down('md')]: {\n fontSize: '2.0625rem',\n padding: '0 3rem',\n margin: '1.875rem 0 0.875rem 0',\n },\n '& span': {\n color: '#00B2B8',\n },\n },\n '& p': {\n color: '#081E50',\n fontFamily: 'Ubuntu',\n fontWeight: 400,\n fontSize: '1.25rem',\n lineHeight: '2rem',\n [theme.breakpoints.down('md')]: {\n padding: '0 3rem',\n },\n margin: 0,\n '&:last-child': {\n margin: '0.875rem 0',\n },\n },\n '& a': {\n color: '#00B2B8',\n },\n },\n logo: {\n [theme.breakpoints.down('md')]: {\n maxWidth: '30%',\n },\n },\n }),\n);\n\nfunction Maintenance() {\n const classes = useStyles();\n\n return (\n
    \n
    \n \"Plexo\n

    \n ¡Estamos en proceso de actualización!\n

    \n

    Una nueva versión de nuestra plataforma estará disponible muy pronto.

    \n

    \n Si tienes alguna duda, escríbenos para ayudarte.\n

    \n
    \n \"\"\n
    \n );\n}\nexport default Maintenance;\n","import { createStyles, Divider, makeStyles, Tooltip, Typography } from '@material-ui/core';\nimport React from 'react';\nimport { useSelector } from 'react-redux';\nimport AddIcon from '../../assets/addIcon';\nimport DeleteIcon from '../../assets/deleteIcon';\nimport { Client, PaymentMethod, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { CustomSwitch } from '../CustomSwitch';\nimport SinglePaymentMethodDeleteTooltip from '../PaymentMethods/SingleDeletePaymentMethodDeleteTooltip';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n settingsContainer: {\n padding: '1.3125rem 2rem',\n marginBottom: '1.875rem',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n background: styles.white,\n boxShadow: styles.boxShadow,\n borderRadius: '4px',\n color: styles.slateBlue,\n '& span': {\n margin: 0,\n },\n },\n }),\n);\n\ninterface ClientSettingProps {\n selectedClient: Client;\n handleBillingChange: (event: React.ChangeEvent) => void;\n createPaymentMethod: () => void;\n updatePaymentMethod: (paymentMethod: PaymentMethod) => void;\n beginDeletePaymentMethod: (commerce: PaymentMethod, isLast: boolean) => void;\n}\n\nfunction ClientSettings({\n selectedClient,\n handleBillingChange,\n createPaymentMethod,\n updatePaymentMethod,\n beginDeletePaymentMethod,\n}: ClientSettingProps) {\n const classes = useStyles();\n const paymentMethods: PaymentMethod[] | null = useSelector(\n (state: RootState) => state.paymentMethods.paymentMethods,\n );\n\n return (\n <>\n
    \n Habilitar facturación electrónica\n \n
    \n Medios de Pago\n
    \n
    \n \n Nuevo medio de pago\n
    \n {paymentMethods &&\n paymentMethods.map((paymentMethod, index) => {\n return (\n
    updatePaymentMethod(paymentMethod)} key={index}>\n
    \n {paymentMethods && paymentMethods.length === 1 ? (\n \n ) : (\n \n ) => {\n e.stopPropagation();\n beginDeletePaymentMethod(paymentMethod, paymentMethods.length === 1);\n }}\n >\n \n \n \n )}\n
    \n \"logo\"\n \n
    \n \n {paymentMethod.issuerName}\n \n
    \n
    \n );\n })}\n
    \n \n );\n}\n\nexport default ClientSettings;\n","import { HeadCell } from '../components/CustomTable/CustomTable';\nimport { PaymentsColumnSortEnum } from '../store/config/enums';\nimport { Payment } from '../store/config/types';\n\nexport interface ExtraColumns {\n actions?: JSX.Element;\n}\n\nexport type PaymentColumn = Payment & ExtraColumns;\n\nexport const getPaymentsHeadCells = (\n isDashboardTable: boolean,\n isSuperAdmin: boolean,\n): HeadCell[] => {\n const paymentsColumns: HeadCell[] = [\n { columnId: 'date', label: 'Fecha y hora' },\n { columnId: 'description', label: 'Descripción', disableSorting: true },\n { columnId: 'userDto', label: 'Creado por' },\n { columnId: 'linkType', label: 'Tipo' },\n { columnId: 'issuerLogoUrl', label: 'Medio de Pago', disableSorting: true },\n { columnId: 'status', label: 'Estado' },\n ];\n\n const businessColumn: HeadCell = { columnId: 'businessName', label: 'Empresa' };\n const invoiceNumberColumn: HeadCell = { columnId: 'invoiceNumber', label: 'N° de factura' };\n\n const amountColumn: HeadCell = { columnId: 'amount', label: 'Importe' };\n const actionsColumn: HeadCell = { columnId: 'actions', label: '' };\n\n paymentsColumns.push(amountColumn, actionsColumn);\n\n if (isSuperAdmin) {\n paymentsColumns.splice(2, 0, businessColumn);\n paymentsColumns.push(invoiceNumberColumn);\n }\n\n return paymentsColumns;\n};\n\nexport const paymentColumnMap = {\n date: PaymentsColumnSortEnum.Date,\n description: PaymentsColumnSortEnum.Description,\n userDto: PaymentsColumnSortEnum.Username,\n linkType: PaymentsColumnSortEnum.LinkType,\n issuerLogoUrl: PaymentsColumnSortEnum.IssuerName,\n amount: PaymentsColumnSortEnum.Amount,\n};\n","import {\n Box,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableSortLabel,\n makeStyles,\n} from '@material-ui/core';\nimport React, { ReactNode } from 'react';\nimport { getColumnIdFromColumnMap, getSortDirectionFromEnum } from '../../helpers/filteringHelper';\nimport { paymentColumnMap } from '../../helpers/tableHelper';\nimport { SortEnum } from '../../store/config/enums';\nimport { EmptyMessage } from '../EmptyMessage';\n\nconst useStyles = makeStyles({\n noHoverRow: {\n '&.MuiTableRow-root': {\n cursor: 'auto',\n },\n '&.MuiTableRow-root.MuiTableRow-hover:hover': {\n backgroundColor: 'transparent',\n },\n },\n});\n\nexport interface CustomTableProps {\n headCells: HeadCell[];\n rowsData: T[];\n emptyDataMessage?: string | ReactNode;\n loading?: boolean;\n loader?: ReactNode;\n boxProps?: React.ComponentProps;\n paperProps?: React.ComponentProps;\n tableContainerProps?: React.ComponentProps;\n tableProps?: React.ComponentProps;\n tableHeadProps?: React.ComponentProps;\n tableRowProps?: React.ComponentProps;\n sortable?: Sortable;\n renderCell?: (row: T, columnId: keyof T) => ReactNode;\n hasRowHover?: boolean;\n moreTopMargin?: boolean;\n}\n\nexport interface Sortable {\n direction: SortEnum;\n order: any;\n onRequestSort: (property: keyof T) => void;\n}\n\nexport interface HeadCell {\n columnId: keyof T;\n label: string;\n disableSorting?: boolean;\n}\n\nconst CustomTable = ({\n rowsData,\n headCells,\n emptyDataMessage = 'No hay resultados para esta búsqueda',\n loading,\n loader = 'Cargando...',\n boxProps,\n paperProps,\n tableContainerProps,\n tableProps,\n tableHeadProps,\n tableRowProps,\n sortable,\n renderCell,\n hasRowHover = true,\n moreTopMargin = false,\n}: CustomTableProps) => {\n const classes = useStyles();\n\n const createSortHandler = (columnId: keyof T) => {\n if (sortable && sortable.onRequestSort) {\n sortable.onRequestSort(columnId);\n }\n };\n\n return (\n \n \n \n \n \n \n {headCells.map(({ columnId, label, disableSorting }, index) => (\n \n {!disableSorting && sortable ? (\n createSortHandler(columnId)}\n >\n {label}\n \n ) : (\n label\n )}\n \n ))}\n \n \n \n {loading ? (\n \n {loader}\n \n ) : rowsData.length > 0 ? (\n rowsData.map((row, rowIndex) => (\n \n {headCells.map(({ columnId, label }, cellIndex) => (\n \n {renderCell ? renderCell(row, columnId) : row[columnId]}\n \n ))}\n \n ))\n ) : (\n \n \n {typeof emptyDataMessage === 'string' ? (\n \n ) : (\n emptyDataMessage\n )}\n \n \n )}\n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default CustomTable;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction AdminCrown({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default AdminCrown;\n","import colors from '../../../styles/_variables.module.scss';\n\nfunction Check() {\n return (\n \n \n \n \n );\n}\n\nexport default Check;\n","import colors from '../../../styles/_variables.module.scss';\n\nfunction Resend() {\n return (\n \n \n \n \n );\n}\n\nexport default Resend;\n","import { Button, IconButton, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport EditIcon from '../../assets/EditIcon';\nimport { resendConfirmation, verifyUser } from '../../store/action_creators/auth.actions';\nimport { Status, UserTypeEnum } from '../../store/config/enums';\nimport {\n AuthState,\n Client,\n Collaborator,\n CollaboratorsState,\n EnableCollaboratorRequest,\n RootState,\n} from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { CustomSnackbar } from '../CustomSnackbar';\nimport { CustomSwitch } from '../CustomSwitch';\nimport CustomTable, { HeadCell } from '../CustomTable/CustomTable';\nimport { EmptyMessage } from '../EmptyMessage';\nimport { AdminCrown } from '../Icons/AdminCrown';\nimport { Check } from '../Icons/Check';\nimport Resend from '../Icons/Resend/Resend';\nimport { Loading } from '../Loading';\nimport { ScreenTitle } from '../ScreenTitle';\nimport { StatusPill } from '../StatusPill';\nimport { enableCollaborator, fetchAllUsers } from './../../store/action_creators/collaborators.actions';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n width: '100%',\n marginTop: '1.25rem',\n },\n button: {\n color: styles.slateBlue,\n textDecoration: 'none !important',\n },\n centeredCell: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n '& p': {\n margin: '0 0 0 0.25rem',\n },\n },\n iconButton: {\n padding: '0',\n '&:hover': {\n backgroundColor: 'unset',\n },\n },\n }),\n);\n\nexport interface ClientUsersTableProps {\n selectedClient: Client;\n isForDashboard: boolean;\n}\n\nexport interface ExtraColumns {\n icons?: JSX.Element;\n enabled?: JSX.Element;\n}\n\ntype Column = Collaborator & ExtraColumns;\n\nfunction ClientUsersTable({ selectedClient, isForDashboard }: ClientUsersTableProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const users: CollaboratorsState = useSelector((state: RootState) => state.collaborators);\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const [resendingConfirmation, setResendingConfirmation] = useState(false);\n\n const orderedUsers = users.collaborators?.sort((a: Collaborator, b: Collaborator) => {\n return a.type - b.type;\n });\n\n const slicedUsers = orderedUsers?.slice(0, 3);\n\n const columns: HeadCell[] = [\n { columnId: 'names', label: 'Nombre de usuario' },\n { columnId: 'email', label: 'Email' },\n { columnId: 'type', label: 'Rol' },\n { columnId: 'emailConfirmed', label: 'Estado' },\n { columnId: 'enabled', label: 'Habilitado' },\n { columnId: 'icons', label: 'Acciones' },\n ];\n\n const renderCustomTableCells = (row: Collaborator, columnId: keyof Column) => {\n switch (columnId) {\n case 'names':\n return row.names + ' ' + row.surnames;\n case 'email':\n return row.email;\n case 'type':\n return row.type === UserTypeEnum.OWNER ? (\n
    \n \n

    Administrador

    \n
    \n ) : (\n 'Colaborador'\n );\n case 'emailConfirmed':\n return (\n \n );\n case 'enabled': {\n return (\n row.type !== UserTypeEnum.OWNER && (\n handleEnableCollaborator(row)}\n color=\"primary\"\n name=\"checkedB\"\n inputProps={{ 'aria-label': 'primary checkbox' }}\n />\n )\n );\n }\n case 'icons':\n return (\n
    \n {row.emailConfirmed && (\n updateCollaborator(row)}\n >\n \n \n )}\n {!row.emailConfirmed && (\n <>\n {\n dispatch(verifyUser(row.userId));\n dispatch(fetchAllUsers(selectedClient.id));\n }}\n >\n \n \n {\n setResendingConfirmation(true);\n dispatch(resendConfirmation(row.userId));\n }}\n >\n \n \n \n )}\n
    \n );\n default:\n return row[columnId];\n }\n };\n\n useEffect(() => {\n dispatch(fetchAllUsers(selectedClient.id));\n }, [dispatch, selectedClient]);\n\n const handleEnableCollaborator = (collaborator: Collaborator) => {\n const enableCollaboratorRequest: EnableCollaboratorRequest = {\n userId: collaborator.userId,\n active: !collaborator.active,\n };\n dispatch(enableCollaborator(enableCollaboratorRequest));\n };\n\n const updateCollaborator = (collaborator: Collaborator) => {\n navigate('/user', { state: { collaborator, client: selectedClient } });\n };\n\n const closeSnack = () => {\n if (resendingConfirmation) setResendingConfirmation(false);\n };\n\n const isOpened: boolean =\n resendingConfirmation && (auth.resendConfirmationSuccess || auth.resendConfirmationErrorMessage !== null);\n\n return (\n <>\n {isForDashboard && (\n
    \n \n {selectedClient && (\n navigate('/manage-users', { state: { client: selectedClient } })}\n >\n Ver Todos\n \n )}\n \n
    \n )}\n {users.collaborators === undefined ? (\n \n ) : users.collaborators !== null ? (\n \n ) : (\n \n )}\n \n \n );\n}\n\nexport default ClientUsersTable;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction ArrowForwardOutlined({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n \n );\n}\n\nexport default ArrowForwardOutlined;\n","import { Client, ToggleBillingRequest } from '../store/config/types';\nimport { get, put } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const clientsService = {\n fetchClients,\n toggleClientBilling,\n};\n\nasync function fetchClients(searchTerm?: string): Promise {\n return await get(`${endpoints['clients']}${searchTerm ? `/?filter=${searchTerm}` : ''}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function toggleClientBilling(request: ToggleBillingRequest): Promise {\n return await put(`${endpoints['billing']}/${request.id}`, {\n electronicBillingEnabled: request.enabled,\n })\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { clientsService } from '../../services/clients.service';\nimport {\n ADD_CLIENTS,\n FETCHING_CLIENTS,\n FETCH_CLIENTS_FAILED,\n FetchClientsTypes,\n TOGGLE_CLIENT_BILLING_FAILED,\n TOGGLE_CLIENT_BILLING_SUCCESS,\n TOGGLING_CLIENT_BILLING,\n ToggleClientBillingTypes,\n} from '../config/ActionTypes';\nimport { Client, ToggleBillingRequest } from '../config/types';\n\nexport const fetchClients = (searchTerm?: string) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingClients());\n return clientsService.fetchClients(searchTerm).then(\n (response) => {\n dispatch(addClients(response!));\n },\n (error) => {\n dispatch(clientsFailed(error));\n },\n );\n };\n};\n\nexport const loadingClients = (): FetchClientsTypes => ({\n type: FETCHING_CLIENTS,\n});\n\nexport const addClients = (clients: Client[]): FetchClientsTypes => ({\n type: ADD_CLIENTS,\n clients,\n});\n\nexport const clientsFailed = (error: string): FetchClientsTypes => ({\n type: FETCH_CLIENTS_FAILED,\n error,\n});\n\nexport const toggleBilling = (request: ToggleBillingRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingBilling());\n return clientsService.toggleClientBilling(request).then(\n () => {\n dispatch(toggleBillingSuccess(request));\n },\n (error) => {\n dispatch(toggleBillingError(error));\n },\n );\n };\n};\n\nexport const updatingBilling = (): ToggleClientBillingTypes => ({\n type: TOGGLING_CLIENT_BILLING,\n});\n\nexport const toggleBillingSuccess = (request: ToggleBillingRequest): ToggleClientBillingTypes => ({\n type: TOGGLE_CLIENT_BILLING_SUCCESS,\n request,\n});\n\nexport const toggleBillingError = (error: string): ToggleClientBillingTypes => ({\n type: TOGGLE_CLIENT_BILLING_FAILED,\n error,\n});\n","import { createStyles, makeStyles, Theme, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n plexoCommerceName: {\n marginBottom: '1.25rem',\n },\n }),\n);\n\ninterface PlexoCommerceTextProps {\n plexoCommerceName: string;\n}\n\nfunction PlexoCommerceText({ plexoCommerceName }: PlexoCommerceTextProps) {\n const classes = useStyles();\n\n return (\n \n Este comercio está registrado en Plexo con el nombre: {plexoCommerceName}\n \n );\n}\n\nexport default PlexoCommerceText;\n","import { Button, Divider, Link, Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\nimport { ClientSettings } from '../../components/ClientSettings';\nimport { ClientUsersTable } from '../../components/ClientUsersTable';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport Search from '../../components/FiltersComponent/Search';\nimport { ArrowForwardOutlined } from '../../components/Icons/ArrowForwardOutlined';\nimport { Loading } from '../../components/Loading';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { DeleteDialog } from '../../components/dialogs/DeleteDialog';\nimport { PaymentMethodDialog } from '../../components/dialogs/PaymentMethodDialog';\nimport { fetchClients, toggleBilling } from '../../store/action_creators/clients.actions';\nimport { deletePaymentMethod, fetchPaymentMethods } from '../../store/action_creators/paymentMethods.actions';\nimport { Status } from '../../store/config/enums';\nimport { Client, PaymentMethod, RootState } from '../../store/config/types';\nimport colors from '../../styles/_variables.module.scss';\nimport PlexoCommerceText from './PlexoCommerceText';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n padding: '2rem 0',\n maxWidth: '60rem',\n margin: '0 auto',\n },\n divider: {\n margin: '0 0.5rem',\n alignSelf: 'center',\n height: '1rem',\n width: '2px',\n backgroundColor: colors.slateBlue,\n },\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n width: '100%',\n marginBottom: '0.5rem',\n },\n button: {\n color: colors.slateBlue,\n },\n paperRoot: {\n margin: '1rem 0',\n padding: '1rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: colors.slateBlue,\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n '& svg': {\n '& rect': {\n fill: theme.palette.action.hover,\n },\n },\n },\n },\n clientNames: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n }),\n);\n\ntype PaymentMethodWithIsLast = PaymentMethod & { isLast: boolean };\n\nfunction ManageClients() {\n const classes = useStyles();\n const dispatch = useDispatch();\n const location = useLocation();\n const { clients, paymentMethods } = useSelector((state: RootState) => state);\n const client = location?.state?.client || null;\n const [selectedClient, setSelectedClient] = useState(client);\n const [open, setOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(null);\n const [deletingPaymentMethod, setDeletingPaymentMethod] = useState(false);\n const [paymentMethodToDelete, setPaymentMethodToDelete] = useState(null);\n const [searchTerm, setSearchTerm] = useState('');\n const [snackbarOpen, setSnackbarOpen] = useState(false);\n\n useEffect(() => {\n selectedClient?.id && dispatch(fetchPaymentMethods(+selectedClient?.id));\n }, [selectedClient?.id, dispatch]);\n\n useEffect(() => {\n if (\n paymentMethods.deletePaymentMethodSuccess ||\n paymentMethods.deletePaymentMethodErrorMessage !== null\n ) {\n setDeletingPaymentMethod(false);\n setDeleteOpen(false);\n setSnackbarOpen(true);\n }\n }, [paymentMethods.deletePaymentMethodSuccess, paymentMethods.deletePaymentMethodErrorMessage]);\n\n const showClientDetails = (client: Client) => {\n setSelectedClient(client);\n };\n\n const handleBillingChange = (event: React.ChangeEvent) => {\n dispatch(toggleBilling({ id: selectedClient!.id, enabled: !selectedClient!.billingEnabled }));\n };\n\n const createPaymentMethod = () => {\n setSelectedPaymentMethod(null);\n setOpen(true);\n };\n\n const updatePaymentMethod = (paymentMethod: PaymentMethod) => {\n setSelectedPaymentMethod(paymentMethod);\n setOpen(true);\n };\n\n const beginDeletePaymentMethod = (paymentMethod: PaymentMethod, isLast: boolean) => {\n setPaymentMethodToDelete({ ...paymentMethod, isLast });\n setDeleteOpen(true);\n };\n\n const confirmDeletePaymentMethod = () => {\n setDeletingPaymentMethod(true);\n\n if (paymentMethodToDelete && selectedClient?.id)\n dispatch(\n deletePaymentMethod(\n selectedClient?.id,\n paymentMethodToDelete?.issuerId,\n paymentMethodToDelete.isLast,\n ),\n );\n };\n\n const closeSnack = () => {\n setSnackbarOpen(false);\n };\n\n const triggerSearch = () => {\n if (searchTerm.length > 3 || searchTerm.length === 0) {\n dispatch(fetchClients(searchTerm));\n }\n };\n\n useEffect(() => {\n if (!clients.loadingClients && clients.clients === null && clients.loadingClientsErrorMessage === null) {\n dispatch(fetchClients(searchTerm));\n }\n });\n\n return (\n
    \n
    \n \n {selectedClient && (\n setSelectedClient(null)}>\n \n \n )}\n \n
    \n {selectedClient === null && (\n <>\n \n \n )}\n\n {clients.loadingClients ? (\n \n ) : (\n selectedClient === null &&\n clients.clients &&\n clients.clients.map((client) => {\n return (\n showClientDetails(client)}\n >\n
    \n {client.prettyName}\n \n {client.plexoCommerceName}\n
    \n \n \n );\n })\n )}\n {selectedClient !== null && (\n <>\n \n \n \n \n )}\n \n \n \n
    \n );\n}\n\nexport default ManageClients;\n","import { Button, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { ClientUsersTable } from '../../components/ClientUsersTable';\nimport Search from '../../components/FiltersComponent/Search';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { fetchAllUsers } from '../../store/action_creators/collaborators.actions';\nimport styles from '../../styles/_variables.module.scss';\nimport PlexoCommerceText from '../ManageClients/PlexoCommerceText';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n padding: '2rem 0',\n maxWidth: '60rem',\n margin: '0 auto',\n },\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n width: '100%',\n marginBottom: '0.5rem',\n },\n button: {\n color: styles.slateBlue,\n },\n search: {\n margin: '1rem 0',\n },\n centeredCell: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n '& p': {\n margin: '0 0 0 0.25rem',\n },\n },\n iconButton: {\n padding: '0.5rem 0',\n '&:hover': {\n backgroundColor: 'unset',\n },\n },\n }),\n);\n\nfunction ManageClientUsers() {\n const classes = useStyles();\n const navigate = useNavigate();\n const location = useLocation();\n const dispatch = useDispatch();\n const { client } = location.state;\n const [searchTerm, setSearchTerm] = useState('');\n\n const triggerSearch = () => {\n if (searchTerm.length > 3 || searchTerm.length === 0) {\n dispatch(fetchAllUsers(client.id, searchTerm));\n }\n };\n\n return (\n
    \n
    \n \n navigate('/manage-clients', { state: { client: client } })}\n >\n Volver\n \n \n
    \n \n
    \n \n
    \n \n
    \n );\n}\n\nexport default ManageClientUsers;\n","import { Button, useMediaQuery } from '@material-ui/core';\nimport { OnTheFlyPaymentValues } from '../../screens/OnTheFly/OnTheFlyPayments';\nimport { theme } from '../../styles/theme';\n\ninterface OnTheFlyPaymentsActionsProps {\n values: OnTheFlyPaymentValues;\n handleOnClickViewQR: (values: OnTheFlyPaymentValues) => void;\n}\n\nfunction OnTheFlyPaymentsActions({ values, handleOnClickViewQR }: OnTheFlyPaymentsActionsProps) {\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n <>\n handleOnClickViewQR(values)}\n fullWidth={isMobile}\n >\n Generar QR\n \n \n \n );\n}\n\nexport default OnTheFlyPaymentsActions;\n","import { Hidden, Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { OnTheFlyPaymentsActions } from '../../components/OnTheFlyPayments';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { QrCodeDialog } from '../../components/dialogs/QRCodeDialog';\nimport { FormSelectField } from '../../components/forms/FormSelectField';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport schemas from '../../data/schemas';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { Currency, Status } from '../../store/config/enums';\nimport { Amount, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n maxWidth: '37.5rem',\n margin: '0 auto',\n padding: '1.5rem 1.6875rem 2.1875rem',\n [theme.breakpoints.down('sm')]: {\n maxWidth: '100%',\n padding: '1rem',\n flexDirection: 'reverese-column',\n },\n },\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n marginBottom: '2rem',\n '& button': {\n [theme.breakpoints.down('sm')]: {\n padding: '0.4375rem 0.75rem',\n },\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: '1.5rem',\n },\n },\n formControl: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: theme.spacing(1),\n gap: '1rem',\n },\n descriptiveText: {\n fontSize: '0.875rem',\n color: styles.slateBlue,\n },\n buttonsContainer: {\n display: 'flex',\n gap: '1rem',\n marginTop: '1.5rem',\n },\n }),\n);\n\nexport interface OnTheFlyPaymentValues {\n currency: number;\n amount: string;\n}\n\nfunction OnTheFlyPayments() {\n const classes = useStyles();\n const authState = useSelector((state: RootState) => state.auth);\n const businessName = authState?.account?.business?.urlName ?? '';\n\n const [openQrDialog, setOpeQrDialog] = useState(false);\n const [url, setUrl] = useState(`${window.location.origin}/${businessName}`);\n const [linkCreated, setLinkCreated] = useState(false);\n const [amount, setAmount] = useState();\n const currencies = currencyHelper.mapCurrency(Currency, (i: Currency) => {\n return {\n id: i,\n value: currencyHelper.getCurrencyToken(i),\n };\n });\n\n const submit = (values: OnTheFlyPaymentValues, helpers: FormikHelpers) => {\n const amount = values.amount;\n const currency = currencyHelper.getCurrencyName(values.currency, true);\n const path = `${window.location.origin}/${businessName}/${currency}${!!amount ? `/${amount}` : ''}`;\n setLinkCreated(true);\n navigator.clipboard.writeText(path);\n };\n\n const handleOnClickViewQR = (values: OnTheFlyPaymentValues) => {\n const amount = values.amount;\n const currency = currencyHelper.getCurrencyName(values.currency, true);\n const path = `${window.location.origin}/${businessName}/${currency}${!!amount ? `/${amount}` : ''}`;\n setAmount({ value: +amount, currency: values.currency });\n openDialogAndSetUrl(true, path);\n };\n\n const closeSnack = () => {\n setLinkCreated(false);\n };\n\n const openDialogAndSetUrl = (setOpen: boolean, newUrl: string) => {\n setUrl(newUrl ?? url);\n setOpeQrDialog(setOpen);\n };\n\n return (\n
    \n \n {({ values }) => (\n
    \n
    \n \n \n \n \n \n
    \n \n
    \n \n Para usar tu pago rápido, simplemente compártelo o muestra el QR a tu cliente. Puedes\n especificar el importe ahora o dejar que quien realice el pago lo indique.\n \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n )}\n \n \n \n
    \n );\n}\n\nexport default OnTheFlyPayments;\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { PaymentNotificationTypeEnum } from '../store/config/enums';\nimport { NotificationsState, Payment, RootState } from '../store/config/types';\n\nconst useNotificationId = () => {\n const payment: Payment | null = useSelector((state: RootState) => state.payments.selectedPayment);\n const notifications: NotificationsState = useSelector((state: RootState) => state.notifications);\n\n const notificationId = useMemo(() => {\n if (!payment) {\n return null;\n }\n\n let notificationIdToResend = payment.notifications.find(\n (notification) => notification.notificationType === PaymentNotificationTypeEnum.PAYMENT_CANCELLATION,\n )?.id;\n\n if (!notificationIdToResend) {\n notificationIdToResend = payment.notifications.find(\n (notification) => notification.notificationType === PaymentNotificationTypeEnum.PAYMENT_OK,\n )?.id;\n }\n\n if (\n notifications.notification &&\n payment.id === Number(notifications.notification?.notification.paymentId) &&\n !notificationIdToResend\n ) {\n notificationIdToResend = notifications.notification.notification.id;\n }\n\n return notificationIdToResend;\n }, [notifications.notification, payment]);\n\n return notificationId;\n};\n\nexport default useNotificationId;\n","import {\n Button,\n CircularProgress,\n Divider,\n Theme,\n createStyles,\n makeStyles,\n useMediaQuery,\n} from '@material-ui/core';\nimport { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport useNotificationId from '../../hooks/useNotificationId';\nimport { getPayment } from '../../store/action_creators/payments.actions';\nimport { PaymentStatusEnum, Status } from '../../store/config/enums';\nimport { AuthState, NotificationsState, Payment, PaymentsState, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { theme } from '../../styles/theme';\nimport { CustomSnackbar } from '../CustomSnackbar';\nimport { Loading } from '../Loading';\nimport { DeleteDialog } from '../dialogs/DeleteDialog';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n divider: {\n margin: '0 0 0 0.8rem',\n backgroundColor: styles.slateBlue,\n opacity: '0.2',\n },\n buttonsContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n minWidth: 'max-content',\n [theme.breakpoints.down('sm')]: {\n justifyContent: 'space-between',\n gap: '0.75rem',\n width: '100%',\n margin: '1.5rem 0 0.5rem 0',\n },\n },\n button: {\n color: styles.textButtonSecondary,\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n [theme.breakpoints.down('xs')]: {\n padding: '0.5rem 0',\n },\n },\n buttonPrimary: {\n marginLeft: '0.8rem',\n '& span': {\n '& a': {\n color: styles.white,\n },\n },\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n },\n deleteButton: {\n minWidth: '6rem',\n backgroundColor: theme.palette.error.main,\n border: `1px solid ${theme.palette.error.main}`,\n color: styles.white,\n marginLeft: '0.75rem',\n '&:hover': {\n backgroundColor: styles.white,\n color: theme.palette.error.main,\n [theme.breakpoints.down('sm')]: {\n backgroundColor: theme.palette.error.main,\n border: `1px solid ${theme.palette.error.main}`,\n color: styles.white,\n },\n },\n '&.Mui-disabled': {\n backgroundColor: theme.palette.error.main,\n border: `1px solid ${theme.palette.error.main}`,\n color: styles.white,\n opacity: 0.5,\n minWidth: '9rem',\n height: '100%',\n [theme.breakpoints.down('sm')]: {\n backgroundColor: `${theme.palette.error.main} !important`,\n opacity: 0.5,\n },\n },\n },\n resendButton: {\n minWidth: '11.25rem',\n color: styles.white,\n marginLeft: '0.75rem',\n '&.Mui-disabled': {\n height: '100%',\n },\n },\n buttonMobile: {\n width: '100%',\n color: styles.white,\n marginLeft: 0,\n },\n }),\n);\n\ninterface PaymentDetailActionsProps {\n cancelPayment: (plexoReferenceId: string) => void;\n sendNotification: (paymentId: number) => void;\n resendNotification: (notificationId: string) => void;\n}\n\nfunction PaymentDetailActions({\n cancelPayment,\n sendNotification,\n resendNotification,\n}: PaymentDetailActionsProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const paymentState: PaymentsState = useSelector((state: RootState) => state.payments);\n const payment: Payment | null = paymentState.selectedPayment;\n const notificationId = useNotificationId();\n\n const notifications: NotificationsState = useSelector((state: RootState) => state.notifications);\n const [deletingPayment, setDeletingPayment] = useState(false);\n const [sendingNotification, setSendingNotification] = useState(false);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [lastCompletedAction, setLastCompletedAction] = useState<'resend' | 'cancel'>();\n\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const businessUrlForSystemNotifications = auth.account?.business?.urlForSystemNotifications;\n const sendingOrResendingNotification =\n notifications.resendingNotification || notifications.sendingNotification;\n const sendNotificationFinished =\n notifications.sendNotificationSuccess || notifications.sendNotificationErrorMessage !== null;\n const resendNotificationFinished =\n notifications.resendNotificationSuccess || notifications.resendNotificationErrorMessage !== null;\n const sendOrResendNotificationSucces =\n notifications.resendNotificationSuccess || notifications.sendNotificationSuccess;\n const cancelPaymentFinished =\n paymentState.cancelPaymentSuccess || paymentState.cancelPaymentErrorMessage !== null;\n const cancelPaymentSucces = paymentState.cancelPaymentSuccess;\n const allSuccess = sendOrResendNotificationSucces || cancelPaymentSucces;\n\n if (!payment) {\n return ;\n }\n\n const cancelTransaction = () => {\n setDeletingPayment(true);\n cancelPayment(payment.plexoReferenceId);\n setLastCompletedAction('cancel');\n };\n\n const closeSnack = () => {\n setDeletingPayment(false);\n setSendingNotification(false);\n\n if (paymentState.cancelPaymentSuccess) {\n dispatch(getPayment(payment.id.toString(), auth.account?.business?.id ?? undefined));\n setDeleteDialogOpen(false);\n }\n };\n\n const submitResendNotification = () => {\n setSendingNotification(true);\n setLastCompletedAction('resend');\n\n if (notificationId) {\n resendNotification(notificationId);\n } else {\n sendNotification(payment.id);\n }\n };\n\n const snackbarMessage = () => {\n switch (lastCompletedAction) {\n case 'cancel':\n return cancelPaymentSucces ? 'Pago cancelado correctamente' : 'Error al cancelar el pago';\n case 'resend':\n return sendOrResendNotificationSucces\n ? 'Notificación reenviada correctamente'\n : 'Error al reenviar notificación';\n default:\n return 'Ocurrió un error';\n }\n };\n\n return (\n
    \n {!isMobile && (\n <>\n navigate(-1)}\n className={classes.button}\n >\n Volver\n \n \n )}\n {payment.cancellable && payment.status !== PaymentStatusEnum.CANCELLED && (\n <>\n {!isMobile && }\n setDeleteDialogOpen(true)}\n className={`${classes.deleteButton} ${!isMobile ? classes.deleteButton : classes.buttonMobile}`}\n disabled={deletingPayment}\n >\n {deletingPayment ? : 'Cancelar Pago'}\n \n \n )}\n {businessUrlForSystemNotifications && (\n <>\n {!payment.cancellable && !isMobile && (\n \n )}\n \n {sendingOrResendingNotification ? (\n \n ) : (\n 'Reenviar Notificación'\n )}\n \n \n )}\n \n \n
    \n );\n}\n\nexport default PaymentDetailActions;\n","function BankIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default BankIcon;\n","import BankIcon from '../assets/BankIcon';\n\nconst bankLogoMapping: Record = {\n AMEX: '/bank-logos/amex.svg',\n ANDA: '/bank-logos/anda.svg',\n BBVA: '/bank-logos/bbva.svg',\n BROU: '/bank-logos/brou.svg',\n CABAL: '/bank-logos/cabal.svg',\n CREDITEL: '/bank-logos/creditel.svg',\n FUCAC: '/bank-logos/fucac.svg',\n HSBC: '/bank-logos/hsbc.svg',\n ITAU: '/bank-logos/itau.svg',\n MIDINERO: '/bank-logos/md-inero.svg',\n OCA: '/bank-logos/oca.svg',\n PASSCARD: '/bank-logos/pass-card.svg',\n PIX: '/bank-logos/pix.svg',\n PREX: '/bank-logos/prex.svg',\n SANTANDER: '/bank-logos/santander.svg',\n SCOTIABANK: '/bank-logos/scotiabank.svg',\n SISTARBANC: '/bank-logos/sistarbanc.svg',\n TARJETAD: '/bank-logos/tarjeta-d.svg',\n};\n\nconst capitalizeIssuerName = (issuer: string): string => {\n const words = issuer\n .split(' ')\n .map((word) => (word.match(/^(SA|S\\.A\\.)$/i) ? word.toUpperCase() : word.toLowerCase()));\n\n return words\n .map((word) => (word === 'SA' || word === 'S.A.' ? word : word.charAt(0).toUpperCase() + word.slice(1)))\n .join(' ');\n};\n\nconst normalizeIssuer = (issuer: string): string => {\n const trimmedIssuer = issuer.trim().toUpperCase();\n\n switch (trimmedIssuer) {\n case 'BANCO REPUBLICA ORIENTAL DEL URUGUAY':\n case 'BROU':\n return 'BROU';\n case 'FUCAC VERDE COOPERATIVA DE AHORRO Y CREDITO':\n return 'Fucac';\n case 'UNKNOWN':\n default:\n return trimmedIssuer;\n }\n};\n\nconst getBankLogoAndImage = (issuer: string | null): JSX.Element => {\n if (!issuer || issuer.toUpperCase() === 'UNKNOWN') {\n return (\n <>\n \n Banco no reportado\n \n );\n }\n\n const normalizedIssuer = normalizeIssuer(issuer);\n const logoSrc = bankLogoMapping[normalizedIssuer];\n const capitalizedIssuer = {capitalizeIssuerName(issuer)};\n\n if (logoSrc) {\n return (\n <>\n {issuer}\n {capitalizedIssuer}\n \n );\n }\n\n return (\n <>\n \n {capitalizedIssuer}\n \n );\n};\n\nexport const issuerCardHelper = {\n bankLogoMapping,\n getBankLogoAndImage,\n};\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\nimport { ReactElement } from 'react';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n flex: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyItems: 'space-between',\n justifyContent: 'space-between',\n marginBottom: '0.875rem',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n },\n '& :nth-child(2)': {\n display: 'flex',\n alignItems: 'center',\n textAlign: 'right',\n '& span': {\n display: 'flex',\n alignItems: 'center',\n },\n '& svg': {\n marginRight: '0.3125rem',\n height: '1.5rem',\n width: 'fit-content',\n },\n },\n '&:last-child': {\n display: 'flex',\n alignItems: 'start',\n textAlign: 'right',\n },\n [theme.breakpoints.down('sm')]: {\n alignItems: 'flex-start',\n gap: '0.3rem',\n '& :nth-child(2)': {\n textAlign: 'left',\n },\n },\n },\n state: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n justifyItems: 'space-between',\n justifyContent: 'space-between',\n marginBottom: '0.875rem',\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'row',\n },\n },\n rowTitle: {\n color: styles.slateBlue,\n fontSize: '0.875rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n },\n rowDetail: {\n color: styles.blackText,\n fontSize: '0.875rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n margin: 0,\n },\n }),\n);\n\ninterface DetailRowProps {\n title: string | ReactElement;\n detail?: string | ReactElement | null;\n isState?: boolean;\n rowTitleClass?: string;\n}\n\nfunction DetailRow({ title, detail, isState, rowTitleClass }: DetailRowProps) {\n const classes = useStyles();\n return (\n
    \n

    {title}

    \n

    {detail ? detail : '-'}

    \n
    \n );\n}\n\nexport default DetailRow;\n","function HelpIcon() {\n return (\n \n \n \n );\n}\n\nexport default HelpIcon;\n","import { createStyles, makeStyles, Theme, Tooltip, useMediaQuery, useTheme } from '@material-ui/core';\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\nimport { MutableRefObject, useEffect, useRef, useState } from 'react';\nimport { Payment } from '../../store/config/types';\nimport styles from '.././../styles/_variables.module.scss';\nimport HelpIcon from '../Icons/HelpIcon';\nimport DetailRow from './DetailRow';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n infoIcon: {\n color: styles.slateBlue,\n width: '1rem',\n height: '1rem',\n },\n linkExternalId: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '0.25rem',\n },\n }),\n);\n\ninterface LinkExternalIdRowProps {\n payment: Payment;\n}\n\nfunction LinkExternalIdRow({ payment }: LinkExternalIdRowProps) {\n const classes = useStyles();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const tooltipRef: MutableRefObject = useRef(null);\n\n const handleOutsideClick = (event: MouseEvent) => {\n if (tooltipOpen && tooltipRef.current && !tooltipRef.current.contains(event.target as Node)) {\n setTooltipOpen(false);\n }\n };\n\n useEffect(() => {\n if (isMobile) {\n document.addEventListener('mousedown', handleOutsideClick);\n return () => {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }\n // eslint-disable-next-line\n }, [isMobile, tooltipOpen]);\n\n const handleTooltipToggle = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n if (isMobile) {\n setTooltipOpen(!tooltipOpen);\n }\n };\n\n const popperStyles: CSSProperties = {\n pointerEvents: tooltipOpen ? 'auto' : 'none',\n width: '8.75rem',\n };\n\n return (\n \n Link external id\n setTooltipOpen(false)}\n key={isMobile ? 'mobile' : 'desktop'}\n PopperProps={{ style: popperStyles }}\n >\n (tooltipRef.current = ref) : undefined}\n className={classes.infoIcon}\n >\n \n \n \n \n }\n detail={payment?.linkExternalId}\n />\n );\n}\n\nexport default LinkExternalIdRow;\n","import { currencyHelper } from '../../helpers/currencyHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { PaymentStatusEnum } from '../../store/config/enums';\nimport { Amount } from '../../store/config/types';\nimport { StatusPill } from '../StatusPill';\nimport DetailRow from './DetailRow';\n\ninterface SplitPaymentDetailProps {\n amount: Amount;\n taxedAmount: Amount;\n status: PaymentStatusEnum;\n name: string;\n rightWidthClass: string;\n amountDetailClass: string;\n totalAmountClass: string;\n titleClass: string;\n order: number;\n}\n\nfunction SplitPaymentDetail({\n amount,\n taxedAmount,\n status,\n name,\n rightWidthClass,\n totalAmountClass,\n amountDetailClass,\n titleClass,\n order,\n}: SplitPaymentDetailProps) {\n const splitPaymentCurrency = currencyHelper.getCurrencyToken(amount.currency);\n const splitPaymentTaxedAmountWithDots = numberHelper.getNumberWithDots(taxedAmount.value);\n const splitPaymentIVA = numberHelper.getNumberWithDots(amount.value - taxedAmount.value);\n const splitPaymentAmountWithDots = numberHelper.getNumberWithDots(amount.value);\n\n return (\n <>\n
    {`Destino ${order}`}
    \n \n }\n isState\n />\n \n \n

    {`${splitPaymentCurrency} ${splitPaymentAmountWithDots}`}

    \n {`${splitPaymentCurrency} ${splitPaymentTaxedAmountWithDots} + ${splitPaymentCurrency} ${splitPaymentIVA} (IVA)`}

    \n \n }\n />\n \n );\n}\n\nexport default SplitPaymentDetail;\n","import { Divider, Paper, Theme, createStyles, makeStyles, useMediaQuery } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { inclusionLawHelper } from '../../helpers/inclusionLawHelper';\nimport { issuerCardHelper } from '../../helpers/issuerCardHelpers';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { paymentTypeHelper } from '../../helpers/paymentTypeHelper';\nimport { InclusionLawEnum, LinkTypeEnum, PaymentStatusEnum, UserTypeEnum } from '../../store/config/enums';\nimport { AuthState, Payment, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { theme } from '../../styles/theme';\nimport { Loading } from '../Loading';\nimport { StatusPill } from '../StatusPill';\nimport DetailRow from './DetailRow';\nimport LinkExternalIdRow from './LinkExternalIdRow';\nimport SplitPaymentDetail from './SplitPaymentDetail';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paperRoot: {\n margin: 0,\n padding: '1.875rem',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'start',\n justifyContent: 'space-between',\n color: styles.slateBlue,\n },\n failedText: {\n color: styles.textButtonSecondary,\n },\n rightWidth: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-end',\n justifyContent: 'flex-end',\n [theme.breakpoints.down('sm')]: {\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n },\n },\n divider: {\n marginBottom: '1rem',\n height: '1px',\n width: '100%',\n },\n splitPaymentTitle: {\n color: styles.textButtonSecondary,\n fontSize: '0.875rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n marginBottom: '0.875rem',\n },\n amount: {\n display: 'flex',\n alignItems: 'baseline',\n flexDirection: 'row',\n alignSelf: 'flex-end',\n '& p': {\n '&:first-child': {\n marginRight: '0.3125rem',\n },\n },\n '& *': {\n fontWeight: Number(styles.semiBoldTextWeight),\n color: styles.secondaryMain,\n margin: 0,\n fontSize: '1.0625rem',\n },\n [theme.breakpoints.down('sm')]: {\n alignSelf: 'flex-start',\n '& h5': {\n fontSize: '1rem',\n },\n },\n },\n amountDetail: {\n textAlign: 'right',\n margin: 0,\n color: styles.darkBlue,\n fontSize: '0.875rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n [theme.breakpoints.down('sm')]: {\n fontSize: '0.85rem',\n },\n },\n amountTitle: {\n alignSelf: 'flex-start',\n },\n splitAmountDetail: {\n fontSize: '0.75rem',\n color: styles.icoColor,\n textAlign: 'right',\n margin: 0,\n },\n issuerImageContainer: {\n display: 'flex',\n alignItems: 'center',\n '& img': {\n height: '1rem',\n },\n },\n paymentMethod: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n [theme.breakpoints.down('sm')]: {\n alignItems: 'start',\n flexDirection: 'column',\n },\n '& p': {\n margin: 0,\n },\n '& img': {\n width: 'auto',\n height: '1.5rem',\n },\n },\n cardIssuer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '0.15rem',\n '& span': {\n margin: '0 0.5rem',\n },\n },\n }),\n);\n\nfunction PaymentDetailContent() {\n const classes = useStyles();\n const auth: AuthState = useSelector((state: RootState) => state.auth);\n const payment: Payment | null = useSelector((state: RootState) => state.payments.selectedPayment);\n const isMobile = useMediaQuery(theme.breakpoints.down('xs'));\n const failedPayment =\n payment?.status !== PaymentStatusEnum.APPROVED && payment?.status !== PaymentStatusEnum.CANCELLED;\n\n if (!payment) {\n return ;\n }\n\n const hasBillingEnabled =\n (auth.account !== null && auth.account.business !== null && auth.account.business.billingEnabled) ||\n auth.account?.type === UserTypeEnum.SUPERADMIN;\n const paymentCurrency = currencyHelper.getCurrencyToken(payment.amount.currency);\n const paymentAmount = payment.amount.value + (payment.splitPayment?.amount.value || 0);\n const formattedPaymentAmount = numberHelper.getNumberWithDots(paymentAmount);\n const totalTaxedAmount = payment.taxedAmount.value + (payment.splitPayment?.taxedAmount.value || 0);\n const formattedTaxedAmount = numberHelper.getNumberWithDots(totalTaxedAmount);\n const paymentIVA = numberHelper.getIVA(paymentAmount, {\n taxedAmount: totalTaxedAmount,\n });\n\n return (\n \n \n }\n isState\n />\n {failedPayment && (\n {payment.plexoResultText ?? 'Motivo no especificado'}}\n />\n )}\n {isMobile && }\n \n \n \n {isMobile && }\n \n {isMobile && }\n \n {linkTypeEnumHelper.getIcon(payment.linkType)}\n {linkTypeEnumHelper.toNiceString(payment.linkType)}\n \n }\n />\n \n \n {payment.splitPayment && (\n <>\n \n \n \n \n \n )}\n \n {payment.inclusionLaw !== InclusionLawEnum.NONE && (\n \n )}\n \n
    \n

    {paymentCurrency}

    \n

    {formattedPaymentAmount}

    \n
    \n {`${paymentCurrency} ${formattedTaxedAmount} + ${paymentCurrency} ${paymentIVA} (IVA)`}

    \n \n }\n />\n \n {payment.linkType !== LinkTypeEnum.ONTHEFLY && (\n \n )}\n \n \n \n {isMobile && }\n \n {isMobile && }\n \n {isMobile && }\n \n {isMobile && }\n \n
    \n {issuerCardHelper.getBankLogoAndImage(payment.cardIssuer)}\n
    \n {!isMobile && }\n
    \n {payment.issuerName}\n

    •• {payment.maskedPan.slice(-4)}

    \n
    \n \n }\n />\n {payment.linkType !== LinkTypeEnum.ONTHEFLY && (\n <>\n {isMobile && }\n \n {isMobile && }\n \n \n )}\n {hasBillingEnabled && (\n <>\n \n \n \n )}\n
    \n );\n}\n\nexport default PaymentDetailContent;\n","import { Button, Theme, createStyles, makeStyles, useMediaQuery } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport { theme } from '../../styles/theme';\nimport { ScreenTitle } from '../ScreenTitle';\nimport PaymentDetailActions from './PaymentDetailActions';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n marginBottom: '2rem',\n '& button': {\n [theme.breakpoints.down('sm')]: {\n padding: '0.4375rem 0.75rem',\n },\n },\n [theme.breakpoints.down('sm')]: {\n marginBottom: '1.5rem',\n },\n },\n }),\n);\n\ninterface PaymentDetailHeaderProps {\n cancelPayment: (plexoReferenceId: string) => void;\n sendNotification: (paymentId: number) => void;\n resendNotification: (notificationId: string) => void;\n}\n\nfunction PaymentDetailHeader({\n cancelPayment,\n sendNotification,\n resendNotification,\n}: PaymentDetailHeaderProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n return (\n
    \n \n {!isMobile && (\n \n )}\n \n {isMobile && (\n \n )}\n
    \n );\n}\n\nexport default PaymentDetailHeader;\n","import { NotificationsResponse } from '../store/config/types';\nimport { post } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const notificationsService = {\n resendNotification,\n sendNotification,\n};\n\nasync function sendNotification(paymentId: number): Promise {\n return await post(`${endpoints['notifications']}/payment/${paymentId}`, {})\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function resendNotification(notificationId: string): Promise {\n return await post(`${endpoints['notifications']}/resend/${notificationId}`, {})\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { notificationsService } from '../../services/notifications.service';\nimport {\n RESENDING_NOTIFICATION,\n RESEND_NOTIFICATION_ERROR,\n RESEND_NOTIFICATION_SUCCESS,\n ResendNotificationActionTypes,\n SENDING_NOTIFICATION,\n SEND_NOTIFICATION_ERROR,\n SEND_NOTIFICATION_SUCCESS,\n SendNotificationActionTypes,\n} from '../config/ActionTypes';\nimport { NotificationsResponse } from '../config/types';\n\nexport const sendNotification = (paymentId: number) => (dispatch: Dispatch) => {\n dispatch(sendingNotification());\n\n return notificationsService.sendNotification(paymentId).then(\n (response) => {\n dispatch(sendNotificationSuccess(response!));\n },\n (error) => {\n dispatch(sendNotificationError(error));\n },\n );\n};\n\nconst sendingNotification = (): SendNotificationActionTypes => ({\n type: SENDING_NOTIFICATION,\n});\n\nconst sendNotificationSuccess = (\n notificationsRespone: NotificationsResponse,\n): SendNotificationActionTypes => ({\n type: SEND_NOTIFICATION_SUCCESS,\n notification: notificationsRespone,\n});\n\nconst sendNotificationError = (error: string): SendNotificationActionTypes => ({\n type: SEND_NOTIFICATION_ERROR,\n error,\n});\n\nexport const resendNotification =\n (notificationId: string) => (dispatch: Dispatch) => {\n dispatch(resendingNotification(notificationId));\n\n return notificationsService.resendNotification(notificationId).then(\n (response) => {\n dispatch(resendNotificationSuccess());\n },\n (error) => {\n dispatch(resendNotificationError(error));\n },\n );\n };\n\nconst resendingNotification = (notificationId: string): ResendNotificationActionTypes => ({\n type: RESENDING_NOTIFICATION,\n notificationId,\n});\n\nconst resendNotificationSuccess = (): ResendNotificationActionTypes => ({\n type: RESEND_NOTIFICATION_SUCCESS,\n});\n\nconst resendNotificationError = (error: string): ResendNotificationActionTypes => ({\n type: RESEND_NOTIFICATION_ERROR,\n error,\n});\n","import { useMediaQuery } from '@material-ui/core';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router-dom';\nimport { Loading } from '../../components/Loading';\nimport PaymentDetailActions from '../../components/PaymentDetail/PaymentDetailActions';\nimport PaymentDetailContent from '../../components/PaymentDetail/PaymentDetailContent';\nimport PaymentDetailHeader from '../../components/PaymentDetail/PaymentDetailHeader';\nimport { resendNotification, sendNotification } from '../../store/action_creators/notifications.actions';\nimport { cancelPayment, getPayment } from '../../store/action_creators/payments.actions';\nimport { RootState } from '../../store/config/types';\nimport { theme } from '../../styles/theme';\n\nfunction PaymentDetail() {\n const dispatch = useDispatch();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const params = useParams();\n const paymentId = params.paymentId;\n const paymentsState = useSelector((state: RootState) => state.payments);\n const businessId = useSelector((state: RootState) => state.auth.account?.business?.id);\n const payment = paymentsState.selectedPayment;\n\n const cancelPaymentForBusiness = (plexoReferenceId: string) => {\n if (payment) dispatch(cancelPayment(plexoReferenceId, payment.businessId));\n };\n\n const handleSendNotification = (paymentId: number) => {\n dispatch(sendNotification(paymentId));\n };\n\n const handleResendNotification = (notificationId: string) => {\n dispatch(resendNotification(notificationId));\n };\n\n useEffect(() => {\n if (paymentId) dispatch(getPayment(paymentId, businessId ?? undefined));\n }, [businessId, dispatch, paymentId]);\n\n if (paymentsState.gettingPayment) return ;\n\n return (\n <>\n {payment && (\n
    \n \n \n {isMobile && (\n \n )}\n
    \n )}\n \n );\n}\n\nexport default PaymentDetail;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction ArrowUp({ color, className }: IconProps) {\n color = color ?? colors.white;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default ArrowUp;\n","import { Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { ArrowUp } from '../Icons/ArrowUp';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n scrollButton: {\n position: 'fixed',\n bottom: '1rem',\n right: '1rem',\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n width: '2.375rem',\n height: '2.375rem',\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n zIndex: 1000,\n },\n hidden: {\n display: 'none',\n },\n }),\n);\n\nfunction ScrollTopButton() {\n const classes = useStyles();\n const [showButton, setShowButton] = useState(false);\n\n useEffect(() => {\n const handleScroll = () => {\n if (window.scrollY > 200) {\n setShowButton(true);\n } else {\n setShowButton(false);\n }\n };\n\n window.addEventListener('scroll', handleScroll);\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n const handleButtonClick = () => {\n window.scrollTo({ top: 0, behavior: 'smooth' });\n };\n\n return (\n \n \n \n );\n}\n\nexport default ScrollTopButton;\n","import { Divider, Paper, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { useTheme } from '@material-ui/core/styles';\nimport styles from '../../styles/_variables.module.scss';\nimport { numberHelper } from './../../helpers/numberHelper';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n [theme.breakpoints.up('sm')]: {\n display: 'flex',\n },\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '0.8125rem 1.5625rem',\n border: 'none',\n boxShadow: styles.boxShadow,\n },\n flexRowDescription: {\n [theme.breakpoints.up('sm')]: {\n justifyContent: 'space-between',\n },\n display: 'flex',\n '& *': {\n paddingRight: '5px',\n },\n },\n flexRowAmounts: {\n justifyContent: 'space-between',\n display: 'flex',\n width: '100%',\n alignItems: 'flex-start',\n },\n flexRowBaseline: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n '& *': {\n paddingRight: '5px',\n },\n },\n divider: {\n [theme.breakpoints.up('sm')]: {\n visibility: 'hidden',\n },\n margin: '0.4rem 1rem',\n },\n description: {\n fontWeight: Number(styles.normalTextWeight),\n fontSize: '0.875rem',\n color: styles.slateBlue,\n },\n txtPayments: {\n fontSize: '1.375rem',\n fontWeight: Number(styles.semiBoldTextWeight),\n },\n }),\n);\n\ninterface ColoredCardWithTotalsProps {\n description: string;\n pesosAmount: number;\n usdAmount: number;\n pesosCount: number;\n usdCount: number;\n color: 'error' | 'success' | 'warning';\n className: string;\n}\n\nfunction ColoredCardWithTotals({\n description,\n pesosAmount,\n usdAmount,\n pesosCount,\n usdCount,\n color,\n className,\n}: ColoredCardWithTotalsProps) {\n const theme = useTheme();\n const classes = useStyles();\n\n const paletteColor = theme.palette[color];\n const txtColor = color === 'warning' ? theme.palette.text.primary : paletteColor.main;\n\n pesosAmount = pesosAmount ?? 0;\n usdAmount = usdAmount ?? 0;\n pesosCount = pesosCount ?? 0;\n usdCount = usdCount ?? 0;\n\n const pesos = numberHelper.getNumberWithDots(pesosAmount);\n const usd = numberHelper.getNumberWithDots(usdAmount);\n\n return (\n \n
    \n {description}\n
    \n \n
    \n
    \n \n $\n \n \n {pesos}\n \n
    \n
    \n
    \n \n USD\n \n \n {usd}\n \n
    \n
    \n \n );\n}\n\nexport default ColoredCardWithTotals;\n","import { Hidden, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { RootState } from '../../store/config/types';\nimport ColoredCardWithTotals from './ColoredCardWithTotals';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n coloredCard: {\n marginBottom: '1rem',\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n alignItems: 'flex-start',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n secondDivider: {\n margin: '1rem 0',\n },\n }),\n);\n\nconst mapStateToProps = (state: RootState) => ({\n payments: state.payments,\n});\n\nconst connector = connect(mapStateToProps);\ntype PropsFromRedux = ConnectedProps;\n\nfunction ColoredCardsWithTotals({ payments }: PropsFromRedux) {\n const classes = useStyles();\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n\nexport default connector(ColoredCardsWithTotals);\n","import { Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { PaymentStatusEnum } from '../../store/config/enums';\nimport { Payment, PaymentsState, RootState } from '../../store/config/types';\nimport { EmptyMessage } from '../EmptyMessage';\nimport { Loading } from '../Loading';\nimport { ScrollTopButton } from '../ScrollTopButton';\nimport ColoredCardsWithTotals from '../TotalsAccordion/ColoredCardsWithTotals';\nimport PaymentCard from './PaymentCard';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n coloredCard: {\n marginBottom: '1rem',\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n alignItems: 'flex-start',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n divider: {\n margin: '1rem 0',\n },\n scrollButton: {\n position: 'fixed',\n bottom: '1rem',\n right: '1rem',\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n width: '2.375rem',\n height: '2.375rem',\n borderRadius: '50%',\n border: 'none',\n cursor: 'pointer',\n zIndex: 1000,\n },\n subtitle: {\n paddingTop: '1rem',\n },\n }),\n);\n\ninterface PaymentsTableProps {\n maxItems?: number;\n loadNextPage?: () => void;\n}\n\nfunction PaymentsCards({ maxItems, loadNextPage }: PaymentsTableProps) {\n const classes = useStyles();\n const location = useLocation();\n const navigate = useNavigate();\n const payments: PaymentsState = useSelector((state: RootState) => state.payments);\n\n const isDashboard = location.pathname === '/dashboard';\n\n const handleOnClick = (row: Payment) => {\n navigate(`/payments/${row.id}`, { state: { from: location.pathname } });\n };\n\n const loadMore = () => {\n if (loadNextPage) {\n loadNextPage();\n }\n };\n\n let filteredPayments = payments?.payments;\n\n if (isDashboard) {\n filteredPayments =\n payments?.dashboardPayments\n ?.filter((payment) => payment?.status === PaymentStatusEnum.APPROVED)\n .slice(0, maxItems) || null;\n }\n\n return (\n
    \n {!isDashboard && (\n <>\n \n \n Historial de pagos\n \n \n )}\n {payments.loadingPayments ? (\n \n ) : filteredPayments && filteredPayments.length > 0 ? (\n }\n className={classes.divider}\n >\n {filteredPayments.map((payment) => (\n
    handleOnClick(payment)}>\n \n
    \n ))}\n \n ) : (\n \n )}\n {!isDashboard && }\n
    \n );\n}\n\nexport default PaymentsCards;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction SplitIcon({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default SplitIcon;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction ChevronLeft({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default ChevronLeft;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction ChevronRight({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default ChevronRight;\n","import Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles';\nimport colors from '../../styles/_variables.module.scss';\nimport { ChevronLeft } from '../Icons/ChevronLeft';\nimport { ChevronRight } from '../Icons/ChevronRight';\n\ninterface CustomPaginationProps {\n total: number;\n itemsPerPage: number;\n currentPage: number;\n onPageChange: (page: number) => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n pagination: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n marginTop: theme.spacing(2),\n '& > *': {\n margin: theme.spacing(0.5),\n },\n '& .Mui-disabled.activePage': {\n color: colors.white,\n },\n },\n chevronButton: {\n padding: 0,\n width: '2.25rem',\n minWidth: '2.25rem',\n '& .MuiButton-label': {\n width: '2.25rem',\n },\n },\n pageButton: {\n minWidth: '36px',\n color: colors.slateBlue,\n },\n activePage: {\n backgroundColor: theme.palette.primary.main,\n '&.Mui-disabled': {\n color: `${colors.white}`,\n },\n },\n ellipsis: {\n padding: theme.spacing(1),\n },\n}));\n\nconst range = (from: number, to: number, step = 1): number[] => {\n let i = from;\n const range = [];\n\n while (i <= to) {\n range.push(i);\n i += step;\n }\n\n return range;\n};\n\nfunction CustomPagination({ total, itemsPerPage, currentPage, onPageChange }: CustomPaginationProps) {\n const classes = useStyles();\n\n const handlePrevious = () => {\n onPageChange(Math.max(1, currentPage - 1));\n };\n\n const handleNext = () => {\n onPageChange(Math.min(total, currentPage + 1));\n };\n\n const paginationItems = () => {\n const pages = [];\n const totalNumbers = 5;\n const totalBlocks = totalNumbers + 2;\n\n if (total > totalBlocks) {\n const startPage = Math.max(2, currentPage - 2);\n const endPage = Math.min(total - 1, currentPage + 2);\n pages.push(1);\n if (startPage > 2) {\n pages.push('...');\n }\n const rangePages = range(startPage, endPage);\n pages.push(...rangePages);\n if (endPage < total - 1) {\n pages.push('...');\n }\n pages.push(total);\n } else {\n pages.push(...range(1, total));\n }\n\n return pages;\n };\n\n const paginationButtons = paginationItems().map((page) => {\n if (page === '...') {\n return (\n \n {page}\n \n );\n }\n return (\n onPageChange(page as number)}\n disabled={currentPage === page}\n className={`${classes.pageButton} ${currentPage === page ? classes.activePage : ''}`}\n >\n {page}\n \n );\n });\n\n return (\n
    \n \n {paginationButtons}\n \n
    \n );\n}\n\nexport default CustomPagination;\n","import { Divider, IconButton, Theme, Tooltip, createStyles, makeStyles } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { ViewIcon } from '../../components/Icons/ViewIcon';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { getColumnMap } from '../../helpers/filteringHelper';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { getPaymentsHeadCells, paymentColumnMap } from '../../helpers/tableHelper';\nimport { fetchClients } from '../../store/action_creators/clients.actions';\nimport { loadPaymentsFilters } from '../../store/action_creators/payments.actions';\nimport { PaymentStatusEnum, PaymentTypeEnum, SortEnum, UserTypeEnum } from '../../store/config/enums';\nimport { Payment, RootState } from '../../store/config/types';\nimport CustomTable from '../CustomTable/CustomTable';\nimport { EmptyMessage } from '../EmptyMessage';\nimport { AdminCrown } from '../Icons/AdminCrown';\nimport { SplitIcon } from '../Icons/SplitIcon';\nimport { Loading } from '../Loading';\nimport { StatusPill } from '../StatusPill';\nimport CustomPagination from './CustomPagination';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n icon: {\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n names: {\n textAlign: 'center',\n border: 'none',\n fontSize: '0.875rem',\n borderBottom: 'none',\n padding: '0.25rem',\n wordBreak: 'break-word',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n divider: {\n margin: '0 0.5rem',\n alignSelf: 'center',\n height: '1.6rem',\n },\n splitPayment: {\n display: 'flex',\n justifyContent: 'start',\n alignItems: 'center',\n marginLeft: '1.5rem',\n },\n }),\n);\n\nexport interface ExtraColumns {\n actions?: JSX.Element;\n}\n\nexport type PaymentColumn = Payment & ExtraColumns;\ninterface PaymentsTableProps {\n maxItems?: number;\n showPlexoNames?: boolean;\n}\n\nfunction PaymentsTable({ maxItems, showPlexoNames }: PaymentsTableProps) {\n const navigate = useNavigate();\n const location = useLocation();\n const dispatch = useDispatch();\n const classes = useStyles();\n const { auth, payments, clients } = useSelector((state: RootState) => state);\n\n const totalItems = payments.pageCount;\n const itemsPerPage = payments.pageSize;\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n\n const [currentPage, setCurrentPage] = useState(payments.currentPage || 1);\n\n const isDashboardTable = location.pathname === '/dashboard';\n\n let filteredPayments = payments?.payments;\n\n if (isDashboardTable) {\n filteredPayments =\n payments?.dashboardPayments?.filter((payment) => payment?.status === PaymentStatusEnum.APPROVED) ||\n null;\n }\n\n const hasSplitPayments = filteredPayments?.some((payment) => payment.type === PaymentTypeEnum.Split);\n\n const renderCustomTableCells = (row: Payment, columnId: keyof PaymentColumn) => {\n const tooltipTitle = `${linkTypeEnumHelper.toNiceString(row.linkType)} ${\n row.type === PaymentTypeEnum.Split ? ' | Split Payment' : ''\n }`;\n\n switch (columnId) {\n case 'date':\n return dateHelper.toShorterNiceString(row.date);\n case 'businessName':\n // TODO: Uncomment when showPlexoNames is returned from the backend remove the find and use the commented line\n // return showPlexoNames? row.plexoCommerceName : row.businessName;\n return showPlexoNames\n ? clients.clients?.find((client) => client.id === row.businessId)?.plexoCommerceName\n : row.businessName;\n case 'linkType':\n return (\n \n
    \n {linkTypeEnumHelper.getIcon(row.linkType)}\n {row.type === PaymentTypeEnum.Split && (\n <>\n \n \n \n )}\n
    \n
    \n );\n case 'issuerLogoUrl':\n return (\n
    \n \"Issuer\"\n

    •• {row.maskedPan.slice(-4)}

    \n
    \n );\n case 'amount':\n return (\n <>\n {currencyHelper.getCurrencyToken(row.amount.currency)}\n \n {numberHelper.getNumberWithDots(row.amount.value + (row.splitPayment?.amount.value || 0))}\n \n \n );\n case 'userDto':\n return row.userDto ? (\n \n {row.userDto?.type === UserTypeEnum.OWNER && }\n

    {`${row.userDto?.names[0]}. ${row.userDto?.surnames}`}

    \n
    \n ) : (\n

    -

    \n );\n case 'status':\n return (\n \n );\n case 'invoiceNumber':\n return row.invoiceNumber ? row.invoiceNumber : '-';\n case 'actions':\n return (\n \n navigate(`/payments/${row.id}`, {\n state: { from: location.pathname },\n })\n }\n >\n \n \n );\n\n default:\n return row[columnId];\n }\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n dispatch(loadPaymentsFilters(payments.filters, page, itemsPerPage, auth.account?.business?.id));\n };\n\n useEffect(() => {\n if (!clients.loadingClients && clients.clients === null && clients.loadingClientsErrorMessage === null) {\n dispatch(fetchClients());\n }\n });\n\n const dispatchSortChange = (columnId: keyof Payment) => {\n const isAsc = payments.filters.sortDirection === SortEnum.ASC;\n const newOrderBy = isAsc ? SortEnum.DESC : SortEnum.ASC;\n const paymentColumnEnum = getColumnMap(paymentColumnMap, columnId);\n setCurrentPage(1);\n\n dispatch(\n loadPaymentsFilters(\n {\n ...payments.filters,\n columnSort: paymentColumnEnum,\n sortDirection: newOrderBy,\n },\n 1,\n itemsPerPage,\n auth.account?.business.id!,\n ),\n );\n };\n\n const rowsData: Payment[] | undefined = filteredPayments?.slice(0, maxItems).map((payment) => ({\n ...payment,\n date: payment.date,\n description: payment.description,\n collaborator: payment.userDto,\n linkType: payment.linkType,\n issuerLogoUrl: payment.issuerLogoUrl,\n maskedPan: payment.maskedPan,\n businessName: payment.businessName,\n amount: payment.amount,\n invoiceNumber: payment.invoiceNumber,\n status: payment.status,\n }));\n\n const emptyMessage = (\n \n );\n\n return (\n
    \n {!payments.loadingPayments && !clients.loadingClients ? (\n \n ) : (\n \n )}\n {!isDashboardTable && payments.payments && payments.payments?.length !== 0 && (\n \n )}\n
    \n );\n}\n\nexport default PaymentsTable;\n","import {\n Accordion,\n AccordionDetails,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n withStyles,\n} from '@material-ui/core';\nimport MuiAccordionSummary from '@material-ui/core/AccordionSummary';\nimport AddIcon from '@material-ui/icons/Add';\nimport RemoveIcon from '@material-ui/icons/Remove';\nimport React, { useState } from 'react';\nimport styles from '../../styles/_variables.module.scss';\nimport ColoredCardsWithTotals from './ColoredCardsWithTotals';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n accordion: {\n backgroundColor: 'transparent',\n '&:before': {\n display: 'none',\n },\n },\n accordionSummary: {\n padding: '0',\n },\n accordionDetails: {\n flexDirection: 'row',\n padding: '0',\n width: '100%',\n gap: '1rem',\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n },\n },\n collapseButton: {\n display: 'flex',\n },\n paddingRight: {\n paddingRight: '0.6em',\n fontSize: '0.75rem',\n fontWeight: Number(styles.normalTextWeight),\n },\n coloredCard: {\n marginBottom: '1rem',\n display: 'flex',\n flexDirection: 'column',\n width: '50%',\n alignItems: 'flex-start',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n secondDivider: {\n margin: '1rem 0',\n },\n }),\n);\n\nconst AccordionSummary = withStyles({\n content: {\n display: 'block',\n },\n})(MuiAccordionSummary);\n\nfunction TotalsAccordion() {\n const classes = useStyles();\n const [expanded, setExpanded] = useState('totals');\n\n const handleChange = (panel: string) => (event: React.ChangeEvent<{}>, newExpanded: boolean) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n return (\n \n \n
    \n Historial de pagos\n
    \n \n {expanded === 'totals' ? 'Colapsar' : 'Ampliar'}\n \n {expanded === 'totals' ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n \n \n \n \n );\n}\n\nexport default TotalsAccordion;\n","import {\n FormControl,\n FormGroup,\n FormLabel,\n MenuItem,\n OutlinedInput,\n Select,\n Theme,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchBusinesses } from '../../store/action_creators/business.actions';\nimport { toggleResetClientFilter } from '../../store/action_creators/payments.actions';\nimport { fetchAllUsers } from './../../store/action_creators/collaborators.actions';\nimport { Business, BusinessState, RootState } from './../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n paper: {\n [theme.breakpoints.down('sm')]: {\n maxHeight: '50vh',\n overflow: 'auto',\n },\n },\n }),\n);\ninterface ClientsFilterProps {\n filterByBusiness(business: Business | null): void;\n resetTrigger?: boolean;\n setResetTrigger?(value: boolean): void;\n showPlexoNames?: boolean;\n}\n\nfunction ClientsFilter({\n filterByBusiness,\n resetTrigger,\n setResetTrigger,\n showPlexoNames,\n}: ClientsFilterProps) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const business: BusinessState = useSelector((state: RootState) => state.business);\n const resetClientFilter = useSelector((state: RootState) => state.payments.resetClientFilter);\n const [selectedBusiness, setSelectedBusiness] = useState('');\n\n useEffect(() => {\n if (\n !business.loadingBusinesses &&\n business.businesses === null &&\n business.businessesErrorMessage === null\n ) {\n dispatch(fetchBusinesses());\n }\n }, [business.loadingBusinesses, business.businesses, business.businessesErrorMessage, dispatch]);\n\n useEffect(() => {\n if (resetClientFilter) {\n handleClientChange(null);\n dispatch(toggleResetClientFilter());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resetClientFilter]);\n\n const handleClientChange = async (business: Business | null) => {\n setSelectedBusiness(business ? business.clientId.toString() : '');\n dispatch(fetchAllUsers(business?.id ?? 0));\n filterByBusiness(business ?? null);\n };\n\n return (\n
    \n \n \n Empresa\n \n \n }\n className=\"select\"\n defaultValue=\"\"\n MenuProps={{\n classes: { paper: classes.paper },\n getContentAnchorEl: null,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n }}\n value={selectedBusiness}\n >\n handleClientChange(null)}>\n Todas\n \n {business.businesses &&\n business.businesses.map((business) => {\n return (\n handleClientChange(business)}\n className=\"select-element\"\n >\n {showPlexoNames ? business.plexoCommerceName : business.prettyName}\n \n );\n })}\n \n \n \n
    \n );\n}\n\nexport default ClientsFilter;\n","import { Dispatch, SetStateAction, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ClientsFilter } from '../../components/ClientsFilter';\nimport { FiltersComponent } from '../../components/FiltersComponent';\nimport { fetchPayments, loadPaymentsFilters } from '../../store/action_creators/payments.actions';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { Business, PaymentsFilters as PaymentsFiltersInterface, RootState } from '../../store/config/types';\n\ninterface PaymentsFiltersProps {\n selectedBusiness: Business | null;\n setSelectedBusiness(business: Business | null): void;\n businessId: number;\n search(): void;\n closeDialog?(): void;\n searchTerm: string;\n setSearchTerm: Dispatch>;\n showPlexoNames?: boolean;\n}\n\nfunction PaymentsFilters({\n selectedBusiness,\n setSelectedBusiness,\n businessId,\n closeDialog,\n search,\n searchTerm,\n setSearchTerm,\n showPlexoNames,\n}: PaymentsFiltersProps) {\n const { auth, payments } = useSelector((state: RootState) => state);\n\n const dispatch = useDispatch();\n\n const loadFilters = (filters: PaymentsFiltersInterface) => {\n if (auth.account) {\n dispatch(loadPaymentsFilters(filters, 1, payments.pageSize, businessId));\n }\n };\n\n const filterByBusiness = (business: Business | null) => setSelectedBusiness(business);\n\n useEffect(() => {\n if (\n businessId !== -1 &&\n !payments.loadingPayments &&\n payments.payments === null &&\n payments.paymentsErrorMessage === null\n ) {\n dispatch(fetchPayments(payments.filters, payments.currentPage, payments.pageSize, businessId));\n }\n }, [\n payments.loadingPayments,\n payments.payments,\n payments.paymentsErrorMessage,\n payments.filters,\n payments.pageSize,\n auth.account,\n businessId,\n payments.currentPage,\n dispatch,\n ]);\n\n return (\n \n )\n }\n selectedBusiness={selectedBusiness}\n searchTerm={searchTerm}\n setSearchTerm={setSearchTerm}\n filters={payments.filters}\n setFilters={loadFilters}\n triggerSearch={search}\n closeDialog={closeDialog}\n isPaymentFilter\n />\n );\n}\n\nexport default PaymentsFilters;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction PdfFile({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n );\n}\n\nexport default PdfFile;\n","import { useTheme } from '@material-ui/core';\nimport { Document, Page, StyleSheet, Text, View } from '@react-pdf/renderer';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { Business, Payment } from '../../store/config/types';\n\nconst styles = StyleSheet.create({\n page: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: 32,\n paddingBottom: 32,\n width: 700,\n },\n title: {\n marginBottom: 16,\n },\n headerRow: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n fontSize: 14,\n fontWeight: 'bold',\n width: 700,\n paddingTop: 6,\n paddingBottom: 6,\n },\n row: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n fontSize: 12,\n width: 700,\n paddingTop: 6,\n paddingBottom: 6,\n },\n column: {\n display: 'flex',\n justifyContent: 'center',\n flexGrow: 1,\n paddingLeft: 4,\n paddingRight: 4,\n },\n divider: {\n height: 1,\n width: 700,\n backgroundColor: '#999',\n marginTop: 2,\n marginBottom: 2,\n },\n date: {\n width: 100,\n textAlign: 'center',\n },\n description: {\n width: 100,\n textAlign: 'center',\n },\n type: {\n width: 72,\n textAlign: 'center',\n },\n issuer: {\n width: 70,\n textAlign: 'center',\n },\n amount: {\n width: 56,\n textAlign: 'right',\n },\n referencePayment: {\n width: 100,\n textAlign: 'center',\n },\n});\n\ninterface PDFPaymentsProps {\n data: Payment[] | null;\n business: Business | null;\n}\n\nfunction PDFPayments({ data, business }: PDFPaymentsProps) {\n const theme = useTheme();\n\n return (\n \n \n \n {`Listado de pagos ${business ? 'de' : ''} ${\n business ? business.prettyName : ''\n }`}\n \n \n \n Estado\n \n \n Fecha\n \n \n Descripción\n \n \n Tipo de link\n \n \n Medio de pago\n \n \n Importe\n \n \n Referencia link\n \n \n Referencia usuario\n \n \n \n \n \n \n {data &&\n data.map((payment, index) => {\n return (\n \n \n \n \n {paymentStatusEnumHelper.getStatusText(payment.status)}\n \n \n \n {dateHelper.toShorterNiceString(payment.date)}\n \n \n {payment?.description || '-'}\n \n \n {linkTypeEnumHelper.toNiceString(payment.linkType)}\n \n \n {payment.issuerName}\n \n \n {`${currencyHelper.getCurrencyToken(\n payment.amount.currency,\n )} ${numberHelper.getNumberWithDots(payment.amount.value)}`}\n \n \n {payment?.referencePayment || '-'}\n \n \n {payment?.clientComments || '-'}\n \n \n \n \n \n \n );\n })}\n \n \n \n );\n}\n\nexport default PDFPayments;\n","import { Link, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { pdf } from '@react-pdf/renderer';\nimport { saveAs } from 'file-saver';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { CSVLink } from 'react-csv';\nimport { csvHeaders } from '../../data/csv';\nimport { currencyHelper } from '../../helpers/currencyHelper';\nimport { dateHelper } from '../../helpers/dateHelper';\nimport { linkTypeEnumHelper } from '../../helpers/linkTypeEnumHelper';\nimport { numberHelper } from '../../helpers/numberHelper';\nimport { paymentStatusEnumHelper } from '../../helpers/paymentStatusEnumHelper';\nimport { paymentsService } from '../../services/payments.service';\nimport styles from '../../styles/_variables.module.scss';\nimport { CsvFile } from '../Icons/CsvFile';\nimport { PdfFile } from '../Icons/PdfFile';\nimport {\n AuthState,\n CSVPayment,\n FetchPaymentsRequest,\n Payment,\n PaymentsState,\n} from './../../store/config/types';\nimport { PDFPayments } from './../PDFPayments';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n noWrap: {\n whiteSpace: 'nowrap',\n textDecoration: 'none !important',\n },\n csvLink: {\n textDecoration: 'none',\n margin: '0.3rem',\n marginRight: '0.6rem',\n },\n exportButton: {\n display: 'flex',\n flexDirection: 'row',\n backgroundColor: styles.white,\n alignItems: 'center',\n gap: '0.4375rem',\n padding: '0.5625rem 1.1875rem',\n border: `1px solid ${styles.borderButtonSecondary}`,\n borderRadius: '4px',\n '& p': {\n margin: 0,\n padding: 0,\n color: styles.textButtonSecondary,\n textDecoration: 'none',\n },\n '&:hover': {\n backgroundColor: styles.borderButtonSecondary,\n },\n },\n }),\n);\n\ninterface ExportPaymentsProps {\n auth: AuthState;\n payments: PaymentsState;\n businessId: number;\n}\n\nfunction ExportPayments({ auth, payments, businessId }: ExportPaymentsProps) {\n const classes = useStyles();\n const [loadingPayments, setLoadingPayments] = useState(null);\n const [allLocalPayments, setAllLocalPayments] = useState([]);\n const [hasClickedCSV, setHasClickedCSV] = useState(false);\n const [hasClickedPDF, setHasClickedPDF] = useState(false);\n const csvRef = useRef();\n\n const fetchAllPayments = useCallback(() => {\n const request: FetchPaymentsRequest = {\n page: 1,\n limit: 1000,\n ...payments.filters,\n };\n\n paymentsService\n .fetchPayments(request, businessId)\n .then(\n (transactions) => {\n if (transactions) setAllLocalPayments(transactions.payments.results!);\n },\n (error) => setAllLocalPayments([]),\n )\n .finally(() => setLoadingPayments(false));\n }, [businessId, payments.filters]);\n\n const onClickHandler = (fileType: 'CSV' | 'PDF') => {\n setLoadingPayments(true);\n if (fileType === 'CSV') setHasClickedCSV(true);\n else if (fileType === 'PDF') setHasClickedPDF(true);\n };\n\n const downloadPDF = useCallback(async () => {\n const blob = await pdf(\n ,\n ).toBlob();\n saveAs(blob, 'Pagos');\n }, [allLocalPayments, auth.account]);\n\n useEffect(() => {\n if (loadingPayments) {\n fetchAllPayments();\n }\n }, [fetchAllPayments, loadingPayments]);\n\n useEffect(() => {\n if (allLocalPayments.length > 0 && loadingPayments === false) {\n if (hasClickedCSV) {\n csvRef.current.link.click();\n setHasClickedCSV(false);\n }\n if (hasClickedPDF) {\n downloadPDF();\n setHasClickedPDF(false);\n }\n }\n }, [allLocalPayments.length, downloadPDF, hasClickedCSV, hasClickedPDF, loadingPayments]);\n\n const buildCSVPayments = (payments: Payment[]): CSVPayment[] => {\n return payments.map((payment) => {\n return {\n status: paymentStatusEnumHelper.getStatusText(payment.status),\n date: dateHelper.toShorterNiceString(payment.date),\n description: payment?.description || '-',\n linkType: linkTypeEnumHelper.toNiceString(payment.linkType),\n issuerName: payment.issuerName,\n cardType: payment.cardType || '-',\n amount: `${currencyHelper.getCurrencyToken(\n payment.taxedAmount ? payment.taxedAmount.currency : payment.amount.currency,\n )} ${numberHelper.getNumberWithDots(payment.amount.value)}`,\n referencePayment: payment?.referencePayment || '-',\n clientComments: payment?.clientComments || '-',\n maskedPan: payment.maskedPan.slice(-4),\n installments: payment.installments,\n authorization: payment.authorization || '-',\n ticket: payment.ticket || '-',\n };\n });\n };\n\n return (\n <>\n onClickHandler('CSV')}>\n
    \n \n

    {hasClickedCSV ? 'Cargando...' : 'Exportar a CSV'}

    \n
    \n \n \n onClickHandler('PDF')}>\n
    \n \n

    {hasClickedPDF ? 'Cargando...' : 'Exportar a PDF'}

    \n
    \n \n \n );\n}\n\nexport default ExportPayments;\n","import { createStyles, Divider, makeStyles, Theme, Typography } from '@material-ui/core';\nimport { useSelector } from 'react-redux';\nimport { CustomSwitch } from '../../components/CustomSwitch';\nimport { ExportPayments } from '../../components/ExportPayments';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { RootState } from '../../store/config/types';\nimport colors from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n flexRow: {\n display: 'flex',\n marginBottom: '2.5rem',\n justifyContent: 'space-between',\n [theme.breakpoints.down('xs')]: {\n marginBottom: '0.5rem',\n },\n },\n divider: {\n margin: '0 1rem 0 0.5rem',\n alignSelf: 'center',\n height: '2.5rem',\n backgroundColor: colors.borderButtonSecondary,\n },\n desktopContainer: {\n display: 'flex',\n alignItems: 'center',\n color: colors.slateBlue,\n },\n }),\n);\n\ninterface PaymentsScreenTitleProps {\n businessId: number;\n isDesktop: boolean;\n isSuperAdmin: boolean;\n showPlexoNames: boolean;\n setShowPlexoNames: (value: boolean) => void;\n}\n\nfunction PaymentsScreenTitle({\n businessId,\n isDesktop,\n isSuperAdmin,\n showPlexoNames,\n setShowPlexoNames,\n}: PaymentsScreenTitleProps) {\n const classes = useStyles();\n const { auth, payments } = useSelector((state: RootState) => state);\n\n return (\n
    \n \n {isDesktop && (\n
    \n {isSuperAdmin && (\n <>\n Mostrar nombre en Plexo\n setShowPlexoNames(!showPlexoNames)}\n color=\"primary\"\n name=\"checkedB\"\n inputProps={{ 'aria-label': 'primary checkbox' }}\n />\n \n \n )}\n \n
    \n )}\n
    \n
    \n );\n}\n\nexport default PaymentsScreenTitle;\n","import {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n useMediaQuery,\n useTheme,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport clsx from 'clsx';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Search from '../../components/FiltersComponent/Search';\nimport { Filters } from '../../components/Icons/Filters';\nimport { PaymentsCards } from '../../components/PaymentsCards';\nimport { fetchAllUsers } from '../../store/action_creators/collaborators.actions';\nimport { fetchPaymentMethods } from '../../store/action_creators/paymentMethods.actions';\nimport { UserTypeEnum } from '../../store/config/enums';\nimport { PaymentsTable } from './../../components/PaymentsTable';\nimport { TotalsAccordion } from './../../components/TotalsAccordion';\nimport { fetchPayments, loadPaymentsFilters } from './../../store/action_creators/payments.actions';\nimport { Business, RootState } from './../../store/config/types';\nimport PaymentsFilters from './PaymentsFilters';\nimport PaymentsScreenTitle from './PaymentsScreenTitle';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n flexContainer: {\n display: 'flex',\n gap: 8,\n },\n }),\n);\n\nfunction Payments() {\n const dispatch = useDispatch();\n const classes = useStyles();\n const { auth, payments, paymentMethods, collaborators } = useSelector((state: RootState) => state);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedBusiness, setSelectedBusiness] = useState(null);\n const [open, setOpen] = useState(false);\n const [showPlexoNames, setShowPlexoNames] = useState(false);\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n\n const theme = useTheme();\n const isDesktop = useMediaQuery(theme.breakpoints.up('md'));\n\n const businessId = isSuperAdmin\n ? selectedBusiness === null\n ? 0\n : selectedBusiness.id!\n : auth.account?.business?.id ?? -1;\n\n useEffect(() => {\n if (\n auth.account &&\n !paymentMethods.loadingPaymentMethods &&\n paymentMethods.paymentMethods === null &&\n paymentMethods.paymentMethodsErrorMessage === null\n ) {\n dispatch(fetchPaymentMethods(businessId));\n }\n }, [\n auth.account,\n paymentMethods.loadingPaymentMethods,\n paymentMethods.paymentMethods,\n paymentMethods.paymentMethodsErrorMessage,\n businessId,\n dispatch,\n ]);\n\n useEffect(() => {\n if (\n auth.account &&\n !collaborators.loadingCollaborators &&\n collaborators.collaborators === null &&\n collaborators.collaboratorsErrorMessage === null\n ) {\n dispatch(fetchAllUsers(businessId));\n }\n }, [\n auth.account,\n collaborators.loadingCollaborators,\n collaborators.collaborators,\n collaborators.collaboratorsErrorMessage,\n businessId,\n dispatch,\n ]);\n\n const search = () => {\n if (\n (searchTerm.length > 3 || searchTerm.length === 0) &&\n searchTerm !== payments.filters.term &&\n businessId !== -1\n ) {\n const filters = { ...payments.filters, term: searchTerm };\n dispatch(loadPaymentsFilters(filters, payments.currentPage, payments.pageSize, businessId));\n }\n };\n\n const loadNextPage = () => {\n dispatch(fetchPayments(payments.filters, payments.currentPage + 1, payments.pageSize, businessId));\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n return (\n \n \n {isDesktop && (\n \n )}\n {isDesktop && }\n {!isDesktop ? (\n <>\n
    \n \n \n
    \n \n \n \n \n \n \n Filtrar por\n \n \n \n \n ) : (\n \n )}\n \n );\n}\n\nexport default Payments;\n","import { Button, Dialog, DialogContent, DialogTitle } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../store/config/types';\n\ninterface GoBackDialogProps {\n open: boolean;\n setOpen: React.Dispatch>;\n}\n\nfunction GoBackDialog({ open, setOpen }: GoBackDialogProps) {\n const link = useSelector((state: RootState) => state.links);\n const business = useSelector((state: RootState) => state.business.business);\n\n const handleClose = () => setOpen(false);\n\n return (\n \n \n \n \n \n

    ¿Estás seguro de que deseas volver al comienzo del flujo?

    \n Perderás todas las selecciones realizadas hasta el momento.\n
    \n \n \n Si, volver\n \n
    \n
    \n
    \n );\n}\n\nexport default GoBackDialog;\n","import { Typography } from '@material-ui/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { RootState } from '../../store/config/types';\nimport GoBackDialog from './GoBackDialog';\n\ndeclare global {\n interface Window {\n attachEvent: any;\n }\n}\n\nwindow.attachEvent = window.attachEvent || {};\n\nfunction PlexoPayment() {\n const navigate = useNavigate();\n const payments = useSelector((state: RootState) => state.payments);\n const business = useSelector((state: RootState) => state.business.business);\n const iframeRef = useRef(null);\n const [open, setOpen] = useState(false);\n\n // useEffect(() => {\n // window.addEventListener('message', receiveMessage)\n\n // return () => {\n // window.removeEventListener('message', receiveMessage)\n // }\n // })\n\n // function receiveMessage(e: MessageEventInit) {\n // console.log(e.data)\n // console.log(e.data.message)\n // if (e.data.message === 'redirectError') {\n // navigate(`/result?errorCode=${e.data.payload}`)\n // } else if (e.data.message === 'redirectSuccess') {\n // navigate(`/result?beginPaymentId=${e.data.payload}`)\n // }\n // }\n\n function onMessage(event: MessageEventInit) {\n var data = event.data;\n console.log(event);\n if (data && data.plexo && iframeRef && iframeRef.current) {\n iframeRef.current.height = data.plexo.height;\n }\n }\n\n useEffect(() => {\n if (window.addEventListener) {\n window.addEventListener('message', onMessage, false);\n } else if (window.attachEvent) {\n window.attachEvent('onmessage', onMessage, false);\n }\n\n return () => {\n window.removeEventListener('message', onMessage, false);\n };\n });\n\n useEffect(() => {\n if (payments.confirmPaymentSuccess) {\n navigate(`/result`);\n } else if (payments.confirmPaymentErrorMessage !== null) {\n navigate(`/result?errorCode=`);\n }\n });\n\n useEffect(() => {\n if (!business) navigate(-1);\n }, [business, navigate]);\n\n return (\n
    \n
    \n Ingresa los datos de tu tarjeta\n \n
    \n
    \n \n
    \n \n
    \n );\n}\n\nexport default PlexoPayment;\n","import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { ThunkDispatch } from 'redux-thunk';\nimport schemas from '../../../data/schemas';\nimport { changeCredentials } from '../../../store/action_creators/auth.actions';\nimport { AppActions } from '../../../store/config/ActionTypes';\nimport { Status } from '../../../store/config/enums';\nimport { ChangeCredentialsRequest, RootState } from '../../../store/config/types';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport PasswordField from '../../PasswordField/PasswordField';\nimport { FormTextField } from '../../forms/FormTextField';\n\ninterface ChangeEmailDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n changeCredentials: (changeCredentialsRequest: ChangeCredentialsRequest) =>\n dispatch(changeCredentials(changeCredentialsRequest)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & ChangeEmailDialogProps;\n\ninterface Values {\n email: string;\n currentPassword: string;\n password: string;\n repeatPassword: string;\n}\n\nfunction ChangeEmailDialog({ auth, changeCredentials, open, setOpen }: PropsType) {\n const [changingCredentials, setChangingCredentials] = useState(false);\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n const submitEmail = (values: Values, helpers: FormikHelpers) => {\n const changeCredentialsRequest: ChangeCredentialsRequest = {\n userId: 'id',\n email: values.email,\n oldPassword: values.currentPassword,\n newPassword: values.password,\n };\n\n setChangingCredentials(true);\n changeCredentials(changeCredentialsRequest);\n };\n\n const closeSnack = () => {\n setChangingCredentials(false);\n };\n\n return (\n \n \n \n \n \n
    \n \n Cambiar correo electrónico\n \n \n Para cambiar el correo electrónico necesitamos que también ingreses una nueva contraseña.\n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n\nexport default connector(ChangeEmailDialog);\n","import { Link, Paper, useMediaQuery, useTheme } from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { Loading } from '../../components/Loading';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { SubmitButton } from '../../components/SubmitButton';\nimport { ChangeEmailDialog } from '../../components/dialogs/ChangeEmailDialog';\nimport { ChangePasswordDialog } from '../../components/dialogs/ChangePasswordDialog';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport schemas from '../../data/schemas';\nimport { updateAccount } from '../../store/action_creators/auth.actions';\nimport { Status, UserTypeEnum } from '../../store/config/enums';\nimport { Account, RootState } from '../../store/config/types';\ninterface Values {\n names: string;\n surnames: string;\n email: string;\n}\n\nfunction Profile() {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const auth = useSelector((state: RootState) => state.auth);\n const theme = useTheme();\n const [emailOpen, setEmailOpen] = useState(false);\n const [passwordOpen, setPasswordOpen] = useState(false);\n const [updatingAccount, setUpdatingAccount] = useState(false);\n\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const submitProfile = (values: Values, helpers: FormikHelpers) => {\n const account: Account = {\n userId: auth.account!.userId,\n businessId: auth.account!.business.id!,\n names: values.names,\n surnames: values.surnames,\n telephoneNo: auth.account!.telephoneNo,\n type: auth.account!.type,\n email: values.email,\n };\n\n setUpdatingAccount(true);\n dispatch(updateAccount(account));\n };\n\n const closeSnack = () => {\n setUpdatingAccount(false);\n };\n\n const submitButton = ;\n\n useEffect(() => {\n if (auth.account && auth.account.type === UserTypeEnum.COLLABORATOR) {\n navigate('/dashboard');\n }\n }, [auth.account, navigate]);\n\n return (\n
    \n {!isMobile && submitButton}\n \n {auth.account ? (\n \n
    \n \n \n \n
    \n setPasswordOpen(true)}>\n Cambiar contraseña\n \n
    \n
    {isMobile && submitButton}
    \n \n \n ) : (\n \n )}\n \n \n \n
    \n
    \n );\n}\n\nexport default Profile;\n","import { useEffect, useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\nimport { Loading } from '../../components/Loading';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { visaRedirect } from '../../store/action_creators/payments.actions';\nimport { AppActions } from './../../store/config/ActionTypes';\nimport { RootState } from './../../store/config/types';\n\nconst mapStateToProps = (state: RootState) => ({\n payments: state.payments,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n visaRedirected: (paymentId: string) => dispatch(visaRedirect(paymentId)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps;\n\nfunction Redirect({ payments, visaRedirected }: PropsFromRedux) {\n const [init, setInit] = useState(false);\n const navigate = useNavigate();\n\n const isOnIframe = window.location !== window.parent.location;\n const urlVars = urlHelper.parseQueryString();\n\n useEffect(() => {\n //Visa and Sistarbank redirect should reopen SignalR connection\n if (!isOnIframe && !init) {\n setInit(true);\n visaRedirected(urlVars.beginPaymentId);\n }\n }, [isOnIframe, urlVars, visaRedirected, init, setInit]);\n\n useEffect(() => {\n if (!isOnIframe) {\n if (payments.confirmPaymentSuccess) {\n navigate(`/result`);\n } else if (payments.confirmPaymentErrorMessage !== null) {\n navigate(`/result?errorCode=`);\n }\n }\n });\n\n // useEffect(() => {\n // if (window.location === window.parent.location) {\n // if (urlVars.errorcode) {\n // setHasError(true);\n // }\n // }\n // }, [urlVars, setHasError]);\n\n // useEffect(() => {\n // if ((!payments.confirmingPayment && payments.confirmPaymentSuccess) || payments.confirmPaymentErrorMessage !== \"\") {\n // navigate(\"/result\");\n // }\n // }, [payments.confirmingPayment, payments.confirmPaymentSuccess, payments.confirmPaymentErrorMessage, history]);\n\n if (isOnIframe) {\n console.log('creating redirect message');\n const object = {\n message: urlVars.errorcode || urlVars.errormessage ? 'redirectError' : 'redirectSuccess',\n payload: urlVars.errorcode || urlVars.errormessage ? urlVars.errorcode : urlVars.beginPaymentId,\n };\n console.log(object);\n window.parent.postMessage(object, `${window.location.origin}/redirect`);\n\n return ;\n } else {\n // if (hasError) {\n // console.log(\"hasError?\" + hasError);\n // navigate(`/result?errorCode=${urlVars.errorcode}`);\n // }\n\n //Visa redirect should reopen SignalR connection\n // visaRedirected(urlVars.paymentId);\n\n return ;\n }\n}\n\nexport default connector(Redirect);\n","import { Divider, Theme, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport colors from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n flex: {\n display: 'flex',\n gap: 1.5,\n alignItems: 'center',\n },\n flexBetween: {\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n },\n divider: {\n margin: '0.5rem',\n },\n stepText: {\n fontSize: '0.8125rem',\n color: colors.textButtonSecondary,\n },\n }),\n);\n\ninterface RegisterHeaderProps {\n step: number;\n goBack?: () => void;\n disableBackButton?: boolean;\n}\n\nexport default function RegisterHeader({ step }: RegisterHeaderProps) {\n const classes = useStyles();\n\n return (\n
    \n
    \n Crea tu cuenta\n \n {`Paso ${step} de 2`}\n
    \n
    \n );\n}\n","import React from 'react';\nimport {\n Dialog,\n DialogContent,\n Button,\n makeStyles,\n Theme,\n createStyles,\n DialogTitle,\n Typography,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport styles from '../../../styles/_variables.module.scss';\n\nconst useDialogStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n paddingBottom: 0,\n },\n icon: {\n cursor: 'pointer',\n userSelect: 'none',\n color: theme.palette.grey[500],\n },\n message: {\n fontWeight: Number(styles.semiBoldTextWeight),\n fontSize: '1.0625rem',\n },\n content: {\n padding: '2rem 3rem',\n paddingTop: '1rem',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n textAlign: 'center',\n },\n actions: {\n marginTop: '1.4rem',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n okButton: {\n marginLeft: '1rem',\n },\n }),\n);\n\ninterface EmailConfirmationDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n message: string;\n action(): void;\n}\n\nfunction EmailConfirmationDialog({ open, setOpen, message, action }: EmailConfirmationDialogProps) {\n const classes = useDialogStyles();\n\n const handleOk = () => {\n action();\n };\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n return (\n \n \n \n \n \n {message}\n
    \n \n \n Si, crear cuenta\n \n
    \n
    \n
    \n );\n}\n\nexport default EmailConfirmationDialog;\n","import { Button, CircularProgress, Paper, Typography, createStyles, makeStyles } from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport generator from 'generate-password';\nimport { ChangeEvent, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport schemas from '../../../data/schemas';\nimport { ivas } from '../../../data/values';\nimport { urlHelper } from '../../../helpers/urlHelper';\nimport { createBusiness } from '../../../store/action_creators/business.actions';\nimport { Status } from '../../../store/config/enums';\nimport { RootState } from '../../../store/config/types';\nimport variables from '../../../styles/_variables.module.scss';\nimport { ClientSecret } from '../../ClientSecret';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport { ImageUpload } from '../../ImageUpload';\nimport { BusinessConfirmationDialog } from '../../dialogs/BusinessConfirmationDialog';\nimport { FormSelectField } from '../FormSelectField';\nimport { FormTextField } from '../FormTextField';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n checkbox: {\n padding: '0.2rem',\n paddingLeft: 0,\n },\n title: {\n color: variables.slateBlue,\n fontSize: '1.0625rem',\n fontWeight: +variables.semiBoldTextWeight,\n },\n text: {\n color: variables.slateBlue,\n },\n imageInstructions: {\n color: variables.slateBlue,\n textAlign: 'center',\n width: '70%',\n fontSize: '0.75rem',\n marginTop: '0.5rem',\n },\n }),\n);\n\ninterface Values {\n prettyName: string;\n urlName: string;\n legalId: string;\n description: string;\n vat: number;\n}\n\ninterface BusinessFormProps {\n handleSuccess?: () => void;\n}\n\nfunction generateSecretText() {\n return generator.generate({ length: 12, numbers: true, uppercase: true });\n}\n\nfunction BusinessForm({ handleSuccess }: BusinessFormProps) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const { auth, business } = useSelector((state: RootState) => state);\n const [selectedImage, setSelectedImage] = useState(null);\n const [openConfirmationDialog, setOpenConfirmationDialog] = useState(false);\n const [formValues, setFormValues] = useState(null);\n const imageRef = useRef(null);\n const [imageError, setImageError] = useState(null);\n const [secret, setSecret] = useState(generateSecretText());\n const [creatingBusiness, setCreatingBusiness] = useState(false);\n\n const handlePrettyNameChange = (\n event: ChangeEvent,\n setFieldValue: FormikHelpers['setFieldValue'],\n ) => {\n const webAddressName = urlHelper.generateUrlBusinessName(event.target.value);\n setFieldValue('urlName', webAddressName);\n };\n\n const businessConfirmation = () => {\n setOpenConfirmationDialog(false);\n setCreatingBusiness(true);\n if (formValues && selectedImage && auth.account?.userId) {\n dispatch(\n createBusiness(\n {\n prettyName: formValues.prettyName,\n urlName: formValues.urlName,\n legalId: formValues.legalId,\n userId: auth.account?.userId!,\n softDescriptor: formValues.description,\n vatRate: formValues.vat,\n clientSecret: secret,\n },\n selectedImage!,\n ),\n );\n }\n };\n\n const handleFormSubmit = (values: Values) => {\n setFormValues(values);\n setOpenConfirmationDialog(true);\n };\n\n let allIvas = ivas.map((i) => {\n return {\n id: i,\n value: i.toString(),\n };\n });\n allIvas.unshift({ id: 99, value: 'Selecciona una opción' });\n\n const closeSnack = () => {\n setCreatingBusiness(false);\n };\n\n return (\n <>\n \n {({ setFieldValue, isValid }) => {\n return (\n
    \n \n Tu empresa\n ) =>\n handlePrettyNameChange(event, setFieldValue)\n }\n />\n \n
    \n \n Por ejemplo: mvd-donuts\n \n \n No incluir la palabra \"empresa\". Ingresar solo letras y guiones \"-\". El nombre debe tener\n entre 3 y 30 caracteres.\n \n
    \n \n \n \n \n \n
    \n
    \n
    \n \n {business.creatingBusiness ? (\n \n ) : (\n 'Confirmar'\n )}\n \n
    \n
    \n
    \n );\n }}\n \n \n \n \n );\n}\n\nexport default BusinessForm;\n","import {\n Button,\n Checkbox,\n CircularProgress,\n Divider,\n Link,\n Paper,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport { Field, Form, Formik } from 'formik';\nimport { Dispatch, SetStateAction, useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\nimport schemas from '../../../data/schemas';\nimport { authService } from '../../../services/auth.service';\nimport { registerUser } from '../../../store/action_creators/auth.actions';\nimport { AppActions } from '../../../store/config/ActionTypes';\nimport { RootState, UserRequest } from '../../../store/config/types';\nimport variables from '../../../styles/_variables.module.scss';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport PasswordField from '../../PasswordField/PasswordField';\nimport { FormTextField } from '../FormTextField';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n checkbox: {\n padding: '0.2rem',\n paddingLeft: 0,\n color: variables.shadeGrey,\n [theme.breakpoints.down('md')]: {\n marginRight: '0.4375rem',\n padding: 0,\n },\n },\n title: {\n color: variables.slateBlue,\n fontSize: '1.0625rem',\n fontWeight: +variables.semiBoldTextWeight,\n },\n text: {\n color: variables.slateBlue,\n fontSize: '0.9375rem',\n [theme.breakpoints.down('md')]: {\n alignSelf: 'center',\n textWrap: 'balance',\n },\n },\n backButton: {\n marginRight: '0.75rem',\n },\n divider: {\n height: '1px',\n width: '100%',\n margin: '1.875rem auto',\n },\n login: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.1875rem',\n },\n }),\n);\n\ninterface UserValues {\n names: string;\n surnames: string;\n telephoneNo: string;\n email: string;\n password: string;\n repeatPassword: string;\n}\n\ninterface UserFormProps {\n setEmail?: Dispatch>;\n goBack?: () => void;\n}\n\ninterface LooseObject {\n [key: string]: any;\n}\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n registerUser: (user: UserRequest) => dispatch(registerUser(user)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\ntype PropsType = PropsFromRedux & UserFormProps;\n\nfunction UserForm({ auth, registerUser, setEmail, goBack }: PropsType) {\n const navigate = useNavigate();\n const classes = useStyles();\n\n const [creating, setCreating] = useState(false);\n const [checked, setChecked] = useState(false);\n const [validatedEmail, setValidatedEmail] = useState('');\n const [validating, setValidating] = useState(false);\n const [mailHasError, setMailHasError] = useState(false);\n\n const submitUser = (values: UserValues) => {\n const user: UserRequest = {\n names: values.names,\n surnames: values.surnames,\n telephoneNo: values.telephoneNo,\n email: values.email,\n password: values.password,\n };\n\n if (setEmail) {\n setEmail(values.email);\n }\n\n setCreating(true);\n registerUser(user);\n };\n\n const closeSnack = () => {\n setCreating(false);\n\n if (auth.changeCredentialsSuccess) {\n navigate('/dashboard');\n }\n };\n\n const validEmail = (email: string) => {\n var re =\n /^(([^<>()[\\]\\\\.,;:\\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 re.test(String(email).toLowerCase());\n };\n\n const validate = async (values: UserValues) => {\n let mailValue = values.email;\n let errors: LooseObject = {};\n\n if (mailValue !== '' && validEmail(mailValue) && mailValue !== validatedEmail && !validating) {\n setValidating(true);\n setValidatedEmail(mailValue);\n\n await authService.checkEmailAvailability(mailValue).then(\n (response) => {\n setValidating(false);\n setMailHasError(false);\n },\n (error) => {\n setValidating(false);\n setMailHasError(true);\n errors.email = 'El email ya existe en la plataforma';\n return errors;\n },\n );\n } else if (mailHasError) {\n errors.email = 'El email ya existe en la plataforma';\n return errors;\n }\n\n return errors;\n };\n\n return (\n <>\n \n
    \n \n Información de acceso\n \n \n \n \n \n
    \n \n La contraseña debe tener al menos una mayúscula, una minúscula y un número.\n \n
    \n \n
    \n
    \n setChecked(!checked)}\n color=\"primary\"\n />\n

    \n Al registrarte, aceptas los{' '}\n \n términos y condiciones\n \n

    \n
    \n \n
    \n

    \n ¿Ya tienes una cuenta? Ingresar\n

    \n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n \n );\n}\n\nexport default connector(UserForm);\n","import { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport { EmailSent } from '../../components/EmailSent';\nimport RegisterHeader from '../../components/Register/RegisterHeader';\nimport { BusinessForm } from '../../components/forms/BusinessForm';\nimport { UserForm } from '../../components/forms/UserForm';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { RootState } from '../../store/config/types';\n\nfunction Register() {\n const navigate = useNavigate();\n const location = useLocation();\n const { auth, business } = useSelector((state: RootState) => state);\n const [email, setEmail] = useState('');\n const [step, setStep] = useState(0);\n useEffect(() => {\n if (step === 0) {\n let urlVars = urlHelper.parseQueryString();\n\n if (urlVars.step) {\n setStep(Number(urlVars.step));\n } else {\n setStep(1);\n }\n }\n }, [step, setStep]);\n\n const goBack = () => {\n navigate('/login');\n };\n\n const emailSentText = (\n <>\n

    Te enviamos un mail de confirmación a {email}

    \n

    Allí encontrarás las instrucciones para ingresar a tu cuenta.

    \n

    Si no recibiste este correo después de unos minutos, por favor revisa tu casilla de spam.

    \n \n );\n\n const renderStepOne = () => {\n if (!auth.registerUserSuccess) {\n return (\n
    \n \n \n
    \n );\n } else {\n return ;\n }\n };\n\n const renderStepTwo = () => {\n return (\n
    \n \n \n
    \n );\n };\n\n useEffect(() => {\n const cookies = new Cookies();\n const hasBusinessCreated = auth.account?.business?.id || business.createdBusiness;\n if (cookies.get('token') && location.pathname.includes('/register')) {\n if (hasBusinessCreated && !auth.account?.business?.hasCommerces) {\n navigate('/first-payment-method');\n } else if (hasBusinessCreated && auth.account?.business?.hasCommerces) {\n navigate('/dashboard');\n } else {\n navigate('/register?step=2');\n }\n }\n }, [\n auth.account?.business?.hasCommerces,\n auth.account?.business?.id,\n business.createdBusiness,\n location.pathname,\n navigate,\n ]);\n\n return (\n <>\n {step === 1 && renderStepOne()}\n {step === 2 && renderStepTwo()}\n \n );\n}\n\nexport default Register;\n","import { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport { Loading } from '../../components/Loading';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { PaymentMethodForm } from '../../components/forms/PaymentMethodForm';\nimport { RootState } from '../../store/config/types';\n\nfunction FirstPaymentMethod() {\n const navigate = useNavigate();\n const { auth, business, paymentMethods } = useSelector((state: RootState) => state);\n const hasBusinessCreated = auth.account?.business?.id || business.createdBusiness;\n\n useEffect(() => {\n const cookies = new Cookies();\n\n if (cookies.get('token')) {\n if (!hasBusinessCreated && auth.account) {\n navigate('/register?step=2');\n } else if (\n hasBusinessCreated &&\n auth.account?.business?.hasCommerces &&\n !paymentMethods.createPaymentMethodSuccess\n ) {\n navigate('/dashboard');\n }\n } else {\n navigate('/login');\n }\n }, [\n auth.account,\n auth.account?.business?.hasCommerces,\n paymentMethods.createPaymentMethodSuccess,\n hasBusinessCreated,\n navigate,\n ]);\n\n return (\n <>\n {paymentMethods.loadingIssuers ? (\n \n ) : (\n
    \n \n navigate('/dashboard')}\n paymentMethod={null}\n firstPaymentMethod\n isRegisterStep\n />\n
    \n )}\n \n );\n}\n\nexport default FirstPaymentMethod;\n","import {\n Button,\n Checkbox,\n CircularProgress,\n FormControlLabel,\n Paper,\n Theme,\n Typography,\n createStyles,\n makeStyles,\n} from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\nimport { fetchIssuers, sendDesiredIssuers } from '../../../store/action_creators/paymentMethods.actions';\nimport { AppActions } from '../../../store/config/ActionTypes';\nimport { Status } from '../../../store/config/enums';\nimport { DesiredIssuer, DesiredIssuersRequest, RootState } from '../../../store/config/types';\nimport colors from '../../../styles/_variables.module.scss';\nimport { CustomSnackbar } from '../../CustomSnackbar';\nimport { Loading } from '../../Loading';\nimport { ReturnButton } from '../../ReturnButton';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n '& > *': {\n marginTop: '1rem',\n color: colors.slateBlue,\n },\n '& .MuiCheckbox-root .MuiSvgIcon-root': {\n color: colors.slateBlue,\n },\n '& .MuiCheckbox-colorPrimary.Mui-checked': {\n '& .MuiSvgIcon-root': {\n color: colors.primary,\n },\n },\n },\n text: { marginBottom: '1rem' },\n formActions: {\n marginTop: '1rem',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: '1rem',\n '& button': {\n width: '100px',\n [theme.breakpoints.down('sm')]: {\n margin: '2rem 0 0',\n },\n },\n },\n confirmButton: {\n [theme.breakpoints.down('sm')]: {\n flexGrow: 1,\n },\n },\n }),\n);\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n paymentMethods: state.paymentMethods,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n fetchIssuers: () => dispatch(fetchIssuers()),\n sendDesiredIssuers: (businessId: number, { issuers }: DesiredIssuersRequest) =>\n dispatch(sendDesiredIssuers(businessId, { issuers })),\n});\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\n\nfunction IssuersForm({ auth, paymentMethods, sendDesiredIssuers, fetchIssuers }: PropsFromRedux) {\n const classes = useStyles();\n\n const navigate = useNavigate();\n const [changingDesiredIssuers, setChangingDessiredIssuers] = useState(false);\n const [desiredIssuers, setDessiredIssuers] = useState([]);\n const isRegister = window.location.pathname.startsWith('/register');\n\n useEffect(() => {\n if (\n !paymentMethods.loadingIssuers &&\n paymentMethods.issuers === null &&\n paymentMethods.issuersErrorMessage === null\n ) {\n fetchIssuers();\n }\n }, [\n paymentMethods.loadingIssuers,\n paymentMethods.issuers,\n paymentMethods.issuersErrorMessage,\n fetchIssuers,\n ]);\n\n const submit = () => {\n setChangingDessiredIssuers(true);\n sendDesiredIssuers(auth.account?.business.id!, { issuers: desiredIssuers });\n };\n\n const onChange = (event: React.ChangeEvent) => {\n if (desiredIssuers.some((i) => i.name === event.target.name)) {\n setDessiredIssuers(\n desiredIssuers.filter((i) => {\n return i.name !== event.target.name;\n }),\n );\n } else {\n setDessiredIssuers(\n desiredIssuers.concat([\n {\n name: event.target.name,\n id: event.target.id,\n },\n ]),\n );\n }\n };\n\n const closeSnack = () => {\n setChangingDessiredIssuers(false);\n if (paymentMethods.desiredIssuersSuccess) {\n navigate('/first-payment-method');\n }\n };\n\n return (\n
    \n \n \n Seleccioná los medios de pago que quieres habilitar para que el equipo comercial de Plexo te\n contacte y te ayude a obtener sus códigos de comercio.\n \n
    \n {paymentMethods.loadingIssuers ? (\n \n ) : (\n
    \n {paymentMethods.issuers &&\n paymentMethods.issuers.map((issuer) => (\n i.name === issuer.issuer)}\n color=\"primary\"\n onChange={onChange}\n name={issuer.issuer}\n id={issuer.id}\n />\n }\n label={issuer.issuer}\n />\n ))}\n
    \n )}\n
    \n
    \n
    \n {isRegister && (\n \n )}\n \n \n {paymentMethods.sendingDesiredIssuers ? (\n \n ) : (\n 'Confirmar'\n )}\n \n
    \n \n
    \n );\n}\n\nexport default connector(IssuersForm);\n","import { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { IssuersForm } from '../../components/forms/IssuersForm';\nimport { RootState } from '../../store/config/types';\n\nfunction RequestIssuers() {\n const auth = useSelector((state: RootState) => state.auth);\n const navigate = useNavigate();\n\n useEffect(() => {\n if (!auth.account) navigate(-1);\n }, [auth.account, navigate]);\n\n return (\n
    \n \n \n
    \n );\n}\n\nexport default RequestIssuers;\n","import { Button, CircularProgress, Paper, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { Field, Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { ThunkDispatch } from 'redux-thunk';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport schemas from '../../data/schemas';\nimport { resetPassword } from '../../store/action_creators/auth.actions';\nimport { AppActions } from '../../store/config/ActionTypes';\nimport { Status } from '../../store/config/enums';\nimport { ResetPasswordRequest, RootState } from '../../store/config/types';\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n resetPassword: (resetPasswordRequest: ResetPasswordRequest) =>\n dispatch(resetPassword(resetPasswordRequest)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\n\ninterface Values {\n email: string;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n primaryButton: {\n width: '50%',\n },\n secondaryButton: {\n width: '27%',\n },\n button: {\n [theme.breakpoints.down('sm')]: {\n minWidth: 'unset',\n width: '48%',\n },\n },\n }),\n);\n\nfunction ResetPassword({ auth, resetPassword }: PropsFromRedux) {\n const navigate = useNavigate();\n const classes = useStyles();\n\n const [resetingPassword, setResetingPassword] = useState(false);\n\n const submitLogin = (values: Values, helpers: FormikHelpers) => {\n const request: ResetPasswordRequest = {\n email: values.email,\n };\n\n setResetingPassword(true);\n resetPassword(request);\n };\n\n const closeSnack = () => {\n setResetingPassword(false);\n };\n\n return (\n
    \n \n \n \n {() => (\n
    \n \n
    \n navigate('/login')}\n className={`${classes.button} ${classes.secondaryButton}`}\n >\n Volver\n \n \n {resetingPassword ? : 'Reiniciar'}\n \n
    \n \n )}\n \n \n
    \n
    \n );\n}\n\nexport default connector(ResetPassword);\n","import { Button, Typography } from '@material-ui/core';\nimport { PDFDownloadLink } from '@react-pdf/renderer';\nimport Lottie from 'lottie-react';\nimport { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport successAnimation from '../../assets/plinks-success.json';\nimport { ErrorCard } from '../../components/ErrorCard';\nimport { LandingLayout } from '../../components/Landing';\nimport { Loading } from '../../components/Loading';\nimport { PDFReceipt } from '../../components/PDFReceipt';\nimport { urlHelper } from '../../helpers/urlHelper';\nimport { RootState } from '../../store/config/types';\n\nfunction Result() {\n const { payments, business } = useSelector((state: RootState) => ({\n payments: state.payments,\n business: state.business,\n }));\n const [ready, setReady] = useState(false);\n const navigate = useNavigate();\n let urlVars = urlHelper.parseQueryString();\n const transactionPayment = payments.transactionPayment;\n\n const isAbitabPayment = transactionPayment?.instrument.issuerName === 'Abitab';\n\n const suscessTitle = isAbitabPayment ? '¡Pago iniciado!' : '¡Tu pago ha sido procesado con éxito!';\n const successSubtitle = 'Su proceso ha finalizado, para salir solo debes cerrar la ventana.';\n const animation = ;\n const successContent = (\n <>\n {isAbitabPayment ? (\n <>\n \n {`El código a presentar en Abitab es ${transactionPayment?.abitabCode}`}\n \n \n {`También puede realizar el pago con su número de CI ${transactionPayment?.instrument?.issuerName}`}\n \n \n ) : (\n \n Referencia de pago: {payments.confirmedPayment?.plexoReferenceId}\n \n )}\n {transactionPayment && payments.confirmedPayment && ready && (\n \n }\n fileName={`Pago ${payments.confirmedPayment.plexoReferenceId}`}\n style={{ textDecoration: 'none' }}\n >\n {({ loading }) => (\n \n )}\n \n )}\n \n );\n\n useEffect(() => {\n if (\n !payments.confirmingPayment &&\n !payments.confirmPaymentSuccess &&\n payments.confirmPaymentErrorMessage === null &&\n !urlVars.beginPaymentId\n ) {\n navigate('/');\n }\n }, [\n payments.confirmingPayment,\n payments.confirmPaymentSuccess,\n payments.confirmPaymentErrorMessage,\n urlVars.beginPaymentId,\n navigate,\n ]);\n\n useEffect(() => {\n if (!ready) {\n setTimeout(() => {\n setReady(true);\n }, 500);\n }\n }, [ready, setReady]);\n\n return payments.confirmingPayment ? (\n \n ) : payments.confirmPaymentErrorMessage !== null ? (\n \n ) : (\n
    \n \n
    \n );\n}\n\nexport default Result;\n","import { Card, createStyles, Divider, makeStyles, Theme } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport EditIcon from '../../assets/EditIcon';\nimport { SubBusinessStatusEnum } from '../../store/config/enums';\nimport { PaymentMethod, SubBusiness } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { StatusPill } from '../StatusPill';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n subBusinessCard: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n borderRadius: '6px',\n width: '100%',\n padding: '0.625rem 1.25rem',\n },\n titleAndStatus: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n '& p': {\n textSize: '0.875rem',\n color: styles.slateBlue,\n fontWeight: +styles.semiBoldTextWeight,\n margin: 0,\n },\n },\n divider: {\n margin: '0.625rem 0',\n height: '1px',\n },\n paymentMethodContainer: {\n display: 'flex',\n height: '100%',\n '& img': {\n height: '100%',\n },\n },\n paymentMethodsAndAction: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n },\n paymentMethods: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n '& i': {\n fontSize: '0.75rem',\n fontWeight: +styles.normalTextWeight,\n color: styles.iconColor,\n },\n '& img': {\n height: '1.5rem',\n },\n },\n paymentMethodDivider: {\n margin: '0 0.4rem',\n },\n }),\n);\n\ninterface MobileSubBusinessCardProps {\n subBusiness: SubBusiness;\n paymentMethods: PaymentMethod[];\n}\n\nfunction MobileSubBusinessCard({ subBusiness, paymentMethods }: MobileSubBusinessCardProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const noPaymentMethods = paymentMethods?.length === 0;\n const paymentMethodLimit = 3;\n const hasMorePaymentMethods = paymentMethods?.length > paymentMethodLimit;\n const reducedPaymentMethods = hasMorePaymentMethods\n ? paymentMethods.slice(0, paymentMethodLimit)\n : paymentMethods;\n const enabled = subBusiness.status === SubBusinessStatusEnum.ACTIVE;\n\n return (\n \n
    \n

    {subBusiness.name}

    \n \n
    \n \n
    \n
    \n {noPaymentMethods ? (\n no hay medios de pagos activados\n ) : (\n reducedPaymentMethods?.map((paymentMethod, index) => (\n
    \n \"\"\n {index !== paymentMethods?.length - 1 && (\n \n )}\n
    \n ))\n )}\n {hasMorePaymentMethods && (\n \n )}\n
    \n navigate('/sub-business', { state: { subBusiness } })}>\n \n \n
    \n
    \n );\n}\n\nexport default MobileSubBusinessCard;\n","import { createStyles, Divider, makeStyles, Paper, Theme } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport EditIcon from '../../assets/EditIcon';\nimport { SubBusinessStatusEnum } from '../../store/config/enums';\nimport { PaymentMethod, SubBusiness } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { StatusPill } from '../StatusPill';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n subBusinessCard: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n borderRadius: '10px',\n padding: '0.625rem 1.25rem',\n '& p': {\n textSize: '0.875rem',\n color: styles.slateBlue,\n fontWeight: +styles.semiBoldTextWeight,\n },\n },\n titleAndPaymentMethods: {\n display: 'flex',\n flexDirection: 'column',\n '& p': {\n margin: 0,\n },\n },\n paymentMethods: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: '0.625rem',\n maxHeight: '1.5rem',\n '& i': {\n fontSize: '0.75rem',\n fontWeight: +styles.normalTextWeight,\n color: styles.iconColor,\n },\n },\n paymentMethodContainer: {\n display: 'flex',\n height: '100%',\n '& img': {\n height: '100%',\n },\n },\n stateAndActions: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n '& span': {\n display: 'flex',\n },\n },\n paymentMethodDivider: {\n margin: '0 0.75rem',\n },\n divider: {\n margin: '0 0.75rem',\n height: '50%',\n alignSelf: 'unset',\n },\n }),\n);\n\ninterface SubBusinessCardProps {\n subBusiness: SubBusiness;\n paymentMethods: PaymentMethod[];\n}\n\nfunction SubBusinessCard({ subBusiness, paymentMethods }: SubBusinessCardProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n const noPaymentMethods = paymentMethods?.length === 0;\n const paymentMethodLimit = 5;\n const hasMorePaymentMethods = paymentMethods?.length > paymentMethodLimit;\n const reducedPaymentMethods = hasMorePaymentMethods\n ? paymentMethods.slice(0, paymentMethodLimit)\n : paymentMethods;\n const enabled = subBusiness.status === SubBusinessStatusEnum.ACTIVE;\n\n return (\n \n
    \n

    {subBusiness.name}

    \n
    \n {noPaymentMethods ? (\n no hay medios de pagos activados\n ) : (\n reducedPaymentMethods?.map((paymentMethod, index) => (\n
    \n \"\"\n {index !== paymentMethods?.length - 1 && (\n \n )}\n
    \n ))\n )}\n {hasMorePaymentMethods && (\n \n )}\n
    \n
    \n
    \n \n \n navigate(`/sub-business/${subBusiness.id}`)}>\n \n \n
    \n
    \n );\n}\n\nexport default SubBusinessCard;\n","import {\n CreatePaymentMethodForSubBusinessRequest,\n CreateSubBusinessRequest,\n PaymentMethod,\n SubBusiness,\n UpdateSubBusinessRequest,\n} from '../store/config/types';\nimport { get, httpDelete, post, put } from './base.service';\nimport { endpoints } from './endpoints';\n\nexport const subBusinessService = {\n fetchSubBusiness,\n createSubBusiness,\n updateSubBusiness,\n deleteSubBusinessPaymentMethod,\n createPaymentMethodForSubBusiness,\n};\n\nasync function fetchSubBusiness(businessId: number): Promise {\n return await get(`${endpoints['subBusiness']}?businessId=${businessId}`)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function createSubBusiness(\n createSubBusinessRequest: CreateSubBusinessRequest,\n): Promise {\n return await post(`${endpoints['subBusiness']}`, createSubBusinessRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function updateSubBusiness(\n updateSubBusinessRequest: UpdateSubBusinessRequest,\n): Promise {\n return await put(`${endpoints['subBusiness']}`, updateSubBusinessRequest)\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function deleteSubBusinessPaymentMethod(\n businessId: number,\n paymentMethodId: number,\n subBusinessId: string,\n): Promise {\n return await httpDelete(\n `${endpoints['issuers']}/configuration/${businessId}/${paymentMethodId}`,\n { subBusinessId },\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n\nasync function createPaymentMethodForSubBusiness(\n createPaymentMethodForSubBusinessRequest: CreatePaymentMethodForSubBusinessRequest,\n): Promise {\n return await post(\n `${endpoints['issuers']}/configuration`,\n createPaymentMethodForSubBusinessRequest,\n )\n .then((response) => {\n return response.parsedBody;\n })\n .catch((error) => {\n throw error;\n });\n}\n","import { Dispatch } from 'redux';\nimport { subBusinessService } from '../../services/subBusiness.service';\nimport {\n ADD_SUB_BUSINESS,\n ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED,\n ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS,\n ADDING_SUB_BUSINESS_PAYMENT_METHOD,\n CREATE_SUB_BUSINESS_FAILED,\n CREATE_SUB_BUSINESS_SUCCESS,\n CreateSubBusinessTypes,\n CREATING_SUB_BUSINESS,\n DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED,\n DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS,\n DELETING_SUB_BUSINESS_PAYMENT_METHOD,\n FETCH_SUB_BUSINESS_FAILED,\n FETCHING_SUB_BUSINESS,\n FetchSubBusinessTypes,\n UPDATE_SUB_BUSINESS_FAILED,\n UPDATE_SUB_BUSINESS_SUCCESS,\n UpdateSubBusinessTypes,\n UPDATING_SUB_BUSINESS,\n} from '../config/ActionTypes';\nimport {\n CreatePaymentMethodForSubBusinessRequest,\n CreateSubBusinessRequest,\n PaymentMethod,\n SubBusiness,\n UpdateSubBusinessRequest,\n} from '../config/types';\n\nexport const fetchSubBusiness = (businessId: number) => {\n return (dispatch: Dispatch) => {\n dispatch(loadingSubBusiness());\n\n return subBusinessService.fetchSubBusiness(businessId).then(\n (response) => {\n dispatch(addSubBusiness(response!));\n },\n (error) => {\n dispatch(subBusinessFailed(error));\n },\n );\n };\n};\n\nexport const loadingSubBusiness = (): FetchSubBusinessTypes => ({\n type: FETCHING_SUB_BUSINESS,\n});\n\nexport const addSubBusiness = (subBusiness: SubBusiness[]): FetchSubBusinessTypes => ({\n type: ADD_SUB_BUSINESS,\n subBusiness,\n});\n\nexport const subBusinessFailed = (error: string): FetchSubBusinessTypes => ({\n type: FETCH_SUB_BUSINESS_FAILED,\n error,\n});\n\n//#region Update SubBusiness\n\nexport const createSubBusiness = (createSubBusinessRequest: CreateSubBusinessRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(creatingSubBusiness());\n\n return subBusinessService.createSubBusiness(createSubBusinessRequest).then(\n (response) => {\n dispatch(createSubBusinessSuccess(response!));\n },\n (error) => {\n dispatch(createSubBusinessFailed(error));\n },\n );\n };\n};\n\nexport const creatingSubBusiness = (): CreateSubBusinessTypes => ({\n type: CREATING_SUB_BUSINESS,\n});\n\nexport const createSubBusinessSuccess = (subBusiness: SubBusiness): CreateSubBusinessTypes => ({\n type: CREATE_SUB_BUSINESS_SUCCESS,\n subBusiness,\n});\n\nexport const createSubBusinessFailed = (error: string): CreateSubBusinessTypes => ({\n type: CREATE_SUB_BUSINESS_FAILED,\n error,\n});\n\n//endregion\n\n//#region Update SubBusiness\n\nexport const updateSubBusiness = (updateSubBusinessRequest: UpdateSubBusinessRequest) => {\n return (dispatch: Dispatch) => {\n dispatch(updatingSubBusiness());\n\n return subBusinessService.updateSubBusiness(updateSubBusinessRequest).then(\n (response) => {\n dispatch(updateSubBusinessSuccess(response!));\n },\n (error) => {\n dispatch(updateSubBusinessFailed(error));\n },\n );\n };\n};\n\nexport const updatingSubBusiness = (): UpdateSubBusinessTypes => ({\n type: UPDATING_SUB_BUSINESS,\n});\n\nexport const updateSubBusinessSuccess = (subBusiness: SubBusiness): UpdateSubBusinessTypes => ({\n type: UPDATE_SUB_BUSINESS_SUCCESS,\n subBusiness,\n});\n\nexport const updateSubBusinessFailed = (error: string): UpdateSubBusinessTypes => ({\n type: UPDATE_SUB_BUSINESS_FAILED,\n error,\n});\n\nexport const resetUpdateSubBusinessPaymentMethodState = () => {\n return (dispatch: Dispatch) => {\n dispatch({ type: 'RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE' });\n };\n};\n\n//endregion\n\n//#region Delete SubBusiness\n\nexport const deleteSubBusinessPaymentMethod = (\n businessId: number,\n paymentMethodId: number,\n subBusinessId: string,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(deletingSubBusinessPaymentMethod());\n\n return subBusinessService.deleteSubBusinessPaymentMethod(businessId, paymentMethodId, subBusinessId).then(\n (response) => {\n dispatch(deleteSubBusinessPaymentMethodSuccess(response!));\n },\n (error) => {\n dispatch(deleteSubBusinessPaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const deletingSubBusinessPaymentMethod = (): UpdateSubBusinessTypes => ({\n type: DELETING_SUB_BUSINESS_PAYMENT_METHOD,\n});\n\nexport const deleteSubBusinessPaymentMethodSuccess = (subBusiness: SubBusiness): UpdateSubBusinessTypes => ({\n type: DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS,\n});\n\nexport const deleteSubBusinessPaymentMethodFailed = (error: string): UpdateSubBusinessTypes => ({\n type: DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED,\n error,\n});\n\n//endregion\n\n//#region Add PaymentMethod to SubBusiness\n\nexport const createPaymentMethodForSubBusiness = (\n createPaymentMethodForSubBusinessRequest: CreatePaymentMethodForSubBusinessRequest,\n) => {\n return (dispatch: Dispatch) => {\n dispatch(addingSubBusinessPaymentMethod());\n\n return subBusinessService\n .createPaymentMethodForSubBusiness(createPaymentMethodForSubBusinessRequest)\n .then(\n (response) => {\n dispatch(addSubBusinessPaymentMethodSuccess(response!));\n },\n (error) => {\n dispatch(addSubBusinessPaymentMethodFailed(error));\n },\n );\n };\n};\n\nexport const addingSubBusinessPaymentMethod = (): UpdateSubBusinessTypes => ({\n type: ADDING_SUB_BUSINESS_PAYMENT_METHOD,\n});\n\nexport const addSubBusinessPaymentMethodSuccess = (paymentMethod: PaymentMethod): UpdateSubBusinessTypes => ({\n type: ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS,\n paymentMethod,\n});\n\nexport const addSubBusinessPaymentMethodFailed = (error: string): UpdateSubBusinessTypes => ({\n type: ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED,\n error,\n});\n\n//endregion\n","import { Button, Card, createStyles, makeStyles, Theme, useMediaQuery, useTheme } from '@material-ui/core';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { EmptyMessage } from '../../components/EmptyMessage';\nimport { Loading } from '../../components/Loading';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport MobileSubBusinessCard from '../../components/SubBusiness/MobileSubBusinessCard';\nimport SubBusinessCard from '../../components/SubBusiness/SubBusinessCard';\nimport { fetchSubBusiness } from '../../store/action_creators/subBusiness.actions';\nimport { RootState, SubBusiness } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n screenTitle: {\n display: 'flex',\n flexDirection: 'row',\n width: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n helperText: {\n textAlign: 'left',\n alignSelf: 'flex-start',\n margin: '0.5625rem 0 0 0',\n color: styles.blackText,\n fontSize: '0.875rem',\n fontWeight: +styles.normalTextWeight,\n },\n container: {\n width: '100%',\n padding: '3rem',\n marginTop: '1rem',\n },\n subBusinessContainer: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n marginTop: '1rem',\n gap: '1.0625rem',\n },\n }),\n);\n\nfunction SplitPayments() {\n const theme = useTheme();\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const { auth, subBusiness } = useSelector((state: RootState) => state);\n const classes = useStyles();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const businessId = auth.account?.business.id!;\n\n useEffect(() => {\n if (!auth.account?.business?.acceptsSplitPayments) {\n navigate('/dashboard');\n }\n }, [auth.account?.business?.acceptsSplitPayments, navigate]);\n\n useEffect(() => {\n if (auth.account) {\n dispatch(fetchSubBusiness(businessId));\n }\n }, [auth.account, businessId, dispatch]);\n\n return (\n
    \n
    \n \n \n \n
    \n

    Crea y configura los comercios con los que dividirás los pagos

    \n {!subBusiness.subBusinesses ? (\n \n ) : subBusiness.subBusinesses?.length === 0 ? (\n \n \n \n ) : (\n
    \n {subBusiness.subBusinesses?.map((subBusiness: SubBusiness) =>\n isMobile ? (\n \n ) : (\n \n ),\n )}\n
    \n )}\n
    \n );\n}\n\nexport default SplitPayments;\n","import { Grid } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { PaymentMethod, Field as PlexoField } from '../../../store/config/types';\nimport { FormSwitchField } from '../../forms/FormSwitchField';\nimport { FormTextField } from '../../forms/FormTextField';\n\ninterface PlexoFieldsProps {\n fields: PlexoField[] | undefined;\n paymentMethod: PaymentMethod | null;\n}\n\ninterface FieldType {\n value: string;\n name: string;\n}\n\nfunction SubBusinessPlexoFields({ fields, paymentMethod }: PlexoFieldsProps) {\n if (!fields) return null;\n\n const getPlexoFieldData = (type: number) => {\n switch (type) {\n case 2049:\n return {\n name: 'Código de comercio',\n value: 'commerceNumber',\n };\n\n case 2051:\n return {\n name: 'Número de terminal',\n value: 'terminalNumber',\n };\n\n case 270:\n return {\n name: 'Número de cuenta',\n value: 'accountNumber',\n };\n case 532:\n return {\n name: 'Transferencias entre bancos',\n value: 'crossBankTransfers',\n };\n case 2060:\n return {\n name: 'RUT',\n value: 'rut',\n };\n case 2057:\n return {\n name: 'MCC',\n value: 'merchantCategoryCode',\n };\n\n default:\n return { name: '', value: '', setValue: null };\n }\n };\n\n const renderCrossBankTransfersField = (fieldData: FieldType, paymentMethod: PaymentMethod) => (\n \n \n \n );\n\n const renderDefaultField = (fieldData: FieldType) => (\n \n \n \n );\n\n return (\n <>\n {fields.map((f) => {\n const fieldData = getPlexoFieldData(f.fieldType);\n\n if (fieldData.value === '') {\n return null;\n }\n\n if (fieldData.value === 'crossBankTransfers') {\n return renderCrossBankTransfersField(fieldData, paymentMethod!);\n }\n\n return renderDefaultField(fieldData);\n })}\n \n );\n}\n\nexport default SubBusinessPlexoFields;\n","import { Grid } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { ReactElement } from 'react';\nimport { useSelector } from 'react-redux';\nimport { issuerHelper } from '../../../helpers/issuerHelper';\nimport { Issuer, PaymentMethod, RootState } from '../../../store/config/types';\nimport { FormSelectField } from '../FormSelectField';\n\ninterface IssuerAndAcquirerProps {\n paymentMethod: PaymentMethod | null;\n selectedIssuer: Issuer | null;\n installmentsField: ReactElement | boolean;\n}\n\nfunction IssuerAndAcquirer({ paymentMethod, selectedIssuer, installmentsField }: IssuerAndAcquirerProps) {\n const paymentMethods = useSelector((state: RootState) => state.paymentMethods);\n\n const issuersList = issuerHelper.getIssuersList(paymentMethods, paymentMethod);\n\n return (\n <>\n \n \n \n \n {installmentsField}\n \n {selectedIssuer?.paymentProcessors && (\n \n {\n return {\n id: pp.acquirer,\n value: pp.acquirer,\n disabled: false,\n };\n })\n : []\n }\n />\n \n )}\n \n );\n}\n\nexport default IssuerAndAcquirer;\n","import { Grid } from '@material-ui/core';\nimport { Field } from 'formik';\nimport { FormTextField } from '../FormTextField';\n\nfunction SoftDescriptor() {\n return (\n <>\n \n \n \n \n El \"Soft descriptor\" es el texto que se le muestra al cliente en el estado de cuenta de la tarjeta\n \n \n );\n}\n\nexport default SoftDescriptor;\n","import { Button, CircularProgress } from '@material-ui/core';\nimport { PaymentMethod } from '../../../store/config/types';\n\ninterface SubmitButtonProps {\n isRegisterStep: boolean;\n creatingCommerce: boolean;\n updatingCommerce: boolean;\n paymentMethod: PaymentMethod | null;\n disabled?: boolean;\n loading?: boolean;\n}\n\nfunction SubmitButton({\n isRegisterStep,\n creatingCommerce,\n updatingCommerce,\n paymentMethod,\n disabled,\n loading,\n}: SubmitButtonProps) {\n return (\n
    \n \n {creatingCommerce || updatingCommerce || loading ? (\n \n ) : paymentMethod ? (\n 'Guardar cambios'\n ) : (\n 'Agregar medio de pago'\n )}\n \n
    \n );\n}\n\nexport default SubmitButton;\n","import { Grid, Typography } from '@material-ui/core';\nimport { Form, Formik, FormikHelpers } from 'formik';\nimport { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ISSUERS_WITHOUT_INSTALLMENTS } from '../../../data/constants';\nimport schemas from '../../../data/schemas';\nimport { createPaymentMethodForSubBusiness } from '../../../store/action_creators/subBusiness.actions';\nimport {\n BasePaymentMethod,\n CreatePaymentMethodForSubBusinessRequest,\n Issuer,\n PaymentMethod,\n RootState,\n SubBusiness,\n} from '../../../store/config/types';\nimport PlexoFieldsForSubBusiness from '../../dialogs/PaymentMethodDialog/PlexoFieldsForSubBusiness';\nimport IssuerAndAcquirer from './IssuerAndAcquirer';\nimport SoftDescriptor from './SoftDescriptor';\nimport SubmitButton from './SubmitButton';\n\ninterface Values extends Omit {\n issuer: string;\n acquirer: string;\n installments: number[];\n crossBankTransfers: boolean;\n commerceNumber: string;\n terminalNumber: string;\n}\n\ninterface SubBusinessPaymentMethodFormProps {\n handleSuccess: () => void;\n paymentMethod: PaymentMethod | null;\n addPaymentMethodToSubBusiness: (paymentMethod: Values, isAlreadyInState: boolean) => void;\n selectedSubBusiness?: SubBusiness;\n}\n\nfunction SubBusinessPaymentMethodForm({\n paymentMethod,\n handleSuccess,\n addPaymentMethodToSubBusiness,\n selectedSubBusiness,\n}: SubBusinessPaymentMethodFormProps) {\n const { auth, paymentMethods } = useSelector((state: RootState) => state);\n const dispatch = useDispatch();\n const selectedInstallments = paymentMethod ? paymentMethod.values : [1];\n const isIssuerWithoutInstallments = (selectedIssuer: Issuer | null): boolean => {\n return selectedIssuer ? ISSUERS_WITHOUT_INSTALLMENTS.includes(selectedIssuer?.issuerId) : false;\n };\n const [addingPaymentMethod, setAddingPaymentMethod] = useState(false);\n\n const businessId = auth.account?.business.id;\n\n const submitPaymentMethod = (values: Values, helpers: FormikHelpers) => {\n setAddingPaymentMethod(true);\n if (selectedSubBusiness) {\n const createPaymentMethodForSubBusinessRequest: CreatePaymentMethodForSubBusinessRequest = {\n softDescriptor: values.softDescriptor ? values.softDescriptor : '',\n commerceNumber: values.commerceNumber ? values.commerceNumber : '',\n terminalNumber: values.terminalNumber ? values.terminalNumber : '',\n issuerId: +values.issuer,\n businessId: businessId!,\n installments: values.installments,\n acquirer: values.acquirer,\n subBusiness: {\n id: selectedSubBusiness.id,\n name: selectedSubBusiness.name,\n plexoCommerceId: selectedSubBusiness.plexoCommerceId,\n plexoCommerceName: selectedSubBusiness.plexoCommerceName,\n },\n };\n dispatch(createPaymentMethodForSubBusiness(createPaymentMethodForSubBusinessRequest));\n }\n addPaymentMethodToSubBusiness(values, false);\n handleSuccess();\n setAddingPaymentMethod(false);\n };\n\n const renderContent = (noInstallmentsIssuer: boolean, selectedIssuer: Issuer | undefined, fields: any) => (\n <>\n \n Agrega un primer medio de pago al comercio\n \n \n \n \n \n \n \n );\n\n return (\n \n {({ values }) => {\n const selectedIssuer =\n paymentMethods.issuers && paymentMethods.issuers.filter((i) => i.id === values.issuer)[0];\n\n const selectedAcquirer = selectedIssuer?.paymentProcessors\n ? selectedIssuer?.paymentProcessors.filter((pp) => pp.acquirer === values.acquirer)[0]\n : '';\n\n const fields = selectedAcquirer\n ? selectedAcquirer.fields\n : !selectedIssuer || !selectedIssuer.paymentProcessors\n ? selectedIssuer?.fields\n : paymentMethod\n ? selectedIssuer?.fields\n : [];\n\n const noInstallmentsIssuer = isIssuerWithoutInstallments(selectedIssuer);\n\n const isSubmitButtonDisabled =\n (!paymentMethod && !values.softDescriptor) || !values.acquirer || addingPaymentMethod;\n\n return (\n
    \n {renderContent(noInstallmentsIssuer, selectedIssuer!, fields)}\n \n \n );\n }}\n \n );\n}\n\nexport default SubBusinessPaymentMethodForm;\n","import { Dialog, DialogContent, DialogTitle } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchIssuers } from '../../../store/action_creators/paymentMethods.actions';\nimport { PaymentMethod, PaymentMethodToAdd, RootState, SubBusiness } from '../../../store/config/types';\nimport SubBusinessPaymentMethodForm from '../../forms/SubBusinessPaymentMethodForm/SubBusinessPaymentMethodForm';\n\ninterface SubBusinessDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n paymentMethod: PaymentMethod | null;\n addPaymentMethodToSubBusiness: (paymentMethod: PaymentMethodToAdd, isAlreadyInState: boolean) => void;\n selectedSubBusiness?: SubBusiness;\n}\n\nfunction SubBusinessDialog({\n open,\n setOpen,\n paymentMethod,\n addPaymentMethodToSubBusiness,\n selectedSubBusiness,\n}: SubBusinessDialogProps) {\n const dispatch = useDispatch();\n const paymentMethods = useSelector((state: RootState) => state.paymentMethods);\n\n const closeDialog = () => setOpen(false);\n\n useEffect(() => {\n if (\n !paymentMethods.loadingIssuers &&\n paymentMethods.issuers === null &&\n paymentMethods.issuersErrorMessage === null\n ) {\n dispatch(fetchIssuers());\n }\n }, [paymentMethods.loadingIssuers, paymentMethods.issuers, paymentMethods.issuersErrorMessage, dispatch]);\n\n return (\n \n \n \n \n {paymentMethods.issuers && (\n <>\n \n \n \n \n )}\n \n );\n}\n\nexport default SubBusinessDialog;\n","import { IconProps } from '../../../data/icon.type';\nimport colors from '../../../styles/_variables.module.scss';\n\nfunction AddPaymentMethodIcon({ color, className }: IconProps) {\n color = color ?? colors.slateBlue;\n className = className ?? '';\n\n return (\n \n \n \n \n );\n}\n\nexport default AddPaymentMethodIcon;\n","import { CircularProgress, createStyles, Divider, makeStyles, Theme, Typography } from '@material-ui/core';\nimport { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport DeleteIcon from '../../assets/deleteIcon';\nimport { fetchPaymentMethods } from '../../store/action_creators/paymentMethods.actions';\nimport { deleteSubBusinessPaymentMethod } from '../../store/action_creators/subBusiness.actions';\nimport { IssuersCommand, PaymentMethod, RootState, SubBusiness } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\nimport { AddPaymentMethodIcon } from '../Icons/AddPaymentMethodIcon';\nimport SinglePaymentMethodDeleteTooltip from './SingleDeletePaymentMethodDeleteTooltip';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n commerceCard: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n height: '100%',\n backgroundColor: styles.white,\n padding: '0.8125rem 1rem',\n },\n grayscale: {\n filter: 'grayscale(100%)',\n '& > img': {\n opacity: 0.5,\n },\n },\n icon: {\n alignSelf: 'flex-end',\n cursor: 'pointer',\n },\n divider: {\n width: '85%',\n margin: '0.625rem 0',\n },\n }),\n);\n\ninterface PaymentMethodsToAddProps {\n openModalWithCommerceData: (paymentMethod: PaymentMethod) => void;\n paymentMethodsToAdd: IssuersCommand[];\n addPaymentMethodToSubBusiness: (paymentMethod: PaymentMethod, isAlreadyInState: boolean) => void;\n selectedSubBusiness?: SubBusiness;\n setUpdatingSubBusinessPaymentMethod: (value: boolean) => void;\n}\n\nfunction PaymentMethodsToAdd({\n openModalWithCommerceData,\n paymentMethodsToAdd,\n addPaymentMethodToSubBusiness,\n selectedSubBusiness,\n setUpdatingSubBusinessPaymentMethod,\n}: PaymentMethodsToAddProps) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const { auth, paymentMethods } = useSelector((state: RootState) => state);\n const businessId = auth.account?.business.id;\n\n useEffect(() => {\n if (\n auth.account &&\n !paymentMethods.loadingPaymentMethods &&\n paymentMethods.paymentMethods === null &&\n paymentMethods.paymentMethodsErrorMessage === null\n ) {\n dispatch(fetchPaymentMethods(auth.account.business.id!));\n }\n }, [\n auth.account,\n paymentMethods.loadingPaymentMethods,\n paymentMethods.paymentMethods,\n paymentMethods.paymentMethodsErrorMessage,\n dispatch,\n ]);\n\n if (paymentMethods.loadingPaymentMethods) return ;\n\n const deletePaymentMethodFromSubBusiness = (\n paymentMethod: PaymentMethod,\n comerceToRemove: PaymentMethod,\n isPaymentMethodInSubBusiness: boolean,\n ) => {\n if (selectedSubBusiness) {\n setUpdatingSubBusinessPaymentMethod(true);\n dispatch(deleteSubBusinessPaymentMethod(businessId!, paymentMethod.issuerId, selectedSubBusiness.id));\n addPaymentMethodToSubBusiness(comerceToRemove, isPaymentMethodInSubBusiness);\n }\n };\n\n const handleClick = (paymentMethod: PaymentMethod, isPaymentMethodInSubBusiness: boolean) => {\n if (!(selectedSubBusiness && isPaymentMethodInSubBusiness && paymentMethodsToAdd.length === 1)) {\n const comerceToRemove = { ...paymentMethod, issuer: paymentMethod.issuerId };\n\n isPaymentMethodInSubBusiness\n ? selectedSubBusiness\n ? deletePaymentMethodFromSubBusiness(paymentMethod, comerceToRemove, isPaymentMethodInSubBusiness)\n : addPaymentMethodToSubBusiness(comerceToRemove, isPaymentMethodInSubBusiness)\n : openModalWithCommerceData(paymentMethod);\n }\n };\n\n return (\n <>\n
    \n {paymentMethods.paymentMethods &&\n paymentMethods.paymentMethods.map((paymentMethod, index) => {\n const isPaymentMethodInSubBusiness = paymentMethodsToAdd.some(\n (issuerCommand: IssuersCommand) => +issuerCommand.issuerId === paymentMethod.issuerId,\n );\n return (\n \n
    \n handleClick(paymentMethod, isPaymentMethodInSubBusiness)}>\n {selectedSubBusiness &&\n isPaymentMethodInSubBusiness &&\n paymentMethodsToAdd.length === 1 ? (\n \n ) : isPaymentMethodInSubBusiness ? (\n \n ) : (\n \n )}\n \n
    \n \"logo\"\n \n
    \n \n {paymentMethod.issuerName ? paymentMethod.issuerName : '-'}\n \n
    \n
    \n );\n })}\n \n \n );\n}\n\nexport default PaymentMethodsToAdd;\n","import {\n Button,\n CircularProgress,\n createStyles,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport colors from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n container: {\n margin: '1.5625rem',\n [theme.breakpoints.down('sm')]: {\n '& .MuiDialog-paper': {\n margin: '0',\n width: '100%',\n },\n },\n '& .MuiDialogActions-root': {\n justifyContent: 'center',\n paddingBottom: '1.5625rem',\n },\n },\n title: {\n padding: '1.5625rem 1.875rem 0.3125rem',\n textAlign: 'center',\n },\n contentText: {\n textAlign: 'center',\n fontSize: '0.9375rem',\n color: colors.slateBlue,\n },\n deleteButton: {\n backgroundColor: colors.primary,\n border: `1px solid ${colors.primary}`,\n color: colors.white,\n '&:hover': {\n backgroundColor: colors.white,\n color: colors.primary,\n boxShadow: 'none',\n },\n '&.Mui-disabled': {\n backgroundColor: colors.primary,\n border: 'none',\n color: colors.white,\n opacity: 0.5,\n minHeight: '2.8rem',\n },\n },\n }),\n);\n\ninterface DisableSubBusinessDialogProps {\n open: boolean;\n handleClose(): void;\n handleConfirm(): void;\n disabledButton: boolean;\n}\n\nfunction DisableSubBusinessDialog({\n open,\n handleClose,\n handleConfirm,\n disabledButton,\n}: DisableSubBusinessDialogProps) {\n const classes = useStyles();\n\n return (\n \n \n ¿Estás seguro que deseas deshabilitar este comercio?\n \n \n \n Si lo deshabilitas, todos los links creados para este comercio quedarán inactivos, y los clientes no\n podrán usarlos para pagar.\n \n \n \n \n \n {disabledButton ? : 'Confirmar'}\n \n \n \n );\n}\n\nexport default DisableSubBusinessDialog;\n","import { useDispatch, useSelector } from 'react-redux';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { resetUpdateSubBusinessPaymentMethodState } from '../../store/action_creators/subBusiness.actions';\nimport { Status } from '../../store/config/enums';\nimport { RootState } from '../../store/config/types';\n\ninterface PaymentMethodSnackbarProps {\n updatingSubBusinessPaymentMethod: boolean;\n setUpdatingSubBusinessPaymentMethod: (value: boolean) => void;\n}\n\nfunction PaymentMethodSnackbar({\n updatingSubBusinessPaymentMethod,\n setUpdatingSubBusinessPaymentMethod,\n}: PaymentMethodSnackbarProps) {\n const dispatch = useDispatch();\n const subBusiness = useSelector((state: RootState) => state.subBusiness);\n\n const isSuccessful =\n subBusiness.addSubBusinessPaymentMethodSuccess || subBusiness.deleteSubBusinessPaymentMethodSuccess;\n const isError =\n subBusiness.addSubBusinessPaymentMethodErrorMessage ||\n subBusiness.deleteSubBusinessPaymentMethodErrorMessage;\n\n const message = isSuccessful\n ? `Medio de pago ${\n subBusiness.addSubBusinessPaymentMethodSuccess ? 'agregado' : 'eliminado'\n } correctamente`\n : isError\n ? `Ocurrió un error al ${\n subBusiness.addSubBusinessPaymentMethodErrorMessage ? 'agregar' : 'eliminar'\n } el medio de pago`\n : 'Ocurrió un error al actualizar el medio de pago';\n\n const handleUpdatePaymentSnackbarExited = () => {\n dispatch(resetUpdateSubBusinessPaymentMethodState());\n };\n\n const handleClose = () => {\n setUpdatingSubBusinessPaymentMethod(false);\n };\n\n return (\n \n );\n}\n\nexport default PaymentMethodSnackbar;\n","import { Button, CircularProgress, createStyles, Divider, makeStyles, Theme } from '@material-ui/core';\nimport { FormikState } from 'formik/dist/types';\nimport { Dispatch, SetStateAction } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { IssuersCommand, SubBusiness } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n backButton: {\n minWidth: 'unset',\n },\n }),\n);\n\ninterface SubBusinessActionsProps {\n selectedSubBusiness: SubBusiness | undefined;\n setDisableDialogOpen: Dispatch>;\n changeSubBusinessStatus: () => void;\n changingSubBusinessStatus: boolean;\n subBusinessEnabled: boolean;\n creatingSubBusiness: boolean;\n updatingSubBusiness: boolean;\n paymentMethodsToAdd: IssuersCommand[];\n values: FormikState<{ name: string }>;\n}\n\nfunction SubBusinessActions({\n selectedSubBusiness,\n setDisableDialogOpen,\n changeSubBusinessStatus,\n changingSubBusinessStatus,\n subBusinessEnabled,\n creatingSubBusiness,\n updatingSubBusiness,\n paymentMethodsToAdd,\n values,\n}: SubBusinessActionsProps) {\n const classes = useStyles();\n const navigate = useNavigate();\n\n return (\n \n {selectedSubBusiness ? (\n <>\n setDisableDialogOpen(true) : () => changeSubBusinessStatus()}\n variant=\"outlined\"\n color=\"secondary\"\n disabled={changingSubBusinessStatus}\n >\n {changingSubBusinessStatus ? (\n \n ) : subBusinessEnabled ? (\n 'Deshabilitar'\n ) : (\n 'Habilitar'\n )}\n \n \n navigate(-1)}\n variant=\"outlined\"\n color=\"secondary\"\n >\n Volver\n \n \n ) : (\n <>\n navigate(-1)}\n variant=\"outlined\"\n color=\"secondary\"\n >\n Volver\n \n \n {creatingSubBusiness || updatingSubBusiness ? (\n \n ) : (\n 'Crear comercio'\n )}\n \n \n )}\n \n );\n}\n\nexport default SubBusinessActions;\n","import { Button, Card, CircularProgress, createStyles, makeStyles, Theme } from '@material-ui/core';\nimport { Field, Form } from 'formik';\nimport { FormTextField } from '../../components/forms/FormTextField';\nimport { SubBusiness } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n nameCard: {\n margin: '1.75rem 0',\n padding: '1.25rem',\n '& p': {\n margin: 0,\n color: styles.iconColor,\n fontSize: '0.875rem',\n fontWeight: +styles.normalFontWeight,\n },\n },\n informationCol: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 1,\n '& p': {\n color: styles.slateBlue,\n margin: '0.8rem 0 -0.6rem 0 ',\n },\n },\n fieldAndButton: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: '1rem',\n '& div:first-child': {\n margin: 0,\n },\n '& button': {\n marginLeft: '1rem',\n width: '12rem',\n height: '3.6rem',\n },\n },\n }),\n);\n\ninterface SubBusinessFormProps {\n selectedSubBusiness: SubBusiness | undefined;\n updatingSubBusiness: boolean;\n creatingSubBusiness: boolean;\n}\n\nfunction SubBusinessForm({\n selectedSubBusiness,\n updatingSubBusiness,\n creatingSubBusiness,\n}: SubBusinessFormProps) {\n const classes = useStyles();\n\n return (\n
    \n \n

    \n Ingresa los datos del comercio que deseas configurar. Para habilitarlo y asociarle links, asegúrate\n de configurar al menos un medio de pago\n

    \n
    \n

    Nombre del comercio

    \n
    \n \n {selectedSubBusiness && (\n \n {updatingSubBusiness ? : 'Guardar'}\n \n )}\n
    \n
    \n
    \n
    \n );\n}\n\nexport default SubBusinessForm;\n","import { Formik } from 'formik';\nimport { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport SubBusinessDialog from '../../components/dialogs/PaymentMethodDialog/SubBusinessDialog';\nimport { Loading } from '../../components/Loading';\nimport PaymentMethodsToAdd from '../../components/PaymentMethods/PaymentMethodsToAdd';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { useFetchLinksOnUpdate } from '../../hooks/useFetchLinksOnUpdate';\nimport { fetchPaymentMethods } from '../../store/action_creators/paymentMethods.actions';\nimport {\n createSubBusiness,\n fetchSubBusiness,\n updateSubBusiness,\n} from '../../store/action_creators/subBusiness.actions';\nimport { Status, SubBusinessStatusEnum } from '../../store/config/enums';\nimport {\n CreateSubBusinessRequest,\n IssuersCommand,\n PaymentMethod,\n PaymentMethodToAdd,\n RootState,\n SubBusiness as SubBusinessType,\n UpdateSubBusinessRequest,\n} from '../../store/config/types';\nimport DisableSubBusinessDialog from './DisableSubBusinessDialog';\nimport PaymentMethodSnackbar from './PaymentMethodSnackbar';\nimport SubBusinessActions from './SubBusinessActions';\nimport SubBusinessForm from './SubBusinessForm';\n\ninterface SubBusinessValues {\n name: string;\n}\n\nfunction SubBusiness() {\n const { auth, subBusiness, paymentMethods } = useSelector((state: RootState) => state);\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const params = useParams();\n const selectedSubBusiness: SubBusinessType | undefined = subBusiness.subBusinesses?.find(\n (subBusiness) => subBusiness.id === params.subBusinessId,\n );\n const [open, setOpen] = useState(false);\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState(null);\n const [creatingSubBusiness, setCreatingSubBusiness] = useState(false);\n const [updatingSubBusiness, setUpdatingSubBusiness] = useState(false);\n const [changingSubBusinessStatus, setChangingSubBusinessStatus] = useState(false);\n const [paymentMethodsToAdd, setPaymentMethodsToAdd] = useState([]);\n const [updatingSubBusinessPaymentMethod, setUpdatingSubBusinessPaymentMethod] = useState(false);\n const [diableDialogOpen, setDisableDialogOpen] = useState(false);\n const fetchLinksOnUpdate = useFetchLinksOnUpdate();\n const businessId = auth.account?.business.id;\n const subBusinessEnabled = selectedSubBusiness?.status === SubBusinessStatusEnum.ACTIVE;\n\n useEffect(() => {\n if (\n auth.account &&\n !paymentMethods.loadingPaymentMethods &&\n paymentMethods.paymentMethods === null &&\n paymentMethods.paymentMethodsErrorMessage === null\n ) {\n dispatch(fetchPaymentMethods(auth.account.business.id!));\n }\n }, [\n auth.account,\n paymentMethods.loadingPaymentMethods,\n paymentMethods.paymentMethods,\n paymentMethods.paymentMethodsErrorMessage,\n dispatch,\n ]);\n\n useEffect(() => {\n dispatch(fetchSubBusiness(auth.account?.business.id!));\n }, [auth.account?.business.id, dispatch]);\n\n useEffect(() => {\n if (selectedSubBusiness) {\n const commercesOfSubBusiness = selectedSubBusiness.installmentsDto.map((paymentMethod) => {\n return {\n issuerId: paymentMethod.issuerId.toString(),\n installments: paymentMethod.values,\n };\n });\n setPaymentMethodsToAdd((prevPaymentMethodsToAdd) => [\n ...prevPaymentMethodsToAdd,\n ...commercesOfSubBusiness,\n ]);\n }\n }, [selectedSubBusiness]);\n\n const openModalWithCommerceData = (paymentMethod: PaymentMethod) => {\n setSelectedPaymentMethod(paymentMethod);\n setOpen(true);\n };\n\n const submitSubBusiness = (values: SubBusinessValues) => {\n if (auth.account) {\n const configureIssuersCommand = paymentMethodsToAdd.map((commerce: IssuersCommand) => {\n return {\n softDescriptor: commerce.softDescriptor ?? '',\n commerceNumber: commerce.commerceNumber ?? '',\n terminalNumber: commerce.terminalNumber ?? '',\n issuerId: commerce.issuerId,\n installments: commerce.installments,\n acquirer: commerce.acquirer,\n };\n });\n\n if (!selectedSubBusiness) {\n setCreatingSubBusiness(true);\n\n const createSubBusinessRequest: CreateSubBusinessRequest = {\n name: values.name,\n businessId: businessId!,\n configureIssuersCommand,\n };\n\n dispatch(createSubBusiness(createSubBusinessRequest));\n } else {\n setUpdatingSubBusiness(true);\n\n const updateSubBusinessRequest: UpdateSubBusinessRequest = {\n subBusinessId: selectedSubBusiness.id,\n name: values.name,\n };\n\n dispatch(updateSubBusiness(updateSubBusinessRequest));\n }\n }\n };\n\n const addPaymentMethodToSubBusiness = (paymentMethod: PaymentMethodToAdd, isAlreadyInState: boolean) => {\n const issuerCommand: IssuersCommand = {\n issuerId: paymentMethod.issuer,\n softDescriptor: paymentMethod.softDescriptor,\n commerceNumber: paymentMethod.commerceNumber,\n terminalNumber: paymentMethod.terminalNumber,\n installments: paymentMethod.installments,\n acquirer: paymentMethod.acquirer,\n };\n\n if (isAlreadyInState) {\n setPaymentMethodsToAdd(\n paymentMethodsToAdd.filter((item: IssuersCommand) => +item.issuerId !== +issuerCommand.issuerId),\n );\n } else {\n setPaymentMethodsToAdd([...paymentMethodsToAdd, issuerCommand]);\n }\n\n if (selectedSubBusiness) {\n setUpdatingSubBusinessPaymentMethod(true);\n }\n };\n\n const changeSubBusinessStatus = () => {\n if (!selectedSubBusiness) return;\n\n setChangingSubBusinessStatus(true);\n\n const updateSubBusinessRequest: UpdateSubBusinessRequest = {\n subBusinessId: selectedSubBusiness.id,\n name: selectedSubBusiness.name,\n status: subBusinessEnabled ? SubBusinessStatusEnum.INACTIVE : SubBusinessStatusEnum.ACTIVE,\n };\n\n dispatch(updateSubBusiness(updateSubBusinessRequest));\n };\n\n const closeSnack = () => {\n setCreatingSubBusiness(false);\n setUpdatingSubBusiness(false);\n setChangingSubBusinessStatus(false);\n setDisableDialogOpen(false);\n fetchLinksOnUpdate();\n navigate(-1);\n };\n\n if (subBusiness.loadingSubBusiness) {\n return ;\n }\n\n return (\n <>\n \n {(values) => {\n return (\n
    \n \n \n \n {updatingSubBusinessPaymentMethod ? (\n \n ) : (\n \n )}\n \n \n \n \n
    \n );\n }}\n \n setDisableDialogOpen(false)}\n handleConfirm={changeSubBusinessStatus}\n disabledButton={changingSubBusinessStatus}\n />\n \n );\n}\n\nexport default SubBusiness;\n","import React from 'react';\nimport { createStyles, Divider, makeStyles, Typography } from '@material-ui/core';\nimport { ScreenTitle } from '../../components/ScreenTitle';\n\nconst useStyles = makeStyles(() =>\n createStyles({\n paragraph: {\n margin: '1rem 0',\n },\n item: {\n fontWeight: 'bold',\n },\n title: {\n margin: '1.5rem 0',\n textAlign: 'center',\n },\n }),\n);\n\nfunction TermsAndConditions() {\n const classes = useStyles();\n return (\n <>\n \n \n \n PLEXO LINKS\n \n \n Primero. (Antecedentes).\n \n \n 1.1. Los presentes términos y condiciones presuponen la\n existencia de un contrato de “Condiciones Generales” por el cual “Plexo” (referido aquí como PLEXO o\n el LICENCIANTE), presta servicios y permite a sus clientes (referidos aquí singularmente como USUARIO\n o LICENCIADO) utilizar y conectarse con la pasarela de pagos propiedad de “Plexo”.\n \n \n 1.2. PLEXO ha desarrollado una nueva funcionalidad sobre su\n plataforma de pagos digitales, denominada “Plexo Links” (referido aquí como la FUNCIONALIDAD o como\n PLEXO LINKS).\n \n \n 1.3. Es intención de PLEXO licenciar PLEXO LINKS de manera\n gratuita a sus USUARIOS – condicionada a la vigencia del contrato referido en “1.1”, de acuerdo a los\n términos y condiciones que se establecen seguidamente.\n \n \n Segundo. (Objeto).\n \n \n 2.1. PLEXO concede y pone a disposición del USUARIO una licencia\n de uso gratuita, no exclusiva y revocable sobre la FUNCIONALIDAD PLEXO LINKS. Consecuentemente, el\n USUARIO queda autorizado al uso no exclusivo del software que permite la FUNCIONALIDAD y a recibir los\n servicios relacionados o vinculados con la referida FUNCIONLIADAD.\n \n \n 2.2. ​PLEXO LINKS se considera parte integrante de la plataforma\n de pagos propiedad de PLEXO, por tanto, todo lo no regulado específicamente en el presente documento\n será regido por las “Condiciones Generales” referidas en 1.1. La utilización de PLEXO LINKS no\n devengará un precio adicional o diferencial al ya establecido para el uso de la plataforma de pago,\n siendo por tanto sin costo para el USUARIO la utilización de la nueva FUNCIONALIDAD. Sin perjuicio de\n lo expresado, PLEXO queda facultado a establecer un precio adicional para el uso PLEXO LINKS, a tales\n efectos deberá cursar un pre-aviso al USUARIO de 30 días corridos antes de comenzar a devengarse el\n precio y en todos los casos el USUARIO podrá optar por cesar la utilización de PLEXO LINKS.\n \n \n Tercero. (Funcionamiento).\n \n \n 3.1. PLEXO LINKS es un software propiedad de PLEXO que otorga la\n funcionalidad al USUARIO de enviar a terceros determinados un link a partir del cual surge una suma\n específica a pagar en favor del USUARIO, utilizando la plataforma de pago propiedad de PLEXO, lo cual\n genera una simplificación en los procesos de pagos.\n \n \n 3.2. PLEXO no garantiza que PLEXO LINKS y sus procesos\n vinculados estén libres de errores, fallas o puedan ser objeto de “hackeo” por terceras partes. PLEXO\n únicamente garantiza mantener los estándares de seguridad de la industria de los medios de pago\n electrónicos, y que, en caso de detectarse una falla, error o “hackeo” realizará sus máximos esfuerzos\n para subsanarlo en el menor tiempo posible.\n \n \n Cuarto. (Finalidad – Utilización).\n \n \n 4.1. Los USUARIOS se obligan a utilizar PLEXO LINKS ajustándose\n a las regulaciones de los presentes términos y condiciones, las “Condiciones Generales” y únicamente\n para procesar operaciones y finalidades lícitas.\n \n \n 4.2. Cualquier uso indebido por parte del USUARIO dará derecho a\n que PLEXO pueda suspender el acceso a la plataforma de pago o a PLEXO LINKS de manera transitoria o\n definitiva rescindiendo los contratos que los vincula con el USUARIO, incluyendo la presente LICENCIA\n de uso.\n \n \n 4.3. El USUARIO deberá, ante la solicitud de PLEXO, remitir toda\n información pertinente y razonable sobre las operaciones que canaliza a través de PLEXO LINKS y la\n plataforma de pagos, así como colaborar con PLEXO ante caso de actos fraudulentos.\n \n \n 4.4. El USUARIO tiene prohibido utilizar PLEXO LINKS y la\n plataforma de pagos para canalizar operaciones por cuenta y orden de terceras entidades, debiendo\n utilizar los sistemas referidos únicamente para operaciones de pago propias.\n \n \n QUINTO. (Limitación de Responsabilidad).\n \n \n 5.1. PLEXO limita su responsabilidad por todo concepto a las\n sumas pagas por el USUARIO a PLEXO en los doce meses previos al hecho que dio lugar al nacimiento de\n la responsabilidad.\n \n \n 5.2. El USUARIO contrata y utiliza la plataforma de pago y el\n servicio “Plexo Links” conociendo la limitación de responsabilidad y en el entendido que la referida\n limitación de responsabilidad tiene relación con el precio pagado y los riesgos asociados a la\n actividad.\n \n \n 5.3. El USUARIO mantendrá indemne y libre de daño a PLEXO, sus\n empleados, directores, representantes y proveedores, por cualquier pérdida, gasto, daño o costos –\n incluyendo honorarios de abogados – que sean consecuencia de un incumplimiento de los presentes\n términos y condiciones, ya sea de manera directa o a por terceros vinculados.\n \n \n SEXTO. (Disposiciones Varias).\n \n \n 6.1. Las disposiciones del presente documento se consideran\n parte integrante de las “Condiciones Generales” por tanto aplicables tanto a PLEXO LINKS como\n aplicables en lo pertinente a los servicios provistos por la pasarela de pagos. En caso de\n contradicción entre ambos documentos, prevalecerá lo dispuesto en el presente.\n \n \n 6.2. La omisión en el ejercicio de cualquiera de los derechos\n derivados de este documento no configurará renuncia del mismo o de otros derechos derivados de la\n relación entre las partes.\n \n \n 6.3. ​La eventual nulidad, total o parcial, que pudiese\n declararse respecto de cualquiera de las cláusulas contenidas en el presente documento, no afectará ni\n influirá, de modo alguno, a las restantes estipulaciones que se mantendrán integralmente con el mismo\n vigor y fuerza jurídica.\n \n \n 6.4. Todos los contenidos de la FUNCIONALIDAD sean estos\n visibles, auditivos o aquellos que permiten el funcionamiento de la misma se encuentran protegidas por\n derechos de propiedad intelectual y son de exclusiva propiedad de PLEXO. A título enunciativo las\n gráficas, colores relacionados, diseño de interfaces, audios, logos, software, información y todo\n demás contenido que permite el funcionamiento del sitio web y sus aplicaciones para smartphones son de\n exclusiva propiedad de PLEXO; quedando prohibida su reproducción, copia o utilización no autorizada\n para cualquier finalidad.\n \n \n 6.5. Estos términos y condiciones podrán ser modificados por\n PLEXO, en cualquier momento, siempre que notifique a los USUARIOS sobre las modificaciones. Esta\n notificación, como cualquier otra notificación a la que refieran estos términos y condiciones, podrá\n realizarse por cualquier medio hábil que permita su correcta recepción por el USUARIO. Los nuevos\n términos y condiciones entraran en vigencia a los 3 días corridos desde la notificación.\n \n \n );\n}\n\nexport default TermsAndConditions;\n","import { IconButton, Theme, createStyles, makeStyles } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { ThunkDispatch } from 'redux-thunk';\nimport {\n getUnconfirmedUsers,\n resendConfirmation,\n verifyUser,\n} from '../../store/action_creators/auth.actions';\nimport { AppActions } from '../../store/config/ActionTypes';\nimport { Status } from '../../store/config/enums';\nimport { RootState, User } from '../../store/config/types';\nimport { CustomSnackbar } from '../CustomSnackbar';\nimport CustomTable, { HeadCell } from '../CustomTable/CustomTable';\nimport { EmptyMessage } from '../EmptyMessage';\nimport Search from '../FiltersComponent/Search';\nimport { Check } from '../Icons/Check';\nimport { Resend } from '../Icons/Resend';\nimport { Loading } from '../Loading';\nimport { ScreenTitle } from '../ScreenTitle';\nimport { StatusPill } from '../StatusPill';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n search: {\n margin: '1rem 0',\n },\n iconButton: {\n padding: '0.5rem 0',\n '&:hover': {\n backgroundColor: 'unset',\n },\n },\n container: {\n padding: '2rem 0',\n maxWidth: '60rem',\n margin: '0 auto',\n },\n screenTitle: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n width: '100%',\n },\n }),\n);\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\n return {\n getUnconfirmedUsers: (searchTerm?: string) => dispatch(getUnconfirmedUsers(searchTerm)),\n verifyUser: (userId: string) => dispatch(verifyUser(userId)),\n resendConfirmation: (email: string) => dispatch(resendConfirmation(email)),\n };\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps;\n\nfunction UsersTable({ auth, getUnconfirmedUsers, verifyUser, resendConfirmation }: PropsFromRedux) {\n const classes = useStyles();\n const [resendingConfirmation, setResendingConfirmation] = useState(false);\n const [verifyingUser, setVerifyingUser] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n\n useEffect(() => {\n if (\n !auth.gettingUnconfirmedUsers &&\n auth.unconfirmedUsers === null &&\n auth.getUnconfirmedUsersErrorMessage === null\n ) {\n getUnconfirmedUsers();\n }\n }, [\n auth.getUnconfirmedUsersErrorMessage,\n auth.gettingUnconfirmedUsers,\n auth.unconfirmedUsers,\n getUnconfirmedUsers,\n ]);\n\n type Icons = { icons?: JSX.Element };\n\n type Column = User & Icons;\n\n const columns: HeadCell[] = [\n { columnId: 'names', label: 'Nombre de usuario' },\n { columnId: 'email', label: 'Email' },\n { columnId: 'active', label: 'Estado' },\n { columnId: 'icons', label: '' },\n ];\n\n const renderCustomTableCells = (row: User, columnId: keyof Column) => {\n switch (columnId) {\n case 'names':\n return row.names + ' ' + row.surnames;\n case 'email':\n return row.email;\n case 'active':\n return row.active ? 'Verificado' : ;\n case 'icons':\n return (\n
    \n {\n setVerifyingUser(true);\n verifyUser(row.userId);\n }}\n >\n \n \n {\n setResendingConfirmation(true);\n resendConfirmation(row.userId);\n }}\n >\n \n \n
    \n );\n default:\n return row[columnId];\n }\n };\n\n const triggerSearch = () => {\n if (searchTerm.length > 3 || searchTerm.length === 0) {\n getUnconfirmedUsers(searchTerm);\n }\n };\n\n const isOpened: boolean =\n resendingConfirmation && (auth.resendConfirmationSuccess || auth.resendConfirmationErrorMessage !== null);\n\n const closeSnack = () => {\n if (resendingConfirmation) setResendingConfirmation(false);\n };\n\n useEffect(() => {\n if (verifyingUser && auth.verifyUserSuccess) {\n getUnconfirmedUsers();\n setVerifyingUser(false);\n }\n }, [auth.verifyUserSuccess, verifyingUser, getUnconfirmedUsers]);\n\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n {auth.unconfirmedUsers && auth.unconfirmedUsers.length === 0 && !verifyingUser ? (\n \n ) : auth.unconfirmedUsers ? (\n \n headCells={columns}\n rowsData={auth.unconfirmedUsers}\n renderCell={renderCustomTableCells}\n hasRowHover={false}\n />\n ) : (\n \n )}\n \n
    \n );\n}\n\nexport default connector(UsersTable);\n","import { UsersTable } from '../../components/UnconfirmedUsersTable';\n\n// TODO: Delete this screen and update the Users one to render UsersTable variants\nfunction UnconfirmedUsers() {\n return ;\n}\n\nexport default UnconfirmedUsers;\n","import {\n Button,\n createStyles,\n Dialog,\n DialogContent,\n DialogTitle,\n makeStyles,\n Theme,\n Typography,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { useNavigate } from 'react-router-dom';\nimport styles from '../../../styles/_variables.module.scss';\nimport { Loading } from '../../Loading';\n\nconst useDialogStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-end',\n paddingBottom: 0,\n },\n icon: {\n cursor: 'pointer',\n userSelect: 'none',\n color: theme.palette.grey[500],\n },\n titleText: {\n fontWeight: Number(styles.semiBoldTextWeight),\n fontSize: '1.0625rem',\n },\n messageText: {\n marginTop: '0.5625rem',\n fontSize: '0.875rem',\n color: styles.slateBlue,\n fontWeight: Number(styles.regularTextWeight),\n },\n content: {\n padding: '2rem 3rem',\n paddingTop: '1rem',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n textAlign: 'center',\n },\n actions: {\n marginTop: '1.4rem',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n okButton: {\n marginLeft: '1rem',\n },\n errorButton: {\n marginLeft: '1rem',\n backgroundColor: theme.palette.error.main,\n color: styles.white,\n border: `1px solid ${theme.palette.error.main}`,\n\n '&:hover': {\n boxShadow: 'none',\n backgroundColor: styles.white,\n color: theme.palette.error.main,\n border: `1px solid ${theme.palette.error.main}`,\n },\n },\n }),\n);\n\ninterface CSVUploadDialogProps {\n open: boolean;\n setOpen(value: boolean): void;\n dialogType: string;\n setDialogType(value: string): void;\n action(): void;\n uploading: boolean;\n}\n\nfunction CSVUploadDialog({\n open,\n setOpen,\n dialogType,\n setDialogType,\n action,\n uploading,\n}: CSVUploadDialogProps) {\n const navigate = useNavigate();\n const classes = useDialogStyles();\n const message = uploading\n ? 'Puede demorar unos segundos. Por favor no salgas del producto.'\n : dialogType === 'ok'\n ? 'Una vez que confirmes no podrás revertir esta acción'\n : 'Una vez que confirmes perderás la información ingresada.';\n const title = uploading\n ? 'Estamos procesando tu solicitud'\n : dialogType === 'ok'\n ? '¿Estas seguro que deseas crear estos links?'\n : '¿Estás seguro de que no deseas crear estos links?';\n const okText = dialogType === 'ok' ? 'Confirmar' : 'No crear links';\n const okAction = dialogType === 'ok' ? action : () => navigate('/upload-csv-links');\n const buttonClass = dialogType === 'ok' ? classes.okButton : classes.errorButton;\n\n const closeDialog = () => {\n setOpen(false);\n };\n\n return (\n \n \n \n \n \n {title}\n {message}\n {uploading ? (\n \n ) : (\n
    \n \n \n
    \n )}\n
    \n
    \n );\n}\n\nexport default CSVUploadDialog;\n","import {\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { QuestionMark } from '../Icons/QuestionMark';\n\nconst cellStyles: React.CSSProperties = {\n display: 'block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '100%',\n};\n\nconst iconStyles: React.CSSProperties = {\n marginLeft: '0.5rem',\n display: 'inline-flex',\n alignItems: 'center',\n};\n\nexport interface CustomTableProps {\n headCells: HeadCell[];\n invalidRows: { row: T; errors: { field: string; message: string }[] }[];\n}\n\nexport interface HeadCell {\n columnId: keyof T;\n label: string;\n}\n\nconst ErrorsTable = ({ headCells, invalidRows }: CustomTableProps) => {\n return (\n \n \n \n \n \n {headCells.map(({ label }, index) => (\n \n {label}\n \n ))}\n \n \n \n {invalidRows.map((invalidRow, rowIndex) => {\n const row = invalidRow.row;\n const rowErrors = invalidRow.errors;\n\n return (\n \n {headCells.map(({ columnId }, cellIndex) => {\n const error = rowErrors.find((err) => err.field === columnId);\n\n return (\n \n
    \n \n {row[columnId] !== '' ? row[columnId] : '-'}\n \n {error && (\n \n
    \n \n
    \n
    \n )}\n
    \n
    \n );\n })}\n
    \n );\n })}\n
    \n
    \n
    \n
    \n );\n};\n\nexport default ErrorsTable;\n","import { Box, Card, createStyles, makeStyles, Theme, Typography } from '@material-ui/core';\nimport ErrorsTable, { HeadCell } from '../../components/ReviewCSVLinks/ErrorsTable';\nimport { ErrorRowData, RowData } from '../../screens/UploadCSVLinks/ReviewCSVLinks';\nimport styles from '../../styles/_variables.module.scss';\nimport { AlertTriangle } from '../Icons/AlertTriangle';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n warnings: {\n padding: '1.2rem',\n borderRadius: '0.4rem',\n border: `1px solid ${styles.yellowWarningBorder}`,\n backgroundColor: `${styles.yellowWarningBackground}`,\n marginBottom: '1rem',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5625rem',\n\n '& svg': {\n width: '1.375rem',\n height: '1.375rem',\n '& path': {\n fill: `${styles.warnings}`,\n },\n },\n },\n warningText: {\n color: styles.yellowWarningText,\n fontSize: '0.75rem',\n fontWeight: +styles.normalTextWeight,\n },\n tableCard: {\n marginTop: '1.25rem',\n padding: '1.5625rem 1.25rem',\n },\n titleTexts: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n title: {\n fontWeight: +styles.semiBoldTextWeight,\n color: styles.slateBlue,\n fontSize: '1.0625rem',\n marginBottom: '1.1875rem',\n },\n linkCount: {\n fontWeight: +styles.boldTextWeight,\n color: styles.slateBlue,\n fontSize: '0.875rem',\n marginBottom: '1.1875rem',\n },\n }),\n);\n\ninterface AlertErrorsProps {\n columns: HeadCell[];\n csvErrors: ErrorRowData[];\n errorCount: number;\n}\n\nexport default function AlertErrors({ columns, csvErrors, errorCount }: AlertErrorsProps) {\n const classes = useStyles();\n\n return (\n \n
    \n \n \n Los links que presenten errores no podrán ser creados. Puedes corregirlos ajustando los datos\n ingresados y cargando nuevamente el archivo CSV actualizado.\n \n
    \n <>\n \n Links con error\n Total de links con error: {errorCount}\n \n \n \n
    \n );\n}\n","import { Button, CircularProgress, Divider } from '@material-ui/core';\nimport { ScreenTitle } from '../ScreenTitle';\n\ninterface ReviewCSVLinksScreenTitleProps {\n errorCount: number;\n linkCount: number;\n uploading: boolean;\n openDialog: (type: string) => void;\n}\n\nexport default function ReviewCSVLinksScreenTitle({\n errorCount,\n linkCount,\n uploading,\n openDialog,\n}: ReviewCSVLinksScreenTitleProps) {\n return (\n \n \n \n \n openDialog('ok')}\n disabled={errorCount > 0 || uploading || !linkCount}\n variant=\"contained\"\n color=\"primary\"\n >\n {!uploading ? 'Continuar' : }\n \n \n );\n}\n","import { Box, Card, createStyles, makeStyles, Theme, Typography } from '@material-ui/core';\nimport { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { CustomTable } from '../../components/CustomTable';\nimport { HeadCell } from '../../components/CustomTable/CustomTable';\nimport { CSVUploadDialog } from '../../components/dialogs/CSVUploadConfirmationDialog';\nimport AlertErrors from '../../components/ReviewCSVLinks/AlertErrors';\nimport ReviewCSVLinksScreenTitle from '../../components/ReviewCSVLinks/ReviewCSVLinksScreenTitle';\nimport values from '../../data/values';\nimport { useParseCSV } from '../../hooks/useParseCSV';\nimport { createLinksWhitCSV, fetchLinks, fetchOneUseLinks } from '../../store/action_creators/links.actions';\nimport { LinkTypeEnum, Status } from '../../store/config/enums';\nimport { CreateLinksWithCSVRequest, RootState } from '../../store/config/types';\nimport styles from '../../styles/_variables.module.scss';\n\nexport interface RowData {\n email: string;\n description: string;\n reference: string;\n validUntil: string;\n currency: string;\n amount: string;\n}\n\ninterface Error {\n field: string;\n message: string;\n}\n\nexport interface ErrorRowData {\n row: RowData;\n errors: Error[];\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n tableCard: {\n marginTop: '1.25rem',\n padding: '1.5625rem 1.25rem',\n },\n titleTexts: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n title: {\n fontWeight: +styles.semiBoldTextWeight,\n color: styles.slateBlue,\n fontSize: '1.0625rem',\n marginBottom: '1.1875rem',\n },\n linkCount: {\n fontWeight: +styles.boldTextWeight,\n color: styles.slateBlue,\n fontSize: '0.875rem',\n marginBottom: '1.1875rem',\n },\n }),\n);\n\nconst columns: HeadCell[] = [\n { columnId: 'email', label: 'Email' },\n { columnId: 'description', label: 'Descripción' },\n { columnId: 'reference', label: 'Referencia' },\n { columnId: 'validUntil', label: 'Válido hasta' },\n { columnId: 'currency', label: 'Moneda' },\n { columnId: 'amount', label: 'Importe' },\n];\n\nfunction ReviewCSVLinks() {\n const location = useLocation();\n const file = location.state?.file || null;\n const classes = useStyles();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const { links, auth } = useSelector((state: RootState) => state);\n const [uploading, setUploading] = useState(false);\n const [open, setOpen] = useState(false);\n const [dialogType, setDialogType] = useState('');\n const { csvData, csvErrors, fileWithoutHeaders } = useParseCSV(file);\n const linkCount = csvData.length;\n const errorCount = csvErrors.length;\n const businessId = auth?.account?.business?.id;\n\n const handleSubmit = async () => {\n setUploading(true);\n const uploadLinksCSVRequest: CreateLinksWithCSVRequest = {\n file: fileWithoutHeaders!,\n };\n await Promise.resolve(dispatch(createLinksWhitCSV(uploadLinksCSVRequest)));\n dispatch(\n fetchOneUseLinks(\n links.oneUseLinksFilters,\n 1,\n values.linksPageLimit,\n businessId!,\n LinkTypeEnum.ONETIME,\n true,\n ),\n );\n dispatch(\n fetchLinks(\n links.linksFilters,\n 1,\n values.linksPageLimit,\n businessId!,\n LinkTypeEnum.ALL,\n true,\n true,\n true,\n ),\n );\n };\n\n const closeSnack = () => {\n setUploading(false);\n if (links.createLinksWithCSVSuccess) {\n navigate('/one-use-links');\n }\n };\n\n const openDialog = (type: string) => {\n setOpen(true);\n setDialogType(type);\n };\n\n return (\n
    \n \n {errorCount > 0 && }\n\n \n \n Links de 1 uso\n Total de links: {linkCount}\n \n \n \n\n \n \n
    \n );\n}\n\nexport default ReviewCSVLinks;\n","import Papa from 'papaparse';\nimport { useEffect, useState } from 'react';\nimport { ValidationError } from 'yup';\n\nimport schemas from '../data/schemas';\nimport { currencyHelper } from '../helpers/currencyHelper';\nimport { RowData } from '../screens/UploadCSVLinks/ReviewCSVLinks';\n\nexport interface ErrorRowData {\n row: RowData;\n errors: { field: string; message: string }[];\n}\n\nexport const useParseCSV = (file: File | null) => {\n const [csvData, setCSVData] = useState([]);\n const [csvErrors, setCsvErrors] = useState([]);\n const [fileWithoutHeaders, setFileWithoutHeaders] = useState(null);\n\n useEffect(() => {\n if (file) {\n Papa.parse(file, {\n header: false,\n skipEmptyLines: true,\n complete: async (results) => {\n const { data } = results as { data: string[][] };\n\n const validRows: RowData[] = [];\n const invalidRows: ErrorRowData[] = [];\n\n const columnNames = ['amount', 'currency', 'description', 'reference', 'email', 'validUntil'];\n\n const removedHeader = data.slice(1);\n\n for (const row of removedHeader) {\n const rowObject: RowData = columnNames.reduce((acc, colName, index) => {\n acc[colName as keyof RowData] = row[index];\n return acc;\n }, {} as RowData);\n\n try {\n await schemas.CsvLinkSchema.validate(rowObject, { abortEarly: false });\n validRows.push(rowObject);\n } catch (validationError: unknown) {\n if (validationError instanceof ValidationError) {\n const errors = validationError.inner.map((err: ValidationError) => {\n return {\n field: err.path || '',\n message: err.message,\n };\n });\n invalidRows.push({\n row: {\n amount: rowObject.amount,\n currency: currencyHelper.getCurrencyName(+rowObject.currency) || rowObject.currency,\n description: rowObject.description,\n reference: rowObject.reference,\n email: rowObject.email || '-',\n validUntil: rowObject.validUntil || '-',\n },\n errors,\n });\n }\n }\n }\n\n const mappedCSVData = validRows.map((row: RowData) => {\n return {\n amount: row.amount,\n currency: currencyHelper.getCurrencyName(+row.currency) || row.currency,\n description: row.description,\n reference: row.reference,\n email: row.email || '-',\n validUntil: row.validUntil || '-',\n };\n });\n const newCSVContent = Papa.unparse(removedHeader, { delimiter: ';' });\n const newFile = new File([newCSVContent], file.name, {\n type: 'text/csv',\n });\n\n setCSVData(mappedCSVData);\n setCsvErrors(invalidRows);\n setFileWithoutHeaders(newFile);\n },\n });\n }\n }, [file]);\n\n return { csvData, csvErrors, fileWithoutHeaders };\n};\n","export const csvExample = [\n {\n amount: 100,\n currency: 1,\n description: 'Descripción 1',\n reference: 'Referencia 1',\n email: 'links@links.com.uy',\n validUntil: null,\n },\n {\n amount: 258,\n currency: 2,\n description: 'Descripción 2',\n reference: 'Referencia 2',\n email: 'plexo@links.com.uy',\n validUntil: '10/11/2030',\n },\n];\n","import { Box, Button, Card, createStyles, Link, makeStyles, Theme, Typography } from '@material-ui/core';\nimport { useEffect, useRef, useState } from 'react';\nimport { CSVLink } from 'react-csv';\nimport { useNavigate } from 'react-router-dom';\nimport { csvExample } from '../../assets/examples/csvExample';\nimport UploadIcon from '../../assets/UploadIcon';\nimport CheckCircleIcon from '../../components/Icons/CheckCircleIcon';\nimport { CsvFile } from '../../components/Icons/CsvFile';\nimport { ScreenTitle } from '../../components/ScreenTitle';\nimport { csvLinksHeaders } from '../../data/csv';\nimport { useValidationCSV } from '../../hooks/useValidationCSV';\nimport styles from '../../styles/_variables.module.scss';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n uploadCard: {\n marginTop: '1.25rem',\n padding: '1.5625rem 1.25rem',\n },\n title: {\n fontWeight: +styles.semiBoldTextWeight,\n color: styles.slateBlue,\n fontSize: '1.0625rem',\n marginBottom: '1.1875rem',\n },\n uploadContainer: {\n display: 'flex',\n alignItems: 'end',\n justifyContent: 'space-between',\n gap: '1.1875rem',\n marginBottom: '0.5rem',\n },\n fileContainer: {\n width: '80%',\n padding: '20px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n border: `1px dashed ${styles.borderButtonSecondary}`,\n '& p': {\n marginTop: '0.9375rem',\n },\n },\n icon: {\n width: '2.1875rem',\n height: '2.1875rem',\n },\n helperText: {\n color: styles.slateBlue,\n fontSize: '0.75rem',\n width: '32%',\n textAlign: 'center',\n },\n buttonContainer: {\n display: 'flex',\n flexDirection: 'column',\n width: 'auto',\n },\n download: {\n marginTop: '1.125rem',\n cursor: 'pointer',\n color: styles.primary,\n textDecoration: 'underline',\n },\n }),\n);\n\nfunction UploadCSVLinks() {\n const classes = useStyles();\n const navigate = useNavigate();\n const { validationResult, validateFile } = useValidationCSV();\n const [hasClickedDownloadCSV, setHasClickedDownloadCSV] = useState(false);\n const csvRef = useRef();\n\n const handleFileChange = (event: React.ChangeEvent) => {\n const file = event.target.files?.[0];\n if (file) {\n validateFile(file);\n }\n };\n\n const handleUploadClick = () => {\n document.getElementById('csvFileInput')?.click();\n };\n\n const handleContinue = () => {\n navigate('/review-csv-links', { state: { file: validationResult.selectedFile } });\n };\n\n const handleCancel = () => {\n navigate('/one-use-links');\n };\n\n const buildCSVPayments = () => {\n return csvExample;\n };\n\n useEffect(() => {\n if (hasClickedDownloadCSV) {\n csvRef.current.link.click();\n setHasClickedDownloadCSV(false);\n }\n }, [hasClickedDownloadCSV]);\n\n return (\n
    \n \n \n \n Continuar\n \n \n \n Archivo con Links\n \n \n {validationResult.selectedFile ? (\n \n ) : (\n \n )}\n \n {validationResult.selectedFile\n ? `El archivo ${validationResult.selectedFile.name} ha sido cargado correctamente`\n : `El archivo debe estar en formato CSV, utilizar el delimitador “;” y no superar 1 MB de tamaño.`}\n \n \n \n }\n >\n \n Cargar CSV\n \n setHasClickedDownloadCSV(true)} className={classes.download}>\n Descargar csv de ejemplo\n \n \n \n \n {validationResult.error && (\n \n {validationResult.error}\n \n )}\n \n
    \n );\n}\n\nexport default UploadCSVLinks;\n","import Papa from 'papaparse';\nimport { useState } from 'react';\n\ninterface ValidationResult {\n error: string | null;\n selectedFile: File | null;\n}\n\nexport const useValidationCSV = () => {\n const [validationResult, setValidationResult] = useState({\n error: null,\n selectedFile: null,\n });\n\n const validateFile = (file: File) => {\n if (file.size > 1 * 1024 * 1024) {\n setValidationResult({\n error:\n '*El archivo supera el tamaño máximo permitido de 1 MB. Por favor, suba un archivo más pequeño.',\n selectedFile: null,\n });\n return;\n }\n\n Papa.parse(file, {\n header: true,\n skipEmptyLines: true,\n complete: (results) => {\n const fileHeaders = results.meta.fields || [];\n const expectedHeaders = ['Importe', 'Moneda', 'Descripción', 'Referencia', 'Email', 'Valido hasta'];\n\n if (results.meta.delimiter !== ';') {\n setValidationResult({\n error:\n '*El archivo CSV no utiliza el delimitador \";\". Verifique la configuración de exportación y vuelva a intentarlo.',\n selectedFile: null,\n });\n return;\n }\n\n const missingHeaders = expectedHeaders.filter((header) => !fileHeaders.includes(header));\n const moreHeaders = expectedHeaders.length < fileHeaders.length;\n\n if (moreHeaders) {\n setValidationResult({\n error: '*El archivo CSV contiene columnas extra, Por favor, verifique y vuelva a intentarlo.',\n selectedFile: null,\n });\n return;\n }\n\n if (missingHeaders.length > 0) {\n setValidationResult({\n error: `*El archivo CSV no contiene los encabezados esperados: ${missingHeaders.join(\n ', ',\n )}. Por favor, verifique y vuelva a intentarlo.`,\n selectedFile: null,\n });\n return;\n }\n\n setValidationResult({\n error: null,\n selectedFile: file,\n });\n },\n });\n };\n\n return { validationResult, validateFile };\n};\n","import { Theme, Tooltip, createStyles, makeStyles } from '@material-ui/core';\nimport { useNavigate } from 'react-router-dom';\nimport EditIcon from '../../assets/EditIcon';\nimport { Collaborator } from '../../store/config/types';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n span: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n }),\n);\n\ninterface UpdateCollaboratorButtonProps {\n collaborator: Collaborator;\n}\n\nfunction UpdateCollaboratorButton({ collaborator }: UpdateCollaboratorButtonProps) {\n const navigate = useNavigate();\n const classes = useStyles();\n\n const updateCollaborator = (collaborator: Collaborator) => {\n navigate('/user', { state: { collaborator } });\n };\n\n return (\n \n updateCollaborator(collaborator)} className={classes.span}>\n \n \n \n );\n}\n\nexport default UpdateCollaboratorButton;\n","import { Button } from '@material-ui/core';\nimport { ReactNode, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { Collaborator, RootState } from '../../store/config/types';\nimport { CustomSwitch } from '../CustomSwitch';\nimport { CustomTable } from '../CustomTable';\nimport { HeadCell } from '../CustomTable/CustomTable';\nimport { Loading } from '../Loading';\nimport { ScreenTitle } from '../ScreenTitle';\nimport { StatusPill } from '../StatusPill';\nimport UpdateButton from './UpdateButton';\n\ninterface UsersDesktopProps {\n emptyDataMessage: ReactNode;\n setEnablingCollaborator: (value: React.SetStateAction) => void;\n handleEnableCollaborator: (collaborator: Collaborator) => void;\n enablingCollaborator: boolean;\n}\n\nfunction UsersDesktop({\n emptyDataMessage,\n setEnablingCollaborator,\n handleEnableCollaborator,\n enablingCollaborator,\n}: UsersDesktopProps) {\n const navigate = useNavigate();\n const collaborators = useSelector((state: RootState) => state.collaborators);\n const [currentEnablingCollaborator, setCurrentEnablingCollaborator] = useState(null);\n\n const orderedCollaborators = collaborators.collaborators?.sort((a, b) =>\n a.names.toUpperCase().localeCompare(b.names.toUpperCase()),\n );\n\n const headCells: HeadCell[] = [\n { columnId: 'collaborator', label: 'Colaborador' },\n { columnId: 'email', label: 'Email' },\n { columnId: 'state', label: 'Estado' },\n { columnId: 'enabled', label: 'Habilitado' },\n { columnId: 'actions', label: 'Acciones' },\n ];\n\n const handleSwitchClick = (e: React.MouseEvent, row: Collaborator) => {\n e.stopPropagation();\n setEnablingCollaborator(true);\n setCurrentEnablingCollaborator(row.userId);\n handleEnableCollaborator(row);\n };\n\n const renderCustomTableCells = (row: Collaborator, columnId: string) => {\n const isSwitchDisabled =\n !row.emailConfirmed || (enablingCollaborator && currentEnablingCollaborator === row.userId);\n switch (columnId) {\n case 'collaborator':\n return `${row.names} ${row.surnames}`;\n case 'email':\n return row.email;\n case 'state':\n return (\n \n );\n case 'enabled':\n return (\n handleSwitchClick(e, row)}\n disabled={isSwitchDisabled}\n />\n );\n case 'actions':\n return ;\n default:\n return row;\n }\n };\n\n return (\n
    \n \n {\n navigate('/user');\n }}\n >\n Nuevo colaborador\n \n \n {/* TODO: Add Search after backend implementation */}\n {collaborators.loadingCollaborators ? (\n \n ) : (\n \n )}\n
    \n );\n}\n\nexport default UsersDesktop;\n","import { Collaborator } from '../../store/config/types';\nimport { CustomSwitch } from '../CustomSwitch';\nimport { StatusPill } from '../StatusPill';\nimport UpdateButton from './UpdateButton';\n\ninterface UserCardProps {\n collaborator: Collaborator;\n setEnablingCollaborator: (value: React.SetStateAction) => void;\n handleEnableCollaborator: (collaborator: Collaborator) => void;\n}\n\nfunction UserCard({ collaborator, setEnablingCollaborator, handleEnableCollaborator }: UserCardProps) {\n return (\n
    \n
    \n
    \n {collaborator.names}\n {collaborator.surnames}\n
    \n \n
    \n
    \n
    \n {collaborator.email}\n
    \n \n
    \n {\n setEnablingCollaborator(true);\n handleEnableCollaborator(collaborator);\n }}\n disabled={!collaborator.emailConfirmed}\n />\n
    \n
    \n
    \n );\n}\n\nexport default UserCard;\n","import { Button } from '@material-ui/core';\nimport { ReactNode } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { Collaborator, RootState } from '../../store/config/types';\nimport { Loading } from '../Loading';\nimport UserCard from './UserCard';\n\ninterface UsersMobileProps {\n emptyDataMessage: ReactNode;\n setEnablingCollaborator: (value: React.SetStateAction) => void;\n handleEnableCollaborator: (collaborator: Collaborator) => void;\n}\n\nfunction UsersMobile({\n emptyDataMessage,\n setEnablingCollaborator,\n handleEnableCollaborator,\n}: UsersMobileProps) {\n const navigate = useNavigate();\n const collaborators = useSelector((state: RootState) => state.collaborators);\n\n const orderedCollaborators = collaborators.collaborators?.sort((a, b) =>\n a.names.toUpperCase().localeCompare(b.names.toUpperCase()),\n );\n\n return (\n
    \n
    \n
    Colaboradores
    \n {\n navigate('/user');\n }}\n >\n Nuevo colaborador\n \n {/* TODO: Add Search after backend implementation */}\n
    \n {collaborators.loadingCollaborators ? (\n \n ) : orderedCollaborators?.length && orderedCollaborators?.length > 0 ? (\n orderedCollaborators.map((collaborator) => (\n \n ))\n ) : (\n emptyDataMessage\n )}\n
    \n );\n}\n\nexport default UsersMobile;\n","import { useMediaQuery } from '@material-ui/core';\nimport { useEffect, useState } from 'react';\nimport { ConnectedProps, connect } from 'react-redux';\nimport { ThunkDispatch } from 'redux-thunk';\nimport { CustomSnackbar } from '../../components/CustomSnackbar';\nimport { EmptyMessage } from '../../components/EmptyMessage';\nimport UsersDesktop from '../../components/Users/UsersDesktop';\nimport UsersMobile from '../../components/Users/UsersMobile';\nimport { enableCollaborator, fetchCollaborators } from '../../store/action_creators/collaborators.actions';\nimport { AppActions } from '../../store/config/ActionTypes';\nimport { Status } from '../../store/config/enums';\nimport { Collaborator, EnableCollaboratorRequest, RootState } from '../../store/config/types';\nimport { theme } from '../../styles/theme';\n\nconst mapStateToProps = (state: RootState) => ({\n auth: state.auth,\n collaborators: state.collaborators,\n});\n\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => ({\n fetchCollaborators: (businessId: number) => dispatch(fetchCollaborators(businessId)),\n enableCollaborator: (enableCollaboratorRequest: EnableCollaboratorRequest) =>\n dispatch(enableCollaborator(enableCollaboratorRequest)),\n});\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\ntype PropsFromRedux = ConnectedProps;\n\nfunction Users({ auth, collaborators, fetchCollaborators, enableCollaborator }: PropsFromRedux) {\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const [enablingCollaborator, setEnablingCollaborator] = useState(false);\n\n useEffect(() => {\n if (\n auth.account &&\n !collaborators.loadingCollaborators &&\n collaborators.collaborators === null &&\n collaborators.collaboratorsErrorMessage === null\n ) {\n fetchCollaborators(auth.account.business.id!);\n }\n }, [\n auth.account,\n collaborators.loadingCollaborators,\n collaborators.collaborators,\n collaborators.collaboratorsErrorMessage,\n fetchCollaborators,\n ]);\n\n const handleEnableCollaborator = (collaborator: Collaborator) => {\n const enableCollaboratorRequest: EnableCollaboratorRequest = {\n userId: collaborator.userId,\n active: !collaborator.active,\n };\n enableCollaborator(enableCollaboratorRequest);\n };\n\n useEffect(() => {\n fetchCollaborators(auth.account?.business.id!);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [collaborators.enableCollaboratorErrorMessage]);\n\n const emptyDataMessage = (\n \n );\n\n return (\n <>\n {isMobile ? (\n \n ) : (\n \n )}\n\n setEnablingCollaborator(false)}\n type={collaborators.enableCollaboratorSuccess ? Status.SUCCESS : Status.ERROR}\n />\n \n );\n}\n\nexport default connector(Users);\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Route, Routes, useLocation, useNavigate } from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport { Forbidden } from '../components/Forbidden';\nimport { SubUser } from '../components/forms/SubUser';\nimport { Header } from '../components/Header';\nimport { Loading } from '../components/Loading';\nimport { PublicHeader } from '../components/PublicHeader';\nimport ScrollToTop from '../components/ScrollToTop/ScrollToTop';\nimport { urlHelper } from '../helpers/urlHelper';\nimport { ConfirmEmail } from '../screens/ConfirmEmail';\nimport { getAccount } from '../store/action_creators/auth.actions';\nimport { LinkTypeEnum, UserTypeEnum } from '../store/config/enums';\nimport { RootState } from '../store/config/types';\nimport { Business } from './Business';\nimport { ChangePassword } from './ChangePassword.tsx';\nimport { Configuration } from './Configuration';\nimport { ConfirmResetPassword } from './ConfirmResetPassword';\nimport { Contact } from './Contact';\nimport { Dashboard } from './Dashboard';\nimport { FAQs } from './FAQs';\nimport { Home } from './Home';\nimport { Landing } from './Landing';\nimport { Link } from './Link';\nimport { Links } from './Links';\nimport { Login } from './Login';\nimport Maintenance from './Maintenance/Maintenance';\nimport { ManageClients } from './ManageClients';\nimport { ManageClientUsers } from './ManageClientUsers';\nimport { OnTheFlyPayments } from './OnTheFly';\nimport { PaymentDetail } from './PaymentDetail';\nimport { Payments } from './Payments';\nimport { PlexoPayment } from './PlexoPayment';\nimport { Profile } from './Profile';\nimport { Redirect } from './Redirect';\nimport { Register } from './Register';\nimport FirstPaymentMethod from './Register/FirstPaymentMethod';\nimport { RequestIssuers } from './RequestIssuers';\nimport { ResetPassword } from './ResetPassword';\nimport { Result } from './Result';\nimport { SplitPayments } from './SplitPayments';\nimport { SubBusiness } from './SubBusiness';\nimport { TermsAndConditions } from './TermsAndConditions';\nimport { UnconfirmedUsers } from './UnconfirmedUsers';\nimport { ReviewCSVLinks, UploadCSVLinks } from './UploadCSVLinks';\nimport { Users } from './Users';\n\nfunction Main() {\n const isMaintenanceMode = false;\n const cookies = new Cookies();\n const dispatch = useDispatch();\n const location = useLocation();\n const navigate = useNavigate();\n const auth = useSelector((state: RootState) => state.auth);\n const [isPrivatePage, setIsPrivatePage] = useState(urlHelper.isPrivatePage(location.pathname));\n const [isHome, setIsHome] = useState(location.pathname === '/');\n const [noPaymentMethodsYet, setNoPaymentMethodsYet] = useState(\n isPrivatePage &&\n location.pathname !== '/register' &&\n location.pathname !== '/first-payment-method' &&\n location.pathname !== '/request-issuers' &&\n auth.account !== null &&\n auth.account?.business &&\n !auth.account?.business.hasCommerces,\n );\n const hasToken = cookies.get('token') !== undefined;\n const isSuperAdmin = auth.account?.type === UserTypeEnum.SUPERADMIN;\n const isBusinessAdmin = auth.account?.type === UserTypeEnum.OWNER;\n\n useEffect(() => {\n if (hasToken) {\n if (\n !auth.loggedIn &&\n !auth.loggingIn &&\n auth.logInErrorMessage === null &&\n (isPrivatePage || location.pathname.includes('first-payment-method'))\n ) {\n dispatch(getAccount());\n }\n\n if (location.pathname === '/login') {\n setIsPrivatePage(true);\n if (auth.account && auth.account.business === null && !isSuperAdmin) {\n navigate('/register?step=2');\n } else {\n setNoPaymentMethodsYet(\n auth.account !== null && auth.account?.business && !auth.account?.business.hasCommerces,\n );\n isSuperAdmin ? navigate('/payments') : navigate('/dashboard');\n }\n }\n }\n\n if (!hasToken && isPrivatePage) {\n navigate('/login');\n setIsPrivatePage(false);\n }\n }, [\n isPrivatePage,\n auth.loggedIn,\n auth.loggingIn,\n hasToken,\n auth.logInErrorMessage,\n auth.account,\n isSuperAdmin,\n location.pathname,\n navigate,\n dispatch,\n ]);\n\n useEffect(() => {\n const path = location.pathname;\n const isPrivate = urlHelper.isPrivatePage(path);\n\n setIsHome(path === '/');\n setIsPrivatePage(isPrivate);\n setNoPaymentMethodsYet(\n isPrivate &&\n path !== '/register' &&\n path !== '/first-payment-method' &&\n path !== '/request-issuers' &&\n auth.account !== null &&\n auth.account?.business &&\n !auth.account?.business.hasCommerces,\n );\n\n if (\n isPrivate &&\n path !== '/register' &&\n path !== '/request-issuers' &&\n path !== '/first-payment-method' &&\n path !== '/user-faqs' &&\n auth.account &&\n auth.account.business === null &&\n !isSuperAdmin\n ) {\n navigate('/register?step=2');\n }\n\n if (path === '/login' && hasToken) {\n isSuperAdmin ? navigate('/payments') : navigate('/dashboard');\n }\n }, [auth.account, hasToken, isSuperAdmin, location.pathname, navigate]);\n\n const isLoadingBusiness = hasToken && !auth.loggedIn && isPrivatePage && auth.account?.business === null;\n\n const hasPaymentMethods =\n auth.account !== null && auth.account?.business && auth.account?.business.hasCommerces;\n\n const isRedirectPage = location.pathname.startsWith('/redirect');\n const isRegisterPage = location.pathname.includes('register');\n const isIssuersPage = location.pathname.includes('request-issuers');\n const isFaqsPage = location.pathname.includes('user-faqs');\n const isPublicPageWithPaymentMethod = hasPaymentMethods && (isIssuersPage || isFaqsPage);\n\n return isMaintenanceMode ? (\n \n } />\n \n ) : (\n
    \n \n {(isPrivatePage && !isRegisterPage) || isPublicPageWithPaymentMethod ? (\n
    \n ) : (\n !isRedirectPage && \n )}\n
    \n {isLoadingBusiness || auth.gettingAccount ? (\n \n ) : noPaymentMethodsYet && !isSuperAdmin ? (\n navigate('/first-payment-method')\n ) : (\n \n : : }\n />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n : : }\n />\n : : }\n />\n : : }\n />\n : : }\n />\n : : \n }\n />\n : : \n }\n />\n : : \n }\n />\n : }\n />\n : }\n />\n } />\n } />\n } />\n } />\n } />\n } />\n \n )}\n
    \n
    \n );\n}\n\nexport default Main;\n","import React from 'react';\nimport './styles/app.scss';\nimport { Provider } from 'react-redux';\nimport { store } from './store/config/configureStore';\nimport { ThemeProvider, CssBaseline } from '@material-ui/core';\nimport { BrowserRouter } from 'react-router-dom';\nimport { theme } from './styles/theme';\nimport { ErrorBoundary } from './components/ErrorBoundary';\nimport Main from './screens/Main';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\nimport 'moment/locale/es';\n\nfunction App() {\n return (\n \n \n \n \n \n \n
    \n \n \n \n \n \n );\n}\n\nexport default App;\n","import Hotjar from '@hotjar/browser';\nimport * as Sentry from '@sentry/react';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nconst siteId = process.env.HOTJAR_SITE_ID ? +process.env.HOTJAR_SITE_ID : 0;\nconst hotjarVersion = process.env.HOTJAR_VERSION ? +process.env.HOTJAR_VERSION : 0;\nconst isProd = process.env.REACT_APP_ENV_NAME === 'prod';\n\nif (['prod', 'qa'].includes(process.env.REACT_APP_ENV_NAME || '')) {\n Sentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n integrations: [Sentry.replayIntegration()],\n // Session Replay\n replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.\n environment: process.env.REACT_APP_SENTRY_DSN || 'local',\n });\n}\n\nisProd &&\n Hotjar.init(siteId, hotjarVersion, {\n debug: false,\n });\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n"],"names":["module","exports","LOGGING_IN","LOGIN_SUCCESS","LOGIN_ERROR","LOGOUT","RESETING_PASSWORD","RESET_PASSWORD_SUCCESS","RESET_PASSWORD_ERROR","CONFIRMING_RESET_PASSWORD","CONFIRM_RESET_PASSWORD_SUCCESS","CONFIRM_RESET_PASSWORD_ERROR","REGISTERING_USER","REGISTER_USER_SUCCESS","REGISTER_USER_ERROR","VALIDATING_REGISTER","VALIDATE_REGISTER_SUCCESS","VALIDATE_REGISTER_ERROR","REGISTERING_BUSINESS","REGISTER_BUSINESS_SUCCESS","REGISTER_BUSINESS_ERROR","GETTING_ACCOUNT","GET_ACCOUNT_SUCCESS","GET_ACCOUNT_ERROR","UPDATING_ACCOUNT","UPDATE_ACCOUNT_SUCCESS","UPDATE_ACCOUNT_ERROR","CHANGING_CREDENTIALS","CHANGE_CREDENTIALS_SUCCESS","CHANGE_CREDENTIALS_ERROR","CHANGING_USER_PASSWORD","CHANGE_USER_PASSWORD_SUCCESS","CHANGE_USER_PASSWORD_ERROR","GETTING_UNCONFIRMED_USERS","GET_UNCONFIRMED_USERS_SUCCESS","GET_UNCONFIRMED_USERS_ERROR","VERIFYING_USER","VERIFY_USER_SUCCESS","VERIFY_USER_ERROR","RESENDING_CONFIRMATION","RESEND_CONFIRMATION_SUCCESS","RESEND_CONFIRMATION_FAILED","FETCHING_CLIENTS","ADD_CLIENTS","FETCH_CLIENTS_FAILED","TOGGLING_CLIENT_BILLING","TOGGLE_CLIENT_BILLING_SUCCESS","TOGGLE_CLIENT_BILLING_FAILED","FETCHING_BUSINESSES","ADD_BUSINESSES","FETCH_BUSINESSES_FAILED","CREATING_BUSINESS","CREATE_BUSINESS_SUCCESS","CREATE_BUSINESS_FAILED","UPDATING_BUSINESS","UPDATE_BUSINESS_SUCCESS","UPDATE_BUSINESS_FAILED","GETTING_BUSINESS","GET_BUSINESS_SUCCESS","GET_BUSINESS_FAILED","GETTING_BUSINESS_SUB_BUSINESSES","GET_BUSINESS_SUB_BUSINESSES_SUCCESS","GET_BUSINESS_SUB_BUSINESSES_FAILED","UPDATING_SECRET","UPDATE_SECRET_SUCCESS","UPDATE_SECRET_FAILED","FETCHING_COLLABORATORS","ADD_COLLABORATORS","FETCH_COLLABORATORS_FAILED","CREATING_COLLABORATOR","CREATE_COLLABORATOR_SUCCESS","CREATE_COLLABORATOR_FAILED","UPDATING_COLLABORATOR","UPDATE_COLLABORATOR_SUCCESS","UPDATE_COLLABORATOR_FAILED","DELETING_COLLABORATOR","DELETE_COLLABORATOR_SUCCESS","DELETE_COLLABORATOR_FAILED","ENABLING_COLLABORATOR","ENABLE_COLLABORATOR_SUCCESS","ENABLE_COLLABORATOR_FAILED","FETCHING_PAYMENT_METHODS","ADD_PAYMENT_METHODS","FETCH_PAYMENT_METHODS_FAILED","CREATING_PAYMENT_METHOD","CREATE_PAYMENT_METHOD_SUCCESS","CREATE_PAYMENT_METHOD_FAILED","CREATING_BUSINESS_PAYMENT_METHOD","CREATE_BUSINESS_PAYMENT_METHOD_SUCCESS","CREATE_BUSINESS_PAYMENT_METHOD_FAILED","UPDATING_PAYMENT_METHOD","UPDATE_PAYMENT_METHOD_SUCCESS","UPDATE_PAYMENT_METHOD_FAILED","UPDATING_BUSINESS_PAYMENT_METHOD","UPDATE_BUSINESS_PAYMENT_METHOD_SUCCESS","DELETING_PAYMENT_METHOD","DELETE_PAYMENT_METHOD_SUCCESS","DELETE_PAYMENT_METHOD_FAILED","DELETING_BUSINESS_PAYMENT_METHOD","DELETE_BUSINESS_PAYMENT_METHOD_SUCCESS","DELETE_BUSINESS_PAYMENT_METHOD_FAILED","FETCHING_ISSUERS","ADD_ISSUERS","FETCH_ISSUERS_FAILED","FETCHING_BUSINESS_ISSUERS","ADD_BUSINESS_ISSUERS","FETCH_BUSINESS_ISSUERS_FAILED","SENDING_DESIRED_ISSUERS","DESIRED_ISSUERS_SUCCESS","DESIRED_ISSUERS_FAILED","FETCHING_INSTALLMENTS","FETCH_INSTALLMENTS_SUCCESS","FETCH_INSTALLMENTS_FAILED","SENDING_NOTIFICATION","SEND_NOTIFICATION_SUCCESS","SEND_NOTIFICATION_ERROR","RESENDING_NOTIFICATION","RESEND_NOTIFICATION_SUCCESS","RESEND_NOTIFICATION_ERROR","FETCHING_PAYMENTS","ADD_PAYMENTS","ADD_DASHBOARD_PAYMENTS","FETCH_PAYMENTS_ERROR","VISA_REDIRECTED","BEGINNING_PAYMENT","BEGIN_PAYMENT_SUCCESS","BEGIN_PAYMENT_ERROR","GETTING_PAYMENT","GET_PAYMENT_SUCCESS","GET_PAYMENT_ERROR","LOAD_PAYMENT_FILTERS","TOGGLE_RESET_CLIENT_FILTER","CLEAR_INSTRUMENT","CANCELLING_PAYMENT","CANCEL_PAYMENT_SUCCESS","CANCEL_PAYMENT_ERROR","CONFIRMING_PAYMENT","CONFIRM_PAYMENT_SUCCESS","CONFIRM_PAYMENT_ERROR","TRANSACTION_CALLBACK","REGISTER_CALLBACK_FAILED","FETCHING_LINKS","ADD_LINKS","ADD_DASHBOARD_LINKS","FETCH_LINKS_FAILED","FETCHING_ONE_USE_LINKS","ADD_ONE_USE_LINKS","FETCH_ONE_USE_LINKS_FAILED","CREATING_LINK","CREATE_LINK_SUCCESS","CREATE_LINK_FAILED","CREATING_LINKS_WITH_CSV","CREATE_LINKS_WITH_CSV_SUCCESS","CREATE_LINKS_WITH_CSV_FAILED","UPDATING_LINK","UPDATE_LINK_SUCCESS","UPDATE_LINK_FAILED","DELETING_LINK","DELETE_LINK_SUCCESS","DELETE_LINK_FAILED","SHARING_LINK","SHARE_LINK_SUCCESS","SHARE_LINK_FAILED","LOAD_LINK_FILTERS","LOAD_ONE_USE_LINK_FILTERS","GETTING_LINK_DATA","GET_LINK_DATA_SUCCESS","GET_LINK_DATA_FAILED","VALIDATING_LINK","VALIDATE_LINK_SUCCESS","VALIDATE_LINK_FAILED","FETCHING_SUB_BUSINESS","ADD_SUB_BUSINESS","FETCH_SUB_BUSINESS_FAILED","CREATING_SUB_BUSINESS","CREATE_SUB_BUSINESS_SUCCESS","CREATE_SUB_BUSINESS_FAILED","UPDATING_SUB_BUSINESS","UPDATE_SUB_BUSINESS_SUCCESS","ADDING_SUB_BUSINESS_PAYMENT_METHOD","ADD_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS","ADD_SUB_BUSINESS_PAYMENT_METHOD_FAILED","DELETING_SUB_BUSINESS_PAYMENT_METHOD","DELETE_SUB_BUSINESS_PAYMENT_METHOD_SUCCESS","DELETE_SUB_BUSINESS_PAYMENT_METHOD_FAILED","UPDATE_SUB_BUSINESS_FAILED","RESET_UPDATE_SUB_BUSINESS_PAYMENT_METHOD_STATE","BASE_URL","process","urlHelper","REACT_APP_B2B_URL","parseQueryString","queryString","window","location","search","substring","params","split","forEach","indexQuery","indexPair","queryKey","queryValue","length","isPublicPage","url","publicPages","indexOf","isPrivatePage","step","privatePagesWithParams","some","page","includes","privatePages","buildImageUrl","businessId","getHubUrl","generateUrlBusinessName","name","toLowerCase","trim","normalize","replace","isRegisterStep","Currency","Status","DateSpan","LinkTypeEnum","LinkStatusEnum","OrderFilterEnum","PaymentStatusEnum","PaymentsColumnSortEnum","CurrencyEnum","SortEnum","UserTypeEnum","ValidUntil","PaymentNotificationTypeEnum","PaymentTypeEnum","SubBusinessStatusEnum","NotificationChannelEnum","InclusionLawEnum","filteringHelper","getFiltersForLinks","fetchRequest","type","filterString","fetchLinksRequest","undefined","currency","currencyId","pesos","dollars","term","issuer","columnSort","sortDirection","collaborator","onlyActive","getFiltersString","getDatesFilterToAntiquity","dateSpan","from","to","getFiltersForPayments","getPaymentsFiltersString","getFiltersFromSearchParams","searchParams","previousFilters","filters","has","get","Number","paymentStatus","CUSTOM","moment","diff","TODAY","LAST7DAYS","LAST15DAYS","LAST30DAYS","getDateSpanFromAntiquity","fetchPaymentsRequest","All","PESO","DOLLAR","today","startOf","toISOString","subtract","ALL","getColumnIdFromColumnMap","columnMap","columnEnum","key","Object","hasOwnProperty","call","errorHelper","getErrorString","code","message","cookies","Cookies","http","request","a","fetch","response","text","then","body","parsedBody","JSON","parse","ex","stringBody","ok","status","remove","pathname","Error","statusText","path","args","headers","defaultHeaders","Authorization","mergedHeaders","Headers","requestOptions","method","Request","post","stringify","postForm","put","putForm","httpDelete","endpoints","login","resetPassword","confirmResetPassword","registerUser","confirmEmail","registerBusiness","changeUserPassword","account","modifyCredentials","resendConfirmation","unconfirmed","verify","collaborators","business","subbusiness","issuers","links","payments","beginPayment","emailVerification","installments","clients","billing","notifications","subBusiness","csv","paymentsService","fetchPayments","getPayment","confirmPayment","cancelPayment","limit","catch","error","beginPaymentRequest","paymentId","additionalHeaders","toString","finalizePaymentRequest","plexoReferenceId","isDashboard","dispatch","fetchingPayments","addDashboardPayments","addPayments","fetchPaymentsError","loadPaymentsFilters","loadFilters","paymentResponse","beginningPayment","console","log","beginPaymentSuccess","paymentUrl","beginPaymentError","confirmPaymentResponse","gettingPayment","getPaymentSuccess","getPaymentError","cancellingPayment","cancelPaymentSuccess","cancelPaymentError","toggleResetClientFilter","startSignalRConnection","connection","start","send","signalRMiddleware","store","next","action","connectionHub","protocol","signalR","withUrl","configureLogging","Critical","withAutomaticReconnect","withHubProtocol","build","on","success","transaction","stop","ActionTypes","initialState","loggingIn","loggedIn","user","logInErrorMessage","resetingPassword","resetPasswordSuccess","resetPasswordErrorMessage","confirmingResetPassword","confirmResetPasswordSuccess","confirmResetPasswordErrorMessage","registeringUser","registeredUser","registerUserSuccess","registerUserErrorMessage","validatingRegister","validateRegisterSuccess","validateRegisterErrorMessage","registeringBusiness","registeredBusiness","registerBusinessSuccess","registerBusinessErrorMessage","gettingAccount","getAccountErrorMessage","updatingAccount","updateAccountSuccess","updateAccountErrorMessage","changingCredentials","changeCredentialsSuccess","changeCredentialsErrorMessage","changingUserPassword","changeUserPasswordSuccess","changeUserPasswordErrorMessage","gettingUnconfirmedUsers","unconfirmedUsers","getUnconfirmedUsersErrorMessage","resendingConfirmation","resendConfirmationSuccess","resendConfirmationErrorMessage","verifyingUser","verifyUserSuccess","verifyUserErrorMessage","loadingBusinesses","businesses","businessesErrorMessage","creatingBusiness","createBusinessSuccess","createdBusiness","createBusinessErrorMessage","updatingBusiness","updateBusinessSuccess","updatedBusiness","updateBusinessErrorMessage","gettingBusiness","getBusinessSuccess","getBusinessErrorMessage","gettingSubBusinesses","subBusinesses","subBusinessesErrorMessage","updatingClientSecret","updateClientSecretSuccess","updateClientSecretErrorMessage","loadingClients","loadingClientsErrorMessage","updatingBilling","billingUpdateSuccess","billingUpdateError","creatingPaymentMethods","creatingPaymentMethodsSuccess","creatingPaymentMethodsErrorMessage","updatingPaymentMethods","updatingPaymentMethodsSuccess","updatingPaymentMethodsErrorMessage","deletingPaymentMethods","deletingPaymentMethodsSuccess","deletingPaymentMethodsErrorMessage","loadingCollaborators","collaboratorsErrorMessage","creatingCollaborator","createCollaboratorSuccess","createCollaboratorErrorMessage","updatingCollaborator","updateCollaboratorSuccess","updateCollaboratorErrorMessage","deletingCollaborator","deleteCollaboratorSuccess","deleteCollaboratorErrorMessage","enablingCollaborator","enableCollaboratorSuccess","enableCollaboratorErrorMessage","isCollaboratorResponse","users","loadingLinks","loadingOneUseLinks","dashboardLinks","oneUseLinks","currentPage","pageCount","oneUseCurrentPage","oneUsePageCount","linksType","ONTHEFLY","linksFilters","order","DescendingDate","oneUseLinksFilters","linksErrorMessage","oneUseLinksErrorMessage","creatingLink","createLinkSuccess","latestLink","createLinkErrorMessage","updatingLink","updateLinkSuccess","updateLinkErrorMessage","deletingLink","deleteLinkSuccess","deleteLinkErrorMessage","sharingLink","shareLinkSuccess","shareLinkErrorMessage","gettingLinkData","getLinkDataSuccess","linkData","getLinkDataErrorMessage","validatingLink","validateLinkSuccess","linkToPay","validateLinkErrorMessage","creatingLinksWithCSV","createLinksWithCSVSuccess","createLinksWithCSVErrorMessage","sendingNotification","sendNotificationSuccess","sendNotificationErrorMessage","resendingNotification","notification","resendNotificationSuccess","resendNotificationErrorMessage","loadingPaymentMethods","paymentMethods","paymentMethodsErrorMessage","creatingPaymentMethod","createPaymentMethodSuccess","createPaymentMethodErrorMessage","updatingPaymentMethod","updatePaymentMethodSuccess","updatePaymentMethodErrorMessage","deletingPaymentMethod","deletePaymentMethodSuccess","deletePaymentMethodErrorMessage","loadingIssuers","issuersErrorMessage","businessIssuers","loadingBusinessIssuers","businessIssuersErrorMessage","sendingDesiredIssuers","desiredIssuersSuccess","desiredIssuersErrorMessage","possibleInstallments","fetchingPossibleInstallments","fetchInstallmentsError","ivas","values","paymentPageLimit","linksPageLimit","timeToValidateLinks","loadingPayments","dashboardPayments","paymentsTotals","oneTimeOnlyTotals","uruguayanPesoAmount","uruguayanPesoCount","dollarAmount","dollarCount","approvedTotals","rejectedTotals","pageSize","rowCount","firstRowOnPage","lastRowOnPage","DESC","Date","paymentsErrorMessage","plexoUrl","beginPaymentErrorMessage","transactionPayment","selectedPayment","getPaymentErrorMessage","confirmingPayment","confirmPaymentSuccess","confirmedPayment","confirmPaymentErrorMessage","cancelPaymentErrorMessage","resetClientFilter","loadingSubBusiness","subBusinessErrorMessage","creatingSubBusiness","createSubBusinessSuccess","createSubBusinessErrorMessage","updatingSubBusiness","updateSubBusinessSuccess","updateSubBusinessErrorMessage","deletingSubBusiness","deleteSubBusinessSuccess","deleteSubBusinessErrorMessage","addingSubBusinessPaymentMethod","addSubBusinessPaymentMethodSuccess","addSubBusinessPaymentMethodErrorMessage","deletingSubBusinessPaymentMethod","deleteSubBusinessPaymentMethodSuccess","deleteSubBusinessPaymentMethodErrorMessage","rootReducer","combineReducers","auth","state","newAccount","hasCommerces","SUPERADMIN","accountWithCommerce","isLast","accountWithoutPaymentMethods","collaboratorsResponse","newCollaborators","push","active","updatedCollaborators","map","userId","names","surnames","nonDeletedCollaborators","filter","collaboratorId","newEnabledCollaborators","newPaymentMethods","paymentMethod","updatedPaymentMethod","c","id","nonDeletedPaymentMethods","issuerId","paymentMethodId","leftoverLinks","reset","kind","linksToAdd","concat","results","leftoverOneUseLinks","oneUSeLinksToAdd","newLinks","newOneUseLinks","link","linkType","PERMANENT","unshift","linksToUpdate","updatedLinks","updatedLink","description","reference","survivingLinks","linkId","survivingOneUseLinks","survivingDashboardLinks","newTotals","newPayments","payment","amount","DOLAR","value","CANCELLED","newPaymentsDashboardPayments","isSuccess","APPROVED","PENDING","paymentInfo","amountValue","totalAmount","errorCode","selectedInstallment","validationErrors","plexoResultText","linkReference","REJECTED","updatedClients","cli","newCli","billingEnabled","enabled","clientsWithNewCommerce","commerces","clientsWithUpdatedCommerce","i","findIndex","co","clientsWithDelCommerce","filteredComms","newSubBusiness","updatedSubBusiness","s","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","sentryReduxEnhancer","Sentry","createStore","applyMiddleware","thunk","theme","createMuiTheme","palette","primary","main","styles","light","secondary","dark","warning","info","slateBlue","slateBlueLight","background","default","typography","fontFamily","h1","fontSize","h2","h3","h4","h5","h6","subtitle1","color","fontWeight","normalTextWeight","subtitle2","semiBoldTextWeight","breakpoints","xs","sm","md","lg","xl","overrides","MuiButton","root","borderRadius","textTransform","padding","minWidth","minHeight","outlined","contained","boxShadow","containedPrimary","white","border","backgroundColor","primaryDisabled","borderColor","outlinedSecondary","textButtonSecondary","borderButtonSecondary","opacity","MuiIconButton","fill","MuiChip","width","height","clickable","clickableColorPrimary","colorPrimary","MuiTab","MuiBackdrop","MuiAppBar","positionSticky","top","headerShadow","colorSecondary","publicHeaderShadow","MuiPaper","elevation1","elevation2","marginTop","elevation3","elevation8","boxShadowDropdownMenu","MuiOutlinedInput","lightGrey","iconColor","MuiFormLabel","MuiFormControlLabel","marginRight","MuiSelect","icon","MuiTableContainer","MuiTableRow","transition","cursor","greyTableHead","head","grayTableHead","MuiTableCell","textAlign","borderBottom","wordBreak","maxWidth","overflow","textOverflow","whiteSpace","marginLeft","black","MuiListItem","button","MuiTableSortLabel","transform","MuiLink","underlineHover","textDecoration","MuiTooltip","tooltip","touch","MuiDivider","dividerHorizontal","props","hover","align","useStyles","makeStyles","createStyles","container","display","flexDirection","gap","justifyContent","down","alignItems","informationContainer","marginBottom","up","informationTitle","paddingTop","informationSubtitle","textWrap","detailTitle","rowTitle","logo","animation","LandingLayout","title","subtitle","content","children","classes","useTheme","isDesktop","useMediaQuery","className","src","alt","Typography","variant","ErrorBoundary","hasError","errorInfo","errorAnimationData","animationData","errorAnimation","loop","this","Button","onClick","navigate","reload","disableElevation","_","Component","ErrorBoundaryWithNavigate","useNavigate","Forbidden","alertAnimation","requiredString","passwordFormatString","mailString","passwordLengthErrorString","numberString","ISSUERS_WITHOUT_ACQUIRER","passwordRegex","LoginSchema","Yup","shape","email","required","password","matches","min","ResetPasswordSchema","RegisterUserSchema","repeatPassword","oneOf","max","telephoneNo","ChangeEmailSchema","actualPassword","notOneOf","ChangePasswordSchema","currentPassword","ChangeUserPasswordSchema","ProfileSchema","UserSchema","LinkSchema","typeError","SplitLinkSchema","subBusinessAmount","BusinessSchema","prettyName","urlName","legalId","vat","not","EditBusinessSchema","PaymentMethodSchema","acquirer","when","is","softDescriptor","QuickLinkSchema","OnTheFlySchema","schemas","ShareLinkSchema","AddReferenceSchema","ContactSchema","ShareByWhatsAppSchema","phone","ResendConfirmationSchema","CsvLinkSchema","test","parsedValue","parseFloat","isNaN","parseInt","validUntil","inputDate","isValid","isAfter","collaboratorsService","fetchCollaborators","fetchAllUsers","createCollaborator","updateCollaborator","deleteCollaborator","enableCollaborator","searchTerm","createCollaboratorRequest","updateCollaboratorRequest","enableCollaboratorRequest","addCollaborators","collaboratorsFailed","createCollaboratorFailed","updateCollaboratorFailed","enableCollaboratorFailed","CheckCircleIcon","viewBox","xmlns","d","variables","lightGreen","ErrorIcon","red","useSnackbarStyles","snackbar","margin","CustomSnackbar","open","autoHide","handleClose","onExited","statusIcon","SUCCESS","statusStyle","lightestGreen","lightRed","green","Snackbar","autoHideDuration","TransitionComponent","Slide","onClose","anchorOrigin","vertical","horizontal","SnackbarContent","style","EyeIcon","EyeSlashIcon","useTextFieldStyles","FormTextField","startAdornment","field","noLeadingZeros","form","touched","errors","TextField","inputProps","maxLength","InputProps","InputAdornment","position","endAdornment","onChange","event","sanitizedValue","target","parts","startsWith","label","placeholder","disabled","multiline","rows","passwordField","eyeButton","right","eyeButtonError","PasswordField","inputName","inputStyles","buttonStyles","useState","showPassword","setShowPassword","useField","meta","component","IconButton","prev","returnButton","ReturnButton","isMobile","screenTitle","screenTitleWithSpaceBetween","screenInfo","paddingRight","infoIcon","titleWithChild","submitButton","extraInfo","divider","buttonContainer","stepText","titleDivider","ScreenTitle","elementsAmount","formId","submitButtonText","loading","hasReturnButton","buttonClasses","clsx","Tooltip","disableFocusListener","Divider","orientation","flexItem","CircularProgress","size","SubmitButton","fullWidth","thickness","authService","validateRegister","getAccount","updateAccount","checkEmailAvailability","getUnconfirmedUsers","verifyUser","resetPasswordRequest","token","newPassword","changeCredentialsRequest","loginSuccess","loginError","resetPasswordError","confirmResetPasswordError","registerUserError","validateRegisterError","getAccountSuccess","getAccountError","updateAccountError","changeCredentials","changeCredentialsError","changeUserPasswordError","getUnconfirmedUsersSuccess","getUnconfirmedUsersError","resendConfirmationError","confirmation","verifyUserError","verification","ChangePasswordDialog","setOpen","useDispatch","useLocation","useSelector","submitting","setSubmitting","isUpdatingOwnPassword","COLLABORATOR","closeDialog","Dialog","DialogTitle","initialValues","validationSchema","onSubmit","helpers","ChangeUserPasswordRequest","changeUserPasswordRequest","oldPassword","DialogContent","DialogActions","ERROR","SubUser","userState","client","setCreatingCollaborator","setUpdatingCollaborator","setResetingPassword","passwordOpen","setPasswordOpen","isSuperAdmin","closeSnack","Paper","elevation","Link","SettingsIcon","colors","secondaryMain","userSelect","selected","menu","CogMenu","acceptsSplitPayments","anchorEl","setAnchorEl","selectOption","option","currentTarget","Menu","keepMounted","transformOrigin","getContentAnchorEl","Boolean","MenuItem","Clients","grey","Dashboard","stroke","strokeWidth","Payments","PermanentLink","SingleLink","options","route","roles","OWNER","secondaryRoute","settingsOptions","getOptionsFromRole","role","o","getTabOfPath","fromRoute","DesktopNavigation","setValue","useEffect","Tabs","newValue","indicator","index","Tab","disableRipple","connector","connect","logout","handleDialogClose","Close","Hamburguer","strokeLinecap","PlexoLinks","x","y","filterUnits","colorInterpolationFilters","floodOpacity","result","in","stdDeviation","in2","operator","mode","Question","NavigationBorder","plexoBlue","NavigationItem","secondaryPath","setMobileMenuOpened","isActive","handleOptionSelect","isSelected","Profile","ProfileNavigationItem","profileExpanded","setProfileExpanded","isCollaborator","isProfileSelected","Collapse","timeout","unmountOnExit","MobileNavigation","mobileMenuOpened","settingsExpanded","setSettingsExpanded","activeTab","getActiveTabIndex","isSettingSelected","direction","BoltMarginlessIcon","OnTheFlyButton","startIcon","logoutMenuItem","passwordDialogOpen","setPasswordDialogOpen","isFAQsPage","showProfile","Header","acceptsOnTheFly","AppBar","Loading","loadAnimation","PublicHeader","isHome","isRegister","redirectTo","whiteLogo","href","questionCircle","ScrollToTop","scrollTo","ConfirmEmail","alertAnimationData","successAnimationData","successAnimation","errorMessage","alreadyValidated","urlVars","set","AlertTriangle","UploadIcon","ImageUpload","isUpdating","image","setImage","setError","imageRef","imageInput","useRef","loadingImage","setLoadingImage","businessExistingImage","imageSrc","dummy","ref","onError","current","htmlFor","e","stopPropagation","accept","files","file","fileType","FileReader","fr","onload","readAsDataURL","onImageSelected","QuestionMark","VATTooltip","tooltipOpen","setTooltipOpen","tooltipRef","handleOutsideClick","contains","document","addEventListener","removeEventListener","popperStyles","pointerEvents","placement","disableHoverListener","disableTouchListener","PopperProps","currencyHelper","getCurrencyToken","getCurrencyName","urlFriendly","mapCurrency","enumerable","fn","keys","v","m","isValidCurrency","formatCurrencyToNumber","normalizedCurrencyName","dateHelper","toNiceString","date","toLocaleTimeString","toShorterNiceString","format","toEvenShorterNiceString","getValidUntilName","NONE","HALFHOUR","ONEHOUR","TWOHOURS","DAYEND","MONTHEND","getDateFromEnum","validUntilDate","toSendableString","add","endOf","getDashboardPaymentDate","theDate","yesterday","isSame","year","month","day","inclusionLawHelper","getInclusionLawName","inclusionLaw","LAW17934","LAW19210","vatRate","vatRateFor17934","AddIcon","DeleteIcon","rx","issuerHelper","getIssuersList","existsPaymentMethod","paymentProcessors","linksService","fetchLinks","createLink","createSplitLink","updateLink","updateSplitLink","deleteLink","shareLink","getLinkData","validateLink","uploadLinksCSV","count","linkRequest","createLinksWhitCSVRequest","formData","FormData","append","addDashboardLinks","addLinks","linksFailed","fetchOneUseLinks","addOneUseLinks","oneUselinksFailed","loadLinksFilters","loadOneUseLinksFilters","loadOneUSeFilters","paymentType","Split","createLinkFailed","createLinksWhitCSV","creatingLinksWhitCSV","createLinksWithCSVFailed","updateLinkFailed","deleteLinkFailed","shareLinkFailed","getLinkDataFailed","validateLinkFailed","useFetchLinksOnUpdate","useCallback","initialLinks","ONETIME","paymentMethodsService","fetchPaymentMethods","fetchPossibleInstallments","createPaymentMethod","updatePaymentMethod","deletePaymentMethod","fetchIssuers","fetchBusinessIssuers","sendDesiredIssuers","createPaymentMethodRequest","updatePaymentMethodRequest","subBusinessId","addPaymentMethods","paymentMethodsFailed","createPaymentMethodFailed","updatePaymentMethodFailed","deletePaymentMethodFailed","addIssuers","issuersFailed","addBusinessIssuers","issuersBusinessFailed","desiredIssuersFailed","fetchingInstallments","fetchingInstallmentsSuccess","fetchInstallmentsFailed","useDialogStyles","paddingBottom","actions","deleteButton","DeleteDialog","deleteAction","deleteButtonText","hasCancelButton","deleteDisabled","ISSUERS_WITHOUT_INSTALLMENTS","helperText","lineHeight","installmentsBox","gridTemplateColumns","justifyItems","installment","flex","InstallmentsField","selectedInstallments","setSelectedInstallments","selectedIssuer","loaded","setLoaded","Grid","item","Chip","find","ins","existingInstallment","checkInstallment","spacing","switchBase","common","thumb","track","checked","focusVisible","CustomSwitch","Switch","focusVisibleClassName","useSwitchStyles","FormSwitchField","FormControl","setFieldValue","PlexoFields","fields","firstPaymentMethod","f","fieldData","getPlexoFieldData","fieldType","crossBankTransfers","useSelectStyles","select","maxHeight","errorText","FormSelectField","InputLabel","Select","onSelectChange","FormHelperText","IssuerAndAcquirer","installmentsField","issuersList","pp","SnackbarManager","SoftDescriptor","PaymentMethodForm","handleSuccess","isDialog","setCreatingPaymentMethod","setUpdatingPaymentMethod","isIssuerWithoutInstallments","renderContent","noInstallmentsIssuer","il","paymentProcessorId","Math","accountNumber","commerceNumber","providerCommerceNumber","terminalNumber","paymentFacilitatorCommerceId","availableBanks","rut","commerceRUT","merchantCategoryCode","mcc","maxInstallments","enableReinitialize","selectedAcquirer","isSubmitButtonDisabled","PaymentMethodDialog","logoutOpen","setLogoutOpen","SinglePaymentMethodDeleteTooltip","PaymentMethods","deleteOpen","setDeleteOpen","setDeletingPaymentMethod","selectedPaymentMethod","setSelectedPaymentMethod","paymentMethodToDelete","setPaymentMethodToDelete","fetchLinksOnUpdate","addPaymentMethodDisabled","enterDelay","beginDeletePaymentMethod","issuerImageUrl","noWrap","issuerName","warningContainter","warningBackground","warningBorder","Warning","businessService","fetchBusinesses","createBusiness","updateBusiness","updateBusinessPicture","removeBusinessPicture","getBusiness","getBusinessSubBusinesses","updateClientSecret","downloadNotificationsReport","picture","updateBusinessRequest","updateImageRequest","businessUrlName","clientSecretRequest","fromDate","toDate","formattedFromDate","formattedToDate","addBusinesses","fetchBusinessesFailed","createBusinessFailed","updateBusinessFailed","getBusinessFailed","gettingBusinessSubBusinesses","getBusinessSubBusinessesSuccess","getBusinessSubBusinessesFailed","updatingSecret","updateSecretSuccess","updateSecretFailed","informationCol","flexShrink","informationRow","flexWrap","tooltipContainer","Business","initialized","setInitialized","updating","setUpdating","selectedPhoto","setSelectedPhoto","pictureError","setPictureError","imageError","setImageError","logoImage","contentType","data","plexoCommerceName","sendNotification","mailNotificationsEnabled","mailForNotifications","urlForSystemNotifications","clientId","clientSecret","ChangePassword","changingPassword","setChangingPassword","formikRef","innerRef","resetForm","SplitIcon","clipPath","paddingLeft","secret","setSecret","creating","generator","generate","numbers","uppercase","contentText","DisableSplitPaymentsDialog","handleConfirm","DialogContentText","autoFocus","useDateFieldStyles","FormDateField","minDateMessage","DateTimePicker","inputVariant","newDate","disablePast","csvHeaders","csvNotificationHeaders","csvLinksHeaders","paymentStatusEnumHelper","useBackgroundColorByStatus","useIconColorByStatus","getStatusText","getStatusColorVariant","downloadNotificationsContainer","downloadNotificationsForm","dateContainer","NotificationReport","currentDate","past7daysDate","csvRef","notificationsToDownload","setNotificationsToDownload","isLoading","setIsLoading","shouldDownload","setShouldDownload","click","handleDownloadWebhookReport","csvData","httpCodeResponse","created","toLocaleString","plexoTransactionId","metadata","PlexoTransactionId","externalId","ExternalId","Installments","Instrument","IssuerName","maskedPan","Name","slice","Amount","Value","buildNotifications","notificationsDto","Box","filename","configurationContainer","configurationTitleContainer","Configuration","fastPaymentsEnabled","setFastPaymentsEnabled","splitPaymentsEnabled","setSplitPaymentsEnabled","emailsEnabled","setEmailsEnabled","openDialog","setOpenDialog","pendingSubmit","setPendingSubmit","proceedToSubmitBusiness","texts","deepBlue","veryDarkBlue","help","EmailSent","Logo","emailSentImg","ConfirmResetPassword","emailSentText","Contact","serverState","setServerState","serverMessage","setServerMessage","snackOpened","setSnackOpened","handleServerResponse","msg","axios","isSubmitting","noValidate","setTimeout","MultiUseLinkIcon","transparent","fill-opacity","OneTimeLinkIcon","gridTemplateRows","buttonsDiv","alignSelf","EmptyLinksMessage","noLinksEverCreated","hasLinks","ShareIcon","linkHelper","verifyValidation","verifyPaymentMethods","linkIssuers","getTotalLinkAmount","splitLinkDto","BoltIcon","linkTypeEnumHelper","getIcon","numberHelper","getNumberWithDots","getSubtotal","iva","toFixed","getIVA","taxedAmount","number","paymentTypeHelper","paymentTypesTitle","Regular","paymentTypesSubtitle","LinkToShareTooltip","reason","ShareByEmail","ShareByQr","ShareByWhatsapp","getWindowDimensions","innerWidth","innerHeight","StyleSheet","create","textContainer","objectFit","PdfQr","price","priceValueFormatted","closeContainer","titleContainer","descriptionText","qrCode","amountText","QrCodeDialog","windowWidth","hasClicked","setHasClicked","windowDimensions","setWindowDimensions","handleResize","useWindowDimensions","downloadPDF","base64Image","querySelector","toDataURL","pdf","toBlob","blob","saveAs","paper","includeMargin","dialogActions","ShareByWhatsAppDialog","whatsAppLink","share","setSharingLink","valueFieldsContainer","currencySelect","valueField","linkContainer","veryLightGrey","linkInfo","shareBoxesContainer","whatsapp","limeGreen","darkLimeGreen","purple","darkPurple","qr","strongCyan","darkStrongCyan","shareBox","formRow","linkUrl","shareTitle","qrIcon","qrIconContainer","pureBlue","shareRequest","createRequest","openEmailOptions","setOpenEmailOptions","openWhatsAppOptions","setOpenWhatsAppOptions","openQrDialog","setOpenQrDialog","copyingLink","setCopyingLink","creatingOneUseLink","setCreatingOneUseLink","newLink","setNewLink","navigator","clipboard","writeText","installmentsDto","baseRequest","installmentsIds","splitLinkRequest","boxSizing","rowContainer","detailInfo","amountInfo","boldTextWeight","descriptionRow","smallIconButton","LinkListRow","currencyToken","amountWithDots","shareOpen","setShareOpen","isLinkExpired","noPaymentMethods","sizeSmall","DashboardLinkList","EmptyMessage","emptyAnimation","StatusPill","isCard","customStyles","colorValue","isTablet","paperBorder","row","rowDescription","rowAmount","rowDate","linkTypeIcon","PaymentCard","splitPaymentTotal","splitPayment","issuerLogoUrl","ViewIcon","flexGrow","amountSection","darkBlue","dateAndDescriptionContainer","PaymentCardDesktop","paymentsHeader","contentContainer","paymentsContainer","emptyMessageContainer","showAllPaymentsButton","lastPaymentCard","DashboardPayments","viewAllPaymentsButton","filteredPayments","buttonSeparation","containerDiv","linkList","useMemo","dashboardPaymentsFilters","FAQs","userFAQs","clientFAQs","contactUsButton","Home","network","ErrorCard","paymentReference","titleToShow","subTitleElement","ExpiredLinkCard","paymentMethodsCard","boxShadowSmall","paymentMethodsCardSelected","primaryShade","imageContainer","alignContent","paymentMethodsDetails","IssuerCard","clickAction","sort","b","Card","ArrowDown","strokeLinejoin","PaymentDetails","accordionRoot","accordionSummary","accordionDetails","AccordionLinkDetails","Accordion","AccordionSummary","expandIcon","AccordionDetails","paymentDetailHeader","total","LinkDetailContent","cardLeft","header","businessData","LinkDetailCard","setSrc","LongArrowLeft","floatingButtons","bottom","boxShadowFloatingButtons","buttons","backButton","FloatingButtons","setStep","isOntheFly","imgContainerWithoutImage","imgContainerWithImage","OnTheFlyDetailCard","onImageError","companyId","cardRight","commentLabel","almostGrey","textarea","resize","outline","actionButtons","payButton","ConsumerInstallments","submit","selectedAmount","sortedInstallments","comment","render","TextareaAutosize","auto","rowsMin","defaultValue","justifySelf","IssuersCardList","hasButton","fieldsContainer","currencyField","float","OnTheFlyLanding","setSelectedIssuer","setAmount","PermanentLinkLanding","footerContainer","borderBottomLeftRadius","borderBottomRightRadius","details","borderTopLeftRadius","borderTopRightRadius","borderBottomColor","line","separator","borderTop","horizontalChunk","amountChunk","verticalChunk","verticalLastChunk","smallText","bigNumber","cardNumber","PDFReceipt","issuerNamePDF","datePDF","descriptionPDF","anyPayment","isSelectedPaymentInstrument","instrument","createdAt","linkDescription","businessVatRate","urlObject","uri","source","isPayment","PaidLinkCard","confirmedPaymentInfo","cancelledAnimation","generatePdf","setGeneratePdf","fileName","boxShadowDark","flexRow","rowText","fontStyle","titleTextWeight","ValidatePayment","Landing","useParams","isLink","isOnTheFly","errorTitle","malformed","setMalformed","warnings","setWarnings","amountToPay","setAmountToPay","validatingPayment","setValidatingPayment","setGettingLinkData","setBeginningPayment","gettingLinkDataOrValidatingLink","expiredLink","oneTimeLink","oneTimeLinkWithPayments","expiredOneTimeLinkWithPaymentCreated","CREATED","linkWithoutIssuers","linkToValidate","totalAmountFetched","businessFetched","isTest","host","environmentId","fingerprintId","uuid","visaFingerprint","fingerprint","renderPaidLinkCard","callback","existingScript","getElementById","script","createElement","appendChild","loadVisaDeviceFingerprint","linkToPayRequest","businessName","redirectUrl","origin","issuerPlexoId","deviceFingerprint","clientComment","onTheFlyRequest","ConditionalTooltip","showTooltip","enterTouchDelay","leaveTouchDelay","interactive","buttonsContainer","primaryButton","secondaryButton","LinkActions","setClickedCopy","clickedCopy","paymentMethodsIds","NewLinkHeader","isPermantent","card","flexBasis","issuerNameText","maxInstallmentsText","PaymentMethodCard","setPaymentMethodsIds","existingIndex","newIds","splice","handleTogglePaymentMethod","AmountInput","informationLabelClass","vatAsDecimal","subTotal","vatAmount","informationLabel","Inputs","isRegularPayment","regularPaymentValues","law17934Selected","selectedValue","newVatRateOptions","currentVatRate","isCurrentOptionValid","newSubBusinessVatRateOptions","updatedVatRate","currentSubbusinessVatRate","subBusinessVatRate","updatedSubBusinessVatRate","contentEditable","RegularLink","setCreatingLink","setUpdatingLink","commonClasses","allInstallmentIds","businessDefaultInclusionLaw","defaultInclusionLaw","submitLink","sendLinkRequest","installmentsId","commerceIds","paperRoot","contentTitle","paymentHeader","contentTitleHeader","paymentSwitchContainer","handleSwitchAllPaymentMethods","paymentMethodContainer","hasPaymentMethodsAvailable","selectedSubBusinessName","sb","paymentMetod","flexTwo","SplitLinkPaymentInput","valueId","availableSelectOptions","isBusiness","totalContainer","totalRow","amountDetail","blackText","SplitLinkPaymentInputs","useFormikContext","availableOptions","setAvailableOptions","ACTIVE","subTotalAmount","totalVat","UpdatePaymentMethodsOptions","setPaymentMethods","selectedSubBusiness","SplitLink","updateSplitLinkRequest","splitLinkId","contentTitleDescription","radioOptionsContainer","radioOption","selectedOption","paymentTypeOption","subBusinessState","businessAcceptsSplitPayments","setPaymentType","noSubBusinessesAvailable","every","INACTIVE","paymentTypeLabel","RadioGroup","aria-label","FormControlLabel","control","Radio","ErrorMessage","CsvFile","EditIcon","footer","creatorTitle","creator","iconContainer","CardFooter","setLinkToDelete","creatorName","LinkStatusPill","getStatusColor","amountContainer","marginBlockStart","marginBlockEnd","expirationText","LinkCard","useFilterLogic","loadFiltersAction","filtersState","openFilters","setOpenFilters","setSearchTerm","searchLinks","closeFiltersDialog","CollaboratorFilters","setFilters","selectedBusiness","hasDateFilters","sortedCollaborators","toUpperCase","localeCompare","newPaymentsFilters","selectValue","FormLabel","focused","FormGroup","displayEmpty","input","OutlinedInput","filterCollaborator","targetValue","String","selectedCollaborator","MenuProps","CurrencyFilters","newLinksFilters","getSelectedCurrency","dialog","picker","DateRangeDialog","isOpen","setIsOpen","setFromDate","setToDate","DatePicker","maxDate","disableFuture","DateFilters","isPaymentFilter","IssuerFilters","issuersToSelect","filterIssuer","Cancel","maskUnits","mask","searchInput","softGrey","Search","triggerSearch","hasClearButton","typingTimer","setTypingTimer","clearTimeout","InputBase","onFocus","outlinedRoot","filtersContainer","heading","pxToRem","fontWeightRegular","FiltersComponent","hasDateFilter","hasIssuerFilter","hasCollaboratorFilter","clientsFilter","useSearchParams","setSearchParams","initialFilters","localFilters","setLocalFilters","urlFilters","Filters","strokeMiterlimit","LinksFilterLayout","LinksFilters","OneUseLinksFilters","Links","setDeletingLink","linkToDelete","isOneTimeLink","linksToDisplay","oneUseLinkCount","linkCount","beginDeleteLink","hasMore","dataLength","loader","registerText","primaryMidtone","setLoggingIn","decoration","Maintenance","settingsContainer","ClientSettings","selectedClient","handleBillingChange","getPaymentsHeadCells","isDashboardTable","paymentsColumns","columnId","disableSorting","paymentColumnMap","Description","userDto","Username","LinkType","noHoverRow","CustomTable","rowsData","headCells","emptyDataMessage","boxProps","paperProps","tableContainerProps","tableProps","tableHeadProps","tableRowProps","sortable","renderCell","hasRowHover","moreTopMargin","TableContainer","Table","TableHead","TableRow","sortEnum","TableCell","TableSortLabel","ASC","onRequestSort","createSortHandler","TableBody","colSpan","rowIndex","cellIndex","AdminCrown","clip-path","Check","Resend","centeredCell","iconButton","ClientUsersTable","isForDashboard","setResendingConfirmation","orderedUsers","slicedUsers","handleEnableCollaborator","isOpened","emailConfirmed","defaultChecked","ArrowForwardOutlined","clientsService","fetchClients","toggleClientBilling","electronicBillingEnabled","addClients","clientsFailed","toggleBillingSuccess","toggleBillingError","PlexoCommerceText","clientNames","ManageClients","setSelectedClient","snackbarOpen","setSnackbarOpen","showClientDetails","ManageClientUsers","OnTheFlyPaymentsActions","handleOnClickViewQR","formControl","descriptiveText","OnTheFlyPayments","authState","setOpeQrDialog","setUrl","linkCreated","setLinkCreated","currencies","openDialogAndSetUrl","newUrl","Hidden","smDown","mdUp","useNotificationId","notificationIdToResend","notificationType","PAYMENT_CANCELLATION","PAYMENT_OK","buttonPrimary","resendButton","buttonMobile","PaymentDetailActions","resendNotification","paymentState","notificationId","deletingPayment","setDeletingPayment","setSendingNotification","deleteDialogOpen","setDeleteDialogOpen","lastCompletedAction","setLastCompletedAction","businessUrlForSystemNotifications","sendingOrResendingNotification","sendNotificationFinished","resendNotificationFinished","sendOrResendNotificationSucces","cancelPaymentFinished","cancelPaymentSucces","allSuccess","cancellable","snackbarMessage","BankIcon","fillOpacity","bankLogoMapping","AMEX","ANDA","BBVA","BROU","CABAL","CREDITEL","FUCAC","HSBC","ITAU","MIDINERO","OCA","PASSCARD","PIX","PREX","SANTANDER","SCOTIABANK","SISTARBANC","TARJETAD","capitalizeIssuerName","word","match","charAt","join","issuerCardHelper","normalizedIssuer","trimmedIssuer","normalizeIssuer","logoSrc","capitalizedIssuer","rowDetail","DetailRow","detail","isState","rowTitleClass","HelpIcon","linkExternalId","LinkExternalIdRow","SplitPaymentDetail","rightWidthClass","totalAmountClass","amountDetailClass","titleClass","splitPaymentCurrency","splitPaymentTaxedAmountWithDots","splitPaymentIVA","splitPaymentAmountWithDots","failedText","rightWidth","splitPaymentTitle","amountTitle","splitAmountDetail","icoColor","issuerImageContainer","cardIssuer","PaymentDetailContent","failedPayment","hasBillingEnabled","paymentCurrency","paymentAmount","formattedPaymentAmount","totalTaxedAmount","formattedTaxedAmount","paymentIVA","linkCreationDate","subBusinessDto","referencePayment","clientComments","authorization","ticket","invoiceNumber","PaymentDetailHeader","notificationsService","notificationsRespone","sendNotificationError","resendNotificationError","PaymentDetail","paymentsState","cancelPaymentForBusiness","handleSendNotification","handleResendNotification","ArrowUp","scrollButton","contrastText","zIndex","hidden","ScrollTopButton","showButton","setShowButton","handleScroll","scrollY","behavior","flexRowDescription","flexRowAmounts","flexRowBaseline","visibility","txtPayments","ColoredCardWithTotals","pesosAmount","usdAmount","pesosCount","usdCount","paletteColor","txtColor","usd","withe","coloredCard","secondDivider","xsUp","PaymentsCards","maxItems","loadNextPage","ChevronLeft","ChevronRight","pagination","chevronButton","pageButton","activePage","ellipsis","range","CustomPagination","itemsPerPage","onPageChange","paginationButtons","pages","totalNumbers","startPage","endPage","rangePages","paginationItems","PaymentsTable","showPlexoNames","totalItems","setCurrentPage","hasSplitPayments","emptyMessage","tooltipTitle","newOrderBy","paymentColumnEnum","getColumnMap","accordion","collapseButton","withStyles","MuiAccordionSummary","TotalsAccordion","panel","expanded","setExpanded","square","newExpanded","ClientsFilter","filterByBusiness","resetTrigger","setResetTrigger","setSelectedBusiness","handleClientChange","PaymentsFilters","PdfFile","headerRow","column","PDFPayments","csvLink","exportButton","ExportPayments","setLoadingPayments","allLocalPayments","setAllLocalPayments","hasClickedCSV","setHasClickedCSV","hasClickedPDF","setHasClickedPDF","fetchAllPayments","transactions","finally","onClickHandler","cardType","buildCSVPayments","desktopContainer","PaymentsScreenTitle","setShowPlexoNames","flexContainer","GoBackDialog","attachEvent","PlexoPayment","iframeRef","onMessage","plexo","plexo-payment-header","setChangingCredentials","emailOpen","setEmailOpen","setUpdatingAccount","visaRedirected","visaRedirect","init","setInit","isOnIframe","parent","beginPaymentId","object","errorcode","errormessage","payload","postMessage","flexBetween","RegisterHeader","okButton","EmailConfirmationDialog","checkbox","imageInstructions","BusinessForm","selectedImage","setSelectedImage","openConfirmationDialog","setOpenConfirmationDialog","formValues","setFormValues","setCreatingBusiness","allIvas","isInitialValid","handlePrettyNameChange","BusinessConfirmationDialog","shadeGrey","setEmail","goBack","setCreating","setChecked","validatedEmail","setValidatedEmail","validating","setValidating","mailHasError","setMailHasError","validate","mailValue","validateOnChange","Checkbox","rel","Register","hasBusinessCreated","disableBackButton","FirstPaymentMethod","formActions","confirmButton","changingDesiredIssuers","setChangingDessiredIssuers","desiredIssuers","setDessiredIssuers","RequestIssuers","Result","ready","setReady","isAbitabPayment","suscessTitle","successContent","abitabCode","subBusinessCard","titleAndStatus","textSize","paymentMethodsAndAction","paymentMethodDivider","MobileSubBusinessCard","hasMorePaymentMethods","reducedPaymentMethods","titleAndPaymentMethods","stateAndActions","SubBusinessCard","subBusinessService","fetchSubBusiness","createSubBusiness","updateSubBusiness","deleteSubBusinessPaymentMethod","createPaymentMethodForSubBusiness","createSubBusinessRequest","updateSubBusinessRequest","createPaymentMethodForSubBusinessRequest","addSubBusiness","subBusinessFailed","createSubBusinessFailed","updateSubBusinessFailed","deleteSubBusinessPaymentMethodFailed","addSubBusinessPaymentMethodFailed","subBusinessContainer","SplitPayments","SubBusinessPlexoFields","renderCrossBankTransfersField","renderDefaultField","creatingCommerce","updatingCommerce","SubBusinessPaymentMethodForm","addPaymentMethodToSubBusiness","addingPaymentMethod","setAddingPaymentMethod","PlexoFieldsForSubBusiness","plexoCommerceId","SubBusinessDialog","AddPaymentMethodIcon","commerceCard","grayscale","PaymentMethodsToAdd","openModalWithCommerceData","paymentMethodsToAdd","setUpdatingSubBusinessPaymentMethod","deletePaymentMethodFromSubBusiness","comerceToRemove","isPaymentMethodInSubBusiness","issuerCommand","handleClick","DisableSubBusinessDialog","disabledButton","PaymentMethodSnackbar","updatingSubBusinessPaymentMethod","isSuccessful","isError","SubBusinessActions","setDisableDialogOpen","changeSubBusinessStatus","changingSubBusinessStatus","subBusinessEnabled","nameCard","normalFontWeight","fieldAndButton","SubBusinessForm","SubBusiness","setCreatingSubBusiness","setUpdatingSubBusiness","setChangingSubBusinessStatus","setPaymentMethodsToAdd","diableDialogOpen","commercesOfSubBusiness","prevPaymentMethodsToAdd","isAlreadyInState","configureIssuersCommand","commerce","paragraph","TermsAndConditions","setVerifyingUser","UnconfirmedUsers","titleText","messageText","regularTextWeight","errorButton","CSVUploadDialog","dialogType","setDialogType","uploading","okText","okAction","buttonClass","cellStyles","iconStyles","ErrorsTable","invalidRows","invalidRow","rowErrors","err","arrow","yellowWarningBorder","yellowWarningBackground","warningText","yellowWarningText","tableCard","titleTexts","AlertErrors","columns","csvErrors","errorCount","ReviewCSVLinksScreenTitle","ReviewCSVLinks","setUploading","setCSVData","setCsvErrors","fileWithoutHeaders","setFileWithoutHeaders","Papa","skipEmptyLines","complete","validRows","columnNames","removedHeader","rowObject","reduce","acc","colName","abortEarly","ValidationError","inner","mappedCSVData","newCSVContent","unparse","delimiter","newFile","File","useParseCSV","handleSubmit","uploadLinksCSVRequest","Promise","resolve","csvExample","uploadCard","uploadContainer","fileContainer","download","UploadCSVLinks","selectedFile","validationResult","setValidationResult","validateFile","fileHeaders","expectedHeaders","missingHeaders","useValidationCSV","hasClickedDownloadCSV","setHasClickedDownloadCSV","enclosingCharacter","span","UpdateCollaboratorButton","UsersDesktop","setEnablingCollaborator","currentEnablingCollaborator","setCurrentEnablingCollaborator","orderedCollaborators","isSwitchDisabled","handleSwitchClick","UpdateButton","UserCard","UsersMobile","Main","setIsPrivatePage","setIsHome","noPaymentMethodsYet","setNoPaymentMethodsYet","hasToken","isBusinessAdmin","isPrivate","isLoadingBusiness","hasPaymentMethods","isRedirectPage","isRegisterPage","isIssuersPage","isFaqsPage","isPublicPageWithPaymentMethod","element","App","ThemeProvider","utils","MomentUtils","locale","CssBaseline","siteId","HOTJAR_SITE_ID","hotjarVersion","HOTJAR_VERSION","dsn","integrations","replaysOnErrorSampleRate","environment","Hotjar","debug","ReactDOM","StrictMode"],"mappings":";;09jBACAA,EAAOC,QAAU,CAAC,gBAAkB,UAAU,IAAM,UAAU,SAAW,UAAU,OAAS,UAAU,QAAU,UAAU,KAAO,UAAU,UAAY,UAAU,eAAiB,YAAY,MAAQ,UAAU,WAAa,UAAU,cAAgB,UAAU,MAAQ,OAAO,QAAU,UAAU,cAAgB,UAAU,kBAAoB,YAAY,UAAY,UAAU,cAAgB,UAAU,cAAgB,UAAU,KAAO,UAAU,mBAAqB,YAAY,WAAa,UAAU,SAAW,UAAU,SAAW,UAAU,aAAe,OAAO,UAAY,UAAU,SAAW,UAAU,MAAQ,OAAO,UAAY,UAAU,SAAW,UAAU,iBAAmB,YAAY,WAAa,UAAU,gBAAkB,UAAU,UAAY,UAAU,SAAW,UAAU,YAAc,UAAU,oBAAsB,UAAU,kBAAoB,UAAU,wBAA0B,UAAU,QAAU,UAAU,aAAe,YAAY,aAAe,UAAU,eAAiB,UAAU,YAAc,UAAU,gBAAkB,YAAY,oBAAsB,UAAU,sBAAwB,UAAU,mBAAqB,qBAAqB,UAAY,UAAU,cAAgB,UAAU,kBAAoB,sBAAsB,UAAY,UAAU,cAAgB,UAAU,WAAa,UAAU,SAAW,UAAU,aAAe,UAAU,OAAS,UAAU,WAAa,UAAU,eAAiB,UAAU,SAAW,UAAU,YAAc,kBAAkB,YAAc,UAAU,UAAY,UAAU,aAAe,UAAU,OAAS,uCAAyC,OAAS,+DAAiE,aAAe,wCAA0C,QAAU,wCAA0C,aAAe,wCAA0C,aAAe,OAAO,oBAAsB,OAAO,gBAAkB,OAAO,aAAe,OAAO,aAAe,SAAS,iBAAmB,MAAM,mBAAqB,MAAM,eAAiB,MAAM,gBAAkB,MAAM,aAAe,6CAA6C,UAAY,6BAA6B,eAAiB,4BAA4B,cAAgB,4BAA4B,mBAAqB,2BAA2B,sBAAwB,6BAA6B,yBAA2B,mCAAmC,mBAAqB,4BAA4B,aAAe,UAAU,kBAAoB,Y,qjpBC6Bn9EC,EAAa,aACbC,EAAgB,gBAChBC,EAAc,cAkBdC,EAAS,SAQTC,EAAoB,oBACpBC,EAAyB,yBACzBC,EAAuB,uBAevBC,EAA4B,4BAC5BC,EAAiC,iCACjCC,EAA+B,+BAmB/BC,EAAmB,mBACnBC,EAAwB,wBACxBC,EAAsB,sBAqBtBC,EAAsB,sBACtBC,EAA4B,4BAC5BC,EAA0B,0BAoB1BC,EAAuB,uBACvBC,EAA4B,4BAC5BC,EAA0B,0BAqB1BC,EAAkB,kBAClBC,EAAsB,sBACtBC,EAAoB,oBAkBpBC,EAAmB,mBACnBC,EAAyB,yBACzBC,EAAuB,uBAkBvBC,EAAuB,uBACvBC,EAA6B,6BAC7BC,EAA2B,2BAoB3BC,EAAyB,yBACzBC,EAA+B,+BAC/BC,EAA6B,6BAoB7BC,EAA4B,4BAC5BC,EAAgC,gCAChCC,GAA8B,8BAqB9BC,GAAiB,iBACjBC,GAAsB,sBACtBC,GAAoB,oBAkBpBC,GAAyB,yBACzBC,GAA8B,8BAC9BC,GAA6B,6BA2C7BC,GAAmB,mBACnBC,GAAc,cACdC,GAAuB,uBAkBvBC,GAA0B,0BAC1BC,GAAgC,gCAChCC,GAA+B,+BA2B/BC,GAAsB,sBACtBC,GAAiB,iBACjBC,GAA0B,0BAqB1BC,GAAoB,oBACpBC,GAA0B,0BAC1BC,GAAyB,yBAqBzBC,GAAoB,oBACpBC,GAA0B,0BAC1BC,GAAyB,yBAqBzBC,GAAmB,mBACnBC,GAAuB,uBACvBC,GAAsB,sBAkBtBC,GAAkC,kCAClCC,GAAsC,sCACtCC,GAAqC,qCAqBrCC,GAAkB,kBAClBC,GAAwB,wBACxBC,GAAuB,uBA6BvBC,GAAyB,yBACzBC,GAAoB,oBACpBC,GAA6B,6BAqB7BC,GAAwB,wBACxBC,GAA8B,8BAC9BC,GAA6B,6BAqB7BC,GAAwB,wBACxBC,GAA8B,8BAC9BC,GAA6B,6BAqB7BC,GAAwB,wBACxBC,GAA8B,8BAC9BC,GAA6B,6BAqB7BC,GAAwB,wBACxBC,GAA8B,8BAC9BC,GAA6B,6BAgC7BC,GAA2B,2BAC3BC,GAAsB,sBACtBC,GAA+B,+BAqB/BC,GAA0B,0BAC1BC,GAAgC,gCAChCC,GAA+B,+BAqB/BC,GAAmC,mCACnCC,GAAyC,yCACzCC,GAAwC,wCAsBxCC,GAA0B,0BAC1BC,GAAgC,gCAChCC,GAA+B,+BAqB/BC,GAAmC,mCACnCC,GAAyC,yCAuBzCC,GAA0B,0BAC1BC,GAAgC,gCAChCC,GAA+B,+BAsB/BC,GAAmC,mCACnCC,GAAyC,yCACzCC,GAAwC,wCAsBxCC,GAAmB,mBACnBC,GAAc,cACdC,GAAuB,uBAkBvBC,GAA4B,4BAC5BC,GAAuB,uBACvBC,GAAgC,gCAqBhCC,GAA0B,0BAC1BC,GAA0B,0BAC1BC,GAAyB,yBAoBzBC,GAAwB,wBACxBC,GAA6B,6BAC7BC,GAA4B,4BAsC5BC,GAAuB,uBACvBC,GAA4B,4BAC5BC,GAA0B,0BAqB1BC,GAAyB,yBACzBC,GAA8B,8BAC9BC,GAA4B,4BA2B5BC,GAAoB,oBACpBC,GAAe,eACfC,GAAyB,yBACzBC,GAAuB,uBACvBC,GAAkB,kBAuBlBC,GAAoB,oBACpBC,GAAwB,wBACxBC,GAAsB,sBAmBtBC,GAAkB,kBAClBC,GAAsB,sBACtBC,GAAoB,oBAkBpBC,GAAuB,uBAOvBC,GAA6B,sBAM7BC,GAAmB,mBAMnBC,GAAqB,qBACrBC,GAAyB,yBACzBC,GAAuB,uBAoBvBC,GAAqB,qBACrBC,GAA0B,0BAC1BC,GAAwB,wBACxBC,GAAuB,uBACvBC,GAA2B,2BAkD3BC,GAAiB,iBACjBC,GAAY,YACZC,GAAsB,sBACtBC,GAAqB,qBA8BrBC,GAAyB,yBACzBC,GAAoB,oBACpBC,GAA6B,4BAuB7BC,GAAgB,gBAChBC,GAAsB,sBACtBC,GAAqB,qBAiBrBC,GAA0B,0BAC1BC,GAAgC,gCAChCC,GAA+B,+BAqB/BC,GAAgB,gBAChBC,GAAsB,sBACtBC,GAAqB,qBAkBrBC,GAAgB,gBAChBC,GAAsB,sBACtBC,GAAqB,qBAkBrBC,GAAe,eACfC,GAAqB,qBACrBC,GAAoB,oBAepBC,GAAoB,qBAOpBC,GAA4B,4BAQ5BC,GAAoB,oBACpBC,GAAwB,wBACxBC,GAAuB,uBAkBvBC,GAAkB,kBAClBC,GAAwB,wBACxBC,GAAuB,uBAyCvBC,GAAwB,wBACxBC,GAAmB,mBACnBC,GAA4B,4BAqB5BC,GAAwB,wBACxBC,GAA8B,8BAC9BC,GAA6B,6BAqB7BC,GAAwB,wBACxBC,GAA8B,8BAC9BC,GAAqC,qCACrCC,GAA0C,0CAC1CC,GAAyC,yCACzCC,GAAuC,uCACvCC,GAA6C,6CAC7CC,GAA4C,4CAC5CC,GAA6B,6BAE7BC,GACX,iDCv5CIC,GAAWC,oCCEJC,IDDGD,kWAAYE,kBCCH,CACvBC,iBASF,SAA0BC,GACnBA,IACHA,EAAcC,OAAOC,SAASC,OAAOC,UAAU,IAGjD,IAAMC,EAAc,GAapB,OAXgBL,EAAYM,MAAM,KAE1BC,SAAQ,SAACC,GACf,IAAMC,EAAYD,EAAWF,MAAM,KAE7BI,EAAWD,EAAU,GACrBE,EAAaF,EAAUG,OAAS,EAAIH,EAAU,GAAK,GAEzDJ,EAAOK,GAAYC,KAGdN,GA1BPQ,aAqEF,SAAsBC,GACpB,OAAOC,GAAYC,QAAQF,IAAQ,GArEnCG,cAwEF,SAAuBH,GACrB,GAAY,cAARA,EAAqB,CAEvB,OADcjB,GAAUE,mBACTmB,KAAO,EAGxB,GAAIC,GAAuBC,MAAK,SAACC,GAAD,OAAUP,EAAIQ,SAASD,MACrD,OAAO,EAGT,OAAOE,GAAaP,QAAQF,IAAQ,GAjFpCU,cAoFF,SAAuBC,GACrB,MAAM,GAAN,OAAU9B,GAAV,qBAA+B8B,EAA/B,aApFAC,UAuFF,WACE,MAAM,GAAN,OAAU/B,GAAV,cAvFAgC,wBA0FF,SAAiCC,GAC/B,OAAOA,EACJC,cACAC,OACAC,UAAU,OACVC,QAAQ,mBAAoB,IAC5BA,QAAQ,cAAe,IACvBA,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,KACfA,QAAQ,WAAY,IACpB5B,UAAU,EAAG,IACb4B,QAAQ,SAAU,KApGrBC,eAuGF,SAAwBnB,GACtB,OAAOA,EAAIQ,SAAS,aAAeR,EAAIQ,SAAS,yBAA2BR,EAAIQ,SAAS,sBAhF1F,IAAMP,GAAc,CAClB,WACA,WACA,WACA,SACA,YACA,YACA,SACA,UACA,aACA,mBACA,yBAGIQ,GAAe,CACnB,YACA,iBACA,aACA,SACA,kBACA,gBACA,iBACA,oBACA,oBACA,uBACA,YACA,WACA,SACA,kBACA,gBACA,gBACA,kBACA,gBACA,iBACA,QACA,oBAGIJ,GAAyB,CAAC,YAAa,iB,ICvEjCe,GAKAC,GAKAC,GASAC,GAOAC,GAKAC,GAOAC,GAQAC,GAYAC,GAMAC,GAKAC,GAMAC,GAUAC,GAKAC,GAKAC,GAKAC,GAKAC,G,sCAzGAhB,O,eAAAA,I,kBAAAA,Q,cAKAC,O,qBAAAA,I,kBAAAA,Q,cAKAC,O,iBAAAA,I,yBAAAA,I,2BAAAA,I,2BAAAA,I,aAAAA,I,oBAAAA,Q,cASAC,O,qBAAAA,I,yBAAAA,I,uBAAAA,I,cAAAA,Q,cAOAC,O,mBAAAA,I,wBAAAA,Q,cAKAC,O,iCAAAA,I,mCAAAA,I,qCAAAA,I,wCAAAA,Q,cAOAC,O,qBAAAA,I,qBAAAA,I,uBAAAA,I,uBAAAA,I,0BAAAA,Q,cAQAC,O,eAAAA,I,6BAAAA,I,uBAAAA,I,+BAAAA,I,uBAAAA,I,2BAAAA,I,mCAAAA,I,mBAAAA,I,4BAAAA,Q,cAYAC,O,aAAAA,I,eAAAA,I,oBAAAA,Q,cAMAC,O,aAAAA,I,gBAAAA,Q,cAKAC,O,iBAAAA,I,+BAAAA,I,4BAAAA,Q,cAMAC,O,eAAAA,I,uBAAAA,I,qBAAAA,I,uBAAAA,I,mBAAAA,I,uBAAAA,I,oBAAAA,Q,cAUAC,O,2BAAAA,I,gDAAAA,Q,cAKAC,O,qBAAAA,I,kBAAAA,Q,cAKAC,O,mBAAAA,I,wBAAAA,Q,cAKAC,O,qBAAAA,I,kBAAAA,Q,cAKAC,O,uBAAAA,I,uBAAAA,I,gBAAAA,Q,KC/FL,IAAMC,GAAkB,CAC7BC,mBAMF,SAA4BC,EAAiCC,GAC3D,IAAIC,EAaN,SAA0BC,EAAsCF,GAC9D,IAAIC,EAAe,GAEnB,QAAmCE,IAA/BD,EAAkBE,SAAwB,CAC5C,IAAIC,EAAa,EAEbH,EAAkBE,SAASE,QAAUJ,EAAkBE,SAASG,QAClEF,EAAa,GACHH,EAAkBE,SAASE,OAASJ,EAAkBE,SAASG,UACzEF,EAAa,GAGfJ,GAAY,oBAAiBI,QAGAF,IAA3BD,EAAkBM,OACpBP,GAAY,kBAAeC,EAAkBM,OAG3CR,IACFC,GAAY,sBAAmBD,SAGAG,IAA7BD,EAAkBO,SACpBR,GAAY,oBAAiBC,EAAkBO,cAGZN,IAAjCD,EAAkBQ,aACpBT,GAAY,sBAAmBC,EAAkBQ,kBAGXP,IAApCD,EAAkBS,gBACpBV,GAAY,gBAAaC,EAAkBS,qBAGNR,IAAnCD,EAAkBU,eACpBX,GAAY,yBAAsBC,EAAkBU,oBAGjBT,IAAjCD,EAAkBW,aACpBZ,GAAY,sBAAmBC,EAAkBW,aAGnD,OAAOZ,EAxDYa,CAAiBf,EAAcC,GAGlD,OAFAC,GAAgBc,GAA0BhB,EAAaiB,SAAUjB,EAAakB,KAAMlB,EAAamB,KAPjGC,sBAYF,SAA+BpB,EAA+BC,GAC5D,IAAIC,EAAemB,GAAyBrB,EAAcC,GAG1D,OAFAC,GAAgBc,GAA0BhB,EAAaiB,SAAUjB,EAAakB,KAAMlB,EAAamB,KAbjGE,4BACAC,2BAyKF,SACEC,EACAC,GAEA,IAAMC,EAA2BD,GAAmB,GAEpD,GAAID,EAAaG,IAAI,YAAa,CAChC,IAAMrB,EAAWkB,EAAaI,IAAI,YAClCF,EAAQpB,SAAW,CACjBE,MAAoB,MAAbF,GAAiC,MAAbA,EAC3BG,QAAsB,MAAbH,GAAiC,MAAbA,GAI7BkB,EAAaG,IAAI,aAAgD,KAAjCH,EAAaI,IAAI,cACnDF,EAAQf,OAASkB,OAAOL,EAAaI,IAAI,cAGvCJ,EAAaG,IAAI,WACnBD,EAAQI,cAAgBD,OAAOL,EAAaI,IAAI,WAG9CJ,EAAaG,IAAI,gBACnBD,EAAQd,WAAaY,EAAaI,IAAI,eAGpCJ,EAAaG,IAAI,UACnBD,EAAQb,cAAgBW,EAAaI,IAAI,SAGvCJ,EAAaG,IAAI,uBACnBD,EAAQZ,aAAeU,EAAaI,IAAI,sBAAwB,IAG9DJ,EAAaG,IAAI,SAAWH,EAAaG,IAAI,WAAaH,EAAaG,IAAI,aAC7ED,EAAQR,SAAWlC,GAAS+C,OAC5BL,EAAQP,KAAOK,EAAaI,IAAI,SAAW,GAC3CF,EAAQN,GAAKI,EAAaI,IAAI,UAAY,IACjCJ,EAAaG,IAAI,UAC1BD,EAAQR,SAhEZ,SAAkCC,GAChC,IAEID,EAEJ,OAJcc,OACKC,KAAKd,EAAM,SAI5B,KAAK,EACHD,EAAWlC,GAASkD,MACpB,MACF,KAAK,EACHhB,EAAWlC,GAASmD,UACpB,MACF,KAAK,GACHjB,EAAWlC,GAASoD,WACpB,MACF,KAAK,GACHlB,EAAWlC,GAASqD,WACpB,MACF,QACEnB,EAAWlC,GAASmD,UAGxB,OAAOjB,EA0CcoB,CAAyBd,EAAaI,IAAI,UAG/D,OAAOF,IApJT,SAASJ,GAAyBiB,EAAuCrC,GACvE,IAAIC,EAAe,GAEnB,QAAsCE,IAAlCkC,EAAqBjC,SAAwB,CAC/C,IAAIC,EAAajB,GAAakD,IAE1BD,EAAqBjC,SAASE,QAAU+B,EAAqBjC,SAASG,QACxEF,EAAajB,GAAamD,MAChBF,EAAqBjC,SAASE,OAAS+B,EAAqBjC,SAASG,UAC/EF,EAAajB,GAAaoD,QAG5BvC,GAAY,oBAAiBI,GA+B/B,YA5BkCF,IAA9BkC,EAAqB7B,OACvBP,GAAY,kBAAeoC,EAAqB7B,OAG9CR,IACFC,GAAY,sBAAmBD,SAGGG,IAAhCkC,EAAqB5B,SACvBR,GAAY,oBAAiBoC,EAAqB5B,cAGTN,IAAvCkC,EAAqBT,gBACvB3B,GAAY,iBAAcoC,EAAqBT,qBAGTzB,IAApCkC,EAAqB3B,aACvBT,GAAY,sBAAmBoC,EAAqB3B,kBAGXP,IAAvCkC,EAAqB1B,gBACvBV,GAAY,gBAAaoC,EAAqB1B,qBAGNR,IAAtCkC,EAAqBzB,eACvBX,GAAY,6BAA0BoC,EAAqBzB,eAGtDX,EAGT,SAASc,GAA0BC,EAAqBC,EAAeC,GACrE,IAAMuB,EAAQX,OAEd,OAAQd,GACN,KAAKlC,GAASkD,MACZ,MAAM,aAAN,OAAoBlD,GAASkD,MAA7B,iBAA2CF,OACxCY,QAAQ,OACRC,cAFH,kBAE0BF,EAAME,eAElC,KAAK7D,GAASmD,UACZ,MAAM,aAAN,OAAoBnD,GAASmD,UAA7B,iBAA+CH,OAC5Cc,SAAS,EAAG,QACZD,cAFH,kBAE0BF,EAAME,eAElC,KAAK7D,GAASoD,WACZ,MAAM,aAAN,OAAoBpD,GAASoD,WAA7B,iBAAgDJ,OAC7Cc,SAAS,GAAI,QACbD,cAFH,kBAE0BF,EAAME,eAElC,KAAK7D,GAASqD,WACZ,MAAM,aAAN,OAAoBrD,GAASqD,WAA7B,iBAAgDL,OAC7Cc,SAAS,GAAI,QACbD,cAFH,kBAE0BF,EAAME,eAElC,KAAK7D,GAAS+D,IACZ,MAAO,GAET,KAAK/D,GAAS+C,OACZ,MAAM,SAAN,OAAgBZ,EAAhB,kBAA8BC,GAEhC,QACE,MAAO,IA0EN,IAQM4B,GAA2B,SACtCC,EACAC,GAEA,IAAK,IAAMC,KAAOF,EAChB,GAAIG,OAAOC,eAAeC,KAAKL,EAAWE,IAAQF,EAAUE,KAASD,EACnE,OAAOC,G,SClPAI,GAAc,CACzBC,eAGF,SAAwBC,EAAcC,GACpC,OAAQD,GAEN,KAAK,IACH,MAAO,mCACT,KAAK,IACH,MAAO,gEAET,KAAK,IACH,MAAO,kDACT,KAAK,IACH,MAAO,2DACT,KAAK,IACH,MAAO,qCACT,KAAK,IACH,OAAOC,EAAQxF,SAAS,gBACpB,kEACA,qCACN,KAAK,IACH,MAAO,0CACT,KAAK,IACH,MAAO,oCACT,KAAK,IACH,MAAO,iCACT,KAAK,IACH,MAAO,gDAET,KAAK,IACH,MAAO,qCACT,KAAK,IACH,MAAO,wDACT,KAAK,IACH,MAAO,kDAET,KAAK,IACH,MAAO,wBACT,KAAK,IACH,MAAO,wBACT,KAAK,IACH,MAAO,gEAET,KAAK,IACH,MAAO,sCACT,KAAK,IACH,MAAO,4DAET,KAAK,IACH,MAAO,sCACT,KAAK,IACH,MAAO,kEAET,KAAK,IACH,MAAO,2CAET,KAAK,IACH,MAAO,0CACT,KAAK,KACH,MAAO,4CAET,QACE,MAAO,qCCxDb,IAAMyF,GAAU,IAAIC,K,SAELC,G,iFAAf,WAAuBC,GAAvB,mBAAAC,EAAA,sEAC0CC,MAAMF,GADhD,cACQG,EADR,gBAEQA,EAASC,OAAOC,MAAK,SAACC,GAC1B,IACEH,EAASI,WAAaC,KAAKC,MAAMH,GACjC,MAAOI,GACPP,EAASQ,WAAaL,MAN5B,UAUOH,EAASS,GAVhB,oBAW4B,MAApBT,EAASU,SACXhB,GAAQiB,OAAO,SACf/H,OAAOC,SAAS+H,SAAW,eAEDxE,IAAxB4D,EAASI,cAA4B,cAAeJ,EAASI,YAfrE,uBAgBYZ,EAAQQ,EAASI,WAAV,UACPX,EAAWO,EAASI,WAAV,QAEdxC,OAAO4B,GAAQ,KAAOF,GAAYC,eAAe3B,OAAO4B,GAAOC,GAA/D,gBAAmFD,EAAnF,aAA4FC,GAnBpG,cAuBU,IAAIoB,MAAMb,EAASc,YAvB7B,iCA0BSd,GA1BT,6C,sBA6BO,SAAerC,GAAtB,mC,8CAAO,WACLoD,GADK,mCAAAjB,EAAA,6DAELkB,EAFK,+BAEe,GACpBC,EAHK,+BAG6B,GAE5BC,EAAiB,CACrB,eAAgB,mBAChBC,cAAc,UAAD,QAAY,IAAIxB,MAAUhC,IAAI,WAGvCyD,EAAgB,IAAIC,QAAJ,6BAAiBH,GAAmBD,IAEpDK,EAZD,cAaHC,OAAQ,MACRN,QAASG,GACNJ,GAfA,SAkBQpB,GAAQ,IAAI4B,QAAQT,EAAMO,IAlBlC,oF,sBAqBA,SAAeG,GAAtB,qC,8CAAO,WACLV,EACAZ,GAFK,2BAAAL,EAAA,6DAGLkB,EAHK,+BAGe,CAClBO,OAAQ,OACRN,QAAS,IAAII,QAAQ,CACnB,eAAgB,mBAChBF,cAAc,UAAD,OAAYzB,GAAQ/B,IAAI,YAEvCwC,KAAME,KAAKqB,UAAUvB,IATlB,SAYQP,GAAQ,IAAI4B,QAAQT,EAAMC,IAZlC,oF,sBAeA,SAAeW,GAAtB,qC,8CAAO,WACLZ,EACAZ,GAFK,2BAAAL,EAAA,6DAGLkB,EAHK,+BAGe,CAClBO,OAAQ,OACRN,QAAS,IAAII,QAAQ,CACnBF,cAAc,UAAD,OAAYzB,GAAQ/B,IAAI,YAEvCwC,QARG,SAWQP,GAAQ,IAAI4B,QAAQT,EAAMC,IAXlC,oF,sBAcA,SAAeY,GAAtB,qC,8CAAO,WACLb,EACAZ,GAFK,2BAAAL,EAAA,6DAGLkB,EAHK,+BAGe,CAClBO,OAAQ,MACRN,QAAS,IAAII,QAAQ,CACnB,eAAgB,mBAChBF,cAAc,UAAD,OAAYzB,GAAQ/B,IAAI,YAEvCwC,KAAME,KAAKqB,UAAUvB,IATlB,SAYQP,GAAQ,IAAI4B,QAAQT,EAAMC,IAZlC,oF,sBAeA,SAAea,GAAtB,qC,8CAAO,WACLd,EACAZ,GAFK,2BAAAL,EAAA,6DAGLkB,EAHK,+BAGe,CAClBO,OAAQ,MACRN,QAAS,IAAII,QAAQ,CACnBF,cAAc,UAAD,OAAYzB,GAAQ/B,IAAI,YAEvCwC,QARG,SAWQP,GAAQ,IAAI4B,QAAQT,EAAMC,IAXlC,oF,sBAcA,SAAec,GAAtB,qC,8CAAO,WACLf,EACAZ,GAFK,2BAAAL,EAAA,6DAGLkB,EAHK,+BAGe,CAClBO,OAAQ,SACRN,QAAS,IAAII,QAAQ,CACnBF,cAAc,UAAD,OAAYzB,GAAQ/B,IAAI,UACrC,eAAgB,qBAElBwC,KAAMA,EAAOE,KAAKqB,UAAUvB,QAAQ/D,GATjC,SAYQwD,GAAQ,IAAI4B,QAAQT,EAAMC,IAZlC,oF,sBCpHA,IAAMe,GAAY,CACvBC,MAAM,GAAD,OAAK1J,GAAL,eACL2J,cAAc,GAAD,OAAK3J,GAAL,wBACb4J,qBAAqB,GAAD,OAAK5J,GAAL,sCACpB6J,aAAa,GAAD,OAAK7J,GAAL,SACZ8J,aAAa,GAAD,OAAK9J,GAAL,sBACZ+J,iBAAiB,GAAD,OAAK/J,GAAL,kBAChBgK,mBAAmB,GAAD,OAAKhK,GAAL,kBAClBiK,QAAQ,GAAD,OAAKjK,GAAL,SACPkK,kBAAkB,GAAD,OAAKlK,GAAL,qBACjBmK,mBAAmB,GAAD,OAAKnK,GAAL,qBAClBoK,YAAY,GAAD,OAAKpK,GAAL,qBACXqK,OAAO,GAAD,OAAKrK,GAAL,gBACNsK,cAAc,GAAD,OAAKtK,GAAL,SACbuK,SAAS,GAAD,OAAKvK,GAAL,aACRwK,YAAY,GAAD,OAAKxK,GAAL,gBACXyK,QAAQ,GAAD,OAAKzK,GAAL,YACP0K,MAAM,GAAD,OAAK1K,GAAL,UACL2K,SAAS,GAAD,OAAK3K,GAAL,aACR4K,aAAa,GAAD,OAAK5K,GAAL,sBACZ6K,kBAAkB,GAAD,OAAK7K,GAAL,sBACjB8K,aAAa,GAAD,OAAK9K,GAAL,iBACZ+K,QAAQ,GAAD,OAAK/K,GAAL,aACPgL,QAAQ,GAAD,OAAKhL,GAAL,sBACPiL,cAAc,GAAD,OAAKjL,GAAL,iBACbkL,YAAY,GAAD,OAAKlL,GAAL,gBACXmL,IAAI,GAAD,OAAKnL,GAAL,eCbQoL,GAAkB,CAC7BC,c,+CACAT,a,6CACAU,W,6CACAC,e,6CACAC,c,8FAGF,WACEjE,EACAzF,GAFF,iBAAA0F,EAAA,6DAIQ5D,EAAeJ,GAAgBsB,sBAAsByC,GAJ7D,SAKelC,GAAG,UACXoE,GAAS,SADE,YACc3H,GAAcA,EAAa,EAA3B,qBAA6CA,EAA7C,KAA6D,GAD3E,gBAEZyF,EAAQ7F,KAFI,kBAGJ6F,EAAQkE,MAHJ,6BAGoBlE,EAAQpD,YAH5B,QAGoC,IAHpC,OAGyCP,IAEtDgE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAdZ,oF,oEAkBA,WACEC,GADF,SAAApE,EAAA,sEAGe2B,GAAI,UAA0BM,GAAS,cAAoBmC,GACrEhE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,iCAAAnE,EAAA,6DAA4BqE,EAA5B,EAA4BA,UAAW/J,EAAvC,EAAuCA,WAC/BgK,EAA4C,GAE9ChK,IACFgK,EAAkBhK,WAAaA,EAAWiK,YAJ9C,SAOe1G,GAAG,UAAaoE,GAAS,SAAtB,YAAsCoC,GAAa,GAAIC,GACpElE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAZZ,oF,oEAgBA,WACEK,GADF,SAAAxE,EAAA,sEAGe2B,GAA6BM,GAAS,SAAcuC,GAC9DpE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WAA6BM,EAA0BnK,GAAvD,SAAA0F,EAAA,sEACe2B,GAAI,UAAkBM,GAAS,SAA3B,WAAkD,CAAEwC,mBAAkBnK,eACpF8F,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,sBChCO,IAAMN,GACX,SAAClG,EAA0BzD,EAAc+J,EAAe3J,GAAxD,IAA4EoK,EAA5E,+DACA,SAACC,GAGC,OAFAA,EAASC,MAEFhB,GAAgBC,cAAhB,6BAAmClG,GAAnC,IAA4CzD,OAAM+J,UAAS3J,GAAY8F,MAC5E,SAACF,GAEGyE,EADED,EACOG,GAAqB3E,GAErB4E,GAAY5E,OAGzB,SAACiE,GACCQ,EAASI,GAAmBZ,SAK9BS,GAAmB,iBAA2B,CAClDzI,KAAM/H,KAGK4Q,GAAsB,SACjCrH,EACAzD,EACA+J,EACA3J,GAEA,OAAO,SAACqK,GAGN,OAFAA,EAASM,GAAYtH,IAEdiG,GACJC,cADI,6BAGElG,GAHF,IAIDzD,OACA+J,UAEF3J,GAED8F,MACC,SAACF,GACCyE,EAASG,GAAY5E,OAEvB,SAACiE,GACCQ,EAASI,GAAmBZ,SAMzBc,GAAc,SAACtH,GAAD,MAA0D,CACnFxB,KAAMpH,GACN4I,QAASA,IAGLmH,GAAc,SAACI,GAAD,MAA2D,CAC7E/I,KAAM9H,GACN6Q,oBAGIL,GAAuB,SAACK,GAAD,MAA2D,CACtF/I,KAAM7H,GACN4Q,oBAGIH,GAAqB,SAACZ,GAAD,MAAwC,CACjEhI,KAAM5H,GACN4P,UAOWf,GACX,SAACgB,GAAD,OAA8C,SAACO,GAG7C,OAFAA,EAASQ,MAEFvB,GAAgBR,aAAagB,GAAqBhE,MACvD,SAACF,GACCkF,QAAQC,IAAInF,GACZyE,EAASW,GAAoBpF,EAAWkE,EAAoBmB,gBAE9D,SAACpB,GACCQ,EAASa,GAAkBrB,SAK7BgB,GAAmB,iBAA0B,CACjDhJ,KAAM1H,KAGF6Q,GAAsB,SAC1BG,EACAF,GAF0B,MAGH,CACvBpJ,KAAMzH,GACN+Q,yBACAF,eAGIC,GAAoB,SAACrB,GAAD,MAAuC,CAC/DhI,KAAMxH,GACNwP,UAOWL,GACX,SAACO,EAAmB/J,GAApB,OAA4C,SAACqK,GAG3C,OAFAA,EAASe,MAEF9B,GAAgBE,WAAW,CAAEO,YAAW/J,eAAc8F,MAC3D,SAACF,GACCyE,EAASgB,GAAkBzF,OAE7B,SAACiE,GACCQ,EAASiB,GAAgBzB,SAK3BuB,GAAiB,iBAAwB,CAC7CvJ,KAAMvH,KAGF+Q,GAAoB,SAACT,GAAD,MAAgD,CACxE/I,KAAMtH,GACNqQ,oBAGIU,GAAkB,SAACzB,GAAD,MAAqC,CAC3DhI,KAAMrH,GACNqP,UA6DI0B,GAAoB,iBAA2B,CACnD1J,KAAMjH,KAGF4Q,GAAuB,SAACrB,GAAD,MAAmD,CAC9EtI,KAAMhH,GACNsP,qBAGIsB,GAAqB,SAAC5B,GAAD,MAAwC,CACjEhI,KAAM/G,GACN+O,UAkCW6B,GAA0B,iBAAO,CAC5C7J,KAAMnH,KC/RFiR,GAAsB,uCAAG,WAC7BC,EACA7B,EACA1E,GAH6B,SAAAK,EAAA,sEAKhBkG,EACVC,QACA/F,MAAK,WAEJ,OADA8F,EAAWE,KAAKzG,EAAS0E,GAClB6B,KAERhC,OAAM,SAACC,GACNiB,QAAQC,IAAI,kBAAoBlB,MAZP,mFAAH,0DAmEbkC,GAhDX,SAACC,GAAD,OAAW,SAACC,GAAD,OAAU,SAACC,GACxB,IAAMC,EAAgB/N,GAAU6B,YAC1BmM,EAAW,IAAIC,IAOfT,GAAa,IAAIS,KACpBC,QAAQH,EALK,IAMbI,iBAAiBF,IAAiBG,UAClCC,yBACAC,gBAAgBN,GAChBO,QAmBH,GAfAf,EAAWgB,GAAG,oBAAoB,SAACC,GACjC/B,QAAQC,IAAI,8BAAgC8B,GACvCA,GACHZ,ED6OoF,CACxFpK,KAAM1G,GACNyK,SC/OgCiH,OAIhCjB,EAAWgB,GAAG,uBAAuB,SAACE,GACpChC,QAAQC,IAAI,gCACZD,QAAQC,IAAI+B,GACZlB,EAAWE,KAAK,mBAChBF,EAAWmB,OACXd,ED2N0F,CAC5FpK,KAAM3G,GACN0K,SC7N2BkH,OAGvBZ,EAAOrK,OAASmL,GAAmC,CACrD,IAAIjD,EAAYmC,EAAOf,uBAAuBpB,UAE9C4B,GAAuBC,EAAY7B,EAAW,aAShD,OANImC,EAAOrK,OAASmL,KAElBlC,QAAQC,IAAI,gDACZY,GAAuBC,EAAYM,EAAOnC,UAAW,eAGhDkC,EAAKC,MClBDe,GAA0B,CACrCC,WAAW,EACXC,UAAU,EACVC,KAAM,KACNC,kBAAmB,KACnBC,kBAAkB,EAClBC,sBAAsB,EACtBC,0BAA2B,KAC3BC,yBAAyB,EACzBC,4BAA6B,KAC7BC,iCAAkC,KAClCC,iBAAiB,EACjBC,eAAgB,KAChBC,qBAAqB,EACrBC,yBAA0B,KAC1BC,oBAAoB,EACpBC,yBAAyB,EACzBC,6BAA8B,KAC9BC,qBAAqB,EACrBC,mBAAoB,KACpBC,yBAAyB,EACzBC,6BAA8B,KAC9BC,gBAAgB,EAChBpG,QAAS,KACTqG,uBAAwB,KACxBC,iBAAiB,EACjBC,sBAAsB,EACtBC,0BAA2B,KAC3BC,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,KAC/BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,KAChCC,yBAAyB,EACzBC,iBAAkB,KAClBC,gCAAiC,KACjCC,uBAAuB,EACvBC,2BAA2B,EAC3BC,+BAAgC,KAChCC,eAAe,EACfC,mBAAmB,EACnBC,uBAAwB,MCtEnB,IAAMzC,GAA8B,CACzC0C,mBAAmB,EACnBC,WAAY,KACZC,uBAAwB,KACxBC,kBAAkB,EAClBC,uBAAuB,EACvBC,gBAAiB,KACjBC,2BAA4B,KAC5BC,kBAAkB,EAClBC,uBAAuB,EACvBC,gBAAiB,KACjBC,2BAA4B,KAC5BC,iBAAiB,EACjBC,oBAAoB,EACpB9H,SAAU,KACV+H,wBAAyB,KACzBC,sBAAsB,EACtBC,cAAe,KACfC,0BAA2B,KAC3BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,MCzB3B,IAAM7D,GAA6B,CACxC8D,gBAAgB,EAChB9H,QAAS,KACT+H,2BAA4B,KAC5BC,iBAAiB,EACjBC,sBAAsB,EACtBC,mBAAoB,KACpBC,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,KACpCC,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,KACpCC,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,M,aCdzB3E,GAAmC,CAC9C4E,sBAAsB,EACtBrJ,cAAe,KACfsJ,0BAA2B,KAC3BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,KAChCC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,KAChCC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,KAChCC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,MAGlC,SAASC,GACP/M,GAEA,YAAoB5D,IAAb4D,QAAuE5D,IAA5C4D,EAAkCgN,MCL/D,IAAM3F,GAA2B,CACtC4F,cAAc,EACdC,oBAAoB,EACpBlK,MAAO,KACPmK,eAAgB,KAChBC,YAAa,KACbC,YAAa,EACbC,UAAW,EACXC,kBAAmB,EACnBC,gBAAiB,EACjBC,UAAWzS,GAAa0S,SACxBC,aAAc,CACZtR,SAAU,CAAEE,OAAO,EAAOC,SAAS,GACnCoR,MAAO1S,GAAgB2S,eACvB5Q,SAAUlC,GAASmD,UACnBzB,KAAM,GACNG,cAAe,EACfD,WAAY,GAEdmR,mBAAoB,CAClBzR,SAAU,CAAEE,OAAO,EAAOC,SAAS,GACnCoR,MAAO1S,GAAgB2S,eACvB5Q,SAAUlC,GAASmD,UACnBzB,KAAM,GACNG,cAAe,EACfD,WAAY,GAEdoR,kBAAmB,KACnBC,wBAAyB,KACzBC,cAAc,EACdC,mBAAmB,EACnBC,WAAY,KACZC,uBAAwB,KACxBC,cAAc,EACdC,mBAAmB,EACnBC,uBAAwB,KACxBC,cAAc,EACdC,mBAAmB,EACnBC,uBAAwB,KACxBC,aAAa,EACbC,kBAAkB,EAClBC,sBAAuB,KACvBC,iBAAiB,EACjBC,oBAAoB,EACpBC,SAAU,KACVC,wBAAyB,KACzBC,gBAAgB,EAChBC,qBAAqB,EACrBC,UAAW,KACXC,yBAA0B,KAC1BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,MC7E3B,IAAMnI,GAAmC,CAC9CoI,qBAAqB,EACrBC,yBAAyB,EACzBC,6BAA8B,KAC9BC,uBAAuB,EACvBC,aAAc,KACdC,2BAA2B,EAC3BC,+BAAgC,MCW3B,IAAM1I,GAAoC,CAC/C2I,uBAAuB,EACvBC,eAAgB,KAChBC,2BAA4B,KAC5BC,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,KACjCC,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,KACjCC,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,KACjCC,gBAAgB,EAChB7N,QAAS,KACT8N,oBAAqB,KACrBC,gBAAiB,KACjBC,wBAAwB,EACxBC,4BAA6B,KAC7BC,uBAAuB,EACvBC,uBAAuB,EACvBC,2BAA4B,KAC5BC,qBAAsB,KACtBC,8BAA8B,EAC9BC,uBAAwB,MCvD1B,IAIaC,GAAO,CAAC,EAAG,GAAI,IASbC,GANA,CACbC,iBARuB,GASvBC,eARqB,GASrBC,oBALiC,KC0BtBtK,GAA8B,CACzCuK,iBAAiB,EACjB3O,SAAU,KACV4O,kBAAmB,KACnBC,eAAgB,CACdC,kBAAmB,CACjBC,oBAAqB,EACrBC,mBAAoB,EACpBC,aAAc,EACdC,YAAa,GAEfC,eAAgB,CACdJ,oBAAqB,EACrBC,mBAAoB,EACpBC,aAAc,EACdC,YAAa,GAEfE,eAAgB,CACdL,oBAAqB,EACrBC,mBAAoB,EACpBC,aAAc,EACdC,YAAa,IAGjB9E,YAAa,EACbC,UAAW,EACXgF,SAAUd,GAAOC,iBACjBc,SAAU,EACVC,eAAgB,EAChBC,cAAe,EACfhV,QAAS,CACPpB,SAAU,CAAEE,OAAO,EAAOC,SAAS,GACnCI,cAAetB,GAASoX,KACxB/V,WAAYvB,GAAuBuX,KACnC1V,SAAUlC,GAASmD,UACnBxB,YAAQN,EACRS,kBAAcT,GAEhBwW,qBAAsB,KACtB3N,kBAAkB,EAClB4N,SAAU,KACV1O,UAAW,KACX2O,yBAA0B,KAC1BtN,gBAAgB,EAChBuN,mBAAoB,KACpBC,gBAAiB,KACjBtW,OAAQ,KACRuW,uBAAwB,KACxBC,mBAAmB,EACnBC,uBAAuB,EACvBC,iBAAkB,KAClBC,2BAA4B,KAC5B1N,mBAAmB,EACnBC,sBAAsB,EACtB0N,0BAA2B,KAC3BjO,WAAY,KACZkO,mBAAmB,GCjEd,IAAMlM,GAAiC,CAC5CmM,oBAAoB,EACpB1I,cAAe,KACf2I,wBAAyB,KACzBC,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,KAC/BC,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,KAC/BC,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,KAC/BC,gCAAgC,EAChCC,oCAAoC,EACpCC,wCAAyC,KACzCC,kCAAkC,EAClCC,uCAAuC,EACvCC,2CAA4C,MCnBvC,IAAMC,GAAcC,YAAgB,CACzCC,KV4EK,WAGO,IAFZC,EAEW,uDAFHvN,GACRf,EACW,uCACX,OAAQA,EAAOrK,MACb,KAAKpP,EACH,OAAO,6BACF+nB,GADL,IAEEtN,WAAW,EACXC,UAAU,EACVC,KAAM,KACNC,kBAAmB,OAGvB,KAAK3a,EACH,OAAO,6BACF8nB,GADL,IAEEtN,WAAW,EACXC,UAAU,EACVhF,QAAS+D,EAAO/D,QAChBkF,kBAAmB,OAGvB,KAAK1a,EACH,OAAO,6BACF6nB,GADL,IAEEtN,WAAW,EACXC,UAAU,EACVC,KAAM,KACNC,kBAAmBnB,EAAOrC,QAG9B,KAAKjX,EACH,OAAO,gBACFqa,IAGP,KAAKpa,EACH,OAAO,6BACF2nB,GADL,IAEElN,kBAAkB,EAClBC,sBAAsB,EACtBC,0BAA2B,OAG/B,KAAK1a,EACH,OAAO,6BACF0nB,GADL,IAEElN,kBAAkB,EAClBC,sBAAsB,EACtBC,0BAA2B,OAG/B,KAAKza,EACH,OAAO,6BACFynB,GADL,IAEElN,kBAAkB,EAClBC,sBAAsB,EACtBC,0BAA2BtB,EAAOrC,QAGtC,KAAK7W,EACH,OAAO,6BACFwnB,GADL,IAEE/M,yBAAyB,EACzBC,4BAA6B,KAC7BC,iCAAkC,OAGtC,KAAK1a,EACH,OAAO,6BACFunB,GADL,IAEE/M,yBAAyB,EACzBC,4BAA6BxB,EAAOtG,SACpC+H,iCAAkC,OAGtC,KAAKza,EACH,OAAO,6BACFsnB,GADL,IAEE/M,yBAAyB,EACzBC,4BAA6B,KAC7BC,iCAAkCzB,EAAOrC,QAG7C,KAAK1W,EACH,OAAO,6BACFqnB,GADL,IAEE5M,iBAAiB,EACjBC,eAAgB,KAChBC,qBAAqB,EACrBC,yBAA0B,OAG9B,KAAK3a,EACH,OAAO,6BACFonB,GADL,IAEE5M,iBAAiB,EACjBC,eAAgB3B,EAAOkB,KACvBU,qBAAqB,EACrBC,yBAA0B,OAG9B,KAAK1a,EACH,OAAO,6BACFmnB,GADL,IAEE5M,iBAAiB,EACjBC,eAAgB,KAChBC,qBAAqB,EACrBC,yBAA0B7B,EAAOrC,QAGrC,KAAKvW,EACH,OAAO,6BACFknB,GADL,IAEExM,oBAAoB,EACpBC,yBAAyB,EACzBC,6BAA8B,OAGlC,KAAK3a,EACH,OAAO,6BACFinB,GADL,IAEExM,oBAAoB,EACpBC,yBAAyB,EACzBC,6BAA8B,OAGlC,KAAK1a,EACH,OAAO,6BACFgnB,GADL,IAEExM,oBAAoB,EACpBC,yBAAyB,EACzBC,6BAA8BhC,EAAOrC,QAGzC,KAAKpW,EACH,OAAO,6BACF+mB,GADL,IAEErM,qBAAqB,EACrBC,mBAAoB,KACpBC,yBAAyB,EACzBC,6BAA8B,OAGlC,KAAK5a,EACH,OAAO,6BACF8mB,GADL,IAEErM,qBAAqB,EACrBC,mBAAoBlC,EAAOzD,SAC3B4F,yBAAyB,EACzBC,6BAA8B,OAGlC,KAAK3a,EACH,OAAO,6BACF6mB,GADL,IAEErM,qBAAqB,EACrBC,mBAAoB,KACpBC,yBAAyB,EACzBC,6BAA8BpC,EAAOrC,QAGzC,KAAKjW,EACH,OAAO,6BACF4mB,GADL,IAEEtN,WAAW,EACXqB,gBAAgB,EAChBpG,QAAS,KACTqG,uBAAwB,OAG5B,KAAK3a,EACH,OAAO,6BACF2mB,GADL,IAEErN,UAAU,EACVoB,gBAAgB,EAChBpG,QAAS+D,EAAO/D,QAChBqG,uBAAwB,OAG5B,KAAK1a,EACH,OAAO,6BACF0mB,GADL,IAEEjM,gBAAgB,EAChBpG,QAAS,KACTqG,uBAAwBtC,EAAOrC,QAGnC,KAAK9V,EACH,OAAO,6BACFymB,GADL,IAEE/L,iBAAiB,EACjBC,sBAAsB,EACtBC,0BAA2B,OAG/B,KAAK3a,EACH,IAAMymB,EAAgB,6BACjBvO,EAAO/D,SADU,IAEpBM,SAAS,gBACJ+R,EAAMrS,QAASM,YAItB,OAAO,6BACF+R,GADL,IAEE/L,iBAAiB,EACjBC,sBAAsB,EACtBvG,QAASsS,EACT9L,0BAA2B,OAG/B,KAAK1a,EACH,OAAO,6BACFumB,GADL,IAEE/L,iBAAiB,EACjBC,sBAAsB,EACtBC,0BAA2BzC,EAAOrC,QAGtC,KAAK3V,EACH,OAAO,6BACFsmB,GADL,IAEE5L,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,OAGnC,KAAK3a,EACH,OAAO,6BACFqmB,GADL,IAEE5L,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,OAGnC,KAAK1a,EACH,OAAO,6BACFomB,GADL,IAEE5L,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B5C,EAAOrC,QAG1C,KAAKxV,EACH,OAAO,6BACFmmB,GADL,IAEEzL,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAK3a,EACH,OAAO,6BACFkmB,GADL,IAEEzL,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAK1a,EACH,OAAO,6BACFimB,GADL,IAEEzL,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC/C,EAAOrC,QAG3C,KAAK/T,GACH,GAAI0kB,EAAMrS,QAAS,CACjB,IAAIsS,EAAgB,6BACfD,EAAMrS,SADS,IAElBM,SAAS,6BACJyD,EAAOzD,UADJ,IAENiS,aAAcF,EAAMrS,QAAQM,SAASiS,iBAIzC,OAAO,6BACFF,GADL,IAEErS,QAASsS,IAGX,OAAO,gBAAKD,GAGhB,KAAK5iB,GACH,GACE4iB,EAAMrS,SACNqS,EAAMrS,QAAQtG,OAASV,GAAawZ,aACnCH,EAAMrS,QAAQM,SAASiS,aACxB,CACA,IAAIE,EAAyB,6BACxBJ,EAAMrS,SADkB,IAE3BM,SAAS,6BACJ+R,EAAMrS,QAAQM,UADX,IAENiS,cAAc,MAIlB,OAAO,6BACFF,GADL,IAEErS,QAASyS,IAGX,OAAO,gBAAKJ,GAGhB,KAAKjiB,GACH,IAAM4P,EAAUqS,EAAMrS,QACtB,GAAIA,GAAWA,EAAQM,UAAYN,EAAQM,SAASiS,cAAgBxO,EAAO2O,OAAQ,CACjF,IAAIC,EAAkC,6BACjC3S,GADiC,IAEpCM,SAAS,6BACJN,EAAQM,UADL,IAENiS,cAAc,MAIlB,OAAO,6BACFF,GADL,IAEErS,QAAS2S,IAGX,OAAO,gBAAKN,GAGhB,KAAK7kB,GACH,OAAI6kB,EAAMrS,QACD,6BACFqS,GADL,IAEErS,QAAQ,6BACHqS,EAAMrS,SADJ,IAELM,SAAUyD,EAAOzD,aAId,gBAAK+R,GAGhB,KAAKhmB,EACH,OAAO,6BACFgmB,GADL,IAEEtL,yBAAyB,EACzBC,iBAAkB,KAClBC,gCAAiC,OAGrC,KAAK3a,EACH,OAAO,6BACF+lB,GADL,IAEEtL,yBAAyB,EACzBC,iBAAkBjD,EAAO0G,MAAMA,MAC/BxD,gCAAiC,OAGrC,KAAK1a,GACH,OAAO,6BACF8lB,GADL,IAEEtL,yBAAyB,EACzBC,iBAAkB,KAClBC,gCAAiClD,EAAOrC,QAG5C,KAAK/U,GACH,OAAO,6BACF0lB,GADL,IAEEnL,uBAAuB,EACvBC,2BAA2B,EAC3BC,+BAAgC,OAIpC,KAAKxa,GACH,OAAO,6BACFylB,GADL,IAEEnL,uBAAuB,EACvBC,2BAA2B,EAC3BC,+BAAgC,OAIpC,KAAKva,GACH,OAAO,6BACFwlB,GADL,IAEEnL,uBAAuB,EACvBC,2BAA2B,EAC3BC,+BAAgCrD,EAAOrC,QAI3C,KAAKlV,GACH,OAAO,6BACF6lB,GADL,IAEEhL,eAAe,EACfC,mBAAmB,EACnBC,uBAAwB,OAI5B,KAAK9a,GACH,OAAO,6BACF4lB,GADL,IAEEhL,eAAe,EACfC,mBAAmB,EACnBC,uBAAwB,OAI5B,KAAK7a,GACH,OAAO,6BACF2lB,GADL,IAEEhL,eAAe,EACfC,mBAAmB,EACnBC,uBAAwBxD,EAAOrC,QAInC,QACE,OAAO2Q,IU/eX/R,ST0BK,WAGW,IAFhB+R,EAEe,uDAFPvN,GACRf,EACe,uCACf,OAAQA,EAAOrK,MACb,KAAKtM,GACH,OAAO,6BACFilB,GADL,IAEE7K,mBAAmB,EACnBC,WAAY,KACZC,uBAAwB,OAG5B,KAAKra,GACH,OAAO,6BACFglB,GADL,IAEE7K,mBAAmB,EACnBC,WAAY1D,EAAO0D,WACnBC,uBAAwB,OAG5B,KAAKpa,GACH,OAAO,6BACF+kB,GADL,IAEE7K,mBAAmB,EACnBC,WAAY,KACZC,uBAAwB3D,EAAOrC,QAGnC,KAAKnU,GACH,OAAO,6BACF8kB,GADL,IAEE1K,kBAAkB,EAClBC,uBAAuB,EACvBE,2BAA4B,OAGhC,KAAKta,GACH,OAAO,6BACF6kB,GADL,IAEE1K,kBAAkB,EAClBC,uBAAuB,EACvBC,gBAAiB9D,EAAOzD,SACxBwH,2BAA4B,KAC5BxH,SAAUyD,EAAOzD,WAGrB,KAAK7S,GACH,OAAO,6BACF4kB,GADL,IAEE1K,kBAAkB,EAClBC,uBAAuB,EACvBE,2BAA4B/D,EAAOrC,MACnCpB,SAAU,OAGd,KAAK5S,GACH,OAAO,6BACF2kB,GADL,IAEEtK,kBAAkB,EAClBC,uBAAuB,EACvBE,2BAA4B,OAGhC,KAAKva,GACH,OAAO,6BACF0kB,GADL,IAEEtK,kBAAkB,EAClBC,uBAAuB,EACvBC,gBAAiBlE,EAAOzD,SACxB4H,2BAA4B,OAGhC,KAAKta,GACH,OAAO,6BACFykB,GADL,IAEEtK,kBAAkB,EAClBC,uBAAuB,EACvBE,2BAA4BnE,EAAOrC,QAGvC,KAAK7T,GACH,OAAO,6BACFwkB,GADL,IAEElK,iBAAiB,EACjBC,oBAAoB,EACpB9H,SAAU,KACV+H,wBAAyB,OAG7B,KAAKva,GACH,OAAO,6BACFukB,GADL,IAEElK,iBAAiB,EACjBC,oBAAoB,EACpB9H,SAAUyD,EAAOzD,SACjB+H,wBAAyB,OAG7B,KAAKta,GACH,OAAO,6BACFskB,GADL,IAEElK,iBAAiB,EACjBC,oBAAoB,EACpB9H,SAAU,KACV+H,wBAAyBtE,EAAOrC,QAGpC,KAAK1T,GACH,OAAO,6BACFqkB,GADL,IAEE/J,sBAAsB,EACtBC,cAAe,KACfC,0BAA2B,OAG/B,KAAKva,GACH,OAAO,6BACFokB,GADL,IAEE/J,sBAAsB,EACtBC,cAAexE,EAAOwE,cACtBC,0BAA2B,OAG/B,KAAKta,GACH,OAAO,6BACFmkB,GADL,IAEE/J,sBAAsB,EACtBC,cAAe,KACfC,0BAA2BzE,EAAOrC,QAGtC,KAAKvT,GACH,OAAO,6BACFkkB,GADL,IAEE5J,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKva,GACH,OAAO,6BACFikB,GADL,IAEE5J,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKta,GACH,OAAO,6BACFgkB,GADL,IAEE5J,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC5E,EAAOrC,QAG3C,KAAKjX,EACH,OAAO,gBACFqa,IAGP,QACE,OAAOuN,IS3LXhS,cPsBK,WAGgB,IAAD,EAFpBgS,EAEoB,uDAFZvN,GACRf,EACoB,uCACpB,OAAQA,EAAOrK,MACb,KAAKpL,GACH,OAAO,6BACF+jB,GADL,IAEE3I,sBAAsB,EACtBrJ,cAAe,KACfsJ,0BAA2B,OAG/B,KAAKpb,GACH,IAAI8R,EAAgC,GAMpC,OAJAA,EAAgBmK,GAAuBzG,EAAO6O,uBAC1C7O,EAAO6O,sBAAsBnI,MAC7B1G,EAAO6O,sBAEJ,6BACFP,GADL,IAEE3I,sBAAsB,EACtBrJ,cAAeA,EACfsJ,0BAA2B,OAG/B,KAAKnb,GACH,OAAO,6BACF6jB,GADL,IAEE3I,sBAAsB,EACtBrJ,cAAe,KACfsJ,0BAA2B5F,EAAOrC,QAGtC,KAAKjT,GACH,OAAO,6BACF4jB,GADL,IAEEzI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKpb,GACH,IAAMmkB,EAAmBR,EAAMhS,cAAN,aAA0BgS,EAAMhS,eAAiB,GAG1E,OAFAwS,EAAiBC,KAAjB,6BAA2B/O,EAAOzJ,cAAlC,IAAgDyY,QAAQ,KAEjD,6BACFV,GADL,IAEEhS,cAAewS,EACfjJ,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKnb,GACH,OAAO,6BACF0jB,GADL,IAEEzI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC/F,EAAOrC,QAG3C,KAAK9S,GACH,OAAO,6BACFyjB,GADL,IAEEtI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKpb,GACH,IAAImkB,EAAoB,UAAGX,EAAMhS,qBAAT,aAAG,EAAqB4S,KAAI,SAAC3Y,GACnD,OAAIA,EAAa4Y,SAAWnP,EAAOzJ,aAAa4Y,OACR,6BACjC5Y,GADiC,IAEpC6Y,MAAOpP,EAAOzJ,aAAa6Y,MAC3BC,SAAUrP,EAAOzJ,aAAa8Y,WAM3B9Y,KAGT,OAAO,6BACF+X,GADL,IAEEtI,sBAAsB,EACtBC,2BAA2B,EAC3B3J,cAAe2S,GAAwB,GACvC/I,+BAAgC,OAGpC,KAAKnb,GACH,OAAO,6BACFujB,GADL,IAEEtI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgClG,EAAOrC,QAG3C,KAAK3S,GACH,OAAO,6BACFsjB,GADL,IAEEnI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKpb,GACH,IAAMqkB,EACJhB,EAAMhS,eACNgS,EAAMhS,cAAciT,QAClB,SAAChZ,GAAD,OAAgCA,EAAa4Y,SAAWnP,EAAOwP,kBAGnE,OAAO,6BACFlB,GADL,IAEEnI,sBAAsB,EACtBC,2BAA2B,EAC3B9J,cAAegT,EACfjJ,+BAAgC,OAGpC,KAAKnb,GACH,OAAO,6BACFojB,GADL,IAEEnI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgCrG,EAAOrC,QAG3C,KAAKxS,GACH,OAAO,6BACFmjB,GADL,IAEEhI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKpb,GACH,IAAIqkB,EAA0BnB,EAAMhS,cAAe4S,KAAI,SAAC3Y,GACtD,OAAIA,EAAa4Y,SAAWnP,EAAOmP,OACK,6BACjC5Y,GADiC,IAEpCyY,QAASzY,EAAayY,SAMnBzY,KAGT,OAAO,6BACF+X,GADL,IAEEhI,sBAAsB,EACtBC,2BAA2B,EAC3BjK,cAAemT,EACfjJ,+BAAgC,OAGpC,KAAKnb,GACH,OAAO,6BACFijB,GADL,IAEEhI,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgCxG,EAAOrC,QAG3C,KAAKjX,EACH,OAAO,gBACFqa,IAGP,QACE,OAAOuN,IOtMX3E,eJiCK,WAGiB,IAFtB2E,EAEqB,uDAFbvN,GACRf,EACqB,uCACrB,OAAQA,EAAOrK,MACb,KAAKrK,GACH,OAAO,6BACFgjB,GADL,IAEE5E,uBAAuB,EACvBC,eAAgB,KAChBC,2BAA4B,OAGhC,KAAKre,GACH,OAAO,6BACF+iB,GADL,IAEE5E,uBAAuB,EACvBC,eAAgB3J,EAAO2J,eACvBC,2BAA4B,OAGhC,KAAKpe,GACH,OAAO,6BACF8iB,GADL,IAEE5E,uBAAuB,EACvBC,eAAgB,KAChBC,2BAA4B5J,EAAOrC,QAGvC,KAAKlS,GACH,OAAO,6BACF6iB,GADL,IAEEzE,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,OAGrC,KAAKre,GACH,IAAMgkB,EAAoBpB,EAAM3E,eAAN,aAA2B2E,EAAM3E,gBAAkB,GAG7E,OAFA+F,EAAkBX,KAAK/O,EAAO2P,eAEvB,6BACFrB,GADL,IAEE3E,eAAgB+F,EAChB7F,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,OAGrC,KAAKpe,GACH,OAAO,6BACF2iB,GADL,IAEEzE,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC/J,EAAOrC,QAG5C,KAAK5R,GACH,OAAO,6BACFuiB,GADL,IAEEtE,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,OAGrC,KAAKle,GACH,IAAI4jB,EAAuBtB,EAAM3E,eAAgBuF,KAAI,SAACW,GACpD,OAAIA,EAAEC,KAAO9P,EAAO2P,cAAcG,GACQ,6BACnCD,GADmC,IAEtC3E,OAAQlL,EAAO2P,cAAczE,SAM1B2E,KAGT,OAAO,6BACFvB,GADL,IAEEtE,uBAAuB,EACvBC,4BAA4B,EAC5BN,eAAgBiG,EAChB1F,gCAAiC,OAGrC,KAAKje,GACH,OAAO,6BACFqiB,GADL,IAEEtE,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiClK,EAAOrC,QAG5C,KAAKvR,GACH,OAAO,6BACFkiB,GADL,IAEEnE,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiC,OAGrC,KAAKhe,GACH,IAAM0jB,EACJzB,EAAM3E,gBAAkB2E,EAAM3E,eAAe4F,QAAO,SAACM,GAAD,OAAOA,EAAEG,WAAahQ,EAAOiQ,mBAEnF,OAAO,6BACF3B,GADL,IAEEnE,uBAAuB,EACvBC,4BAA4B,EAC5BT,eAAgBoG,EAChB1F,gCAAiC,OAGrC,KAAK/d,GACH,OAAO,6BACFgiB,GADL,IAEEnE,uBAAuB,EACvBC,4BAA4B,EAC5BC,gCAAiCrK,EAAOrC,QAG5C,KAAKjR,GACH,OAAO,6BACF4hB,GADL,IAEEhE,gBAAgB,EAChB7N,QAAS,KACT8N,oBAAqB,OAGzB,KAAK5d,GACH,OAAO,6BACF2hB,GADL,IAEEhE,gBAAgB,EAChB7N,QAASuD,EAAOvD,QAChB8N,oBAAqB,OAGzB,KAAK1d,GACH,OAAO,6BACFyhB,GADL,IAEE7D,wBAAwB,EACxBD,gBAAiB,KACjBE,4BAA6B,OAGjC,KAAK5d,GACH,OAAO,6BACFwhB,GADL,IAEE7D,wBAAwB,EACxBD,gBAAiBxK,EAAOvD,QACxBiO,4BAA6B,OAGjC,KAAK3d,GACH,OAAO,6BACFuhB,GADL,IAEE7D,wBAAwB,EACxBD,gBAAiB,KACjBE,4BAA6B1K,EAAOrC,QAGxC,KAAK/Q,GACH,OAAO,6BACF0hB,GADL,IAEEhE,gBAAgB,EAChB7N,QAAS,KACT8N,oBAAqBvK,EAAOrC,QAGhC,KAAK3Q,GACH,OAAO,6BACFshB,GADL,IAEE3D,uBAAuB,EACvBC,uBAAuB,EACvBC,2BAA4B,OAGhC,KAAK5d,GACH,OAAO,6BACFqhB,GADL,IAEE3D,uBAAuB,EACvBC,uBAAuB,EACvBC,2BAA4B,OAGhC,KAAK3d,GACH,OAAO,6BACFohB,GADL,IAEE3D,uBAAuB,EACvBC,uBAAuB,EACvBC,2BAA4B7K,EAAOrC,QAGvC,KAAKxQ,GACH,OAAO,6BACFmhB,GADL,IAEExD,qBAAsB,KACtBC,8BAA8B,EAC9BC,uBAAwB,OAG5B,KAAK5d,GACH,OAAO,6BACFkhB,GADL,IAEExD,qBAAsB9K,EAAOlD,aAC7BiO,8BAA8B,EAC9BC,uBAAwB,OAG5B,KAAK3d,GACH,OAAO,6BACFihB,GADL,IAEExD,qBAAsB,KACtBC,8BAA8B,EAC9BC,uBAAwBhL,EAAOrC,QAGnC,KAAKjX,EACH,OAAO,gBACFqa,IAGP,QACE,OAAOuN,IIjQX5R,MNmEK,WAAqG,IAAD,MAA9E4R,EAA8E,uDAAtEvN,GAAcf,EAAwD,uCACzG,OAAQA,EAAOrK,MACb,KAAKnF,GACH,OAAO,6BACF8d,GADL,IAEEjH,aAAcrH,EAAO7I,QACrBwP,cAAc,EACdjK,MAAO,OAGX,KAAKjM,GACH,OAAO,6BACF6d,GADL,IAEE9G,mBAAoBxH,EAAO7I,QAC3ByP,oBAAoB,EACpBE,YAAa,OAGjB,KAAK5X,GACH,IAAMghB,EAAgBlQ,EAAOmQ,MAAQ,KAAO7B,EAAM5R,MAElD,OAAO,6BACF4R,GADL,IAEE3H,cAAc,EACdjK,MAAOwT,EACP/I,UAAWnH,EAAOoQ,KAClB3I,kBAAmB,OAGvB,KAAKtY,GACH,IAAIkhB,EAAa/B,EAAM5R,MAOvB,OAJE2T,EADEA,GAAcrQ,EAAOtD,MACV2T,EAAWC,OAAOtQ,EAAOtD,MAAM6T,SAE/BvQ,EAAOtD,MAAQsD,EAAOtD,MAAM6T,QAAU,GAE9C,6BACFjC,GADL,IAEE3H,cAAc,EACdjK,MAAO2T,EACPtJ,YAAa/G,EAAOtD,MAAQsD,EAAOtD,MAAMqK,YAAcuH,EAAMvH,YAC7DC,UAAWhH,EAAOtD,MAAQsD,EAAOtD,MAAMsK,UAAYsH,EAAMtH,UACzDS,kBAAmB,OAGvB,KAAKrY,GACH,OAAO,6BACFkf,GADL,IAEE3H,cAAc,EACdE,eAAgB7G,EAAOtD,MAAQsD,EAAOtD,MAAM6T,QAAU,GACtD9I,kBAAmB,OAGvB,KAAKpY,GACH,OAAO,6BACFif,GADL,IAEE3H,cAAc,EAEdc,kBAAmBzH,EAAOrC,QAI9B,KAAKrO,GACH,IAAMkhB,EAAsBxQ,EAAOmQ,MAAQ,KAAO7B,EAAMxH,YAExD,OAAO,6BACFwH,GADL,IAEE1H,oBAAoB,EACpBE,YAAa0J,EACbrJ,UAAWnH,EAAOoQ,KAClB1I,wBAAyB,OAG7B,KAAKnY,GACH,IAAIkhB,EAAmBnC,EAAMxH,YAO7B,OAJE2J,EADEA,GAAoBzQ,EAAOtD,MACV+T,EAAiBH,OAAOtQ,EAAOtD,MAAM6T,SAErCvQ,EAAOtD,MAAQsD,EAAOtD,MAAM6T,QAAU,GAEpD,6BACFjC,GADL,IAEE1H,oBAAoB,EACpBE,YAAa2J,EACbxJ,kBAAmBjH,EAAOtD,MAAQsD,EAAOtD,MAAMqK,YAAcuH,EAAMrH,kBACnEC,gBAAiBlH,EAAOtD,MAAQsD,EAAOtD,MAAMsK,UAAYsH,EAAMpH,gBAC/DQ,wBAAyB,OAG7B,KAAKlY,GACH,OAAO,6BACF8e,GADL,IAEE1H,oBAAoB,EAEpBc,wBAAyB1H,EAAOrC,QAGpC,KAAKlO,GACH,OAAO,6BACF6e,GADL,IAEE3G,cAAc,EACdC,mBAAmB,EACnBE,uBAAwB,OAG5B,KAAKpY,GACH,IAAMghB,EAAWpC,EAAM5R,MAAN,aAAkB4R,EAAM5R,OAAS,GAC5CiU,EAAiBrC,EAAMxH,YAAN,aAAwBwH,EAAMxH,aAAe,GAC9DD,EAAiByH,EAAMzH,eAAN,aAA2ByH,EAAMzH,gBAAkB,GAU1E,OARI7G,EAAO4Q,KAAKC,WAAanc,GAAaoc,UACxCJ,EAASK,QAAQ/Q,EAAO4Q,MAExBD,EAAeI,QAAQ/Q,EAAO4Q,MAGhC/J,EAAekK,QAAQ/Q,EAAO4Q,MAEvB,6BACFtC,GADL,IAEE5R,MAAOgU,EACP5J,YAAa6J,EACbhJ,cAAc,EACdd,eAAgBA,EAChBgB,WAAY7H,EAAO4Q,KACnBhJ,mBAAmB,EACnBE,uBAAwB,OAG5B,KAAKnY,GACH,OAAO,6BACF2e,GADL,IAEE3G,cAAc,EACdC,mBAAmB,EACnBC,WAAY,KACZC,uBAAwB9H,EAAOrC,QAGnC,KAAK5N,GACH,OAAO,6BACFue,GADL,IAEEvG,cAAc,EACdC,mBAAmB,EACnBC,uBAAwB,OAG5B,KAAKjY,GACH,IAAIghB,EAAgBhR,EAAO4Q,KAAKC,WAAanc,GAAaoc,UAAYxC,EAAM5R,MAAQ4R,EAAMxH,YAEpFmK,EAAY,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAe9B,KAAI,SAAC0B,GACvC,GAAIA,EAAKd,KAAO9P,EAAO4Q,KAAKd,GAAI,CAC9B,IAAMoB,EAAiB,gBAClBlR,EAAO4Q,MAIZ,OAFI5Q,EAAO4Q,KAAKO,cAAaD,EAAYC,YAAcnR,EAAO4Q,KAAKO,aAC/DnR,EAAO4Q,KAAKQ,YAAWF,EAAYE,UAAYpR,EAAO4Q,KAAKQ,WACxDF,EAET,OAAON,KAET,OAAO,6BACFtC,GADL,IAEE5R,MAAOsD,EAAO4Q,KAAKC,WAAanc,GAAaoc,UAAYG,EAAgB3C,EAAM5R,MAC/EoK,YAAa9G,EAAO4Q,KAAKC,WAAanc,GAAaoc,UAAYxC,EAAMxH,YAAcmK,EACnFpK,eACEyH,EAAMzH,gBACNyH,EAAMzH,eAAeqI,KAAI,SAAC0B,GAAD,OACvBA,EAAKd,KAAO9P,EAAO4Q,KAAKd,GAAxB,6BAAkCc,GAAS5Q,EAAO4Q,MAASA,KAE/D/I,WAAY7H,EAAO4Q,KACnB7I,cAAc,EACdC,mBAAmB,EACnBC,uBAAwB,OAG5B,KAAKhY,GACH,OAAO,6BACFqe,GADL,IAEEvG,cAAc,EACdC,mBAAmB,EACnBC,uBAAwBjI,EAAOrC,QAGnC,KAAKzN,GACH,OAAO,6BACFoe,GADL,IAEEpG,cAAc,EACdC,mBAAmB,EACnBC,uBAAwB,OAG5B,KAAKjY,GACH,IAAMkhB,EAAc,UAAG/C,EAAM5R,aAAT,aAAG,EAAa6S,QAAO,SAACqB,GAAD,OAAgBA,EAAKd,KAAO9P,EAAOsR,UACxEC,EAAoB,UAAGjD,EAAMxH,mBAAT,aAAG,EAAmByI,QAAO,SAACqB,GAAD,OAAgBA,EAAKd,KAAO9P,EAAOsR,UACpFE,EAAuB,UAAGlD,EAAMzH,sBAAT,aAAG,EAAsB0I,QAAO,SAACqB,GAAD,OAAgBA,EAAKd,KAAO9P,EAAOsR,UAEhG,OAAO,6BACFhD,GADL,IAEE5R,MAAO2U,GAAkC,KACzCvK,YAAayK,GAA8C,KAC3D1K,eAAgB2K,GAAoD,KACpEtJ,cAAc,EACdC,mBAAmB,EACnBC,uBAAwB,OAG5B,KAAKhY,GACH,OAAO,6BACFke,GADL,IAEEpG,cAAc,EACdC,mBAAmB,EACnBC,uBAAwBpI,EAAOrC,QAGnC,KAAKtN,GACH,OAAO,6BACFie,GADL,IAEEjG,aAAa,EACbC,kBAAkB,EAClBC,sBAAuB,OAG3B,KAAKjY,GACH,OAAO,6BACFge,GADL,IAEEjG,aAAa,EACbC,kBAAkB,EAClBC,sBAAuB,OAG3B,KAAKhY,GACH,OAAO,6BACF+d,GADL,IAEEjG,aAAa,EACbC,kBAAkB,EAClBC,sBAAuBvI,EAAOrC,QAGlC,KAAKjN,GACH,OAAO,6BACF4d,GADL,IAEE9F,iBAAiB,EACjBC,oBAAoB,EACpBC,SAAU,KACVC,wBAAyB,OAG7B,KAAKhY,GACH,OAAO,6BACF2d,GADL,IAEE9F,iBAAiB,EACjBC,oBAAoB,EACpBC,SAAU1I,EAAO4Q,KACjBjI,wBAAyB,OAG7B,KAAK/X,GACH,OAAO,6BACF0d,GADL,IAEE9F,iBAAiB,EACjBC,oBAAoB,EACpBC,SAAU,KACVC,wBAAyB3I,EAAOrC,QAGpC,KAAK9M,GACH,OAAO,6BACFyd,GADL,IAEE1F,gBAAgB,EAChBC,qBAAqB,EACrBC,UAAW,KACXC,yBAA0B,OAI9B,KAAKjY,GACH,OAAO,6BACFwd,GADL,IAEE1F,gBAAgB,EAChBC,qBAAqB,EACrBC,UAAW9I,EAAO4Q,KAClB7H,yBAA0B,OAI9B,KAAKhY,GACH,OAAO,6BACFud,GADL,IAEE1F,gBAAgB,EAChBC,qBAAqB,EACrBC,UAAW,KACXC,yBAA0B/I,EAAOrC,QAIrC,KAAK/N,GACH,OAAO,6BACF0e,GADL,IAEEtF,sBAAsB,EACtBC,2BAA2B,EAC3BnB,uBAAwB,OAG5B,KAAKjY,GACH,OAAO,6BACFye,GADL,IAEEtF,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAKpZ,GACH,OAAO,6BACFwe,GADL,IAEEtF,sBAAsB,EACtBC,2BAA2B,EAC3BpB,WAAY,KACZqB,+BAAgClJ,EAAOrC,QAG3C,KAAKjX,EACH,OAAO,gBACFqa,IAGP,QACE,OAAOuN,IM1YX3R,SF+DK,WAGW,IAAD,kCAFf2R,EAEe,uDAFPvN,GACRf,EACe,uCACf,OAAQA,EAAOrK,MACb,KAAK/H,GACH,OAAO,6BACF0gB,GADL,IAEEhD,iBAAiB,EACjBgB,qBAAsB,OAG1B,KAAKze,GACH,IAIO,EAJH8O,EAAW,GACf,aAAIqD,EAAOtB,uBAAX,iBAAI,EAAwB/B,gBAA5B,aAAI,EAAkC4T,QAChB5T,EAAhB2R,EAAM3R,SAAqB2R,EAAM3R,SAAS2T,OAAOtQ,EAAOtB,gBAAgB/B,SAAS4T,SACrEvQ,EAAOtB,gBAAgB/B,SAAS4T,aAEhD5T,EAAQ,UAAG2R,EAAM3R,gBAAT,QAAqB,GAG/B,OAAO,6BACF2R,GADL,IAEEhD,iBAAiB,EACjB3O,SAAUA,EACV6O,eAAgB,CACdC,kBAAiB,UAAEzL,EAAOtB,uBAAT,aAAE,EAAwB+M,kBAC3CK,eAAc,UAAE9L,EAAOtB,uBAAT,aAAE,EAAwBoN,eACxCC,eAAc,UAAE/L,EAAOtB,uBAAT,aAAE,EAAwBqN,gBAE1ChF,YAAW,oBAAE/G,EAAOtB,uBAAT,iBAAE,EAAwB/B,gBAA1B,aAAE,EAAkCoK,mBAApC,QAAmD,EAC9DC,UAAS,UAAEhH,EAAOtB,uBAAT,aAAE,EAAwB/B,SAASqK,UAC5CgF,SAAQ,oBAAEhM,EAAOtB,uBAAT,aAAE,EAAwB/B,SAASqP,gBAAnC,QAA+Cd,GAAOC,iBAC9Dc,SAAUjM,EAAOtB,gBAAkBsB,EAAOtB,gBAAgB/B,SAASsP,SAAW,EAC9EC,eAAc,UAAElM,EAAOtB,uBAAT,aAAE,EAAwB/B,SAASuP,eACjDC,cAAa,UAAEnM,EAAOtB,uBAAT,aAAE,EAAwB/B,SAASwP,cAChDG,qBAAsB,OAG1B,KAAKxe,GACH,OAAO,6BACFwgB,GADL,IAEEhD,iBAAiB,EACjBC,kBAAiB,UAAEvL,EAAOtB,uBAAT,aAAE,EAAwB/B,SAAS4T,QACpDjE,qBAAsB,OAG1B,KAAKve,GACH,OAAO,6BACFugB,GADL,IAEEhD,iBAAiB,EACjB3O,SAAU,KACV2P,qBAAsBtM,EAAOrC,QAGjC,KAAKpP,GACH,OAAO,6BACF+f,GADL,IAEEnX,QAAS6I,EAAO7I,QAChBmU,iBAAiB,EACjB3O,SAAU,KACVoK,YAAa,IAGjB,KAAK9Y,GACH,OAAO,6BACFqgB,GADL,IAEE3P,kBAAkB,EAClB4N,SAAU,KACVC,yBAA0B,OAG9B,KAAKte,GACH,OAAO,6BACFogB,GADL,IAEE3P,kBAAkB,EAClB4N,SAAUvM,EAAOf,uBAAuBsN,SACxC1O,UAAWmC,EAAOf,uBAAuBpB,UACzC2O,yBAA0B,KAC1BzN,WAAYiB,EAAOjB,aAGvB,KAAK5Q,GACH,OAAO,6BACFmgB,GADL,IAEE3P,kBAAkB,EAClB4N,SAAU,KACVC,yBAA0BxM,EAAOrC,QAGrC,KAAKvP,GACH,OAAO,6BACFkgB,GADL,IAEEpP,gBAAgB,EAChB9I,OAAQ,KACRuW,uBAAwB,OAG5B,KAAKte,GACH,OAAO,6BACFigB,GADL,IAEEpP,gBAAgB,EAChBwN,gBAAiB1M,EAAOtB,gBACxBiO,uBAAwB,OAG5B,KAAKre,GACH,OAAO,6BACFggB,GADL,IAEEpP,gBAAgB,EAChB9I,OAAQ,KACRuW,uBAAwB3M,EAAOrC,QAGnC,KAAKlP,GACH,OAAO,6BACF6f,GADL,IAEE5B,gBAAiB,OAGrB,KAAK7d,GACH,OAAO,6BACFyf,GADL,IAEE1B,mBAAmB,EACnBC,uBAAuB,EACvBE,2BAA4B,OAGhC,KAAKje,GACH,OAAO,6BACFwf,GADL,IAEE1B,mBAAmB,EACnBC,uBAAuB,EACvBC,iBAAkB9M,EAAOtG,SACzBqT,2BAA4B,OAGhC,KAAKhe,GACH,OAAO,6BACFuf,GADL,IAEE1B,mBAAmB,EACnBC,uBAAuB,EACvBE,2BAA4B/M,EAAOrC,QAGvC,KAAKjP,GACH,OAAO,6BACF4f,GADL,IAEEhP,sBAAsB,EACtB0N,0BAA2B,KAC3B3N,mBAAmB,IAGvB,KAAK1Q,GACH,IAAI8iB,EAAYnD,EAAM9C,eAClBkG,EACFpD,EAAM3R,WAAN,UACA2R,EAAM3R,gBADN,aACA,EAAgBuS,KAAI,SAACyC,GACnB,OAAI3R,EAAO/B,mBAAqB0T,EAAQ1T,kBAClC0T,EAAQC,OAAO7b,WAAaxB,GAASsd,OACvCJ,EAAU3F,eAAeF,cAAgB+F,EAAQC,OAAOE,MACxDL,EAAU3F,eAAeD,cACzB4F,EAAU1F,eAAeH,cAAgB+F,EAAQC,OAAOE,MACxDL,EAAU1F,eAAeF,gBAEzB4F,EAAU3F,eAAeJ,qBAAuBiG,EAAQC,OAAOE,MAC/DL,EAAU3F,eAAeH,qBACzB8F,EAAU1F,eAAeL,qBAAuBiG,EAAQC,OAAOE,MAC/DL,EAAU1F,eAAeJ,sBAGpB,6BACFgG,GADL,IAEEvX,OAAQvF,GAAkBkd,aAGrBJ,MAITK,EACF1D,EAAM/C,oBAAN,UACA+C,EAAM/C,yBADN,aACA,EAAyB2D,KAAI,SAACyC,GAC5B,OAAI3R,EAAO/B,mBAAqB0T,EAAQ1T,kBAClC0T,EAAQC,OAAO7b,WAAaxB,GAASsd,OACvCJ,EAAU3F,eAAeF,cAAgB+F,EAAQC,OAAOE,MACxDL,EAAU3F,eAAeD,cACzB4F,EAAU1F,eAAeH,cAAgB+F,EAAQC,OAAOE,MACxDL,EAAU1F,eAAeF,gBAEzB4F,EAAU3F,eAAeJ,qBAAuBiG,EAAQC,OAAOE,MAC/DL,EAAU3F,eAAeH,qBACzB8F,EAAU1F,eAAeL,qBAAuBiG,EAAQC,OAAOE,MAC/DL,EAAU1F,eAAeJ,sBAGpB,6BACFgG,GADL,IAEEvX,OAAQvF,GAAkBkd,aAGrBJ,MAIb,OAAO,6BACFrD,GADL,IAEEhP,sBAAsB,EACtB0N,0BAA2B,KAC3B3N,mBAAmB,EACnBkM,kBAAmByG,EACnBrV,SAAU+U,EACVlG,eAAgBiG,IAGpB,KAAK7iB,GACH,OAAO,6BACF0f,GADL,IAEEhP,sBAAsB,EACtB0N,0BAA2BhN,EAAOrC,MAClC0B,mBAAmB,IAGvB,KAAKrR,GACH,OAAO,6BACFsgB,GADL,IAEE1B,mBAAmB,IAGvB,KAAK3d,GACH,OAAO,6BACFqf,GADL,IAEE1B,mBAAmB,EACnBC,uBAAuB,IAI3B,KAAK7d,GACH,OAAO,6BACFsf,GADL,IAEE1B,mBAAmB,EACnBC,sBACE7M,EAAOtG,SAASuY,YACfjS,EAAOtG,SAASU,SAAWvF,GAAkBqd,UAC5ClS,EAAOtG,SAASU,SAAWvF,GAAkBsd,SACjDrF,iBAAkB9M,EAAOtG,SAAS0Y,YAC9B,CACEC,YAAarS,EAAOtG,SAAS4Y,YAC7Bvc,SAAUiK,EAAOtG,SAAS0Y,YAAYR,OAAO7b,SAC7Cwc,UAAWvS,EAAOtG,SAAS6Y,UAC3BC,oBAAqBxS,EAAOtG,SAAS0Y,YAAYI,oBACjDP,UAAWjS,EAAOtG,SAASuY,UAC3B9Y,QAAS6G,EAAOtG,SAASP,QACzB8E,iBAAkB+B,EAAOtG,SAAS0Y,YAAYnU,iBAC9CwU,iBAAkBzS,EAAOtG,SAAS+Y,iBAClCC,gBAAiB1S,EAAOtG,SAAS0Y,YAAYM,gBAC7CC,cAAe3S,EAAOtG,SAASiZ,eAEjC,KACJlG,mBAAkB,UAAEzM,EAAOtG,SAAS0Y,mBAAlB,QAAiC,KACnDrF,2BAA4B/M,EAAOtG,SAASP,QACxC6G,EAAOtG,SAASP,QAChB6G,EAAOtG,SAASU,SAAWvF,GAAkB+d,UAC7C5S,EAAOtG,SAASU,SAAWvF,GAAkBkd,UAC7C,eACA,OAGR,KAAKvjB,GACH,OAAO,6BACF8f,GADL,IAEErB,mBAAoBqB,EAAMrB,oBAG9B,KAAKvmB,EACH,OAAO,gBACFqa,IAGP,QACE,OAAOuN,IEtVXvR,QRWK,WAGU,IAAD,EAFduR,EAEc,uDAFNvN,GACRf,EACc,uCACd,OAAQA,EAAOrK,MACb,KAAK5M,GACH,OAAO,6BACFulB,GADL,IAEEzJ,gBAAgB,EAChB9H,QAAS,KACT+H,2BAA4B,OAEhC,KAAK9b,GACH,OAAO,6BACFslB,GADL,IAEEzJ,gBAAgB,EAChB9H,QAASiD,EAAOjD,QAChB+H,2BAA4B,OAEhC,KAAK7b,GACH,OAAO,6BACFqlB,GADL,IAEEzJ,gBAAgB,EAChB9H,QAAS,KACT+H,2BAA4B9E,EAAOrC,QAEvC,KAAKzU,GACH,OAAO,6BACFolB,GADL,IAEEvJ,iBAAiB,EACjBC,sBAAsB,EACtBC,mBAAoB,OAExB,KAAK9b,GACH,IAAM0pB,EAAc,UAAGvE,EAAMvR,eAAT,aAAG,EAAemS,KAAI,SAAC4D,GACzC,GAAIA,EAAIhD,KAAO9P,EAAOzG,QAAQuW,GAAI,CAChC,IAAMiD,EAASD,EAEf,OADAA,EAAIE,eAAiBhT,EAAOzG,QAAQ0Z,QAC7BF,EACF,OAAOD,KAEhB,OAAO,6BACFxE,GADL,IAEEvJ,iBAAiB,EACjBC,sBAAsB,EACtBC,mBAAoB,KACpBlI,QAAO,OAAE8V,QAAF,IAAEA,IAAkB,OAE/B,KAAKzpB,GACH,OAAO,6BACFklB,GADL,IAEEvJ,iBAAiB,EACjBC,sBAAsB,EACtBC,mBAAoBjF,EAAOrC,QAG/B,KAAK/R,GACH,OAAO,6BACF0iB,GADL,IAEEpJ,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,OAIxC,KAAKvZ,GACH,IAAMqnB,EACJ5E,EAAMvR,SACNuR,EAAMvR,QAAQmS,KAAI,SAAC4D,GAMjB,OALIA,EAAIhD,KAAO9P,EAAOlM,aACpBgf,EAAIK,UACAL,EAAIK,UAAUpE,KAAK/O,EAAO2P,eACzBmD,EAAIK,UAAY,CAACnT,EAAO2P,gBAExBmD,KAEX,OAAO,6BACFxE,GADL,IAEEpJ,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,KACpCrI,QAASmW,IAIb,KAAKpnB,GACH,OAAO,6BACFwiB,GADL,IAEEpJ,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoCpF,EAAOrC,QAI/C,KAAKzR,GACH,OAAO,6BACFoiB,GADL,IAEEjJ,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,OAIxC,KAAKpZ,GACH,IAAMinB,EACJ9E,EAAMvR,SACNuR,EAAMvR,QAAQmS,KAAI,SAAC4D,GACjB,GAAIA,EAAIhD,KAAO9P,EAAOlM,WAAY,CAChC,IAAMuf,EAAIP,EAAIK,UAAWG,WAAU,SAACC,GAAD,OAAQA,EAAGzD,KAAO9P,EAAO2P,cAAcG,MAC1EgD,EAAIK,UAAWE,GAAKrT,EAAO2P,cAE7B,OAAOmD,KAGX,OAAO,6BACFxE,GADL,IAEEjJ,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,KACpCxI,QAASqW,IAIb,KAAK7mB,GACH,OAAO,6BACF+hB,GADL,IAEE9I,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,OAIxC,KAAKlZ,GACH,IAAMgnB,EACJlF,EAAMvR,SACNuR,EAAMvR,QAAQmS,KAAI,SAAC4D,GACjB,GAAIA,EAAIhD,KAAO9P,EAAOlM,WAAY,CAChC,IAAM2f,EAAgBX,EAAIK,UAAW5D,QAAO,SAACgE,GAAD,OAAQA,EAAGzD,KAAO9P,EAAOiQ,mBACrE6C,EAAIK,UAAYM,EAElB,OAAOX,KAEX,OAAO,6BACFxE,GADL,IAEE9I,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC,KACpC3I,QAASyW,IAIb,KAAK/mB,GACH,OAAO,6BACF6hB,GADL,IAEE9I,wBAAwB,EACxBC,+BAA+B,EAC/BC,mCAAoC1F,EAAOrC,QAI/C,QACE,OAAO2Q,IQ3KXrR,cLNK,WAGgB,IAFrBqR,EAEoB,uDAFZvN,GACRf,EACoB,uCACpB,OAAQA,EAAOrK,MACb,KAAKrI,GACH,OAAO,0CACFghB,GACAvN,IAFL,IAGEoI,qBAAqB,EACrBC,yBAAyB,EACzBC,6BAA8B,OAGlC,KAAK9b,GACH,OAAO,0CACF+gB,GACAvN,IAFL,IAGEwI,aAAcvJ,EAAOuJ,aACrBJ,qBAAqB,EACrBC,yBAAyB,EACzBC,6BAA8B,OAGlC,KAAK7b,GACH,OAAO,0CACF8gB,GACAvN,IAFL,IAGEoI,qBAAqB,EACrBC,yBAAyB,EACzBC,6BAA8BrJ,EAAOrC,QAGzC,KAAKlQ,GACH,OAAO,0CACF6gB,GACAvN,IAFL,IAGEuI,uBAAuB,EACvBE,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAK/b,GACH,OAAO,0CACF4gB,GACAvN,IAFL,IAGEuI,uBAAuB,EACvBE,2BAA2B,EAC3BC,+BAAgC,OAGpC,KAAK9b,GACH,OAAO,0CACF2gB,GACAvN,IAFL,IAGEuI,uBAAuB,EACvBE,2BAA2B,EAC3BC,+BAAgCzJ,EAAOrC,QAG3C,KAAKjX,EACH,OAAO,gBACFqa,IAGP,QACE,OAAOuN,IK3DXpR,YDaK,WAGc,IAFnBoR,EAEkB,uDAFVvN,GACRf,EACkB,uCAClB,OAAQA,EAAOrK,MACb,KAAK3E,GACH,OAAO,6BACFsd,GADL,IAEEpB,oBAAoB,EACpB1I,cAAe,KACf2I,wBAAyB,OAG7B,KAAKlc,GACH,OAAO,6BACFqd,GADL,IAEEpB,oBAAoB,EACpB1I,cAAexE,EAAO9C,YACtBiQ,wBAAyB,OAG7B,KAAKhc,GACH,OAAO,6BACFmd,GADL,IAEElB,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,OAGnC,KAAKlc,GACH,IAAMsiB,EAAiBpF,EAAM9J,cAAN,aAA0B8J,EAAM9J,eAAiB,GAGxE,OAFAkP,EAAe3E,KAAf,gBAAyB/O,EAAO9C,cAEzB,6BACFoR,GADL,IAEE9J,cAAekP,EACftG,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,OAGnC,KAAKjc,GACH,OAAO,6BACFid,GADL,IAEElB,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+BtN,EAAOrC,QAG1C,KAAKzM,GACH,OAAO,6BACFod,GADL,IAEEpB,oBAAoB,EACpB1I,cAAe,KACf2I,wBAAyBnN,EAAOrC,QAGpC,KAAKrM,GACH,OAAO,6BACFgd,GADL,IAEEf,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+B,OAGnC,KAAKlc,GACH,IAAIoiB,EAAqBrF,EAAM9J,cAAe0K,KAAI,SAAC0E,GACjD,OAAIA,EAAE9D,KAAO9P,EAAO9C,YAAY4S,GACM,6BAC/B8D,GAD+B,IAElC3f,KAAM+L,EAAO9C,YAAYjJ,KACzBmG,OAAQ4F,EAAO9C,YAAY9C,SAMxBwZ,KAGT,OAAO,6BACFtF,GADL,IAEEf,qBAAqB,EACrBC,0BAA0B,EAC1BhJ,cAAemP,EACflG,8BAA+B,OAGnC,KAAKjc,GACH,OAAO,6BACF8c,GADL,IAEET,gCAAgC,EAChCC,oCAAoC,EACpCC,wCAAyC,OAG7C,KAAKtc,GACH,OAAO,6BACF6c,GADL,IAEET,gCAAgC,EAChCC,oCAAoC,EACpCC,wCAAyC,OAG7C,KAAKrc,GACH,OAAO,6BACF4c,GADL,IAEET,gCAAgC,EAChCC,oCAAoC,EACpCC,wCAAyC/N,EAAOrC,QAGpD,KAAKhM,GACH,OAAO,6BACF2c,GADL,IAEEN,kCAAkC,EAClCC,uCAAuC,EACvCC,2CAA4C,OAGhD,KAAKtc,GACH,OAAO,6BACF0c,GADL,IAEEN,kCAAkC,EAClCC,uCAAuC,EACvCC,2CAA4C,OAGhD,KAAKrc,GACH,OAAO,6BACFyc,GADL,IAEEN,kCAAkC,EAClCC,uCAAuC,EACvCC,2CAA4ClO,EAAOrC,QAGvD,KAAK7L,GACH,OAAO,6BACFwc,GADL,IAEEf,qBAAqB,EACrBC,0BAA0B,EAC1BC,8BAA+BzN,EAAOrC,QAG1C,KAAK5L,GACH,OAAO,6BACFuc,GADL,IAEET,gCAAgC,EAChCC,oCAAoC,EACpCC,wCAAyC,KACzCC,kCAAkC,EAClCC,uCAAuC,EACvCC,2CAA4C,OAGhD,QACE,OAAOI,MCtKPuF,GAAmBvhB,OAAOwhB,sCAAwCC,IAClEC,GAAsBC,MAIfnU,GAAQoU,YACnB/F,GACA0F,GACEM,YAAgBC,IAAgDvU,IAChEmU,K,4DCvCSK,GAAQC,aAAe,CAClCC,QAAS,CACPC,QAAS,CACPC,KAAMC,KAAOF,QACbG,MAAO,WAETC,UAAW,CACTH,KAAMC,KAAOE,WAEfjX,MAAO,CACL8W,KAAM,UACNE,MAAO,+BACPE,KAAM,WAERC,QAAS,CACPL,KAAM,UACNE,MAAO,UACPE,KAAM,WAERlU,QAAS,CACP8T,KAAM,UACNE,MAAO,+BACPE,KAAM,WAERE,KAAM,CACJN,KAAMC,KAAOM,UACbL,MAAOD,KAAOO,eACdJ,KAAMH,KAAOM,WAEfE,WAAY,CACVC,QAAS,YAGbC,WAAY,CACVC,WAAW,sBACXC,GAAI,CACFC,SAAU,WAEZC,GAAI,CACFD,SAAU,QAEZE,GAAI,CACFF,SAAU,YAEZG,GAAI,CACFH,SAAU,UAEZI,GAAI,CACFJ,SAAU,WAEZK,GAAI,CACFL,SAAU,aAEZM,UAAW,CACTC,MAAOpB,KAAOM,UACdO,SAAU,WACVQ,WAAYze,OAAOod,KAAOsB,mBAE5BC,UAAW,CACTH,MAAOpB,KAAOM,UACdO,SAAU,YACVQ,WAAYze,OAAOod,KAAOwB,sBAG9BC,YAAa,CACXjL,OAAQ,CACNkL,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,OAGRC,UAAW,CACTC,UAAW,CACTC,KAAM,CACJC,aAAc,EACdC,cAAe,OACfC,QAAS,cACTvB,SAAU,GACVQ,WAAYze,OAAOod,KAAOsB,kBAC1Be,SAAU,WACVC,UAAW,UAEbC,SAAU,CACRH,QAAS,eAEXI,UAAW,CACTC,UAAW,QAEbC,iBAAkB,CAChBtB,MAAOpB,KAAO2C,MACdC,OAAO,aAAD,OAAe5C,KAAOF,SAC5B2C,UAAW,kBACX,4CAA6C,CAC3C,UAAW,CACTrB,MAAOpB,KAAOF,QACd2C,UAAW,kBACXI,gBAAiB7C,KAAO2C,MACxBC,OAAO,aAAD,OAAe5C,KAAOF,WAGhC,iBAAkB,CAChB+C,gBAAgB,GAAD,OAAK7C,KAAO8C,gBAAZ,eACfL,UAAW,OACXM,YAAa,yBACb3B,MAAM,GAAD,OAAKpB,KAAO2C,MAAZ,iBAGTK,kBAAmB,CACjB5B,MAAOpB,KAAOiD,oBACdF,YAAa/C,KAAOkD,sBACpB7B,WAAYze,OAAOod,KAAOsB,kBAC1BuB,gBAAiB7C,KAAO2C,MACxB,UAAW,CACTI,YAAa/C,KAAOkD,sBACpBL,gBAAiB7C,KAAOkD,sBACxB,4BAA6B,CAC3BL,gBAAgB,GAAD,OAAK7C,KAAO2C,MAAZ,iBAGnB,iBAAkB,CAChBvB,MAAOpB,KAAOiD,oBACdF,YAAa/C,KAAOkD,sBACpB7B,WAAYze,OAAOod,KAAOsB,kBAC1BuB,gBAAiB7C,KAAO2C,MACxBQ,QAAS,MAIfC,cAAe,CACbnB,KAAM,CACJC,aAAc,MACd,UAAW,CACT,QAAS,CACP,SAAU,CACRmB,KAAMrD,KAAOkD,2BAMvBI,QAAS,CACPrB,KAAM,CACJb,MAAOpB,KAAOM,UACdsC,OAAO,aAAD,OAAe5C,KAAOkD,uBAC5BK,MAAO,UACPC,OAAQ,UACRtB,aAAc,UACdW,gBAAiB7C,KAAO2C,OAE1Bc,UAAW,CACT,UAAW,CACTZ,gBAAiB7C,KAAOkD,uBAE1B,UAAW,CACTL,gBAAiB7C,KAAOkD,wBAG5BQ,sBAAuB,CACrBX,YAAa/C,KAAOF,SAEtB6D,aAAc,CACZvC,MAAOpB,KAAO2C,QAGlBiB,OAAQ,CACN3B,KAAM,CACJE,cAAe,OACfC,QAAS,mBACT,4BAA6B,CAC3BC,SAAU,KAIhBwB,YAAa,CACX5B,KAAM,CACJY,gBAAiB,6BAGrBiB,UAAW,CACTC,eAAgB,CACdC,IAAK,GAEPL,aAAc,CACZd,gBAAiB7C,KAAO2C,MACxBF,UAAWzC,KAAOiE,cAEpBC,eAAgB,CACdrB,gBAAiB7C,KAAOE,UACxBuC,UAAWzC,KAAOmE,qBAGtBC,SAAU,CACRC,WAAY,CACV5B,UAAWzC,KAAOyC,WAEpB6B,WAAY,CACVlC,QAAS,mBACTK,UAAWzC,KAAOyC,UAClBc,MAAO,OACPgB,UAAW,QAEbC,WAAY,CACVpC,QAAS,gBACTK,UAAWzC,KAAOyC,UAClBc,MAAO,OACPgB,UAAW,QAEbE,WAAY,CACVhC,UAAWzC,KAAO0E,wBAGtBC,iBAAkB,CAChB1C,KAAM,CACJ,oBAAqB,CACnBc,YAAa/C,KAAOkD,uBAEtB,0BAA2B,CACzBH,YAAa/C,KAAOkD,uBAEtB,0BAA2B,CACzBH,YAAa/C,KAAOkD,uBAEtB9B,MAAOpB,KAAOM,UACd,iBAAkB,CAChBuC,gBAAiB7C,KAAO4E,UACxBxD,MAAOpB,KAAO6E,UACd,oBAAqB,CACnB9B,YAAa/C,KAAO4E,cAK5BE,aAAc,CACZ7C,KAAM,CACJb,MAAOpB,KAAOM,YAGlByE,oBAAqB,CACnB9C,KAAM,CACJ+C,YAAa,IAGjBC,UAAW,CACTC,KAAM,CACJ9D,MAAOpB,KAAOM,YAGlB6E,kBAAmB,CACjBlD,KAAM,CACJG,QAAS,WAGbgD,YAAa,CACXnD,KAAM,CACJY,gBAAiB7C,KAAO2C,MACxB0C,WAAY,yBACZzC,OAAQ,OACR,4BAA6B,CAC3BC,gBAAiB,QACjByC,OAAQ,WAEV,qBAAsB,CACpB,UAAW,CACTzC,gBAAiB7C,KAAOuF,iBAI9BC,KAAM,CACJ3C,gBAAiB7C,KAAOuF,cACxB,UAAW,CACT1C,gBAAiB7C,KAAOyF,cACxBH,OAAQ,aAIdI,aAAc,CACZzD,KAAM,CACJ0D,UAAW,SACX/C,OAAQ,OACR/B,SAAU,WACV+E,aAAc,OACdxD,QAAS,UACTyD,UAAW,aACXC,SAAU,EACVC,SAAU,SACVC,aAAc,WACdC,WAAY,UAEdT,KAAM,CACJpE,MAAOpB,KAAOM,UACde,WAAY,OACZ6E,WAAY,OACZD,WAAY,SACZ5D,SAAU,QAEZld,KAAM,CACJic,MAAOpB,KAAOmG,QAGlBC,YAAa,CACXnE,KAAM,CACJ,iBAAkB,CAChBY,gBAAiB7C,KAAOkD,wBAG5BmD,OAAQ,CACN,UAAW,CACTxD,gBAAiB7C,KAAOkD,yBAI9BoD,kBAAmB,CACjBrE,KAAM,CACJsE,UAAW,mBACX,6BAA8B,CAC5BnF,MAAOpB,KAAOM,aAIpBkG,QAAS,CACPC,eAAgB,CACd,UAAW,CACTC,eAAgB,UAItBC,WAAY,CACVC,QAAS,CACP/F,SAAU,WAEZgG,MAAO,CACLhG,SAAU,UACVuB,QAAS,WAGb0E,WAAY,CACV7E,KAAM,CACJuB,OAAQ,MACRX,gBAAiB7C,KAAO+G,qBAI9BC,MAAO,CACL5B,YAAa,CACX6B,OAAO,GAETvB,aAAc,CACZwB,MAAO,a,+IChWE,OAA0B,sCCKnCC,GAAYC,cAAW,SAACzH,GAAD,mBAC3B0H,aAAa,CACXC,UAAU,cACRC,QAAS,OACTC,cAAe,MACfC,IAAK,OACLC,eAAgB,UACf/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfpF,QAAS,SACTwF,WAAY,WAGhBC,sBAAoB,GAClBN,QAAS,OACTC,cAAe,SACfE,eAAgB,SAChBE,WAAY,aACZH,IAAK,OACLpF,SAAU,WANQ,eAOjB1C,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BF,IAAK,SACLlE,MAAO,OACPlB,SAAU,OACVqF,eAAgB,SAChBE,WAAY,SACZjC,UAAW,SACXmC,aAAc,OAdE,eAgBjBnI,EAAM8B,YAAYsG,GAAG,MAAQ,CAC5BxE,MAAO,QAjBS,GAoBpByE,kBAAgB,GACdC,WAAY,OACZtC,UAAW,OACX9E,SAAU,YACVO,MAAOpB,KAAOE,WAJA,eAKbP,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,cANE,eAQbnG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BM,WAAY,IACZtC,UAAW,SACX9E,SAAU,SAXE,GAchBqH,qBAAmB,GACjBvC,UAAW,OACX9E,SAAU,WACVO,MAAOpB,KAAOE,UACdmB,WAAYze,OAAOod,KAAOsB,mBAJT,eAKhB3B,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BhC,UAAW,SACXwC,SAAU,OACV/F,QAAS,WARM,eAUhBzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,WAXM,GAcnBgG,YAAa,CACXvH,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAOwB,qBAE5B6G,SAAU,CACRxH,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAOwB,qBAE5B8G,KAAK,cACH/E,MAAO,OACPC,OAAQ,aACP7D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BJ,QAAS,SAGbgB,WAAS,GACPhB,QAAS,OACTK,WAAY,SACZF,eAAgB,UAHT,eAIN/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BnE,OAAQ,SALH,eAOP,QAPO,cAQLD,MAAO,SACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,WAVJ,QAoDEiF,OA3Bf,YAA+F,IAAtEC,EAAqE,EAArEA,MAAOC,EAA8D,EAA9DA,SAAUC,EAAoD,EAApDA,QAASJ,EAA2C,EAA3CA,UAAWK,EAAgC,EAAhCA,SACtDC,EAAU1B,KACVxH,EAAQmJ,eACRC,EAAYC,aAAcrJ,EAAM8B,YAAYsG,GAAG,OAErD,OACE,mCACE,sBAAKkB,UAAWJ,EAAQvB,UAAxB,UACE,sBAAK2B,UAAWJ,EAAQhB,qBAAxB,UACE,qBAAKqB,IAAKZ,GAAMa,IAAI,OAAOF,UAAWJ,EAAQP,QAC5CS,GAAaR,GAAa,qBAAKU,UAAWJ,EAAQN,UAAxB,SAAoCA,IAChE,cAACa,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAWJ,EAAQb,iBAA5C,SACGS,IAEH,cAACW,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAWJ,EAAQX,oBAAnD,SACGQ,IAEFE,EACAL,GAAaI,KAEfI,GAAaR,GAAa,qBAAKU,UAAWJ,EAAQN,UAAxB,SAAoCA,KAC7DA,GAAaI,QChHjBW,G,+MACJ1P,MAAe,CACb2P,UAAU,G,iEAQMtgB,EAAcugB,GAC9Btf,QAAQjB,MAAM,kBAAmBA,EAAOugB,K,+BAGhC,IAAD,OACDC,EAAqB,cAAC,KAAD,CAAQC,cAAeC,GAAgBC,MAAM,IAWxE,OAAIC,KAAKjQ,MAAM2P,SAEX,qBAAKN,UAAU,iBAAf,SACE,qBAAKA,UAAU,mBAAf,SACE,cAAC,GAAD,CACER,MAAM,iCACNF,UAAWkB,EACXb,SACE,qCACE,2EACA,cAACkB,GAAA,EAAD,CAAQC,QAnBA,WAChBvsB,GAAUgB,aAAaZ,OAAOC,SAAS+H,UACzC,EAAKohB,MAAMgD,SAAS,KAEpB,EAAKhD,MAAMgD,SAAS,cAEtBpsB,OAAOC,SAASosB,UAa4B7I,MAAM,UAAUiI,QAAQ,YAAYa,kBAAgB,EAApF,uCAWPL,KAAK7C,MAAM4B,Y,gDA1CYuB,GAE9B,OADAjgB,QAAQC,IAAIggB,GACL,CAAEZ,UAAU,O,GAPKa,aAwDbC,OALf,SAAmCrD,GACjC,IAAMgD,EAAWM,eACjB,OAAO,cAAC,GAAD,6BAAmBtD,GAAnB,IAA0BgD,SAAUA,M,kBClEvC7C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACT/C,UAAW,OACXhB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACfI,WAAY,SACZF,eAAgB,eAgBP6C,OAXf,WACE,IAAM1B,EAAU1B,KAEhB,OACE,sBAAK8B,UAAWJ,EAAQvB,UAAxB,UACE,cAAC,KAAD,CAAQ9D,OAAO,QAAQD,MAAM,QAAQmG,cAAec,GAAgBZ,MAAM,IAC1E,cAACR,GAAA,EAAD,CAAYC,QAAQ,KAApB,2E,uCCpBAoB,GAAiB,kBACjBC,GAAuB,yFACvBC,GAAa,8BAEbC,GAAyB,+CADR,EACQ,eAGzBC,GAAe,qCAGfC,GAA2B,CAFR,KACE,MAGrBC,GAAgB,qCAMhBC,GAAcC,OAAaC,MAAM,CACrCC,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,IAC/CY,SAAUJ,OACPK,QAAQP,GAAeL,IACvBU,SAASX,IACTc,IApBkB,EAoBEX,MAGnBY,GAAsBP,OAAaC,MAAM,CAC7CC,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,MAG3CgB,GAAqBR,OAAaC,MAAM,CAC5CC,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,IAC/CY,SAAUJ,OACPK,QAAQP,GAAeL,IACvBU,SAASX,IACTc,IAhCkB,EAgCEX,IACvBc,eAAgBT,OACbK,QAAQP,GAAeL,IACvBU,SAASX,IACTkB,MAAM,CAACV,KAAQ,YAAa,MAAO,mCACtCvQ,MAAOuQ,OACJG,SAASX,IACTc,IAAI,EAAG,gDACPK,IAAI,GAAI,qDACXjR,SAAUsQ,OACPG,SAASX,IACTc,IAAI,EAAG,gDACPK,IAAI,GAAI,qDACXC,YAAaZ,OAAaG,SAASX,IAAgBa,QAlClC,WATC,kDA8CdQ,GAAoBb,OAAaC,MAAM,CAC3CC,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,IAC/CsB,eAAgBd,OAAaK,QAAQP,GAAeL,IAAsBU,SAASX,IACnFY,SAAUJ,OACPK,QAAQP,GAAeL,IACvBU,SAASX,IACTuB,SAAS,CAACf,KAAQ,kBAAmB,MAAO,wDAC5CM,IAvDkB,EAuDEX,IACvBc,eAAgBT,OACbK,QAAQP,GAAeL,IACvBU,SAASX,IACTkB,MAAM,CAACV,KAAQ,YAAa,MAAO,qCAGlCgB,GAAuBhB,OAAaC,MAAM,CAC9CgB,gBAAiBjB,OAAaK,QAAQP,GAAeL,IAAsBU,SAASX,IACpFY,SAAUJ,OACPM,IAjEkB,EAiEEX,IACpBU,QAAQP,GAAeL,IACvBU,SAASX,IACTuB,SAAS,CAACf,KAAQ,kBAAmB,MAAO,wDAC/CS,eAAgBT,OACbK,QAAQP,GAAeL,IACvBU,SAASX,IACTkB,MAAM,CAACV,KAAQ,YAAa,MAAO,qCAGlCkB,GAA2BlB,OAAaC,MAAM,CAClDG,SAAUJ,OACPM,IA7EkB,EA6EEX,IACpBU,QAAQP,GAAeL,IACvBU,SAASX,IACZiB,eAAgBT,OACbK,QAAQP,GAAeL,IACvBU,SAASX,IACTkB,MAAM,CAACV,KAAQ,YAAa,MAAO,qCAGlCmB,GAAgBnB,OAAaC,MAAM,CACvCxQ,MAAOuQ,OAAaG,SAASX,IAAgBc,IAAI,EAAG,gDACpD5Q,SAAUsQ,OAAaG,SAASX,IAChCU,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,MAG3C4B,GAAapB,OAAaC,MAAM,CACpCxQ,MAAOuQ,OAAaG,SAASX,IAC7B9P,SAAUsQ,OAAaG,SAASX,IAChCU,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,IAC/CY,SAAUJ,OACPK,QAAQP,GAAeL,IACvBU,SAASX,IACTc,IAnGkB,EAmGEX,IACvBc,eAAgBT,OACbK,QAAQP,GAAeL,IACvBU,SAASX,IACTkB,MAAM,CAACV,KAAQ,YAAa,MAAO,qCAGlCqB,GAAarB,OAAaC,MAAM,CACpC9N,MAAO6N,OACJsB,UAAU1B,IACVU,IAAI,EAAG,sCACPH,SAASX,MAGR+B,GAAkBvB,OAAaC,MAAM,CACzChO,OAAQ+N,OACLsB,UAAU1B,IACVU,IAAI,EAAG,sCACPH,SAASX,IACZgC,kBAAmBxB,OAChBsB,UAAU1B,IACVU,IAAI,EAAG,sCACPH,SAASX,MAGRiC,GAAiBzB,OAAaC,MAAM,CACxCyB,WAAY1B,OACTM,IAAI,EAAG,+CACPK,IAAI,GAAI,iDACRR,SAASX,IACZmC,QAAS3B,OACNM,IAAI,EAAG,yDACPK,IAAI,GAAI,2DACRN,QA1HqB,gBA0HM,iCAC3BA,QAxHqB,8BAwHM,0CAC3BF,SAASX,IACZoC,QAAS5B,OACNG,SAASX,IACTc,IAAI,GAAI,uCACRK,IAAI,GAAI,uCACXnP,YAAawO,OAAaG,SAASX,IACnCqC,IAAK7B,OAAa8B,IAAI,CAAC,IAAK,gCAGxBC,GAAqB/B,OAAaC,MAAM,CAC5CyB,WAAY1B,OACTM,IAAI,EAAG,+CACPK,IAAI,GAAI,iDACRR,SAASX,IACZqC,IAAK7B,OAAa8B,IAAI,CAAC,IAAK,gCAGxBE,GAAsBhC,OAAaC,MAAM,CAC7CxpB,OAAQupB,OAAaG,SAASX,IAC9ByC,SAAUjC,OAAakC,KAAK,SAAU,CACpCC,GAAI,SAAC1rB,GAAD,OAAqBopB,GAAyB7rB,SAASyC,IAC3DwD,KAAM+lB,OAAaG,SAASX,MAE9B4C,eAAgBpC,OAAaG,SAASX,MAOlC6C,GAAkBrC,OAAaC,MAAM,CACzC7pB,SAAU4pB,OAAaG,SAASX,IAChCvN,OAAQ+N,OAAasB,UAAU1B,MAG3B0C,GAAiBtC,OAAaC,MAAM,CACxChO,OAAQ+N,OAAasB,UAAU1B,IAAcO,SAASX,MAmFzC+C,GAxBC,CACdxC,eACAQ,uBACAC,sBACAK,qBACAG,wBACAE,4BACAC,iBACAC,cACAC,cACAE,mBACAE,kBACAM,sBACAC,uBACAK,mBACAG,gBAvEsBxC,OAAaC,MAAM,CACzCC,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,MAuE/CiD,mBApEyBzC,OAAaC,MAAM,CAC5CxO,UAAWuO,OAAaG,SAASX,MAoEjC8C,kBACAI,cAlEoB1C,OAAaC,MAAM,CACvC3rB,KAAM0rB,OAAaG,SAASX,IAC5BU,MAAOF,OAAaE,MAAMR,IAAYS,SAASX,IAC/ChmB,QAASwmB,OAAaG,SAASX,MAgE/BmD,sBA7D4B3C,OAAaC,MAAM,CAC/C2C,MAAO5C,OAAaG,SAASX,IAAgBa,QAhLxB,WATO,8CAsP5BwC,yBA1D+B7C,OAAaC,MAAM,CAClDC,MAAOF,OAAaE,MAAMR,MA0D1BoD,cAvDoB9C,OAAaC,MAAM,CACvChO,OAAQ+N,OACLG,SAASX,IACTuD,KAAK,kBAAmB,+CAAyC,SAAC5Q,GACjE,IAAKA,EAAO,OAAO,EACnB,IAAM6Q,EAAcC,WAAW9Q,GAC/B,OAAQ+Q,MAAMF,IAAgBA,EAAc,GAAK,gBAAgBD,KAAK5Q,MAE1E/b,SAAU4pB,OACPG,SAASX,IACTuD,KACC,oBACA,+EACA,SAAC5Q,GACC,IAAKA,EAAO,OAAO,EACnB,IAAM6Q,EAAcG,SAAShR,EAAO,IACpC,OAAQ+Q,MAAMF,IAAgB,CAAC,EAAG,GAAGhvB,SAASgvB,MAGpDxR,YAAawO,OAAaW,IAAI,GAAI,2CAClClP,UAAWuO,OAAaW,IAAI,GAAI,2CAChCT,MAAOF,OAAaE,MAAMR,IAC1B0D,WAAYpD,OAAa+C,KACvB,uBACA,mFACA,SAAC5Q,GACC,IAAKA,EAAO,OAAO,EACnB,IAAMkR,EAAYvrB,KAAOqa,EAAO,cAAc,GACxC1Z,EAAQX,OAASY,QAAQ,OAC/B,OAAO2qB,EAAUC,WAAaD,EAAUE,QAAQ9qB,SC7NzC+qB,GAAuB,CAClCC,mB,6CACAC,c,+CACAC,mB,6CACAC,mB,6CACAC,mB,6CACAC,mB,4FAGF,WAAkC3vB,GAAlC,SAAA0F,EAAA,sEACenC,GAAG,UAAoBoE,GAAS,cAA7B,YAAkD3H,IAC/D8F,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA6B7J,EAAoB4vB,GAAjD,SAAAlqB,EAAA,sEACenC,GAAG,UACXoE,GAAS,cADE,gBACuB3H,GADvB,OACoC4vB,EAAU,mBAAeA,GAAe,KAEzF9pB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WACEgmB,GADF,SAAAnqB,EAAA,sEAGe2B,GAAI,UAAkBM,GAAS,cAA3B,iBAA6DkoB,GAC3E/pB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WACEimB,GADF,SAAApqB,EAAA,sEAGe8B,GAAG,UAAkBG,GAAS,eAAqBmoB,GAC7DhqB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WAAkC6R,GAAlC,SAAAhW,EAAA,sEACegC,GAAU,UAAaC,GAAS,cAAtB,YAA2C+T,IAC/D5V,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WACEkmB,GADF,SAAArqB,EAAA,sEAGe8B,GAAG,UACXG,GAAS,cADE,mBAC0BooB,EAA0B1U,QAClE0U,GAECjqB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAXZ,oF,sBCxCO,IAeM0lB,GAAgB,SAACvvB,EAAoB4vB,GAChD,OAAO,SAACvlB,GAGN,OAFAA,EAASwH,MAEFwd,GAAqBE,cAAcvvB,EAAY4vB,GAAY9pB,MAChE,SAACF,GACCyE,EAAS2lB,GAAiBpqB,OAE5B,SAACiE,GACCQ,EAAS4lB,GAAoBpmB,SAMxBgI,GAAuB,iBAAgC,CAClEhQ,KAAMpL,KAGKu5B,GAAmB,SAC9BjV,GAD8B,MAED,CAC7BlZ,KAAMnL,GACNqkB,0BAGWkV,GAAsB,SAACpmB,GAAD,MAA6C,CAC9EhI,KAAMlL,GACNkT,UAsBWkI,GAAuB,iBAAgC,CAClElQ,KAAMjL,KAGKob,GAA4B,SAACvP,GAAD,MAA0D,CACjGZ,KAAMhL,GACN4L,iBAGWytB,GAA2B,SAACrmB,GAAD,MAA6C,CACnFhI,KAAM/K,GACN+S,UAsBWqI,GAAuB,iBAAgC,CAClErQ,KAAM9K,KAGKob,GAA4B,SAAC1P,GAAD,MAA0D,CACjGZ,KAAM7K,GACNyL,iBAGW0tB,GAA2B,SAACtmB,GAAD,MAA6C,CACnFhI,KAAM5K,GACN4S,UAwCW8lB,GAAqB,SAACI,GACjC,OAAO,SAAC1lB,GAGN,OAFAA,EAASmI,MAEF6c,GAAqBM,mBAAmBI,GAA2BjqB,MACxE,SAACF,GACCyE,EAASoI,GAA0Bsd,EAA0B1U,YAE/D,SAACxR,GACCQ,EAAS+lB,GAAyBvmB,SAM7B2I,GAAuB,iBAAgC,CAClE3Q,KAAMxK,KAGKob,GAA4B,SAAC4I,GAAD,MAA8C,CACrFxZ,KAAMvK,GACN+jB,WAGW+U,GAA2B,SAACvmB,GAAD,MAA6C,CACnFhI,KAAMtK,GACNsS,U,iCCnMawmB,OAXf,SAAyBzI,GACvB,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,aACE,sBACE4I,EAAE,ooDACFvM,KAAMwM,KAAUC,iBCKTC,OAXf,WACE,OACE,qBAAKxM,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACEC,EAAE,+wFACFvM,KAAMwM,KAAUG,SCAlBC,GAAoB7I,cAAW,SAACzH,GAAD,MAAY,CAC/CuQ,SAAS,cACPC,OAAQ,eACPxQ,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,QAGX9e,QAAQ,cACN8iB,QAAS,OACTC,cAAe,MACfI,WAAY,SACZvG,WAAY,IACZkC,MAAO,SACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGX2B,KAAM,CACJF,YAAa,GACbuC,QAAS,OACTK,WAAY,cA+CDwI,OAlCf,YAAwG,IAA9EC,EAA6E,EAA7EA,KAAM5rB,EAAuE,EAAvEA,QAAS6rB,EAA8D,EAA9DA,SAAUC,EAAoD,EAApDA,YAAatvB,EAAuC,EAAvCA,KAAMuvB,EAAiC,EAAjCA,SAC9D3H,EAAUoH,KACVQ,EAAaxvB,IAASnB,GAAO4wB,QAAU,cAAC,GAAD,IAAsB,cAAC,GAAD,IAE7DC,EAAc,CAClB9N,gBAAiB5hB,IAASnB,GAAO4wB,QAAUb,KAAUe,cAAgBf,KAAUgB,SAC/EjO,OAAO,aAAD,OAAe3hB,IAASnB,GAAO4wB,QAAUb,KAAUiB,MAAQjB,KAAUG,KAC3E5O,MAAOngB,IAASnB,GAAO4wB,QAAUb,KAAUiB,MAAQjB,KAAUG,KAG/D,OACE,cAACe,GAAA,EAAD,CACEV,KAAMA,EACNW,iBAAkBV,GAAsB,IACxCW,oBAAqBC,KACrBC,QAASZ,EACT1H,QAAS,CAAE5G,KAAM4G,EAAQqH,UACzBkB,aAAc,CAAEC,SAAU,MAAOC,WAAY,UAC7Cd,SAAUA,EAPZ,SASE,cAACe,GAAA,EAAD,CACE1I,QAAS,CAAEpkB,QAASokB,EAAQpkB,SAC5B+sB,MAAOb,EACPlsB,QACE,qCACE,sBAAMwkB,UAAWJ,EAAQ3D,KAAzB,SAAgCuL,IAC/BhsB,U,UCnDEgtB,OAbf,WACE,OACE,qBAAK9B,MAAM,6BAA6BpM,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,mBAAvE,SACE,sBACEtU,GAAG,MACHwU,EAAE,8iBACFrJ,UAAU,wBACVlD,KAAMwM,KAAUhL,eCMT6M,OAbf,WACE,OACE,qBAAK/B,MAAM,6BAA6BpM,MAAM,SAASC,OAAO,SAASkM,QAAQ,oBAA/E,SACE,sBACEtU,GAAG,YACHwU,EAAE,q8BACFrJ,UAAU,0BACVlD,KAAMwM,KAAUhL,e,qDCHlB8M,GAAqBvK,aAAW,CACpCnF,KAAM,CACJsB,MAAO,QAET2B,KAAM,CACJI,OAAQ,WAEVrc,MAAO,CACLmY,MAAOyO,KAAUG,IACjBnP,SAAU,MAoFC+Q,OAzEf,YAAuG,IAAD,EAA7EC,EAA6E,EAA7EA,eAAgCC,GAA6C,EAA7DC,eAA6D,EAA7CD,OAAOE,EAAsC,EAAtCA,KAAShL,EAA6B,mEAC9F6B,EAAU8I,KACVpI,OAAqEnoB,KAAzD4wB,EAAKC,QAAQH,EAAMvyB,OAASyyB,EAAKE,OAAOJ,EAAMvyB,OAiChE,OACE,qCACE,cAAC4yB,GAAA,EAAD,2BACEhC,OAAM,UAAEnJ,EAAMmJ,cAAR,QAAkB,SACxB9G,QAAQ,WACRJ,UAAWjC,EAAMiC,UACjBhgB,MAAOsgB,EACPV,QAAS,CAAE5G,KAAM4G,EAAQ5G,MACzBmQ,WAAY,CACVC,UAAWrL,EAAM4E,KAEnB0G,WAAY,CACVrJ,UAAWjC,EAAMiC,UACjB4I,eAAgBA,EACd,cAACU,GAAA,EAAD,CAAgBC,SAAS,QAAzB,SAAkCX,IAChC,KACJY,aAAclJ,EACZ,cAACgJ,GAAA,EAAD,CAAgBC,SAAS,MAAzB,SACE,cAAC,KAAD,CAAWpR,MAAM,QAAQyH,QAAS,CAAE5G,KAAM4G,EAAQ3D,UAElD,OAEF4M,GApBN,IAqBEY,SAtDe,SAACC,GAA0C,IAI1DC,EAHcD,EAAME,OAAhBzV,MAGmBzd,QAAQ,WAAY,IAAIA,QAAQ,YAAa,MAExE,GAAmB,QAAfqnB,EAAM/lB,KAAgB,CAExB,GAAI2xB,EAAe3zB,SAAS,KAAM,CAChC,IAAM6zB,EAAQF,EAAe30B,MAAM,KAC/B60B,EAAM,IAAMA,EAAM,GAAGv0B,OAAS,IAChCu0B,EAAM,GAAKA,EAAM,GAAG/0B,UAAU,EAAG,IAEnC60B,EAAiBE,EAAM,GAAK,IAAMA,EAAM,GAItCF,EAAeG,WAAW,OAC5BH,EAAiBA,EAAejzB,QAAQ,cAAe,MAAMA,QAAQ,UAAW,QAGlFgzB,EAAME,OAAOzV,MAAQwV,EAGvBd,EAAMY,SAASC,GAEX3L,EAAM0L,UACR1L,EAAM0L,SAASC,IA4Bb1xB,KAAM+lB,EAAM/lB,KACZ+xB,MAAOhM,EAAMiM,YACbC,SAAUlM,EAAMkM,SAChBC,UAAWnM,EAAMmM,UACjBC,KAAMpM,EAAMoM,KACZ5B,MAAOxK,EAAMwK,SAEdjI,GAAYyI,EAAKE,OAAOJ,EAAMvyB,OAC7B,cAAC6pB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ5f,MAA/B,SAAuC+oB,EAAKE,OAAOJ,EAAMvyB,MAAO8J,iBCtFlE8d,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXgM,cAAe,CACbb,SAAU,YAEZc,UAAW,CACTlR,QAAS,SACToQ,SAAU,WACVe,MAAO,WACPvP,IAAK,MACLuC,UAAW,mBACX,UAAW,CACTrE,aAAc,QAGlBsR,eAAe,cACbpR,QAAS,SACToQ,SAAU,WACVe,MAAO,UACPvP,IAAK,MACLuC,UAAW,mBACX,UAAW,CACTrE,aAAc,QAEfvC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B3D,IAAK,aAkDEyP,OArCf,YAKwB,IAAD,IAJrBC,iBAIqB,MAJT,WAIS,EAHrBT,EAGqB,EAHrBA,YACAU,EAEqB,EAFrBA,YACAC,EACqB,EADrBA,aAEM/K,EAAU1B,KADK,EAEmB0M,oBAAkB,GAFrC,oBAEdC,EAFc,KAEAC,EAFA,OAGCC,aAASN,GAHV,oBAGPO,GAHO,WASb7W,EAA0B6W,EAA1B7W,MAAO6U,EAAmBgC,EAAnBhC,QAAShpB,EAAUgrB,EAAVhrB,MAExB,OACE,sBAAKggB,UAAWJ,EAAQwK,cAAxB,UACE,cAAC,KAAD,CACEpK,UAAW0K,GAAe,WAC1Bp0B,KAAMm0B,EACNQ,UAAWtC,GACX3wB,KAAM6yB,EAAe,OAAS,WAC9Bb,YAAaA,GAAe,gBAC5B7V,MAAOA,EACP6U,QAASA,IAEX,cAACkC,GAAA,EAAD,CACElL,UAAS,UAAKhgB,GAASgpB,EAAUpJ,EAAQ2K,eAAiB3K,EAAQyK,UAAzD,YAAsEM,GAC/E7J,QAnB2B,WAC/BgK,GAAgB,SAACK,GAAD,OAAWA,MAgBzB,SAIGN,EAAe,cAAC,GAAD,IAAmB,cAAC,GAAD,UCzErC3M,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXgN,aAAa,cACX9Q,MAAO,cACPlB,SAAU,SACT1C,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,SACT0F,aAAc,UACd9C,YAAa,cAwBNsP,OAlBf,WACE,IAAMtK,EAAWM,eACXzB,EAAU1B,KACVxH,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEtD,OACE,cAACmC,GAAA,EAAD,CACE1I,MAAM,YACNiI,QAAQ,WACRU,QAAS,kBAAMC,GAAU,IACzBf,UAAWJ,EAAQwL,aAJrB,SAMGE,EAAW,8CAAe,Y,+DCd3BpN,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXmN,YAAa,CACXjN,QAAS,OACTK,WAAY,SACZrE,MAAO,OACPmE,eAAgB,iBAElB+M,4BAA6B,CAC3B/M,eAAgB,gBAChBnE,MAAO,QAETmR,WAAW,cACTnN,QAAS,OACTK,WAAY,SACZ+M,aAAc,OACdlN,IAAK,SACL,OAAQ,CACNpG,WAAY,MAEb1B,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPoR,aAAc,SACd,OAAQ,CAAE7O,SAAU,QAASvC,MAAO,iBAGxCqR,SAAU,CACRxT,MAAOpB,KAAOM,UACdO,SAAU,SACV0C,MAAO,UACPC,OAAQ,WAEVqR,eAAe,gBACZlV,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BF,IAAK,SACLD,cAAe,SACfI,WAAY,eAGhBkN,aAAc,CACZjU,SAAU,WACVQ,WAAYze,OAAOod,KAAOsB,mBAE5ByT,UAAW,CACTlU,SAAU,UACVO,MAAOpB,KAAOM,UACdkD,OAAQ,aAEVwR,QAAS,CACPxR,OAAQ,UACRD,MAAO,MACPV,gBAAiB7C,KAAOM,UACxB6C,QAAS,OAEX8R,gBAAiB,CACf1N,QAAS,OACTE,IAAK,QAEP4M,aAAc,CACZ9Q,MAAO,cACPlB,SAAU,SAEZ6S,SAAU,CACRrU,SAAU,YACVO,MAAOpB,KAAOM,WAEhB6U,aAAc,CACZ5R,MAAO,MACPV,gBAAiB7C,KAAOM,UACxB6C,QAAS,YAiFAiS,OAhEf,YAUsB,IAAD,EATnB3M,EASmB,EATnBA,MACA4M,EAQmB,EARnBA,eACAzO,EAOmB,EAPnBA,QACAgC,EAMmB,EANnBA,SACA0M,EAKmB,EALnBA,OACAC,EAImB,EAJnBA,iBACAC,EAGmB,EAHnBA,QACAC,EAEmB,EAFnBA,gBACA52B,EACmB,EADnBA,KAEMgqB,EAAU1B,KAEVuO,EAAgBC,cAAI,oBACvB9M,EAAQ2L,aAAc,GADC,eAEvB3L,EAAQ4L,4BAA8BgB,GAAmB7M,GAFlC,eAGvBC,EAAQgM,eAAiBjM,GAHF,IAM1B,OACE,sBAAKK,UAAWyM,EAAhB,UACE,sBAAKzM,UAAWJ,EAAQ6L,WAAxB,UACE,cAACtL,GAAA,EAAD,CAAYC,QAAQ,KAApB,SAA0BZ,IACzB7B,GACC,cAACgP,GAAA,EAAD,CAASnN,MAAO7B,EAASiP,sBAAoB,EAA7C,SACE,cAAC,KAAD,CAAiB5M,UAAWJ,EAAQ+L,aAGvC/1B,GACC,qCACE,cAACi3B,GAAA,EAAD,CAASC,YAAY,WAAWC,UAAQ,EAAC/M,UAAWJ,EAAQsM,eAC5D,cAAC/L,GAAA,EAAD,CAAYH,UAAWJ,EAAQqM,SAA/B,wBAAkDr2B,EAAlD,cAGgB,OAAnBw2B,QAA8Cj0B,IAAnBi0B,GAC1B,qCACE,qBAAKpM,UAAWJ,EAAQmM,UACxB,eAAC5L,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAWJ,EAAQkM,UAAnD,UACGM,EADH,YAC+C,IAAnBA,EAAuB,IAAM,YAK/D,sBAAKpM,UAAS,UAAKL,GAAY6M,GAAmBH,EAASzM,EAAQoM,gBAAkB,IAArF,UACGQ,GAAmB,cAAC,GAAD,IACnBH,EACC,cAACxL,GAAA,EAAD,CACE7oB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACRJ,UAAWJ,EAAQiM,aACnB9C,KAAMsD,EACNpC,SAAUsC,EANZ,SAQGA,EAAU,cAACS,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAemU,GAAoB,oBAGlF3M,SCrJJzB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXhB,OAAO,cACLhE,SAAU,QACVC,UAAW,WACV3C,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,iBAsCPqO,OAxBf,YAA2F,IAAnEX,EAAkE,EAAlEA,QAASF,EAAyD,EAAzDA,OAAQrM,EAAiD,EAAjDA,UAAW+J,EAAsC,EAAtCA,MAAOE,EAA+B,EAA/BA,SACnDrK,EAAU1B,KACVxH,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEtD,OACE,cAACmC,GAAA,EAAD,CACE7oB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACR2I,KAAMsD,EACNc,UAAW7B,EACXtL,UAAS,UAAKJ,EAAQxC,OAAb,YAAuB4C,GAChCiK,SAAUA,GAAYsC,EAPxB,SASGA,EACC,cAACS,GAAA,EAAD,CAAkBC,KAAM,GAAIG,UAAW,EAAGjV,MAAM,YAD1C,UAGH4R,GAAS,sB,gEC5BPsD,GAAc,CACzBtvB,M,6CACAC,c,6CACAC,qB,6CACAI,mB,6CACAH,a,6CACAovB,iB,6CACAlvB,iB,6CACAmvB,W,4CACAC,c,6CACAjvB,kB,6CACAkvB,uB,6CACAjvB,mB,6CACAkvB,oB,6CACAC,W,4FAGF,6BAAA9xB,EAAA,6DAAuB0H,EAAvB,EAAuBA,KAAvB,SACe/F,GAAI,UAAmBM,GAAS,OAAayF,GACvDtH,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA6B4tB,GAA7B,SAAA/xB,EAAA,sEACe2B,GAAI,UAAYM,GAAS,eAAqB8vB,GACxD3xB,MAAK,SAACF,GACL,OAAOA,EAASQ,cAEjBwD,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,+BAAAnE,EAAA,6DACEsW,EADF,EACEA,GACA0b,EAFF,EAEEA,MAFF,SAIen0B,GAAG,UACXoE,GAAS,qBADE,eAC6BqU,EAD7B,kBACyC0b,IAEtD5xB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAXZ,oF,oEAeA,+BAAAnE,EAAA,6DAAoC2V,EAApC,EAAoCA,OAAQsc,EAA5C,EAA4CA,YAA5C,SACenwB,GAAG,UAAYG,GAAS,mBAArB,YAA+C0T,GAAU,CAAEsc,gBACxE7xB,MAAK,SAACF,GACL,OAAOA,EAASQ,cAEjBwD,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,6BAAAnE,EAAA,6DAA8B0H,EAA9B,EAA8BA,KAA9B,SACe/F,GAAI,UAAqBM,GAAS,cAAoByF,GAChEtH,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,+BAAAnE,EAAA,6DAAkC2V,EAAlC,EAAkCA,OAAQqc,EAA1C,EAA0CA,MAA1C,SACen0B,GAAG,UAAmBoE,GAAS,aAA5B,mBAAuD0T,EAAvD,kBAAuEqc,IACpF5xB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAgCpB,GAAhC,SAAA/C,EAAA,sEACe2B,GAAI,UAAcM,GAAS,kBAAwBc,GAC7D3C,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,sBAAAnE,EAAA,sEACenC,GAAG,UAAUoE,GAAS,UAChC7B,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA6B1B,GAA7B,SAAAzC,EAAA,sEACe8B,GAAG,UAAUG,GAAS,SAAeQ,GAC/CrC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAiC+tB,GAAjC,SAAAlyB,EAAA,sEACe8B,GAAG,UACXG,GAAS,kBADE,YACuBiwB,EAAyBvc,QAC9Duc,GAEC9xB,MAAK,SAACF,GACL,OAAOA,EAASQ,cAEjBwD,OAAM,SAACC,GACN,MAAMA,KATZ,oF,oEAaA,WAAsCkiB,GAAtC,SAAArmB,EAAA,sEACenC,GAAG,UAAaoE,GAAS,kBAAtB,kBAAqDokB,IAClEjmB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAkCwR,GAAlC,SAAA3V,EAAA,sEACe2B,GAAI,UAAYM,GAAS,oBAA0B,CAAE0T,WAC/DvV,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAmC+lB,GAAnC,SAAAlqB,EAAA,sEACenC,GAAG,UACXoE,GAAS,aADE,OACgBioB,EAAU,oBAAgBA,GAAe,KAEtE9pB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WAA0BwR,GAA1B,SAAA3V,EAAA,sEACe8B,GAAG,UAAYG,GAAS,OAArB,YAAmC0T,GAAU,IAC1DvV,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,sBCxGO,IAgBDqD,GAAY,iBAAyB,CACzCrL,KAAMpP,IAGFolC,GAAe,SAAC1vB,GAAD,MAAsC,CACzDtG,KAAMnP,EACNyV,YAGI2vB,GAAa,SAACjuB,GAAD,MAAsC,CACvDhI,KAAMlP,EACNkX,UAkCIyD,GAAmB,iBAAiC,CACxDzL,KAAMhP,IAGF0a,GAAuB,iBAAiC,CAC5D1L,KAAM/O,IAGFilC,GAAqB,SAACluB,GAAD,MAA8C,CACvEhI,KAAM9O,EACN8W,UAsBI4D,GAA0B,iBAAwC,CACtE5L,KAAM7O,IAGF0a,GAA8B,SAClC9H,GADkC,MAEG,CACrC/D,KAAM5O,EACN2S,aAGIoyB,GAA4B,SAACnuB,GAAD,MAAqD,CACrFhI,KAAM3O,EACN2W,UAoBI+D,GAAkB,iBAAgC,CACtD/L,KAAM1O,IAGF2a,GAAsB,SAACV,GAAD,MAAqD,CAC/EvL,KAAMzO,EACNga,SAGI6qB,GAAoB,SAACpuB,GAAD,MAA6C,CACrEhI,KAAMxO,EACNwW,UA6BImE,GAAqB,iBAAoC,CAC7DnM,KAAMvO,IAGF2a,GAA0B,iBAAoC,CAClEpM,KAAMtO,IAGF2kC,GAAwB,SAACruB,GAAD,MAAiD,CAC7EhI,KAAMrO,EACNqW,UAsCWutB,GAAa,kBAAM,SAAC/sB,GAG/B,OAFAA,EAASkE,MAEF2oB,GAAYE,aAAatxB,MAC9B,SAACF,GACCyE,EAAS8tB,GAAkBvyB,OAE7B,SAACiE,GACCQ,EAAS+tB,GAAgBvuB,SAKzB0E,GAAiB,iBAA8B,CACnD1M,KAAMjO,IAGFukC,GAAoB,SAAChwB,GAAD,MAA2C,CACnEtG,KAAMhO,EACNsU,YAGIiwB,GAAkB,SAACvuB,GAAD,MAA2C,CACjEhI,KAAM/N,EACN+V,UAoBI4E,GAAkB,iBAAiC,CACvD5M,KAAM9N,IAGF2a,GAAuB,SAACvG,GAAD,MAA8C,CACzEtG,KAAM7N,EACNmU,YAGIkwB,GAAqB,SAACxuB,GAAD,MAA8C,CACvEhI,KAAM5N,EACN4V,UAOWyuB,GACX,SAACV,GAAD,OACA,SAACvtB,GAGC,OAFAA,EAASuE,MAEFsoB,GAAY9uB,kBAAkBwvB,GAA0B9xB,MAC7D,SAACF,GACCyE,EAASwE,SAEX,SAAChF,GACCQ,EAASkuB,GAAuB1uB,SAKlC+E,GAAsB,iBAAqC,CAC/D/M,KAAM3N,IAGF2a,GAA2B,iBAAqC,CACpEhN,KAAM1N,IAGFokC,GAAyB,SAAC1uB,GAAD,MAAkD,CAC/EhI,KAAMzN,EACNyV,UAwBIkF,GAAuB,iBAAsC,CACjElN,KAAMxN,IAGF2a,GAA4B,iBAAsC,CACtEnN,KAAMvN,IAGFkkC,GAA0B,SAAC3uB,GAAD,MAAmD,CACjFhI,KAAMtN,EACNsV,UAsBIqF,GAA0B,iBAAuC,CACrErN,KAAM,8BAGF42B,GAA6B,SAAC7lB,GAAD,MAAsE,CACvG/Q,KAAM,gCACN+Q,MAAOA,IAGH8lB,GAA2B,SAAC7uB,GAAD,MAAoD,CACnFhI,KAAM,8BACNgI,UAOWxB,GAAqB,SAAC0jB,GACjC,OAAO,SAAC1hB,GAGN,OAFAA,EAASgF,MAEF6nB,GAAY7uB,mBAAmB0jB,GAAOjmB,MAC3C,SAACF,GACCyE,EAASiF,GAA0B1J,OAErC,SAACiE,GACCQ,EAASsuB,GAAwB9uB,SAM5BwF,GAAwB,iBAAgC,CACnExN,KAAM/M,KAGKwa,GAA4B,SAACspB,GAAD,MAAoD,CAC3F/2B,KAAM9M,GACN6jC,iBAGWD,GAA0B,SAAC9uB,GAAD,MAA6C,CAClFhI,KAAM7M,GACN6U,UAOW2tB,GAAa,SAACnc,GACzB,OAAO,SAAChR,GAGN,OAFAA,EAASmF,MAEF0nB,GAAYM,WAAWnc,GAAQvV,MACpC,SAACF,GACCyE,EAASoF,GAAkB7J,OAE7B,SAACiE,GACCQ,EAASwuB,GAAgBhvB,SAMpB2F,GAAgB,iBAA8B,CACzD3N,KAAMlN,KAGK8a,GAAoB,SAACqpB,GAAD,MAAkD,CACjFj3B,KAAMjN,GACNkkC,iBAGWD,GAAkB,SAAChvB,GAAD,MAA2C,CACxEhI,KAAMhN,GACNgV,UC5XakvB,OAhGf,YAA2F,IAAD,EAA1D9H,EAA0D,EAA1DA,KAAM+H,EAAoD,EAApDA,QAASv2B,EAA2C,EAA3CA,aACvC4H,EAAW4uB,cACXx6B,EAAWy6B,eACX3e,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAHmC,EAIpDka,oBAAkB,GAJkC,oBAIjF2E,EAJiF,KAIrEC,EAJqE,KAMlFC,EACkB,aAAtB76B,EAAS+H,WAA2B,UAAA+T,EAAKpS,eAAL,eAActG,QAASV,GAAao4B,aAEpEC,EAAc,WAClBR,GAAQ,IAiCV,OACE,eAACS,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASyH,EAAa9S,SAAS,KAAKmD,UAAU,yBAAlE,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAE1D,cAAC,KAAD,CACEG,cAAe,CAAE7M,gBAAiB,GAAIb,SAAU,GAAIK,eAAgB,IACpEsN,iBACEN,EAAwBlL,GAAQvB,qBAAuBuB,GAAQrB,yBAEjE8M,SAxCiB,SAACziB,EAAgB0iB,GACtC,GAAIvf,EAAKpS,QACP,IAAKmxB,GAAyB72B,EAAc,CAC1C,IAAMs3B,EAAuD,CAC3D1e,OAAQ5Y,EAAa4Y,OACrBsc,YAAavgB,EAAO6U,UAEtBoN,GAAc,GACdhvB,GD4UL2vB,EC5UiCD,ED6UlC,SAAC1vB,GAGC,OAFAA,EAAS0E,MAEFmoB,GAAYhvB,mBAAmB8xB,GAA2Bl0B,MAC/D,SAACF,GACCyE,EAAS2E,SAEX,SAACnF,GACCQ,EAASmuB,GAAwB3uB,cCpV5B,CACL,IAAM+tB,EAAqD,CACzDvc,OAAQd,EAAKpS,QAAQkT,OACrB0Q,MAAOxR,EAAKpS,QAAQ4jB,MACpBkO,YAAa7iB,EAAO0V,gBACpB6K,YAAavgB,EAAO6U,UAEtBoN,GAAc,GACdhvB,EAASiuB,GAAkBV,IDmUjC,IAACoC,GCjTG,SAOE,eAAC,KAAD,CAAMnQ,UAAU,OAAO7N,GAAG,iBAA1B,UACE,eAACke,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,UACE,cAACmH,GAAA,EAAD,CAAYC,QAAQ,KAApB,mCACCqP,GACC,cAAC,GAAD,CAAehF,UAAU,kBAAkBT,YAAY,yBAEzD,cAAC,GAAD,CAAeS,UAAU,WAAWT,YAAY,wBAChD,cAAC,GAAD,CAAeS,UAAU,iBAAiBT,YAAY,mCAExD,cAACsG,GAAA,EAAD,CAAe1Q,QAAS,CAAE5G,KAAM,kBAAhC,SACE,cAAC,GAAD,CACEgH,UAAU,oBACV+J,MAAM,0BACNwC,QAASgD,EACTlD,OAAO,qBAGX,cAAC,GAAD,CACEjF,KACEmI,IACC7e,EAAK1L,0BACmC,OAAvC0L,EAAKzL,+BACLyL,EAAKvL,2BACmC,OAAxCuL,EAAKtL,gCAET5J,QACEkV,EAAK1L,0BAA4B0L,EAAKvL,0BAClC,iDACAuL,EAAKzL,+BAAkCyL,EAAKtL,+BAElDkiB,YAlDS,WACjBkI,GAAc,IAEV9e,EAAK1L,0BAA4B0L,EAAKvL,4BACxCwqB,KA+CM33B,KACE0Y,EAAK1L,0BAA4B0L,EAAKvL,0BAA4BtO,GAAO4wB,QAAU5wB,GAAO05B,iBC2GzFC,OA/Lf,WAAoB,IAAD,IACX9Z,EAAQmJ,eACRkB,EAAWM,eACX7gB,EAAW4uB,cACXx6B,EAAWy6B,eACXoB,EAAY77B,EAAS+b,MACrB+f,EAAM,UAAG97B,EAAS+b,aAAZ,aAAG,EAAgB+f,OACzB93B,EAAY,OAAG63B,QAAH,IAAGA,OAAH,EAAGA,EAAW73B,aAPf,EAQe02B,aAAY,SAAC3e,GAAD,OAAsBA,KAA1DD,EARS,EAQTA,KAAM/R,EARG,EAQHA,cARG,EASuCisB,oBAAkB,GATzD,oBASV1iB,EATU,KASYyoB,EATZ,OAUuC/F,oBAAkB,GAVzD,oBAUVviB,EAVU,KAUYuoB,EAVZ,OAW+BhG,oBAAkB,GAXjD,oBAWVnnB,EAXU,KAWQotB,EAXR,OAYuBjG,oBAAkB,GAZzC,oBAYVkG,EAZU,KAYIC,EAZJ,KAcXC,GAAe,UAAAtgB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WACnDwa,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAoChDuS,EAAa,WACbr4B,GACFg4B,GAAwB,GACxBC,GAAoB,IAEpBF,GAAwB,GAE1BK,EAAejQ,EAAS,kBAAmB,CAAEpQ,MAAO,CAAE+f,OAAQA,KAAc3P,GAAU,IAGlF8K,EACJ,cAAC,GAAD,CACEQ,OAAO,mBACPE,QAASrkB,GAAwBG,EACjC0hB,MACEnxB,EAAY,kBAAe0yB,EAAuB,GAAZ,WAA1B,gBAAuDA,EAA2B,GAAhB,iBAKpF,OACE,sBAAKtL,UAAU,2BAAf,UACE,eAAC,GAAD,CACER,MAAO5mB,EAAe,qBAAuB,oBAC7C4zB,iBAAkBlB,IAAa0F,EAFjC,UAIGA,GACC,cAACnQ,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,EAAS,kBAAmB,CAAEpQ,MAAO,CAAE+f,OAAQA,MAHhE,qBAQApF,GAAYO,KAEhB,cAACqF,GAAA,EAAD,CAAOC,UAAW,EAAlB,SACE,cAAC,KAAD,CACErB,cAAe,CACbre,MAAO7Y,EAAeA,EAAa6Y,MAAQ,GAC3CC,SAAU9Y,EAAeA,EAAa8Y,SAAW,GACjDwQ,MAAOtpB,EAAeA,EAAaspB,MAAQ,GAC3CE,SAAUxpB,EAAe,gBAAkB,GAC3C6pB,eAAgB7pB,EAAe,gBAAkB,IAEnDm3B,iBAAkBxL,GAAQnB,WAC1B4M,SAjFmB,SAACziB,EAAgB0iB,GAC1C,GAAIvf,EAAKpS,QACP,GAAI1F,EAAc,CAAC,IAAD,IAChBg4B,GAAwB,GAExB,IAAM3K,EAAuD,CAC3DzU,OAAQ5Y,EAAa4Y,OACrB0Q,MAAOtpB,EAAaspB,MACpB/rB,YAAY,UAAAua,EAAKpS,eAAL,mBAAcM,gBAAd,eAAwBuT,MAAO,EAC3CV,MAAOlE,EAAOkE,MACdC,SAAUnE,EAAOmE,SACjBkR,YAAahqB,EAAagqB,YAC1B5qB,KAAM,GAGRwI,EdmD0B,SAACylB,GACjC,OAAO,SAACzlB,GAGN,OAFAA,EAAS6H,MAEFmd,GAAqBI,mBAAmBK,GAA2BhqB,MACxE,SAACF,GACCyE,EAAS8H,GAA0BvM,OAErC,SAACiE,GACCQ,EAAS8lB,GAAyBtmB,Qc5DzB4lB,CAAmBK,QACvB,CAAC,IAAD,IACL0K,GAAwB,GAExB,IAAM3K,EAAuD,CAC3D3U,QAAQ,EACRlb,YAAY,UAAAua,EAAKpS,eAAL,mBAAcM,gBAAd,eAAwBuT,MAAO,EAC3CV,MAAOlE,EAAOkE,MACdC,SAAUnE,EAAOmE,SACjBwQ,MAAO3U,EAAO2U,MACdE,SAAU7U,EAAO6U,SACjBQ,YAAa,KAGfpiB,EdI0B,SAACwlB,GACjC,OAAO,SAACxlB,GAGN,OAFAA,EAAS0H,MAEFsd,GAAqBG,mBAAmBK,GAA2B/pB,MACxE,SAACF,GACCyE,EAAS2H,GAA0BpM,OAErC,SAACiE,GACCQ,EAAS6lB,GAAyBrmB,QcbzB2lB,CAAmBK,MA2C5B,SAWE,eAAC,KAAD,CAAMhG,UAAU,OAAO7N,GAAG,mBAA1B,UACE,cAAC,KAAD,CACE6N,UAAU,iBACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,YAEd,cAAC,KAAD,CACEhK,UAAU,WACV1pB,KAAK,WACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,cAEd,cAAC,KAAD,CACEhK,UAAU,WACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,wBACZC,WAAYrxB,IAEbA,EACC,qBAAKonB,UAAU,OAAf,SACE,cAACoR,GAAA,EAAD,CAAMtQ,QAAS,kBAAMiQ,GAAgB,IAArC,SACE,0DAIJ,qCACE,cAAC,GAAD,CAAetG,UAAU,aACzB,cAAC,GAAD,CAAeA,UAAU,iBAAiBT,YAAY,6BAG1D,qBAAKhK,UAAU,mBAAf,SACGsL,GACC,qCACE,cAAC,GAAD,IACCO,OAIP,cAAC,GAAD,CACEzE,KACElf,IACCvJ,EAAcwJ,2BACoC,OAAjDxJ,EAAcyJ,gCAElB5M,QACEmD,EAAcwJ,0BACV,2CACAxJ,EAAcyJ,+BAEpBkf,YAAa2J,EACbj5B,KAAM2G,EAAcwJ,0BAA4BtR,GAAO4wB,QAAU5wB,GAAO05B,QAE1E,cAAC,GAAD,CACEnJ,KACE/e,IACC1J,EAAc2J,2BACoC,OAAjD3J,EAAc4J,gCAElB/M,QACEmD,EAAc2J,0BACV,gDACA3J,EAAc4J,+BAEpB+e,YAAa2J,EACbj5B,KAAM2G,EAAc2J,0BAA4BzR,GAAO4wB,QAAU5wB,GAAO05B,QAE1E,cAAC,GAAD,CACEnJ,KACE3jB,IAAqBiN,EAAKhN,sBAA2D,OAAnCgN,EAAK/M,2BAEzDnI,QACEkV,EAAKhN,qBACD,iEACA,qEAEN4jB,YAAa2J,EACbj5B,KAAM0Y,EAAKhN,qBAAuB7M,GAAO4wB,QAAU5wB,GAAO05B,QAE5D,cAAC,GAAD,CAAsBnJ,KAAM0J,EAAc3B,QAAS4B,EAAiBn4B,aAAcA,e,WCzN/E,OAA0B,iC,qBCc1By4B,OAXf,SAAsBtT,GACpB,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,aACE,sBACE4I,EAAE,ijHACFvM,KAAMwM,KAAUvP,gBCFlB6G,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXhB,OAAQ,CACN7F,WAAY,OACZoC,OAAQ,OACR2E,QAAS,OACTK,WAAY,SACZxF,QAAS,EACT,UAAW,CACThB,MAAOmZ,KAAOC,cACdlV,OAAQ,UACRmV,WAAY,OACZ,SAAU,CACRpX,KAAMkX,KAAOC,iBAInBE,SAAU,CACR,SAAU,CACRrX,KAAMkX,KAAOC,gBAGjBG,KAAM,CACJpW,UAAW,GACX,sBAAuB,CACrBhB,MAAO,QACPnC,MAAOmZ,KAAOja,UACd6P,OAAQ,WACR/N,QAAS,WACTsF,eAAgB,SAChB,UAAW,CACT7E,gBAAiB,eAEnB,UAAW,CACTA,gBAAiB0X,KAAOrX,8BA0DnB0X,OA/Cf,YAA0D,IAAvCC,EAAsC,EAAtCA,qBACXhS,EAAU1B,KACV6C,EAAWM,eAFsC,EAGvBuJ,mBAA6B,MAHN,oBAGhDiH,EAHgD,KAGtCC,EAHsC,KAajDC,EAAe,SAACC,GACpBjR,EAASiR,GACTF,EAAY,OAGd,OACE,qCACE,wBAAQhR,QAfQ,SAAC4I,GACnBoI,EAAYpI,EAAMuI,gBAccjS,UAAS,UAAKJ,EAAQxC,QAApD,SACE,cAAC,GAAD,CAAc4C,UAAS,UAAkB,OAAb6R,EAAoBjS,EAAQ6R,SAAW,UAErE,eAACS,GAAA,EAAD,CACEC,aAAW,EACXN,SAAUA,EACV7R,UAAWJ,EAAQ8R,KACnBvJ,aAAc,CAAEE,WAAY,QAASD,SAAU,UAC/CgK,gBAAiB,CACf/J,WAAY,QACZD,SAAU,OAEZiK,mBAAoB,KACpBjL,KAAMkL,QAAQT,GACd3J,QAzBc,WAClB4J,EAAY,OAaV,UAaE,cAACS,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,cAAtC,qBACA,cAACQ,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,mBAAtC,8BACA,cAACQ,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,WAAtC,2BACCH,GACC,cAACW,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,oBAAtC,mC,sBClEKS,OAtBf,YAAmD,IAAD,IAA/Bra,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAClBtJ,EAAQmJ,eAId,OAHA1H,EAAK,UAAGA,SAAH,QAAYzB,EAAME,QAAQ6b,KAAK,KACpCzS,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,07IACFvM,KAAMjC,OCHCua,OAbf,SAAmB3U,GACjB,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYC,MAAM,8BAAiC3I,GAAvF,aACE,sBACE4I,EAAE,w9CACFvM,KAAMwM,KAAUvP,UAChBsb,OAAO,UACPC,YAAY,YCILC,OAXf,SAAkB9U,GAChB,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,aACE,sBACE4I,EAAE,m/DACFvM,KAAMwM,KAAUvP,gBCcTyb,OAnBf,SAAuB/U,GACrB,OACE,gDAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,cACE,sBACE4I,EAAE,u+CACFvM,KAAMwM,KAAUvP,YAElB,sBACEsP,EAAE,y0CACFvM,KAAMwM,KAAUvP,YAElB,sBACEsP,EAAE,8/CACFvM,KAAMwM,KAAUvP,iBCMT0b,OAnBf,SAAoBhV,GAClB,OACE,gDAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,cACE,sBACE4I,EAAE,m0CACFvM,KAAMwM,KAAUvP,YAElB,sBACEsP,EAAE,y7CACFvM,KAAMwM,KAAUvP,YAElB,sBACEsP,EAAE,yxBACFvM,KAAMwM,KAAUvP,iBCTX2b,GAAU,CACrB,CACE18B,KAAM,UACN2lB,KAAM,cAAC,GAAD,CAAW+D,UAAU,SAC3BiT,MAAO,aACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAa67B,MAAO77B,GAAao4B,eAE3C,CACEp5B,KAAM,iBACN2lB,KAAM,cAAC,GAAD,CAAe+D,UAAU,SAC/BiT,MAAO,SACPG,eAAgB,kBAChBjf,MAAO,EACP+e,MAAO,CAAC57B,GAAa67B,MAAO77B,GAAao4B,eAE3C,CACEp5B,KAAM,iBACN2lB,KAAM,cAAC,GAAD,CAAY+D,UAAU,SAC5BiT,MAAO,iBACPG,eAAgB,gBAChBjf,MAAO,EACP+e,MAAO,CAAC57B,GAAa67B,MAAO77B,GAAao4B,eAE3C,CACEp5B,KAAM,QACN2lB,KAAM,cAAC,GAAD,CAAU+D,UAAU,SAC1BiT,MAAO,YACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAawZ,WAAYxZ,GAAa67B,MAAO77B,GAAao4B,eAEpE,CACEp5B,KAAM,WACN2lB,KAAM,cAAC,GAAD,CAAS+D,UAAU,SACzBiT,MAAO,kBACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAawZ,aAEvB,CACExa,KAAM,iBACN2lB,KAAM,cAAC,GAAD,CAAS+D,UAAU,SACzBiT,MAAO,iBACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAawZ,aAEvB,CACExa,KAAM,SACN2lB,KAAM,cAAC,GAAD,CAAU+D,UAAU,SAC1BiT,MAAO,UACP9e,MAAO,GACP+e,MAAO,CAAC57B,GAAawZ,WAAYxZ,GAAa67B,MAAO77B,GAAao4B,gBAIzD2D,GAAkB,CAC7B,CACE/8B,KAAM,UACN28B,MAAO,YACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAa67B,QAEvB,CACE78B,KAAM,mBACN28B,MAAO,iBACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAa67B,QAEvB,CACE78B,KAAM,gBACN28B,MAAO,SACP9e,MAAO,EACP+e,MAAO,CAAC57B,GAAa67B,SAIZG,GAAqB,SAACC,GACjC,OAAOP,GAAQphB,QAAO,SAAC4hB,GAAO,IAAD,EAC3B,OAAID,IAAI,UAAIC,EAAEN,aAAN,aAAI,EAASl9B,SAASu9B,IACrBC,EAEF,SCjFX,SAASC,GAAa32B,EAAc42B,GAElC,GAAI52B,EAAK9G,SAAS,YAChB,MAAkB,eAAd09B,EACK,EAEA,EAIX,OAAQ52B,GACN,IAAK,aACH,OAAO,EAET,IAAK,SAGL,IAAK,kBACH,OAAO,EAET,IAAK,iBAGL,IAAK,gBAGL,IAAK,oBAGL,IAAK,oBACH,OAAO,EAET,IAAK,kBACH,OAAO,EAET,IAAK,iBACH,OAAO,EAET,IAAK,UAGL,QACE,OAAO,IAgDE62B,OAzCf,YAA6D,IAAD,EAA/BJ,EAA+B,EAA/BA,KACrBxS,EAAWM,eACXzsB,EAAWy6B,eACXqE,GAAY,UAAA9+B,EAAS+b,aAAT,eAAgB1X,OAAQ,YAHgB,EAIhC2xB,mBAAiB6I,GAAa7+B,EAAS+H,WAJP,oBAInDwX,EAJmD,KAI5Cyf,EAJ4C,KAKpDZ,EAAUM,GAAmBC,GASnC,OAJAM,qBAAU,WACRD,EAASH,GAAa7+B,EAAS+H,SAAU+2B,MACxC,CAACA,EAAW9+B,EAAS+H,WAGtB,qBAAKqjB,UAAU,iBAAf,SACE,cAAC8T,GAAA,EAAD,CAAM3f,MAAOA,EAAOsV,SAVH,SAACC,EAA8BqK,GAClDH,EAASG,IASqCnU,QAAS,CAAEoU,UAAW,aAAlE,SACGhB,GACCA,EAAQzhB,KAAI,SAACiiB,EAAGS,GACd,OACE,cAACC,GAAA,EAAD,CAEEC,eAAe,EACflJ,UAAU,OACVlB,MACE,yBAAQ/J,UAAU,SAAlB,UACGwT,EAAEvX,KACFuX,EAAEl9B,QAGPwqB,QAAS,kBAAMC,EAASyS,EAAEP,QAC1B9e,MAAOqf,EAAErf,MACTyL,QAAS,CAAE6R,SAAU,kBAAmBzY,KAAiB,WAAXwa,EAAEl9B,KAAoB,gBAAkB,KAXjF29B,WChBNG,OAzCGC,YAAQ,MAJC,SAAC7zB,GAAD,MAA0D,CACnF8zB,OAAQ,kBAAM9zB,Eb2FgC,CAC9CxI,KAAMjP,QahDOqrC,EApCf,YAA6D,IAArCE,EAAoC,EAApCA,OAAQlN,EAA4B,EAA5BA,KAAM+H,EAAsB,EAAtBA,QAC9BpO,EAAWM,eAEXkT,EAAoB,WACxBpF,GAAQ,IAYV,OACE,eAACS,GAAA,EAAD,CAAQ5P,UAAU,SAASmN,WAAS,EAACtQ,SAAS,KAAKuK,KAAMA,EAAMc,QAASqM,EAAxE,UACE,cAAC1E,GAAA,EAAD,CAAa7P,UAAU,QAAvB,SACE,cAAC,KAAD,CAAWA,UAAU,aAAac,QAASyT,MAE7C,eAAClE,GAAA,EAAD,CAAerQ,UAAU,UAAzB,UACE,sBAAMA,UAAU,cAAhB,8DACA,sBAAKA,UAAU,UAAf,UACE,cAACa,GAAA,EAAD,CAAQb,UAAU,gBAAgB7H,MAAM,YAAYiI,QAAQ,WAAWU,QAASyT,EAAhF,sBAGA,cAAC1T,GAAA,EAAD,CAAQb,UAAU,sBAAsB7H,MAAM,UAAUiI,QAAQ,YAAYU,QApB9D,WACpBqO,GAAQ,GACRmF,IACAvT,EAAS,WAEO,IAAIrlB,MACZgB,OAAO,UAcT,8C,gCCrCK83B,OAZf,WACE,OACE,qBAAKla,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACExM,QAAQ,MACRyM,EAAE,uzCACFvM,KAAMwM,KAAU/P,aCET4d,OAVf,WACE,OACE,sBAAKna,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBAAMC,EAAE,oBAAoBgM,OAAO,UAAUC,YAAY,IAAI8B,cAAc,UAC3E,sBAAM/N,EAAE,cAAcgM,OAAO,UAAUC,YAAY,IAAI8B,cAAc,UACrE,sBAAM/N,EAAE,oBAAoBgM,OAAO,UAAUC,YAAY,IAAI8B,cAAc,cCiFlEC,OAtFf,WACE,OACE,sBAAKra,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,mBAAG9U,OAAO,4BAAV,SACE,sBACE+U,EAAE,27CACFvM,KAAK,cAGT,mBAAGxI,OAAO,4BAAV,SACE,sBACE+U,EAAE,q8CACFvM,KAAK,cAGT,sBACEuM,EAAE,q5CACFvM,KAAK,YAEP,sBACEuM,EAAE,yuBACFvM,KAAK,YAEP,sBACEuM,EAAE,4hBACFvM,KAAK,YAEP,sBACEuM,EAAE,mcACFvM,KAAK,YAEP,sBAAMuM,EAAE,iEAAiEvM,KAAK,YAC9E,sBACEuM,EAAE,mpCACFvM,KAAK,YAEP,sBACEuM,EAAE,6eACFvM,KAAK,YAEP,sBACEuM,EAAE,y/DACFvM,KAAK,YAEP,sBACEuM,EAAE,2iBACFvM,KAAK,YAEP,sBACEuM,EAAE,qzBACFvM,KAAK,YAEP,iCACE,yBACEjI,GAAG,sBACHyiB,EAAE,WACFC,EAAE,WACFva,MAAM,UACNC,OAAO,UACPua,YAAY,iBACZC,0BAA0B,OAP5B,UASE,yBAASC,aAAa,IAAIC,OAAO,uBACjC,gCAAgBC,GAAG,qBAAqBC,aAAa,YACrD,6BAAaC,IAAI,cAAcC,SAAS,KAAKJ,OAAO,qCACpD,yBAASK,KAAK,SAASJ,GAAG,gBAAgBE,IAAI,mCAAmCH,OAAO,aAE1F,yBACE9iB,GAAG,sBACHyiB,EAAE,WACFC,EAAE,WACFva,MAAM,UACNC,OAAO,SACPua,YAAY,iBACZC,0BAA0B,OAP5B,UASE,yBAASC,aAAa,IAAIC,OAAO,uBACjC,gCAAgBC,GAAG,qBAAqBC,aAAa,YACrD,6BAAaC,IAAI,cAAcC,SAAS,KAAKJ,OAAO,qCACpD,yBAASK,KAAK,SAASJ,GAAG,gBAAgBE,IAAI,mCAAmCH,OAAO,oBCjEnFM,OAXf,SAAkBxX,GAChB,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,aACE,sBACE4I,EAAE,m/BACFvM,KAAMwM,KAAUvP,gBCYTme,OAlBf,WACE,OACE,qBACElb,MAAM,IACNC,OAAO,KACPkM,QAAQ,WACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAU,oBANZ,SAQE,sBACE2G,EAAE,6IACFvM,KAAMwM,KAAU6O,eCqCTC,OApCf,YASyB,IARvB54B,EAQsB,EARtBA,KACA64B,EAOsB,EAPtBA,cACAC,EAMsB,EANtBA,oBACA3Z,EAKsB,EALtBA,KACAuD,EAIsB,EAJtBA,MACAqW,EAGsB,EAHtBA,SACAC,EAEsB,EAFtBA,mBACA9V,EACsB,EADtBA,UAEMprB,EAAWy6B,eAEX0G,EAAanhC,EAAS+H,WAAaG,GAAQlI,EAAS+H,WAAag5B,GAAiBE,EAOxF,OACE,6BACE,eAAC,KAAD,CACE7V,UAAS,UAAe,WAAVR,EAAqB,gBAAkB,GAA5C,aACPuW,EAAa,kBAAoB,SAD1B,YAEL/V,GACJ9mB,GAAI4D,EACJgkB,QAZc,WAClBgV,EAAmBh5B,GACnB84B,GAAoB,IAKlB,UAOGG,GAAc,cAAC,GAAD,IACd9Z,GAAc,qBAAK+D,UAAU,YAC7BR,QC/BMwW,OAXf,SAAiBjY,GACf,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,aACE,sBACE4I,EAAE,moCACFvM,KAAMwM,KAAUvP,gBCqDT4e,OA7Cf,YAKgC,IAJ9BL,EAI6B,EAJ7BA,oBACAM,EAG6B,EAH7BA,gBACAC,EAE6B,EAF7BA,mBACAL,EAC6B,EAD7BA,mBAEMlhC,EAAWy6B,eACX+G,EAAiB9G,aACrB,SAAC3e,GAAD,aAAsB,UAAAA,EAAMD,KAAKpS,eAAX,eAAoBtG,QAASV,GAAao4B,gBAG5D5yB,EAAOlI,EAAS+H,SAChB05B,EAA6B,aAATv5B,GAAgC,qBAATA,EAMjD,OAAQs5B,EASN,qCACE,qBAAIpW,UAAS,iBAAYqW,GAAqB,2BAA6BvV,QAdzD,WACpBqV,GAAoBD,IAalB,UACE,cAAC,GAAD,CAASlW,UAAU,SADrB,aAEE,cAAC,KAAD,CAAgBA,UAAS,sBAAiBkW,EAAkB,WAAa,SAE3E,cAACI,GAAA,EAAD,CAAUpB,GAAIgB,EAAiBK,QAAQ,OAAOC,eAAa,EAA3D,SACE,cAAC,GAAD,CACE15B,KAAK,mBACL84B,oBAAqBA,EACrBpW,MAAM,wBACNQ,UAAU,aACV8V,mBAAoBA,SAnB1B,cAAC,GAAD,CACEh5B,KAAK,WACL84B,oBAAqBA,EACrB3Z,KAAM,cAAC,GAAD,CAAS+D,UAAU,SACzBR,MAAM,YACNsW,mBAAoBA,KC2HXW,OA3If,YAK2B,IAAD,EAJxBC,EAIwB,EAJxBA,iBACAnD,EAGwB,EAHxBA,KACAqC,EAEwB,EAFxBA,oBACAhE,EACwB,EADxBA,qBAEMh9B,EAAWy6B,eACX2D,EAAUM,GAAmBC,GAC7BG,GAAY,UAAA9+B,EAAS+b,aAAT,eAAgB1X,OAAQ,YACpCm9B,EAAiB9G,aACrB,SAAC3e,GAAD,aAAsB,UAAAA,EAAMD,KAAKpS,eAAX,eAAoBtG,QAASV,GAAao4B,gBAL1C,EAOA9E,oBAAkB,GAPlB,oBAOjBxD,EAPiB,KAOX+H,EAPW,OAQwBvE,oBAAkB,GAR1C,oBAQjB+L,EARiB,KAQCC,EARD,OASsBhM,oBAAkB,GATxC,oBASjBsL,EATiB,KASAC,EATA,KAWlBU,EXmDyB,SAAC/5B,EAAc42B,GAC9C,OAAI52B,EAAK9G,SAAS,YACK,eAAd09B,EAA6B,EAAI,EAEnCV,GAAQrd,WAAU,SAAC6d,GAAD,OAAOA,EAAEP,QAAUn2B,KWvD1Bg6B,CAAkBliC,EAAS+H,SAAU+2B,GACjDqD,EAAoB1D,GAAgBv9B,MAAK,SAACk8B,GAAD,OAAYp9B,EAAS+H,SAAS3G,SAASg8B,EAAOiB,UAMvF6C,EAAqB,SAACh5B,GACFu2B,GAAgBv9B,MAAK,SAACk8B,GAAD,OAAYA,EAAOiB,QAAUn2B,MAExE85B,GAAoB,GAGT,qBAAT95B,GACFq5B,GAAmB,IAIvB,OACE,qCACGO,GAAoB,qBAAK1W,UAAU,8BACpC,sBAAKA,UAAU,oBAAf,WACI0W,GACA,wBAAQ5V,QAAS,kBAAM8U,GAAoB,IAAO5V,UAAU,oBAA5D,SACE,cAAC,GAAD,MAGJ,cAACiI,GAAA,EAAD,CAAOsO,QAAS,IAAKS,UAAU,QAAQ9B,GAAIwB,EAA3C,SACE,sBAAK1W,UAAU,uBAAf,UACE,sBAAKA,UAAU,oBAAf,UACE,cAAC,GAAD,IACA,wBAAQc,QAAS,kBAAM8U,GAAoB,IAA3C,SACE,cAAC,GAAD,SAGJ,qBAAI5V,UAAU,qBAAd,UACE,cAAC,GAAD,CACE4V,oBAAqBA,EACrBE,mBAAoBA,EACpBI,gBAAiBA,EACjBC,mBAAoBA,IAEtB,oBAAInW,UAAU,YACbgT,EAAQzhB,KAAI,SAACygB,EAAQiC,GACpB,OACE,cAAC,GAAD,CAEEn3B,KAAMk1B,EAAOiB,MACb0C,cAAe3D,EAAOoB,eACtBwC,oBAAqBA,EACrB3Z,KAAM+V,EAAO/V,KACbuD,MAAOwS,EAAO17B,KACdu/B,SAAUgB,IAAc5C,EACxB6B,mBAAoBA,GAPf7B,MAWX,oBAAIjU,UAAU,aACZoW,GACA,qCACE,6BACE,qBAAIpW,UAAS,UAAK+W,GAAqB,2BAAvC,UACE,qBAAI/W,UAAU,SAASc,QA3DpB,WACrB8V,GAAqBD,IA0DH,UACE,cAAC,GAAD,CAAU3W,UAAU,SADtB,WAEE,cAAC,KAAD,CAAgBA,UAAS,sBAAiB2W,EAAmB,WAAa,SAE5E,eAACL,GAAA,EAAD,CAAUpB,GAAIyB,EAAkBJ,QAAQ,OAAOC,eAAa,EAA5D,UACGjD,IAASj8B,GAAa67B,OACrBE,GAAgB9hB,KAAI,SAACygB,EAAQiC,GAC3B,OACE,cAAC,GAAD,CAEEn3B,KAAMk1B,EAAOiB,MACb2C,oBAAqBA,EACrBpW,MAAOwS,EAAO17B,KACd0pB,UAAU,aACV8V,mBAAoBA,GALf7B,MASZrC,GACC,cAAC,GAAD,CAEE90B,KAAK,kBACL84B,oBAAqBA,EACrBpW,MAAM,iBACNQ,UAAU,aACV8V,mBAAoBA,GALhB,0BAWd,oBAAI9V,UAAU,eAGlB,cAAC,GAAD,CACEljB,KAAK,aACL84B,oBAAqBA,EACrB3Z,KAAM,cAAC,GAAD,CAAU+D,UAAU,SAC1BR,MAAM,OACNsW,mBAAoBA,OAGxB,qBAAK9V,UAAU,0BAAf,SACE,cAACa,GAAA,EAAD,CACET,QAAQ,WACR+M,WAAS,EACThV,MAAM,YACN2I,QAAS,kBAAMqO,GAAQ,IACvBnP,UAAU,gBALZ,qCAYN,cAAC,GAAD,CAAcoH,KAAMA,EAAM+H,QAASA,WC9I5B8H,OAbf,SAA4BlZ,GAC1B,OACE,+CAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,aACE,sBACE4I,EAAE,mkCACFvM,KAAK,eACLuY,OAAO,eACPC,YAAY,YCJd1U,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXhB,OAAO,cACLhF,WAAYze,OAAOod,KAAOsB,kBAC1BkC,OAAQ,cACRwB,YAAa,OACb,yBAA0B,CACxB5D,MAAOpB,KAAO2C,MACdqC,YAAa,WAEdrF,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BwI,OAAQ,SAwBDgQ,OAlBf,WACE,IAAMtX,EAAU1B,KACV6C,EAAWM,eAEjB,OACE,cAACR,GAAA,EAAD,CACEI,kBAAgB,EAChBjB,UAAWJ,EAAQxC,OACnBjF,MAAM,YACNiI,QAAQ,YACR+W,UAAW,cAAC,GAAD,CAAoBhf,MAAOpB,KAAO2C,QAC7CoH,QAAS,kBAAMC,EAAS,yBAN1B,6BChBE7C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXnC,KAAM,CACJ,UAAW,CACT9D,MAAOmZ,KAAOC,cACdlV,OAAQ,UACRmV,WAAY,SAGhBC,SAAU,CACRtZ,MAAOmZ,KAAOC,eAEhBG,KAAM,CACJpW,UAAW,GACX,sBAAuB,CACrBnD,MAAOmZ,KAAOja,UACd6P,OAAQ,WACRzI,eAAgB,SAChB,UAAW,CACT7E,gBAAiB,eAEnB,UAAW,CACTA,gBAAiB0X,KAAOrX,yBAI9Bmd,eAAgB,CACd,qBAAsB,CACpB,UAAW,CACTxd,gBAAiB0X,KAAO5X,cA4FnB0a,OA7EGC,aAJM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,QAgFC0jB,EAxEf,YAAiD,IAAD,YAA5B1jB,EAA4B,EAA5BA,KAAMye,EAAsB,EAAtBA,QAClBvP,EAAU1B,KACV6C,EAAWM,eACXzsB,EAAWy6B,eAH6B,EAIdzE,mBAA6B,MAJf,oBAIvCiH,EAJuC,KAI7BC,EAJ6B,OAKMlH,oBAAkB,GALxB,oBAKvCyM,EALuC,KAKnBC,EALmB,KAOxCC,EAAmC,UAAtB3iC,EAAS+H,UAA8C,eAAtB/H,EAAS+H,SACvDhG,EAAiBpC,GAAUoC,eAAe/B,EAAS+H,UAEnD66B,GACJ,UAAA9mB,EAAKpS,eAAL,eAActG,QAASV,GAAa67B,QAAS,UAAAziB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WAU7EihB,EAAe,SAACC,GACL,WAAXA,EACF7C,GAAQ,GACY,eAAX6C,EACTr9B,OAAOyyB,KAAK,aAAc,UAE1BrG,EAASiR,GAEXF,EAAY,OAGd,OACE,sBAAK9R,UAAU,YAAf,UACE,sBAAMA,UAAU,OAAhB,SAAwBtP,GAAQA,EAAKpS,SAAWoS,EAAKpS,QAAQmT,QAC7D,wBAAQqP,QAtBQ,SAAC4I,GACnBoI,EAAYpI,EAAMuI,gBAqBcjS,UAAU,YAAxC,SACE,cAAC,KAAD,CAAgBA,UAAS,UAAKJ,EAAQ3D,KAAb,YAAkC,OAAb4V,EAAoBjS,EAAQ6R,SAAW,UAGvF,eAACS,GAAA,EAAD,CACEC,aAAW,EACXN,SAAUA,EACV7R,UAAWJ,EAAQ8R,KACnBvJ,aAAc,CAAEE,WAAY,QAASD,SAAU,UAC/CgK,gBAAiB,CACf/J,WAAY,QACZD,SAAU,OAEZiK,mBAAoB,KACpBjL,KAAMkL,QAAQT,GACd3J,QAjCc,WAClB4J,EAAY,OAqBV,UAaG0F,IAAgB7gC,GACf,cAAC47B,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,aAAtC,4BAED,UAAArhB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,aAAeymB,GAClD,cAAChF,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,eAAtC,mBAED,UAAArhB,EAAKpS,eAAL,eAActG,QAASV,GAAao4B,eAApC,UAAoDhf,EAAKpS,eAAzD,iBAAoD,EAAcM,gBAAlE,aAAoD,EAAwBuT,KAC3E,cAACogB,GAAA,EAAD,CAAUzR,QAAS,kBAAMiR,EAAa,qBAAtC,qCAEF,cAACQ,GAAA,EAAD,CAAUvS,UAAWJ,EAAQwX,eAA7B,SACE,cAACvW,GAAA,EAAD,CAAQT,QAAQ,WAAW+M,WAAS,EAAChV,MAAM,YAAY2I,QAAS,kBAAMiR,EAAa,WAAnF,mCAKJ,cAAC,GAAD,CAAsB3K,KAAMiQ,EAAoBlI,QAASmI,UC7DhDG,OApDf,WAAmB,IAAD,cACV1W,EAAWM,eACT3Q,EAAS4e,aAAY,SAAC3e,GAAD,OAAsBA,KAA3CD,KAFQ,EAGQka,oBAAkB,GAH1B,oBAGTxD,EAHS,KAGH+H,EAHG,OAIgCvE,oBAAkB,GAJlD,oBAIT8L,EAJS,KAISd,EAJT,KAKVlf,EAAQmJ,eACRC,EAAYC,aAAcrJ,EAAM8B,YAAYsG,GAAG,OAE/C4Y,KADe,UAAAhnB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,aAChBJ,EAAKpS,UAAtB,UAAiCoS,EAAKpS,QAAQM,gBAA9C,aAAiC,EAAuB84B,iBAC1E9F,EAAoB,UAAGlhB,EAAKpS,eAAR,iBAAG,EAAcM,gBAAjB,aAAG,EAAwBgzB,qBAMrD,OACE,cAAC+F,GAAA,EAAD,CAAQxG,UAAW,EAAGnR,UAAU,SAAhC,SACE,sBAAKA,UAAU,iBAAf,UACGF,GACC,wBAAQE,UAAU,OAAlB,SACE,qBAAKC,IAAKZ,GAAMa,IAAI,mBAAmBY,QATlC,WACbC,EAAS,mBAWJjB,GAAa,cAAC,GAAD,CAAmByT,KAAI,UAAE7iB,EAAKpS,eAAP,aAAE,EAActG,QACnD8nB,GACA,cAAC,GAAD,CACEyT,KAAI,UAAE7iB,EAAKpS,eAAP,aAAE,EAActG,KACpB0+B,iBAAkBA,EAClBd,oBAAqBA,EACrBhE,qBAAsBA,IAGzB9R,EACC,sBAAKE,UAAU,iBAAf,UACG0X,GAAmB,cAAC,GAAD,IACnBhnB,EAAKpS,UAAW,UAAAoS,EAAKpS,eAAL,eAActG,QAASV,GAAa67B,OACnD,qCACE,cAAC,GAAD,CAASvB,qBAAsBA,IAC/B,qBAAK5R,UAAU,eAGnB,cAAC,GAAD,CAAUmP,QAASA,OAGrB,mCAAGuI,GAAmB,cAAC,GAAD,MAExB,cAAC,GAAD,CAActQ,KAAMA,EAAM+H,QAASA,U,UCxDrCjR,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACT/D,MAAO,OACPgE,QAAS,OACTK,WAAY,SACZF,eAAgB,eAoBPmZ,OAVf,YAAuE,IAAD,IAAnDrd,cAAmD,MAA1C,QAA0C,MAAjCD,aAAiC,MAAzB,QAAyB,EAC9DsF,EAAU1B,KAEhB,OACE,qBAAK8B,UAAWJ,EAAQvB,UAAxB,SACE,cAAC,KAAD,CAAQkK,MAAO,CAAEhO,SAAQD,SAASmG,cAAeoX,GAAelX,MAAI,OCzB3D,OAA0B,uCCA1B,OAA0B,4CCqE1BmX,OA3Df,YAA8D,IAAD,IAArCC,cAAqC,SACrDhX,EAAWM,eACXzsB,EAAWy6B,eAEX2I,EACJpjC,EAAS+H,SAAS3G,SAAS,WAC3BpB,EAAS+H,SAAS3G,SAAS,aAC3BpB,EAAS+H,SAAS3G,SAAS,yBAC3BpB,EAAS+H,SAAS3G,SAAS,mBAEvBiiC,EAAa,SAACn7B,GAClBikB,EAASjkB,IAGX,OACE,cAAC66B,GAAA,EAAD,CAAQxG,UAAW,EAAGnR,UAAU,SAAS7H,MAAO4f,EAAS,YAAc,UAAvE,SACE,sBAAK/X,UAAU,iBAAf,UACE,qBACEC,IAAK8X,EAASG,GAAY7Y,GAC1BW,UAAW+X,EAAS,aAAe,OACnC7X,IAAI,OACJY,QAAS,kBAAOkX,GAAcC,EAAW,QAEzCF,GAAWnjC,EAAS+H,SAAS3G,SAAS,UAAapB,EAAS+H,SAAS3G,SAAS,eAQ7EpB,EAAS+H,SAAS3G,SAAS,WAC3BpB,EAAS+H,SAAS3G,SAAS,eAC1B,sBAAKgqB,UAAU,sBAAf,UACE,cAACa,GAAA,EAAD,CACE1O,GAAG,uBACHiO,QAAQ,WACRU,QAAS,kBAAMmX,EAAW,cAC1BjY,UAAU,uBACViB,kBAAgB,EALlB,yBASA,cAACJ,GAAA,EAAD,CACET,QAAQ,YACRU,QAAS,kBAAMmX,EAAW,WAC1BjY,UAAU,wBACV7H,MAAM,UAJR,qCAnBJ,cAACiZ,GAAA,EAAD,CAAM+G,KAAK,QAAQvO,OAAO,SAA1B,SACE,eAAC/I,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAY6H,UAAU,OAAvD,UACE,qBAAKC,IAAKmY,GAAgBlY,IAAI,WAAWF,UAAU,SADrD,mBCtBGqY,OAVf,WAAwB,IACd17B,EAAa0yB,eAAb1yB,SAMR,OAJAk3B,qBAAU,WACRl/B,OAAO2jC,SAAS,EAAG,KAClB,CAAC37B,IAEG,M,oBC6FM47B,OAxFf,WAAyB,IAAD,EAChBxX,EAAWM,eACX7gB,EAAW4uB,cACX1e,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1D8P,EAAqB,cAAC,KAAD,CAAQC,cAAeC,GAAgBC,MAAM,IAClE6X,EAAqB,cAAC,KAAD,CAAQ/X,cAAec,GAAgBZ,MAAM,IAClE8X,EAAuB,cAAC,KAAD,CAAQhY,cAAeiY,GAAkB/X,MAAM,IACtEgY,EAAejoB,EAAKrM,6BACpBu0B,EAAgB,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAc3iC,SAAS,sBAqBhD,OAnBA69B,qBAAU,WACR,IACGnjB,EAAKvM,qBACLuM,EAAKtM,yBACgC,OAAtCsM,EAAKrM,6BACL,CACA,IAAIw0B,EAAUtkC,GAAUE,mBACpBokC,EAAQ1mB,IAAM0mB,EAAQhL,OACxBrtB,EhCyLN,SAAC,GAAD,IAAGgR,EAAH,EAAGA,OAAQqc,EAAX,EAAWA,MAAX,OACA,SAACrtB,GAGC,OAFAA,EAAS2D,MAEFkpB,GAAYC,iBAAiB,CAAE9b,SAAQqc,UAAS5xB,MACrD,SAACF,GACKA,IACc,IAAIL,MACZo9B,IAAI,QAAS/8B,EAAU8xB,MAAO,CAAE/wB,KAAM,MAE9C0D,EAAS4D,OAET5D,EAAS6tB,GAAsB,2BAGnC,SAACruB,GACCQ,EAAS6tB,GAAsBruB,QgCzMtBstB,CAAiB,CAAE9b,OAAQqnB,EAAQ1mB,GAAI0b,MAAOgL,EAAQhL,YAGlE,CAACnd,EAAKvM,mBAAoBuM,EAAKtM,wBAAyBsM,EAAKrM,6BAA8B7D,IAE9FqzB,qBAAU,YACJnjB,EAAKtM,yBAA4BsM,EAAKpS,SAAYoS,EAAKrN,WAAcqN,EAAKpN,UAC5E9C,EAAS+sB,QAEV,CAAC7c,EAAKtM,wBAAyBsM,EAAKpS,QAASoS,EAAKrN,UAAWqN,EAAKpN,SAAU9C,IAG7E,qBAAKwf,UAAU,yCAAf,SACGtP,EAAKvM,mBACJ,cAAC,GAAD,IACGuM,EAAKtM,wBAkCR,cAAC,GAAD,CACEob,MAAM,4CACNF,UAAWmZ,EACX9Y,SACE,cAACkB,GAAA,EAAD,CACEC,QAAS,kBACPC,EAASrQ,EAAKpS,QAAStG,OAASV,GAAa67B,MAAQ,mBAAqB,WAE5Ehb,MAAM,UACNiI,QAAQ,YACRa,kBAAgB,EANlB,UAQG,UAAAvQ,EAAKpS,eAAL,eAActG,QAASV,GAAa67B,MAAQ,4BAA8B,kBA7CjF,cAAC,GAAD,CACE3T,MACEoZ,EAAmB,oCAAsC,6CAE3DtZ,UAAWsZ,EAAmBJ,EAAqBhY,EACnDb,SACE,qBAAKK,UAAU,qBAAf,SACG4Y,EACC,qCACE,mKAEsC,OAEtC,cAAC/X,GAAA,EAAD,CACEC,QAAS,kBAAMC,EAAS,WACxB5I,MAAM,UACNiI,QAAQ,YACRa,kBAAgB,EAJlB,4BAUF,qCACE,mGACA,mBAAGkX,KAAK,8BAAR,kCACA,iHC3EH,4vDCiBAY,OAdf,YAAyD,IAAD,IAA/B5gB,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAI9B,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOna,QACxB6I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBAAK1F,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACEC,EAAE,89EACFvM,KAAMjC,OCgBC6gB,OAzBf,WACE,OACE,qBAAKtS,MAAM,6BAA6BpM,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAxF,SACE,oBAAGjI,GAAG,+BAAN,UACE,mBAAGA,GAAG,wBAAN,SACE,sBACEA,GAAG,SACHwU,EAAE,mRACFgM,OAAQrB,KAAOja,UACfub,YAAY,UAGhB,mBAAGzgB,GAAG,oBAAN,SACE,sBACEA,GAAG,WACHwU,EAAE,maACFvM,KAAMkX,KAAOja,cAGjB,sBAAMlF,GAAG,kBAAYwU,EAAE,2BAA2BgM,OAAQrB,KAAOja,UAAWub,YAAY,cCwFjFqG,GA5FiC,SAAC,GAO1C,IAAD,QANJC,kBAMI,SALJC,EAKI,EALJA,MACAC,EAII,EAJJA,SACAp5B,EAGI,EAHJA,MACAq5B,EAEI,EAFJA,SACAC,EACI,EADJA,SAEM5oB,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC/C6oB,EAAaC,iBAAyB,MAFxC,EAGoC5O,oBAAkB,GAHtD,oBAGG6O,EAHH,KAGiBC,EAHjB,KAuCEC,EACJjpB,EAAKpS,UAAL,UAAgBoS,EAAKpS,eAArB,iBAAgB,EAAcM,gBAA9B,aAAgB,EAAwBuT,IAAK5d,GAAU2B,cAAcwa,EAAKpS,QAAQM,SAASuT,IAAM,KAE7FynB,EAAW55B,EAAQ65B,GAAQV,EAAQA,EAAM7iC,KAAOqjC,GAAyBE,GAE/E,OACE,qCACE,oBAAI7Z,UAAU,eAAd,gCACA,mBAAGA,UAAU,gBAAb,iFACA,sBAAKA,UAAU,qBAAf,UACE,sBAAKA,UAAS,yBAAqBmZ,IAAUD,GAAel5B,EAAQ,WAAa,IAAjF,UACE,qBAAK85B,IAAKR,EAAUrZ,IAAK2Z,EAAUG,QAjBtB,WACfT,EAASU,UACXV,EAASU,QAAQ/Z,IAAM4Z,KAeuC3Z,IAAI,UAC1DiZ,IAAUD,GAAel5B,IAC3B,mBAAGggB,UAAU,qBAAb,sGAKJ,qBAAKA,UAAU,UAAf,SACE,uBAAOA,UAAWyZ,EAAe,iBAAmB,GAAIQ,QAAQ,cAAhE,SACGR,EACC,cAACzM,GAAA,EAAD,CAAkBC,KAAM,GAAIG,UAAW,IAEvC,uBAAMtM,QAAS,SAACoZ,GAAD,OAAOA,EAAEC,mBAAmBna,UAAU,yBAArD,UACE,cAAC,GAAD,IACA,wDAKR,uBACEhoB,KAAK,OACLma,GAAG,cACHioB,OAAO,UACPN,IAAKP,EACL9P,SAAU,wBArEM,SAAC4Q,GACvB,GAAIA,EAAO,CACT,IAAMC,EAAOD,EAAM,GACbE,EAAQ,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAMtiC,KACvB,IAAQ,OAAJsiC,QAAI,IAAJA,OAAA,EAAAA,EAAMrN,MAAO,QAGf,OAFAoM,EAAS,8EACTD,EAAS,MAGX,IAAK,CAAC,aAAc,aAAc,aAAapjC,SAASukC,GAGtD,OAFAlB,EAAS,qGACTD,EAAS,MAOX,GAJAC,EAAS,MACTK,GAAgB,GAChBN,EAASkB,GAELE,WAAY,CACd,IAAMC,EAAK,IAAID,WACfC,EAAGC,OAAS,WACNpB,EAASU,UAASV,EAASU,QAAQ/Z,IAAMwa,EAAGxF,OAAQ70B,aAE1Dq6B,EAAGE,cAAcL,KA+CbM,CAAgBrB,GAAcA,EAAWS,QAAzB,UAAmCT,EAAWS,eAA9C,aAAmC,EAAoBK,MAAQ,OAEjF9R,MAAO,CAAEjK,QAAS,aAGrBte,GAAS,mBAAGggB,UAAU,cAAb,SAA4BhgB,QC3F7B66B,OAXf,WACE,OACE,qBAAKvgB,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACEC,EAAE,0gCACFvM,KAAMrD,KAAOM,eCsDNyjB,OArDf,YAAiD,IAA3Btb,EAA0B,EAA1BA,MACd9I,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAFR,EAGRkM,oBAAkB,GAHV,oBAGvCmQ,EAHuC,KAG1BC,EAH0B,KAIxCC,EAAuDzB,iBAAO,MAE9D0B,EAAqB,SAACxR,GACtBqR,GAAeE,EAAWjB,UAAYiB,EAAWjB,QAAQmB,SAASzR,EAAME,SAC1EoR,GAAe,IAInBnH,qBAAU,WACR,GAAIvI,EAEF,OADA8P,SAASC,iBAAiB,YAAaH,GAChC,WACLE,SAASE,oBAAoB,YAAaJ,MAI7C,CAAC5P,EAAUyP,IAEd,IAOMQ,EAA8B,CAClCC,cAAeT,EAAc,OAAS,OACtCzgB,MAAO,WAGT,OACE,cAACqS,GAAA,EAAD,CACEnN,MAAOA,EACPic,UAAU,eACVrU,KAAMkE,EAAWyP,OAAc5iC,EAC/By0B,qBAAsBtB,EACtBoQ,qBAAsBpQ,EACtBqQ,qBAAsBrQ,EACtBpD,QAAS,kBAAM8S,GAAe,IAE9BY,YAAa,CAAErT,MAAOgT,GATxB,SAWE,sBAAMza,QAxBkB,SAACoZ,GAC3BA,EAAEC,kBACE7O,GACF0P,GAAgBD,IAqBoBjB,IAAKxO,EAAW,SAACwO,GAAD,OAAUmB,EAAWjB,QAAUF,QAAO3hC,EAA1F,SACE,cAAC,GAAD,OAJGmzB,EAAW,SAAW,YCjDpBuQ,GAAiB,CAC5BC,iBAOF,SAA0B1jC,GACxB,OAAIA,IAAaxB,GAAS2D,KACjB,IAEA,OAVTwhC,gBAcF,SAAyB3jC,GAAuE,IAAnD4jC,EAAkD,wDAC7F,OAAI5jC,IAAaxB,GAAS2D,KACjByhC,EAAc,QAAU,QACtB5jC,IAAaxB,GAASsd,MACxB8nB,EAAc,UAAY,kBAEjC,GAnBFC,YAyBF,SAAqBC,EAAsBC,GAQzC,OANyBjhC,OAAOkhC,KAAKF,GAAY3qB,KAAI,SAACtW,GAAD,OAAcihC,EAAWjhC,MAGvC2W,QAAO,SAACyqB,GAAD,MAAoB,kBAANA,KAG1C9qB,KAAI,SAAC+qB,GAAD,OAAOH,EAAGG,OAhChCC,gBAmCF,SAAyBnkC,GACvB,OAAOA,IAAaxB,GAAS2D,MAAQnC,IAAaxB,GAASsd,OAnC3DsoB,uBAsCF,SAAgCpkC,GAC9B,IAAMqkC,EAAyBrkC,EAC5B3B,UAAU,OACVC,QAAQ,mBAAoB,IAC5BH,cAEH,GAA+B,UAA3BkmC,EACF,OAAO7lC,GAAS2D,KAAK6F,WAGvB,GAA+B,YAA3Bq8B,EACF,OAAO7lC,GAASsd,MAAM9T,WAGxB,OAAOhI,ICxDF,IAAMskC,GAAa,CACxBC,aAUF,SAAsBC,GACpB,OAAO,IAAIluB,KAAKkuB,GAAMC,mBAAmB,QAAS7J,KAVlD8J,oBAaF,SAA6BF,GAG3B,OAFgB9iC,KAAO8iC,GAERG,OAAO,mBAftBC,wBAkBF,SAAiCJ,GAG/B,OAFgB9iC,KAAO8iC,GAERG,OAAO,aApBtBE,kBA2BF,SAA2B7X,GACzB,OAAQA,GACN,KAAK7tB,GAAW2lC,KACd,MAAO,kBAET,KAAK3lC,GAAW4lC,SACd,MAAO,gBAET,KAAK5lC,GAAW6lC,QACd,MAAO,cAET,KAAK7lC,GAAW8lC,SACd,MAAO,eAET,KAAK9lC,GAAW+lC,OACd,MAAO,sBAET,KAAK/lC,GAAWgmC,SACd,MAAO,mBAET,KAAKhmC,GAAWsC,OACd,MAAO,kBA/CX2jC,gBAmDF,SAAyBpY,EAAwBqY,GAC/C,OAAQrY,GACN,KAAK7tB,GAAW2lC,KACd,OAAO,KAET,KAAK3lC,GAAW4lC,SACd,OAAOO,GAAiB5jC,OAAS6jC,IAAI,GAAI,YAE3C,KAAKpmC,GAAW6lC,QACd,OAAOM,GAAiB5jC,OAAS6jC,IAAI,EAAG,SAE1C,KAAKpmC,GAAW8lC,SACd,OAAOK,GAAiB5jC,OAAS6jC,IAAI,EAAG,UAE1C,KAAKpmC,GAAW+lC,OACd,OAAOI,GAAiB5jC,OAAS8jC,MAAM,QAEzC,KAAKrmC,GAAWgmC,SACd,OAAOG,GAAiB5jC,OAAS8jC,MAAM,UAEzC,KAAKrmC,GAAWsC,OACd,OAAO6jC,GAAiB5jC,KAAO2jC,MAvEnCI,wBA2EF,SAAiCjB,GAC/B,IAAMkB,EAAUhkC,KAAO8iC,GACjBniC,EAAQX,OAASY,QAAQ,OACzBqjC,EAAYjkC,OAASc,SAAS,EAAG,QAAQF,QAAQ,OAEvD,OAAIojC,EAAQE,OAAOvjC,EAAO,KACjB,OAASqjC,EAAQf,OAAO,SACtBe,EAAQE,OAAOD,EAAW,KAC5B,QAAUD,EAAQf,OAAO,SAEzBe,EAAQf,OAAO,oBAlFpB/J,GAAsC,CAAEiL,KAAM,UAAWC,MAAO,UAAWC,IAAK,WAkBtF,SAAST,GAAiBd,GACxB,OAAOA,EAAKG,OAAO,oBC7Bd,IAAMqB,GAAqB,CAChCC,oBAGF,SAA6BC,GAC3B,OAAQA,GACN,KAAK1mC,GAAiB2mC,SACpB,MAAO,YACT,KAAK3mC,GAAiB4mC,SACpB,MAAO,YACT,KAAK5mC,GAAiBslC,KACpB,MAAO,UACT,QACE,UCVN,IAiFelK,GAjFC,CACd56B,SAAU,CACR,CACE+Z,GAAIvb,GAAS2D,KACb4Z,MAAM,GAAD,OAAK0nB,GAAeE,gBAAgBnlC,GAAS2D,QAEpD,CACE4X,GAAIvb,GAASsd,MACbC,MAAM,GAAD,OAAK0nB,GAAeE,gBAAgBnlC,GAASsd,UAGtDuqB,QAAS,CACP,CACEtsB,GAAI,EACJgC,MAAO,MAET,CACEhC,GAAI,GACJgC,MAAO,OAET,CACEhC,GAAI,GACJgC,MAAO,QAGXuqB,gBAAiB,CACf,CACEvsB,GAAI,GACJgC,MAAO,OAET,CACEhC,GAAI,GACJgC,MAAO,QAGXiR,WAAY,CACV,CACEjT,GAAI5a,GAAW2lC,KACf/oB,MAAOuoB,GAAWO,kBAAkB1lC,GAAW2lC,OAEjD,CACE/qB,GAAI5a,GAAW4lC,SACfhpB,MAAOuoB,GAAWO,kBAAkB1lC,GAAW4lC,WAEjD,CACEhrB,GAAI5a,GAAW6lC,QACfjpB,MAAOuoB,GAAWO,kBAAkB1lC,GAAW6lC,UAEjD,CACEjrB,GAAI5a,GAAW8lC,SACflpB,MAAOuoB,GAAWO,kBAAkB1lC,GAAW8lC,WAEjD,CACElrB,GAAI5a,GAAW+lC,OACfnpB,MAAOuoB,GAAWO,kBAAkB1lC,GAAW+lC,SAEjD,CACEnrB,GAAI5a,GAAWgmC,SACfppB,MAAOuoB,GAAWO,kBAAkB1lC,GAAWgmC,WAEjD,CACEprB,GAAI5a,GAAWsC,OACfsa,MAAOuoB,GAAWO,kBAAkB1lC,GAAWsC,UAGnDykC,aAAc,CACZ,CACEnsB,GAAI,EACJgC,MAAOiqB,GAAmBC,oBAAoBzmC,GAAiBslC,OAEjE,CACE/qB,GAAI,EACJgC,MAAOiqB,GAAmBC,oBAAoBzmC,GAAiB2mC,WAEjE,CACEpsB,GAAI,EACJgC,MAAOiqB,GAAmBC,oBAAoBzmC,GAAiB4mC,aClEtDG,OAbf,WACE,OACE,qBAAKrkB,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACEvU,GAAG,cACH+H,QAAQ,QACRyM,EAAE,ulCACFvM,KAAMrD,KAAOM,eCmBNunB,OA1Bf,YAA8F,IAAxE3U,EAAuE,EAAvEA,SAAUnQ,EAA6D,EAA7DA,YAC9B,OACE,qBAAKQ,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,oBAAGvU,GAAG,wBAAN,UACE,sBACEA,GAAG,gBACHyiB,EAAE,MACFC,EAAE,WACFva,MAAM,KACNC,OAAO,KACPskB,GAAG,MACHzkB,KAAI,OAAEN,QAAF,IAAEA,IAAe/C,KAAO2C,MAC5BiZ,OAAM,OAAE7Y,QAAF,IAAEA,IAAe/C,KAAOkD,sBAC9B+F,UAAS,2BAAsBiK,EAAW,YAAc,MAE1D,sBACE9X,GAAG,QACHwU,EAAE,+hDACFvM,KAAMrD,KAAOM,UACb2I,UAAS,UAAKiK,EAAW,6BAA+B,YCnBrD6U,GAAe,CAC1BC,eAGF,SAAwB/yB,EAAqCgG,GAAsC,IAAD,EAChG,cAAOhG,QAAP,IAAOA,GAAP,UAAOA,EAAgBlN,eAAvB,aAAO,EAAyByS,KAAI,SAACmE,GACnC,IAAMspB,EACJhzB,EAAeA,gBACfA,EAAeA,eAAe4F,QAAO,SAACM,GAAD,OAAOA,EAAEG,UAAYH,EAAEG,WAAa1Y,OAAO+b,EAAEvD,OAAK7c,OAAS,EAElG,MAAO,CACL6c,GAAIuD,EAAEvD,GACNgC,MAAOuB,EAAEjd,OACTwxB,UAAUjY,GAAwBgtB,EAClCC,kBAAmBvpB,EAAEupB,wBCGpB,IAAMC,GAAe,CAC1BC,W,iDACAC,W,6CACAC,gB,6CACAC,W,iDACAC,gB,iDACAC,W,6CACAC,U,6CACAC,Y,6CACAC,a,6CACAC,e,4FAGF,WACEhkC,EACAzF,EACA6B,GAHF,eAAA6D,EAAA,6DAKQ5D,EAAeJ,GAAgBC,mBAAmB8D,EAAS5D,GALnE,SAOe0B,GAAG,UACXoE,GAAS,MADE,YACW3H,EADX,iBAC8ByF,EAAQ7F,KADtC,kBACoD6F,EAAQikC,OAD5D,OACoE5nC,IAEjFgE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAdZ,oF,oEAkBA,WAA0B8/B,GAA1B,SAAAjkC,EAAA,sEACe2B,GAAI,UAAUM,GAAS,OAAagiC,GAC9C7jC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA+B8/B,GAA/B,SAAAjkC,EAAA,sEACe2B,GAAI,UAAUM,GAAS,MAAnB,cAA0CgiC,GACxD7jC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WACE8/B,EACAnsB,EACAxd,GAHF,SAAA0F,EAAA,sEAKe8B,GAAG,UAAUG,GAAS,MAAnB,YAAgC3H,EAAhC,YAA8Cwd,GAAUmsB,GACrE7jC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAVZ,oF,oEAcA,WACE8/B,EACAnsB,EACAxd,GAHF,SAAA0F,EAAA,sEAKe8B,GAAG,UAAUG,GAAS,MAAnB,sBAA0C6V,GAAUmsB,GACjE7jC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAVZ,oF,oEAcA,+BAAAnE,EAAA,6DAA4B1F,EAA5B,EAA4BA,WAAYwd,EAAxC,EAAwCA,OAAxC,SACe9V,GAAU,UAAaC,GAAS,MAAtB,YAAmC3H,EAAnC,YAAiDwd,IACrE1X,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,+BAAAnE,EAAA,6DAA2B8X,EAA3B,EAA2BA,OAAQuO,EAAnC,EAAmCA,MAAnC,SACe1kB,GAAI,UAAaM,GAAS,MAAtB,kBAAyC6V,GAAU,CAAEuO,UACnEjmB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA2B2T,GAA3B,SAAA9X,EAAA,sEACenC,GAAG,UAAsBoE,GAAS,MAA/B,iBAAiD6V,IAC9D1X,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA4B2T,GAA5B,SAAA9X,EAAA,sEACenC,GAAG,UAAeoE,GAAS,MAAxB,qBAA8C6V,IAC3D1X,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WACE+/B,GADF,eAAAlkC,EAAA,6DAGQmkC,EAAW,IAAIC,UACZC,OAAO,OAAQH,EAA0BzF,MAJpD,kBAMS58B,GAAQ,UAAYI,GAAS,KAAWkiC,GAC5C/jC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,MAXZ,4C,sBC3EO,IAAMm/B,GAAa,SACxB3lC,EACAzD,EACA8pC,EACA1pC,EACA6B,EACAwa,EACA3Z,EACA0H,GAEA,OAAO,SAACC,GAGN,OAFAA,EAASwI,GAAahR,EAAMwa,IAErB0sB,GAAaC,WAAb,6BAA6B3lC,GAA7B,IAAsCzD,OAAM8pC,QAAOhnC,eAAc1C,EAAY6B,GAAMiE,MACxF,SAACF,GAEGyE,EADED,EACO4/B,GAAkBpkC,GAElBqkC,GAASrkC,OAGtB,SAACiE,GACCQ,EAAS6/B,GAAYrgC,SAMhBgJ,GAAe,SAACyJ,EAAoBD,GAArB,MAA0D,CACpFxa,KAAMzG,GACNkhB,OACAD,UAGW4tB,GAAW,SAACrhC,GAAD,MAA4C,CAClE/G,KAAMxG,GACNuN,UAGWohC,GAAoB,SAACphC,GAAD,MAA4C,CAC3E/G,KAAMvG,GACNsN,UAGWshC,GAAc,SAACrgC,GAAD,MAAqC,CAC9DhI,KAAMtG,GACNsO,UAOWsgC,GAAmB,SAC9B9mC,EACAzD,EACA8pC,EACA1pC,EACA6B,EACAwa,GAEA,OAAO,SAAChS,GAGN,OAFAA,EAASyI,GAAmBjR,EAAMwa,IAE3B0sB,GAAaC,WAAb,6BAA6B3lC,GAA7B,IAAsCzD,OAAM8pC,UAAS1pC,EAAY6B,GAAMiE,MAC5E,SAACF,GACCyE,EAAS+/B,GAAexkC,OAE1B,SAACiE,GACCQ,EAASggC,GAAkBxgC,SAMtBiJ,GAAqB,SAACwJ,EAAoBD,GAArB,MAAgE,CAChGxa,KAAMrG,GACN8gB,OACAD,UAGW+tB,GAAiB,SAACxhC,GAAD,MAAkD,CAC9E/G,KAAMpG,GACNmN,UAGWyhC,GAAoB,SAACxgC,GAAD,MAA2C,CAC1EhI,KAAMnG,GACNmO,UAOWygC,GAAmB,SAC9BjnC,EACAzD,EACA8pC,EACA1pC,EACA6B,GAEA,OAAO,SAACwI,GAGN,OAFAA,EAASM,GAAYtH,IAEd0lC,GACJC,WADI,cAGDppC,OACA8pC,SACGrmC,GAELrD,EACA6B,GAEDiE,MACC,SAACF,GACCyE,EAAS4/B,GAASrkC,OAEpB,SAACiE,GACCQ,EAAS6/B,GAAYrgC,SAMlBc,GAAc,SAACtH,GAAD,MAA+C,CACxExB,KAAMnF,GACN2G,QAASA,IAOEknC,GAAyB,SACpClnC,EACAzD,EACA8pC,EACA1pC,EACA6B,GAEA,OAAO,SAACwI,GAGN,OAFAA,EAASmgC,GAAkBnnC,IAEpB0lC,GACJC,WADI,cAGDppC,OACA8pC,SACGrmC,GAELrD,EACA6B,GAEDiE,MACC,SAACF,GACCyE,EAAS+/B,GAAexkC,OAE1B,SAACiE,GACCQ,EAASggC,GAAkBxgC,SAMxB2gC,GAAoB,SAACnnC,GAAD,MAAqD,CACpFxB,KAAMlF,GACN0G,QAASA,IAOE4lC,GAAa,SAACU,GACzB,OAAO,SAACt/B,GAGN,OAFAA,EAASwJ,MAEL81B,EAAYc,cAAgBnpC,GAAgBopC,MACvC3B,GAAaG,gBAAgBS,GAAuC7jC,MACzE,SAACF,GACCyE,EAASyJ,GAAkBlO,OAE7B,SAACiE,GACCQ,EAASsgC,GAAiB9gC,OAIvBk/B,GAAaE,WAAWU,GAAkC7jC,MAC/D,SAACF,GACCyE,EAASyJ,GAAkBlO,OAE7B,SAACiE,GACCQ,EAASsgC,GAAiB9gC,SAOvBgK,GAAe,iBAAwB,CAClDhS,KAAMlG,KAGKmY,GAAoB,SAACgJ,GAAD,MAAkC,CACjEjb,KAAMjG,GACNkhB,SAGW6tB,GAAmB,SAAC9gC,GAAD,MAAqC,CACnEhI,KAAMhG,GACNgO,UAOW+gC,GAAqB,SAAChB,GACjC,OAAO,SAACv/B,GAGN,OAFAA,EAASwgC,MAEF9B,GAAaU,eAAeG,GAA2B9jC,MAC5D,SAACF,GACCyE,EAAS8K,GAA0BvP,OAErC,SAACiE,GACCQ,EAASygC,GAAyBjhC,SAM7BghC,GAAuB,iBAA+B,CACjEhpC,KAAM/F,KAGKqZ,GAA4B,SAACvM,GAAD,MAA4C,CACnF/G,KAAM9F,GACN6M,UAGWkiC,GAA2B,SAACjhC,GAAD,MAA4C,CAClFhI,KAAM7F,GACN6N,UAOWs/B,GAAa,SACxB1jC,EACA+X,EACAxd,GAEA,OAAO,SAACqK,GAGN,OAFAA,EAAS4J,MAELxO,EAAQglC,cAAgBnpC,GAAgBopC,MACnC3B,GAAaK,gBAAgB3jC,EAAmC+X,EAAQxd,GAAY8F,MACzF,SAACF,GACCyE,EAAS6J,GAAkBtO,OAE7B,SAACiE,GACCQ,EAAS0gC,GAAiBlhC,OAIvBk/B,GAAaI,WAAW1jC,EAA8B+X,EAAQxd,GAAY8F,MAC/E,SAACF,GACCyE,EAAS6J,GAAkBtO,OAE7B,SAACiE,GACCQ,EAAS0gC,GAAiBlhC,SAOvBoK,GAAe,iBAAwB,CAClDpS,KAAM5F,KAGKiY,GAAoB,SAAC4I,GAAD,MAAkC,CACjEjb,KAAM3F,GACN4gB,SAGWiuB,GAAmB,SAAClhC,GAAD,MAAqC,CACnEhI,KAAM1F,GACN0N,UAqBWuK,GAAe,iBAAwB,CAClDvS,KAAMzF,KAGKiY,GAAoB,SAACmJ,GAAD,MAAsC,CACrE3b,KAAMxF,GACNmhB,WAGWwtB,GAAmB,SAACnhC,GAAD,MAAqC,CACnEhI,KAAMvF,GACNuN,UAsBW0K,GAAc,iBAAuB,CAChD1S,KAAMtF,KAGKiY,GAAmB,iBAAuB,CACrD3S,KAAMrF,KAGKyuC,GAAkB,SAACphC,GAAD,MAAoC,CACjEhI,KAAMpF,GACNoN,UAuBW6K,GAAkB,iBAAyB,CACtD7S,KAAMjF,KAGK+X,GAAqB,SAACmI,GAAD,MAA+C,CAC/Ejb,KAAMhF,GACNigB,SAGWouB,GAAoB,SAACrhC,GAAD,MAAsC,CACrEhI,KAAM/E,GACN+M,UAwBWiL,GAAiB,iBAA0B,CACtDjT,KAAM9E,KAGKgY,GAAsB,SAAC+H,GAAD,MAAyC,CAC1Ejb,KAAM7E,GACN8f,SAGWquB,GAAqB,SAACthC,GAAD,MAAuC,CACvEhI,KAAM5E,GACN4M,UCleWuhC,GAAwB,WACnC,IAAM/gC,EAAW4uB,cACX1e,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC/C3R,EAAQuwB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM5R,SAgCtD,OA9B2ByiC,uBAAY,WACrC,IAAMhoC,EAAU,CACdR,SAAUlC,GAASmD,UACnBvB,WAAYvB,GAAuBuX,KACnC/V,cAAetB,GAASoX,MAG1BjO,EACE8/B,GACEvhC,EAAM8K,oBAAsB43B,GAAa53B,mBACzC9K,EAAMuK,mBAAqB,EAC3B,GACAoH,EAAKpS,QAASM,SAASuT,GACvBpb,GAAa2qC,SACb,IAGJlhC,EACE2+B,GACEpgC,EAAM2K,cAAgB+3B,GAAa/3B,aACnC3K,EAAMqK,aAAe,EACrB,GACAsH,EAAKpS,QAASM,SAASuT,GACvBpb,GAAaoc,WACb,IAGJ3S,EAAS2+B,GAAW3lC,EAAS,EAAG,EAAGkX,EAAKpS,QAASM,SAASuT,GAAKpb,GAAa8D,KAAK,GAAM,GAAM,MAC5F,CAAC2F,EAAUkQ,EAAKpS,QAASS,KC7BjB4iC,GAAwB,CACnCC,oB,6CACAC,0B,4CACAC,oB,6CACAC,oB,6CACAC,oB,iDACAC,a,4CACAC,qB,6CACAC,mB,8FAGF,WAAmChsC,GAAnC,SAAA0F,EAAA,sEACenC,GAAG,UAAqBoE,GAAS,QAA9B,+BAAgE3H,IAC7E8F,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,sBAAAnE,EAAA,sEACenC,GAAcoE,GAAS,cACjC7B,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAM,IAAIpD,MAAMoD,MANtB,oF,oEAUA,WACEoiC,GADF,SAAAvmC,EAAA,sEAGe2B,GAAI,UAAmBM,GAAS,QAA5B,kBAAyDskC,GACvEnmC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WACEqiC,GADF,SAAAxmC,EAAA,sEAGe8B,GAAG,UACXG,GAAS,QADE,0BAC2BukC,EAA2BlsC,WADtD,YACoEksC,EAA2BhwB,UAC7GgwB,GAECpmC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAXZ,oF,oEAeA,WACE7J,EACAkc,EACAiwB,GAHF,SAAAzmC,EAAA,sEAKegC,GAAU,UAAaC,GAAS,QAAtB,0BAAmD3H,EAAnD,YAAiEkc,GAAY,CAClGiwB,cAAeA,GAAiB,OAE/BrmC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAZZ,oF,oEAgBA,sBAAAnE,EAAA,sEACenC,GAAG,UAAcoE,GAAS,QAAvB,8BACb7B,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAoC7J,GAApC,SAAA0F,EAAA,sEACenC,GAAG,UAAsBoE,GAAS,QAA/B,0BAA4D3H,IACzE8F,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAM,IAAIpD,MAAMoD,MANtB,oF,oEAUA,WACE7J,EACA2I,GAFF,SAAAjD,EAAA,sEAIe2B,GAAI,UAAaM,GAAS,QAAtB,YAAqC3H,GAAc2I,EAAQA,SACzE7C,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KATZ,oF,sBC9CO,IAAM4hC,GAAsB,SAACzrC,GAClC,OAAO,SAACqK,GAGN,OAFAA,EAASuL,MAEF41B,GAAsBC,oBAAoBzrC,GAAY8F,MAC3D,SAACF,GACCyE,EAAS+hC,GAAkBxmC,OAE7B,SAACiE,GACCQ,EAASgiC,GAAqBxiC,SAMzB+L,GAAwB,iBAAiC,CACpE/T,KAAMrK,KAGK40C,GAAoB,SAACv2B,GAAD,MAAgE,CAC/FhU,KAAMpK,GACNoe,eAAgBA,IAGLw2B,GAAuB,SAACxiC,GAAD,MAA8C,CAChFhI,KAAMnK,GACNmS,UAOW8hC,GAAsB,SAACM,GAClC,OAAO,SAAC5hC,GAGN,OAFAA,EAAS0L,MAEFy1B,GAAsBG,oBAAoBM,GAA4BnmC,MAC3E,SAACF,GACCyE,EAAS2L,GAA2BpQ,OAEtC,SAACiE,GACCQ,EAASiiC,GAA0BziC,SAM9BkM,GAAwB,iBAAiC,CACpElU,KAAMlK,KAGKqe,GAA6B,SAAC6F,GAAD,MAA6D,CACrGha,KAAMjK,GACNikB,kBAGWywB,GAA4B,SAACziC,GAAD,MAA8C,CACrFhI,KAAMhK,GACNgS,UA6CW+hC,GAAsB,SAACM,GAClC,OAAO,SAAC7hC,GAGN,OAFAA,EAAS6L,MAEFs1B,GAAsBI,oBAAoBM,GAA4BpmC,MAC3E,SAACF,GACCyE,EAAS8L,GAA2BvQ,OAEtC,SAACiE,GACCQ,EAASkiC,GAA0B1iC,SAM9BqM,GAAwB,iBAAiC,CACpErU,KAAM5J,KAGKke,GAA6B,SAAC0F,GAAD,MAA6D,CACrGha,KAAM3J,GACN2jB,kBAGW0wB,GAA4B,SAAC1iC,GAAD,MAA8C,CACrFhI,KAAM1J,GACN0R,UA8CWgiC,GAAsB,SAAC7rC,EAAoBkc,EAAkBrB,GACxE,OAAO,SAACxQ,GAGN,OAFAA,EAASgM,MAEFm1B,GAAsBK,oBAAoB7rC,EAAYkc,GAAUpW,MACrE,SAACF,GACCyE,EAASiM,GAA2B4F,EAAUrB,OAEhD,SAAChR,GACCQ,EAASmiC,GAA0B3iC,SAM9BwM,GAAwB,iBAAiC,CACpExU,KAAMvJ,KAGKge,GAA6B,SACxC6F,EACAtB,GAFwC,MAGV,CAC9BhZ,KAAMtJ,GACN4jB,kBACAtB,WAGW2xB,GAA4B,SAAC3iC,GAAD,MAA8C,CACrFhI,KAAMrJ,GACNqR,UAwCWiiC,GAAe,WAC1B,OAAO,SAACzhC,GAGN,OAFAA,EAASmM,MAEFg1B,GAAsBM,eAAehmC,MAC1C,SAACF,GACCyE,EAASoiC,GAAW7mC,OAEtB,SAACiE,GACCQ,EAASqiC,GAAc7iC,SAMlB2M,GAAiB,iBAA0B,CACtD3U,KAAMjJ,KAGK6zC,GAAa,SAAC9jC,GAAD,MAA2C,CACnE9G,KAAMhJ,GACN8P,YAGW+jC,GAAgB,SAAC7iC,GAAD,MAAuC,CAClEhI,KAAM/I,GACN+Q,UAsBW8M,GAAyB,iBAAkC,CACtE9U,KAAM9I,KAGK4zC,GAAqB,SAAChkC,GAAD,MAA2D,CAC3F9G,KAAM7I,GACN2P,YAGWikC,GAAwB,SAAC/iC,GAAD,MAA+C,CAClFhI,KAAM5I,GACN4Q,UAsBWgN,GAAwB,iBAA4B,CAC/DhV,KAAM3I,KAGK4d,GAAwB,iBAA4B,CAC/DjV,KAAM1I,KAGK0zC,GAAuB,SAAChjC,GAAD,MAAyC,CAC3EhI,KAAMzI,GACNyQ,UAsBWijC,GAAuB,iBAA0B,CAC5DjrC,KAAMxI,KAGK0zC,GAA8B,SAAC/jC,GAAD,MAAgD,CACzFnH,KAAMvI,GACN0P,iBAGWgkC,GAA0B,SAACnjC,GAAD,MAAuC,CAC5EhI,KAAMtI,GACNsQ,UC/ZIojC,GAAkBjlB,cAAW,SAACzH,GAAD,OACjC0H,aAAa,CACXoB,MAAO,CACLlB,QAAS,OACTC,cAAe,MACfE,eAAgB,WAChB4kB,cAAe,GAEjBpnB,KAAM,CACJI,OAAQ,UACRmV,WAAY,OACZrZ,MAAOzB,EAAME,QAAQ6b,KAAK,MAE5B/S,QAAS,CACPvG,QAAS,YACT6F,WAAY,OACZV,QAAS,OACTC,cAAe,SACfE,eAAgB,SAChBE,WAAY,SACZjC,UAAW,UAEblhB,QAAS,CACP4c,WAAY,QAEdkrB,QAAS,CACPhoB,UAAW,SACXgD,QAAS,OACTC,cAAe,MACfE,eAAgB,SAChBE,WAAY,SACZH,IAAK,YACLlE,MAAO,QAET8C,OAAO,gBACJ1G,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BtF,SAAU,OACVyD,SAAU,UACVvC,MAAO,SAGXipB,aAAa,cACX3pB,gBAAiBlD,EAAME,QAAQ5W,MAAM8W,KACrC6C,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,MACzCqB,MAAOpB,KAAO2C,MACd,UAAW,CACTE,gBAAiB7C,KAAO2C,MACxBvB,MAAOzB,EAAME,QAAQ5W,MAAM8W,MAE7B,iBAAkB,CAChB8C,gBAAiBlD,EAAME,QAAQ5W,MAAM8W,KACrC6C,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,MACzCqB,MAAOpB,KAAO2C,MACdQ,QAAS,KAEVxD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,kBAuEH2mB,OAvDf,YAQuB,IAPrBpc,EAOoB,EAPpBA,KACA+H,EAMoB,EANpBA,QACA3zB,EAKoB,EALpBA,QACAioC,EAIoB,EAJpBA,aACAC,EAGoB,EAHpBA,iBAGoB,IAFpBC,uBAEoB,SADpBC,EACoB,EADpBA,eAEMhkB,EAAUwjB,KAMVzT,EAAc,WAClBR,GAAQ,IAGV,OACE,eAACS,GAAA,EAAD,CAAQ5P,UAAU,SAASmN,WAAS,EAACtQ,SAAS,KAAKuK,KAAMA,EAAMc,QAASyH,EAAxE,UACE,cAACE,GAAA,EAAD,CAAa7P,UAAWJ,EAAQJ,MAAhC,SACE,cAAC,KAAD,CAAW5H,SAAS,UAAUoI,UAAWJ,EAAQ3D,KAAM6E,QAAS6O,MAElE,eAACU,GAAA,EAAD,CAAerQ,UAAWJ,EAAQF,QAAlC,UACE,cAACS,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAWJ,EAAQpkB,QAA5C,SACGA,IAEH,sBAAKwkB,UAAWJ,EAAQ0jB,QAAxB,UACGK,GACC,cAAC9iB,GAAA,EAAD,CACEoJ,SAAU2Z,EACVzrB,MAAM,YACNiI,QAAQ,WACRU,QAAS6O,EACT3P,UAAWJ,EAAQxC,OALrB,sBAUF,cAACyD,GAAA,EAAD,CACEb,UAAS,UAAKJ,EAAQ2jB,aAAb,YAA6B3jB,EAAQxC,QAC9CgD,QAAQ,YACR6J,SAAU2Z,EACV9iB,QAjCW,WACnB2iB,KAiCQxiB,kBAAgB,EALlB,SAOG2iB,EAAiB,cAAC5W,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAArC,OAAoDurB,QAApD,IAAoDA,IAAoB,uB,WCpItFG,GAA+B,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,I,WCO3E3lB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX0lB,WAAY,CACV9kB,WAAY,UAEdS,SAAU,CACRZ,aAAc,SACd1G,MAAOmZ,KAAOja,UACde,WAAY,IACZ2rB,WAAY,KACZnsB,SAAU,aAEZosB,gBAAiB,CACfrqB,OAAO,aAAD,OAAe2X,KAAOrX,uBAC5Bd,QAAS,oBACTF,aAAc,MACdqF,QAAS,OACT2lB,oBAAqB,4CACrBC,aAAc,SACdvlB,WAAY,SACZH,IAAK,aAEP2lB,YAAa,CACXC,KAAM,EACN1nB,UAAW,SACXvD,QAAS,iBA0FAkrB,OA9Ef,YAK4B,IAJ1BryB,EAIyB,EAJzBA,cACAsyB,EAGyB,EAHzBA,qBACAC,EAEyB,EAFzBA,wBACAC,EACyB,EADzBA,eAEMhkC,EAAW4uB,cACXpjB,EAAiBsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAFtC,EAGG4e,oBAAkB,GAHrB,oBAGlB6Z,EAHkB,KAGVC,EAHU,KAKzB7Q,qBAAU,WACH4Q,IACHC,GAAU,GACVH,EAAwBvyB,EAAgBA,EAAczE,OAAS,CAAC,OAEjE,CAACk3B,EAAQC,EAAWH,EAAyBvyB,IAEhD,IAAM4N,EAAU1B,KA+BhB,OA7BA2V,qBAAU,WAEL7nB,EAAeoB,8BACwB,OAAxCpB,EAAemB,sBAC2B,OAA1CnB,EAAeqB,wBAEf7M,GH8UG,SAACA,GAGN,OAFAA,EAASyiC,MAEFtB,GAAsBE,4BAA4B5lC,MACvD,SAACF,GACCyE,EAAS0iC,GAA4BnnC,OAEvC,SAACiE,GACCQ,EAAS2iC,GAAwBnjC,YGpVpC,CACDgM,EAAeoB,6BACfpB,EAAemB,qBACfnB,EAAeqB,uBACf7M,IAGFqzB,qBAAU,WACHyQ,EAAqBhvC,QAAQivC,EAAwB,CAAC,MAC1D,CAACD,EAAqBhvC,OAAQivC,IAa/B,mCACGv4B,EAAemB,sBACd,eAACw3B,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,UACE,cAAC0H,GAAA,EAAD,CAAYH,UAAWJ,EAAQH,SAA/B,gCACA,qBAAKO,UAAWJ,EAAQokB,gBAAxB,SDlGmB,MCmGH,OAAbhyB,QAAa,IAAbA,OAAA,EAAAA,EAAeG,KDnGC,MCmGqC,OAAdqyB,QAAc,IAAdA,OAAA,EAAAA,EAAgBnyB,UACtD,cAACwyB,GAAA,EAAD,CAAM9a,MAAO,EAAGvP,WAAW,EAAOrC,MAAM,UAAU8R,UAAQ,IAE1Dje,EAAemB,qBAAqBoE,KAAI,SAACmE,EAAGue,GAC1C,IAAM8B,OAA+D59B,IAAlDmsC,EAAqBQ,MAAK,SAACC,GAAD,OAASA,IAAQrvB,KAE9D,OACE,cAACmvB,GAAA,EAAD,CAEE9a,MAAOrU,EACP8E,WAAS,EACTrC,MAAO4d,EAAa,UAAY,UAChCjV,QAAS,kBA5BF,SAACqjB,GACxB,IAAMa,EAAsBV,EAAqBQ,MAAK,SAACpvB,GAAD,OAAOA,IAAMyuB,KAGjEI,EADES,EACsBV,EAAqB1yB,QAAO,SAAC8D,GAAD,OAAOA,IAAMyuB,KAEzC,GAAD,oBAAKG,GAAL,CAA2BH,KAsBrBc,CAAiBvvB,KAJ3Bue,c,sBCxGnB/V,GAAYC,cAAW,SAACzH,GAAD,MAAmB,CAC9CsC,KAAM,CACJsB,MAAO,GACPC,OAAQ,GACRpB,QAAS,EACT+N,OAAQxQ,EAAMwuB,QAAQ,GACtB,8BAA+B,CAC7BtrB,gBAAiB,UAGrBurB,WAAY,CACVhsB,QAAS,EACT4B,IAAK,MACLuC,UAAW,mBACXnF,MAAOmZ,KAAOja,UACd,YAAa,CACXiG,UAAW,uCACXnF,MAAOzB,EAAME,QAAQwuB,OAAO1rB,MAC5B,aAAc,CACZE,gBAAiB0X,KAAOza,QACxBqD,QAAS,EACTP,OAAQ,SAGZ,wBAAyB,CACvBxB,MAAOmZ,KAAO5X,MACdC,OAAO,kBAAD,OAAoB2X,KAAO5X,SAGrC2rB,MAAO,CACL/qB,MAAO,GACPC,OAAQ,IAEV+qB,MAAO,CACLrsB,aAAc,GACdU,OAAO,aAAD,OAAe2X,KAAOja,WAC5BuC,gBAAiB0X,KAAO5X,MACxBQ,QAAS,GAEXqrB,QAAS,GACTC,aAAc,GACdvb,SAAU,CACR/P,QAAS,GACT,qBAAsB,CACpBN,gBAAiB0X,KAAOja,WAE1B,aAAc,CACZ6C,QAAS,iBACTN,gBAAgB,GAAD,OAAK0X,KAAO5X,MAAZ,eACfC,OAAO,aAAD,OAAe2X,KAAOja,UAAtB,qBAyBGouB,OApBf,SAAsB1nB,GACpB,IAAM6B,EAAU1B,KAEhB,OACE,cAACwnB,GAAA,EAAD,cACEC,sBAAuB/lB,EAAQ4lB,aAC/BrR,eAAa,EACbvU,QAAS,CACP5G,KAAM4G,EAAQ5G,KACdmsB,WAAYvlB,EAAQulB,WACpBE,MAAOzlB,EAAQylB,MACfC,MAAO1lB,EAAQ0lB,MACfC,QAAS3lB,EAAQ2lB,QACjBtb,SAAUrK,EAAQqK,WAEhBlM,KCnEJ6nB,GAAkBznB,cAAW,SAACzH,GAAD,OACjC0H,aAAa,CACXpF,KAAM,CACJsF,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBE,WAAY,eAgCHknB,OAzBf,YAA6E,IAAlDhd,EAAiD,EAAjDA,MAAOE,EAA0C,EAA1CA,KAAMgB,EAAoC,EAApCA,MAAUhM,EAA0B,yCACpE6B,EAAUgmB,KAMhB,OACE,eAACE,GAAA,EAAD,CACElmB,QAAS,CAAE5G,KAAM4G,EAAQ5G,MACzBgH,UAAWjC,EAAMiC,UACjBkH,OAAO,SACP9G,QAAQ,WAJV,UAME,cAACD,GAAA,EAAD,CAAYC,QAAQ,YAApB,SAAiC2J,IACjC,cAAC,GAAD,CACEwb,QAAS1c,EAAM1U,MACfsV,SAdiB,SAACC,GACtBX,EAAKgd,cAAcld,EAAMvyB,KAAMozB,EAAME,OAAO2b,UAcxCtb,SAAUlM,EAAMkM,SAChB9R,MAAM,gBCkEC6tB,OA1Ff,YAAuG,IAAhFC,EAA+E,EAA/EA,OAAQj0B,EAAuE,EAAvEA,cAkD7B,OAlDoG,EAAxDrb,eAAwD,EAAxCuvC,mBAmD1D,mCACGD,GACCA,EAAO10B,KAAI,SAAC40B,GAAO,IAAD,EACVC,EArDY,SAACpuC,GACzB,OAAQA,GACN,KAAK,KACH,MAAO,CACL1B,KAAM,wBACN6d,MAAO,kBAGX,KAAK,KACH,MAAO,CACL7d,KAAM,wBACN6d,MAAO,kBAGX,KAAK,IACH,MAAO,CACL7d,KAAM,sBACN6d,MAAO,iBAEX,KAAK,IACH,MAAO,CACL7d,KAAM,8BACN6d,MAAO,sBAEX,KAAK,KACH,MAAO,CACL7d,KAAM,MACN6d,MAAO,OAEX,KAAK,KACH,MAAO,CACL7d,KAAM,MACN6d,MAAO,wBAEX,KAAK,KACH,MAAO,CACL7d,KAAM,wBACN6d,MAAO,gCAEX,KAAK,KACH,MAAO,CACL7d,KAAM,qBACN6d,MAAO,kBAEX,QACE,MAAO,CAAE7d,KAAM,GAAI6d,MAAO,GAAIyf,SAAU,OAQpByS,CAAkBF,EAAEG,WAEtC,OAAQF,EAAUjyB,OAChB,IAAK,GACH,OAAO,KAET,IAAK,qBACH,OACE,cAACwwB,GAAA,EAAD,CAAwBC,MAAI,EAACnsB,GAAI,GAAjC,SACE,cAAC,KAAD,CACEniB,KAAM8vC,EAAUjyB,MAChB8W,UAAW4a,GACX9b,MAAOqc,EAAU9vC,KACjB2zB,YAAW,OAACjY,QAAD,IAACA,GAAD,UAACA,EAAei0B,cAAhB,aAAC,EAAuBM,uBAL5BJ,EAAEG,WAUjB,QACE,OACE,cAAC3B,GAAA,EAAD,CAAwBC,MAAI,EAACnsB,GAAI,GAAjC,SACE,cAAC,KAAD,CACEniB,KAAM8vC,EAAUjyB,MAChB8W,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAaoc,EAAU9vC,KACvB2zB,SAA4B,OAAlBjY,KANHm0B,EAAEG,kB,iCC1EvBE,GAAkBroB,cAAW,SAACzH,GAAD,OACjC0H,aAAa,CACXpF,KAAM,CACJsB,MAAO,QAETmsB,OAAQ,CACN,UAAW,CACT7sB,gBAAiB,eAEnB0E,QAAS,QAEX6a,MAAO,CACL5e,OAAQ,OACRD,MAAO,OACPuC,SAAU,OACV6pB,UAAW,OACX3qB,YAAa,QAEf6oB,KAAM,CACJtmB,QAAS,QAEXqoB,UAAW,CACTzf,OAAQ,EACR5L,UAAW,SACXnD,MAAOzB,EAAME,QAAQ5W,MAAM8W,WAgElB8vB,OA9Cf,YAAsF,IAA3D/d,EAA0D,EAA1DA,MAAOE,EAAmD,EAAnDA,KAAMgB,EAA6C,EAA7CA,MAAOiJ,EAAsC,EAAtCA,QAAYjV,EAA0B,mDAC7E6B,EAAU4mB,KACVlmB,OAAqEnoB,KAAzD4wB,EAAKC,QAAQH,EAAMvyB,OAASyyB,EAAKE,OAAOJ,EAAMvyB,OAMhE,OACE,eAACwvC,GAAA,EAAD,CACE9lB,UAAWjC,EAAMiC,UACjBkH,OAAO,SACP9G,QAAQ,WACRR,QAAS,CAAE5G,KAAM4G,EAAQ5G,MAJ3B,UAME,cAAC6tB,GAAA,EAAD,UAAa9c,IACb,cAAC+c,GAAA,EAAD,CACElnB,QAAS,CAAE6mB,OAAQ7mB,EAAQ6mB,QAC3BtyB,MAAO0U,EAAM1U,MACbsV,SAAU,SAACC,GAAgB,IAAD,EACxB,UAAA3L,EAAM0L,gBAAN,cAAA1L,EAAiB2L,GAhBF,SAACA,GACtBX,EAAKgd,cAAcld,EAAMvyB,KAAMozB,EAAME,OAAOzV,OAgBtC4yB,CAAerd,IAEjBK,MAAOA,EACPE,SAAUlM,EAAMkM,SAChBjqB,MAAOsgB,EATT,SAWG0S,EAAQzhB,KAAI,SAACygB,EAAQiC,GACpB,OAAIjC,EAAO/H,SACF,KAIP,cAACsI,GAAA,EAAD,CAAUtI,SAA2B,6BAAjB+H,EAAO7d,MAAmCA,MAAO6d,EAAO7f,GAA5E,SACG6f,EAAO7d,OAD2E8f,QAM1F3T,GACC,cAAC0mB,GAAA,EAAD,CAAgBpnB,QAAS,CAAErG,UAAWqG,EAAQ+mB,WAA9C,SAA4D5d,EAAKE,OAAOJ,EAAMvyB,YCrCvE2wC,OA5Cf,YAA0G,IAA7Ej1B,EAA4E,EAA5EA,cAAewyB,EAA6D,EAA7DA,eAAgB0C,EAA6C,EAA7CA,kBACpDl7B,EAAiBsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAEzDm7B,EAAcrI,GAAaC,eAAe/yB,EAAgBgG,GAEhE,OACE,qCACE,cAAC2yB,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,cAAC,KAAD,CACEniB,KAAK,SACL20B,UAAW2b,GACX3c,SAA4B,OAAlBjY,EACV+X,MAAM,gBACNiJ,QAASmU,MAGb,cAACxC,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACGyuB,KAEY,OAAd1C,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,oBACf,cAAC0F,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,cAAC,KAAD,CACEniB,KAAK,WACL20B,UAAW2b,GACX3c,SAA4B,OAAlBjY,EACV+X,MAAM,aACNiJ,SACgB,OAAdwR,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,mBAAhB,OACIuF,QADJ,IACIA,OADJ,EACIA,EAAgBvF,kBAAkB1tB,KAAI,SAAC61B,GACrC,MAAO,CACLj1B,GAAIi1B,EAAGnjB,SACP9P,MAAOizB,EAAGnjB,SACVgG,UAAU,MAGd,WCOHod,OA5Cf,YAK0B,IAJxBn7B,EAIuB,EAJvBA,sBACAG,EAGuB,EAHvBA,sBACAib,EAEuB,EAFvBA,YACA4e,EACuB,EADvBA,mBAEMl6B,EAAiBsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAE/D,OACE,qCACE,cAAC,GAAD,CACEob,KACElb,IACCF,EAAeG,4BACqC,OAAnDH,EAAeI,iCAEnB5Q,QACEwQ,EAAeG,2BACX+5B,EACE,0DACA,4CACFl6B,EAAeI,gCAErBkb,YAAaA,EACbtvB,KAAMgU,EAAeG,2BAA6BtV,GAAO4wB,QAAU5wB,GAAO05B,QAE5E,cAAC,GAAD,CACEnJ,KACE/a,IACCL,EAAeM,4BACqC,OAAnDN,EAAeO,iCAEnB/Q,QACEwQ,EAAeM,2BACX,iDACAN,EAAeO,gCAErB+a,YAAaA,EACbtvB,KAAMgU,EAAeM,2BAA6BzV,GAAO4wB,QAAU5wB,GAAO05B,YCtBnE+W,OAnBf,YAAiE,IAAvCt1B,EAAsC,EAAtCA,cACxB,OACE,qCACE,cAAC2yB,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,cAAC,KAAD,CACEniB,KAAK,iBACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,kBACZC,WAAYjY,MAGhB,cAAC2yB,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAIuH,UAAU,kBAA7B,oHCmBSkN,OA7Bf,YAMuB,IALrBv2B,EAKoB,EALpBA,eACAuV,EAIoB,EAJpBA,sBACAG,EAGoB,EAHpBA,sBACA2F,EAEoB,EAFpBA,cACAiY,EACoB,EADpBA,SAEA,OACE,qBAAKjK,UAAU,mBAAf,SACE,cAACa,GAAA,EAAD,CACE7oB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACR2I,KAAK,sBACLoE,WAAYx2B,EACZszB,SAAU/d,GAAyBG,GAAyB4d,EAN9D,SAQG/d,GAAyBG,EACxB,cAAC2gB,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAChCnG,EACF,kBAEA,6BCmRKu1B,OAjQf,YAO4B,IAAD,oBANzBv1B,EAMyB,EANzBA,cACAw1B,EAKyB,EALzBA,cAKyB,IAJzBtB,0BAIyB,SAHzBxV,EAGyB,EAHzBA,OAGyB,IAFzB/5B,sBAEyB,aADzB8wC,gBACyB,SACnBjnC,EAAW4uB,cADQ,EAEQE,aAAY,SAAC3e,GAAD,OAAsBA,KAA3DD,EAFiB,EAEjBA,KAAM1E,EAFW,EAEXA,eAFW,EAGiC4e,oBAAkB,GAHnD,oBAGlB1e,EAHkB,KAGKw7B,EAHL,OAIiC9c,oBAAkB,GAJnD,oBAIlBve,EAJkB,KAIKs7B,EAJL,OAK+B/c,mBACtD5Y,EAAgBA,EAAczE,OAAS,CAAC,IANjB,oBAKlB+2B,EALkB,KAKIC,EALJ,KASzB1Q,qBAAU,WACH7nB,EAAelN,SAClB0B,EAASyhC,QAEV,CAACj2B,EAAelN,QAAS0B,IAE5B,IAAMonC,EAA8B,SAACpD,GACnC,QAAOA,GAAiBX,GAA6B7tC,SAA7B,OAAsCwuC,QAAtC,IAAsCA,OAAtC,EAAsCA,EAAgBnyB,WA4F1E4e,EAAa,WACbjf,EACF21B,GAAyB,GAEzBD,GAAyB,IAGvB17B,EAAeG,4BAA8BH,EAAeM,6BAC9Dk7B,KAIEL,EAAcrI,GAAaC,eAAe/yB,EAAgBgG,GAEhE,IAAKhG,EAAelN,QAClB,OAAO,cAAC,GAAD,IAGT,IAAM+oC,EAAgB,SAACC,EAA+BtD,EAAoCyB,GAApE,OACpB,qCACE,cAAC9lB,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAS,UAAKynB,EAAW,UAAY,GAA5B,cAAlC,SACGvB,GAAsBvvC,EACnB,iCACAqb,EACA,uBACA,iCAEJrb,GAAkBuvC,IAClB,eAAC/lB,GAAA,EAAD,CAAYH,UAAU,4BAAtB,sIAEY,cAAC,KAAD,CAAM9mB,GAAG,mBAAT,sCAGd,eAACyrC,GAAA,EAAD,CAAMtmB,WAAS,EAAC6mB,QAAS,EAAzB,UACE,cAAC,GAAD,CACElzB,cAAeA,EACfk1B,mBACGY,GACC,cAAC,GAAD,CACE91B,cAAeA,EACfsyB,qBAAsBA,EACtBC,wBAAyBA,EACzBC,eAAgBA,IAItBA,eAAgBA,KAEhB7tC,IAAmBuvC,IAAuBl0B,GAC1C,eAACmO,GAAA,EAAD,CAAYC,QAAQ,YAAY6K,UAAU,IAA1C,oDACoC,IAClC,cAAC,KAAD,CAAM/xB,GAAG,mBAAT,SACE,2DAIN,cAAC,GAAD,CAAgB8Y,cAAeA,IAC/B,cAAC,GAAD,CACEi0B,OAAQA,EACRj0B,cAAeA,EACfrb,eAAgBA,EAChBuvC,mBAAoBA,WAM5B,OACE,cAAC,KAAD,CACEpW,cAAe,CACbr3B,OACEuZ,GAAiBA,EAAcK,SAC3BL,EAAcK,SAASjS,WACvB+mC,EACAA,EAAYv1B,QAAO,SAACm2B,GAAD,OAASA,EAAG9d,YAAU,GAAG9X,GAC5C,IACN8R,SAAWjS,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsB+B,qBAAuB,GACzE7oC,aAAc6S,EAAgBi2B,KAAKtlB,IAAL,MAAAslB,KAAI,aAAQj2B,EAAczE,SAAU,EAClE6W,eAAiBpS,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsB7hB,iBAAmB,GAC3E8jB,cAAgBl2B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsBiC,gBAAkB,GACzEC,eAAiBn2B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsBmC,yBAA2B,GACnFC,eAAiBr2B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsBoC,iBAAmB,GAC3E9B,sBACGv0B,GAA8D,UAA7C,UAAAA,EAAci0B,cAAd,eAAsBM,uBAAiD,EAC3F+B,6BAA8Bt2B,EAAa,UAAGA,EAAci0B,cAAjB,aAAG,EAAsBqC,6BAA+B,GACnGC,eAAgBv2B,EAAa,UAAGA,EAAci0B,cAAjB,aAAG,EAAsBsC,eAAiB,GACvEC,IAAMx2B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsBwC,cAAgB,GAC7DC,qBAAuB12B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsB0C,MAAQ,IAExE5Y,iBAAkBxL,GAAQP,oBAC1BgM,SAnLwB,SAACziB,EAAgB0iB,GAC3C,IAAMsW,EAAqBh5B,EAAOg5B,mBAAqB,OAAS,QAEhE,GAAI71B,EAAKpS,QAAS,CAChB,IAAMkmC,EACJx4B,EAAelN,SAAWkN,EAAelN,QAAQ8S,QAAO,SAAC8D,GAAD,OAAOA,EAAEvD,KAAO5E,EAAO9U,UAAQ,GACnFqvC,EAAuBF,EAA4BpD,GAEzD,GAAI9zB,EAAKpS,QAAQtG,OAASV,GAAawZ,WACrC,GAAIkB,EAAe,CAAC,IAAD,YACjB21B,GAAyB,GACzB,IAAMtF,EAAyD,CAC7DlsC,WAAYu6B,EAAQve,GACpBE,SAAU1Y,OAAOqY,EAAcK,UAC/BlT,aAAc2oC,EAAuB,CAAC,GAAKxD,EAC3CsE,gBAAe,UAAEr7B,EAAOpO,oBAAT,QAAyB,EACxCilB,eAAc,UAAE7W,EAAO6W,sBAAT,aAAE,EAAuB5tB,OACvCytB,SAAQ,UAAE1W,EAAO0W,gBAAT,aAAE,EAAiBztB,OAC3B0xC,cAAa,UAAE36B,EAAO26B,qBAAT,aAAE,EAAsB1xC,OACrC+vC,qBACAiC,IAAG,UAAEj7B,EAAOi7B,WAAT,aAAE,EAAYhyC,OACjBkyC,qBAAoB,UAAEn7B,EAAOm7B,4BAAT,aAAE,EAA6BlyC,QAErDgK,EAASuhC,GAAoBM,QACxB,CAAC,IAAD,kBACLqF,GAAyB,GAEzB,IAAMtF,EAAyD,CAC7DjsC,WAAYu6B,EAAQve,GACpBy2B,gBAAe,UAAEr7B,EAAOpO,oBAAT,QAAyB,EACxCA,aAAc2oC,EAAuB,CAAC,GAAKxD,EAC3ClgB,eAAc,UAAE7W,EAAO6W,sBAAT,aAAE,EAAuB5tB,OACvC0xC,cAAa,UAAE36B,EAAO26B,qBAAT,aAAE,EAAsB1xC,OACrC2xC,eAAc,UAAE56B,EAAO46B,sBAAT,aAAE,EAAuB3xC,OACvC6xC,eAAc,UAAE96B,EAAO86B,sBAAT,aAAE,EAAuB7xC,OACvC6b,SAAUmyB,EAAgBnyB,SAC1B4R,UAAwB,OAAdugB,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,mBAAhB,UAAoC1xB,EAAO0W,gBAA3C,aAAoC,EAAiBztB,OAAS,KACxE+vC,qBACAiC,IAAG,UAAEj7B,EAAOi7B,WAAT,aAAE,EAAYhyC,OACjBkyC,qBAAsBn7B,EAAOm7B,qBAAqBlyC,OAClD8xC,6BAA4B,UAAE/6B,EAAO+6B,oCAAT,aAAE,EAAqC9xC,OACnE+xC,eAAc,UAAEh7B,EAAOg7B,sBAAT,QAA2B,IAE3C/nC,EAASshC,GAAoBM,SAG/B,GAAIpwB,EAAe,CAAC,IAAD,sBACjB21B,GAAyB,GAEzB,IAAMtF,EAAyD,CAC7DlsC,WAAYua,EAAKpS,QAAQM,SAASuT,GAClCE,SAAU1Y,OAAOqY,EAAcK,UAC/Bu2B,gBAAe,UAAEr7B,EAAOpO,oBAAT,QAAyB,EACxCA,aAAc2oC,EAAuB,CAAC,GAAKxD,EAC3ClgB,eAAc,oBAAE7W,EAAO6W,sBAAT,aAAE,EAAuB5tB,cAAzB,QAAmC,GACjD0xC,cAAa,oBAAE36B,EAAO26B,qBAAT,aAAE,EAAsB1xC,cAAxB,QAAkC,GAC/CytB,SAAQ,oBAAE1W,EAAO0W,gBAAT,aAAE,EAAiBztB,cAAnB,QAA6B,GACrC+vC,qBACAiC,IAAG,oBAAEj7B,EAAOi7B,WAAT,aAAE,EAAYhyC,cAAd,QAAwB,GAC3BkyC,qBAAoB,oBAAEn7B,EAAOm7B,4BAAT,aAAE,EAA6BlyC,cAA/B,QAAyC,IAG/DgK,EAASuhC,GAAoBM,QACxB,CAAC,IAAD,kBACLqF,GAAyB,GAEzB,IAAMtF,EAAyD,CAC7DjsC,WAAYua,EAAKpS,QAAQM,SAASuT,GAClCy2B,gBAAe,UAAEr7B,EAAOpO,oBAAT,QAAyB,EACxCA,aAAc2oC,EAAuB,CAAC,GAAKxD,EAC3ClgB,eAAc,UAAE7W,EAAO6W,sBAAT,aAAE,EAAuB5tB,OACvC0xC,cAAa,UAAE36B,EAAO26B,qBAAT,aAAE,EAAsB1xC,OACrC2xC,eAAc,UAAE56B,EAAO46B,sBAAT,aAAE,EAAuB3xC,OACvC6xC,eAAc,UAAE96B,EAAO86B,sBAAT,aAAE,EAAuB7xC,OACvC6b,SAAUmyB,EAAgBnyB,SAC1B4R,UAAwB,OAAdugB,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,mBAAoB1xB,EAAO0W,SAAW,KAChEsiB,qBACAiC,IAAG,UAAEj7B,EAAOi7B,WAAT,aAAE,EAAYhyC,OACjBkyC,qBAAoB,UAAEn7B,EAAOm7B,4BAAT,aAAE,EAA6BlyC,OACnD8xC,6BAA4B,UAAE/6B,EAAO+6B,oCAAT,aAAE,EAAqC9xC,OACnE+xC,eAAc,UAAEh7B,EAAOg7B,sBAAT,QAA2B,IAG3C/nC,EAASshC,GAAoBM,OAiGjCyG,oBAAoB,EAvBtB,SAyBG,YAAiB,IAAdt7B,EAAa,EAAbA,OACIi3B,EACJx4B,EAAelN,SAAWkN,EAAelN,QAAQ8S,QAAO,SAAC8D,GAAD,OAAOA,EAAEvD,KAAO5E,EAAO9U,UAAQ,GAEnFqwC,GAAiC,OAAdtE,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,mBAAhB,OACrBuF,QADqB,IACrBA,OADqB,EACrBA,EAAgBvF,kBAAkBrtB,QAAO,SAACw1B,GAAD,OAAQA,EAAGnjB,WAAa1W,EAAO0W,YAAU,GAClF,GAEEgiB,EAAS6C,EACXA,EAAiB7C,OAChBzB,GAAmBA,EAAevF,kBAEnCjtB,EAAa,OACbwyB,QADa,IACbA,OADa,EACbA,EAAgByB,OAChB,GAJA,OACAzB,QADA,IACAA,OADA,EACAA,EAAgByB,OAKd6B,EAAuBF,EAA4BpD,GAEnDuE,GAA2B/2B,IAAkBzE,EAAO6W,iBAAoB7W,EAAO0W,SAErF,OACE,eAAC,KAAD,CAAMjE,UAAU,2BAA2B7N,GAAG,sBAA9C,UACGxb,EACC,cAACu6B,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAU,kBAA/B,SACG6nB,EAAcC,EAAsBtD,EAAiByB,KAGxD4B,EAAcC,EAAsBtD,EAAiByB,GAEvD,cAAC,GAAD,CACEtvC,eAAgBA,EAChBuV,sBAAuBA,EACvBG,sBAAuBA,EACvB2F,cAAeA,EACfiY,SAAU8e,IAEZ,cAAC,GAAD,CACE78B,sBAAuBA,EACvBG,sBAAuBA,EACvBib,YAAa2J,EACbiV,mBAAoBA,WChOnB8C,OAxDf,YAM8B,IAL5B5hB,EAK2B,EAL3BA,KACA+H,EAI2B,EAJ3BA,QACAnd,EAG2B,EAH3BA,cAG2B,IAF3Bk0B,0BAE2B,SAD3BxV,EAC2B,EAD3BA,OAEMlwB,EAAW4uB,cACXpjB,EAAiBsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAFpC,EAGS4e,oBAAkB,GAH3B,oBAGpBqe,EAHoB,KAGRC,EAHQ,KAKrBvZ,EAAc,kBAAMR,GAAQ,IAgBlC,OAdA0E,qBAAU,WAEL7nB,EAAeW,gBACW,OAA3BX,EAAelN,SACwB,OAAvCkN,EAAeY,qBAEfpM,EAASyhC,QAEV,CAACj2B,EAAeW,eAAgBX,EAAelN,QAASkN,EAAeY,oBAAqBpM,IAO7F,eAACovB,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASyH,EAAaxC,WAAS,EAACtQ,SAAS,KAAKmD,UAAU,SAA5E,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CACEpB,SAAS,UACToI,UAAU,OACVc,QAASolB,EAVE,WACjBgD,GAAc,IASmCvZ,MAG9C3jB,EAAelN,QACd,mCACE,cAACuxB,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,SACE,cAAC,GAAD,CACEhH,cAAeA,EACfk0B,mBAAoBA,EACpBsB,cAAe7X,EACfe,OAAQA,EACR+W,UAAQ,QAKd,cAAC,GAAD,IAEF,cAAC,GAAD,CAAcrgB,KAAM6hB,EAAY9Z,QAAS+Z,QCbhCC,OArDf,WACE,IAAMzyB,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAFZ,EAGJkM,oBAAkB,GAHd,oBAGnCmQ,EAHmC,KAGtBC,EAHsB,KAIpCC,EAAuDzB,iBAAO,MAE9D0B,EAAqB,SAACxR,GACtBqR,GAAeE,EAAWjB,UAAYiB,EAAWjB,QAAQmB,SAASzR,EAAME,SAC1EoR,GAAe,IAInBnH,qBAAU,WACR,GAAIvI,EAEF,OADA8P,SAASC,iBAAiB,YAAaH,GAChC,WACLE,SAASE,oBAAoB,YAAaJ,MAI7C,CAAC5P,EAAUyP,IAEd,IAOMQ,EAA8B,CAClCC,cAAeT,EAAc,OAAS,OACtCzgB,MAAO,WAGT,OACE,cAACqS,GAAA,EAAD,CACEnN,MAAM,yDACNic,UAAU,MACVrU,KAAMkE,EAAWyP,OAAc5iC,EAC/By0B,qBAAsBtB,EACtBoQ,qBAAsBpQ,EACtBqQ,qBAAsBrQ,EACtBpD,QAAS,kBAAM8S,GAAe,IAE9BY,YAAa,CAAErT,MAAOgT,GATxB,SAWE,sBAAMza,QAxBkB,SAACoZ,GAC3BA,EAAEC,kBACE7O,GACF0P,GAAgBD,IAqBoBjB,IAAKxO,EAAW,SAACwO,GAAD,OAAUmB,EAAWjB,QAAUF,QAAO3hC,EAA1F,SACE,cAAC,GAAD,CAAY8xB,UAAQ,OAJjBqB,EAAW,SAAW,YCwGlB8d,OAxIf,WAA2B,IAAD,EAClB5oC,EAAW4uB,cADO,EAESE,aAAY,SAAC3e,GAAD,OAAsBA,KAA3DD,EAFgB,EAEhBA,KAAM1E,EAFU,EAEVA,eAFU,EAGA4e,oBAAkB,GAHlB,oBAGjBxD,EAHiB,KAGX+H,EAHW,OAIYvE,oBAAkB,GAJ9B,oBAIjBye,EAJiB,KAILC,EAJK,OAKkC1e,oBAAkB,GALpD,oBAKjBpe,EALiB,KAKM+8B,EALN,OAMkC3e,mBAA+B,MANjE,oBAMjB4e,EANiB,KAMMC,EANN,OAOkC7e,mBAA+B,MAPjE,oBAOjB8e,EAPiB,KAOMC,EAPN,KAQlBC,EAAqBrI,KACrB4F,EAAcrI,GAAaC,eAAe/yB,EAAgBw9B,GAC1DK,GAA2B,UAAA79B,EAAeA,sBAAf,eAA+B1W,WAA/B,OAA0C6xC,QAA1C,IAA0CA,OAA1C,EAA0CA,EAAa7xC,QAyDxF,OAvDAu+B,qBAAU,WAENnjB,EAAKpS,UACJ0N,EAAeD,uBACkB,OAAlCC,EAAeA,gBAC+B,OAA9CA,EAAeC,4BAEfzL,EAASohC,GAAoBlxB,EAAKpS,QAAQM,SAASuT,OAEpD,CACDzB,EAAKpS,QACL0N,EAAeD,sBACfC,EAAeA,eACfA,EAAeC,2BACfzL,IAyCEwL,EAAeD,sBAA8B,cAACihB,GAAA,EAAD,IAG/C,qCACE,sBAAKhN,UAAU,uBAAf,UACE,sBACEA,UAAS,6BAAwB6pB,EAA2B,WAAa,IACzE/oB,QAAS+oB,OAA2B1xC,EA7ChB,WAC1BsxC,EAAyB,MACzBta,GAAQ,IAyCJ,UAIE,cAAC,GAAD,IACA,cAAChP,GAAA,EAAD,CAAYC,QAAQ,YAApB,oCAEDpU,EAAeA,gBACdA,EAAeA,eAAeuF,KAAI,SAACS,EAAeiiB,GAChD,OACE,sBAAKjU,UAAU,iBAAiBc,QAAS,kBAhDzB,SAAC9O,GAC3By3B,EAAyBz3B,GACzBmd,GAAQ,GA8CiD4S,CAAoB/vB,IAAnE,UACE,qBAAKgO,UAAU,QAAf,SACGhU,EAAeA,gBAA2D,IAAzCA,EAAeA,eAAe1W,OAC9D,cAAC,GAAD,IAEA,cAACq3B,GAAA,EAAD,CAASnN,MAAM,WAAWic,UAAU,MAAMqO,WAAY,IAAtD,SACE,sBACEhpB,QAAS,SAACoZ,GACRA,EAAEC,kBAnDO,SAACnoB,GAChC23B,EAAyB33B,GACzBs3B,GAAc,GAkDQS,CAAyB/3B,IAH7B,SAME,cAAC,GAAD,UAKR,qBAAKiO,IAAKjO,EAAcg4B,eAAgB9pB,IAAI,SAC5C,cAAC2M,GAAA,EAAD,CAASC,YAAY,aAAa9M,UAAU,YAC5C,qBAAKA,UAAU,SAAf,SACE,cAACG,GAAA,EAAD,CAAY8pB,QAAM,EAACjqB,UAAU,sBAA7B,SACGhO,EAAck4B,iBArBmEjW,SA4BhG,cAAC,GAAD,CAAqB7M,KAAMA,EAAM+H,QAASA,EAASnd,cAAew3B,IAClE,cAAC,GAAD,CACEpiB,KAAMiiB,EACNla,QAASma,EACT9tC,QAAO,iEAAkDkuC,QAAlD,IAAkDA,OAAlD,EAAkDA,EAAuBQ,WAAzE,KACPzG,aAvE6B,WACjC8F,GAAyB,GAErBG,GAAyBh5B,EAAKpS,SAAW0N,EAAeA,gBAC1DxL,EACEwhC,GACEtxB,EAAKpS,QAAQM,SAASuT,GADL,OAEjBu3B,QAFiB,IAEjBA,OAFiB,EAEjBA,EAAuBr3B,SACkB,IAAzCrG,EAAeA,eAAe1W,UAgEhCsuC,eAAgBp3B,IAElB,cAAC,GAAD,CACE4a,KACE5a,IACCR,EAAeS,4BACqC,OAAnDT,EAAeU,iCAEnBlR,QACEwQ,EAAeS,2BACX,6CACA,iDAEN6a,YAxEa,WACjBiiB,GAAyB,GAErBv9B,EAAeS,4BACjBm9B,IAGFN,GAAc,IAkEVtxC,KAAMgU,EAAeS,2BAA6B5V,GAAO4wB,QAAU5wB,GAAO05B,YC9I5ErS,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX+rB,kBAAmB,CACjB7uB,UAAW,YACXnC,QAAS,YACTmF,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,SAChB7E,gBAAiB7C,KAAOqzB,kBACxBnxB,aAAc,MACdU,OAAO,aAAD,OAAe5C,KAAOszB,gBAE9BruC,KAAM,CACJ4b,SAAU,WACVsP,OAAQ,EACR/O,MAAOpB,KAAOI,QACd,QAAS,CACP4E,YAAa,kBAuBNuuB,OAbf,YAAgD,IAA7BtuC,EAA4B,EAA5BA,KAAMigB,EAAsB,EAAtBA,KACjB2D,EAAU1B,KAEhB,OACE,qBAAK8B,UAAWJ,EAAQuqB,kBAAxB,SACE,oBAAGnqB,UAAWJ,EAAQ5jB,KAAtB,UACE,+BAAOigB,IACNjgB,QCzBIuuC,GAAkB,CAC7BC,gB,4CACAC,e,+CACAC,e,6CACAC,sB,6CACAC,sB,6CACAC,Y,6CACAC,yB,6CACAC,mB,6CACAC,4B,8FAGF,sBAAAnvC,EAAA,sEACenC,GAAG,UAAgBoE,GAAS,WACtC7B,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA8BpB,EAA2BqsC,GAAzD,eAAApvC,EAAA,6DACMmkC,EAAW,IAAIC,UACVC,OAAO,OAAQ+K,GACxBjL,EAASE,OAAO,UAAW9jC,KAAKqB,UAAUmB,IAH5C,SAIelB,GAAQ,UAAcI,GAAS,UAAgBkiC,GACzD/jC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KATZ,oF,oEAaA,WAA8BkrC,GAA9B,SAAArvC,EAAA,sEACe8B,GAAG,UAAcG,GAAS,UAAgBotC,GACpDjvC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAqCmrC,GAArC,eAAAtvC,EAAA,6DACMmkC,EAAW,IAAIC,UACVC,OAAO,OAAQiL,EAAmB7Q,MAF7C,SAIe18B,GAAO,UAAYE,GAAS,SAArB,YAAqCqtC,EAAmBh1C,WAAxD,YAA8E6pC,GAC/F/jC,MAAK,SAACF,GACL,OAAOA,EAASQ,cAEjBwD,OAAM,SAACC,GACN,MAAMA,KATZ,oF,oEAaA,WAAqC7J,GAArC,SAAA0F,EAAA,sEACegC,GAAU,UAAYC,GAAS,SAArB,YAAqC3H,EAArC,aACpB8F,MAAK,SAACF,GACL,OAAOA,EAASQ,cAEjBwD,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAA2BorC,GAA3B,SAAAvvC,EAAA,sEACenC,GAAG,UAAcoE,GAAS,SAAvB,YAAuCstC,IACpDnvC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAwC7J,GAAxC,SAAA0F,EAAA,sEACenC,GAAG,UAAmBoE,GAAS,YAA5B,uBAA0D3H,IACvE8F,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAkCqrC,GAAlC,SAAAxvC,EAAA,sEACe8B,GAAG,UACXG,GAAS,SADE,yBAC2ButC,EAAoBl1C,YAC7Dk1C,GAECpvC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KATZ,oF,oEAaA,WAA2CsrC,EAAkBC,GAA7D,iBAAA1vC,EAAA,6DACQ2vC,EAAoB1xC,KAAOwxC,GAAU3wC,cACrC8wC,EAAkB3xC,KAAOyxC,GAAQ5wC,cAFzC,SAIejB,GAAG,UACXoE,GAAS,cADE,iBACwB0tC,EADxB,eACgDC,IAE7DxvC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAXZ,oF,sBC5EO,IAeM8F,GAAoB,iBAA6B,CAC5D9N,KAAMtM,KAGKggD,GAAgB,SAAC3lC,GAAD,MAAmD,CAC9E/N,KAAMrM,GACNoa,eAGW4lC,GAAwB,SAAC3rC,GAAD,MAA0C,CAC7EhI,KAAMpM,GACNoU,UAsBWiG,GAAmB,iBAA4B,CAC1DjO,KAAMnM,KAGKqa,GAAwB,SAACtH,GAAD,MAA8C,CACjF5G,KAAMlM,GACN8S,aAGWgtC,GAAuB,SAAC5rC,GAAD,MAAyC,CAC3EhI,KAAMjM,GACNiU,UAOW0qC,GAAiB,SAACQ,GAC7B,OAAO,SAAC1qC,GAGN,OAFAA,EAAS6F,MAEFkkC,GAAgBG,eAAeQ,GAAuBjvC,MAC3D,SAACF,GACCyE,EAAS8F,GAAsBvK,OAEjC,SAACiE,GACCQ,EAASqrC,GAAqB7rC,SAMzBqG,GAAmB,iBAA4B,CAC1DrO,KAAMhM,KAGKsa,GAAwB,SAAC1H,GAAD,MAA8C,CACjF5G,KAAM/L,GACN2S,aAGWitC,GAAuB,SAAC7rC,GAAD,MAAyC,CAC3EhI,KAAM9L,GACN8T,UAsBWyG,GAAkB,iBAAyB,CACtDzO,KAAM7L,KAGKua,GAAqB,SAAC9H,GAAD,MAA2C,CAC3E5G,KAAM5L,GACNwS,aAGWktC,GAAoB,SAAC9rC,GAAD,MAAsC,CACrEhI,KAAM3L,GACN2T,UAoBW+rC,GAA+B,iBAAsC,CAChF/zC,KAAM1L,KAGK0/C,GAAkC,SAC7CnlC,GAD6C,MAEV,CACnC7O,KAAMzL,GACNsa,kBAGWolC,GAAiC,SAACjsC,GAAD,MAAmD,CAC/FhI,KAAMxL,GACNwT,UAsBWksC,GAAiB,iBAA0B,CACtDl0C,KAAMvL,KAGK0/C,GAAsB,iBAA0B,CAC3Dn0C,KAAMtL,KAGK0/C,GAAqB,SAACpsC,GAAD,MAAuC,CACvEhI,KAAMrL,GACNqT,UC9MIke,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXiuB,eAAgB,CACd/xB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACf+tB,WAAY,EACZ,MAAO,CACLplB,OAAQ,wBAGZqlB,eAAe,cACbjuB,QAAS,OACTC,cAAe,MACfC,IAAK,YACLguB,SAAU,SACVlyB,MAAO,QACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnBkuB,iBAAkB,CAChBnuB,QAAS,OACTC,cAAe,MACfI,WAAY,SACZuI,OAAQ,sBACR,SAAU,CACR5I,QAAS,OACTrB,WAAY,YAEd,MAAO,CACLiK,OAAQ,SAiLDwlB,OAnKf,WAAqB,IAAD,EACZh2B,EAAQmJ,eACRrf,EAAW4uB,cACXxP,EAAU1B,KAHE,EAISoR,aAAY,SAAC3e,GAAD,OAAsBA,KAArDD,EAJU,EAIVA,KAAM9R,EAJI,EAIJA,SAJI,EAKoBgsB,oBAAkB,GALtC,oBAKX+hB,EALW,KAKEC,EALF,OAMchiB,oBAAkB,GANhC,oBAMXiiB,EANW,KAMDC,EANC,OAOwBliB,mBAAsB,MAP9C,oBAOXmiB,EAPW,KAOIC,EAPJ,OAQsBpiB,mBAAwB,MAR9C,oBAQXqiB,EARW,KAQGC,EARH,OASkBtiB,mBAAwB,MAT1C,oBASXuiB,EATW,KASCC,EATD,KAUZ9T,EAAWE,iBAAyB,MAEpClO,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEtDmV,qBAAU,WACJyF,EAASU,SAAoC,KAAzBV,EAASU,QAAQ/Z,MACvCqZ,EAASU,QAAQ/Z,IAAM4Z,OAI3BhG,qBAAU,YACH8Y,GAAej8B,EAAKpS,SAAgC,OAArBg7B,EAASU,UAC3C4S,GAAe,GAEXl8B,EAAKpS,QAAQM,SAASyuC,YACxB/T,EAASU,QAAQ/Z,IAAjB,eAA+BvP,EAAKpS,QAAQM,SAASyuC,UAAUC,YAA/D,mBAAqF58B,EAAKpS,QAAQM,SAASyuC,UAAUE,UAGxH,CAACZ,EAAaj8B,EAAKpS,UAEtB,IAyCMutB,EAAe,cAAC,GAAD,CAAcQ,OAAO,eAAeE,QAASsgB,EAAU5iB,WAAYkjB,IAExF,OACE,sBAAKntB,UAAU,iCAAf,UACE,cAAC,GAAD,CAAaR,MAAM,UAAU6M,OAASf,OAA4BnzB,EAAjB,eAA4Bo0B,QAASsgB,IACtF,eAAC3b,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAU,sBAA/B,UACE,cAAC,GAAD,CACEmZ,MAAO4T,EACP3T,SAAU4T,EACVhtC,MAAOmtC,EACP9T,SAAU+T,EACV9T,SAAUA,EACVJ,YAAU,IAEXxoB,EAAKpS,QACJ,cAAC,KAAD,CACEwxB,cAAe,CACbpM,WAAYhT,EAAKpS,QAAQM,SAAS8kB,WAClCC,QAASjT,EAAKpS,QAAQM,SAAS+kB,QAC/B6pB,kBAAmB98B,EAAKpS,QAAQM,SAAS4uC,kBACzC5pB,QAASlT,EAAKpS,QAAQM,SAASglB,QAC/BpQ,YAAa9C,EAAKpS,QAAQM,SAASwlB,eACnCP,IAAG,UAAEnT,EAAKpS,QAAQM,SAAS6/B,eAAxB,QAAmC,GAExC1O,iBAAkBxL,GAAQR,mBAC1BiM,SAlEa,SAACziB,EAAgB0iB,GACtC,GAAIvf,EAAKpS,QAAS,CAChBwuC,GAAY,GACZI,EAAgB,MAEhB,IAAM3mC,EAAyC,CAC7CpQ,WAAYua,EAAKpS,QAAQM,SAASuT,GAClCwR,QAASpW,EAAOoW,QAChBD,WAAYnW,EAAOmW,WACnB8pB,kBAAmB98B,EAAKpS,QAAQM,SAAS4uC,kBACzC5pB,QAASrW,EAAOqW,QAChB8T,gBAAiBhnB,EAAKpS,QAAQM,SAAS84B,gBACvCtT,eAAgB7W,EAAOiG,YACvBirB,QAASlxB,EAAOsW,IAChB4pB,iBAAkB/8B,EAAKpS,QAAQM,SAAS8uC,yBACxCC,qBAAsBj9B,EAAKpS,QAAQM,SAAS+uC,qBAC5CC,0BAA2Bl9B,EAAKpS,QAAQM,SAASgvC,0BACjDC,SAAUn9B,EAAKpS,QAAQM,SAASivC,SAChCC,aAAcp9B,EAAKpS,QAAQM,SAASkvC,aACpClc,qBAAsBlhB,EAAKpS,QAAQM,SAASgzB,sBAK9C,GAFApxB,EAASkqC,GAAenkC,IAEpBwmC,EAAe,CACjB,IAAM5B,EAAyC,CAC7Ch1C,WAAYua,EAAKpS,QAAQM,SAASuT,GAClCmoB,KAAMyS,GAGRxC,GAAgBI,sBAAsBQ,GAAoBprC,OAAM,SAACC,GAC/DktC,EAAgBltC,EAAMxE,eAyBtB,SAYG,YAAiB,IAAD,EAAb+R,EAAa,EAAbA,OACF,OACE,qCACE,eAAC,KAAD,CAAM4E,GAAG,eAAe6N,UAAU,OAAlC,UACE,sBAAKA,UAAWJ,EAAQ2sB,eAAxB,UACE,sBAAKvsB,UAAWJ,EAAQysB,eAAxB,UACE,uCACA,cAAC,KAAD,CAAO/1C,KAAK,aAAa20B,UAAWtC,GAAe3wB,KAAK,YAE1D,sBAAKgoB,UAAWJ,EAAQysB,eAAxB,UACE,gEACA,cAAC,KAAD,CAAO/1C,KAAK,UAAU20B,UAAWtC,GAAe3wB,KAAK,OAAOiyB,UAAQ,OAEtE,sBAAKjK,UAAWJ,EAAQysB,eAAxB,UACE,gDACA,cAAC,KAAD,CAAO/1C,KAAK,oBAAoB20B,UAAWtC,GAAe3wB,KAAK,OAAOiyB,UAAQ,UAGlF,sBAAKjK,UAAWJ,EAAQ2sB,eAAxB,UACE,sBAAKvsB,UAAWJ,EAAQysB,eAAxB,UACE,sBAAKrsB,UAAWJ,EAAQ6sB,iBAAxB,UACE,oCACA,cAAC,GAAD,CAAYjtB,MAAM,2HAEpB,cAAC,KAAD,CAAOlpB,KAAK,MAAM20B,UAAW2b,GAAiB5uC,KAAK,OAAOg7B,QAASA,GAAQyL,aAE7E,sBAAKze,UAAWJ,EAAQysB,eAAxB,UACE,oCACA,cAAC,KAAD,CAAO/1C,KAAK,UAAU20B,UAAWtC,GAAe3wB,KAAK,OAAOiyB,UAAQ,cAIzE,UAAAvZ,EAAKpS,eAAL,eAAcM,SAAS6/B,WAAYlxB,EAAOsW,KACzC,cAAC,GAAD,CACE7nB,KAAK,sHACLigB,KAAM,cAAC,GAAD,YAQlB,cAAC,GAAD,OAGHqP,GAAYO,EACb,cAAC,GAAD,CAAarM,MAAM,mBACnB,cAAC,GAAD,IACA,cAAC,GAAD,CACE4H,KAAMylB,IAAajuC,EAAS0H,uBAAiE,OAAxC1H,EAAS4H,4BAC9DhL,QACmB,OAAjByxC,EACIA,EACAruC,EAAS0H,sBACT,2CACA1H,EAAS4H,2BAEf8gB,YAzFa,WACjBwlB,GAAY,IAyFR90C,KAAO4G,EAAS0H,uBAA0C,OAAjB2mC,EAA4B,EAAJ,QClI1Dc,OA/Ef,WACE,IAAMvtC,EAAW4uB,cACX1e,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC/CgG,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAJ9B,EAKwBkM,oBAAS,GALjC,oBAKjBojB,EALiB,KAKCC,EALD,KAMlBC,EAAY1U,iBAA4B,MAuBxC3N,EACJ,cAAC,GAAD,CAAcQ,OAAO,qBAAqBE,QAASyhB,EAAkBhuB,UAAU,2BAGjF,OACE,sBAAKA,UAAU,2BAAf,UACE,cAAC,GAAD,CAAaR,MAAM,wBAAnB,UAA0C8L,GAAYO,IACtD,cAACqF,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAU,gBAA/B,SACGtP,EAAKpS,QACJ,cAAC,KAAD,CACE6vC,SAAUD,EACVpe,cAAe,CAAE7M,gBAAiB,GAAIb,SAAU,GAAIK,eAAgB,IACpEsN,iBAAkBxL,GAAQvB,qBAC1BgN,SAlCa,SAACziB,GACtB,GAAImD,EAAKpS,QAAS,CAChB,IAAMyvB,EAAqD,CACzDvc,OAAQd,EAAKpS,QAAQkT,OACrB0Q,MAAOxR,EAAKpS,QAAQ4jB,MACpBkO,YAAa7iB,EAAO0V,gBACpB6K,YAAavgB,EAAO6U,UAEtB6rB,GAAoB,GACpBztC,EAASiuB,GAAkBV,MAqBvB,SAME,eAAC,KAAD,CAAM5b,GAAG,qBAAT,UACE,cAAC,GAAD,CAAesY,UAAU,kBAAkBT,YAAY,yBACvD,cAAC,GAAD,CAAeS,UAAU,WAAWT,YAAY,wBAChD,cAAC,GAAD,CAAeS,UAAU,iBAAiBT,YAAY,gCACrDsB,GAAYO,EACb,cAAC,GAAD,CACEzE,KACE4mB,IACCt9B,EAAK1L,0BACmC,OAAvC0L,EAAKzL,+BACLyL,EAAKvL,2BACmC,OAAxCuL,EAAKtL,gCAET5J,QACEkV,EAAK1L,0BAA4B0L,EAAKvL,0BAClC,iDACAuL,EAAKzL,+BAAkCyL,EAAKtL,+BAElDkiB,YAzCK,WAGmB,IAAD,GAFnC2mB,GAAoB,GAEhBv9B,EAAK1L,4BACP,UAAAkpC,EAAUlU,eAAV,SAAmBoU,cAsCTp2C,KACE0Y,EAAK1L,0BAA4B0L,EAAKvL,0BAClCtO,GAAO4wB,QACP5wB,GAAO05B,aAMnB,cAAC,GAAD,UCnEK8d,OAlBf,SAAmBtwB,GACjB,OACE,gDAAKzD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,8BAAiC3I,GAAnG,cACE,mBAAGuwB,SAAS,wBAAZ,SACE,sBACE3nB,EAAE,+nCACFvM,KAAK,mBAGT,+BACE,0BAAUjI,GAAG,kBAAb,SACE,sBAAMmI,MAAM,KAAKC,OAAO,KAAKH,KAAK,mB,oFCiBtC8D,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXsB,QAAS,CACPpB,QAAS,OACTC,cAAe,UAEjB+kB,QAAS,CACPhlB,QAAS,OACTC,cAAe,MACfE,eAAgB,UAElBrB,OAAQ,CACN8J,OAAQ,OACR5M,MAAO,IACP1C,SAAU,QAEZk2B,aAAc,CACZ30B,QAAS,cACTmC,UAAW,OACXgD,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZ/E,gBAAiBlD,EAAME,QAAQ6b,KAAK,MAEtCjT,MAAO,CACLrG,QAAS,SACTo1B,YAAa,SACb,OAAQ,CACNj0B,MAAO,OACPgE,QAAS,OACTG,eAAgB,gBAChBE,WAAY,WAGhB3F,KAAM,CACJsB,MAAO,QAET2B,KAAM,CACJI,OAAQ,UACR,UAAW,CACTzC,gBAAiB,gBAGrBkqB,WAAY,CACV5c,OAAQ,EACR5L,UAAW,SACXnD,MAAOmZ,KAAO1V,UACdhE,SAAU,WACVmsB,WAAY,gBAkIH3P,OA7GGC,aAVM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,KACZ9R,SAAU+R,EAAM/R,aAGS,SAAC4B,GAAD,MAA0D,CACnFuqC,mBAAoB,SAACM,GAAD,OAClB7qC,EJ2G8B,SAAC6qC,GACjC,OAAO,SAAC7qC,GAGN,OAFAA,EAAS0rC,MAEF3B,GAAgBQ,mBAAmBM,GAAqBpvC,MAC7D,SAACF,GACCyE,EAAS2rC,SAEX,SAACnsC,GACCQ,EAAS4rC,GAAmBpsC,QIpHvB+qC,CAAmBM,QAgHjBjX,EAxGf,YAAuG,IAA/E1jB,EAA8E,EAA9EA,KAAM9R,EAAwE,EAAxEA,SAAUmsC,EAA8D,EAA9DA,mBAAoByD,EAA0C,EAA1CA,OAAQC,EAAkC,EAAlCA,UAAWC,EAAuB,EAAvBA,SACvE9uB,EAAU1B,KADoF,EAEpE0M,oBAAkB,GAFkD,oBAE7FiiB,EAF6F,KAEnFC,EAFmF,OAG5EliB,oBAAkB,GAH0D,oBAG7FxD,EAH6F,KAGvF+H,EAHuF,KAkCpG,OACE,qCACE,cAACjG,GAAA,EAAD,CACEhC,OAAO,SACPtH,QAAS,CAAE5G,KAAM4G,EAAQ5G,MACzBoH,QAAQ,WACR2J,MAAM,gBACN/xB,KAAK,OACLiyB,UAAQ,EACR9V,MAAOq6B,EACPnlB,WAAY,CACVG,aACE,cAACmD,GAAA,EAAD,CAASnN,MAAM,wBAAf,SACE,cAAC8J,GAAA,EAAD,CAAgBC,SAAS,MAAzB,SACE,cAAC,KAAD,CAAYpR,MAAM,UAAU2I,QAAS,kBAAMqO,GAAQ,IAAOvP,QAAS,CAAE5G,KAAM4G,EAAQ3D,eAM7F,cAAC+qB,GAAA,EAAD,CAAgBpnB,QAAS,CAAErG,UAAWqG,EAAQkkB,WAAY9qB,KAAM4G,EAAQkkB,YAAxE,2JAIA,eAAClU,GAAA,EAAD,CAAQxI,KAAMA,EAAM+F,WAAS,EAACtQ,SAAS,KAAKqL,QAAS,kBAAMiH,GAAQ,IAAnE,UACE,eAACU,GAAA,EAAD,CAAa7P,UAAWJ,EAAQJ,MAAhC,kCAEE,cAAC0L,GAAA,EAAD,CAAYpK,QAAS,kBAAMqO,GAAQ,IAAQnP,UAAWJ,EAAQ3D,KAA9D,SACE,cAAC,KAAD,CAAW7B,KAAMkX,KAAO1V,iBAG5B,eAACyU,GAAA,EAAD,CAAerQ,UAAWJ,EAAQF,QAAlC,UACE,cAACS,GAAA,EAAD,6CACA,sBAAKH,UAAWJ,EAAQkuB,aAAxB,UACE,gCAAQU,IACR,cAACtjB,GAAA,EAAD,CAAYpK,QA5DC,WACrB2tB,EAJOE,KAAUC,SAAS,CAAEt5C,OAAQ,GAAIu5C,SAAS,EAAMC,WAAW,MA+DrB9uB,UAAWJ,EAAQ3D,KAAxD,SACE,cAAC,KAAD,CAAe7B,KAAMkX,KAAO1V,oBAIlC,eAAC0U,GAAA,EAAD,CAAetQ,UAAWJ,EAAQ0jB,QAAlC,UACE,cAACziB,GAAA,EAAD,CACEC,QAAS,kBAAMqO,GAAQ,IACvBnP,UAAWJ,EAAQxC,OACnBjF,MAAM,YACNiI,QAAQ,WAJV,sBAQA,cAACS,GAAA,EAAD,CAAQC,QAtEK,WACnB,GAAIpQ,EAAKpS,QACP,GAAIowC,EACFvf,GAAQ,OACH,CACL2d,GAAY,GAEZ,IAAMzB,EAA2C,CAC/Cl1C,WAAYua,EAAKpS,QAAQM,SAASuT,GAClC27B,aAAcU,GAGhBzD,EAAmBM,KA0DcrrB,UAAWJ,EAAQxC,OAAQjF,MAAM,UAAUiI,QAAQ,YAAlF,6BAKJ,cAAC,GAAD,CACEgH,KACEylB,IAAajuC,EAASoI,2BAAyE,OAA5CpI,EAASqI,gCAE9DzL,QACEoD,EAASoI,0BACL,iDACApI,EAASqI,+BAEfqgB,YAnEa,WACjBwlB,GAAY,IAmER90C,KAAM4G,EAASoI,0BAA4BnQ,GAAO4wB,QAAU5wB,GAAO05B,c,WC7LrErS,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXC,WAAS,GACP6I,OAAQ,aADD,eAENxQ,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B,qBAAsB,CACpBwI,OAAQ,IACR5M,MAAO,UALJ,eAQP,2BAA4B,CAC1BmE,eAAgB,SAChB4kB,cAAe,cAVV,GAaT7jB,MAAO,CACLrG,QAAS,+BACTuD,UAAW,UAEbqyB,YAAa,CACXryB,UAAW,SACX9E,SAAU,YACVO,MAAOmZ,KAAOja,gBAqCL23B,OA1Bf,YAA4G,IAAtE5nB,EAAqE,EAArEA,KAAME,EAA+D,EAA/DA,YAAa2nB,EAAkD,EAAlDA,cACjDrvB,EAAU1B,KAEhB,OACE,eAAC0R,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASZ,EAAa6F,WAAS,EAACtQ,SAAS,KAAKmD,UAAWJ,EAAQvB,UAArF,UACE,cAACwR,GAAA,EAAD,CAAa7P,UAAWJ,EAAQJ,MAAhC,6EAGA,cAAC6Q,GAAA,EAAD,UACE,cAAC6e,GAAA,EAAD,CAAmBlvB,UAAWJ,EAAQmvB,YAAtC,sKAKF,eAACze,GAAA,EAAD,WACE,cAACzP,GAAA,EAAD,CAAQC,QAASwG,EAAanP,MAAM,YAAYiI,QAAQ,WAAxD,sBAGA,cAACS,GAAA,EAAD,CAAQC,QAASmuB,EAAe92B,MAAM,UAAUiI,QAAQ,YAAY+uB,WAAS,EAA7E,8B,gCC3DFC,GAAqBjxB,aAAW,CACpCye,KAAM,CACJthB,UAAW,OACXuD,aAAc,MACdvE,MAAO,UAmCI+0B,OAxBf,YAAoG,IAA3ExmB,EAA0E,EAA1EA,MAAOE,EAAmE,EAAnEA,KAAMiB,EAA6D,EAA7DA,YAAaslB,EAAgD,EAAhDA,eAC3C1vB,GAD2F,gEACjFwvB,MAShB,OACE,cAACG,GAAA,EAAD,2BACExlB,MAAOC,EACP+S,OAAO,mBACPyS,aAAa,YACT3mB,GAJN,IAKE7I,UAAWJ,EAAQgd,KACnBnT,SAda,SAACmT,GAChB,GAAIA,EAAM,CACR,IAAM6S,EAAU,IAAI/gC,KAAKkuB,EAAKjiC,eAC9BouB,EAAKgd,cAAcld,EAAMvyB,KAAMm5C,KAY/BC,cAAeJ,EACfA,eAAgBA,MClCTK,GAA0B,CACrC,CAAE5lB,MAAO,SAAU9uB,IAAK,UACxB,CAAE8uB,MAAO,QAAS9uB,IAAK,QACvB,CAAE8uB,MAAO,iBAAe9uB,IAAK,eAC7B,CAAE8uB,MAAO,eAAgB9uB,IAAK,YAC9B,CAAE8uB,MAAO,gBAAiB9uB,IAAK,cAC/B,CAAE8uB,MAAO,0BAAqB9uB,IAAK,aACnC,CAAE8uB,MAAO,kBAAmB9uB,IAAK,YACjC,CAAE8uB,MAAO,UAAW9uB,IAAK,UACzB,CAAE8uB,MAAO,SAAU9uB,IAAK,gBACxB,CAAE8uB,MAAO,uBAAqB9uB,IAAK,iBACnC,CAAE8uB,MAAO,SAAU9uB,IAAK,UACxB,CAAE8uB,MAAO,kBAAmB9uB,IAAK,oBACjC,CAAE8uB,MAAO,qBAAsB9uB,IAAK,mBAGzB20C,GAAsC,CACjD,CAAE7lB,MAAO,cAAe9uB,IAAK,oBAC7B,CAAE8uB,MAAO,8BAA4B9uB,IAAK,WAC1C,CAAE8uB,MAAO,WAAY9uB,IAAK,sBAC1B,CAAE8uB,MAAO,mBAAoB9uB,IAAK,cAClC,CAAE8uB,MAAO,SAAU9uB,IAAK,gBACxB,CAAE8uB,MAAO,UAAW9uB,IAAK,cACzB,CAAE8uB,MAAO,0BAAqB9uB,IAAK,aACnC,CAAE8uB,MAAO,QAAS9uB,IAAK,SACvB,CAAE8uB,MAAO,SAAU9uB,IAAK,YACxB,CAAE8uB,MAAO,kBAAmB9uB,IAAK,UACjC,CAAE8uB,MAAO,iBAAkB9uB,IAAK,SAGrB40C,GAA+B,CAC1C,CAAE9lB,MAAO,UAAW9uB,IAAK,UACzB,CAAE8uB,MAAO,SAAU9uB,IAAK,YACxB,CAAE8uB,MAAO,iBAAe9uB,IAAK,eAC7B,CAAE8uB,MAAO,aAAc9uB,IAAK,aAC5B,CAAE8uB,MAAO,QAAS9uB,IAAK,SACvB,CAAE8uB,MAAO,eAAgB9uB,IAAK,eCtCnB60C,GAA0B,CACrCC,2BAMF,SAAoCn2C,EAAkC8c,GACpE,OAAQ9c,GACN,KAAK1C,GAAkBsd,QACrB,OAAOkC,EAAME,QAAQO,QAAQH,MAC/B,KAAK9f,GAAkBqd,SACrB,OAAOmC,EAAME,QAAQ5T,QAAQgU,MAC/B,KAAK9f,GAAkB+d,SACrB,OAAOyB,EAAME,QAAQ5W,MAAMgX,MAC7B,KAAK9f,GAAkBkd,UACrB,OAAOsC,EAAME,QAAQ6b,KAAK,KAC5B,QACE,MAAO,KAhBXud,qBAoBF,SAA8Bp2C,EAAkC8c,GAC9D,OAAQ9c,GACN,KAAK1C,GAAkBsd,QACrB,OAAOkC,EAAME,QAAQO,QAAQD,KAC/B,KAAKhgB,GAAkBqd,SACrB,OAAOmC,EAAME,QAAQ5T,QAAQkU,KAC/B,KAAKhgB,GAAkB+d,SACrB,OAAOyB,EAAME,QAAQ5W,MAAMkX,KAC7B,KAAKhgB,GAAkBkd,UACrB,OAAOsC,EAAME,QAAQ6b,KAAK,KAC5B,QACE,MAAO,KA9BXwd,cAkCF,SAAuBr2C,GACrB,OAAQA,GACN,KAAK1C,GAAkBsd,QACrB,MAAO,YACT,KAAKtd,GAAkBqd,SACrB,MAAO,WACT,KAAKrd,GAAkB+d,SACrB,MAAO,YACT,KAAK/d,GAAkBkd,UACrB,MAAO,YACT,QACE,MAAO,KA5CX87B,sBAgDF,SAA+Bt2C,GAC7B,OAAQA,GACN,KAAK1C,GAAkBsd,QACrB,MAAO,UACT,KAAKtd,GAAkBqd,SACrB,MAAO,UACT,KAAKrd,GAAkB+d,SACrB,MAAO,QACT,KAAK/d,GAAkBkd,UAEvB,QACE,MAAO,UC5Cb,IAAM8J,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX+xB,+BAA+B,cAC7Bh3B,QAAS,cACTmB,MAAO,QACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpD,UAAW,SAGf80B,0BAA2B,CACzBj4B,MAAOyO,KAAUvP,UACjBiH,QAAS,OACTC,cAAe,SACfC,IAAK,UACLG,WAAY,cAEd0xB,cAAc,cACZ/xB,QAAS,OACTC,cAAe,MACfC,IAAK,UACLG,WAAY,SACZrE,MAAO,OACP,QAAS,CACP4M,OAAQ,IAETxQ,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnBnB,OAAO,cACL7C,OAAQ,SACRnB,SAAU,SACT1C,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPC,OAAQ,cAWD,SAAS+1B,KACtB,IAAMC,EAAcz2C,OACd02C,EAAgB12C,OAASc,SAAS,EAAG,KACrCglB,EAAU1B,KACVuyB,EAASjX,mBAJ4B,EAKmB5O,mBAAyC,IAL5D,oBAKpC8lB,EALoC,KAKXC,EALW,OAMT/lB,oBAAkB,GANT,oBAMpCgmB,EANoC,KAMzBC,EANyB,OAOCjmB,oBAAkB,GAPnB,oBAOpCkmB,EAPoC,KAOpBC,EAPoB,KAS3Cld,qBAAU,WACJid,IAAmBF,IACnBH,EAAOzW,QAAQ/mB,KAAK+9B,QACpBD,GAAkB,MAErB,CAACH,EAAWF,EAAyBI,IAExC,IAAMG,EAA2B,uCAAG,mCAAAp1C,EAAA,6DAASyvC,EAAT,EAASA,SAAUC,EAAnB,EAAmBA,OACrDsF,GAAa,GADqB,SAENtG,GAAgBS,4BAA4BM,EAAUC,GAFhD,OAE5BjsC,EAF4B,OA0B5B4xC,EAtBqB,SACzB5xC,GAEA,OAAOA,EAAa,OAChBA,QADgB,IAChBA,OADgB,EAChBA,EAAeiS,KAAI,SAAC3F,GAClB,MAAO,CACLulC,iBAAkBvlC,EAAaulC,iBAC/BC,QAASxlC,EAAawlC,QAAQC,iBAC9BC,mBAAoB1lC,EAAa2lC,SAASC,mBAC1CC,WAAY7lC,EAAa2lC,SAASG,WAClCvyC,aAAcyM,EAAa2lC,SAASI,aACpCzH,WAAYt+B,EAAa2lC,SAASK,WAAWC,WAC7CC,UAAWlmC,EAAa2lC,SAASK,WAAWG,KAAKC,OAAO,GACxD79B,MAAOvI,EAAa2lC,SAASU,OAAOC,MACpC95C,SAAUyjC,GAAeC,iBAAiBlwB,EAAa2lC,SAASU,OAAOr7C,UACvE6F,OAAQqzC,GAAwBG,cAAcrkC,EAAa2lC,SAAS16C,QACpE+lC,KAAMhxB,EAAa2lC,SAAS7iC,KAAK2iC,qBAGrC,GAGUc,CAAkB,OAAC7yC,QAAD,IAACA,OAAD,EAACA,EAAe8yC,kBAElDzB,EAA2BO,GAC3BL,GAAa,GACbE,GAAkB,GA9BgB,4CAAH,sDAiCjC,OACE,cAAC7f,GAAA,EAAD,CAAOlR,UAAWJ,EAAQuwB,+BAA1B,SACE,cAAC,KAAD,CACErgB,cAAe,CACbwb,SAAUkF,EACVjF,OAAQgF,GAEVvgB,SAAUihB,EALZ,SAOE,eAAC,KAAD,CAAMjxB,UAAWJ,EAAQwwB,0BAAzB,UACE,cAACjwB,GAAA,EAAD,CAAYC,QAAQ,QAApB,0CACA,eAACiyB,GAAA,EAAD,CAAKryB,UAAWJ,EAAQywB,cAAxB,UACE,cAAC,KAAD,CAAO/5C,KAAK,WAAW20B,UAAWokB,GAAerlB,YAAY,WAC7D,cAAC,KAAD,CAAO1zB,KAAK,SAAS20B,UAAWokB,GAAerlB,YAAY,WAC3D,eAACnJ,GAAA,EAAD,CACEb,UAAWJ,EAAQxC,OACnBplB,KAAK,SACLooB,QAAQ,YACRjI,MAAM,UACN8R,SAAU2mB,EALZ,UAOIA,EAAgC,cAAC5jB,GAAA,EAAD,CAAkBC,KAAM,KAA5C,kBACd,cAAC,WAAD,CACEsgB,KAAMmD,EACN4B,SAAS,qBACTt1C,QAAS4yC,GACT9V,IAAK2W,iBC7GrB,IAAMvyB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXm0B,uBAAwB,CACtBj0B,QAAS,OACTC,cAAe,MACfjE,MAAO,OACPmE,eAAgB,gBAChBE,WAAY,UAEd6zB,4BAA6B,CAC3Bl0B,QAAS,OACTC,cAAe,OAEjBwN,QAAS,CACP7E,OAAQ,WACRtN,gBAAiB0X,KAAOja,UACxB6C,QAAS,OAEX1G,YAAa,CACX0T,OAAQ,kBACRtP,SAAU,WACVO,MAAOmZ,KAAO1V,gBA4OL62B,OAjOf,WACE,IAAM7yB,EAAU1B,KACV1d,EAAW4uB,cACX1e,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1D9R,EAA0B0wB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,YAJjD,EAKSgsB,oBAAkB,GAL3B,oBAKhBiiB,EALgB,KAKNC,EALM,OAMeliB,oBAAkB,GANjC,oBAMhB+hB,EANgB,KAMHC,EANG,OAO+BhiB,oBAAkB,GAPjD,oBAOhB8nB,EAPgB,KAOKC,EAPL,OAQiC/nB,oBAAkB,GARnD,oBAQhBgoB,EARgB,KAQMC,EARN,OASmBjoB,oBAAkB,GATrC,oBAShBkoB,EATgB,KASDC,EATC,OAUKnoB,mBAAiB,IAVtB,oBAUhB4jB,EAVgB,KAURC,EAVQ,OAWa7jB,oBAAkB,GAX/B,oBAWhBooB,EAXgB,KAWJC,EAXI,OAYmBroB,mBAGhC,MAfa,oBAYhBsoB,EAZgB,KAYDC,EAZC,KAiBjBz8B,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAChDkrB,EAAqBrI,KAE3B1N,qBAAU,WAC2B,IAAD,SAA7B8Y,GAAej8B,EAAKpS,UACvBsuC,GAAe,GACf+F,EAAsB,UAACjiC,EAAKpS,QAAQM,SAAS84B,uBAAvB,UACtBmb,EAAuB,UAACniC,EAAKpS,QAAQM,SAASgzB,4BAAvB,UACvBmhB,EAAgB,UAACriC,EAAKpS,QAAQM,SAAS8uC,gCAAvB,UAChBe,EAAS,UAAC/9B,EAAKpS,QAAQM,SAASkvC,oBAAvB,QAAuC,OAEjD,CAACnB,EAAaj8B,EAAKpS,UAEtB,IAoCM80C,EAA0B,SAAC7lC,EAAgB0iB,GAC/C,GAAIvf,EAAKpS,QAAS,CAChBwuC,GAAY,GAEZ,IAAMvmC,EAAyC,CAC7CpQ,WAAYua,EAAKpS,QAAQM,SAASuT,GAClCwR,QAASjT,EAAKpS,QAAQM,SAAS+kB,QAC/BD,WAAYhT,EAAKpS,QAAQM,SAAS8kB,WAClCE,QAASlT,EAAKpS,QAAQM,SAASglB,QAC/B8T,gBAAiBgb,EACjB9gB,qBAAsBghB,EACtBxuB,eAAgB1T,EAAKpS,QAAQM,SAASwlB,eACtCqa,QAAS/tB,EAAKpS,QAAQM,SAAS6/B,QAC/BgP,iBAAkBqF,EAClBnF,qBAAsBpgC,EAAO2U,MAC7B0rB,0BAA2BrgC,EAAO/X,IAClCq4C,SAAUtgC,EAAOsgC,SACjBC,aAAcU,EACdhB,kBAAmB98B,EAAKpS,QAAQM,SAAS4uC,mBAG3ChtC,EAASkqC,GAAenkC,MAY5B,OACE,sBAAKyZ,UAAU,iCAAf,UACE,cAAC,GAAD,CACER,MAAM,mBACN6M,OAASf,OAAoCnzB,EAAzB,uBACpBo0B,QAASsgB,IAEVn8B,EAAKpS,QACJ,qCACE,cAAC,KAAD,CACEwxB,cAAe,CACb5N,MAAOxR,EAAKpS,QAAQM,SAAS+uC,qBAC7BE,SAAUn9B,EAAKpS,QAAQM,SAASivC,SAChCr4C,IAAKkb,EAAKpS,QAAQM,SAASgvC,2BAE7B5d,SA3Da,SAACziB,EAAgB0iB,GAClCvf,EAAKpS,WACFs0C,GAAwBliC,EAAKpS,QAAQM,SAASgzB,sBACjDqhB,GAAc,GACdE,EAAiB,CAAE5lC,SAAQ0iB,aAE3BmjB,EAAwB7lC,EAAQ0iB,KA+C9B,SAQE,eAAC,KAAD,CAAMjQ,UAAU,OAAO7N,GAAG,uBAA1B,UACE,cAAC+e,GAAA,EAAD,CAAOC,UAAW,EAAlB,SACE,sBAAKnR,UAAU,kBAAf,UACE,sBAAKA,UAAWJ,EAAQ2yB,uBAAxB,UACE,sBAAKvyB,UAAWJ,EAAQ4yB,4BAAxB,UACE,cAAC,GAAD,CAAoBr6B,MAAOmZ,KAAOja,YAClC,cAACwV,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,WAAWC,UAAQ,IACpE,cAAC5M,GAAA,EAAD,CAAYC,QAAQ,QAApB,2CAEF,cAAC,GAAD,CAAcmlB,QAASmN,EAAqBjpB,SA/F3B,SAACC,GAClCipB,EAAuBjpB,EAAME,OAAO2b,eAgGtB,mBAAGvlB,UAAWJ,EAAQpM,YAAtB,yLAMJ,cAAC0d,GAAA,EAAD,CAAOC,UAAW,EAAlB,SACE,sBAAKnR,UAAU,kBAAf,UACE,sBAAKA,UAAWJ,EAAQ2yB,uBAAxB,UACE,sBAAKvyB,UAAWJ,EAAQ4yB,4BAAxB,UACE,cAAC,GAAD,CAAWr6B,MAAOmZ,KAAOja,YACzB,cAACwV,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,WAAWC,UAAQ,IACpE,cAAC5M,GAAA,EAAD,CAAYC,QAAQ,QAApB,yCAEF,cAAC,GAAD,CAAcmlB,QAASqN,EAAsBnpB,SA3GvB,SAACC,GACvCmpB,EAAwBnpB,EAAME,OAAO2b,eA4GvB,mBAAGvlB,UAAWJ,EAAQpM,YAAtB,sPAOJ,cAAC0d,GAAA,EAAD,CAAOC,UAAW,EAAlB,SACE,sBAAKnR,UAAU,kBAAf,UACE,sBAAKA,UAAWJ,EAAQ2yB,uBAAxB,UACE,qBAAKvyB,UAAWJ,EAAQ4yB,4BAAxB,SACE,cAACryB,GAAA,EAAD,CAAYC,QAAQ,QAApB,6CAEF,cAAC,GAAD,CAAcmlB,QAASuN,EAAerpB,SAtHxB,SAACC,GAC/BqpB,EAAiBrpB,EAAME,OAAO2b,eAuHfuN,GACC,qCACE,mBAAG9yB,UAAWJ,EAAQpM,YAAtB,qEAGA,cAAC,KAAD,CACEld,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,0BACZhK,UAAU,wBAMpB,cAACG,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAU,2BAAnC,uCAGA,eAACkR,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAU,kBAA/B,UACE,cAAC,KAAD,CACE1pB,KAAK,WACL20B,UAAWtC,GACXsB,UAAQ,EACRjyB,KAAK,OACLgyB,YAAY,cAEd,cAAC,GAAD,CAAcwkB,OAAQA,EAAQC,UAAWA,IACzC,cAAC,KAAD,CACEn4C,KAAK,MACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,yCAGfsB,GACC,cAACzK,GAAA,EAAD,CAAQ7oB,KAAK,SAASmgB,MAAM,UAAUiI,QAAQ,YAAY+M,WAAS,EAAClD,SAAU4iB,EAA9E,SACGA,EAAW,cAAC7f,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,yBAKrE,cAACm4B,GAAD,OAGF,cAAC,GAAD,IAEF,cAAC,GAAD,CACElpB,KAAMylB,IAAajuC,EAAS0H,uBAAiE,OAAxC1H,EAAS4H,4BAC9DhL,QACEoD,EAAS0H,sBACL,2CACA1H,EAAS4H,2BAEf8gB,YAzHa,WACb1oB,EAAS0H,wBAA0BssC,GACrChJ,IAGFkD,GAAY,IAqHR90C,KAAM4G,EAAS0H,sBAAwBzP,GAAO4wB,QAAU5wB,GAAO05B,QAEjE,cAAC,GAAD,CACEnJ,KAAM4rB,EACN1rB,YAvKmC,WACvC2rB,GAAc,GACdE,EAAiB,OAsKblE,cAhLoC,WACxCgE,GAAc,GACVC,IACFE,EAAwBF,EAAc3lC,OAAQ2lC,EAAcjjB,SAC5DkjB,EAAiB,cChHR,OAA0B,sCCOnCj1B,GAAYC,cAAW,SAACzH,GAAD,eAC3B0H,aAAa,CACXC,WAAS,GACPkwB,YAAa,MACbjwB,QAAS,OACThE,MAAO,OACPiE,cAAe,MACfI,WAAY,SACZF,eAAgB,iBANT,eAON/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B6vB,YAAa,EACbj0B,MAAO,OACPiE,cAAe,iBACfE,eAAgB,WAXX,eAaP,QAbO,cAcL5B,SAAU,OACTnG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,OACVd,YAAa,OACb8C,aAAc,UAlBX,GAsBTw0B,OAAK,GACH/4B,MAAO,OADJ,eAEF5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPoC,UAAW,WAJV,eAMH,QANG,gBAOAhG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BJ,QAAS,UARV,eAWH,OAXG,cAYDlG,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOu8B,SACd17B,SAAU,WACTlB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B9G,SAAU,UAhBX,eAmBH,MAAO,CACLO,MAAOpB,KAAOw8B,aACdn7B,WAAYze,OAAOod,KAAOsB,kBAC1BT,SAAU,SAtBT,eAwBH,SAAU,CACRO,MAAOpB,KAAOF,QACdwF,OAAQ,UACR,UAAW,CACToB,eAAgB,eA5BjB,GAgCL+1B,KAAM,CACJjqB,SAAU,WACVe,MAAO,GACPvP,IAAK,IAEPkB,KAAM,CACJF,YAAa,kBAoCJ03B,OA3Bf,YAA8C,IAAzBz3C,EAAwB,EAAxBA,KACb0a,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAChDkB,EAAU1B,KAEhB,OACE,qCACE,cAACkT,GAAA,EAAD,CAAM+G,KAAK,QAAQvO,OAAO,SAAS5J,UAAWJ,EAAQ4zB,KAAtD,UACIloB,GACA,eAACzK,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAjC,UACE,qBAAK8H,IAAKmY,GAAgBlY,IAAI,WAAWF,UAAWJ,EAAQ3D,OAD9D,aAMJ,sBAAK+D,UAAS,UAAKJ,EAAQvB,UAAb,uBAAd,UACE,sBAAK2B,UAAWJ,EAAQyzB,MAAxB,UACE,qBAAKpzB,IAAKyzB,GAAMxzB,IAAI,qBACpB,oDACClkB,KAGH,qBAAKikB,IAAK0zB,GAAczzB,IAAI,YChCrB0zB,OAzDf,WAAiC,IAAD,EACxBpzC,EAAW4uB,cACX1e,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAE/C8P,EAAqB,cAAC,KAAD,CAAQC,cAAeC,GAAgBC,MAAM,IAElEkzB,EACJ,qCACE,8DAAuBnjC,EAAK7M,mCAA5B,aAAuB,EAAkCqe,SACzD,0GACA,gIAsBJ,OAlBA2R,qBAAU,WACR,IACGnjB,EAAK9M,0BACL8M,EAAK7M,6BACoC,OAA1C6M,EAAK5M,iCACL,CACA,IAAI+0B,EAAUtkC,GAAUE,mBACpBokC,EAAQ1mB,IAAM0mB,EAAQhL,OACxBrtB,EjFuHN,SAAC,GAAD,IAAG2R,EAAH,EAAGA,GAAI0b,EAAP,EAAOA,MAAP,OACA,SAACrtB,GAGC,OAFAA,EAASoD,MAEFypB,GAAYpvB,qBAAqB,CAAEkU,KAAI0b,UAAS5xB,MACrD,SAACF,GACCyE,EAASqD,GAA4B9H,OAEvC,SAACiE,GACCQ,EAAS2tB,GAA0BnuB,QiFhI1B/B,CAAqB,CAAEkU,GAAI0mB,EAAQ1mB,GAAI0b,MAAOgL,EAAQhL,YAGlE,CACDnd,EAAK5M,iCACL4M,EAAK7M,4BACL6M,EAAK9M,wBACLpD,IAIA,mCACGkQ,EAAK9M,wBACJ,cAAC,GAAD,IACG8M,EAAK7M,4BAeR,cAAC,GAAD,CAAW7H,KAAM63C,IAdjB,qBAAK7zB,UAAU,yCAAf,SACE,cAAC,GAAD,CACER,MAAM,6CACNF,UAAWkB,EACXb,SACE,sBAAKK,UAAU,qBAAf,UACE,mGACA,mBAAGmY,KAAK,8BAAR,kCACA,iH,qBC+CD2b,OAtFf,WACE,IAAM/yB,EAAWM,eACXzsB,EAAWy6B,eAFA,EAIqBzE,mBAAyB,MAJ9C,oBAIVmpB,EAJU,KAIGC,EAJH,OAKyBppB,mBAAwB,MALjD,oBAKVqpB,EALU,KAKKC,EALL,OAMqBtpB,oBAAkB,GANvC,oBAMVupB,EANU,KAMGC,EANH,KAQXC,EAAuB,SAAC73C,EAAa83C,GACzCN,EAAex3C,GACf03C,EAAiBI,GACjBF,GAAe,IAqCjB,OACE,sBAAKp0B,UAAU,gCAAf,UACE,cAAC,GAAD,CAAaR,MAAM,aACnB,cAAC0R,GAAA,EAAD,CAAOC,UAAW,EAAG5I,MAAO,CAAEvJ,WAAY,QAA1C,SACE,cAAC,KAAD,CACE8Q,cAAe,CAAEx5B,KAAM,GAAI4rB,MAAO,GAAI1mB,QAAS,IAC/Cw0B,SAxCe,SAACziB,EAAgB+1B,GACtCiR,KAAM,CACJj3C,OAAQ,OACR9H,IAAK,kCACL+3C,KAAMhgC,IAELtR,MAAK,SAACF,GACLunC,EAAQ9T,eAAc,GACtB8T,EAAQ8K,YACRiG,GAAqB,EAAM,+BAE5Bt0C,OAAM,SAACC,GACNsjC,EAAQ9T,eAAc,GACtB6kB,GAAqB,EAAOr0C,EAAMjE,SAASwxC,KAAKvtC,WA4B9C+vB,iBAAkBxL,GAAQG,cAH5B,SAKG,gBAAG8vB,EAAH,EAAGA,aAAH,OACC,eAAC,KAAD,CAAMriC,GAAG,SAASsiC,YAAU,EAA5B,UACE,cAAC,KAAD,CAAOtiC,GAAG,OAAO8Y,UAAWtC,GAAe3wB,KAAK,OAAO1B,KAAK,OAAO0zB,YAAY,WAC/E,cAAC,KAAD,CAAO7X,GAAG,QAAQ8Y,UAAWtC,GAAe3wB,KAAK,QAAQ1B,KAAK,QAAQ0zB,YAAY,UAClF,cAAC,KAAD,CACE7X,GAAG,UACH8Y,UAAWtC,GACXryB,KAAK,UACL0zB,YAAY,UACZE,WAAS,EACTC,KAAM,IAER,cAACtJ,GAAA,EAAD,CAAQ1I,MAAM,UAAUiI,QAAQ,YAAYpoB,KAAK,SAASiyB,SAAUuqB,EAApE,sCAOR,cAAC,GAAD,CACEptB,KAAM+sB,EACN34C,QAA2B,OAAlBy4C,EAAyBA,EAAgB,GAClD3sB,YAhDa,WACjB8sB,GAAe,GAEfM,YAAW,WACLX,IACwB,aAAtBn/C,EAAS+H,SACXokB,EAAS,SAETA,EAAS,eAIbizB,EAAe,MACfE,EAAiB,QAChB,MAmCCl8C,KAAM+7C,EAAcl9C,GAAO4wB,QAAU5wB,GAAO05B,YClErCokB,OAxBf,YAAqG,IAAD,IAAxEx8B,aAAwE,MAAhEmZ,KAAOmE,UAAyD,MAA9Cmf,mBAA8C,SAClG,OACE,sBAAKt6B,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBACEC,EAAE,sJACFvM,KAAMjC,EACN08B,eAAcD,EAAW,YAE3B,sBACEjuB,EAAE,u+CACFvM,KAAMjC,IAER,sBACEwO,EAAE,gyCACFvM,KAAMjC,IAER,sBACEwO,EAAE,s/CACFvM,KAAMjC,QCgBC28B,OAlCf,YAAmG,IAAD,IAAvE38B,aAAuE,MAA/DmZ,KAAOmE,UAAwD,MAA7Cmf,mBAA6C,SAChG,OACE,qBAAKt6B,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,oBAAGvU,GAAG,aAAN,UACE,sBACEA,GAAG,gBACHwU,EAAE,uNACFvM,KAAMjC,EACN08B,eAAcD,EAAW,YAE3B,mBAAGziC,GAAG,WAAN,SACE,oBAAGA,GAAG,0BAAN,UACE,sBACEA,GAAG,iBACHwU,EAAE,65CACFvM,KAAMjC,IAER,sBACEhG,GAAG,iBACHwU,EAAE,65CACFvM,KAAMjC,IAER,sBACEhG,GAAG,iBACHwU,EAAE,qxBACFvM,KAAMjC,eCxBd+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACTC,QAAS,OACT/D,OAAQ,OACRw6B,iBAAkB,WAClB9Q,oBAAqB,OAEvBoP,MAAM,cACJ/0B,QAAS,OACTC,cAAe,SACfI,WAAY,SACZF,eAAgB,SAChB,OAAQ,CACN/B,UAAW,WAEZhG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,SAGlBm2B,WAAY,CACV12B,QAAS,OACTC,cAAe,SACfjE,MAAO,OACPkE,IAAK,UACLy2B,UAAW,YAEb73B,OAAQ,CACNhF,WAAYze,OAAOod,KAAOsB,kBAC1BiC,MAAO,OACP,yBAA0B,CACxBnC,MAAOpB,KAAO2C,OAEhB,UAAW,CACT,SAAU,CACRU,KAAMrD,KAAOF,gBAqDRq+B,OA9Cf,WAA8B,IAAD,IACrBt1B,EAAU1B,KACV6C,EAAWM,eAEX8zB,IAAqB,UADH7lB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC/BpS,eAAN,iBAAC,EAAcM,gBAAf,aAAC,EAAwBw2C,UAEpD,OACE,qBAAKp1B,UAAS,wBAAmBJ,EAAQvB,WAAzC,SACE,sBAAK2B,UAAWJ,EAAQvB,UAAxB,UACE,sBAAK2B,UAAWJ,EAAQyzB,MAAxB,UACE,cAAClzB,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAU,QAAnC,SACGm1B,EAAqB,iCAAgC,2CAExD,cAACh1B,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAU,UAAnC,mBAEIm1B,EAAqB,0CAAyC,GAFlE,gEAMF,sBAAKn1B,UAAWJ,EAAQo1B,WAAxB,UACE,cAACn0B,GAAA,EAAD,CACEI,kBAAgB,EAChBjB,UAAWJ,EAAQxC,OACnBjF,MAAM,UACNiI,QAAQ,YACR+W,UAAW,cAAC,GAAD,CAAiBhf,MAAOpB,KAAO2C,MAAOk7B,aAAW,IAC5D9zB,QAAS,kBAAMC,EAAS,kBAN1B,iCAUA,cAACF,GAAA,EAAD,CACEI,kBAAgB,EAChBjB,UAAWJ,EAAQxC,OACnBjF,MAAM,UACNiI,QAAQ,YACR+W,UAAW,cAAC,GAAD,CAAkBhf,MAAOpB,KAAO2C,MAAOk7B,aAAW,IAC7D9zB,QAAS,kBAAMC,EAAS,oBAN1B,0CCtDKs0B,OAxBf,YAA0D,IAArCprB,EAAoC,EAApCA,SACnB,OACE,mCACE,sBAAK3P,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBACEkO,EAAE,WACFC,EAAE,MACFva,MAAM,KACNC,OAAO,KACPskB,GAAG,MACHzkB,KAAK,QACLuY,OAAQ5b,KAAOkD,sBACf+F,UAAS,2BAAsBiK,EAAW,YAAc,MAE1D,sBACEtD,EAAE,61FACFvM,KAAMrD,KAAOM,UACb2I,UAAS,UAAKiK,EAAW,6BAA+B,YCD3D,IAAMqrB,GAAa,CAAEC,iBAhB5B,SAA0B3Y,GAGxB,OAFgC,kBAATA,EAAoB,IAAIluB,KAAKkuB,GAAQA,GAChD,IAAIluB,MAc4B8mC,qBAV9C,SAA8BC,GAC5B,OAA+B,KAAb,OAAXA,QAAW,IAAXA,OAAA,EAAAA,EAAangD,SAS8CogD,mBANpE,SAA4BziC,GAAkC,IAAD,IAC3D,OAAKA,GAEGA,EAAKgB,OAAOE,QAAS,UAAAlB,EAAK0iC,oBAAL,mBAAmB1hC,cAAnB,eAA2BE,QAAS,GAF/C,ICmBLyhC,OAzBf,YAAgG,IAAD,IAA3Ez9B,aAA2E,MAAnEmZ,KAAOmE,UAA4D,EAAjDzV,EAAiD,EAAjDA,UAAiD,IAAtC40B,mBAAsC,SAC7F,OACE,sBACEt6B,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,UAQE,sBACE2G,EAAE,gjCACFvM,KAAMjC,EACNwa,OAAQxa,EACRya,YAAY,QAEd,sBACEjM,EAAE,2HACFvM,KAAMjC,EACN08B,eAAcD,EAAW,gBCrBpBiB,GAAqB,CAChClZ,aAIF,SAAsBzpB,GACpB,OAAQA,GACN,KAAKnc,GAAa2qC,QAChB,MAAO,qBACT,KAAK3qC,GAAaoc,UAChB,MAAO,gBACT,KAAKpc,GAAa0S,SAChB,MAAO,iBACT,QACE,MAAO,KAZXqsC,QAgBF,SAAiB5iC,GACf,OAAQA,GACN,KAAKnc,GAAa2qC,QAChB,OAAO,cAAC,GAAD,IACT,KAAK3qC,GAAaoc,UAChB,OAAO,cAAC,GAAD,IACT,KAAKpc,GAAa0S,SAChB,OAAO,cAAC,GAAD,IACT,QACE,OAAO,QChCN,I,MAAMssC,GAAe,CAC1BC,qBACAC,YAYF,SAAqBthC,EAAqBuhC,GACxC,OAAQvhC,GAAe,EAAIuhC,EAAM,MAAMC,QAAQ,GAAGz/C,QAAQ,IAAK,MAZ/D0/C,OAeF,SAAgBzhC,EAAqBqe,GAA0D,IACrFqjB,EAAqBrjB,EAArBqjB,YAAaH,EAAQljB,EAARkjB,IAErB,GAAIG,EACF,OAAOL,GAAkBrhC,EAAc0hC,GAGzC,OAAOL,GAAkBrhC,EAAcA,GAAe,GAAI,OAACuhC,QAAD,IAACA,IAAO,GAAK,QAnBzE,SAASF,GAAkBM,GACzB,OAAOA,EACJH,QAAQ,GACR/1C,WACA1J,QAAQ,IAAK,KACbA,QAAQ,wBAAyB,KCTtC,IAYa6/C,GAAoB,CAAEC,mBAZqB,sBACrD/+C,GAAgBg/C,QAAU,eAD2B,gBAErDh/C,GAAgBopC,MAAQ,kBAF6B,IAYF6V,sBAPK,sBACxDj/C,GAAgBg/C,QACf,2FAFuD,gBAGxDh/C,GAAgBopC,MACf,8FAJuD,KCmE5C8V,OAlEf,YAAkE,IAApCC,EAAmC,EAAnCA,OACtBlgC,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAFS,EAGzBkM,oBAAkB,GAHO,oBAGxDmQ,EAHwD,KAG3CC,EAH2C,KAIzDC,EAAuDzB,iBAAO,MAC9Dha,EACO,YAAXo3B,EACI,uEACA,8FAEA1b,EAAqB,SAACxR,GACtBqR,GAAeE,EAAWjB,UAAYiB,EAAWjB,QAAQmB,SAASzR,EAAME,SAC1EoR,GAAe,IAInBnH,qBAAU,WACR,GAAIvI,EAEF,OADA8P,SAASC,iBAAiB,YAAaH,GAChC,WACLE,SAASE,oBAAoB,YAAaJ,MAI7C,CAAC5P,EAAUyP,IAEd,IAOMQ,EAA8B,CAClCC,cAAeT,EAAc,OAAS,OACtCzgB,MAAO,WAQT,OACE,cAACqS,GAAA,EAAD,CACEnN,MAAOA,EACPic,UAAU,MACVrU,KAAMkE,EAAWyP,OAAc5iC,EAC/By0B,qBAAsBtB,EACtBoQ,qBAAsBpQ,EACtBqQ,qBAAsBrQ,EACtBpD,QAAS,kBAAM8S,GAAe,IAE9BY,YAAa,CAAErT,MAAOgT,GATxB,SAWE,sBACEza,QA9BsB,SAACoZ,GAC3BA,EAAEC,kBACE7O,GACF0P,GAAgBD,IA4BdjB,IAAKxO,EAAW,SAACwO,GAAD,OAAUmB,EAAWjB,QAAUF,QAAO3hC,EACtDowB,MArB4B,CAChCpP,QAAS,MACTmF,QAAS,OACTK,WAAY,UAeV,SAKE,cAAC,GAAD,CAAWsL,UAAQ,OARhBqB,EAAW,SAAW,YC7ClBurB,OAbf,WACE,OACE,qBAAKnwB,MAAM,6BAA6BpM,MAAM,SAASC,OAAO,SAASkM,QAAQ,oBAA/E,SACE,sBACEtU,GAAG,WACHwU,EAAE,6iBACFrJ,UAAU,mBACVlD,KAAMkX,KAAO5X,WCMNo9B,OAbf,WACE,OACE,qBAAKpwB,MAAM,6BAA6BpM,MAAM,SAASC,OAAO,SAASkM,QAAQ,oBAA/E,SACE,sBACEtU,GAAG,SACHwU,EAAE,iZACFrJ,UAAU,mBACVlD,KAAMkX,KAAO5X,WCMNq9B,OAbf,WACE,OACE,qBAAKrwB,MAAM,6BAA6BpM,MAAM,SAASC,OAAO,SAASkM,QAAQ,oBAA/E,SACE,sBACEtU,GAAG,WACHwU,EAAE,quBACFrJ,UAAU,mBACVlD,KAAMkX,KAAO5X,W,6BCPrB,SAASs9B,KAAuB,IAAD,EACsBriD,OACnD,MAAO,CACL2lB,MAH2B,EACrB28B,WAGN18B,OAJ2B,EACF28B,aCE7B,IAAMngC,GAASogC,KAAWC,OAAO,CAC/BrhD,KAAM,CACJuoB,QAAS,OACTC,cAAe,SACfI,WAAY,SACZxF,QAAS,GACTmB,MAAO,KAETkF,MAAO,CACLX,aAAc,GACdjH,SAAU,IAEZy/B,cAAe,CACb36B,UAAW,SACXpC,MAAO,OAET9G,YAAa,CACXoE,SAAU,GACV0D,UAAW,GACXnD,MAAO,QAEThE,MAAO,CACLmH,UAAW,GACX1D,SAAU,GACVQ,WAAY,QAEdiH,KAAM,CACJ9E,OAAQ,OACRD,MAAO,OACPg9B,UAAW,WAEbne,MAAO,CACL5e,OAAQ,QACRD,MAAO,QACPg9B,UAAW,aA+BAC,OApBf,YAAmE,IAAlD/hD,EAAiD,EAAjDA,IAAKge,EAA4C,EAA5CA,YAAagkC,EAA+B,EAA/BA,MAAO54C,EAAwB,EAAxBA,SAClC64C,EAA2B,iBAAa5b,GAAeC,iBAAf,OAC5C0b,QAD4C,IAC5CA,OAD4C,EAC5CA,EAAOp/C,WADwB,cAE7Bo/C,QAF6B,IAE7BA,OAF6B,EAE7BA,EAAOrjC,MAAMk9B,eAAe,UAEhC,OACE,cAAC,KAAD,UACE,eAAC,KAAD,CAAMpkB,KAAK,KAAK1E,MAAOxR,GAAOhhB,KAAM+2B,YAAY,WAAhD,UACE,cAAC,KAAD,CAAO7M,IAAK1rB,GAAU2B,cAAV,OAAwB0I,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAUuT,IAAMoW,MAAOxR,GAAOsI,OAClE,cAAC,KAAD,CAAMkJ,MAAOxR,GAAOyI,MAApB,gBAA4B5gB,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAU+kB,UACtC,cAAC,KAAD,CAAO1D,IAAKzqB,EAAM+yB,MAAOxR,GAAOoiB,QAChC,eAAC,KAAD,CAAM5Q,MAAOxR,GAAOsgC,cAApB,UACG7jC,GAAe,cAAC,KAAD,CAAM+U,MAAOxR,GAAOvD,YAApB,SAAkCA,IACjDgkC,GAAS,cAAC,KAAD,CAAMjvB,MAAOxR,GAAO5C,MAApB,SAA4BsjC,aCtC1Cv5B,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAU,cACRW,WAAY,EACZqkB,cAAe,aACd3sB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGXo9B,eAAgB,CACdp5B,QAAS,OACTG,eAAgB,WAEhB,MAAO,CACLpC,OAAQ,UACRjC,KAAMrD,KAAO6E,YAGjB+7B,eAAgB,CACdr5B,QAAS,OACTK,WAAY,UAEda,MAAO,CACL0H,OAAQ,aACRtP,SAAU,YACVmsB,WAAY,MACZ3rB,WAAYze,OAAOod,KAAOwB,qBAE5Bq/B,gBAAiB,CACf/6B,SAAU,YACVqK,OAAQ,uBACR/O,MAAOpB,KAAOM,WAEhB4E,KAAM,CACJI,OAAQ,WAEVw7B,OAAQ,CACNv5B,QAAS,OACTG,eAAgB,UAElBwrB,OAAQ,CACNjtB,WAAY,UAEd86B,WAAY,CACVx5B,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChByI,OAAQ,sBACRtP,SAAU,OACVO,MAAOpB,KAAOiD,0BA+FL+9B,OA7Ef,YAAsF,IAb5DC,EAaF5wB,EAA6D,EAA7DA,KAAM+H,EAAuD,EAAvDA,QAAS35B,EAA8C,EAA9CA,IAAKge,EAAyC,EAAzCA,YAAagkC,EAA4B,EAA5BA,MACjD9mC,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAD8B,EAE/Cka,mBAAyB,MAFsB,oBAE5EqtB,EAF4E,KAEhEC,EAFgE,KAI7Et4B,EAAU1B,KACVyR,EAAc,WAClBR,GAAQ,IAEF7U,EF1FK,WAAgC,IAAD,EACIsQ,mBAASosB,MADb,oBACrCmB,EADqC,KACnBC,EADmB,KAY5C,OATAvkB,qBAAU,WACR,SAASwkB,IACPD,EAAoBpB,MAItB,OADAriD,OAAO0mC,iBAAiB,SAAUgd,GAC3B,kBAAM1jD,OAAO2mC,oBAAoB,SAAU+c,MACjD,IAEIF,EE8EWG,GAAVh+B,MACF5D,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEhD65B,EAAc/W,sBAAW,sBAAC,kCAAA3lC,EAAA,6DACxB28C,EAAuBpd,SAASqd,cAAc,UAAgCC,YADtD,SAEXC,aACjB,cAAC,GAAD,CAAOnjD,IAAKgjD,EAAahlC,YAAaA,EAAagkC,MAAOA,EAAO54C,SAAQ,UAAE8R,EAAKpS,eAAP,aAAE,EAAcM,YACzFg6C,SAJ4B,OAExBC,EAFwB,OAK9BC,kBAAOD,EAAD,oBAAUnoC,EAAKpS,eAAf,aAAU,EAAcM,SAAS+kB,QAAjC,QACNu0B,GAAc,GANgB,2CAO7B,CAACxnC,EAAM8C,EAAagkC,IAQvB,OANA3jB,qBAAU,WACJokB,GACFM,MAED,CAACA,EAAaN,IAGf,eAACroB,GAAA,EAAD,CACExI,KAAMA,EACNc,QAASyH,EACT3P,UAAU,SACVnD,SAAS,KACT+C,QAAS,CAAEm5B,MAAOn5B,EAAQvB,WAL5B,UAOE,cAACwR,GAAA,EAAD,CAAa7P,UAAWJ,EAAQ83B,eAAhC,SACE,cAAC,KAAD,CAAW9/B,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAE1D,eAACU,GAAA,EAAD,WACE,qBAAKrQ,UAAWJ,EAAQ+3B,eAAxB,SACE,cAACx3B,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,IAAIjL,UAAWJ,EAAQJ,MAA1D,SACGhM,IAEGgkC,EAAK,UACFA,EAAMrjC,MADJ,YACa0nB,GAAeE,gBAAgByb,EAAMp/C,WACvD,oBAGP5C,GACC,gCACE,oBAAGwqB,UAAWJ,EAAQg4B,gBAAtB,kDAEE,uBAFF,wGAKA,qBAAK53B,UAAWJ,EAAQi4B,OAAxB,SACE,cAAC,KAAD,CAAQmB,eAAe,EAAM7kC,MAAO3e,EAAKy3B,KAAM3B,GArEnC0sB,EAqE+D19B,EAnEhF09B,EAAc,GAAK,IAmEsE,WAEpF,OAACR,QAAD,IAACA,OAAD,EAACA,EAAOrjC,QACR,oBAAG6L,UAAWJ,EAAQk4B,WAAtB,UACE,sBAAM93B,UAAWJ,EAAQqqB,OAAzB,qBAAgD,IAChD,uBAAMjqB,UAAWJ,EAAQqqB,OAAzB,UACGpO,GAAeC,iBAAiB0b,EAAMp/C,UAAW,IACjD29C,GAAaC,kBAAkBwB,EAAMrjC,aAI5C,cAAC0M,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAYgV,WAAS,EAACrM,QAAS,kBAAMo3B,GAAc,IAApF,oCC/INh6B,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAU,gBACP3H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGX2+B,cAAe,CACb9/B,QAAS,eAwEA+/B,OAzDf,YAAqE,IAApC9xB,EAAmC,EAAnCA,KAAM+H,EAA6B,EAA7BA,QAAS35B,EAAoB,EAApBA,IACxCoqB,EAAU1B,KAGVyR,EAAc,WAClBR,GAAQ,IAUV,OACE,eAACS,GAAA,EAAD,CACExI,KAAMA,EACNc,QAASyH,EACT3P,UAAU,SACVnD,SAAS,KACT+C,QAAS,CAAEm5B,MAAOn5B,EAAQvB,WAL5B,UAOE,cAACwR,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAE1D,eAACU,GAAA,EAAD,WACE,cAAClQ,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,IAAnC,oCAGA,cAAC,KAAD,CACE6E,cAAe,CACblL,MAAO,IAEToL,SA1BiB,SAACziB,GACxB,IAAIqX,EAAQrX,EAAOqX,MAAMpuB,OACzBouB,EAAQA,EAAMkF,WAAW,MAAjB,aAA+BlF,EAAMotB,MAAM,IAAOptB,EAC1D,IAAMu0B,EAAY,+CAA2Cv0B,EAA3C,iBATJ,wDASI,YAAoEpvB,EAApE,iBAClBb,OAAOyyB,KAAK+xB,GACZxpB,KAsBMI,iBAAkBxL,GAAQI,sBAL5B,SAOE,eAAC,KAAD,CAAM3E,UAAU,OAAhB,UACE,cAAC,KAAD,CACE1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,UACZhK,UAAU,aAEZ,cAACsQ,GAAA,EAAD,CAAetQ,UAAWJ,EAAQq5B,cAAlC,SACE,cAACp4B,GAAA,EAAD,CAAQ7oB,KAAK,SAASooB,QAAQ,YAAYjI,MAAM,UAAUgV,WAAS,EAAClM,kBAAgB,EAApF,uCChER/C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAU,gBACP3H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGX2+B,cAAe,CACb9/B,QAAS,eA2FAib,OAxEGC,aAJM,SAAC1jB,GAAD,MAAuB,CAC7C5R,MAAO4R,EAAM5R,SA2EAq1B,EAnEf,YAAmE,IAA3Cr1B,EAA0C,EAA1CA,MAAOqoB,EAAmC,EAAnCA,KAAM+H,EAA6B,EAA7BA,QAASiqB,EAAoB,EAApBA,MACtCx5B,EAAU1B,KADgD,EAG1B0M,oBAAkB,GAHQ,oBAGzDlgB,EAHyD,KAG5C2uC,EAH4C,KAI1D1pB,EAAc,WAClBR,GAAQ,IAUV,OACE,eAACS,GAAA,EAAD,CACExI,KAAMA,EACNc,QAASyH,EACT3P,UAAU,SACVnD,SAAS,KACT+C,QAAS,CAAEm5B,MAAOn5B,EAAQvB,WAL5B,UAOE,cAACwR,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAE1D,eAACU,GAAA,EAAD,WACE,cAAClQ,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,IAAnC,iCAGA,cAAC,KAAD,CACE6E,cAAe,CACb5N,MAAO,IAET8N,SA3BW,SAACziB,GAClB8rC,GAAe,GACfD,EAAM7rC,EAAO2U,QA0BP6N,iBAAkBxL,GAAQC,gBAL5B,SAOE,eAAC,KAAD,CAAMxE,UAAU,OAAhB,UACE,cAAC,KAAD,CACE1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,QACLgyB,YAAY,QACZhK,UAAU,aAEZ,cAACsQ,GAAA,EAAD,CAAetQ,UAAWJ,EAAQq5B,cAAlC,SACE,cAACp4B,GAAA,EAAD,CAAQ7oB,KAAK,SAASooB,QAAQ,YAAYjI,MAAM,UAAUgV,WAAS,EAAClM,kBAAgB,EAApF,mCAOR,cAAC,GAAD,CACEmG,KAAM1c,IAAgB3L,EAAM4L,kBAAoD,OAAhC5L,EAAM6L,uBACtDpP,QACEuD,EAAM4L,iBACF,yCACA,4CAEN2c,YAjDa,WACjB+xB,GAAe,GACf1pB,KAgDI33B,KAAM+G,EAAM4L,iBAAmB9T,GAAO4wB,QAAU5wB,GAAO05B,cCxEzDrS,GAAYC,cAAW,SAACzH,GAAD,mBAC3B0H,aAAa,CACXk7B,qBAAsB,CACpBh7B,QAAS,QAEXi7B,eAAgB,CACdj/B,MAAO,MACPyB,YAAa,QAEfy9B,WAAY,CACV5hC,SAAU,UAEZ4H,MAAO,CACLlB,QAAS,OACTK,WAAY,WACZ,QAAS,CACPxG,MAAOzB,EAAME,QAAQK,UAAUH,KAC/BiF,YAAa,WAGjB09B,cAAc,cACZ9/B,OAAO,aAAD,OAAe2X,KAAOooB,eAC5Bp7B,QAAS,OACTK,WAAY,SACZF,eAAgB,gBAChBtF,QAAS,OACTmC,UAAW,OACX,WAAW,cACTlC,SAAU,YACV6D,WAAY,QACXvG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BzB,WAAY,EACZ3C,MAAO,UAGV5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,EACTQ,OAAQ,SAGZggC,SAAU,CACRzyB,OAAQ,UAEV0yB,qBAAmB,GACjBt7B,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChByI,OAAQ,SACR1I,IAAK,QALY,eAMhB9H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAPA,eASjB,WAAY,CACVjE,MAAO,OACPnC,MAAOmZ,KAAO5X,MACdP,QAAS,cACT,qBAAsB,CACpBmF,QAAS,OACTE,IAAK,KAfQ,GAmBnBq7B,SAAU,CACRjgC,gBAAiB0X,KAAOwoB,UACxB,UAAW,CACTlgC,gBAAiB0X,KAAOyoB,gBAG5B73B,MAAO,CACLtI,gBAAiB0X,KAAO0oB,OACxB,UAAW,CACTpgC,gBAAiB0X,KAAO2oB,aAG5BC,GAAI,CACFtgC,gBAAiB0X,KAAO6oB,WACxB,UAAW,CACTvgC,gBAAiB0X,KAAO8oB,iBAG5BC,UAAQ,GACN1gC,OAAO,aAAD,OAAejD,EAAME,QAAQW,WAAWC,SAC9CyB,aAAcvC,EAAMuL,MAAMhJ,aAC1BE,QAAS,OACToB,OAAQ,QACR+D,QAAS,OACTC,cAAe,SACfI,WAAY,SACZF,eAAgB,SAChBpC,OAAQ,UACR,QAAS,CACPwC,aAAc,SAXV,eAaLnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPC,OAAQ,OACRpB,QAAS,SAhBL,eAkBN,sBAlBM,cAmBJ8D,WAAY,QACXvG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BzB,WAAY,EACZ3B,UAAW,UAtBT,GA0BRg/B,SAAO,GACLh8B,QAAS,QADJ,eAEJ5H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAHZ,eAKL,YALK,oBAMF7H,EAAM8B,YAAYsG,GAAG,MAAQ,CAC5B7B,WAAY,SAPX,eASFvG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BwI,OAAQ,WAVP,OAcPqzB,QAAQ,cACNz9B,SAAU,SACVE,WAAY,SACZD,aAAc,WACdnF,SAAU,UACTlB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BJ,QAAS,SAGbmB,SAAS,cACPnE,UAAW,QACV5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpD,UAAW,IAGfyQ,QAAS,CACP7E,OAAQ,UAEVszB,WAAY,CACV99B,UAAW,SACXvE,MAAOzB,EAAME,QAAQ5a,KAAKiuB,UAE5BwwB,OAAQ,CACNtiC,MAAOmZ,KAAO5X,MACdP,QAAS,MACTF,aAAc,MACd4F,aAAc,iBAEhB67B,gBAAiB,CACfpgC,MAAO,OACPC,OAAQ,OACRtB,aAAc,MACdW,gBAAiB0X,KAAOqpB,SACxBr8B,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChBI,aAAc,aAoNLuV,OA/LGC,aAVM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,KACZ3R,MAAO4R,EAAM5R,UAGY,SAACyB,GAAD,MAA0D,CACnFi/B,UAAW,SAACmb,GAAD,OAAoCp6C,GtDoLvB5E,EsDpL0Cg/C,EtDqL3D,SAACp6C,GAGN,OAFAA,EAASkK,MAEFw0B,GAAaO,UAAU7jC,GAASK,MACrC,SAACF,GACCyE,EAASmK,SAEX,SAAC3K,GACCQ,EAAS4gC,GAAgBphC,UATR,IAACpE,GsDnLxBwjC,WAAY,SAACyb,GAAD,OAAsCr6C,EAAS4+B,GAAWyb,QAkMzDzmB,EA1Lf,YAAkG,IAAvE1jB,EAAsE,EAAtEA,KAAM3R,EAAgE,EAAhEA,MAAO0gC,EAAyD,EAAzDA,UAAWL,EAA8C,EAA9CA,WAAYhY,EAAkC,EAAlCA,KAAM+H,EAA4B,EAA5BA,QAASlc,EAAmB,EAAnBA,KACtE2M,EAAU1B,KAD+E,EAE/C0M,oBAAkB,GAF6B,oBAExFkwB,EAFwF,KAEtEC,EAFsE,OAGzCnwB,oBAAkB,GAHuB,oBAGxFowB,EAHwF,KAGnEC,EAHmE,OAIvDrwB,oBAAkB,GAJqC,oBAIxFswB,EAJwF,KAI1EC,EAJ0E,OAKzDvwB,oBAAkB,GALuC,oBAKxFwwB,EALwF,KAK3EC,EAL2E,OAMzDzwB,oBAAkB,GANuC,oBAMxFlgB,EANwF,KAM3E2uC,EAN2E,OAO3CzuB,oBAAkB,GAPyB,oBAOxF0wB,EAPwF,KAOpEC,EAPoE,OAQjE3wB,mBAAsB,MAR2C,oBAQxF4wB,EARwF,KAQ/EC,EAR+E,KAUzF/kC,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEhDiR,EAAc,WAClBR,GAAQ,GACRssB,EAAW,OA6CPxqB,EAAa,WACbvmB,EACF2uC,GAAe,GACNiC,EACTC,GAAsB,GACbH,GACTC,GAAe,IAUnB,OANAxnB,qBAAU,WACJynB,GACFG,EAAW18C,EAAMmL,cAElB,CAACnL,EAAMmL,WAAYoxC,IAGpB,eAAC1rB,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASyH,EAAaxC,WAAS,EAACtQ,SAAS,KAAKmD,UAAU,SAA5E,UACE,eAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,UACE,wBACA,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,OAE1D,eAACU,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,UACE,qBAAKgH,UAAWJ,EAAQJ,MAAxB,SACE,cAACW,GAAA,EAAD,CAAYC,QAAQ,KAApB,kCACEo7B,GAAWvoC,EAAKC,WAAanc,GAAa2qC,QACtC,WACAzuB,EAAKC,WAAanc,GAAaoc,UAC/B,WACA,QAGR,sBAAK6M,UAAWJ,EAAQ65B,cAAxB,UACE,cAACt5B,GAAA,EAAD,CAAYH,UAAWJ,EAAQ26B,QAA/B,SAAyCiB,EAAUA,EAAQhmD,IAAX,OAAiByd,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAMzd,MACvE,cAACqrB,GAAA,EAAD,CAAQT,QAAQ,YAAYjI,MAAM,UAAU2I,QA5E5B,WACtBu6B,GAAe,GACfK,UAAUC,UAAUC,UAAU3oC,EAAKzd,IAAMyd,EAAKzd,IAAM,KA0EwByrB,kBAAgB,EAAtF,yBACYqK,EAAW,wBAA0B,SAGnD,cAACnL,GAAA,EAAD,CACEC,QAAQ,KACR6K,UAAU,IACVjL,UAAWJ,EAAQ+5B,SAHrB,mBAIK9d,GAAeC,iBAClB0f,EAAUA,EAAQvnC,OAAO7b,SAAlB,OAA6B6a,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAMgB,OAAO7b,UALnD,YAMK29C,GAAaC,kBAChBwF,EAAUA,EAAQvnC,OAAOE,MAAQmhC,GAAWI,mBAAmBziC,IAPjE,YAQKuoC,EAAUA,EAAQhoC,YAAcP,GAAQA,EAAKO,YAAcP,EAAKO,YAAc,MAEtE,OAAZgoC,GAAoBvoC,EAAKC,WAAanc,GAAaoc,WAClD,cAAC,KAAD,CACE2c,cAAe,CACbrc,WAAe,OAAJR,QAAI,IAAJA,OAAA,EAAAA,EAAMQ,WAAYR,EAAKQ,UAAY,IAEhDuc,SAtFe,SAACziB,GACxB,GAAI0F,EAAK4oC,gBAAiB,CAAC,IAAD,MACxBN,GAAsB,GACtB,IAAMO,EAAc,CAClB3lD,gBAA0CgC,KAA9B,UAAAuY,EAAKpS,eAAL,eAAcM,SAASuT,IAAvB,UAA0CzB,EAAKpS,eAA/C,aAA0C,EAAcM,SAASuT,GAAM,EACnF8B,OAAQhB,EAAKgB,OACbT,YAAW,UAAEP,EAAKO,mBAAP,QAAsB,GACjCC,UAAWlG,EAAOkG,UAClBjC,OAAQd,EAAKpS,QAAUoS,EAAKpS,QAAQkT,OAAS,GAC7C0B,SAAUnc,GAAa2qC,QACvBtc,WAAY,KACZqZ,QAASxrB,EAAKwrB,QACdsd,gBAAiB9oC,EAAK4oC,gBAAgBtqC,KAAI,SAAC4yB,GAAD,OAAiBA,EAAYhyB,MACvEyuB,YAAa3tB,EAAK2tB,aAGpB,GAAI3tB,EAAK0iC,aAAc,CACrB,IAAMqG,EAAwC,6BACzCF,GADyC,IAE5CE,iBAAkB,CAChB1Z,cAAervB,EAAK0iC,aAAarT,cACjCruB,OAAQhB,EAAK0iC,aAAa1hC,OAAOE,MACjCsqB,QAASxrB,EAAK0iC,aAAalX,WAI/BW,EAAW4c,QAEX5c,EAAW0c,KA2DP/rB,iBAAkBxL,GAAQE,mBAL5B,SAOE,eAAC,KAAD,CAAMzE,UAAU,OAAhB,UACE,sBAAKA,UAAWJ,EAAQ06B,QAAxB,UACE,cAAC,KAAD,CACEhkD,KAAK,YACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,4BACZ9C,OAAO,SAET,cAACrG,GAAA,EAAD,CAAQ7oB,KAAK,SAASooB,QAAQ,WAAWjI,MAAM,YAAY8I,kBAAgB,EAA3E,wBAIF,cAACd,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAWJ,EAAQH,SAAnD,sHAON,cAACoN,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC5B,cAAC5L,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAWJ,EAAQ46B,WAAnD,2BAGA,sBAAKx6B,UAAWJ,EAAQg6B,oBAAxB,UACE,eAAC/4B,GAAA,EAAD,CAAQb,UAAWJ,EAAQi6B,SAAU/4B,QAAS,kBAAMm6B,GAAuB,IAA3E,UACE,cAAC,GAAD,IADF,cAIA,eAACp6B,GAAA,EAAD,CAAQb,UAAWJ,EAAQsC,MAAOpB,QAAS,kBAAMi6B,GAAoB,IAArE,UACE,cAAC,GAAD,IADF,WAIC9nC,EAAKzd,KACJ,eAACqrB,GAAA,EAAD,CAAQb,UAAWJ,EAAQs6B,GAAIp5B,QAAS,kBAAMq6B,GAAgB,IAA9D,UACE,cAAC,GAAD,IADF,wBAON,cAAC,GAAD,CAAc/zB,KAAM0zB,EAAkB3rB,QAAS4rB,EAAqB3B,MAtIrD,SAACl3B,GAClBud,EAAU,CAAE9rB,OAAQV,EAAKd,GAAI+P,aAsI3B,cAAC,GAAD,CAAuBkF,KAAM4zB,EAAqB7rB,QAAS8rB,EAAwBzlD,IAAKyd,EAAKzd,MAC7F,cAAC,GAAD,CACE4xB,KAAM8zB,EACN/rB,QAASgsB,EACT3lD,IAAKyd,EAAKzd,IACVge,YAAaP,EAAKO,YAClBgkC,MAAOvkC,EAAKgB,SAEd,cAAC,GAAD,CACEmT,KAAMk0B,IAAuBv8C,EAAMkL,mBAAsD,OAAjClL,EAAMoL,wBAC9D3O,QACEuD,EAAMkL,kBACF,qCACA,uDAENqd,YAAa2J,EACbj5B,KAAM+G,EAAMkL,kBAAoBpT,GAAO4wB,QAAU5wB,GAAO05B,QAE1D,cAAC,GAAD,CACEnJ,KAAMg0B,EACN5/C,QAAQ,gCACR8rB,YAAa2J,EACbj5B,KAAMnB,GAAO4wB,gBCvYfvJ,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACTlF,QAAS,kBACT8iC,UAAW,aACXtiC,OAAO,eAAD,OAAiB5C,KAAO+G,mBAC9BtE,UAAW,QAEb0iC,aAAc,CACZ59B,QAAS,OACTK,WAAY,SACZF,eAAgB,gBAChBnE,MAAO,OACP2hC,UAAW,aACXz9B,IAAK,YAEP29B,WAAY,CACV79B,QAAS,OACTK,WAAY,SACZH,IAAK,WACL1B,SAAU,SACVC,aAAc,WACd,QAAS,CACPuvB,WAAY,EACZhyB,MAAO,OACPC,OAAQ,QAEV,MAAO,CACLsC,SAAU,OACVC,SAAU,SACVC,aAAc,WACdC,WAAY,WAGhBo/B,WAAY,CACV99B,QAAS,OACTK,WAAY,SACZF,eAAgB,WAChB,MAAO,CACL/B,UAAW,QACXI,SAAU,SACVC,aAAc,WACdC,WAAY,SACZ5E,WAAYrB,KAAOslC,iBAGvBC,eAAgB,CACdh+B,QAAS,OACTK,WAAY,SACZF,eAAgB,iBAElB89B,gBAAiB,CACf3kC,SAAU,OACVuB,QAAS,EACT,UAAW,CAAES,gBAAiB,gBAEhCmS,QAAS,CACP7E,OAAQ,WACR+tB,UAAW,SACX16B,OAAQ,eAyDCiiC,OAhDf,YAAkD,IAAD,IAA1BvpC,EAA0B,EAA1BA,KACf2M,EAAU1B,KACVu+B,EAAgB5gB,GAAeC,iBAAiB7oB,EAAKgB,OAAO7b,UAC5Duc,EAAc1B,EAAKgB,OAAOE,QAAS,UAAAlB,EAAK0iC,oBAAL,eAAmB1hC,OAAOE,QAAS,GACtEuoC,EAAiB3G,GAAaC,kBAAkBrhC,GAJP,EAKbiW,oBAAkB,GALL,oBAKxC+xB,EALwC,KAK7BC,EAL6B,KAMzCC,EAAgB5pC,EAAKmS,WAAakwB,GAAWC,iBAAiBtiC,EAAKmS,iBAAcjtB,EACjF2kD,EAAmBxH,GAAWE,qBAAX,UAAgCviC,EAAK4oC,uBAArC,QAAwD,IAOjF,OACE,eAAC3qB,GAAA,EAAD,CAAOlR,UAAWJ,EAAQvB,UAA1B,UACE,sBAAK2B,UAAWJ,EAAQs8B,aAAxB,UACE,sBAAKl8B,UAAWJ,EAAQ08B,eAAxB,UACGzG,GAAmBC,QAAQ7iC,EAAKC,UACjC,cAAC2Z,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,aACjD,+BAAOypB,GAAkBC,kBAAkBvjC,EAAK2tB,kBAElD,qBAAK5gB,UAAWJ,EAAQw8B,WAAxB,SACE,sCAAOK,EAAP,YAAwBC,UAG5B,cAAC7vB,GAAA,EAAD,IACA,sBAAK7M,UAAWJ,EAAQ08B,eAAxB,UACE,4BAAIrpC,EAAKO,YAAcP,EAAKO,YAAc,qDACzCqpC,GAAiBC,EAChB,cAAC,GAAD,CAAoBlG,OAAQiG,EAAgB,UAAY,qBAExD,cAAClwB,GAAA,EAAD,CAASnN,MAAM,YAAYic,UAAU,MAAMqO,WAAY,IAAvD,SACE,cAAC5e,GAAA,EAAD,CACEpK,QAzBa,SAAC4I,GACxBA,EAAMyQ,kBACNyiB,GAAa,IAwBH3vB,KAAK,QACLrN,QAAS,CAAEm9B,UAAWn9B,EAAQ28B,iBAHhC,SAKE,cAAC,GAAD,WAKR,cAAC,GAAD,CAAiBn1B,KAAMu1B,EAAWxtB,QAASytB,EAAc3pC,KAAMA,QCpH/DiL,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAU,cACRlF,QAAS,mBACTmF,QAAS,OACTC,cAAe,SACfjE,MAAO,MACP,mBAAoB,CAClBuE,aAAc,GAEhBL,IAAK,YACJ9H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPgB,UAAW,SAGfkE,MAAO,CACL5H,SAAU,YACVQ,WAAYze,OAAOod,KAAOwB,oBAC1BJ,MAAOpB,KAAOmG,MACd2B,aAAc,eA0BLm+B,OArBf,WACE,IAAMp9B,EAAU1B,KACRnf,EAAUuwB,aAAY,SAAC3e,GAAD,OAAsBA,KAA5C5R,MACFmK,EAAiBnK,EAAMmK,eAE7B,OACE,eAACgoB,GAAA,EAAD,CAAOlR,UAAWJ,EAAQvB,UAA1B,UACE,cAAC8B,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAWJ,EAAQJ,MAA5C,+CAGCzgB,EAAMiK,aACL,cAAC,GAAD,IACEE,GAAkBA,EAAe5T,OAAS,EAA1C,OACF4T,QADE,IACFA,OADE,EACFA,EAAgBqI,KAAI,SAAC0B,GAAD,OAAU,cAAC,GAAD,CAA2BA,KAAMA,GAAfA,EAAKd,OAErD,cAAC,GAAD,Q,UCzBO8qC,OAdf,YAA8D,IAAtCz9B,EAAqC,EAArCA,MAAOhkB,EAA8B,EAA9BA,QAC7B,OACE,sBAAKwkB,UAAU,gBAAf,UACE,cAAC,KAAD,CAAQzF,OAAO,OAAOD,MAAM,OAAOmG,cAAey8B,GAAgBv8B,MAAI,IACtE,cAACR,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAU,QAAnC,SACGR,IAEH,cAACW,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAU,UAAnC,SACGxkB,QCPH0iB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXpF,KAAM,CACJsF,QAAS,OACTG,eAAgB,SAChBE,WAAY,SACZxF,QAAS,SACTQ,OAAQ,OACRV,aAAc,OACdqB,MAAO,cACP1C,SAAU,WACV2C,OAAQ,OACR2M,OAAQ,GAEViG,UAAW,CACT7S,MAAO,aA4BE6iC,OAvBf,YAA8E,IAAxDpzB,EAAuD,EAAvDA,MAAO5R,EAAgD,EAAhDA,MAAOilC,EAAyC,EAAzCA,OAAQC,EAAiC,EAAjCA,aACpC3mC,EAAQmJ,eACRD,EAAU1B,KAEVo/B,EAAa5mC,EAAME,QAAQuB,GAAOjB,KAClC0C,EAAkBlD,EAAME,QAAQuB,GAAOnB,MACvC8I,EAAYC,aAAcrJ,EAAM8B,YAAYsG,GAAG,OAC/Cy+B,EAAWx9B,aAAc,+CAE/B,OACE,cAAC8kB,GAAA,EAAD,CACE9a,MAAOA,EACP/J,UAAS,UAAKJ,EAAQ5G,KAAb,YAAqBukC,IAAaH,EAASx9B,EAAQuN,UAAY,IACxE5E,MAAK,cACHrB,OAAQpH,IAAcs9B,EAAS,cAAWjlD,EAC1CggB,MAAOmlC,EACP1jC,gBAAiBA,GACdyjC,MCrCLn/B,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXpF,KAAM,CACJG,QAAS,OACTmF,QAAS,OACTC,cAAe,SACfM,aAAc,OACdL,IAAK,UAEPg/B,YAAa,CACX7jC,OAAO,eAAD,OAAiB5C,KAAO+G,mBAC9BtE,UAAW,OACXL,QAAS,eAEXskC,IAAK,CACHn/B,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,QAETojC,eAAgB,CACd7gC,SAAU,MACV1E,MAAOpB,KAAO6E,UACdhE,SAAU,WAEZ+lC,UAAW,CACTr/B,QAAS,OACTG,eAAgB,WAChBE,WAAY,SACZH,IAAK,SACL,OAAQ,CACN5G,SAAU,WACVQ,WAAYrB,KAAOslC,iBAGvBuB,QAAS,CACPt/B,QAAS,OACTG,eAAgB,aAChBE,WAAY,SACZH,IAAK,UAEPq/B,aAAc,CACZv/B,QAAS,OACTK,WAAY,eAiDHm/B,OAvCf,YAAkE,IAA3C9pC,EAA0C,EAA1CA,QAASzT,EAAiC,EAAjCA,YACxBqf,EAAU1B,KACV6/B,EAAoB/pC,EAAQgqC,cAAgBhqC,EAAQgqC,aAAa/pC,OAAOE,MAAQH,EAAQC,OAAOE,MAC/FuoC,EAAiB3G,GAAaC,kBAAkB+H,GAAqB/pC,EAAQC,OAAOE,OAE1F,OACE,eAAC+c,GAAA,EAAD,CAAOlR,UAAS,UAAKJ,EAAQ5G,KAAb,YAAqBzY,EAAcqf,EAAQ49B,YAAc,IAAzE,UACE,sBAAKx9B,UAAWJ,EAAQ69B,IAAxB,UACE,sBAAKz9B,UAAWJ,EAAQg+B,QAAxB,WACIr9C,GACA,sBAAMyf,UAAWJ,EAAQi+B,aAAzB,SAAwChI,GAAmBC,QAAQ9hC,EAAQd,YAE7E,+BAAOwpB,GAAWI,oBAAoB9oB,EAAQ4oB,WAEhD,cAAC,GAAD,CACE7S,MAAO+lB,GAAwBG,cAAcj8B,EAAQvX,QACrD0b,MAAO23B,GAAwBI,sBAAsBl8B,EAAQvX,aAGjE,cAACowB,GAAA,EAAD,IACA,sBAAK7M,UAAWJ,EAAQ69B,IAAxB,UACE,qBAAKz9B,UAAWJ,EAAQ89B,eAAxB,SAAyC1pC,EAAQR,aAAe,MAChE,sBAAKwM,UAAWJ,EAAQ+9B,UAAxB,UACE,eAACx9B,GAAA,EAAD,CAAYC,QAAQ,KAApB,UACE,+BAAOyb,GAAeC,iBAAiB9nB,EAAQC,OAAO7b,YACtD,+BAAOskD,QAEPn8C,GACA,qCACE,cAACssB,GAAA,EAAD,CAASC,YAAY,WAAWC,UAAQ,IACxC,qBAAK9M,IAAKjM,EAAQiqC,cAAe/9B,IAAKlM,EAAQk2B,WAAY3hB,MAAO,CAAEjO,MAAO,uBCnEzE4jC,OAvBf,YAAoD,IAAD,IAA/B/lC,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIzB,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,sBAAK1F,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBACEkO,EAAE,MACFC,EAAE,MACFva,MAAM,KACNC,OAAO,KACPskB,GAAG,MACHzkB,KAAK,QACLuY,OAAQrB,KAAOrX,sBACf+F,UAAU,sBAEZ,sBACE2G,EAAE,w1EACFvM,KAAMkX,KAAOja,gBCVf6G,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACTC,QAAS,OACTK,WAAY,SACZrE,MAAO,OACP2hC,UAAW,aACX/0B,OAAQ,cACR,MAAO,CACLA,OAAQ,IAGZi1B,WAAY,CACV79B,QAAS,OACTC,cAAe,MACfI,WAAY,SACZ7B,SAAU,SACVC,aAAc,WACd,QAAS,CACPuvB,WAAY,EACZhyB,MAAO,OACPC,OAAQ,QAEV,MAAO,CACLsC,SAAU,OACVC,SAAU,SACVC,aAAc,WACdC,WAAY,WAGhBo/B,WAAY,CACV99B,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,WAChB0/B,SAAU,EACV,MAAO,CACLzhC,UAAW,QACXtD,SAAU,OACV0D,SAAU,SACVC,aAAc,WACdC,WAAY,SACZ5E,WAAYrB,KAAOslC,iBAGvBtwB,QAAS,CACP7E,OAAQ,WACR+tB,UAAW,SACX16B,OAAQ,UAEV6C,OAAQ,CACNjE,QAAS,IACT,UAAW,CACTS,gBAAiB,gBAGrBwkC,cAAe,CACb9/B,QAAS,OACTC,cAAe,MACfI,WAAY,UAEdm5B,WAAY,CACV3/B,MAAOpB,KAAOsnC,SACdjmC,WAAY,KAEdkmC,4BAA6B,CAC3BhkC,MAAO,OAET9G,YAAa,CACX8G,MAAO,OACPnC,MAAOpB,KAAO6E,UACdhE,SAAU,UACVsH,SAAU,SACVpC,SAAU,SACVC,aAAc,iBAoDLwhC,OA1Cf,YAAmE,IAArCvqC,EAAoC,EAApCA,QACtB4L,EAAU1B,KACV6C,EAAWM,eACXzsB,EAAWy6B,eACXotB,EAAgB5gB,GAAeC,iBAAiB9nB,EAAQC,OAAO7b,UAC/D2lD,EAAoB/pC,EAAQgqC,cAAgBhqC,EAAQgqC,aAAa/pC,OAAOE,MAAQH,EAAQC,OAAOE,MAC/FuoC,EAAiB3G,GAAaC,kBAAkB+H,GAAqB/pC,EAAQC,OAAOE,OAE1F,OACE,sBAAK6L,UAAWJ,EAAQvB,UAAxB,UACE,sBAAK2B,UAAWJ,EAAQu8B,WAAxB,UACE,cAAC,GAAD,CACEpyB,MAAO+lB,GAAwBG,cAAcj8B,EAAQvX,QACrD0b,MAAO23B,GAAwBI,sBAAsBl8B,EAAQvX,QAC7D2gD,QAAM,IAER,cAACvwB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,aACjD,sBAAK9M,UAAWJ,EAAQ0+B,4BAAxB,UACE,8BAAM5hB,GAAWmB,wBAAwB7pB,EAAQ4oB,QACjD,qBAAK5c,UAAWJ,EAAQpM,YAAxB,SAAsCQ,EAAQR,aAAe,2DAGjE,sBAAKwM,UAAWJ,EAAQw8B,WAAxB,UACE,sCAAOK,EAAP,YAAwBC,KACxB,cAAC7vB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,aACjD,cAAC5B,GAAA,EAAD,CACElL,UAAWJ,EAAQxC,OACnB+W,eAAa,EACbrT,QAAS,kBACPC,EAAS,aAAD,OAAc/M,EAAQ7B,IAAM,CAClCxB,MAAO,CAAE1X,KAAMrE,EAAS+H,aAL9B,SASE,cAAC,GAAD,SAGJ,cAACkwB,GAAA,EAAD,QChHA3O,GAAYC,cAAW,SAACzH,GAAD,eAC3B0H,aAAa,CACXqB,SAAS,cACPtH,MAAOpB,KAAOmG,MACd9E,YAAarB,KAAOwB,mBACpBX,SAAU,aACTlB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPuC,SAAU,aAGd7d,UAAQ,GACNsf,QAAS,OACTC,cAAe,SACfpF,QAAS,mBACTmB,MAAO,OAJD,eAKL5D,EAAM8B,YAAYsG,GAAG,MAAQ,CAC5B,gCAAiC,CAC/BR,QAAS,QAEX,iCAAkC,CAChC+kB,cAAe,OAVb,eAaL3sB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,OACTmB,MAAO,OACP,2BAA4B,CAC1BuE,aAAc,OAjBZ,GAqBR2/B,eAAe,cACblgC,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBE,WAAY,SACZE,aAAc,QACbnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BF,IAAK,SAGTyrB,OAAQ,CACNjtB,WAAY,SACZpF,SAAU,YAEZ6mC,iBAAkB,CAChBngC,QAAS,OACT/D,OAAQ,OACRgE,cAAe,SACfE,eAAgB,iBAElBigC,kBAAmB,CACjBpkC,MAAO,OACPgE,QAAS,OACTC,cAAe,UAEjBogC,sBAAuB,CACrBpkC,OAAQ,oBACR+D,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChBI,aAAc,UAEhB+/B,uBAAqB,GACnBtkC,MAAO,OACPgE,QAAS,QAFU,eAGlB5H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,aAJO,eAMnB,WANmB,cAOjBxD,UAAW,EACXD,SAAU,EACV8N,OAAQ,SACR/N,QAAS,iBACRzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BwI,OAAQ,EACR+tB,UAAW,cAbI,GAiBrB4J,gBAAiB,CACfhgC,aAAc,OACd,kBAAmB,CACjBP,QAAS,cA6EFwgC,OAvEf,WAA8B,IAAD,EACrBpoC,EAAQmJ,eACRD,EAAU1B,KACVtpB,EAAWy6B,eACXtO,EAAWM,eACXriB,EAA0BswB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,YAClEssB,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAIhDqgC,EACJ,qBAAK/+B,UAAWJ,EAAQg/B,sBAAxB,SACE,cAAC/9B,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAY2I,QAAS,kBAAMC,EAAS,cAArE,yBAUEi+B,GACI,OAARhgD,QAAQ,IAARA,GAAA,UAAAA,EAAU4O,yBAAV,eAA6BokC,MAAM,EAAG1mB,EAff,EADC,KAgBkE,KAE5F,OACE,eAAC4F,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAWJ,EAAQ5gB,SAAxC,UACE,sBAAKghB,UAAWJ,EAAQ4+B,eAAxB,UACE,cAACr+B,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAWJ,EAAQH,SAA5C,+CAGC6L,GAAYyzB,KAEd//C,EAAS2O,gBACR,cAAC,GAAD,IACEqxC,GAAoBA,EAAiB1pD,OAAS,EAChD,sBAAK0qB,UAAWJ,EAAQ6+B,iBAAxB,UACE,qBAAKz+B,UAAWJ,EAAQ8+B,kBAAxB,SACGM,EAAiBztC,KAAI,SAACyC,EAASigB,GAAV,OACpB,qBAEEnT,QAAS,kBAAMwK,QAtB3BvK,EAAS,aAAD,OAsB6C/M,EAtB3B7B,IAAM,CAAExB,MAAO,CAAE1X,KAAMrE,EAAS+H,aAuB9CqjB,UAAS,UACNsL,GAAY2I,IAAU+qB,EAAiB1pD,OAAS,EAA8B,GAA1BsqB,EAAQi/B,iBAJjE,SAOGvzB,EACC,cAAC,GAAD,CAAmBtX,QAASA,EAASzT,aAAW,IAEhD,qCACE,cAAC,GAAD,CAAoByT,QAASA,IAC5BigB,EAAQ+qB,EAAiB1pD,OAAS,GAAK,cAACu3B,GAAA,EAAD,QAXvC7Y,EAAQ7B,UAiBjBmZ,GAAYyzB,KAGhB,qBAAK/+B,UAAWJ,EAAQ++B,sBAAxB,SACE,cAAC,GAAD,CACEn/B,MAAM,0BACNhkB,QAAQ,iEC5Jd0iB,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACX42B,WAAW,cACT12B,QAAS,QACR5H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfjE,MAAO,SAGX2kC,iBAAkB,CAChB3kC,MAAO,QAET8C,QAAM,GACJhF,WAAYze,OAAOod,KAAOsB,kBAC1BiC,MAAO,OACP,yBAA0B,CACxBnC,MAAOpB,KAAO2C,QAJZ,eAMHhD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPgB,UAAW,WART,eAUJ,UAAW,CACT,yBAA0B,CACxB,SAAU,CACRlB,KAAMrD,KAAOF,YAbf,GAkBNozB,OAAQ,CACNjtB,WAAY,SACZpF,SAAU,YAEZsnC,aAAa,cACX5gC,QAAS,OACTE,IAAK,YACLnF,UAAW,UACX,QAAQ,cACNiC,UAAW,QACV5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpD,UAAW,MAGf,sBAAsB,gBACnB5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpD,UAAW,SAGf,qBAAqB,gBAClB5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,UAGjBnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnB4gC,SAAS,cACP7jC,UAAW,KACV5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BulB,oBAAqB,cAuGdvR,OAjGf,WAAsB,IAAD,QACblyB,EAAW4uB,cADE,EAEeE,aAAY,SAAC3e,GAAD,OAAsBA,KAA5DD,EAFW,EAEXA,KAAM1R,EAFK,EAELA,SAAUD,EAFL,EAEKA,MAClBgiB,EAAWM,eACXzB,EAAU1B,KACV1kB,EAAU4lD,mBACd,iBAAO,CACLpmD,SAAUlC,GAASmD,UACnBvB,WAAYvB,GAAuBuX,KACnC/V,cAAetB,GAASoX,QAE1B,IAKItY,EAAU,iBAAGua,QAAH,IAAGA,GAAH,UAAGA,EAAMpS,eAAT,iBAAG,EAAeM,gBAAlB,aAAG,EAAyBuT,UAA5B,SAAmC,EAqCnD,OAnCA0hB,qBAAU,WACR,IAAMwrB,EAA4C,CAChDrmD,SAAUlC,GAASmD,UACnB7B,SAAU,CAAEE,OAAO,EAAMC,SAAS,GAClCG,WAAYvB,GAAuBuX,KACnC/V,cAAetB,GAASoX,OAGR,IAAhBtY,GACC6I,EAAS2O,iBACqB,OAA/B3O,EAAS4O,mBACyB,OAAlC5O,EAAS2P,sBAETnO,EAASd,GAAc2/C,EAjBd,EACK,EAgBoDlpD,GAAY,MAE/E,CACDA,EACAqK,EACAxB,EAAS4O,kBACT5O,EAAS2O,gBACT3O,EAASA,SACTA,EAAS2P,uBAGXklB,qBAAU,YAEU,IAAhB19B,GACC4I,EAAMiK,cACkB,OAAzBjK,EAAMmK,gBACsB,OAA5BnK,EAAM+K,mBAENtJ,EAAS2+B,GAAW3lC,EAnCX,EACK,EAkCgCrD,EAAYY,GAAa8D,KAAK,GAAM,GAAM,MAEzF,CAAC1E,EAAYqK,EAAUzB,EAAMmK,eAAgBnK,EAAM+K,kBAAmB/K,EAAMiK,aAAcxP,IAEzFuF,EAAMiK,cAAgBhK,EAAS2O,gBAAwB,cAAC,GAAD,IAGzD,sBAAKqS,UAAU,6BAAf,UACE,cAAC,GAAD,CACER,MAAM,UACNG,UACE,UAAA5gB,EAAMmK,sBAAN,eAAsB5T,QAAU,EAC9B,sBAAK0qB,UAAWJ,EAAQo1B,WAAxB,UACE,cAACn0B,GAAA,EAAD,CACEI,kBAAgB,EAChBjB,UAAWJ,EAAQxC,OACnBjF,MAAM,UACNiI,QAAQ,YACR+W,UAAW,cAAC,GAAD,CAAiBhf,MAAOpB,KAAO2C,MAAOk7B,aAAW,IAC5D9zB,QAAS,kBAAMC,EAAS,kBAN1B,iCAUA,qBAAKf,UAAWJ,EAAQq/B,mBACxB,cAACp+B,GAAA,EAAD,CACEI,kBAAgB,EAChBjB,UAAWJ,EAAQxC,OACnBjF,MAAM,UACNiI,QAAQ,YACR+W,UAAW,cAAC,GAAD,CAAkBhf,MAAOpB,KAAO2C,MAAOk7B,aAAW,IAC7D9zB,QAAS,kBAAMC,EAAS,oBAN1B,oCAYF,KAIN,sBAAKf,UAAWJ,EAAQs/B,aAAxB,UACE,cAAC,GAAD,IACA,cAAC,GAAD,WC2GOI,OAnRf,WACE,IAAMv+B,EAAWM,eACXzsB,EAAWy6B,eACX3Y,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAChDhO,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAUrDmjB,qBAAU,WACHnjB,EAAKpS,SAASyiB,GAAU,KAC5B,CAACrQ,EAAKpS,QAASyiB,IAElB,IAAMw+B,EACJ,sBAAKv/B,UAAU,YAAf,UACE,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,+CAGA,eAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,gGAEE,qBAAIhoB,KAAK,IAAT,UACE,+BACE,+CADF,8OAKA,+BACE,gDADF,iRAOJ,cAAC60B,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,kEAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,kKAIA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,mDAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,uKAIA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,gEAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,SACE,qBAAIhoB,KAAK,IAAT,UACE,gNAIA,sGACA,4IAIA,mMAIA,mFACA,4KAIA,uLAMJ,cAAC60B,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,2DAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,oQAKA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,uFAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,sXAMA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,4DAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,+SAKA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,sFAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,wHAGA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,sEAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,oMAIA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,2DAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,uHAIA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,2EAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,8TAKA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,YACnB,qBAAKA,UAAU,MAAf,SACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,iBAA1C,+DAQFw/B,EACJ,sBAAKx/B,UAAU,YAAf,UACE,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,mDAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,qUAMA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,kEAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,wOAKA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,sEAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,mHAGA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,sEAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,qIAIA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,0CAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,sKAIA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,+FAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,6GAGA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,sBAAKA,UAAU,MAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,oGAGA,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,SAA1C,mOAKA,cAAC6M,GAAA,EAAD,CAAS7M,UAAU,eAErB,qBAAKA,UAAU,MAAf,SACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,WAA1C,4DAOAy/B,EACJ,cAAC5+B,GAAA,EAAD,CAAQ1I,MAAM,UAAUiI,QAAQ,YAAYU,QA5P1B,WACQ,UAAtBlsB,EAAS+H,SACXokB,EAAS,YAETA,EAAS,kBAwPX,4BAKF,OACE,sBAAKf,UAAU,wBAAf,UACE,qBAAKA,UAAU,gBAAf,SACE,cAAC,GAAD,CAAaR,MAAM,uBAAuBG,UAAW2L,GAAYm0B,MAE5C,UAAtB7qD,EAAS+H,SAAuB6iD,EAAaD,EAC9C,qBAAKv/B,UAAU,UAAf,SAA0BsL,GAAYm0B,QCrR7B,OAA0B,uCCA1B,OAA0B,kCC0D1BC,OApDf,WACE,IAAM3+B,EAAWM,eACX5lB,EAAU,IAAIC,KASpB,YAP6BvD,IAAzBsD,EAAQ/B,IAAI,WACd+B,EAAQiB,OAAO,QAAS,CACtBI,KAAM,MAERnI,OAAOC,SAASosB,UAIhB,sBAAKhB,UAAU,eAAf,UACE,sBAAKA,UAAU,QAAf,UACE,eAACG,GAAA,EAAD,CAAYH,UAAU,QAAQI,QAAQ,KAAtC,UACE,sBAAMJ,UAAU,aAAhB,+BACA,uBAFF,sBAE2B,uBAF3B,2BAKA,eAACG,GAAA,EAAD,CAAYH,UAAU,WAAWI,QAAQ,KAAK6K,UAAU,KAAxD,gEACkD,uBADlD,sDAGA,qBAAKhL,IAAK0/B,GAASz/B,IAAI,eAEzB,sBAAKF,UAAU,eAAf,UACE,cAACa,GAAA,EAAD,CACET,QAAQ,YACRU,QAAS,kBAAMC,EAAS,WACxBf,UAAU,wBACV7H,MAAM,UACNgV,WAAS,EALX,kCASA,cAACtM,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,EAAS,cACxBf,UAAU,uBACViB,kBAAgB,EAChBkM,WAAS,EANX,4BAWF,qBAAKnN,UAAU,QAAf,SACE,qBAAKC,IAAK2E,GAAO1E,IAAI,gB,oBChBd0/B,OAzBf,YAA2E,IAAtDpgC,EAAqD,EAArDA,MAAOC,EAA8C,EAA9CA,SAAUogC,EAAoC,EAApCA,iBAC9BC,EAActgC,GAAgB,uBAE9BugC,EAAkB,mBAAG//B,UAAU,WAAb,SAAyBP,GAAsB,qCAEjEH,EAAY,cAAC,KAAD,CAAQmB,cAAeC,GAAgBC,MAAM,IAEzDjB,EACJ,mCACGmgC,GACC,eAAC1/B,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,mBAA1C,iCACsB,uBACnB6/B,OAMT,OACE,qBAAK7/B,UAAU,2BAAf,SACE,cAAC,GAAD,CAAeR,MAAOsgC,EAAargC,SAAUsgC,EAAiBzgC,UAAWA,EAAWI,QAASA,OCvB7FxB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAO,CACL5/B,QAAS,UACTmB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACfC,IAAK,UACLjH,WAAYR,KAAO2C,MACnBmD,SAAU,YACVrD,UAAWzC,KAAOyC,UAClBG,OAAO,aAAD,OAAe5C,KAAOkD,wBAE9BkF,YAAa,CACXvH,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAOwB,0BA2DjBynC,OAjDf,YAAoE,IAAzC/sC,EAAwC,EAAxCA,KAAMrU,EAAkC,EAAlCA,SACzBghB,EAAU1B,KAEVwB,EACJ,eAACwR,GAAA,EAAD,CAAOlR,UAAWJ,EAAQm5B,MAA1B,UACE,cAAC54B,GAAA,EAAD,CAAYH,UAAWJ,EAAQT,YAA/B,qBACA,sBAAKa,UAAU,mBAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAApB,kCACA,cAACD,GAAA,EAAD,CAAYC,QAAQ,QAApB,SAA6Bsc,GAAWI,oBAAX,OAA+B7pB,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAMA,KAAKmS,iBAEzE,cAACyH,GAAA,EAAD,CAAS7M,UAAU,YACnB,sBAAKA,UAAU,mBAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAApB,6BACA,cAACD,GAAA,EAAD,CAAYC,QAAQ,QAApB,SAA6BxhB,EAAS8kB,gBAExC,cAACmJ,GAAA,EAAD,CAAS7M,UAAU,YACnB,sBAAKA,UAAU,mBAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAApB,4BACA,cAACD,GAAA,EAAD,CAAYC,QAAQ,QAApB,UAAiC,OAAJnN,QAAI,IAAJA,OAAA,EAAAA,EAAMA,KAAKO,cAAe,SAEzD,sBAAKwM,UAAU,8BAAf,UACE,eAACG,GAAA,EAAD,CAAYC,QAAQ,YAApB,oBAEGnN,EAAKA,KAAKwrB,QAAU,GAAK,sBAAMze,UAAU,MAAhB,yBAE5B,eAACG,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAU,SAAnC,UACE,+BAAO6b,GAAeC,iBAAiB7oB,EAAKA,KAAKgB,OAAO7b,YACvD29C,GAAaC,kBAAkB/iC,EAAKA,KAAKgB,OAAOE,aAGrD,cAAC0Y,GAAA,EAAD,CAAS7M,UAAU,YACnB,sBAAKA,UAAU,mBAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAApB,wBACA,cAACD,GAAA,EAAD,CAAYC,QAAQ,QAApB,UAAiC,OAAJnN,QAAI,IAAJA,OAAA,EAAAA,EAAMA,KAAKQ,YAAa,YAK3D,OACE,qBAAKuM,UAAU,2BAAf,SACE,cAAC,GAAD,CACER,MAAM,mBACNC,SAAS,qEACTC,QAASA,O,sBCzEXxB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX6hC,mBAAoB,CAClB3hC,QAAS,OACTO,aAAc,WACd1F,QAAS,gBACTkD,OAAQ,UACR7C,UAAWzC,KAAOmpC,gBAEpBC,2BAA4B,CAC1B7hC,QAAS,OACTO,aAAc,WACd1F,QAAS,gBACTkD,OAAQ,UACR7C,UAAWzC,KAAOmpC,eAClBtmC,gBAAiB7C,KAAOqpC,aACxBzmC,OAAO,aAAD,OAAe5C,KAAOF,UAE9BwpC,eAAgB,CACdzmC,gBAAiB7C,KAAO2C,MACxB4E,QAAS,OACTG,eAAgB,SAChB6hC,aAAc,SACdnnC,QAAS,WACTQ,OAAO,aAAD,OAAe5C,KAAOuF,eAC5BP,YAAa,YACb,QAAS,CACPzB,MAAO,QAGXimC,sBAAuB,CACrBjiC,QAAS,OACTC,cAAe,SACfE,eAAgB,SAChB,OAAQ,CACN7G,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOsnC,SACdn3B,OAAQ,GAEV,MAAO,CACLtP,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOM,UACd6P,OAAQ,SAoCDs5B,OAxBf,YAA+E,IAAzD/nD,EAAwD,EAAxDA,OAAQ+rC,EAAgD,EAAhDA,eAAgBic,EAAgC,EAAhCA,YACtC7X,EAAkBnwC,EAAO8U,OAAOmzC,MAAK,SAAC7kD,EAAG8kD,GAAJ,OAAUA,EAAI9kD,KAAG,GACtD+jB,EAAU1B,KAEhB,OACE,eAAC0iC,GAAA,EAAD,CACE5gC,WACgB,OAAdwkB,QAAc,IAAdA,OAAA,EAAAA,EAAgBryB,MAAO1Z,EAAO0Z,GAAKyN,EAAQugC,2BAA6BvgC,EAAQqgC,mBAElFn/B,QAAS,WACP2/B,GAAeA,EAAYhoD,IAL/B,UAQE,qBAAKunB,UAAWJ,EAAQygC,eAAxB,SACE,qBAAKpgC,IAAKxnB,EAAOuxC,eAAgB9pB,IAAKznB,EAAOyxC,eAE/C,sBAAKlqB,UAAWJ,EAAQ2gC,sBAAxB,UACE,6BAAK9nD,EAAOyxC,aACZ,+CAAgBtB,EAAhB,YAAuD,IAApBA,EAAwB,QAAU,mB,iCCpD9DiY,OAvBf,YAAqD,IAAD,IAA/B1oC,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAI1B,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOiiB,aACxBvzB,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,IACPkM,QAAQ,WACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,sDACFgM,OAAQxa,EACRuc,cAAc,QACdosB,eAAe,aCfjB5iC,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXk+B,eAAgB,CACdh+B,QAAS,OACTC,cAAe,MACfjE,MAAO,OACPmE,eAAgB,gBAChBE,WAAY,SACZuI,OAAQ,cACR1I,IAAK,OACL,MAAO,CACLrG,MAAOpB,KAAOM,UACdO,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1B6O,OAAQ,EACRxK,UAAW,OAEb,eAAgB,CACdwK,OAAQ,yBAgCD65B,OAtBf,YAA6D,IAAnC51C,EAAkC,EAAlCA,UAClByU,EAAU1B,KAEhB,OACE,qCACE,sBAAK8B,UAAWJ,EAAQ08B,eAAxB,UACE,+CACA,4BAAInxC,EAAUqI,iBAEfrI,EAAU+H,WAAanc,GAAa2qC,SACnC,qCACE,cAAC7U,GAAA,EAAD,IACA,sBAAK7M,UAAWJ,EAAQ08B,eAAxB,UACE,2CACA,4BAAInxC,EAAUsI,UAAYtI,EAAUsI,UAAY,gBClCtDyK,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX4iC,cAAe,CACbxnC,UAAW,OACXI,gBAAiB,cACjB,iBAAkB,CAChBsN,OAAQ,GAEV,6BAA8B,CAC5B5I,QAAS,SAGb2iC,iBAAkB,CAChB3mC,MAAO,OACPgB,UAAW,UACX1B,gBAAiB,UACjB,iCAAkC,CAChCsN,OAAQ,EACR/N,QAAS,GAEX,MAAO,CACLhB,MAAOpB,KAAOM,UACde,WAAY,IACZR,SAAU,WAEZ,2CAA4C,CAC1CyB,UAAW,SAGf6nC,iBAAkB,CAChB3iC,cAAe,SACfpF,QAAS,eA0BAgoC,OAjBf,YAAyE,IAAzCh2C,EAAwC,EAAxCA,UACxByU,EAAU1B,KAEhB,OACE,eAACkjC,GAAA,EAAD,CAAWphC,UAAWJ,EAAQohC,cAA9B,UACE,qBAAKhhC,UAAWJ,EAAQqhC,iBAAxB,SACE,cAACI,GAAA,EAAD,CAAkBC,WAAY,cAAC,GAAD,IAA9B,SACE,qDAGJ,cAACC,GAAA,EAAD,CAAkBvhC,UAAWJ,EAAQshC,iBAArC,SACE,cAAC,GAAD,CAAgB/1C,UAAWA,UCzD7B+S,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXojC,oBAAqB,CACnB5nC,gBAAiB7C,KAAOuF,cACxBhC,MAAO,OACPgB,UAAW,WACXoB,UAAW,SACX,MAAO,CACLwK,OAAQ,UACR/O,MAAOpB,KAAOM,UACde,WAAY,IACZR,SAAU,YAGd0kC,eAAgB,CACdh+B,QAAS,OACTC,cAAe,MACfjE,MAAO,OACPmE,eAAgB,gBAChBE,WAAY,SACZuI,OAAQ,cACR,MAAO,CACL/O,MAAOpB,KAAOM,UACdO,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1B6O,OAAQ,GAEV,eAAgB,CACdA,OAAQ,oBAGZu6B,MAAO,CACLtpC,MAAOpB,KAAOwa,cACd3Z,SAAU,OACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,EACR,SAAU,CACRtP,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOM,YAGlB1C,YAAa,CACXwD,MAAOpB,KAAOwa,cACd3Z,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,QA+BCw6B,OAtBf,YAAmE,IAAD,EAArCv2C,EAAqC,EAArCA,UACrByU,EAAU1B,KACVvJ,EAAcxJ,EAAU8I,OAAOE,QAAS,UAAAhJ,EAAUwqC,oBAAV,eAAwB1hC,OAAOE,QAAS,GAEtF,OACE,qCACE,qBAAK6L,UAAWJ,EAAQ4hC,oBAAxB,SACE,mDAEF,cAAC,GAAD,CAAgBr2C,UAAWA,IAC3B,cAAC0hB,GAAA,EAAD,IACA,sBAAK7M,UAAWJ,EAAQ08B,eAAxB,UACE,qBAAIt8B,UAAWJ,EAAQ6hC,MAAvB,mBAAqCt2C,EAAUszB,QAAU,GAAK,+CAC9D,qBAAIze,UAAWJ,EAAQjL,YAAvB,UACGknB,GAAeC,iBAAiB3wB,EAAU8I,OAAO7b,UACjD29C,GAAaC,kBAAkBrhC,aCnEpCuJ,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXujC,SAAS,cACPrjC,QAAS,OACTC,cAAe,SACfjE,MAAO,MACPnB,QAAS,YACToB,OAAQ,eACP7D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGXsnC,OAAQ,CACNtjC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,SAChBlE,OAAQ,QAEV4e,MAAO,CACLtc,SAAU,QACV6pB,UAAW,QACX3qB,YAAa,WAEfgQ,QAAS,CACPxR,OAAQ,MACR2M,OAAQ,UAEV26B,aAAc,CACZ,MAAO,CACL1pC,MAAOpB,KAAOM,UACdO,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1B6O,OAAQ,GAEV,OAAQ,CACN/O,MAAOpB,KAAOM,UACdO,SAAU,YACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,yBAwCD46B,OA7Bf,YAAuE,IAA7CljD,EAA4C,EAA5CA,SAAUuM,EAAkC,EAAlCA,UAC5ByU,EAAU1B,KACVxH,EAAQmJ,eAFsD,EAG9C+K,mBAASr2B,GAAU2B,cAAciV,EAAUhV,aAHG,oBAG7D8pB,EAH6D,KAGxD8hC,EAHwD,KAI9Dz2B,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAMtD,OACE,eAACkiC,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQ+hC,SAAzB,UACE,sBAAK3hC,UAAWJ,EAAQgiC,OAAxB,UACE,qBAAK5hC,UAAWJ,EAAQuZ,MAAOlZ,IAAKA,EAAK8Z,QAP1B,WACnBgoB,EAAOloB,KAM6D3Z,IAAI,wBACpE,cAAC2M,GAAA,EAAD,CAASC,YAAY,WAAW9M,UAAWJ,EAAQmM,QAASgB,UAAQ,IACpE,sBAAK/M,UAAWJ,EAAQiiC,aAAxB,UACE,gDACA,oCAAKjjD,QAAL,IAAKA,OAAL,EAAKA,EAAU8kB,mBAGlB4H,EACC,cAAC,GAAD,CAAsBngB,UAAWA,IAEjC,cAAC,GAAD,CAAmBA,UAAWA,QC3DvB62C,OArBf,YAAyD,IAAD,IAA/B7pC,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAI9B,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,kzBACFvM,KAAMjC,OCVR+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX6jC,gBAAiB,CACf14B,SAAU,QACVpQ,QAAS,YACT+oC,OAAQ,EACR53B,MAAO,EACPhM,QAAS,OACTC,cAAe,SACfC,IAAK,OACLC,eAAgB,WAChB7E,gBAAiB,QACjBU,MAAO,OACPd,UAAWzC,KAAOorC,0BAEpB7F,eAAgB,CACdh+B,QAAS,OACTC,cAAe,MACfjE,MAAO,OACPmE,eAAgB,gBAChBE,WAAY,SACZ,MAAO,CACLxG,MAAOpB,KAAOM,UACdO,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1B6O,OAAQ,GAEV,eAAgB,CACdA,OAAQ,oBAGZu6B,MAAO,CACLtpC,MAAOpB,KAAOwa,cACd3Z,SAAU,OACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,EACR,SAAU,CACRtP,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOM,YAGlB1C,YAAa,CACXwD,MAAOpB,KAAOwa,cACd3Z,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,GAEVk7B,QAAS,CACP9jC,QAAS,OACTC,cAAe,MACfC,IAAK,OACLlE,MAAO,OACPmE,eAAgB,YAElB4jC,WAAW,cACT/nC,MAAO,OACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,UACVzD,SAAU,iBA4EHkpC,OA1Df,YAU0B,IATxB1sD,EASuB,EATvBA,KACA2sD,EAQuB,EARvBA,QACA/d,EAOuB,EAPvBA,eACAvwB,EAMuB,EANvBA,OACA7b,EAKuB,EALvBA,SACAqmC,EAIuB,EAJvBA,QAIuB,IAHvB+jB,kBAGuB,SAFvBn2B,EAEuB,EAFvBA,OACAkD,EACuB,EADvBA,WAEM3P,EAAU1B,KAMhB,OACE,sBAAK8B,UAAWJ,EAAQqiC,gBAAxB,YACKO,GAAeA,GAAuB,IAAT5sD,GAAcqe,IAC5C,qCACE,sBAAK+L,UAAWJ,EAAQ08B,eAAxB,UACE,qBAAIt8B,UAAWJ,EAAQ6hC,MAAvB,mBAAqChjB,GAAWA,EAAU,EAAI,4CAAwB,MACtF,qBAAIze,UAAWJ,EAAQjL,YAAvB,UACGknB,GAAeC,iBAAiB1jC,GAChC29C,GAAaC,kBAAkB/hC,SAGpC,cAAC4Y,GAAA,EAAD,OAGJ,sBAAK7M,UAAWJ,EAAQwiC,QAAxB,UACY,IAATxsD,GACC,cAACirB,GAAA,EAAD,CACEC,QAAS,kBAAMyhC,EAAQ,IACvBniC,QAAQ,WACRjI,MAAM,YACN6H,UAAWJ,EAAQyiC,WAJrB,SAME,cAAC,GAAD,MAGJ,cAACxhC,GAAA,EAAD,CACEC,QA9ByB,WAC1BuL,GAAQk2B,EAAQ,IA8BfniC,QAAQ,YACRjI,MAAM,UACN8R,UAAWua,IAAmBvwB,GAAUsb,EACxCpC,WAAS,EACTn1B,KAAMq0B,EAAS,SAAW,SAC1BtD,KAAMsD,EAPR,SASGkD,EAAa,cAACvC,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,qBC9HnE+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXujC,SAAS,cACPrjC,QAAS,OACTC,cAAe,SACfI,WAAY,SACZrE,MAAO,MACPnB,QAAS,YACToB,OAAQ,eACP7D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGXyR,QAAS,CACPzR,MAAO,OACPC,OAAQ,aAEVkoC,yBAA0B,CACxBnkC,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChBtF,QAAS,WACT0F,aAAc,YACdvE,MAAO,OACPX,OAAO,cAAD,OAAgB5C,KAAO0b,OAE/BiwB,sBAAuB,CACrBpkC,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChBtF,QAAS,EACT0F,aAAc,YACdvE,MAAO,QAET6e,MAAM,cACJtc,SAAU,WACV6pB,UAAW,YACVhwB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B3C,YAAa,YAGjBylC,oBAAqB,CACnB5nC,gBAAiB7C,KAAOuF,cACxBhC,MAAO,OACPgB,UAAW,WACXoB,UAAW,SACX,MAAO,CACLwK,OAAQ,UACR/O,MAAOpB,KAAOM,UACde,WAAY,IACZR,SAAU,YAGd0kC,eAAgB,CACdh+B,QAAS,OACTC,cAAe,MACfjE,MAAO,OACPmE,eAAgB,gBAChBE,WAAY,SACZuI,OAAQ,cACR,MAAO,CACL/O,MAAOpB,KAAOM,UACdO,SAAU,WACVQ,WAAYze,OAAOod,KAAOsB,kBAC1B6O,OAAQ,GAEV,eAAgB,CACdA,OAAQ,mBAEV,gBAAiB,CACf9O,WAAYze,OAAOod,KAAOwB,sBAG9BkpC,MAAO,CACLtpC,MAAOpB,KAAOwa,cACd3Z,SAAU,OACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,EACR,SAAU,CACRtP,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOM,YAGlB1C,YAAa,CACXwD,MAAOpB,KAAOwa,cACd3Z,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,GAEV06B,OAAQ,CACNtjC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,SAChBlE,OAAQ,QAEVsnC,aAAc,CACZ,MAAO,CACL1pC,MAAOpB,KAAOM,UACdO,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1B6O,OAAQ,GAEV,OAAQ,CACN/O,MAAOpB,KAAOM,UACdO,SAAU,YACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,yBA8DDy7B,OAlDf,YAAoF,IAAtD/jD,EAAqD,EAArDA,SAAU7J,EAA2C,EAA3CA,OAAQkf,EAAmC,EAAnCA,OACxC2L,EAAU1B,KADiE,EAE3D0M,mBAASr2B,GAAU2B,cAAV,OAAwB0I,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAUuT,KAFgB,oBAE1E8N,EAF0E,KAErE8hC,EAFqE,KAG3ErrC,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEhDkkC,EAAe,WACnBb,EAAOloB,KAGT,OACE,cAAC+mB,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQ+hC,SAAzB,SACIr2B,EA0BA,sBAAKtL,UAAWJ,EAAQgiC,OAAxB,UACE,qBAAK5hC,UAAWJ,EAAQuZ,MAAOlZ,IAAKA,EAAK8Z,QAAS6oB,EAAc1iC,IAAI,wBACpE,sBAAKF,UAAWJ,EAAQiiC,aAAxB,UACE,gDACA,oCAAKjjD,QAAL,IAAKA,OAAL,EAAKA,EAAU8kB,mBA7BnB,qCACE,qBAAK1D,UAAWC,IAAQ4Z,GAAQja,EAAQ6iC,yBAA2B7iC,EAAQ8iC,sBAA3E,SACE,qBAAK1iC,UAAWJ,EAAQuZ,MAAOlZ,IAAKA,EAAK8Z,QAAS6oB,EAAc1iC,IAAI,0BAEtE,qBAAKF,UAAWJ,EAAQ4hC,oBAAxB,SACE,mDAEF,sBAAKxhC,UAAWJ,EAAQ08B,eAAxB,UACE,wCACA,4BAAIvnD,EAAO8tD,eAEb,cAACh2B,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC3B9X,GACC,sBAAK+L,UAAWJ,EAAQ08B,eAAxB,UACE,qBAAIt8B,UAAWJ,EAAQ6hC,MAAvB,mBACS7iD,EAAS6/B,SAAW7/B,EAAS6/B,QAAU,GAAK,+CAErD,qBAAIze,UAAWJ,EAAQjL,YAAvB,UACGknB,GAAeC,iBAAiB7nB,EAAO7b,UACvC29C,GAAaC,mBAAmB/hC,EAAOE,mBChJlD+J,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXC,UAAU,cACRC,QAAS,OACTC,cAAe,MACf2I,OAAQ,SACR1I,IAAK,OACLlE,MAAO,OACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfjE,MAAO,OACPkE,IAAK,SAGTskC,WAAS,GACPxkC,QAAS,OACTC,cAAe,SACfjE,MAAO,OAHA,eAIN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SALF,wBAOC,eAPD,0BAQG,GARH,yBASE,YATF,8BAUO,YAVP,GAYTkF,MAAO,CACLrH,MAAOpB,KAAOM,UACdO,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,mBAEV8c,gBAAiB,CACf1lB,QAAS,OACT2lB,oBAAqB,4CACrBC,aAAc,SACdvlB,WAAY,SACZH,IAAK,YACL0I,OAAQ,eAEV6B,KAAM,CACJzK,QAAS,OACTC,cAAe,SACf,OAAQ,CACNM,aAAc,IACd1G,MAAOpB,KAAOwa,cACd3Z,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,sBAG9BwqC,aAAc,CACZzoC,MAAO,OACPgE,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,MAChB,MAAO,CACL7G,SAAU,WACVsP,OAAQ,sBACR/O,MAAOpB,KAAOisC,aAGlBC,SAAU,CACR9pC,QAAS,yCACThB,MAAOpB,KAAOM,UACdsC,OAAO,aAAD,OAAe5C,KAAOkD,uBAC5BhB,aAAc,MACdiqC,OAAQ,OACRxrC,WAAY,QACZE,SAAU,OACV,iBAAkB,CAChBO,MAAOpB,KAAOM,WAEhB,UAAW,CACTsC,OAAQ,wBACRwpC,QAAQ,GAAD,OAAKpsC,KAAOF,QAAZ,eAETqQ,OAAQ,SACR5M,MAAO,QAET8oC,cAAe,CACb9oC,MAAO,OACPgE,QAAS,OACTG,eAAgB,YAElB4jC,WAAY,CACV/nC,MAAO,OAET+oC,UAAW,CACTpmC,WAAY,OACZ3C,MAAO,YA6IEgpC,OAvHf,YAUsB,IATpBC,EASmB,EATnBA,OACA9qD,EAQmB,EARnBA,OACAuI,EAOmB,EAPnBA,iBACAmK,EAMmB,EANnBA,UACAvM,EAKmB,EALnBA,SACAhJ,EAImB,EAJnBA,KACA2sD,EAGmB,EAHnBA,QACAxtD,EAEmB,EAFnBA,OACAyuD,EACmB,EADnBA,eAEM5jC,EAAU1B,KACVxH,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAEhD+kC,EADsBhrD,EAAO8U,OAAOgE,KAAI,SAAC4yB,GAAD,OAAiBxqC,OAAOwqC,MACvBuc,MAAK,SAAC7kD,EAAG8kD,GAAJ,OAAU9kD,EAAI8kD,KAE5DliB,GAAmB,OAATtzB,QAAS,IAATA,OAAA,EAAAA,EAAWszB,WAAX,OAAsB7/B,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAU6/B,UAAW,EACrDxqB,GAAkB,OAAT9I,QAAS,IAATA,OAAA,EAAAA,EAAW8I,SAAUuvC,EAEpC,OACE,sBAAKxjC,UAAWJ,EAAQvB,UAAxB,UACIlT,EAGA,cAAC,GAAD,CAAgBvM,SAAUA,EAAUuM,UAAWA,IAF/C,cAAC,GAAD,CAAoBvM,SAAUA,EAAW7J,OAAQA,EAAQkf,OAAQuvC,IAInE,eAAC5C,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQkjC,UAAzB,UACE,oBAAI9iC,UAAWJ,EAAQJ,MAAvB,2BACA,cAAC,GAAD,CAAY/mB,OAAQA,IACpB,cAAC,KAAD,CACEq3B,cAAe,CACb3wB,aAAcskD,EAAmB,GACjCC,QAAS,IAEX1zB,SAAUuzB,EALZ,SAOG,kBAAGh2C,EAAH,EAAGA,OAAQw4B,EAAX,EAAWA,cAAX,OACC,eAAC,KAAD,CAAM/lB,UAAWJ,EAAQmJ,KAAyB5W,GAAG,eAArD,UACE,uDACA,cAAC,KAAD,CACE7b,KAAK,eACLqtD,OAAQ,cAAG96B,MAAH,OACN,cAAC8b,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,qBAAKuH,UAAWJ,EAAQokB,gBAAxB,SACGyf,EAAmBlyC,KAAI,SAAC4yB,EAAalQ,GAAd,OACtB,cAAC4Q,GAAA,EAAD,CAEE9a,MAAOoa,EACP3pB,WAAS,EACTrC,MAAO5K,EAAOpO,eAAiBglC,EAAc,UAAY,UACzDrjB,QAAS,WACPilB,EAAc,eAAgB5B,KAL3BlQ,aAajB,qBAAKjU,UAAWJ,EAAQmjC,aAAxB,SACE,wCAAW,cAAKx1C,EAAOm2C,eAAZ,aAAK,EAAgBpuD,QAAhC,mBAEF,cAAC,KAAD,CACEgB,KAAK,UACLqtD,OAAQ,gBAAG96B,EAAH,EAAGA,MAAH,OACN,cAAC+6B,GAAA,EAAD,6BACM/6B,GADN,IAEEg7B,MAAI,EACJ7jC,UAAWJ,EAAQqjC,SACnBa,QAAS,EACTC,aAAa,GACb/5B,YAAY,0CACZZ,UAAW,OAGfpxB,KAAK,SAENszB,EACC,cAAC,GAAD,CACE11B,KAAMA,EACN2sD,QAASA,EACT/d,eAAgB/rC,EAChBwb,OAAQA,EAAOE,MACf/b,SAAU6b,EAAO7b,SACjBqmC,QAASA,EACTpS,OAAO,eACPkD,WAAYvuB,IAGd,sBAAKgf,UAAWJ,EAAQwjC,cAAxB,UACE,cAACviC,GAAA,EAAD,CACEb,UAAWJ,EAAQyiC,WACnBvhC,QAAS,kBAAMyhC,EAAQ,IACvBniC,QAAQ,WACRjI,MAAM,YACN8R,SAAUjpB,EALZ,oBASA,cAAC6f,GAAA,EAAD,CACEoJ,SAAUjpB,EACVhJ,KAAK,SACLgoB,UAAWJ,EAAQyjC,UACnBjjC,QAAQ,YACRjI,MAAM,UALR,SAOGnX,EAAmB,cAACgsB,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,mBArE1C,0BClKzC+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXoB,MAAO,CACLrH,MAAOpB,KAAOwa,cACd3Z,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1BsG,aAAc,QAEhBzB,OAAO,cACL9B,UAAW,OACX25B,UAAW,WACX+O,YAAa,WACb1pC,MAAO,OACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,cAqDA2pC,OAtCf,YAOqB,IANnBnlD,EAMkB,EANlBA,QACA0lC,EAKkB,EALlBA,eAEAic,GAGkB,EAJlBx2B,SAIkB,EAHlBw2B,aACA8B,EAEkB,EAFlBA,QACA2B,EACkB,EADlBA,UAEMtkC,EAAU1B,KAEhB,OACE,qCACE,oBAAI8B,UAAWJ,EAAQJ,MAAvB,oCACC1gB,EAAQyS,KAAI,SAAC9Y,GACZ,OACE,cAAC,GAAD,CAEEA,OAAQA,EACR+rC,eAAgBA,EAChBic,YAAaA,GAHRhoD,EAAO0Z,OAOjB+xC,GACC,cAACrjC,GAAA,EAAD,CACEb,UAAWJ,EAAQxC,OACnB0D,QAAS,kBAAMyhC,EAAQ,IACvBniC,QAAQ,YACRjI,MAAM,UACN8R,UAAWua,EALb,2BC5CFtmB,GAAYC,cAAW,SAACzH,GAAD,eAC3B0H,aAAa,CACXC,UAAU,cACRC,QAAS,OACTC,cAAe,MACf2I,OAAQ,SACR1I,IAAK,OACLlE,MAAO,OACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfjE,MAAO,OACPkE,IAAK,SAGTmjC,UAAQ,GACNrjC,QAAS,OACTC,cAAe,SACfI,WAAY,SACZrE,MAAO,MACPnB,QAAS,YACToB,OAAQ,eANF,eAOL7D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SARH,eAUN,MAAO,CACL1C,SAAU,WACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOM,UACd6P,OAAQ,4BAdJ,eAgBN,OAAQ,CACNtP,SAAU,WACVQ,WAAYze,OAAOod,KAAOslC,gBAC1BlkC,MAAOpB,KAAOM,UACd6P,OAAQ,IApBJ,GAuBR6E,QAAS,CACPzR,MAAO,OACPC,OAAQ,aAEV4e,MAAO,CACLtc,SAAU,WACV6pB,UAAW,YAEboc,WAAS,GACPxkC,QAAS,OACTC,cAAe,SACfjE,MAAO,OAHA,eAIN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SALF,0BAOG,GAPH,yBAQE,aARF,wBASC,eATD,eAUP,OAAQ,CACNnC,MAAOpB,KAAOwa,cACd3Z,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,mBAdH,8BAgBO,YAhBP,GAkBTi9B,gBAAiB,CACf7lC,QAAS,OACTC,cAAe,MACfC,IAAK,aAEP4lC,cAAe,CACbvnC,SAAU,OAEZgP,aAAc,CACZw4B,MAAO,QACPlrC,QAAS,2BAuIAmrC,OA/Gf,YAW0B,IAAD,IAVvBvvD,EAUuB,EAVvBA,OACA8X,EASuB,EATvBA,gBACA23B,EAQuB,EARvBA,eACA+f,EAOuB,EAPvBA,kBACA3lD,EAMuB,EANvBA,SACAoC,EAKuB,EALvBA,iBACAwjD,EAIuB,EAJvBA,UACAhB,EAGuB,EAHvBA,eACAjB,EAEuB,EAFvBA,QACA3sD,EACuB,EADvBA,KAEMgqB,EAAU1B,KACVxH,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAatD,OANAmV,qBAAU,WACJhnB,GAA8C,IAA3BA,EAAgBvX,QACrCivD,EAAkB13C,EAAgB,MAEnC,CAACA,EAAiB03C,IAGnB,sBAAKvkC,UAAWJ,EAAQvB,UAAxB,UACE,cAAC,GAAD,CAAoBtpB,OAAQA,EAAQ6J,SAAUA,EAAUqV,OAAQuvC,IAChE,eAAC5C,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQkjC,UAAzB,UACE,cAAC3iC,GAAA,EAAD,CAAYC,QAAQ,cACpB,cAAC,KAAD,CACE0P,cAAe,CACb13B,SAAUrD,EAAOqD,SACbyjC,GAAeU,gBAAgB5iC,OAAO5E,EAAOqD,WAC3CuB,OAAO5E,EAAOqD,UACdxB,GAAS2D,KAHL,iBAINipD,QAJM,IAINA,OAJM,EAINA,EAAgBprD,gBAJV,QAIsBxB,GAAS2D,KACzC0Z,OAAQlf,EAAOkf,OAASta,OAAO5E,EAAOkf,QAA9B,iBAAwCuvC,QAAxC,IAAwCA,OAAxC,EAAwCA,EAAgBrvC,aAAxD,QAAiE,EACzE1b,OAA4B,OAApBoU,EAA2BlT,OAAOkT,EAAgB,GAAGsF,IAAM,IAErE4d,iBAAkBxL,GAAQD,eAC1B0L,SA3BO,SAACziB,GACdi3C,EAAU,CAAErwC,OAAQ5G,EAAO0G,OAAQ7b,SAAUmV,EAAOnV,WACpDmqD,EAAQ,IAcJ,SAaG,gBAAGh1C,EAAH,EAAGA,OAAH,OACC,eAAC,KAAD,CAAMyS,UAAU,mBAAgC7N,GAAG,SAAnD,UACE,iDACA,sBAAK6N,UAAWJ,EAAQukC,gBAAxB,UACE,cAAC,KAAD,CACEnkC,UAAWJ,EAAQwkC,cACnB9tD,KAAK,WACL20B,UAAW2b,GACX7c,MAAM,SACNiJ,QAAS6I,GAAeI,YAAYrlC,IAAU,SAAC8e,GAC7C,MAAO,CACLvD,GAAIuD,EACJvB,MAAO0nB,GAAeC,iBAAiBpmB,SAI7C,cAAC,KAAD,CACEpf,KAAK,SACL20B,UAAWtC,GACX3wB,KAAK,MACLgyB,YAAY,UACZlB,gBAAc,OAGjBjc,GACC,cAAC,GAAD,CACE/N,QAAS+N,EACT23B,eAAgBA,EAChBva,UAAU,EACVw2B,YAAa,SAAChoD,GACZ8rD,EAAkB9rD,IAEpB8pD,QAASA,EACT2B,WAAW,IAGd54B,EACC,cAAC,GAAD,CACEe,OAAO,SACPz2B,KAAMA,EACN2sD,QAASA,EACT/d,eAAgBA,EAChBvwB,OAAQ1G,EAAO0G,OACf7b,SAAUmV,EAAOnV,SACjBoqD,YAAU,IAGZ,cAAC3hC,GAAA,EAAD,CACEb,UAAWJ,EAAQiM,aACnB7zB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACR6J,SAAUjpB,GAAoBuM,EAAO0G,QAAU,GAAwB,OAAnBuwB,EACpD5kB,QAAS,CAAE5G,KAAM,mBANnB,yBA9CmC,oBCtJ7CkF,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXC,UAAU,cACRC,QAAS,OACTC,cAAe,MACf2I,OAAQ,SACR1I,IAAK,OACLlE,MAAO,OACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfjE,MAAO,OACPkE,IAAK,SAGTskC,WAAS,GACPxkC,QAAS,OACTC,cAAe,SACfjE,MAAO,OAHA,eAIN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SALF,0BAOG,GAPH,yBAQE,aARF,wBASC,eATD,8BAUO,YAVP,QAyEEmqC,OAlDf,YAO+B,IAN7Bt5C,EAM4B,EAN5BA,UACAvM,EAK4B,EAL5BA,SACAhJ,EAI4B,EAJ5BA,KACA2sD,EAG4B,EAH5BA,QACA/d,EAE4B,EAF5BA,eACA+f,EAC4B,EAD5BA,kBAEM3kC,EAAU1B,KACVxH,EAAQmJ,eACR41B,EAActqC,EAAU0wC,gBACxBvwB,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAQtD,OANAmV,qBAAU,WACJ4hB,GAAsC,IAAvBA,EAAYngD,QAC7BivD,EAAkB9O,EAAY,MAE/B,CAACA,EAAa8O,IAGf,sBAAKvkC,UAAWJ,EAAQvB,UAAxB,UACE,cAAC,GAAD,CAAgBlT,UAAWA,EAAWvM,SAAUA,IAChD,cAACgiD,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQkjC,UAAzB,SACGrN,GACC,cAAC,GAAD,CACE8M,QAASA,EACTzjD,QAAS22C,EACTjR,eAAgBA,EAChBva,UAAU,EACVw2B,YAAa,SAAChoD,GACZ8rD,EAAkB9rD,IAEpByrD,WAAY54B,MAIjBA,GACC,cAAC,GAAD,CACE11B,KAAMA,EACN2sD,QAASA,EACT/d,eAAgBA,EAChBvwB,OAAQ9I,EAAU8I,OAAOE,MACzB/b,SAAU+S,EAAU8I,OAAO7b,SAC3BqmC,QAAStzB,EAAUszB,cCjEvB1nB,GAASogC,KAAWC,OAAO,CAC/BrhD,KAAM,CACJuoB,QAAS,OACTC,cAAe,SACfI,WAAY,SACZxF,QAAS,aAEXknC,eAAgB,CACd/lC,MAAO,QACPgE,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChBO,WAAY,GACZqkB,cAAe,IAEjBqhB,gBAAiB,CACfpqC,MAAO,QACPgE,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChB7E,gBAAiBlD,GAAME,QAAQK,UAAUH,KACzCkI,WAAY,GACZqkB,cAAe,GACfshB,uBAAwB,GACxBC,wBAAyB,IAE3BzrB,MAAO,CACL5e,OAAQ,GACRD,MAAO,QAEToF,QAAS,CACPwH,OAAQ,IACR5L,UAAW,OACXhB,MAAO,QACPC,OAAQ,QACR3C,SAAU,GACV0G,QAAS,OACTC,cAAe,SACfE,eAAgB,iBAElBomC,QAAS,CACPvmC,QAAS,OACT6/B,SAAU,EACVxkC,OAAQ,eACRmrC,oBAAqB,GACrBC,qBAAsB,GACtBC,kBAAmB,OACnBzmC,cAAe,SACfpF,QAAS,IAEX8rC,KAAM,CACJ3mC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,gBAChBtF,QAAS,IAEX+rC,UAAW,CACTh+B,OAAQ,OACRi+B,UAAW,gBAEbC,gBAAiB,CACf9mC,QAAS,OACTC,cAAe,MACfI,WAAY,UAEd0mC,YAAa,CACX/mC,QAAS,OACTC,cAAe,MACfI,WAAY,YAEd2mC,cAAe,CACbhnC,QAAS,OACTC,cAAe,UAEjBgnC,kBAAmB,CACjBjnC,QAAS,OACTC,cAAe,SACfI,WAAY,YAEd6mC,UAAW,CACT5tC,SAAU,GACVO,MAAO,OACPmD,UAAW,EACXuD,aAAc,GAEhB+d,KAAM,CACJ3f,WAAY,GAEd7kB,SAAU,CACRwf,SAAU,GACViH,aAAc,GAEhB4mC,UAAW,CACTxoC,WAAY,EACZlB,YAAa,EACbnE,SAAU,IAEZsyB,WAAY,CACVnuB,YAAa,GAEf2pC,WAAY,CACVzoC,WAAY,KAyID0oC,OAzHf,SAAoB5nC,GAClB,IAAI6nC,EACAF,EACAG,EACAC,EAEJ,GAXqD,YAW7B/nC,EAXoB/lB,KAa1C4tD,EADqD7nC,EAA7CmsB,WAERwb,EAFqD3nC,EAAjC+zB,UAGpB+T,EAHqD9nC,EAAtB6e,KAI/BkpB,EAJqD/nC,EAAhBvK,iBAKhC,GAhB2B,SAClCuyC,GADkC,MAE2B,oBAApBA,EAAW/tD,KAczCguD,CAA4BjoC,GAAQ,CAAC,IACtCkoC,EAA2CloC,EAA3CkoC,WAAYC,EAA+BnoC,EAA/BmoC,UAAWC,EAAoBpoC,EAApBooC,gBAC/BP,EAAgBK,EAAW/b,WAC3B2b,EAAUK,EACVJ,EAAiBK,EACjBT,EAAaO,EAAW3vD,SACnB,CAAC,IACEkd,EAAqCuK,EAArCvK,YAAa49B,EAAwBrzB,EAAxBqzB,QAAS6U,EAAeloC,EAAfkoC,WAC9BL,EAAgBK,EAAWxtD,OAAOnC,KAClCuvD,EAAUzU,EACV0U,EAAiBtyC,EACjBkyC,EAAaO,EAAW3vD,KAvBgB,IA0BlCH,EAAgE4nB,EAAhE5nB,WAAYiwD,EAAoDroC,EAApDqoC,gBAAiBj3C,EAAmC4O,EAAnC5O,iBAAkBmvB,EAAiBvgB,EAAjBugB,aAEjD+nB,EAA0B,CAC9BC,IAAK/xD,GAAU2B,cAAcC,GAC7BmH,OAAQ,MACRpB,KAAM,GACNc,QAAS,IAGX,OACE,cAAC,KAAD,UACE,cAAC,KAAD,CAAMiwB,KAAK,KAAK1E,MAAOxR,GAAOhhB,KAA9B,SACE,eAAC,KAAD,WACE,cAAC,KAAD,CAAMwyB,MAAOxR,GAAOspC,eAApB,SACE,cAAC,KAAD,CAAO93B,MAAOxR,GAAOoiB,MAAOotB,OAAQF,MAEtC,cAAC,KAAD,CAAM99B,MAAOxR,GAAO2I,QAApB,SACE,eAAC,KAAD,CAAM6I,MAAOxR,GAAO8tC,QAApB,UACE,eAAC,KAAD,CAAMt8B,MAAOxR,GAAOkuC,KAApB,UACE,cAAC,KAAD,UAAO,mBACP,cAAC,KAAD,UAAOlnC,EAAM5O,iBAAiB7O,sBAEhC,cAAC,KAAD,CAAMioB,MAAOxR,GAAOmuC,YACpB,eAAC,KAAD,CAAM38B,MAAOxR,GAAOkuC,KAApB,UACE,eAAC,KAAD,CAAM18B,MAAOxR,GAAOquC,gBAApB,UACGQ,GAAiB,cAAC,KAAD,CAAMr9B,MAAOxR,GAAOmzB,WAApB,SAAiC0b,IACnD,cAAC,KAAD,CAAMr9B,MAAOxR,GAAOyuC,UAApB,0BACA,cAAC,KAAD,CAAMj9B,MAAOxR,GAAO2uC,WAApB,oBAAqCA,EAAW5wD,UAAU4wD,EAAWpwD,OAAS,SAEhF,eAAC,KAAD,CAAMizB,MAAOxR,GAAOquC,gBAApB,UACE,cAAC,KAAD,CAAM78B,MAAOxR,GAAOyuC,UAApB,mBACA,cAAC,KAAD,CAAMj9B,MAAOxR,GAAO6lB,KAApB,SAA2B9iC,KAAO+rD,GAAS9oB,OAAO,sBAGtD,cAAC,KAAD,CAAMxU,MAAOxR,GAAOmuC,YACpB,eAAC,KAAD,CAAM38B,MAAOxR,GAAOkuC,KAApB,UACE,eAAC,KAAD,CAAM18B,MAAOxR,GAAOuuC,cAApB,UACE,cAAC,KAAD,CAAM/8B,MAAOxR,GAAOyuC,UAApB,oBACA,cAAC,KAAD,UAAO3pB,GAAeE,gBAAgB5sB,EAAiB/W,eAEzD,eAAC,KAAD,CAAMmwB,MAAOxR,GAAOwuC,kBAApB,UACE,eAAC,KAAD,CAAMh9B,MAAOxR,GAAOsuC,YAApB,UACE,cAAC,KAAD,CAAM98B,MAAOxR,GAAO3e,SAApB,SACGyjC,GAAeC,iBAAiB3sB,EAAiB/W,YAEpD,cAAC,KAAD,CAAMmwB,MAAOxR,GAAO0uC,UAApB,SACG1P,GAAaC,kBAAkB7mC,EAAiBuF,eAEnD,cAAC,KAAD,CAAM6T,MAAOxR,GAAO3e,SAApB,SACGguD,GAAmBA,EAAkB,EAAI,WAAa,QAG3D,cAAC,KAAD,CAAM79B,MAAOxR,GAAOyuC,UAApB,oBACOr2C,EAAiB0F,oBADxB,iBAEI1F,EAAiB0F,oBAAsB,EAAI,IAAM,GAFrD,OAKCypB,IAAiB1mC,GAAiBslC,MACjC,cAAC,KAAD,CAAM3U,MAAOxR,GAAOyuC,UAApB,SACGpnB,GAAmBC,oBAAoBC,WAKhD,cAAC,KAAD,CAAM/V,MAAOxR,GAAOmuC,YACjBY,EACD,cAAC,KAAD,CAAMv9B,MAAOxR,GAAOkuC,KAApB,SACE,eAAC,KAAD,CAAM18B,MAAOxR,GAAOuuC,cAApB,UACE,cAAC,KAAD,CAAM/8B,MAAOxR,GAAOyuC,UAApB,sBACA,cAAC,KAAD,UAAOM,SAGT,KACH32C,EAAiB6F,cAChB,qCACE,cAAC,KAAD,CAAMuT,MAAOxR,GAAOmuC,YACpB,cAAC,KAAD,CAAM38B,MAAOxR,GAAOkuC,KAApB,SACE,eAAC,KAAD,CAAM18B,MAAOxR,GAAOuuC,cAApB,UACE,cAAC,KAAD,CAAM/8B,MAAOxR,GAAOyuC,UAApB,uCACA,cAAC,KAAD,UAAOr2C,EAAiB6F,wBAI5B,UAGR,cAAC,KAAD,CAAMuT,MAAOxR,GAAO2tC,gBAApB,SACE,cAAC,KAAD,CAAOn8B,MAAOxR,GAAOoiB,MAAOotB,OC9PzB,qgJCgBf,SAASC,GAAUxyC,GACjB,YAA2C7b,IAAnC6b,EAAoBk2B,WAqFfuc,OAlFf,YAAoF,IAW9EC,EAXkB1yC,EAA2D,EAA3DA,QAAS7d,EAAkD,EAAlDA,WAAYiwD,EAAsC,EAAtCA,gBACrC5mC,EAAgBxL,EAAU,kCAAiC,iCAC3DyL,EACJ,mBAAGO,UAAU,WAAb,SACGhM,EACG,sHACA,uGAGFyM,EAAgBzM,EAAU0kB,GAAmBiuB,GAC7CrnC,EAAY,cAAC,KAAD,CAAQmB,cAAeA,EAAeE,MAAM,IAVmB,EAY3CiK,oBAAS,GAZkC,oBAY1Eg8B,EAZ0E,KAY7DC,EAZ6D,KAcjF,GAAI7yC,EAAS,CACX,IAEiD,EAF7CU,EAAcV,EAAQC,OAAOE,MAEjC,IAAKqyC,GAAUxyC,IAAYA,EAAQgqC,aACjCtpC,GAAW,UAAIV,EAAQgqC,aAAa/pC,OAAOE,aAAhC,QAAyC,EAGtDuyC,EAAuB,CACrBpmD,iBAAkB0T,EAAQ1T,iBAC1BlI,SAAU4b,EAAQC,OAAO7b,SACzBsc,YAAaA,EACbG,oBAAqBb,EAAQ7U,aAC7Bm/B,aAActqB,EAAQsqB,cAI1BzK,qBAAU,WACJ7f,GAAW0yC,GACbG,GAAe,KAEhB,CAAC7yC,EAAS0yC,IAEb,IAAMhnC,EAAmC1L,GAAW0yC,GAClD,qCACE,eAACvmC,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,mBAA1C,iCACuBhM,EAAS1T,oBAE/BsmD,GACC,cAAC,KAAD,CACExrB,SACEorB,GAAUxyC,GACR,cAAC,GAAD,6BACMA,GADN,IAEEhc,KAAK,kBACL7B,WAAYA,EACZiwD,gBAAiBA,EACjBj3C,iBAAkBu3C,KAGpB,cAAC,GAAD,6BACM1yC,GADN,IAEEhc,KAAK,UACL7B,WAAYA,EACZiwD,gBAAiBA,EACjBj3C,iBAAkBu3C,KAIxBI,SAAQ,eAAU9yC,EAAS1T,kBAC3BioB,MAAO,CAAE9K,eAAgB,QArB3B,SAuBG,gBAAG8O,EAAH,EAAGA,QAAH,OACC,cAAC1L,GAAA,EAAD,CAAQT,QAAQ,YAAYjI,MAAM,UAAU8R,SAAUsC,EAASvM,UAAU,kBAAzE,yCASV,OACE,qBAAKA,UAAU,2BAAf,SACE,cAAC,GAAD,CAAeR,MAAOA,EAAOC,SAAUA,EAAUH,UAAWA,EAAWI,QAASA,OCvFhFxB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAO,CACL5/B,QAAS,OACTmB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACfC,IAAK,OACLjH,WAAYR,KAAO2C,MACnBmD,SAAU,UACVrD,UAAWzC,KAAOgwC,eAEpBC,QAAQ,cACN1oC,QAAS,OACTK,WAAY,SACZE,aAAc,SACdL,IAAK,OACLC,eAAgB,iBACf/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,WAGlBM,YAAa,CACXvH,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAOwB,qBAE5B6G,SAAU,CACRxH,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAOwB,qBAE5B0uC,QAAS,CACPrvC,SAAU,WACV8E,UAAW,OAEbw5B,IAAK,CACHj5B,WAAY,SACZrF,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAOsB,kBAC1B6uC,UAAW,UAEbjzC,OAAQ,CACN2D,SAAU,OACVQ,WAAYze,OAAOod,KAAOowC,uBA4CjBC,OAvCf,WAA4B,IAAD,MACnBxnC,EAAU1B,KACVnf,EAAQuwB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM5R,SAEtD,IAAKA,EAAMgM,SACT,OAAO,cAAC,GAAD,IAGT,IACM0U,EACJ,+GACuE,uBADvE,sEAKI9K,EAAc2gC,GAAWI,mBAAX,UAA8B32C,EAAMgM,gBAApC,aAA8B,EAAgBkI,MAC5DyM,EACJ,eAACwR,GAAA,EAAD,CAAOlR,UAAWJ,EAAQm5B,MAAO5nB,UAAW,EAA5C,UACE,cAAChR,GAAA,EAAD,CAAYH,UAAWJ,EAAQT,YAA/B,qBACA,sBAAKa,UAAWJ,EAAQonC,QAAxB,UACE,cAAC7mC,GAAA,EAAD,CAAYH,UAAWJ,EAAQR,SAA/B,4BACA,cAACe,GAAA,EAAD,CAAYH,UAAWJ,EAAQqnC,QAA/B,mBAAyCloD,EAAMgM,gBAA/C,aAAyC,EAAgBkI,KAAKO,iBAEhE,sBAAKwM,UAAWJ,EAAQonC,QAAxB,UACE,eAAC7mC,GAAA,EAAD,CAAYH,UAAWJ,EAAQR,SAA/B,oBAEGrgB,EAAMgM,UAAYhM,EAAMgM,SAASkI,KAAKwrB,QAAU,GAAK,sBAAMze,UAAWJ,EAAQs2B,IAAzB,yBAExD,eAAC/1B,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQ3L,OAA/C,UACE,+BAAO4nB,GAAeC,iBAAf,UAAgC/8B,EAAMgM,gBAAtC,aAAgC,EAAgBkI,KAAKgB,OAAO7b,YAClE29C,GAAaC,kBAAkBrhC,YAMxC,OAAO,cAAC,GAAD,CAAe6K,MA5BR,2BA4BsBC,SAAUA,EAAUC,QAASA,EAASJ,UAAW,cAAC,GAAD,OC0XxE+nC,OAnbf,WAAoB,IAAD,sCACX7mD,EAAW4uB,cACXrO,EAAWM,eACXzsB,EAAWy6B,eACXt6B,EAAwBuyD,eAJb,EAKqCh4B,aAAY,SAAC3e,GAAD,OAAsBA,KAAhF/R,EALS,EAKTA,SAAUG,EALD,EAKCA,MAAOC,EALR,EAKQA,SAAUgN,EALlB,EAKkBA,eAC7Bu7C,EAASxyD,EAAO8tD,WAAa9tD,EAAOqD,UAAYrD,EAAOkf,QAAUlf,EAAO4e,OACxE6zC,EAAazyD,EAAO8tD,gBAA+B1qD,IAAlBpD,EAAO4e,OACxCvS,EAAaxM,EAAS+H,SACtB8qD,EAAa,mDATF,EAWiB78B,oBAAkB,GAXnC,oBAWV88B,EAXU,KAWCC,EAXD,OAYe/8B,mBAAwB,MAZvC,oBAYVg9B,EAZU,KAYAC,EAZA,OAaOj9B,mBAAiB,GAbxB,oBAaVh1B,EAbU,KAaJ2sD,EAbI,OAc2B33B,mBAAgC,MAd3D,oBAcV4Z,EAdU,KAcM+f,EAdN,OAeqB35B,mBAAwB,MAf7C,oBAeVk9B,EAfU,KAeGC,GAfH,QAgBiCn9B,oBAAkB,GAhBnD,sBAgBVo9B,GAhBU,MAgBSC,GAhBT,SAiB6Br9B,oBAAkB,GAjB/C,sBAiBV/f,GAjBU,MAiBOq9C,GAjBP,SAkB+Bt9B,oBAAkB,GAlBjD,sBAkBV5pB,GAlBU,MAkBQmnD,GAlBR,MAoBXC,GACJrpD,EAAM8L,iBAAmB9L,EAAMkM,gBAAkBJ,IAAmBm9C,GAChEK,GACJtpD,EAAMgM,YACJhM,EAAMgM,SAASkI,KAAKmS,YACtB,IAAI1W,KAAK3P,EAAMgM,SAASkI,KAAKmS,YAAc,IAAI1W,KAC3C45C,IACJ,UAAAvpD,EAAMgM,gBAAN,eAAgBkI,KAAKC,YAAanc,GAAa2qC,WAAa3iC,EAAM8L,iBAAmBA,IACjF09C,GACJD,KAAW,UACXvpD,EAAMgM,gBADK,aACX,EAAgB/L,YAChB,UAAAD,EAAMgM,gBAAN,eAAgB/L,SAAS1J,QAAS,IACjC8yD,GAEGI,GADqBH,IAAeC,KAAgBF,KAEtC,UAClBrpD,EAAMgM,gBADY,aAClB,EAAgB/L,YAChB,UAAAD,EAAMgM,gBAAN,eAAgB/L,SAAS1J,QAAS,KAClC,UAACyJ,EAAMgM,gBAAP,aAAC,EAAgB/L,SAAS8lC,MACxB,SAAC9wB,GAAD,OACEA,EAAQvX,SAAWvF,GAAkBqd,UAAYP,EAAQvX,SAAWvF,GAAkBkd,gBAL1F,UAOArV,EAAMgM,gBAPN,aAOA,EAAgB/L,SAAS8lC,MAAK,SAAC9wB,GAAD,OAAaA,EAAQvX,SAAWvF,GAAkBuxD,YAE5EC,GACJnB,GACAxoD,EAAMgM,UACNhM,EAAMgM,SAASkI,KAAK4oC,iBAC2B,IAA/C98C,EAAMgM,SAASkI,KAAK4oC,gBAAgBvmD,OAEhCqzD,KACF5zD,EAAO4e,UACP00C,IAAgBA,MAAiBG,OACjCF,IACCA,QACI,UAACvpD,EAAMgM,gBAAP,aAAC,EAAgB/L,cAAc,UAAAD,EAAMgM,gBAAN,eAAgB/L,SAAS1J,QAAS,OAChE,UAACyJ,EAAMgM,gBAAP,aAAC,EAAgB/L,YACjB,UAAAD,EAAMgM,gBAAN,eAAgB/L,SAAS1J,QAAS,KAChC,UAACyJ,EAAMgM,gBAAP,aAAC,EAAgB/L,SAAS8lC,MAC1B,SAAC9wB,GAAD,OACEA,EAAQvX,SAAWvF,GAAkBqd,UACrCP,EAAQvX,SAAWvF,GAAkBkd,kBAEhDvJ,KACA9L,EAAM8L,kBACN9L,EAAMkM,gBACa,OAApBlM,EAAMoM,WAC6B,OAAnCpM,EAAMqM,yBAERyoB,qBAAU,WvF8Te,IAAClgB,EqBjSAy3B,EkE3BtBmc,IACCxoD,EAAM8L,iBACY,OAAnB9L,EAAMgM,UAC4B,OAAlChM,EAAMiM,yBAENxK,GvFuTsBmT,EuFvTD5e,EAAO4e,OvFwTzB,SAACnT,GAGN,OAFAA,EAASqK,MAEFq0B,GAAaQ,YAAY/rB,GAAQ1X,MACtC,SAACF,GACKA,GACFyE,EAASsK,GAAmB/O,OAGhC,SAACiE,GACCQ,EAAS6gC,GAAkBrhC,UuF9T5BpB,EAAS6H,iBACY,OAAtB7H,EAASA,UAC4B,OAArCA,EAAS+H,yBAETnG,GlEcsB4qC,EkEdDr2C,EAAO8tD,UlEezB,SAACriD,GAGN,OAFAA,EAASiG,MAEF8jC,GAAgBM,YAAYO,GAAiBnvC,MAClD,SAACF,GACCyE,EAASkG,GAAmB3K,OAE9B,SAACiE,GACCQ,EAASsrC,GAAkB9rC,UkEpB1BjL,EAAO8tD,WACV8E,GAAa,KAEd,CACD5yD,EACAgK,EAAMkM,eACNlM,EAAMoM,UACNpM,EAAMqM,yBACNrM,EAAM8L,gBACN9L,EAAMiM,wBACNjM,EAAMgM,SACNnM,EAAS6H,gBACT7H,EAASA,SACTA,EAAS+H,wBACT4gD,EACAC,EACAhnD,IAGFqzB,qBAAU,WACJ70B,EAAS4P,UACXmS,EAAS,oBAEV,CAAC/hB,EAAS4P,SAAUmS,IAEvB8S,qBAAU,WAAO,IAAD,EpF2LmB19B,GoFzL9B6V,EAAec,wBACmB,OAAnCd,EAAea,iBACgC,OAA/Cb,EAAee,8BAFf,UAGAnO,EAASA,gBAHT,aAGA,EAAmBuT,KAEnB3R,GpFoL+BrK,EoFpLDyI,EAASA,SAAUuT,GpFqL9C,SAAC3R,GAGN,OAFAA,EAASsM,MAEF60B,GAAsBO,qBAAqB/rC,GAAY8F,MAC5D,SAACF,GACCyE,EAASsiC,GAAmB/mC,OAE9B,SAACiE,GACCQ,EAASuiC,GAAsB/iC,YoF3LlC,CACDgM,EAAec,uBACfd,EAAea,gBACfb,EAAee,4BACfnO,EAASA,SACT4B,IAGFqzB,qBAAU,WACR,IAAK90B,EAAMkM,gBAAsC,OAApBlM,EAAMoM,UAAoB,CACrD,IAAM8I,EAAS,CACb7b,SAAU2G,EAAMoM,UAAU8I,OAAO7b,SACjC+b,MAAOmhC,GAAWI,mBAAmB32C,EAAMoM,YAE7C48C,GAAe9zC,MAEhB,CAAClV,EAAMkM,eAAgBlM,EAAMoM,UAAW48C,KAE3Cl0B,qBAAU,WACR,GAAiB,OAAb+zB,GAAqB7oD,EAAMmM,qBAAuBnM,EAAMoM,UAAW,CACrE,IAAMy9C,EAAqBtT,GAAWI,mBAAmB32C,EAAMoM,WACzD09C,EAAkB9pD,EAAMoM,UAAUigC,qBAElBjzC,IAAlBpD,EAAOkf,QAAwB20C,KAAwB7zD,EAAOkf,QAChE4zC,EAAY,wFAGVgB,IAAoB9zD,EAAO8tD,WAC7BgF,EAAY,uFAIM1vD,IAAlBpD,EAAOkf,QACP20C,KAAwB7zD,EAAOkf,QAC/B40C,IAAoB9zD,EAAO8tD,WAE3BgF,EACE,+GAKgB1vD,IAAlBpD,EAAOkf,QACP20C,KAAwB7zD,EAAOkf,QAC/B40C,IAAoB9zD,EAAO8tD,WAE3BgF,EAAY,IAIZ9yD,EAAOqD,WACTrD,EAAOqD,SAAWyjC,GAAeW,uBAAuBznC,EAAOqD,WAGhD,OAAbwvD,GAAqB7yD,EAAOqD,WAAayjC,GAAeU,gBAAgB5iC,OAAO5E,EAAOqD,YACxFyvD,EAAY,wEAEb,CACD9yD,EACA6yD,EACAC,EACA9oD,EAAMmM,oBACNnM,EAAMoM,UACNpW,EAAOqD,SACPrD,EAAOkf,OACPlf,EAAO8tD,UACP6F,KAGF,IAAMI,GACqB,mBAAzBn0D,OAAOC,SAASm0D,MACS,yBAAzBp0D,OAAOC,SAASm0D,MACS,2BAAzBp0D,OAAOC,SAASm0D,KACZC,GAAgBF,GAAS,WAAa,WACtCx2C,GAAkBw2C,GAAS,MAAQ,0BACnCG,GAAgBC,kBAChBC,GAAkB72C,GAAkB22C,GACtCG,GAAcN,GAAS,mCAAqCG,GA6DhE,SAASI,GACPr1C,EACA7d,EACAiwD,GAEA,OAAIpyC,EAAQvX,SAAWvF,GAAkBqd,SAChC,cAAC,GAAD,CAAcP,QAASA,EAAS7d,WAAYA,EAAYiwD,gBAAiBA,IAE9EpyC,EAAQvX,SAAWvF,GAAkBkd,UAChC,cAAC,GAAD,IAEF,KAmBT,GAzEAyf,qBAAU,YAhBwB,SAACy1B,GACjC,IAAMC,EAAiBnuB,SAASouB,eAAe,yBAC/C,IAAKD,EAAgB,CACnB,IAAME,EAASruB,SAASsuB,cAAc,UACtCD,EAAOxpC,IAAP,wDAA8D+oC,GAA9D,uBAA0FG,IAC1FM,EAAOt3C,GAAK,wBACZipB,SAASl/B,KAAKytD,YAAYF,GAE1BA,EAAO/uB,OAAS,WACV4uB,GAAUA,KAIdC,GAAkBD,GAAUA,IAIhCM,EAA0B,kBAAM3oD,QAAQC,IAAI,4BAoC9C2yB,qBAAU,WvFyKgB,IAAClgB,EuFxKrBg1C,IACFnoD,GvFuKuBmT,EuFvKD5e,EAAO4e,OvFwK1B,SAACnT,GAGN,OAFAA,EAASyK,MAEFi0B,GAAaS,aAAahsB,GAAQ1X,MACvC,SAACF,GACKA,GACFyE,EAAS0K,GAAoBnP,OAGjC,SAACiE,GACCQ,EAAS8gC,GAAmBthC,YuFhL/B,CAAC2oD,GAAgB5zD,EAAO4e,OAAQnT,IAiBnCqzB,qBAAU,WACR6gB,uBAAW,WACJ31C,EAAM8L,iBACTq9C,IAAmB,GAEhBnpD,EAAMkM,gBACTg9C,IAAqB,K7J1TM,O6J6T9B,CAACU,GAAgB5pD,EAAM8L,gBAAiB9L,EAAMkM,eAAgBlW,EAAO4e,OAAQnT,KAO5E6nD,KAAgBC,IACfD,IAAiBG,IAAwCzpD,EAAMqM,0BAC/Di9C,KAAW,UAAItpD,EAAMgM,gBAAV,aAAI,EAAgB/L,aAAc,UAACD,EAAMgM,gBAAP,aAAC,EAAgB/L,SAAS1J,SACvE+yD,KACE,UAACtpD,EAAMgM,gBAAP,aAAC,EAAgB/L,YAClB,UAAAD,EAAMgM,gBAAN,eAAgB/L,SAAS1J,QAAS,KAClC,UAACyJ,EAAMgM,gBAAP,aAAC,EAAgB/L,SAAS8lC,MACxB,SAAC9wB,GAAD,OACEA,EAAQvX,SAAWvF,GAAkBqd,UAAYP,EAAQvX,SAAWvF,GAAkBkd,gBAEzF,UAACrV,EAAMoM,iBAAP,aAAC,EAAiBnM,WACnBD,EAAMoM,UAAUnM,SAAS1J,OAAS,IACjCyJ,EAAMoM,UAAUnM,SAAS8lC,MACxB,SAAC9wB,GAAD,OACEA,EAAQvX,SAAWvF,GAAkBqd,UAAYP,EAAQvX,SAAWvF,GAAkBkd,eAE9FxV,EAASA,WACRopD,KACAjpD,EAAMkM,eAEP,OAAO,cAAC,GAAD,CAAiBgI,KAAMlU,EAAMgM,SAAWnM,SAAUA,EAASA,WAGpE,GAAI2pD,GAAyB,CAAC,IAAD,GACrBv0C,GAAO,WAAGjV,EAAMgM,gBAAT,cAAG,GAAgB/L,SAAS8lC,MACvC,SAAC9wB,GAAD,OACEA,EAAQvX,SAAWvF,GAAkBqd,UAAYP,EAAQvX,SAAWvF,GAAkBkd,aAE1F,GAAIJ,KACEA,GAAQvX,SAAWvF,GAAkBkd,WAAaJ,GAAQvX,SAAWvF,GAAkBqd,UACzF,OAAO80C,GAAmBr1C,GAASpV,EAASA,SAAUuT,GAAKvT,EAASA,SAAU6/B,SAKpF,IACG,UAAC1/B,EAAMoM,iBAAP,aAAC,EAAiBnM,WACnBD,EAAMoM,UAAUnM,SAAS1J,OAAS,IACjC8yD,GACD,CACA,IAAMp0C,GAAUjV,EAAMoM,UAAUnM,SAAS8lC,MACvC,SAAC9wB,GAAD,OACEA,EAAQvX,SAAWvF,GAAkBqd,UAAYP,EAAQvX,SAAWvF,GAAkBkd,aAE1F,GAAIJ,GACF,OAAOq1C,GAAmBr1C,GAASpV,EAASA,SAAUuT,GAAKvT,EAASA,SAAU6/B,SAIlF,OACG1/B,EAAMiM,0BAA2BjM,EAAMqM,0BACvCi9C,IACAD,GAQQM,GAEP,cAAC,GAAD,CAAWlpC,MAAOioC,EAAYhoC,SAAS,6DAEhC7gB,EAAS+H,wBACX,cAAC,GAAD,CAAW6Y,MAAOioC,EAAYhoC,SAAS,0DACrC+nC,GAAc5oD,EAASA,WAAaA,EAASA,SAAS84B,gBAE7D,cAAC,GAAD,CAAWlY,MAAOioC,EAAYhoC,SAAS,gEAEhCioC,EACF,cAAC,GAAD,CAAWloC,MAAOioC,EAAYhoC,SAAS,kDAC5B,IAAT7pB,EAEP,qCACGgyD,GACC,sBAAK5nC,UAAU,oBAAf,UACE,cAAC,GAAD,IACA,qBAAKA,UAAU,gBAAf,SACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,YAApB,mBAAoCwnC,EAApC,4GAILQ,GACC,qBAAKpoC,UAAU,2BAAf,SACE,cAAC,GAAD,MAGF,8BACGjhB,EAAMoM,UACL,cAAC,GAAD,CACEA,UAAWpM,EAAMoM,UACjBvM,SAAQ,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAUA,SACpBhJ,KAAMA,EACN2sD,QAASA,EACT/d,eAAgBA,EAChB+f,kBAAmBA,IAEnB3lD,EAASA,SACX,cAAC,GAAD,CACE7J,OAAQA,EACR8X,gBAAiBb,EAAea,gBAChC23B,eAAgBA,EAChB+f,kBAAmBA,EACnB3lD,SAAUA,EAASA,SACnBoC,iBAAkBhC,EAASgC,iBAC3BwjD,UAAWuD,GACXvE,eAAgBsE,EAChBvF,QAASA,EACT3sD,KAAMA,IAGR,cAAC,GAAD,SAMQ,IAATA,EAEP,qCACE,cAAC,GAAD,CACE2tD,OAhMc,SAACh2C,GAA+B,IAAD,EAGnD,GAFA46C,IAAoB,GAEhBppD,EAAMoM,UAAW,CACnB,IAAM0+C,EAAwC,CAC5Cl2C,OAAQ5U,EAAMoM,UAAUgH,GACxBi5B,gBAAiBrsC,EAAMoM,UAAU2+C,aACjC1xD,SAAU2G,EAAMoM,UAAU8I,OAAO7b,SACjC+b,MAAOmhC,GAAWI,mBAAmB32C,EAAMoM,WAC3C4+C,YAAY,GAAD,OAAKp1D,OAAOC,SAASo1D,OAArB,aACXn1C,oBAAqBtH,EAAOpO,aAC5B8qD,cAAezlB,EAAgBnyB,SAC/B63C,kBAAmBd,GACnBe,cAAe58C,EAAOm2C,QACtBtiD,cAEFZ,EAASvB,GAAa4qD,SACjB,GAAI/B,IAAW,UAAIlpD,EAASA,gBAAb,aAAI,EAAmB84B,iBAAiB,CAC5D,IAAM0yB,EAAuC,CAC3Chf,gBAAiBr2C,EAAO8tD,UACxBzqD,SAAU0vD,EAAY1vD,SACtB+b,MAAO2zC,EAAY3zC,MACnB41C,YAAY,GAAD,OAAKp1D,OAAOC,SAASo1D,OAArB,aACXn1C,oBAAqBtH,EAAOpO,aAC5B8qD,cAAezlB,EAAgBnyB,SAC/B63C,kBAAmBd,GACnBe,cAAe58C,EAAOm2C,QACtBtiD,cAEFZ,EAASvB,GAAamrD,MAoKlB3xD,OAAQ+rC,EACRxjC,iBAAkBhC,EAASgC,iBAC3BmK,UAAWpM,EAAMoM,UACjBvM,SAAQ,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAUA,SACpBhJ,KAAMA,EACN2sD,QAASA,EACTxtD,OAAQA,EACRyuD,eAAgBsE,IAElB,cAAC,GAAD,CACE1gC,KAAMpmB,IAA0D,OAAtChC,EAAS6P,yBACnCrT,QAASwD,EAAS6P,0BAA4B,mDAC9CyY,YA5IoB,WAC1B6gC,IAAoB,IA4IdnwD,KAAMnB,GAAO05B,WAKZ,cAAC,GAAD,IAtFL,cAAC,GAAD,CACE/Q,MAAOioC,EACPhoC,SAAS,+F,iCCjXF4qC,OAVf,YAA2F,IAA7DC,EAA4D,EAA5DA,YAAa3qC,EAA+C,EAA/CA,SAAa5B,EAAkC,2CACxF,OAAOusC,EACL,cAAC39B,GAAA,EAAD,2BAAS49B,gBAAiB,EAAGC,gBAAiB,IAAMC,aAAW,GAAK1sC,GAApE,aACG4B,KAGH,mCAAGA,KCCDzB,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACX2N,QAAS,CACP7E,OAAQ,WACRtN,gBAAiB7C,KAAOM,UACxB6C,QAAS,OAEXwwC,iBAAiB,cACfpsC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZvF,SAAU,eACT1C,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BD,eAAgB,gBAChBnE,MAAO,OACP4M,OAAQ,sBAGZyjC,cAAc,cACZ1tC,WAAY,SACZ,SAAU,CACR,MAAO,CACL9E,MAAOpB,KAAO2C,SAGjBhD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGXswC,iBAAe,GACbxxC,SAAU,YACVjB,MAAOpB,KAAOiD,qBAFD,eAGZtD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAJI,eAMZ5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,aAPE,QAuFJ0xC,OAjEf,YAOsB,IANpBC,EAMmB,EANnBA,eACA73C,EAKmB,EALnBA,KACAjJ,EAImB,EAJnBA,aACAI,EAGmB,EAHnBA,aACA2gD,EAEmB,EAFnBA,YACAC,EACmB,EADnBA,kBAEMprC,EAAU1B,KACV6C,EAAWM,eACXiK,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAEtD,OACE,sBAAKsB,UAAWJ,EAAQ8qC,iBAAxB,WACIp/B,GACA,qCACE,cAACzK,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,GAAU,IACzBf,UAAWJ,EAAQgrC,gBAJrB,oBAQA,cAAC/9B,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,WAAWC,UAAQ,IAAI,OAG5E,cAAClM,GAAA,EAAD,CACE7oB,KAAK,SACLooB,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMgqC,GAAe,IAC9B7gC,UAAYjgB,GAAiBI,IAAkB2gD,GAA+C,KAAb,OAAjBC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmB11D,QACnF0qB,UAAWJ,EAAQgrC,gBACnB7hC,KAAK,gBAPP,UASI/e,GAAgBI,IAAiB2gD,EACjC,cAAC/9B,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAChClF,EACF,uBAEA,wBAGJ,cAAC4N,GAAA,EAAD,CACEb,UAAWJ,EAAQ+qC,cACnB3yD,KAAK,SACLooB,QAAQ,YACRjI,MAAM,UACN2I,QAAS,kBAAMgqC,GAAe,IAC9B/hC,KAAK,gBACLkB,UAAYjgB,GAAgBI,KAAkB2gD,GAA8C,KAAb,OAAjBC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmB11D,QAPnF,UASI0U,IAAgBI,GAAkB2gD,EAEhC93C,EACF,UAEA,aAJA,cAAC+Z,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,kBC/GtC+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXmN,YAAY,cACVjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,OACPuE,aAAc,OACd,WAAW,gBACRnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,uBAGZzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,gBA0DPosC,OA1Cf,YAQwB,IAPtB/3C,EAOqB,EAPrBA,SACAD,EAMqB,EANrBA,KACA63C,EAKqB,EALrBA,eACAC,EAIqB,EAJrBA,YACA3gD,EAGqB,EAHrBA,aACAJ,EAEqB,EAFrBA,aACAghD,EACqB,EADrBA,kBAEMprC,EAAU1B,KACV6C,EAAWM,eACXiK,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAChDwsC,EAAeh4C,IAAanc,GAAaoc,UACzCoY,EAActY,EAChB,sBACAi4C,EACA,sBACA,sBAEJ,OACE,sBAAKlrC,UAAWJ,EAAQ2L,YAAxB,UACE,cAAC,GAAD,CAAa/L,MAAO+L,EAApB,UACID,GACA,cAAC,GAAD,CACEw/B,eAAgBA,EAChB73C,KAAMA,EACNjJ,aAAcA,EACdI,aAAcA,EACd2gD,YAAaA,EACbC,kBAAmBA,MAIxB1/B,GACC,cAACzK,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAY2I,QAAS,kBAAMC,GAAU,IAAtE,wBCnEF7C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX+sC,KAAK,cACHhyC,QAAS,qBACTK,UAAWzC,KAAOmpC,eAClBjE,UAAW,aACXmP,UAAW,MACX9vC,UAAW,aACV5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B0sC,UAAW,SAGfvG,QAAS,CACPvmC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,iBAElB0a,MAAO,CACLhgB,QAAS,cACTmB,MAAO,MACPX,OAAO,aAAD,OAAe5C,KAAOuF,gBAE9B+uC,eAAgB,CACdlzC,MAAOpB,KAAOsnC,SACdzmC,SAAU,YACVsP,OAAQ,GAEVokC,oBAAqB,CACnBnzC,MAAOpB,KAAOM,UACdO,SAAU,WACVsP,OAAQ,QAkDCqkC,OAvCf,YAI4B,IAH1Bv5C,EAGyB,EAHzBA,cACAg5C,EAEyB,EAFzBA,kBACAQ,EACyB,EADzBA,qBAEM5rC,EAAU1B,KACV0qB,EAAkB52B,EAAczE,OAAOmzC,MAAK,SAAC7kD,EAAW8kD,GAAZ,OAA0BA,EAAI9kD,KAAG,GAcnF,OACE,qBAAKmkB,UAAWJ,EAAQurC,KAAxB,SACE,sBAAKnrC,UAAWJ,EAAQilC,QAAxB,UACE,qBAAK7kC,UAAWJ,EAAQuZ,MAAOlZ,IAAKjO,EAAcg4B,eAAgB9pB,IAAKlO,EAAck4B,aACrF,gCACE,mBAAGlqB,UAAWJ,EAAQyrC,eAAtB,SAAuCr5C,EAAck4B,aACrD,mBAAGlqB,UAAWJ,EAAQ0rC,oBAAtB,4BAAwD1iB,EAAxD,YACEA,EAAkB,EAAI,SAAW,cAGrC,cAAC,GAAD,CACE9nB,QAAS,kBAvBiB,SAAC9O,GACjC,IAAMy5C,EAAgBT,EAAkBr1C,WAAU,SAACxD,GAAD,OAAQA,IAAOxY,OAAOqY,EAAcG,OAEtF,IAAuB,IAAnBs5C,EAAsB,CACxB,IAAMC,EAAM,aAAOV,GACnBU,EAAOC,OAAOF,EAAe,GAC7BD,EAAqBE,QAErBF,EAAqB,GAAD,oBAAKR,GAAL,CAAwBrxD,OAAOqY,EAAcG,OAe9Cy5C,CAA0B55C,IACzCuzB,QAASylB,EAAkBh1D,SAAS2D,OAAOqY,EAAcG,aClDpD05C,OAnBf,YAA2E,IAApDt+C,EAAmD,EAAnDA,OAAQu+C,EAA2C,EAA3CA,sBACvBrP,EAAgB5gB,GAAeC,iBAAiBvuB,EAAOnV,UACvD2zD,EAAex+C,EAAOkxB,QAAU,IAChCutB,EAAWz+C,EAAO4G,OAAS,EAAI43C,GAC/BE,EAAY1+C,EAAO4G,MAAQ5G,EAAO4G,OAAS,EAAI43C,GAErD,OACE,qCACE,sBAAK/rC,UAAW8rC,EAAhB,UACE,8CACA,2CACarP,EADb,IAC6BuP,EAAS7V,QAAQ,GAD9C,WAC0DsG,EAD1D,IAC0EwP,EAAU9V,QAAQ,SAG9F,cAAC,KAAD,CAAO7/C,KAAK,QAAQ20B,UAAWtC,GAAe3wB,KAAK,MAAM8wB,gBAAc,QCZvE5K,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXiuB,eAAgB,CACd/xB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACf+tB,WAAY,EACZ,MAAO,CACLplB,OAAQ,wBAGZqlB,eAAe,cACbjuB,QAAS,OACTC,cAAe,MACfC,IAAK,YACLguB,SAAU,SACVlyB,MAAO,QACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnB0kC,SAAU,CACR9pC,QAAS,yCACT+N,OAAQ,SACR/O,MAAOpB,KAAOM,UACdsC,OAAO,aAAD,OAAe5C,KAAOkD,uBAC5BhB,aAAc,MACdvB,WAAY,QACZE,SAAU,OACV,iBAAkB,CAChBO,MAAOpB,KAAOM,WAEhB6rC,OAAQ,OACR,UAAW,CACTvpC,OAAQ,wBACRwpC,QAAQ,GAAD,OAAKpsC,KAAOF,QAAZ,gBAGX41B,iBAAkB,CAChBnuB,QAAS,OACTC,cAAe,MACfI,WAAY,SACZuI,OAAQ,sBACR,SAAU,CACR5I,QAAS,OACTrB,WAAY,YAEd,MAAO,CACLiK,OAAQ,IAGZglC,iBAAkB,CAChB5xC,MAAO,OACPgE,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,gBAChB,MAAO,CACL7G,SAAU,WACVsP,OAAQ,sBACR/O,MAAOpB,KAAOisC,WACdtmC,UAAW,eA4OJyvC,OA/Nf,YAAgF,IAAD,EAA7D5+C,EAA6D,EAA7DA,OAAQ2F,EAAqD,EAArDA,SAAU0tB,EAA2C,EAA3CA,YAAamF,EAA8B,EAA9BA,cACzCnmB,EAAU1B,KACVkuC,EAAmBxrB,IAAgBnpC,GAAgBg/C,QACnD4V,EAAuB9+C,EACvB++C,EAAmB/+C,EAAO+wB,eAAiB1mC,GAAiB2mC,SAElE,OACE,qCACE,sBAAKve,UAAWJ,EAAQ2sB,eAAxB,UACE,sBAAKvsB,UAAWJ,EAAQysB,eAAxB,UACE,uCACA,cAAC,KAAD,CAAO/1C,KAAK,WAAW20B,UAAW2b,GAAiB5uC,KAAK,OAAOg7B,QAASA,GAAQ56B,cAElF,qBAAK4nB,UAAWJ,EAAQysB,eAAxB,SACG+f,EACC,cAAC,GAAD,CAAa7+C,OAAQ8+C,EAAsBP,sBAAuBlsC,EAAQssC,mBAE1E,qCACE,qBAAKlsC,UAAWJ,EAAQysB,eAAxB,SACE,sBAAKrsB,UAAWJ,EAAQ6sB,iBAAxB,UACE,+DACA,cAAC,GAAD,CAAYjtB,MAAM,wFAGtB,cAAC,KAAD,CACElpB,KAAK,eACL20B,UAAW2b,GACX5uC,KAAK,OACLg7B,QAASA,GAAQsL,aACjB7U,SAAU,SAACC,GACT,IAAM6iC,EAAwB5yD,OAAO+vB,EAAME,OAAOzV,OAClD4xB,EAAc,eAAgBwmB,GAC9B,IAAMC,EACJD,IAAkB30D,GAAiB2mC,SAAWvL,GAAQ0L,gBAAkB1L,GAAQyL,QAC5EguB,EAAiBl/C,EAAOkxB,QACxBiuB,EAAuBF,EAAkB12D,MAC7C,SAACk8B,GAAD,OAAYA,EAAO7f,KAAOs6C,KAEtBE,EACJJ,IAAkB30D,GAAiB2mC,SAAWvL,GAAQ0L,gBAAkB1L,GAAQyL,QAC5EmuB,EAAiBF,EAAuBD,EAAiBD,EAAkB,GAAGr6C,GAC9E06C,EAA6Bt/C,EAAkCu/C,mBAI/DC,EAHkCJ,EAA6B72D,MACnE,SAACk8B,GAAD,OAAYA,EAAO7f,KAAO06C,KAGxBA,EACAF,EAA6B,GAAGx6C,GACpC4zB,EAAc,UAAW6mB,GACzB7mB,EAAc,qBAAsBgnB,YAM5CX,GAAoBl5C,IAAanc,GAAaoc,WAC9C,sBAAK6M,UAAWJ,EAAQysB,eAAxB,UACE,4CACA,cAAC,KAAD,CAAO/1C,KAAK,aAAa20B,UAAW2b,GAAiB5uC,KAAK,OAAOg7B,QAASA,GAAQ5N,aACjF7X,EAAO6X,aAAe7tB,GAAWsC,QAChC,cAAC,KAAD,CACEkwB,MAAM,iBACNzzB,KAAK,iBACL20B,UAAWokB,GACXrlB,YAAY,oBACZhyB,KAAK,eAMf,sBAAKgoB,UAAWJ,EAAQ2sB,eAAxB,UACG6f,GACC,sBAAKpsC,UAAWJ,EAAQysB,eAAxB,UACE,sBAAKrsB,UAAWJ,EAAQ6sB,iBAAxB,UACE,oCACA,cAAC,GAAD,CAAYjtB,MAAM,gFAEpB,cAAC,KAAD,CACElpB,KAAK,UACL20B,UAAW2b,GACX5uC,KAAK,OACLg7B,QAASs5B,EAAmBt5B,GAAQ0L,gBAAkB1L,GAAQyL,aAInE2tB,GAAoBl5C,IAAanc,GAAaoc,WAC7C,sBAAK6M,UAAWJ,EAAQysB,eAAxB,UACE,sBAAKrsB,UAAWJ,EAAQ6sB,iBAAxB,UACE,+DACA,cAAC,GAAD,CAAYjtB,MAAM,sFAEpB,cAAC,KAAD,CACElpB,KAAK,eACL20B,UAAW2b,GACX5uC,KAAK,OACLg7B,QAASA,GAAQsL,aACjB7U,SAAU,SAACC,GACT,IAAM6iC,EAAwB5yD,OAAO+vB,EAAME,OAAOzV,OAClD4xB,EAAc,eAAgBwmB,GAC9B,IAAMC,EACJD,IAAkB30D,GAAiB2mC,SAAWvL,GAAQ0L,gBAAkB1L,GAAQyL,QAC5EguB,EAAiBl/C,EAAOkxB,QAExBmuB,EADuBJ,EAAkB12D,MAAK,SAACk8B,GAAD,OAAYA,EAAO7f,KAAOs6C,KAChCA,EAAiBD,EAAkB,GAAGr6C,GACpF4zB,EAAc,UAAW6mB,SAKhCR,GAAoBl5C,IAAanc,GAAa2qC,QAC7C,qBAAK1hB,UAAWJ,EAAQ2sB,eAAxB,SACE,sBAAKvsB,UAAWJ,EAAQysB,eAAxB,UACE,sBAAKrsB,UAAWJ,EAAQ6sB,iBAAxB,UACE,+DACA,cAAC,GAAD,CAAYjtB,MAAM,sFAEpB,cAAC,KAAD,CACElpB,KAAK,eACL20B,UAAW2b,GACX5uC,KAAK,OACLg7B,QAASA,GAAQsL,aACjB7U,SAAU,SAACC,GACT,IAAM6iC,EAAwB5yD,OAAO+vB,EAAME,OAAOzV,OAClD4xB,EAAc,eAAgBwmB,GAC9B,IAAMC,EACJD,IAAkB30D,GAAiB2mC,SAAWvL,GAAQ0L,gBAAkB1L,GAAQyL,QAC5EguB,EAAiBl/C,EAAOkxB,QAIxBmuB,EAHuBJ,EAAkB12D,MAC7C,SAACk8B,GAAD,OAAYA,EAAO7f,KAAOs6C,KAEkBA,EAAiBD,EAAkB,GAAGr6C,GACpF4zB,EAAc,UAAW6mB,WAMjCR,GACAl5C,IAAanc,GAAaoc,WACxB,sBAAK6M,UAAWJ,EAAQysB,eAAxB,UACE,4CACA,cAAC,KAAD,CAAO/1C,KAAK,aAAa20B,UAAW2b,GAAiB5uC,KAAK,OAAOg7B,QAASA,GAAQ5N,aACjF7X,EAAO6X,aAAe7tB,GAAWsC,QAChC,cAAC,KAAD,CACEkwB,MAAM,iBACNzzB,KAAK,iBACL20B,UAAWokB,GACXrlB,YAAY,oBACZhyB,KAAK,eAOjB,sBAAKgoB,UAAWJ,EAAQ2sB,eAAxB,UACG6f,GAAoBl5C,IAAanc,GAAa2qC,SAC7C,sBAAK1hB,UAAWJ,EAAQysB,eAAxB,UACE,4CACA,cAAC,KAAD,CAAO/1C,KAAK,aAAa20B,UAAW2b,GAAiB5uC,KAAK,OAAOg7B,QAASA,GAAQ5N,aACjF7X,EAAO6X,aAAe7tB,GAAWsC,QAChC,cAAC,KAAD,CACEkwB,MAAM,iBACNzzB,KAAK,iBACL20B,UAAWokB,GACXrlB,YAAY,oBACZhyB,KAAK,YAKZkb,IAAanc,GAAa2qC,UAAY0qB,GACrC,qCACE,sBAAKpsC,UAAWJ,EAAQysB,eAAxB,UACE,4CACA,cAAC,KAAD,CAAO/1C,KAAK,aAAa20B,UAAW2b,GAAiB5uC,KAAK,OAAOg7B,QAASA,GAAQ5N,aACjF7X,EAAO6X,aAAe7tB,GAAWsC,QAChC,cAAC,KAAD,CACEkwB,MAAM,iBACNzzB,KAAK,iBACL20B,UAAWokB,GACXrlB,YAAY,oBACZhyB,KAAK,YAIX,sBAAKgoB,UAAWJ,EAAQysB,eAAxB,UACE,qBAAKrsB,UAAWJ,EAAQssC,iBAAxB,SACE,uEAEF,cAAC,KAAD,CAAOlsC,UAAU,WAAW1pB,KAAK,YAAY20B,UAAWtC,GAAe3wB,KAAK,kBAKpF,qBAAKgoB,UAAWJ,EAAQ2sB,eAAxB,SACE,sBAAKvsB,UAAWJ,EAAQysB,eAAxB,UACE,sBAAKrsB,UAAWJ,EAAQssC,iBAAxB,UACE,kFACA,wCAAW,cAAK3+C,EAAOiG,mBAAZ,aAAK,EAAoBle,QAApC,oBAEF,cAAC,KAAD,CACE0qB,UAAU,WACV1pB,KAAK,cACLqtD,OAAQ,gBAAG96B,EAAH,EAAGA,MAAH,OACN,cAAC+6B,GAAA,EAAD,2BACEoJ,iBAAiB,GACbnkC,GAFN,IAGE7I,UAAWJ,EAAQqjC,SACnBa,QAAS,EACTC,aAAa,GACb36B,UAAW,OAGfpxB,KAAK,kBC1FFi1D,OA7Kf,YAUsB,IAAD,YATnBlC,EASmB,EATnBA,YACAD,EAQmB,EARnBA,eACA9gD,EAOmB,EAPnBA,aACAkjD,EAMmB,EANnBA,gBACA9iD,EAKmB,EALnBA,aACA+iD,EAImB,EAJnBA,gBACAnC,EAGmB,EAHnBA,kBACAQ,EAEmB,EAFnBA,qBACA4B,EACmB,EADnBA,cAEMx4D,EAAWy6B,eACX7uB,EAAW4uB,cACX9D,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAChD1S,EAAsCsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAC9E0E,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1DwC,EAAWte,EAAS+H,SAAS3G,SAAS,WAAae,GAAa2qC,QAAU3qC,GAAaoc,UACvFF,EAAI,oBAAIre,EAAS+b,aAAb,aAAI,EAAgBsC,YAApB,QAAqC,KACzCo6C,EAAoBjO,mBACxB,kCAAMpzC,EAAeA,sBAArB,aAAM,EAA+BuF,KAAI,SAACS,GAAD,OAAmBA,EAAcG,QAC1E,CAACnG,IAEGshD,GAA8B,UAAA58C,EAAKpS,eAAL,eAAcM,SAAS2uD,sBAAuB,EAGlF15B,qBAAU,WACqC,IAAD,GAAvC5gB,GAAQjH,EAAeA,gBAC1Bw/C,EAAoB,UAACx/C,EAAeA,sBAAhB,aAAC,EAA+BuF,KAAI,SAACS,GAAD,OAAmBrY,OAAOqY,EAAcG,UAEjG,CAACnG,EAAgBiH,EAAMu4C,IAE1B,IA4CMgC,EAAa,SAACjgD,EAAoB+1B,GACxBwnB,IAAdC,GAEiC,IAA7BC,EAAkB11D,OACpBguC,EAAQ9T,eAAc,GAhDF,SAACjiB,GACvB,GAAI0F,EAAM,CACRk6C,GAAgB,GAChB,IAAMvxD,EAA6B,CACjC6iC,QAASlxB,EAAOkxB,QAChBxqB,OAAQ,CACNE,MAAO5G,EAAO4G,MACd/b,SAAUmV,EAAOnV,UAEnB8a,SAAUD,EAAKC,SACfM,iBAAoCrb,IAAvBoV,EAAOiG,YAA4BjG,EAAOiG,YAAc,GACrE/W,OAAQwW,EAAKxW,OACb2oB,WAAYsX,GAAWc,gBAAgBjwB,EAAO6X,WAAY7X,EAAOkwB,gBACjEse,gBAAiBiP,EACjBv3C,UAAWlG,EAAOkG,WAAa,GAC/BmtB,YAAanpC,GAAgBg/C,QAC7BnY,aAAc/wB,EAAO+wB,cAGnBprB,IAAanc,GAAa2qC,UAAS9lC,EAAQ6X,UAAYlG,EAAOkG,WAClEjT,EAAS8+B,GAAW1jC,EAASqX,EAAKd,GAAIzB,EAAKpS,QAASM,SAASuT,GAAI/R,iBAC5D,CAAC,IAAD,MACL8sD,GAAgB,GAChB,IAAMtxD,EAA6B,CACjCzF,gBAA0CgC,KAA9B,UAAAuY,EAAKpS,eAAL,eAAcM,SAASuT,IAAvB,UAA0CzB,EAAKpS,eAA/C,aAA0C,EAAcM,SAASuT,GAAM,EACnFssB,QAASlxB,EAAOkxB,QAChBxqB,OAAQ,CACNE,MAAO5G,EAAO4G,MACd/b,SAAUmV,EAAOnV,UAEnB8a,SAAUA,GAAsBnc,GAAaoc,UAC7C3B,OAAM,UAAEd,EAAKpS,eAAP,aAAE,EAAckT,OACtBgC,iBAAoCrb,IAAvBoV,EAAOiG,YAA4BjG,EAAOiG,YAAc,GACrEC,UAAWlG,EAAOkG,WAAa,GAC/B2R,WAAYsX,GAAWc,gBAAgBjwB,EAAO6X,WAAY7X,EAAOkwB,gBACjEse,gBAAiBiP,EACjBpqB,YAAanpC,GAAgBg/C,QAC7BnY,aAAc/wB,EAAO+wB,cAEnBprB,IAAanc,GAAa2qC,UAAS9lC,EAAQ6X,UAAYlG,EAAOkG,WAClEjT,EAAS4+B,GAAWxjC,KAUpB6xD,CAAgBlgD,IAQpB,OACE,mCACE,cAAC,KAAD,CACEuiB,cAAe,CACb13B,SAAU6a,EAAI,UAAGA,EAAKgB,cAAR,aAAG,EAAa7b,SAAWxB,GAAS2D,KAClDkkC,QAASxrB,EAAOA,EAAKwrB,SAAU,UAAA/tB,EAAKpS,eAAL,eAAcM,SAAS6/B,SAAU/tB,EAAKpS,QAAQM,SAAS6/B,QAAU,EAChGtqB,MAAOlB,EAAI,UAAGA,EAAKgB,cAAR,aAAG,EAAaE,MAAQ,EACnCX,YAAaP,EAAOA,EAAKO,YAAc,GACvCC,UAAWR,EAAOA,EAAKQ,UAAY,GACnC2R,WAAYnS,GAA4B,OAApBA,EAAKmS,WAAsB7tB,GAAWsC,OAAStC,GAAW2lC,KAC9EO,eAAgBxqB,GAAQA,EAAKmS,WAAa,IAAI1W,KAAKuE,EAAKmS,YAAc,IAAI1W,KAC1Eg/C,eAAgBz6C,EAAOA,EAAK06C,YAAc,GAC1CrvB,aAAcrrB,EAAOA,EAAKqrB,aAAegvB,GAE3Cv9B,iBAAkBxL,GAAQlB,WAC1B2M,SAAU,SAACziB,EAAQ+1B,GAAT,OAAqBkqB,EAAWjgD,EAAQ+1B,IAbpD,SAeG,YAAgC,IAAD,IAA5B/1B,EAA4B,EAA5BA,OAAQw4B,EAAoB,EAApBA,cACV,OACE,qBAAK/lB,UAAWotC,EAAc/uC,UAA9B,SACE,eAAC,KAAD,CAAMlM,GAAG,gBAAT,UACE,eAAC+e,GAAA,EAAD,CAAOlR,UAAWotC,EAAcQ,UAAhC,UACE,qBAAK5tC,UAAWotC,EAAczV,eAA9B,SACE,mBAAG33B,UAAWotC,EAAcS,aAA5B,sCAEF,cAAC,GAAD,CAAQtgD,OAAQA,EAAQ2F,SAAUA,EAAU0tB,YAAanpC,GAAgBg/C,QAAS1Q,cAAeA,OAEnG,eAAC7U,GAAA,EAAD,CAAOlR,UAAWotC,EAAcQ,UAAhC,UACE,sBAAK5tC,UAAWotC,EAAcU,cAA9B,UACE,mBAAG9tC,UAAWotC,EAAcW,mBAA5B,4BACC/hD,EAAeA,gBACd,sBAAKgU,UAAWotC,EAAcY,uBAA9B,UACE,kDACA,cAAC,GAAD,CACEvkC,SAAU,SAACC,GAAD,OAtCI,SAACA,GACrC8hC,EAAqB9hC,EAAME,OAAO2b,SAAU8nB,GAA0B,IAqC3BY,CAA8BvkC,IACnD6b,QAASylB,EAAkB11D,UAAlB,UAA6B0W,EAAeA,sBAA5C,aAA6B,EAA+B1W,gBAK3E0W,EAAeA,eAGf,qCACE,qIAICA,EAAeA,gBAA+C,IAA7Bg/C,EAAkB11D,QAClD,mBAAG0qB,UAAWotC,EAAcptD,MAA5B,yDAEF,qBAAKggB,UAAWotC,EAAcc,uBAA9B,mBACGliD,EAAeA,sBADlB,aACG,EAA+BuF,KAAI,SAACS,GACnC,OACE,cAAC,GAAD,CAEEA,cAAeA,EACfg5C,kBAAmBA,EACnBQ,qBAAsBA,GAHjBx5C,EAAcG,YAd7B,cAAC,GAAD,OAyBHmZ,GACC,cAAC,GAAD,CACEw/B,eAAgBA,EAChB73C,KAAMA,EACNjJ,aAAcA,EACdI,aAAcA,EACd2gD,YAAaA,eCrHlB3hB,OAjEf,YAOyB,IAAD,EANtBp9B,EAMsB,EANtBA,eACAg/C,EAKsB,EALtBA,kBACAQ,EAIsB,EAJtBA,qBACA6B,EAGsB,EAHtBA,kBACA/qB,EAEsB,EAFtBA,cACA1iB,EACsB,EADtBA,QAEM/Y,EAAgByoB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,SAASiI,iBAIjEsnD,EAA6BniD,EAAe1W,OAAS,EACrD84D,EAAuB,OAAGvnD,QAAH,IAAGA,GAAH,UAAGA,EAAei+B,MAAK,SAACupB,GAAD,OAAQA,EAAGl8C,KAAOmwB,YAAzC,aAAG,EAAsDhsC,KAEtF,OACE,eAAC46B,GAAA,EAAD,CAAOlR,UAAWJ,EAAQguC,UAA1B,UACE,sBAAK5tC,UAAWJ,EAAQkuC,cAAxB,UACE,mBAAG9tC,UAAWJ,EAAQmuC,mBAAtB,4BACCzrB,GAAiB6rB,GAChB,sBAAKnuC,UAAWJ,EAAQouC,uBAAxB,UACE,kDACA,cAAC,GAAD,CACEvkC,SAd0B,SAACC,GACrC8hC,EAAqB9hC,EAAME,OAAO2b,QAAU8nB,EAAoB,KActD9nB,QAASylB,EAAkB11D,SAAW0W,EAAe1W,eAK3DgtC,EAKG6rB,EAQH,qCACE,qIAGCniD,GAA+C,IAA7Bg/C,EAAkB11D,QACnC,mBAAG0qB,UAAWJ,EAAQ5f,MAAtB,yDAEF,qBAAKggB,UAAWJ,EAAQsuC,uBAAxB,SACGliD,EAAeuF,KAAI,SAAC+8C,GAAD,OAClB,cAAC,GAAD,CAEEt8C,cAAes8C,EACftD,kBAAmBA,EACnBQ,qBAAsBA,GAHjB8C,EAAan8C,YAjB1B,cAAC,GAAD,CACEqN,MAAM,oCACNhkB,QAAO,wEACL4yD,QADK,IACLA,IAA2B,kBAR/B,cAAC,GAAD,CACE5uC,MAAM,2CACNhkB,QAAQ,oFCvCZ0iB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXiuB,eAAgB,CACd/xB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACf,MAAO,CACL2I,OAAQ,wBAGZqlB,eAAe,cACbjuB,QAAS,OACTC,cAAe,MACfC,IAAK,YACLguB,SAAU,SACVlyB,MAAO,QACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnBkuB,iBAAkB,CAChBnuB,QAAS,OACTC,cAAe,MACfI,WAAY,SACZuI,OAAQ,sBACR,SAAU,CACR5I,QAAS,OACTrB,WAAY,YAEd,MAAO,CACLiK,OAAQ,IAGZkd,KAAM,CACJA,KAAM,GAERmqB,QAAS,CACPnqB,KAAM,QAkEGoqB,OArDf,YAMgC,IAL9BC,EAK6B,EAL7BA,QACAC,EAI6B,EAJ7BA,uBACAz7C,EAG6B,EAH7BA,KACA07C,EAE6B,EAF7BA,WACAphD,EAC6B,EAD7BA,OAEMqS,EAAU1B,KACVouC,EAAmB/+C,EAAO+wB,eAAiB1mC,GAAiB2mC,SAElE,OACE,qCACE,cAAC,GAAD,CAAY6e,QAAM,EAACrzB,MAAK,kBAAa4kC,EAAa,IAAM,KAAOx2C,MAAM,SACrE,sBAAK6H,UAAWJ,EAAQ2sB,eAAxB,UACE,sBAAKvsB,UAAS,UAAKJ,EAAQysB,eAAb,YAA+BzsB,EAAQ2uC,SAArD,UACE,wCACA,cAAC,KAAD,CACEj4D,KAAMq4D,EAAa,aAAe,gBAClC1jC,UAAW2b,GACX5uC,KAAK,OACLg7B,QAAS07B,EACTv6C,MAAOs6C,EACPxkC,SAAU0kC,KAAgB17C,OAG9B,qBAAK+M,UAAS,UAAKJ,EAAQysB,eAAb,YAA+BzsB,EAAQwkB,MAArD,SACE,qCACE,wCACA,cAAC,KAAD,CACE9tC,KAAMq4D,EAAa,SAAW,oBAC9B1jC,UAAWtC,GACX3wB,KAAK,MACL8wB,gBAAc,SAIpB,sBAAK9I,UAAS,UAAKJ,EAAQysB,eAAb,YAA+BzsB,EAAQwkB,MAArD,UACE,sBAAKpkB,UAAWJ,EAAQ6sB,iBAAxB,UACE,oCACA,cAAC,GAAD,CAAYjtB,MAAM,gFAEpB,cAAC,KAAD,CACElpB,KAAMq4D,EAAa,UAAY,qBAC/B1jC,UAAW2b,GACX5uC,KAAK,OACLg7B,QAASs5B,EAAmBt5B,GAAQ0L,gBAAkB1L,GAAQyL,oBC9FpEvgB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXwwC,eAAe,cACbtwC,QAAS,OACTC,cAAe,SACfjE,MAAO,OACPoC,UAAW,OACVhG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BhC,UAAW,UAGfmyC,SAAS,cACPvwC,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,OACPkE,IAAK,WACL,QAAS,CACP5G,SAAU,WACVQ,WAAYrB,KAAOwB,oBAErB,MAAO,CACLX,SAAU,YACVQ,WAAYrB,KAAOwB,mBACnB2O,OAAQ,YACR/O,MAAOpB,KAAOwa,gBAEf7a,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfI,WAAY,UAGhBmwC,aAAc,CACZ32C,MAAOpB,KAAOg4C,WAEhBhjC,QAAS,CACPzR,MAAO,OACP4M,OAAQ,eA+EC8nC,OApEf,YAAwE,IAAD,IAArC/7C,EAAqC,EAArCA,KAC1B2M,EAAU1B,KACV5f,EAAUgxB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,KAAKpS,WACvDuI,EAAgByoB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,SAASiI,iBAC/D0G,EAAW0hD,eAAX1hD,OACFkvC,EAAgB5gB,GAAeC,iBAAiBvuB,EAAOnV,UALQ,EAMrBwyB,mBAA0C,IANrB,oBAM9DskC,EAN8D,KAM5CC,EAN4C,KAQrEt7B,qBAAU,WACR,GAAIhtB,GAAiBA,EAAcvR,OAAS,EAAG,CAC7C,IAAM09B,EAAUnsB,EACb+K,QAAO,SAACrS,GAAD,OAA8BA,EAAY9C,SAAW/E,GAAsB03D,UAClF79C,KAAI,SAAChS,GAAD,MAAkB,CACrB4S,GAAI5S,EAAY4S,GAAG/R,WACnB+T,MAAO5U,EAAYjJ,SAGvB64D,EAAoBn8B,MAErB,CAACnsB,IAnBiE,MAqBnBu4C,mBAAQ,WACxD,IAEMiQ,GAFqB9hD,EAAO0G,QAAU,IAAK1G,EAAOkxB,QAAU,OACvClxB,EAAOiW,mBAAqB,IAAKjW,EAAOu/C,mBAAqB,KAGlFn4C,GAAepH,EAAO0G,SAAU1G,EAAOiW,kBAI7C,MAAO,CAAE7O,cAAa06C,iBAAgBC,SAFrB36C,EAAc06C,KAG9B,CAAC9hD,EAAO0G,OAAQ1G,EAAOiW,kBAAmBjW,EAAOu/C,mBAAoBv/C,EAAOkxB,UAVvE9pB,EArB6D,EAqB7DA,YAAa06C,EArBgD,EAqBhDA,eAAgBC,EArBgC,EAqBhCA,SAYrC,OACE,qCACE,cAAC,GAAD,CACEb,SAAgB,OAAPnwD,QAAO,IAAPA,GAAA,UAAAA,EAASM,SAASuT,UAAlB,eAAsB/R,aAAc,GAC7CsuD,uBAAwB,CACtB,CAAEv8C,IAAW,OAAP7T,QAAO,IAAPA,GAAA,UAAAA,EAASM,SAASuT,UAAlB,eAAsB/R,aAAc,GAAI+T,OAAc,OAAP7V,QAAO,IAAPA,OAAA,EAAAA,EAASM,SAAS8kB,aAAc,KAEvFzQ,KAAMA,EACN07C,YAAU,EACVphD,OAAQA,IAEV,cAACsf,GAAA,EAAD,CAASC,YAAY,aAAa9M,UAAWJ,EAAQmM,UACrD,cAAC,GAAD,CACE0iC,QAASlhD,EAAO+0B,eAAiB,GACjCosB,uBAAwBQ,EACxBj8C,KAAMA,EACN1F,OAAQA,IAEV,cAACsf,GAAA,EAAD,CAASC,YAAY,aAAa9M,UAAWJ,EAAQmM,UACrD,sBAAK/L,UAAWJ,EAAQgvC,eAAxB,UACE,sBAAK5uC,UAAWJ,EAAQivC,SAAxB,UACE,gDACA,8BACGpS,EADH,IACmB1G,GAAaC,kBAAkBrhC,SAGpD,sBAAKqL,UAAWJ,EAAQkvC,aAAxB,UACGrS,EADH,IACmB1G,GAAaC,kBAAkBqZ,GADlD,MACsE5S,EAAe,IAClF1G,GAAaC,kBAAkBsZ,GAFlC,mBCxFOC,OAtBf,YAA+F,IAAxDC,EAAuD,EAAvDA,kBAC7BjiD,EAAW0hD,eAAX1hD,OACF1G,EAAgByoB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,SAASiI,iBAiBvE,OAfAgtB,qBAAU,WACR,GAAIhtB,GAAiBA,EAAcvR,OAAS,GAAKiY,EAAO+0B,cAAe,CACrE,IAAMmtB,EAAsB5oD,EAAci+B,MACxC,SAACvlC,GAAD,OAAiBA,EAAY4S,KAAO5E,EAAO+0B,iBAG3CktB,EADEC,EACgBA,EAAoB5T,gBAEpB,SAGpB2T,EAAkB,MAEnB,CAACA,EAAmB3oD,EAAe0G,EAAO+0B,gBAEtC,MCyLMotB,OA/Kf,YAUoB,IAAD,kBATjB3E,EASiB,EATjBA,YACAD,EAQiB,EARjBA,eACA9gD,EAOiB,EAPjBA,aACAkjD,EAMiB,EANjBA,gBACA9iD,EAKiB,EALjBA,aACA+iD,EAIiB,EAJjBA,gBACAnC,EAGiB,EAHjBA,kBACAQ,EAEiB,EAFjBA,qBACA4B,EACiB,EADjBA,cAEMx4D,EAAWy6B,eACX7uB,EAAW4uB,cACX9D,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAChDxL,EAAWte,EAAS+H,SAAS3G,SAAS,WAAae,GAAa2qC,QAAU3qC,GAAaoc,UACvFF,EAAI,oBAAIre,EAAS+b,aAAb,aAAI,EAAgBsC,YAApB,QAAqC,KACzCvC,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1D7J,EAAgByoB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,SAASiI,iBAPtD,EAQ2B+jB,mBAA0B,IARrD,oBAQV5e,EARU,KAQMwjD,EARN,KASXnC,EAAoBjO,mBACxB,kBAAMpzC,EAAeuF,KAAI,SAACS,GAAD,OAAmBA,EAAcG,QAC1D,CAACnG,IAEGshD,GAA8B,UAAA58C,EAAKpS,eAAL,eAAcM,SAAS2uD,sBAAuB,EAE5Ez9B,EAAwC,CAC5C35B,YAAY,UAAAua,EAAKpS,eAAL,eAAcM,SAASuT,IAAvB,UAA4BzB,EAAKpS,eAAjC,aAA4B,EAAcM,SAASuT,GAAG/R,WAAa,GAC/EhI,SAAU6a,EAAI,UAAGA,EAAKgB,cAAR,aAAG,EAAa7b,SAAWxB,GAAS2D,KAClD0Z,OAAQhB,EAAOA,EAAKgB,OAAOE,MAAQ,EACnCsqB,QAASxrB,EAAOA,EAAKwrB,QAAU,EAC/BjrB,YAAaP,EAAOA,EAAKO,YAAc,GACvCC,UAAWR,EAAOA,EAAKQ,UAAY,GACnC2R,WAAYnS,GAA4B,OAApBA,EAAKmS,WAAsB7tB,GAAWsC,OAAStC,GAAW2lC,KAC9EO,eAAgBxqB,GAAQA,EAAKmS,WAAa,IAAI1W,KAAKuE,EAAKmS,YAAc,IAAI1W,KAC1EwE,SAAUA,EACVorB,aAAcrrB,EAAOA,EAAKqrB,aAAegvB,EACzCvR,gBAAiB9oC,EAAOA,EAAK06C,YAAc,GAC3CrrB,cAAervB,IAAO,UAAAA,EAAK0iC,oBAAL,eAAmBrT,gBAAsB,GAC/D9e,kBAAmBvQ,IAAO,UAAAA,EAAK0iC,oBAAL,eAAmB1hC,OAAOE,QAAa,EACjE24C,mBAAoB75C,IAAO,UAAAA,EAAK0iC,oBAAL,eAAmBlX,UAAe,GAG/D5K,qBAAU,WACR,GAAIhtB,GAAiBA,EAAcvR,OAAS,GAAKw6B,EAAcwS,cAAe,CAC5E,IAAMmtB,EAAsB5oD,EAAci+B,MAAK,SAACupB,GAAD,OAAQA,EAAGl8C,KAAO2d,EAAcwS,iBAC3EmtB,GACFD,EAAkBC,EAAoB5T,sBAGxC2T,EAAkB,MAEnB,CAAC3oD,EAAeipB,EAAcwS,gBAEjC,IAmDMkrB,EAAa,SAACjgD,EAAgC+1B,GACpCwnB,IAAdC,GAEiC,IAA7BC,EAAkB11D,OACpBguC,EAAQ9T,eAAc,GAvDF,SAACjiB,GACvB,GAAI0F,GAAQA,EAAK0iC,aAAc,CAC7B,IAAMga,EAAuD,CAC3DC,YAAa38C,EAAK0iC,aAAaxjC,GAC/B8B,QAAS1G,EAAOiW,kBAChBib,QAASlxB,EAAOu/C,oBAGlBK,GAAgB,GAChB,IAAMvxD,EAAkC,CACtCsX,SAAUD,EAAKC,SACfM,iBAAoCrb,IAAvBoV,EAAOiG,YAA4BjG,EAAOiG,YAAc,GACrES,OAAQ,CAAEE,OAAQ5G,EAAO0G,OAAQ7b,SAAUmV,EAAOnV,UAClDqE,OAAQwW,EAAKxW,OACb2oB,WAAYsX,GAAWc,gBAAgBjwB,EAAO6X,WAAY7X,EAAOkwB,gBACjEse,gBAAiBiP,EACjBv3C,UAAWlG,EAAOkG,WAAa,GAC/Brb,SAAUmV,EAAOnV,SACjBqmC,QAASlxB,EAAOkxB,QAChBkxB,uBAAwBA,EACxB/uB,YAAanpC,GAAgBopC,MAC7BvC,aAAc/wB,EAAO+wB,cAGnBprB,IAAanc,GAAa2qC,UAAS9lC,EAAQ6X,UAAYlG,EAAOkG,WAClEjT,EAAS8+B,GAAW1jC,EAASqX,EAAKd,GAAIzB,EAAKpS,QAASM,SAASuT,GAAI/R,iBAC5D,CAAC,IAAD,MACL8sD,GAAgB,GAChB,IAAMtxD,EAAkC,CACtCzF,gBAA0CgC,KAA9B,UAAAuY,EAAKpS,eAAL,eAAcM,SAASuT,IAAvB,UAA0CzB,EAAKpS,eAA/C,aAA0C,EAAcM,SAASuT,GAAM,EACnF8B,OAAQ,CAAEE,OAAQ5G,EAAO0G,OAAQ7b,SAAUmV,EAAOnV,UAClDqmC,QAASlxB,EAAOkxB,QAChBvrB,SAAUA,GAAsBnc,GAAaoc,UAC7C3B,OAAM,UAAEd,EAAKpS,eAAP,aAAE,EAAckT,OACtBgC,iBAAoCrb,IAAvBoV,EAAOiG,YAA4BjG,EAAOiG,YAAc,GACrEC,UAAWlG,EAAOkG,WAAa,GAC/B2R,WAAYsX,GAAWc,gBAAgBjwB,EAAO6X,WAAY7X,EAAOkwB,gBACjEse,gBAAiBiP,EACjBhP,iBAAkB,CAChB/nC,QAAS1G,EAAOiW,kBAChB8e,cAAe/0B,EAAO+0B,cACtB7D,QAASlxB,EAAOu/C,oBAElBlsB,YAAanpC,GAAgBopC,MAC7BvC,aAAc/wB,EAAO+wB,cAEnBprB,IAAanc,GAAa2qC,UAAS9lC,EAAQ6X,UAAYlG,EAAOkG,WAClEjT,EAAS4+B,GAAWxjC,KAUpB6xD,CAAgBlgD,IAUpB,OANAsmB,qBAAU,WACJ7nB,IAAmBiH,GACrBu4C,EAAqBx/C,EAAeuF,KAAI,SAACS,GAAD,OAAmBA,EAAcG,SAE1E,CAACnG,EAAgBw/C,EAAsBv4C,IAGxC,mCACE,cAAC,KAAD,CACE6c,cAAeA,EACfC,iBAAkBxL,GAAQhB,gBAC1ByM,SAAU,SAACziB,EAAQ+1B,GAAT,OAAqBkqB,EAAWjgD,EAAQ+1B,IAHpD,SAKG,YAAgC,IAA7B/1B,EAA4B,EAA5BA,OAAQw4B,EAAoB,EAApBA,cACV,OACE,sBAAK/lB,UAAWotC,EAAc/uC,UAA9B,UACE,cAAC,GAAD,CAA6BmxC,kBAAmBA,IAChD,eAAC,KAAD,CAAMr9C,GAAG,gBAAT,UACE,eAAC+e,GAAA,EAAD,CAAOlR,UAAWotC,EAAcQ,UAAhC,UACE,qBAAK5tC,UAAWotC,EAAczV,eAA9B,SACE,mBAAG33B,UAAWotC,EAAcS,aAA5B,sCAEF,cAAC,GAAD,CAAQtgD,OAAQA,EAAQ2F,SAAUA,EAAU0tB,YAAanpC,GAAgBopC,MAAOkF,cAAeA,OAEjG,eAAC7U,GAAA,EAAD,CAAOlR,UAAWotC,EAAcQ,UAAhC,UACE,qBAAK5tC,UAAWotC,EAAcU,cAA9B,SACE,mBAAG9tC,UAAWotC,EAAcW,mBAA5B,sCAEF,cAAC,GAAD,CACE76C,SAAUA,EACV0tB,YAAanpC,GAAgBopC,MAC7B5tB,KAAMA,OAGV,cAAC,GAAD,CACEjH,eAAgBA,EAChBg/C,kBAAmBA,EACnBQ,qBAAsBA,EACtB6B,kBAAmBA,EACnBztC,QAASwtC,EACT9qB,cAAe/0B,EAAO+0B,gBAEvBhX,GACC,cAAC,GAAD,CACEw/B,eAAgBA,EAChB73C,KAAMA,EACNjJ,aAAcA,EACdI,aAAcA,EACd2gD,YAAaA,EACbC,kBAAmBA,gBC9KjC9sC,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXC,UAAW,CACTxB,SAAU,WACVqK,OAAQ,SACRmc,cAAe,UAEjBuqB,UAAW,CACT1mC,OAAQ,IACR5L,UAAW,WACXnC,QAAS,WACTmF,QAAS,OACTC,cAAe,SACfI,WAAY,QACZF,eAAgB,gBAChBtG,MAAOpB,KAAOM,WAEhBw2C,aAAc,CACZ11C,MAAOpB,KAAOM,UACdO,SAAU,OACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,cAEV4mC,cAAc,cACZxvC,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,OACP4M,OAAQ,aACPxQ,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfI,WAAY,aACZH,IAAK,YAGTuvC,mBAAoB,CAClB51C,MAAOpB,KAAOM,UACdO,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,GAEV2oC,wBAAyB,CACvBvxC,QAAS,cACTE,IAAK,WACLrG,MAAOpB,KAAOmG,MACdtF,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,EACR,SAAU,CACR5I,QAAS,OACT22B,UAAW,WAGf0C,gBAAc,GACZr9B,MAAO,OACPgE,QAAS,OACTC,cAAe,SACfI,WAAY,aACZE,aAAc,QALF,eAMXnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfI,WAAY,aACZ,QAAS,CACPrD,UAAW,UAVH,eAaZ,MAAO,CACL4L,OAAQ,EACR9O,WAAYze,OAAOod,KAAOwB,sBAfhB,eAiBZ,SAAU,CACRH,WAAYze,OAAOod,KAAOsB,oBAlBhB,GAqBdy3C,sBAAsB,cACpBxxC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZH,IAAK,WACLC,eAAgB,gBAChBnE,MAAO,QACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnBwxC,YAAY,cACVp2C,OAAO,aAAD,OAAe5C,KAAO+G,mBAC5B3E,QAAS,UACTF,aAAc,YACdqB,MAAO,MACP,mBAAoB,CAClB26B,UAAW,aACXj2B,WAAY,EACZ7G,MAAOpB,KAAO+G,mBAEhB,wCAAyC,CACvClE,gBAAiB,gBAElBlD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGX01C,eAAgB,CACdl2C,YAAa/C,KAAOF,QACpB,mBAAoB,CAClBsB,MAAOpB,KAAOF,UAGlBo5C,kBAAmB,CACjBr4C,SAAU,WACVO,MAAOpB,KAAOM,UACd,MAAO,CACL6P,OAAQ,EACRtP,SAAU,WACVO,MAAOpB,KAAO6E,WAEhB,kBAAmB,CACjB0C,QAAS,OACTE,IAAK,WACLrG,MAAOpB,KAAOM,UACd,SAAU,CACRiH,QAAS,OACT22B,UAAW,YAIjB+Y,uBAAwB,CACtB1vC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZ,MAAO,CACLuI,OAAQ,IAGZlnB,MAAO,CACLmY,MAAOpB,KAAOgQ,KAEhBmnC,uBAAwB,CACtB5vC,QAAS,OACTC,cAAe,MACfiuB,SAAU,OACVhuB,IAAK,KACLlE,MAAO,QAET2P,SAAU,CACR/P,QAAS,SAqNAkX,OAhNf,WAAiB,IAAD,QACRrQ,EAAWM,eACXzsB,EAAWy6B,eACX7uB,EAAW4uB,cACXxP,EAAU1B,KACVhL,EAAWte,EAAS+H,SAAS3G,SAAS,WAAae,GAAa2qC,QAAU3qC,GAAaoc,UACvFF,EAAI,oBAAIre,EAAS+b,aAAb,aAAI,EAAgBsC,YAApB,QAAyC,KAC7CvC,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1D3R,EAAoBuwB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM5R,SAC5DmxD,EAAmB5gC,aAAY,SAAC3e,GAAD,OAAsBA,EAAMpR,eAC3DsH,EAAgBqpD,EAAiBrpD,cACjC1Q,EAAU,UAAGua,EAAKpS,eAAR,aAAG,EAAcM,SAASuT,GACpCg+C,EAA4B,UAAGz/C,EAAKpS,eAAR,aAAG,EAAcM,SAASgzB,qBAZ9C,EAa0BhH,oBAAkB,GAb5C,oBAaP5gB,EAbO,KAaOkjD,EAbP,OAc0BtiC,oBAAkB,GAd5C,oBAcPxgB,EAdO,KAcO+iD,EAdP,OAeoCviC,mBAChD3X,GAAQA,EAAK4oC,gBAAkB5oC,EAAK4oC,gBAAgBtqC,KAAI,SAAC4yB,GAAD,OAAiBA,EAAYhyB,MAAM,IAhB/E,oBAeP64C,EAfO,KAeYQ,EAfZ,OAkBwB5gC,mBAAyB,MAlBjD,oBAkBPmgC,EAlBO,KAkBMD,EAlBN,OAmBwBlgC,mBACpC3X,EAAOA,EAAK2tB,YAAcnpC,GAAgBg/C,SApB9B,oBAmBP7V,EAnBO,KAmBMwvB,EAnBN,KAuBRC,EACsB,KAAb,OAAbxpD,QAAa,IAAbA,OAAA,EAAAA,EAAevR,UAAf,OACAuR,QADA,IACAA,OADA,EACAA,EAAeypD,OAAM,SAAC/wD,GAAD,OAAiBA,EAAY9C,SAAW/E,GAAsB64D,aAErF18B,qBAAU,WACRrzB,EAASohC,GAAoBzrC,MAC5B,CAACA,EAAYqK,IAEhBqzB,qBAAU,WACkG,IAAD,EAArGk3B,GAAehsD,EAAMkL,mBAAsD,OAAjClL,EAAMoL,wBAAmCpL,EAAMmL,YAC3FwxC,UAAUC,UAAUC,UAApB,UAA8B78C,EAAMmL,WAAW1U,WAA/C,QAAsD,MAEvD,CAACu1D,EAAahsD,EAAMkL,kBAAmBlL,EAAMoL,uBAAwBpL,EAAMmL,aAE9E2pB,qBAAU,WACkG,IAAD,EAArGk3B,GAAehsD,EAAMsL,mBAAsD,OAAjCtL,EAAMuL,wBAAmCvL,EAAMmL,YAC3FwxC,UAAUC,UAAUC,UAApB,UAA8B78C,EAAMmL,WAAW1U,WAA/C,QAAsD,MAEvD,CAACu1D,EAAahsD,EAAMsL,kBAAmBtL,EAAMuL,uBAAwBvL,EAAMmL,aAE9E2pB,qBAAU,WACJnjB,EAAKpS,SAAWoS,EAAKpS,QAAQM,SAASuT,KAAOtL,GAC/CrG,E/EvDkC,SAACrK,GACvC,OAAO,SAACqK,GAGN,OAFAA,EAASurC,MAEFxB,GAAgBO,yBAAyB30C,GAAY8F,MAC1D,SAACF,GACCyE,EAASwrC,GAAgCjwC,OAE3C,SAACiE,GACCQ,EAASyrC,GAA+BjsC,Q+E8CjC8qC,CAAyBp6B,EAAKpS,QAAQM,SAASuT,OAEzD,CAACzB,EAAKpS,QAASuI,EAAerG,IAEjC,IAAMgwD,EAAmB,SAAC5vB,GACxB,OACE,sBAAK5gB,UAAWJ,EAAQqwC,kBAAxB,UACE,8BACGrvB,IAAgBnpC,GAAgBopC,OAC/B,+BACE,cAAC,GAAD,MAGJ,+BAAO0V,GAAkBC,kBAAkB5V,QAE7C,4BAAI2V,GAAkBG,qBAAqB9V,SAU3C3P,EAAa,WACbhe,GACFk6C,GAAgB,GACZpuD,EAAMsL,mBAAmB0W,GAAU,KAEvCmsC,GAAgB,GACZnuD,EAAMkL,mBAAmB8W,GAAU,KAI3C,OAAImvC,EAAiB3gD,mBACZ,cAAC,GAAD,IAIP,qCACE,sBAAKyQ,UAAWJ,EAAQvB,UAAxB,UACE,cAAC,GAAD,CACEysC,eAAgBA,EAChB73C,KAAMA,EACNC,SAAUA,EACVlJ,aAAcA,EACdI,aAAcA,EACd2gD,YAAaA,EACbC,kBAAmBA,KAEnBmF,GAAgCl9C,IAChC,eAACie,GAAA,EAAD,CAAOlR,UAAWJ,EAAQguC,UAA1B,UACE,qBAAK5tC,UAAWJ,EAAQ+3B,eAAxB,SACE,mBAAG33B,UAAWJ,EAAQiuC,aAAtB,SACG56C,EAAO,mBAAqB,mCAGhCA,EACC,qCACE,sBAAK+M,UAAWJ,EAAQkuC,cAAxB,UACE,mBAAG9tC,UAAWJ,EAAQmuC,mBAAtB,kDACA,mBAAG/tC,UAAWJ,EAAQiwC,wBAAtB,SACGnzB,GAAWI,oBAAoB,IAAIpuB,KAAKuE,EAAK2pB,YAGjDuzB,GACC,sBAAKnwC,UAAWJ,EAAQkuC,cAAxB,UACE,mBAAG9tC,UAAWJ,EAAQmuC,mBAAtB,0BACA,oBAAG/tC,UAAWJ,EAAQiwC,wBAAtB,UACGjvB,IAAgBnpC,GAAgBopC,OAC/B,+BACE,cAAC,GAAD,MAGJ,+BAAO0V,GAAkBC,kBAAkB5V,cAMnD,eAAC6vB,GAAA,EAAD,CACEt8C,MAAOysB,EACPnX,SA/DkB,SAACC,GAC/B,IAAMvV,EAAQgR,SAASuE,EAAME,OAAOzV,MAAO,IAC3Ci8C,EAAej8C,IA8DHspC,KAAG,EACHiT,aAAW,iBACX1wC,UAAWJ,EAAQkwC,sBALrB,UAOE,cAACa,GAAA,EAAD,CACEx8C,MAAO1c,GAAgBg/C,QACvBma,QAAS,cAACC,GAAA,EAAD,IACT9mC,MAAOymC,EAAiB/4D,GAAgBg/C,SACxCz2B,UAAS,UAAKJ,EAAQmwC,YAAb,yBACbnvB,IAAgBnpC,GAAgBg/C,QAAU72B,EAAQowC,eAAiB,GADtD,kBAGT/lC,SAAU7f,IAEZ,cAAC,GAAD,CACEoV,MAAM,+FACN8qC,cAAe+F,EAFjB,SAIE,cAACM,GAAA,EAAD,CACEx8C,MAAO1c,GAAgBopC,MACvB+vB,QAAS,cAACC,GAAA,EAAD,IACT9mC,MAAOymC,EAAiB/4D,GAAgBopC,OACxC7gB,UAAS,UAAKJ,EAAQmwC,YAAb,yBACfnvB,IAAgBnpC,GAAgBopC,MAAQjhB,EAAQowC,eAAiB,GADlD,yBAEfK,EAA2BzwC,EAAQqK,SAAW,GAF/B,KAGTA,SAAU7f,GAAgBimD,YAOrCzvB,IAAgBnpC,GAAgBg/C,QAC/B,cAAC,GAAD,CACEqU,eAAgBA,EAChBC,YAAaA,EACbmC,gBAAiBA,EACjBljD,aAAcA,EACdmjD,gBAAiBA,EACjB/iD,aAAcA,EACd4gD,kBAAmBA,EACnBQ,qBAAsBA,EACtB4B,cAAextC,IAGjB,cAAC,GAAD,CACEkrC,eAAgBA,EAChBC,YAAaA,EACbmC,gBAAiBA,EACjBljD,aAAcA,EACdmjD,gBAAiBA,EACjB/iD,aAAcA,EACd4gD,kBAAmBA,EACnBQ,qBAAsBA,EACtB4B,cAAextC,OAIrB,cAAC,GAAD,CACEwH,KAAMpd,IAAiBjL,EAAMkL,mBAAsD,OAAjClL,EAAMoL,wBACxD3O,QACEuD,EAAMkL,kBAAN,qBACe8gD,EAAc,cAAa,GAD1C,yBAEIhsD,EAAMoL,uBAEZmd,YAAa2J,EACbj5B,KAAM+G,EAAMkL,kBAAoBpT,GAAO4wB,QAAU5wB,GAAO05B,QAE1D,cAAC,GAAD,CACEnJ,KAAMhd,IAAiBrL,EAAMsL,mBAAsD,OAAjCtL,EAAMuL,wBACxD9O,QACEuD,EAAMsL,kBAAoB,wCAAuCtL,EAAMuL,uBAEzEgd,YAAa2J,EACbj5B,KAAM+G,EAAMsL,kBAAoBxT,GAAO4wB,QAAU5wB,GAAO05B,Y,UC3WjDugC,OATf,YAAuD,IAA/Bt1D,EAA8B,EAA9BA,QACtB,OACE,sBAAKwkB,UAAU,gBAAf,UACE,cAAC,KAAD,CAAQzF,OAAO,OAAOD,MAAM,OAAOmG,cAAeC,GAAgBC,MAAM,IACxE,cAACR,GAAA,EAAD,CAAYC,QAAQ,KAApB,SAA0B5kB,QCYjBu1D,OArBf,YAAmD,IAAD,IAA/B54C,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIxB,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,o3HACFvM,KAAMjC,OCGC64C,OAnBf,WACE,OACE,sBACE12C,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,QACLsM,MAAM,6BACN1G,UAAU,oBANZ,UAQE,sBAAM4U,EAAE,MAAMC,EAAE,MAAMva,MAAM,KAAKC,OAAO,KAAKskB,GAAG,MAAMlM,OAAQ5b,KAAOkD,wBACrE,sBACE0M,EAAE,6rEACFvM,KAAMrD,KAAOM,gBCJf6G,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX6yC,OAAQ,CACN3yC,QAAS,OACTK,WAAY,SACZF,eAAgB,gBAChBnD,UAAW,UAEb41C,aAAc,CACZt5C,SAAU,UACVQ,WAAYze,OAAOod,KAAOowC,iBAC1BhvC,MAAOpB,KAAOM,WAEhB85C,QAAS,CACPv5C,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOsnC,SACdphC,WAAY,WAEds/B,gBAAiB,CACf3kC,SAAU,OACV,UAAW,CAAEgC,gBAAiB,gBAEhCw3C,cAAe,CACbjT,SAAU,EACV7/B,QAAS,OACTK,WAAY,SACZF,eAAgB,iBAwEP4yC,OA7Df,YAA+E,IAAD,EAAxDp+C,EAAwD,EAAxDA,KAAM2pC,EAAkD,EAAlDA,aAAc0U,EAAoC,EAApCA,gBAClC1xC,EAAU1B,KACV6C,EAAWM,eAEXw7B,EAAgB5pC,EAAKmS,WAAakwB,GAAWC,iBAAiBtiC,EAAKmS,iBAAcjtB,EACjF2kD,EAAmBxH,GAAWE,qBAAX,UAAgCviC,EAAK4oC,uBAArC,QAAwD,IAkBjF,OACE,sBAAK77B,UAAWJ,EAAQqxC,OAAxB,UACE,eAAC9wC,GAAA,EAAD,CAAYH,UAAWJ,EAAQsxC,aAA/B,wBACa,sBAAMlxC,UAAWJ,EAAQuxC,QAAzB,SAAmCl+C,EAAKs+C,iBAErD,sBAAKvxC,UAAWJ,EAAQwxC,cAAxB,UACGvU,GAAiBC,EAChB,cAAC,GAAD,CAAoBlG,OAAQiG,EAAgB,UAAY,qBAExD,cAAClwB,GAAA,EAAD,CAASnN,MAAM,YAAYic,UAAU,MAAMqO,WAAY,IAAvD,SACE,cAAC5e,GAAA,EAAD,CACEpK,QA3Ba,SAAC4I,GACxBA,EAAMyQ,kBACNyiB,GAAa,IA0BH3vB,KAAK,QACLrN,QAAS,CAAEm9B,UAAWn9B,EAAQ28B,iBAHhC,SAKE,cAAC,GAAD,QAIN,cAAC5vB,GAAA,EAAD,CAASnN,MAAM,SAASic,UAAU,MAAMqO,WAAY,IAApD,SACE,cAAC5e,GAAA,EAAD,CAAYpK,QA/BI,WACtBC,EAAS,IAAD,OAAK9N,EAAKC,WAAanc,GAAa2qC,QAAU,UAAY,YAA1D,SAA8E,CACpF/wB,MAAO,CAAEsC,KAAMA,MA6B2Bga,KAAK,QAAQrN,QAAS,CAAEm9B,UAAWn9B,EAAQ28B,iBAAjF,SACE,cAAC,GAAD,QAGJ,cAAC5vB,GAAA,EAAD,CAASnN,MAAM,WAAWic,UAAU,MAAMqO,WAAY,IAAtD,SACE,cAAC5e,GAAA,EAAD,CACEpK,QA/BgB,SAAC4I,GACzBA,EAAMyQ,kBACNm3B,EAAgBr+C,IA8BRga,KAAK,QACLrN,QAAS,CAAEm9B,UAAWn9B,EAAQ28B,iBAHhC,SAKE,cAAC,GAAD,eC3EGiV,OAlBf,YAAwD,IAC9B50B,EADA3pB,EAA6B,EAA7BA,KASxB,OACE,cAAC,GAAD,CACE8W,OAVoB6S,GAUM,OAAJ3pB,QAAI,IAAJA,OAAA,EAAAA,EAAMmS,aAAc,KATrCwX,GAAQ0Y,GAAWC,iBAAiB3Y,GAAQ,UAAY,UAU7DzkB,MAPmB,SAACykB,GACtB,OAAOA,GAAQ0Y,GAAWC,iBAAiB3Y,GAAQ,OAAS,UAMnD60B,EAAmB,OAAJx+C,QAAI,IAAJA,OAAA,EAAAA,EAAMmS,aAAc,MAC1Cg4B,QAAM,KCRNl/B,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACTC,QAAS,OACTC,cAAe,SACfpF,QAAS,QAEXyoC,OAAQ,CACNzpC,MAAOzB,EAAME,QAAQK,UAAUH,KAC/BwH,QAAS,OACTG,eAAgB,gBAChBE,WAAY,UAEd8+B,IAAK,CAAEn/B,QAAS,OAAQK,WAAY,UACpCie,KAAM,CACJhlB,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOsnC,UAEhBniD,KAAM,CACJoiB,QAAS,OACTK,WAAY,SACZE,aAAc,SACd,QAAS,CACP1G,MAAOzB,EAAME,QAAQC,QAAQC,KAC7Bc,SAAU,WAGd85C,gBAAiB,CACfp3C,MAAO,OACPgE,QAAS,OACTC,cAAe,SACfI,WAAY,SACZF,eAAgB,SAChBD,IAAK,WAEPxiB,KAAM,CACJ21D,iBAAkB,EAClBC,eAAgB,EAChBh6C,SAAU,WACVQ,WAAYze,OAAOod,KAAOsB,kBAC1BF,MAAOpB,KAAOsnC,UAEhBzG,gBAAiB,CACf/6B,SAAU,MACVH,UAAW,SACXnC,OAAQ,SACR+D,QAAS,OACTK,WAAY,UAEdkzC,eAAgB,CACdz5C,WAAY,IACZD,MAAOpB,KAAOM,WAEhBpD,OAAQ,CACNkE,MAAOpB,KAAOsnC,SACdzmC,SAAU,SACVQ,WAAY,KAEd2T,QAAS,CACP7E,OAAQ,WACR+tB,UAAW,SACX16B,OAAQ,eAoDCu3C,OA1Cf,YAA6D,IAAzC7+C,EAAwC,EAAxCA,KAAMq+C,EAAkC,EAAlCA,gBAClB1xC,EAAU1B,KAD0C,EAExB0M,oBAAkB,GAFM,oBAEnD+xB,EAFmD,KAExCC,EAFwC,KAGpDjoC,EAAc2gC,GAAWI,mBAAmBziC,GAElD,OACE,qCACE,eAACie,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAWJ,EAAQvB,UAAxC,UACE,sBAAK2B,UAAWJ,EAAQgiC,OAAxB,UACE,sBAAK5hC,UAAWJ,EAAQ69B,IAAxB,UACG5H,GAAmBC,QAAQ7iC,EAAKC,UACjC,cAAC2Z,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,aACjD,+BAAOypB,GAAkBC,kBAAkBvjC,EAAK2tB,kBAElD,cAAC,GAAD,CAAgB3tB,KAAMA,OAExB,qBAAK+M,UAAWJ,EAAQ1jB,KAAxB,SACE,sBAAK8jB,UAAWJ,EAAQ8xC,gBAAxB,UACE,eAACvxC,GAAA,EAAD,CAAYH,UAAWJ,EAAQ3L,OAA/B,UACG4nB,GAAeC,iBAAiB7oB,EAAKgB,OAAO7b,UAAW,IACvD29C,GAAaC,kBAAkBrhC,MAElC,mBAAGqL,UAAS,UAAKJ,EAAQ5jB,KAAb,YAAqB4jB,EAAQg4B,iBAAzC,SACG3kC,EAAKO,aAAe,uBAGvB,oBAAGwM,UAAWJ,EAAQ5jB,KAAtB,UACE,sBAAMgkB,UAAWJ,EAAQiyC,eAAzB,6BACA,+BACG5+C,EAAKmS,WAAasX,GAAWI,oBAAoB7pB,EAAKmS,YAAc,4BAK7E,cAACyH,GAAA,EAAD,IACA,cAAC,GAAD,CAAY5Z,KAAMA,EAAM2pC,aAAcA,EAAc0U,gBAAiBA,OAEvE,cAAC,GAAD,CAAiBlqC,KAAMu1B,EAAWxtB,QAASytB,EAAc3pC,KAAMA,QCpEtD8+C,OArCf,YAA0G,IAAhF57D,EAA+E,EAA/EA,WAAY+c,EAAmE,EAAnEA,SAAU8+C,EAAyD,EAAzDA,kBAAmBC,EAAsC,EAAtCA,aAC3DzxD,EAAW4uB,cADsF,EAEjExE,oBAAS,GAFwD,oBAEhGsnC,EAFgG,KAEnFC,EAFmF,OAGnEvnC,mBAAiBqnC,EAAaz5D,MAAQ,IAH6B,oBAGhGutB,EAHgG,KAGpFqsC,EAHoF,KA0BvG,MAAO,CACLF,cACAC,iBACApsC,aACAqsC,gBACAtxD,YA1BkB,SAACtH,GACnBgH,EACEwxD,EAAkB,6BACXx4D,GADU,IACDb,cAAe,EAAGD,WAAY,IAC5C,EACA,GACAvC,EACA+c,KAoBJm/C,YAfkB,WAClB,IAAKtsC,EAAWzwB,OAAS,GAA2B,IAAtBywB,EAAWzwB,SAAiBywB,IAAeksC,EAAaz5D,KAAM,CAC1F,IAAMgB,EAAO,6BAAQy4D,GAAR,IAAsBz5D,KAAMutB,IACzCvlB,EAASwxD,EAAkBx4D,EAAS,EAAG,GAAIrD,EAAY+c,MAazDo/C,mBATyB,kBAAMH,GAAe,M,iCC1B5Cj0C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAM,gBACHriC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BgoB,UAAW,OACX5pB,SAAU,cAgHHy1C,OApGf,YAK8B,IAAD,QAJ3B/4D,EAI2B,EAJ3BA,QACAg5D,EAG2B,EAH3BA,WAEAC,GAC2B,EAF3BC,eAE2B,EAD3BD,kBAEM7yC,EAAU1B,KAEVvf,EAAuC2wB,aAC3C,SAAC3e,GAAD,OAAsBA,EAAMhS,cAAcA,iBAEtC+R,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1DsgB,GAAe,UAAAtgB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WACnDslB,GAAiB,UAAA1lB,EAAKpS,eAAL,eAActG,QAASV,GAAao4B,aACrDijC,EAAmB,OAAGh0D,QAAH,IAAGA,OAAH,EAAGA,EAAe+hD,MAAK,SAAC7kD,EAAiB8kD,GAAlB,OAC9C9kD,EAAE4V,MAAMmhD,cAAcC,cAAclS,EAAElvC,MAAMmhD,kBAG9C/+B,qBAAU,WACR,IAAIi/B,EAAmC,6BAClCt5D,GADkC,IAErCZ,aAAcw9B,GAAkBpF,EAAe,IAAY,OAAPx3B,QAAO,IAAPA,OAAA,EAAAA,EAASZ,eAAgB,KAG/E45D,EAAWM,KAEV,CAACL,IAEJ,IAkBMM,EAAc/hC,EACfyhC,IAAgB,OAAIj5D,QAAJ,IAAIA,OAAJ,EAAIA,EAASZ,eAAiB,GAC/Cw9B,EACA,IACO,OAAP58B,QAAO,IAAPA,OAAA,EAAAA,EAASZ,eAAgB,GAE7B,OACE,qBAAKonB,UAAU,mBAAf,SACE,eAAC8lB,GAAA,EAAD,CAAa7a,UAAU,WAAvB,UACE,cAAC+nC,GAAA,EAAD,CAAW/nC,UAAU,SAASrL,QAAS,CAAE5G,KAAM,cAAgBi6C,SAAS,EAAxE,wBAGA,cAACC,GAAA,EAAD,CAAWtzC,QAAS,CAAE5G,KAAM,SAA5B,SACE,eAAC8tB,GAAA,EAAD,CACEqsB,cAAY,EACZC,MAAO,cAACC,GAAA,EAAD,IACPrzC,UAAS,iBAAYoW,EAAiB,WAAa,IACnD3M,SAnCuB,SAC/BC,GAEA,IAGI4pC,EAHEC,EAAcC,OAAO9pC,EAAME,OAAOzV,OAElCs/C,EAAuBF,QAA4Bp7D,EAGzDm7D,EAAqBG,KAAoB,OAAKj6D,QAAL,IAAKA,OAAL,EAAKA,EAASZ,mBAAeT,EAAYs7D,EAElF,IAAIX,EAAmC,6BAClCt5D,GADkC,IAErCZ,aAAc06D,IAGhBd,EAAWM,IAqBH3+C,MAAO4+C,EACP9oC,SAAUmM,EACVs9B,UAAW,CACT9zC,QAAS,CAAEm5B,MAAOn5B,EAAQm5B,OAC1B1mB,mBAAoB,KACpBlK,aAAc,CACZC,SAAU,SACVC,WAAY,QAEd+J,gBAAiB,CACfhK,SAAU,MACVC,WAAY,SAhBlB,UAoBE,cAACkK,GAAA,EAAD,CAAUtI,UAAQ,EAAC9V,MAAM,SAAzB,SACE,8CAEF,cAACoe,GAAA,EAAD,CAAUpe,MAAM,GAAG6L,UAAU,iBAA7B,SACGoW,EAAc,oBAAM1lB,EAAKpS,eAAX,aAAM,EAAcmT,MAApB,sBAA6Bf,EAAKpS,eAAlC,aAA6B,EAAcoT,UAAa,UAExEihD,GACCA,EAAoBphD,KAAI,SAAC3Y,EAA4Bq7B,GACnD,OACE,cAAC1B,GAAA,EAAD,CAAUpe,MAAOvb,EAAa4Y,OAAkCwO,UAAU,iBAA1E,mBACMpnB,EAAa6Y,MADnB,YAC4B7Y,EAAa8Y,WADE9Y,EAAa4Y,sBC3GpE0M,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAM,gBACHriC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BgoB,UAAW,OACX5pB,SAAU,cAsFH62C,OA3Ef,YAAyF,IAA9Dn6D,EAA6D,EAA7DA,QAASg5D,EAAoD,EAApDA,WAC5B5yC,GADgF,EAAxC8yC,eAC9Bx0C,MAmChB,OACE,qBAAK8B,UAAU,mBAAf,SACE,eAAC8lB,GAAA,EAAD,CAAa7a,UAAU,WAAvB,UACE,cAAC+nC,GAAA,EAAD,CAAW/nC,UAAU,SAASrL,QAAS,CAAE5G,KAAM,cAAgBi6C,SAAS,EAAxE,oBAGA,cAACC,GAAA,EAAD,CAAWtzC,QAAS,CAAE5G,KAAM,SAA5B,SACE,eAAC8tB,GAAA,EAAD,CACEqsB,cAAY,EACZC,MAAO,cAACC,GAAA,EAAD,IACPrzC,UAAU,SACVyJ,SA5CmB,SAACC,GAA6E,IAAD,QAClG6pC,EAAcC,OAAO9pC,EAAME,OAAOzV,SAO9B,OAAP3a,QAAO,IAAPA,GAAA,UAAAA,EAASpB,gBAAT,eAAmBE,UAAnB,OAA4BkB,QAA5B,IAA4BA,GAA5B,UAA4BA,EAASpB,gBAArC,aAA4B,EAAmBG,WAC9C,UAAAiB,EAAQpB,gBAAR,eAAkBE,SAAlB,UAA2BkB,EAAQpB,gBAAnC,aAA2B,EAAkBG,WAE/CiB,EAAQb,cAAgBtB,GAASoX,MAGnC,IAAImlD,EAAgC,6BAC/Bp6D,GAD+B,IAElCpB,SAAS,6BAdM,CACfE,OAAO,EACPC,SAAS,IAYD,mBAAkBg7D,GAAc,MAG1Cf,EAAWoB,IA0BHz/C,MAvBkB,WAAO,IAAD,QAChC,OAAW,OAAP3a,QAAO,IAAPA,GAAA,UAAAA,EAASpB,gBAAT,eAAmBE,SAAnB,OAA4BkB,QAA5B,IAA4BA,GAA5B,UAA4BA,EAASpB,gBAArC,aAA4B,EAAmBG,SAC1C,IACF,OAAIiB,QAAJ,IAAIA,GAAJ,UAAIA,EAASpB,gBAAb,aAAI,EAAmBE,OACrB,SACF,OAAIkB,QAAJ,IAAIA,GAAJ,UAAIA,EAASpB,gBAAb,aAAI,EAAmBG,SACrB,UAEF,GAeQs7D,GACPH,UAAW,CACT9zC,QAAS,CAAEm5B,MAAOn5B,EAAQm5B,OAC1B1mB,mBAAoB,KACpBlK,aAAc,CACZC,SAAU,SACVC,WAAY,QAEd+J,gBAAiB,CACfhK,SAAU,MACVC,WAAY,SAflB,UAmBE,cAACkK,GAAA,EAAD,CAAUtI,UAAQ,EAAC9V,MAAM,SAAzB,SACE,8CAEF,cAACoe,GAAA,EAAD,CAAUpe,MAAM,GAAhB,mBACA,cAACoe,GAAA,EAAD,CAAUpe,MAAM,QAAhB,mBACA,cAACoe,GAAA,EAAD,CAAUpe,MAAM,UAAhB,mC,WChFN+J,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXoB,MAAO,CACLlF,MAAO,OACPoC,UAAW,UAEbo3C,OAAO,cACLx1C,QAAS,OACTC,cAAe,OACd7H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,SACfgwB,YAAa,EACb7iB,aAAc,IAGlBqoC,OAAO,cACLz1C,QAAS,OACTC,cAAe,SACfI,WAAY,SACZrD,UAAW,QACV5E,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpD,UAAW,IAGfriB,KAAK,cACHqiB,UAAW,SACXS,YAAa,UACZrF,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BwI,OAAQ,IAGZhuB,GAAG,cACDoiB,UAAW,SACX2B,WAAY,UACXvG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BwI,OAAQ,SAkFD8sC,OArEf,YAA4F,IAAjEC,EAAgE,EAAhEA,OAAQC,EAAwD,EAAxDA,UAAW16D,EAA6C,EAA7CA,QAASg5D,EAAoC,EAApCA,WAC/C5yC,EAAU1B,KADyE,EAEzD0M,mBAAiB9wB,OAASa,eAF+B,oBAElF2wC,EAFkF,KAExE6oB,EAFwE,OAG7DvpC,mBAAiB9wB,OAASa,eAHmC,oBAGlF4wC,EAHkF,KAG1E6oB,EAH0E,KAKnFzkC,EAAc,WAClB6iC,EAAW,6BAAKh5D,GAAN,IAAeR,SAAUlC,GAAS+D,OAC5Cq5D,GAAU,IAgBZ,OACE,eAACtkC,GAAA,EAAD,CAAQxI,KAAM6sC,EAAQ/rC,QAASyH,EAAa3P,UAAU,SAAtD,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAACmH,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAWJ,EAAQJ,MAA5C,6CAIF,eAAC6Q,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM4G,EAAQk0C,QAAxC,UACE,sBAAK9zC,UAAWJ,EAAQm0C,OAAxB,UACE,cAAC5zC,GAAA,EAAD,CAAYC,QAAQ,KAApB,mBACA,qBAAKJ,UAAWJ,EAAQ3mB,KAAxB,SACE,cAACo7D,GAAA,EAAD,CACEj0C,QAAQ,SACR2c,OAAO,aACPu3B,QAAS/oB,EACTgpB,eAAa,EACbpgD,MAAOm3B,EACP7hB,SA9Ba,SAACyQ,GACxBi6B,EAAYr6D,KAAOogC,GAAGx/B,QAAQ,OAAOC,uBAiCjC,sBAAKqlB,UAAWJ,EAAQm0C,OAAxB,UACE,cAAC5zC,GAAA,EAAD,CAAYC,QAAQ,KAApB,mBACA,qBAAKJ,UAAWJ,EAAQ1mB,GAAxB,SACE,cAACm7D,GAAA,EAAD,CACEj0C,QAAQ,SACR2c,OAAO,aACPw3B,eAAa,EACbpgD,MAAOo3B,EACP9hB,SAtCW,SAACyQ,GACtBk6B,EAAUt6D,KAAOogC,GAAG0D,MAAM,OAAOjjC,0BA0C/B,eAAC21B,GAAA,EAAD,CAAe1Q,QAAS,CAAE5G,KAAM,uBAAhC,UACE,cAAC6H,GAAA,EAAD,CAAQT,QAAQ,OAAOU,QAAS6O,EAAhC,sBAGA,cAAC9O,GAAA,EAAD,CAAQT,QAAQ,YAAYjI,MAAM,UAAU2I,QA3C9B,WAClBozC,GAAU,GACV1B,EAAW,6BAAKh5D,GAAN,IAAeR,SAAUlC,GAAS+C,OAAQZ,KAAMqyC,EAAUpyC,GAAIqyC,MAyCpE,8BC7GFrtB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAM,gBACHriC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BgoB,UAAW,OACX5pB,SAAU,cAgFH03C,OArEf,YAAkF,IAA3Dh7D,EAA0D,EAA1DA,QAASg5D,EAAiD,EAAjDA,WAAYiC,EAAqC,EAArCA,gBACpC70C,EAAU1B,KAD+D,EAEnD0M,oBAAkB,GAFiC,oBAExEqpC,EAFwE,KAEhEC,EAFgE,KAY/E,OACE,sBAAKl0C,UAAU,mBAAf,UACE,eAAC8lB,GAAA,EAAD,CAAa7a,UAAU,WAAvB,UACE,cAAC+nC,GAAA,EAAD,CAAW/nC,UAAU,SAASrL,QAAS,CAAE5G,KAAM,cAAgBi6C,SAAS,EAAxE,4BACewB,EAAkB,OAAS,iBAE1C,cAACvB,GAAA,EAAD,CAAWtzC,QAAS,CAAE5G,KAAM,SAA5B,SACE,eAAC8tB,GAAA,EAAD,CACEqsB,cAAY,EACZC,MAAO,cAACC,GAAA,EAAD,IACPrzC,UAAU,SACVyJ,SAnBe,SAACC,GACpB/vB,OAAO+vB,EAAME,OAAOzV,SAAWrd,GAAS+C,OAC1C24D,EAAW,6BAAKh5D,GAAN,IAAeR,SAAUW,OAAO+vB,EAAME,OAAOzV,UAEvD+/C,GAAU,IAgBJ//C,WAA6Bhc,KAAf,OAAPqB,QAAO,IAAPA,OAAA,EAAAA,EAASR,UAAyBQ,EAAQR,SAAWlC,GAASmD,UACrEy5D,UAAW,CACT9zC,QAAS,CAAEm5B,MAAOn5B,EAAQm5B,OAC1B1mB,mBAAoB,KACpBlK,aAAc,CACZC,SAAU,SACVC,WAAY,QAEd+J,gBAAiB,CACfhK,SAAU,MACVC,WAAY,SAflB,UAmBE,cAACkK,GAAA,EAAD,CAAUtI,UAAQ,EAAC9V,MAAM,SAAzB,SACE,8CAEF,cAACoe,GAAA,EAAD,CAAUpe,MAAOrd,GAAS+D,IAAKmlB,UAAU,iBAAzC,mBAGA,cAACuS,GAAA,EAAD,CAAUpe,MAAOrd,GAASkD,MAAOgmB,UAAU,iBAA3C,iBAGA,cAACuS,GAAA,EAAD,CAAUpe,MAAOrd,GAASmD,UAAW+lB,UAAU,iBAA/C,kCAGA,cAACuS,GAAA,EAAD,CAAUpe,MAAOrd,GAASoD,WAAY8lB,UAAU,iBAAhD,mCAGA,cAACuS,GAAA,EAAD,CAAUpe,MAAOrd,GAASqD,WAAY6lB,UAAU,iBAAhD,mCAGA,cAACuS,GAAA,EAAD,CAAUpe,MAAOrd,GAAS+C,OAAQinB,QAAS,kBAAMozC,GAAU,IAA3D,SACG16D,GAAWA,EAAQR,WAAalC,GAAS+C,OAAzC,UACMC,KAAON,EAAQP,MAAM8jC,OAAO,cADlC,cACqDjjC,KAAON,EAAQN,IAAI6jC,OAAO,eAD/E,kBAOT,cAAC,GAAD,CAAiBk3B,OAAQA,EAAQC,UAAWA,EAAW16D,QAASA,EAASg5D,WAAYA,QChFrFt0C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAM,gBACHriC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BgoB,UAAW,OACX5pB,SAAU,cA0FH43C,OA9Ef,YAAqF,IAAD,EAA3Dl7D,EAA2D,EAA3DA,QAASg5D,EAAkD,EAAlDA,WAC1B5yC,GAD4E,EAAtC8yC,eAC5Bx0C,MACV1d,EAAW4uB,cAFiE,EAGjDE,aAAY,SAAC3e,GAAD,OAAsBA,KAA3D3E,EAH0E,EAG1EA,eAEF2oD,GADe,UAJ6D,EAG1DjkD,KACEpS,eAAL,eAActG,QAASV,GAAawZ,WAClB9E,EAAelN,QAAUkN,EAAeA,eA4B/E,OA1BA6nB,qBAAU,WAEL7nB,EAAeW,gBACW,OAA3BX,EAAelN,SACwB,OAAvCkN,EAAeY,qBAEfpM,EAASyhC,QAEV,CAACj2B,EAAeW,eAAgBX,EAAelN,QAASkN,EAAeY,oBAAqBpM,IAmB7F,qBAAKwf,UAAU,mBAAf,SACE,eAAC8lB,GAAA,EAAD,CAAa7a,UAAU,WAAvB,UACE,cAAC+nC,GAAA,EAAD,CAAW/nC,UAAU,SAASrL,QAAS,CAAE5G,KAAM,cAAgBi6C,SAAS,EAAxE,2BAGA,cAACC,GAAA,EAAD,CAAWtzC,QAAS,CAAE5G,KAAM,SAA5B,SACE,eAAC8tB,GAAA,EAAD,CACEqsB,cAAY,EACZC,MAAO,cAACC,GAAA,EAAD,IACPrzC,UAAU,SACVyJ,SA3BiB,SAACC,GAC1B,IAGIkrC,EAHErB,EAAcC,OAAO9pC,EAAME,OAAOzV,OAElCqwB,EAAiB9a,EAAME,OAAOzV,MAAQgR,SAASouC,QAAep7D,EAGpEy8D,EAAepwB,KAAc,OAAKhrC,QAAL,IAAKA,OAAL,EAAKA,EAASf,aAASN,EAAYqsC,EAEhE,IAAIsuB,EAAmC,6BAClCt5D,GADkC,IAErCf,OAAQm8D,IAGVpC,EAAWM,IAeH3+C,OAAc,OAAP3a,QAAO,IAAPA,OAAA,EAAAA,EAASf,SAAU,GAC1Bi7D,UAAW,CACT9zC,QAAS,CAAEm5B,MAAOn5B,EAAQm5B,OAC1B1mB,mBAAoB,KACpBlK,aAAc,CACZC,SAAU,SACVC,WAAY,QAEd+J,gBAAiB,CACfhK,SAAU,MACVC,WAAY,SAflB,UAmBE,cAACkK,GAAA,EAAD,CAAUtI,UAAQ,EAAC9V,MAAM,SAAzB,SACE,8CAEF,cAACoe,GAAA,EAAD,CAAUpe,MAAM,GAAG6L,UAAU,iBAA7B,mBAGC20C,GACCA,EAAgBpjD,KAAI,SAAC9Y,GAAD,OAClB,cAAC85B,GAAA,EAAD,CAAUpe,MAAO1b,EAAO4Z,SAAgC2N,UAAU,iBAAlE,SACG,WAAYvnB,EAASA,EAAOA,OAASA,EAAOyxC,YADRzxC,EAAO4Z,wB,+BCnF/CwiD,OAhBf,WACE,OACE,sBAAKv6C,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBAAMvU,GAAG,mBAAmB2iD,UAAU,iBAAiBlgC,EAAE,IAAIC,EAAE,IAAIva,MAAM,KAAKC,OAAO,KAArF,SACE,sBAAMD,MAAM,QAAQC,OAAO,QAAQH,KAAK,cAE1C,mBAAG26C,KAAK,yBAAR,SACE,sBACEpuC,EAAE,22CACFvM,KAAMkX,KAAOja,kBCJjB6G,GAAYC,aAAW,CAC3B62C,YAAa,CACXp7C,gBAAiB7C,KAAO2C,MACxBP,QAAS,cACTF,aAAc,MACdU,OAAO,aAAD,OAAe5C,KAAOk+C,WAE9Bh5C,KAAM,CACJ7B,KAAMrD,KAAOM,UACb6P,OAAQ,2BAoEGguC,OAxDf,YAMiB,IALfnvC,EAKc,EALdA,WACAqsC,EAIc,EAJdA,cACA+C,EAGc,EAHdA,cAGc,IAFdC,sBAEc,aADdprC,mBACc,MADA,SACA,IACwBY,wBAA6BzyB,GADrD,oBACPk9D,EADO,KACMC,EADN,KAGR11C,EAAU1B,KAoBhB,OALA2V,qBAAU,WAZW,KAAf9N,EACFovC,KAEAxgE,OAAO4gE,aAAaF,GACpBC,EAAe3gE,OAAO+/C,WAAWygB,EAAe,SAWjD,CAACpvC,IAGF,cAACyvC,GAAA,EAAD,CACEx1C,UAAWJ,EAAQo1C,YACnBpsC,eACE,cAAC+D,GAAA,EAAD,CAASnN,MAAM,gEAAf,SACE,cAAC,KAAD,CAAYQ,UAAWJ,EAAQ3D,SAGnCuN,aACE4rC,GACE,cAAC9rC,GAAA,EAAD,CAAgBC,SAAS,MAAMvJ,UAAU,gBAAgBc,QAAS,kBAAMsxC,EAAc,KAAtF,SACE,cAAClnC,GAAA,EAAD,CAAYwlC,aAAW,QAAvB,SACE,cAAC,GAAD,QAKR1mC,YAAaA,EACbmD,WAAS,EACT1D,SA5BqB,SAACC,GACxB0oC,EAAc1oC,EAAME,OAAOzV,QA4BzB2M,QAAS,SAAC4I,GAAD,OAAWA,EAAMyQ,mBAC1Bs7B,QAAS,SAAC/rC,GAAD,OAAWA,EAAMyQ,mBAC1BhmB,MAAO4R,KCjEP7H,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXs3C,aAAc,CACZz8C,aAAc,OACdW,gBAAiBlD,EAAME,QAAQW,WAAWwhC,OAE5C//B,KAAM,CACJsF,QAAS,OACTC,cAAe,SACfC,IAAK,OACLlE,MAAO,QAETq7C,iBAAiB,cACf94C,SAAU,OACVyB,QAAS,OACTC,cAAe,MACfC,IAAK,QACJ9H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpD,UAAW,OACXiD,cAAe,SACfC,IAAK,IAGTo3C,QAAS,CACPh+C,SAAUlB,EAAMe,WAAWo+C,QAAQ,IACnCz9C,WAAY1B,EAAMe,WAAWq+C,mBAE/BxyB,QAAQ,cACNhlB,QAAS,OACTC,cAAe,MACfC,IAAK,UACLC,eAAgB,WAChBE,WAAY,WACZ,WAAY,CACVvF,SAAU,cACVkB,MAAO,cACPC,OAAQ,YACRpB,QAAS,mBAEVzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPmE,eAAgB,gBAChBF,cAAe,cACf2I,OAAQ,SACR,WAAY,CACV5M,MAAO,MACPlB,SAAU,gBAkHL28C,OA3Ff,YAa2B,IAAD,IAZxBC,qBAYwB,aAXxBC,uBAWwB,aAVxBC,6BAUwB,SATxBnwC,EASwB,EATxBA,WACAqsC,EAQwB,EARxBA,cACA54D,EAOwB,EAPxBA,QACAi5D,EAMwB,EANxBA,iBACAD,EAKwB,EALxBA,WACA2C,EAIwB,EAJxBA,cACAgB,EAGwB,EAHxBA,cACAxmC,EAEwB,EAFxBA,YACA8kC,EACwB,EADxBA,gBAEM70C,EAAU1B,KACV1d,EAAW4uB,cAFO,EAGgBgnC,eAHhB,oBAGjB98D,EAHiB,KAGH+8D,EAHG,KAIlBC,EAAkC,CACtCt9D,SAAUlC,GAASmD,UACnB7B,SAAU,CAAEE,OAAO,EAAOC,SAAS,GACnCE,OAAQ,GACRG,aAAc,IARQ,EAUgBgyB,mBAA0B,gBAAKpxB,IAAa88D,GAV5D,oBAUjBC,EAViB,KAUHC,EAVG,KAYlB9/C,EAAQmJ,eACRC,EAAYC,aAAcrJ,EAAM8B,YAAYsG,GAAG,OAwBrD,OALA+U,qBAAU,WACR,IAAM4iC,EAAa5+D,GAAgBwB,2BAA2BC,EAAcE,GACxEF,EAAa2zB,KAAO,GAAGupC,EAAgBC,KAC1C,CAACj9D,EAASF,IAGX,sBAAK0mB,UAAWJ,EAAQ5G,KAAxB,UACE,sBAAKgH,UAAWJ,EAAQ+1C,iBAAxB,UACGK,GACC,cAAC,GAAD,CACEvB,gBAAiBA,EACjBj7D,QAAS+8D,EACT/D,WAAYgE,IAGhB,cAAC,GAAD,CAAiBh9D,QAAS+8D,EAAc/D,WAAYgE,EAAiB9D,gBAAc,IAClFuD,GAAmB,cAAC,GAAD,CAAez8D,QAAS+8D,EAAc/D,WAAYgE,IACrEL,EACAD,GACC,cAAC,GAAD,CACE18D,QAAS+8D,EACT/D,WAAYgE,EACZ/D,iBAAkBA,IAGtB,sBAAKzyC,UAAWJ,EAAQ0jB,QAAxB,UACE,cAACziB,GAAA,EAAD,CAAQC,QA3CK,WACfy1C,IAAiB/8D,IACnB68D,EAAgBx+D,GAAgBsB,sBAAsBo9D,IACtD/D,EAAW+D,KAGRz2C,GAAa6P,GAChBA,KAoCmCvP,QAAQ,YAAYjI,MAAM,UAAzD,qBAGA,cAAC0I,GAAA,EAAD,CAAQC,QAnCK,WACnBu1C,EAAgB,IAChBG,EAAgBF,GAChB91D,EAASqB,OAgC4Bue,QAAQ,WAAWjI,MAAM,YAAxD,+BAKH2H,GACC,cAAC,GAAD,CACEiG,WAAYA,EACZqsC,cAAeA,EACf+C,cAAeA,EACfnrC,YAAY,wDCnHP0sC,OAjDf,YAAmD,IAAD,IAA/Bv+C,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIxB,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,sBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAMkX,KAAO5X,MACbgN,MAAM,6BACN1G,UAAWA,EANb,UAQE,sBACE2G,EAAE,uBACFgM,OAAQxa,EACRya,YAAY,MACZ+jC,iBAAiB,KACjBjiC,cAAc,QACdosB,eAAe,UAEjB,sBACEn6B,EAAE,oNACFgM,OAAQxa,EACRya,YAAY,MACZ+jC,iBAAiB,KACjBjiC,cAAc,QACdosB,eAAe,UAEjB,sBACEn6B,EAAE,2BACFgM,OAAQxa,EACRya,YAAY,MACZ+jC,iBAAiB,KACjBjiC,cAAc,QACdosB,eAAe,UAEjB,sBACEn6B,EAAE,0LACFgM,OAAQxa,EACRya,YAAY,MACZ+jC,iBAAiB,KACjBjiC,cAAc,QACdosB,eAAe,cCyCR8V,OA5Df,YAS4B,IAR1B1E,EAQyB,EARzBA,YACAC,EAOyB,EAPzBA,eACApsC,EAMyB,EANzBA,WACAqsC,EAKyB,EALzBA,cACAC,EAIyB,EAJzBA,YACAC,EAGyB,EAHzBA,mBACAxxD,EAEyB,EAFzBA,YACAmxD,EACyB,EADzBA,aAEMv7C,EAAQmJ,eAGd,OAFkBE,aAAcrJ,EAAM8B,YAAYsG,GAAG,OAGnD,qBAAKkB,UAAU,0BAAf,SACE,cAAC,GAAD,CACEg2C,eAAa,EACbE,uBAAqB,EACrBnwC,WAAYA,EACZqsC,cAAeA,EACf54D,QAASy4D,EACTO,WAAY1xD,EACZq0D,cAAe9C,MAInB,qCACE,sBAAKryC,UAAU,yBAAf,UACE,cAAC,GAAD,CACE+F,WAAYA,EACZqsC,cAAeA,EACf+C,cAAe9C,EACfroC,YAAY,oDAEd,cAACnJ,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAY2I,QAAS,kBAAMqxC,GAAe,IAA3E,SACE,cAAC,GAAD,SAGJ,eAACviC,GAAA,EAAD,CAAQxI,KAAM8qC,EAAa/kC,WAAS,EAACtQ,SAAS,KAAKqL,QAASoqC,EAAoBtyC,UAAU,SAA1F,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAASwxC,MAE1D,eAACjiC,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,UACE,cAACmH,GAAA,EAAD,CAAYC,QAAQ,KAApB,yBACA,cAAC,GAAD,CACE41C,eAAa,EACbE,uBAAqB,EACrBnwC,WAAYA,EACZqsC,cAAeA,EACf54D,QAASy4D,EACTO,WAAY1xD,EACZq0D,cAAe9C,EACf1iC,YAAa2iC,cCnCVuE,OAhCf,YAAoE,IAA5C1gE,EAA2C,EAA3CA,WAAY+c,EAA+B,EAA/BA,SAC1BnU,EAAUuwB,aAAY,SAAC3e,GAAD,OAAsBA,KAA5C5R,MADyD,EAW7DgzD,GAAe,CACjB57D,aACA+c,WACA8+C,kBAAmBvxB,GACnBwxB,aAAclzD,EAAM2K,eAXpBwoD,EAJ+D,EAI/DA,YACAC,EAL+D,EAK/DA,eACApsC,EAN+D,EAM/DA,WACAqsC,EAP+D,EAO/DA,cACAtxD,EAR+D,EAQ/DA,YACAuxD,EAT+D,EAS/DA,YACAC,EAV+D,EAU/DA,mBAQF,OACE,cAAC,GAAD,CACEJ,YAAaA,EACbC,eAAgBA,EAChBpsC,WAAYA,EACZqsC,cAAeA,EACfC,YAAaA,EACbC,mBAAoBA,EACpBxxD,YAAaA,EACbmxD,aAAclzD,EAAM2K,gBCKXotD,OAhCf,YAAgF,IAAlD3gE,EAAiD,EAAjDA,WAAY+c,EAAqC,EAArCA,SAChCnU,EAAUuwB,aAAY,SAAC3e,GAAD,OAAsBA,KAA5C5R,MADqE,EAWzEgzD,GAAe,CACjB57D,aACA+c,WACA8+C,kBAAmBtxB,GACnBuxB,aAAclzD,EAAM8K,qBAXpBqoD,EAJ2E,EAI3EA,YACAC,EAL2E,EAK3EA,eACApsC,EAN2E,EAM3EA,WACAqsC,EAP2E,EAO3EA,cACAtxD,EAR2E,EAQ3EA,YACAuxD,EAT2E,EAS3EA,YACAC,EAV2E,EAU3EA,mBAQF,OACE,cAAC,GAAD,CACEJ,YAAaA,EACbC,eAAgBA,EAChBpsC,WAAYA,EACZqsC,cAAeA,EACfC,YAAaA,EACbC,mBAAoBA,EACpBxxD,YAAaA,EACbmxD,aAAclzD,EAAM8K,sBCiMXktD,OA9Mf,YAA0C,IAAD,cAAxB7jD,EAAwB,EAAxBA,SACT6N,EAAWM,eACX7gB,EAAW4uB,cAFsB,EAGAE,aAAY,SAAC3e,GAAD,OAAsBA,KAAjED,EAH+B,EAG/BA,KAAM3R,EAHyB,EAGzBA,MAAOJ,EAHkB,EAGlBA,cAHkB,EAIHisB,oBAAkB,GAJf,oBAIhCye,EAJgC,KAIpBC,EAJoB,OAKC1e,oBAAkB,GALnB,oBAKhCrgB,EALgC,KAKlBysD,EALkB,OAMCpsC,mBAAsB,MANvB,oBAMhCqsC,EANgC,KAMlB3F,EANkB,KAOjCn7D,EAAU,oBAAGua,EAAKpS,eAAR,iBAAG,EAAcM,gBAAjB,aAAG,EAAwBuT,UAA3B,SAAkC,EAC5C+kD,EAAgBhkD,IAAanc,GAAa2qC,QAE1CliB,EAAQ03C,EAAgB,iBAAmB,iBAC3Cv5C,EAAUu5C,EACZ,8FACA,6GAEEC,EAAiBD,EAAgBn4D,EAAMoK,YAAcpK,EAAMA,MAC3DqK,EAAc8tD,EAAgBn4D,EAAMuK,kBAAoBvK,EAAMqK,YAC9DC,EAAY6tD,EAAgBn4D,EAAMwK,gBAAkBxK,EAAMsK,UAC1DkjB,EAAU2qC,EAAgBn4D,EAAMkK,mBAAqBlK,EAAMiK,aAC3D2vB,EAAeu+B,EAAgBn4D,EAAMgL,wBAA0BhL,EAAM+K,kBAErEstD,EAAe,oBAAGr4D,EAAMoK,mBAAT,aAAG,EAAmB7T,cAAtB,QAAgC,WAC/C+hE,EAAS,oBAAGt4D,EAAMA,aAAT,aAAG,EAAazJ,cAAhB,QAA0B,WAEzCu+B,qBAAU,WAENnjB,EAAKpS,UACJK,EAAcqJ,sBACiB,OAAhCrJ,EAAcA,eAC8B,OAA5CA,EAAcsJ,2BAEdzH,EAASklB,GAAcvvB,MAExB,CACDua,EAAKpS,QACLK,EAAcqJ,qBACdrJ,EAAcA,cACdA,EAAcsJ,0BACd9R,EACAqK,IAGFqzB,qBAAU,WACJnjB,EAAKpS,WACH44D,GAAkBn4D,EAAMoK,aAAgBpK,EAAMkK,mBAWvCiK,IAAanc,GAAaoc,WAAcpU,EAAMA,OAAUA,EAAMiK,cACvExI,EACE2+B,GAAWsC,GAAa/3B,aAAc,EAAG6D,GAAOE,eAAgBtX,EAAa+c,GAAU,IAZzF1S,EACE8/B,GACEmB,GAAa53B,mBACb,EACA0D,GAAOE,eACPtX,EACA+c,GACA,OASP,CACDnU,EAAMiK,aACNjK,EAAMA,MACNA,EAAMyK,UACNzK,EAAM2K,aACNgH,EAAKpS,QACLnI,EACAqK,EACA0S,EACAnU,EAAMoK,YACNpK,EAAMkK,mBACNiuD,IAGF,IAAMI,EAAkB,SAACrkD,GACvBq2B,GAAc,GACdgoB,EAAgBr+C,IA2ClB,OACE,sBAAK+M,UAAU,yBAAf,UACE,sBAAKA,UAAU,gBAAf,UACE,qBAAKA,UAAU,eAAf,SACE,cAAC,GAAD,CACER,MAAOA,EACP4M,eAAgB8qC,EAAgBE,EAAkBC,EAClD15C,QAASA,MAGZu5C,GACC,cAACr2C,GAAA,EAAD,CACEsW,UAAW,cAAC,GAAD,IACX/W,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,EAAS,sBACxBE,kBAAgB,EALlB,2BAUF,cAACJ,GAAA,EAAD,CACEb,UAAU,gBACVI,QAAQ,YACRjI,MAAM,UACN2I,QAAS,kBAAMC,EAAS,IAAD,OAAKm2C,EAAgB,UAAY,YAAjC,WACvBj2C,kBAAgB,EALlB,2BAUDi2C,EACC,cAAC,GAAD,CAAoB/gE,WAAYA,EAAY+c,SAAUnc,GAAa2qC,UAEnE,cAAC,GAAD,CAAcvrC,WAAYA,EAAY+c,SAAUnc,GAAaoc,YAE9DgkD,EACCA,EAAe7hE,OAAS,EACtB,cAAC,KAAD,CACE0qB,UAAU,WACVu3C,QAASnuD,EAAcC,EACvBjH,KAnEO,WAEb5B,EADE02D,EAEA52B,GACEvhC,EAAM8K,mBACN9K,EAAMuK,kBAAoB,EAC1BiE,GAAOE,eACPtX,EACA+c,GACA,GAKFisB,GACEpgC,EAAM2K,aACN3K,EAAMqK,YAAc,EACpBmE,GAAOE,eACPtX,EACA+c,GACA,KAgDEskD,WAAYL,EAAiBA,EAAe7hE,OAAS,EACrDmiE,OACE14D,EAAMiK,cACJ,qBAAKgX,UAAU,cAAf,SACE,cAAC,GAAD,MARR,SAaE,cAAC2kB,GAAA,EAAD,CAAMtmB,WAAS,EAAC6mB,QAAS,EAAGllB,UAAU,aAAtC,SACGm3C,EAAe5lD,KAAI,SAAC0B,GAAD,OAClB,cAAC0xB,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAIC,GAAI,EAAvB,SACE,cAAC,GAAD,CAAUzF,KAAMA,EAAMq+C,gBAAiBgG,KADVrkD,EAAKd,WAO1C,cAAC,GAAD,CAAc3W,QAAQ,uDAEtB+wB,EACF,cAAC,GAAD,IAEAoM,GAAgB,cAAC,GAAD,CAAcn9B,QAAQ,8CAExC,cAAC,GAAD,CACEA,QAAQ,oDACR4rB,KAAMiiB,EACNla,QAASma,EACT7F,aA/GoB,WACxBuzB,GAAgB,GAEZ7gE,GAAc8gE,GAChBz2D,ExH6PoB,SAAC,GAA+C,IAA7CrK,EAA4C,EAA5CA,WAAYwd,EAAgC,EAAhCA,OACvC,OAAO,SAACnT,GAEN,OADAA,EAAS+J,MACF20B,GAAaM,WAAW,CAAErpC,aAAYwd,WAAU1X,MACrD,SAACF,GACCyE,EAASgK,GAAkBmJ,OAE7B,SAAC3T,GACCQ,EAAS2gC,GAAiBnhC,QwHrQnBw/B,CAAW,CAAErpC,WAAYA,EAAWiK,WAAYuT,OAAQsjD,EAAa9kD,OA4G5EyxB,eAAgBr5B,IAElB,cAAC,GAAD,CACE6c,KAAM7c,IAAiBxL,EAAMyL,mBAAsD,OAAjCzL,EAAM0L,wBACxDjP,QACEuD,EAAMyL,kBAAoB,oCAAmC,wCAE/D8c,YA/GmB,WACvB0vC,GAAgB,GAEZj4D,EAAMyL,mBAAmB8+B,GAAc,IA6GvCtxC,KAAM+G,EAAMyL,kBAAoB3T,GAAO4wB,QAAU5wB,GAAO05B,YCxM1DrS,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX2N,QAAS,CACP7E,OAAQ,aAEVwwC,aAAc,CACZh7C,UAAW,SACXtE,WAAY,KAEdnF,KAAM,CACJkF,MAAOyO,KAAU/P,QACjBuB,WAAY,IACZqF,eAAgB,YAChB,UAAW,CACTA,eAAgB,YAChBtF,MAAOyO,KAAU+wC,iBAGrBvtC,cAAe,CACbb,SAAU,iBAwFD6K,OA3EGC,aARM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,SAGa,SAAClQ,GAAD,MAA0D,CACnFzC,MAAO,SAACwF,GAAD,OAA2B/C,ExKkBf,SAAC+C,GAAD,OAA2B,SAAC/C,GAG/C,OAFAA,EAAS6C,MAEFgqB,GAAYtvB,MAAM,CAAEwF,SAAQtH,MACjC,SAACF,IACiB,IAAIL,MACZo9B,IAAI,QAAS/8B,EAAU8xB,MAAO,CAAE/wB,KAAM,MAE9C0D,EAASwtB,GAAajyB,EAAUwH,UAElC,SAACvD,GACCQ,EAASytB,GAAWjuB,QwK7BmBjC,CAAMwF,QA8EpC6wB,EAlEf,YAAiD,IAAhC1jB,EAA+B,EAA/BA,KAAM3S,EAAyB,EAAzBA,MAAyB,EACZ6sB,oBAAkB,GADN,oBACvCvnB,EADuC,KAC5Bu0D,EAD4B,KAGxCh4C,EAAU1B,KAgBhB,OACE,qBAAK8B,UAAU,2BAAf,SACE,eAACkR,GAAA,EAAD,CAAOC,UAAW,EAAlB,UACE,cAAC,GAAD,CAAa3R,MAAM,sBACnB,cAAC,KAAD,CACEsQ,cAAe,CAAE5N,MAAO,GAAIE,SAAU,IACtC2N,iBAAkBxL,GAAQxC,YAC1BiO,SArBY,SAACziB,EAAgB0iB,GACnC,IAAM1sB,EAAwB,CAC5B2e,MAAO3U,EAAO2U,MACdE,SAAU7U,EAAO6U,UAGnBw1C,GAAa,GACb75D,EAAMwF,IAWF,SAKG,gBAAGgK,EAAH,EAAGA,OAAH,EAAW0b,OAAX,OACC,eAAC,KAAD,CAAMjJ,UAAU,OAAhB,UACE,cAAC,KAAD,CACEA,UAAU,WACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,wBACZ7V,MAAO5G,EAAM,QAEf,cAAC,GAAD,CAAekd,UAAU,aACzB,sBAAKzK,UAAU,yBAAf,UACE,cAAC,KAAD,CAAM9mB,GAAG,kBAAT,qCACA,cAAC2nB,GAAA,EAAD,CAAQ7oB,KAAK,SAASmgB,MAAM,UAAUiI,QAAQ,YAAY6J,SAAU5mB,EAApE,SACGA,EAAY,cAAC2pB,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,sBAMxE,cAAC0U,GAAA,EAAD,CAAS7M,UAAS,UAAKJ,EAAQmM,QAAb,cAClB,sBAAK/L,UAAU,iBAAf,UACE,cAACG,GAAA,EAAD,CAAYH,UAAWJ,EAAQ83C,aAAct3C,QAAQ,YAArD,8CAGA,cAAC,KAAD,CAAMlnB,GAAG,YAAT,sCAEF,cAAC,GAAD,CACEkuB,KAAM/jB,GAAwC,OAA3BqN,EAAKlN,kBACxBhI,QAASkV,EAAKlN,kBACd8jB,YA3CW,WACjBswC,GAAa,IA2CP5/D,KAAMnB,GAAO05B,gBC9HR,ICAA,ICIGpS,cAAW,SAACzH,GAAD,iBAC3B0H,aAAa,CACXC,UAAU,cACRzE,gBAAiB,UACjB20B,YAAa,MACb7iB,aAAc,KACdpN,QAAS,OACThE,MAAO,OACPC,OAAQ,QACRgE,cAAe,MACfE,eAAgB,iBACf/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,eACTmB,MAAO,OACPiE,cAAe,WAGnBs5C,WAAW,gBACRnhD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,OACV6pB,UAAW,cACXuO,UAAW,WAGf5B,OAAK,GACH4B,UAAW,SACX36B,MAAO,OAFJ,eAGF5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,OACPoC,UAAW,SACX4B,QAAS,OACTC,cAAe,SACfI,WAAY,WARX,eAUH,QAVG,GAWDjH,WAAY,SACZU,WAAY,IACZD,MAAO,UACPP,SAAU,YAdT,eAeAlB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B9G,SAAU,YACVuB,QAAS,SACT+N,OAAQ,0BAlBT,eAoBD,SAAU,CACR/O,MAAO,YArBR,mBAwBH,OAxBG,GAyBDA,MAAO,UACPT,WAAY,SACZU,WAAY,IACZR,SAAU,UACVmsB,WAAY,QA7BX,eA8BArtB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,WA/BV,wBAiCO,GAjCP,eAkCD,eAAgB,CACd+N,OAAQ,eAnCT,mBAsCH,MAAO,CACL/O,MAAO,YAvCN,GA0CLkH,KAAK,gBACF3I,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,aAyBHi7C,ICvFT55C,GAAYC,cAAW,kBAC3BC,aAAa,CACX25C,kBAAmB,CACjB5+C,QAAS,iBACT0F,aAAc,WACdP,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZpH,WAAYR,KAAO2C,MACnBF,UAAWzC,KAAOyC,UAClBP,aAAc,MACdd,MAAOpB,KAAOM,UACd,SAAU,CACR6P,OAAQ,SA+ED8wC,OAjEf,YAMwB,IALtBC,EAKqB,EALrBA,eACAC,EAIqB,EAJrBA,oBACAp2B,EAGqB,EAHrBA,oBACAC,EAEqB,EAFrBA,oBACAgI,EACqB,EADrBA,yBAEMnqB,EAAU1B,KACVlS,EAAyCsjB,aAC7C,SAAC3e,GAAD,OAAsBA,EAAM3E,eAAeA,kBAG7C,OACE,qCACE,sBAAKgU,UAAWJ,EAAQm4C,kBAAxB,UACE,cAAC53C,GAAA,EAAD,sDACA,cAAC,GAAD,CACEolB,QAAS0yB,EAAgB5iD,eACzBoU,SAAUyuC,EACV//C,MAAM,UACN7hB,KAAK,WACL6yB,WAAY,CAAE,aAAc,yBAGhC,cAAChJ,GAAA,EAAD,CAAYC,QAAQ,KAApB,4BACA,sBAAKJ,UAAU,uBAAf,UACE,sBAAKA,UAAU,qBAAqBc,QAASghB,EAA7C,UACE,cAAC,GAAD,IACA,cAAC3hB,GAAA,EAAD,CAAYC,QAAQ,YAApB,oCAEDpU,GACCA,EAAeuF,KAAI,SAACS,EAAeiiB,GACjC,OACE,sBAAKjU,UAAU,iBAAiBc,QAAS,kBAAMihB,EAAoB/vB,IAAnE,UACE,qBAAKgO,UAAU,QAAf,SACGhU,GAA4C,IAA1BA,EAAe1W,OAChC,cAAC,GAAD,IAEA,cAACq3B,GAAA,EAAD,CAASnN,MAAM,WAAWic,UAAU,MAAMqO,WAAY,IAAtD,SACE,sBACEhpB,QAAS,SAACoZ,GACRA,EAAEC,kBACF4P,EAAyB/3B,EAAyC,IAA1BhG,EAAe1W,SAH3D,SAME,cAAC,GAAD,UAKR,qBAAK2qB,IAAKjO,EAAcg4B,eAAgB9pB,IAAI,SAC5C,cAAC2M,GAAA,EAAD,CAASC,YAAY,aAAa9M,UAAU,YAC5C,qBAAKA,UAAU,SAAf,SACE,cAACG,GAAA,EAAD,CAAY8pB,QAAM,EAACjqB,UAAU,sBAA7B,SACGhO,EAAck4B,iBArBmEjW,a,6EC5DzFkkC,GAAuB,SAClCC,EACApnC,GAEA,IAAMqnC,EAA6C,CACjD,CAAEC,SAAU,OAAQvuC,MAAO,gBAC3B,CAAEuuC,SAAU,cAAevuC,MAAO,iBAAewuC,gBAAgB,GACjE,CAAED,SAAU,UAAWvuC,MAAO,cAC9B,CAAEuuC,SAAU,WAAYvuC,MAAO,QAC/B,CAAEuuC,SAAU,gBAAiBvuC,MAAO,gBAAiBwuC,gBAAgB,GACrE,CAAED,SAAU,SAAUvuC,MAAO,WAgB/B,OAPAsuC,EAAgBjnD,KAHwB,CAAEknD,SAAU,SAAUvuC,MAAO,WACvB,CAAEuuC,SAAU,UAAWvuC,MAAO,KAIxEiH,IACFqnC,EAAgB1M,OAAO,EAAG,EATc,CAAE2M,SAAU,eAAgBvuC,MAAO,YAU3EsuC,EAAgBjnD,KAT6B,CAAEknD,SAAU,gBAAiBvuC,MAAO,sBAY5EsuC,GAGIG,GAAmB,CAC9B57B,KAAMzlC,GAAuBuX,KAC7B8E,YAAarc,GAAuBshE,YACpCC,QAASvhE,GAAuBwhE,SAChCzlD,SAAU/b,GAAuByhE,SACjC3a,cAAe9mD,GAAuB06C,WACtC59B,OAAQ9c,GAAuB86C,QC3B3B/zB,GAAYC,aAAW,CAC3B06C,WAAY,CACV,qBAAsB,CACpBx8C,OAAQ,QAEV,6CAA8C,CAC5CzC,gBAAiB,kBAkIRk/C,GA/FK,YAgBQ,IAf1BC,EAeyB,EAfzBA,SACAC,EAcyB,EAdzBA,UAcyB,IAbzBC,wBAayB,MAbN,0CAaM,EAZzB1sC,EAYyB,EAZzBA,QAYyB,IAXzBkrC,cAWyB,MAXhB,cAWgB,EAVzByB,EAUyB,EAVzBA,SACAC,EASyB,EATzBA,WACAC,EAQyB,EARzBA,oBACAC,EAOyB,EAPzBA,WACAC,EAMyB,EANzBA,eACAC,EAKyB,EALzBA,cACAC,EAIyB,EAJzBA,SACAC,EAGyB,EAHzBA,WAGyB,IAFzBC,mBAEyB,aADzBC,qBACyB,SACnB/5C,EAAU1B,KAQhB,OACE,cAACm0B,GAAA,EAAD,6BAAS6mB,GAAT,aACE,cAAChoC,GAAA,EAAD,6BAAWioC,GAAX,aACE,cAACS,GAAA,EAAD,6BAAoBR,GAApB,aACE,eAACS,GAAA,EAAD,6BAAWR,GAAX,cACE,cAACS,GAAA,EAAD,6BAAeR,GAAf,aACE,cAACS,GAAA,EAAD,6BAAcR,GAAd,aACGP,EAAUznD,KAAI,WAAsC0iB,GAAtC,InN6JU+lC,EmN7JP1B,EAAH,EAAGA,SAAUvuC,EAAb,EAAaA,MAAOwuC,EAApB,EAAoBA,eAApB,OACb,cAAC0B,GAAA,EAAD,CAEE1xC,MAAO,CACLnP,SAAW2Q,OAAiB5xB,EAAT,QAHvB,UAMIogE,GAAkBiB,EAClB,cAACU,GAAA,EAAD,CACE7oD,OAAQvW,GAAyB09D,GAAkBgB,EAAS7vD,SAAW2uD,EACvEthC,WnNmJiBgjC,EmNnJmBR,EAASxiC,UnNoJ5DgjC,IAAa3iE,GAAS8iE,IAAM,MAAQ,QmNnJrBr5C,QAAS,kBAxBL,SAACw3C,GACrBkB,GAAYA,EAASY,eACvBZ,EAASY,cAAc9B,GAsBU+B,CAAkB/B,IAHnC,SAKGvuC,IAGHA,GAdGkK,YAoBb,cAACqmC,GAAA,EAAD,UACG/tC,EACC,cAACwtC,GAAA,EAAD,6BAAcR,GAAd,aACE,cAACU,GAAA,EAAD,CAAWM,QAASvB,EAAU1jE,OAA9B,SAAuCmiE,OAEvCsB,EAASzjE,OAAS,EACpByjE,EAASxnD,KAAI,SAACksC,EAAK+c,GAAN,OACX,cAACT,GAAA,EAAD,CAAyB/5C,UAAY05C,EAAmC,GAArB95C,EAAQi5C,WAA3D,SACGG,EAAUznD,KAAI,WAAsBkpD,GAAtB,IAAGnC,EAAH,EAAGA,SAAH,EAAavuC,MAAb,OACb,cAACkwC,GAAA,EAAD,CAEE1xC,MAAO,CACL3L,UAAyB,IAAd69C,EAAkB,aAAUtiE,EACvC6mB,WAAyB,IAAbw7C,GAAkBb,EAAgB,MAAQ,GACtD98C,SAAwB,IAAd49C,EAAkB,cAAgB,GALhD,SAQGhB,EAAaA,EAAWhc,EAAK6a,GAAY7a,EAAI6a,IARhD,UACUkC,EADV,YACsBC,QAHXD,MAgBjB,cAACT,GAAA,EAAD,6BAAcR,GAAd,aACE,cAACU,GAAA,EAAD,CAAWM,QAASvB,EAAU1jE,OAA9B,SAC+B,kBAArB2jE,EACN,cAAC,GAAD,CAAcz5C,MAAOy5C,IAErBA,uBC9GPyB,OA5Bf,YAAsD,IAAD,IAA/BviD,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAI3B,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,sBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,UAQE,mBAAG26C,YAAU,wBAAb,SACE,sBACEh0C,EAAE,21IACFvM,KAAMjC,MAGV,+BACE,0BAAUhG,GAAG,kBAAb,SACE,sBAAMmI,MAAM,SAASC,OAAO,QAAQH,KAAK,kBCHpCwgD,OAnBf,WACE,OACE,sBACEtgD,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAU,oBANZ,UAQE,sBAAM4U,EAAE,MAAMC,EAAE,MAAMva,MAAM,KAAKC,OAAO,KAAKskB,GAAG,MAAMlM,OAAQrB,KAAOrX,wBACrE,sBACE0M,EAAE,s3DACFvM,KAAMkX,KAAOja,gBCMNwjD,OAnBf,WACE,OACE,sBACEvgD,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAMkX,KAAO5X,MACbgN,MAAM,6BACN1G,UAAU,oBANZ,UAQE,sBAAM4U,EAAE,MAAMC,EAAE,MAAMva,MAAM,KAAKC,OAAO,KAAKskB,GAAG,MAAMlM,OAAQrB,KAAOrX,wBACrE,sBACE0M,EAAE,88CACFvM,KAAMkX,KAAOja,gBCaf6G,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXmN,YAAa,CACXjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,WACZrE,MAAO,OACPgB,UAAW,WAEb8B,OAAQ,CACNjF,MAAOpB,KAAOM,UACdoG,eAAgB,mBAElBq9C,aAAc,CACZx8C,QAAS,OACTC,cAAe,MACfE,eAAgB,SAChBE,WAAY,SACZ,MAAO,CACLuI,OAAQ,kBAGZ6zC,WAAY,CACV5hD,QAAS,IACT,UAAW,CACTS,gBAAiB,eA2LVohD,OAzKf,YAAsF,IAAD,EAAzD/C,EAAyD,EAAzDA,eAAgBgD,EAAyC,EAAzCA,eACpCr7C,EAAU1B,KACV6C,EAAWM,eACX7gB,EAAW4uB,cACXrmB,EAA4BumB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMhS,iBACpE+R,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QALmB,EAMzBka,oBAAkB,GANO,oBAM5EplB,EAN4E,KAMrD01D,EANqD,KAQ7EC,EAAY,UAAGpyD,EAAMpK,qBAAT,aAAG,EAAqB+hD,MAAK,SAAC7kD,EAAiB8kD,GAC/D,OAAO9kD,EAAE7D,KAAO2oD,EAAE3oD,QAGdojE,EAAW,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAcnpB,MAAM,EAAG,GAyF3Cne,qBAAU,WACRrzB,EAASklB,GAAcuyC,EAAe9lD,OACrC,CAAC3R,EAAUy3D,IAEd,IAAMoD,EAA2B,SAACziE,GAChC,IAAMstB,EAAuD,CAC3D1U,OAAQ5Y,EAAa4Y,OACrBH,QAASzY,EAAayY,QAExB7Q,EAASslB,GAAmBI,KAGxBN,EAAqB,SAAChtB,GAC1BmoB,EAAS,QAAS,CAAEpQ,MAAO,CAAE/X,eAAc83B,OAAQunC,MAO/CqD,EACJ91D,IAA0BkL,EAAKjL,2BAAqE,OAAxCiL,EAAKhL,gCAEnE,OACE,qCACGu1D,GACC,qBAAKj7C,UAAWJ,EAAQ2L,YAAxB,SACE,cAAC,GAAD,CAAa/L,MAAM,WAAnB,SACGy4C,GACC,cAACp3C,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN6H,UAAWJ,EAAQxC,OACnB0D,QAAS,kBAAMC,EAAS,gBAAiB,CAAEpQ,MAAO,CAAE+f,OAAQunC,MAJ9D,gCAYiB9/D,IAAxB4Q,EAAMpK,cACL,cAAC,GAAD,CAAc6gB,MAAM,+BACM,OAAxBzW,EAAMpK,cACR,cAAC,GAAD,CACEq6D,UApI4B,CAClC,CAAEV,SAAU,QAASvuC,MAAO,qBAC5B,CAAEuuC,SAAU,QAASvuC,MAAO,SAC5B,CAAEuuC,SAAU,OAAQvuC,MAAO,OAC3B,CAAEuuC,SAAU,iBAAkBvuC,MAAO,UACrC,CAAEuuC,SAAU,UAAWvuC,MAAO,cAC9B,CAAEuuC,SAAU,QAASvuC,MAAO,aA+HtBgvC,SAAUkC,EAAiBG,GAAe,GAAKD,GAAgB,GAC/D1B,WA7HuB,SAAChc,EAAmB6a,GACjD,OAAQA,GACN,IAAK,QACH,OAAO7a,EAAIhsC,MAAQ,IAAMgsC,EAAI/rC,SAC/B,IAAK,QACH,OAAO+rC,EAAIv7B,MACb,IAAK,OACH,OAAOu7B,EAAIzlD,OAASV,GAAa67B,MAC/B,sBAAKnT,UAAWJ,EAAQk7C,aAAxB,UACE,cAAC,GAAD,IACA,iDAGF,cAEJ,IAAK,iBACH,OACE,cAAC,GAAD,CACE/wC,MAAO0zB,EAAI8d,eAAiB,aAAe,qBAC3CpjD,MAAOslC,EAAI8d,eAAiB,UAAY,UAG9C,IAAK,UACH,OACE9d,EAAIzlD,OAASV,GAAa67B,OACxB,cAAC,GAAD,CACEqoC,eAAgB/d,EAAIpsC,OACpBoY,SAAU,kBAAM4xC,EAAyB5d,IACzCtlC,MAAM,UACN7hB,KAAK,WACL6yB,WAAY,CAAE,aAAc,sBAKpC,IAAK,QACH,OACE,sBAAKZ,MAAO,CAAEjK,QAAS,OAAQC,cAAe,MAAOC,IAAK,EAAG0I,OAAQ,SAAU5M,MAAO,OAAtF,UACGmjC,EAAI8d,gBACH,cAACrwC,GAAA,EAAD,CACEiJ,eAAa,EACbnU,UAAWJ,EAAQm7C,WACnBj6C,QAAS,kBAAM8E,EAAmB63B,IAHpC,SAKE,cAAC,GAAD,OAGFA,EAAI8d,gBACJ,qCACE,cAACrwC,GAAA,EAAD,CACEiJ,eAAa,EACbnU,UAAWJ,EAAQm7C,WACnBj6C,QAAO,sBAAE,sBAAAjlB,EAAA,sDACP2E,EAASmtB,GAAW8vB,EAAIjsC,SACxBhR,EAASklB,GAAcuyC,EAAe9lD,KAF/B,2CAHX,SAQE,cAAC,GAAD,MAEF,cAAC+Y,GAAA,EAAD,CACEiJ,eAAa,EACbnU,UAAWJ,EAAQm7C,WACnBj6C,QAAO,sBAAE,sBAAAjlB,EAAA,sDACPq/D,GAAyB,GACzB16D,EAAShC,GAAmBi/C,EAAIjsC,SAFzB,2CAHX,SAQE,cAAC,GAAD,YAMZ,QACE,OAAOisC,EAAI6a,KAoDTY,SAAU,CAAE59C,UAAW,aACvBo+C,aAAa,IAGf,cAAC,GAAD,IAEF,cAAC,GAAD,CACEtyC,KAAMk0C,EACN9/D,QACEkV,EAAKjL,0BACD,0DACAiL,EAAKhL,+BAEX4hB,YA7Ca,WACb9hB,GAAuB01D,GAAyB,IA6ChDljE,KAAM0Y,EAAKjL,0BAA4B5O,GAAO4wB,QAAU5wB,GAAO05B,YC5MxDkrC,OA3Bf,YAAgE,IAAD,IAA/BtjD,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIrC,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,sBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,UAQE,sBACE4U,EAAE,MACFC,EAAE,MACFva,MAAM,KACNC,OAAO,KACPskB,GAAG,MACHzkB,KAAMkX,KAAO5X,MACbiZ,OAAQrB,KAAOrX,wBAEjB,sBAAM0M,EAAE,8BAA8BgM,OAAQxa,EAAOuc,cAAc,QAAQosB,eAAe,cCrBnF4a,GAAiB,CAC5BC,a,6CACAC,oB,4FAGF,WAA4B71C,GAA5B,SAAAlqB,EAAA,sEACenC,GAAG,UAAcoE,GAAS,SAAvB,OAAqCioB,EAAU,mBAAeA,GAAe,KAC1F9pB,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAmCpE,GAAnC,SAAAC,EAAA,sEACe8B,GAAG,UAAYG,GAAS,QAArB,YAAoClC,EAAQuW,IAAM,CAChE0pD,yBAA0BjgE,EAAQ0Z,UAEjCrZ,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,sBCLO,IAAM27D,GAAe,SAAC51C,GAC3B,OAAO,SAACvlB,GAEN,OADAA,EAAS0G,MACFw0D,GAAeC,aAAa51C,GAAY9pB,MAC7C,SAACF,GACCyE,EAASs7D,GAAW//D,OAEtB,SAACiE,GACCQ,EAASu7D,GAAc/7D,SAMlBkH,GAAiB,iBAA0B,CACtDlP,KAAM5M,KAGK0wE,GAAa,SAAC18D,GAAD,MAA2C,CACnEpH,KAAM3M,GACN+T,YAGW28D,GAAgB,SAAC/7D,GAAD,MAAuC,CAClEhI,KAAM1M,GACN0U,UAiBWoH,GAAkB,iBAAiC,CAC9DpP,KAAMzM,KAGKywE,GAAuB,SAACpgE,GAAD,MAA8D,CAChG5D,KAAMxM,GACNoQ,YAGWqgE,GAAqB,SAACj8D,GAAD,MAA8C,CAC9EhI,KAAMvM,GACNuU,UCjEIke,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXovB,kBAAmB,CACjB3uB,aAAc,gBAmBLq9C,OAVf,YAA2E,IAA9C1uB,EAA6C,EAA7CA,kBACrB5tB,EAAU1B,KAEhB,OACE,eAACiC,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQ4tB,kBAA/C,sEACyDA,MCCvDtvB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACTlF,QAAS,SACT0D,SAAU,QACVqK,OAAQ,UAEV6E,QAAS,CACP7E,OAAQ,WACR+tB,UAAW,SACX16B,OAAQ,OACRD,MAAO,MACPV,gBAAiB0X,KAAOja,WAE1BkU,YAAa,CACXjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,WACZrE,MAAO,OACPuE,aAAc,UAEhBzB,OAAQ,CACNjF,MAAOmZ,KAAOja,WAEhBu2C,UAAW,CACT1mC,OAAQ,SACR/N,QAAS,OACTmF,QAAS,OACTK,WAAY,SACZF,eAAgB,gBAChBtG,MAAOmZ,KAAOja,UACdgF,OAAQ,UACR,UAAW,CACTzC,gBAAiBlD,EAAME,QAAQvU,OAAO2b,MACtC,QAAS,CACP,SAAU,CACR5D,KAAM1D,EAAME,QAAQvU,OAAO2b,UAKnCm+C,YAAa,CACX79C,QAAS,OACTC,cAAe,MACfI,WAAY,eAiLHy9C,OA1Kf,WAA0B,IAAD,EACjBx8C,EAAU1B,KACV1d,EAAW4uB,cACXx6B,EAAWy6B,eAHM,EAIaC,aAAY,SAAC3e,GAAD,OAAsBA,KAA9DvR,EAJe,EAIfA,QAAS4M,EAJM,EAINA,eACX0kB,GAAiB,OAAR97B,QAAQ,IAARA,GAAA,UAAAA,EAAU+b,aAAV,eAAiB+f,SAAU,KALnB,EAMqB9F,mBAAwB8F,GAN7C,oBAMhBunC,EANgB,KAMAoE,EANA,OAOCzxC,oBAAkB,GAPnB,oBAOhBxD,EAPgB,KAOV+H,EAPU,OAQavE,oBAAkB,GAR/B,oBAQhBye,EARgB,KAQJC,EARI,OASmC1e,mBAA+B,MATlE,oBAShB4e,EATgB,KASOC,EATP,OAUmC7e,oBAAkB,GAVrD,oBAUhBpe,EAVgB,KAUO+8B,EAVP,OAWmC3e,mBAAyC,MAX5E,oBAWhB8e,EAXgB,KAWOC,EAXP,OAYa/e,mBAAiB,IAZ9B,oBAYhB7E,EAZgB,KAYJqsC,EAZI,OAaiBxnC,oBAAkB,GAbnC,oBAahB0xC,EAbgB,KAaFC,EAbE,KAkFvB,OAnEA1oC,qBAAU,YACM,OAAdokC,QAAc,IAAdA,OAAA,EAAAA,EAAgB9lD,KAAM3R,EAASohC,KAAoB,OAACq2B,QAAD,IAACA,OAAD,EAACA,EAAgB9lD,QACnE,QAAC8lD,QAAD,IAACA,OAAD,EAACA,EAAgB9lD,GAAI3R,IAExBqzB,qBAAU,YAEN7nB,EAAeS,4BACoC,OAAnDT,EAAeU,mCAEf68B,GAAyB,GACzBD,GAAc,GACdizB,GAAgB,MAEjB,CAACvwD,EAAeS,2BAA4BT,EAAeU,kCAgD9DmnB,qBAAU,WACHz0B,EAAQ8H,gBAAsC,OAApB9H,EAAQA,SAA2D,OAAvCA,EAAQ+H,4BACjE3G,EAASm7D,GAAa51C,OAKxB,sBAAK/F,UAAWJ,EAAQvB,UAAxB,UACE,qBAAK2B,UAAWJ,EAAQ2L,YAAxB,SACE,cAAC,GAAD,CAAa/L,MAA0B,OAAnBy4C,EAA0B,WAAaA,EAAev0C,WAA1E,SACGu0C,GACC,cAAC7mC,GAAA,EAAD,CAAMpR,UAAWJ,EAAQxC,OAAQ0D,QAAS,kBAAMu7C,EAAkB,OAAlE,SACE,cAACx7C,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAjC,0BAOY,OAAnB8/C,GACC,mCACE,cAAC,GAAD,CACElyC,WAAYA,EACZqsC,cAAeA,EACf+C,cA9BY,YAChBpvC,EAAWzwB,OAAS,GAA2B,IAAtBywB,EAAWzwB,SACtCkL,EAASm7D,GAAa51C,KA6BhBiE,YAAY,yBAKjB5qB,EAAQ8H,eACP,cAAC,GAAD,IAEmB,OAAnB+wD,GACA74D,EAAQA,SACRA,EAAQA,QAAQmS,KAAI,SAACmf,GACnB,OACE,eAACQ,GAAA,EAAD,CAEEC,UAAW,EACX/Q,QAAQ,WACRR,QAAS,CAAE5G,KAAM4G,EAAQguC,WACzB9sC,QAAS,kBAxFK,SAAC4P,GACzB2rC,EAAkB3rC,GAuFO8rC,CAAkB9rC,IALnC,UAOE,sBAAK1Q,UAAWJ,EAAQu8C,YAAxB,UACE,cAACh8C,GAAA,EAAD,CAAYC,QAAQ,KAApB,SAA0BsQ,EAAOhN,aACjC,cAACmJ,GAAA,EAAD,CAASC,YAAY,WAAW9M,UAAWJ,EAAQmM,UAClD2E,EAAO8c,qBAEV,cAAC,GAAD,MAXK9c,EAAOve,OAgBA,OAAnB8lD,GACC,qCACE,cAAC,GAAD,CAAmBzqB,kBAAmByqB,EAAezqB,oBACrD,cAAC,GAAD,CACEyqB,eAAgBA,EAChBC,oBArGkB,SAACxuC,GF/DF,IAAC9tB,EEgE1B4E,GFhE0B5E,EEgEH,CAAEuW,GAAI8lD,EAAgB9lD,GAAImD,SAAU2iD,EAAgB5iD,gBF/DtE,SAAC7U,GAEN,OADAA,EAAS4G,MACFs0D,GAAeE,oBAAoBhgE,GAASK,MACjD,WACEuE,EAASw7D,GAAqBpgE,OAEhC,SAACoE,GACCQ,EAASy7D,GAAmBj8D,WE6JxB8hC,oBAlGkB,WAC1B2H,EAAyB,MACzBta,GAAQ,IAiGA4S,oBA9FkB,SAAC/vB,GAC3By3B,EAAyBz3B,GACzBmd,GAAQ,IA6FA4a,yBA1FuB,SAAC/3B,EAA8BhB,GAC9D24B,EAAyB,6BAAK33B,GAAN,IAAqBhB,YAC7Cs4B,GAAc,MA0FR,cAAC,GAAD,CAAkB2uB,eAAgBA,EAAgBgD,gBAAgB,OAGtE,cAAC,GAAD,CACE7zC,KAAMA,EACN+H,QAASA,EACTnd,cAAew3B,EACf9Y,OAAM,OAAEunC,QAAF,IAAEA,SAAkB9/D,IAE5B,cAAC,GAAD,CACEivB,KAAMiiB,EACNla,QAASma,EACT9tC,QAAO,iEAAkDkuC,QAAlD,IAAkDA,OAAlD,EAAkDA,EAAuBQ,WAAzE,KACPzG,aApG6B,WACjC8F,GAAyB,GAErBG,IAAqB,OAAIuuB,QAAJ,IAAIA,OAAJ,EAAIA,EAAgB9lD,KAC3C3R,EACEwhC,GAAmB,OACjBi2B,QADiB,IACjBA,OADiB,EACjBA,EAAgB9lD,GADC,OAEjBu3B,QAFiB,IAEjBA,OAFiB,EAEjBA,EAAuBr3B,SACvBq3B,EAAsB14B,UA6FxB4yB,eAAgBp3B,IAElB,cAAC,GAAD,CACE4a,KAAMk1C,EACN9gE,QACEwQ,EAAeS,2BACX,+CACAT,EAAeU,gCAErB4a,YAjGa,WACjBi1C,GAAgB,IAiGZvkE,KAAMgU,EAAeS,2BAA6B5V,GAAO4wB,QAAU5wB,GAAO05B,YChO5ErS,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACTlF,QAAS,SACT0D,SAAU,QACVqK,OAAQ,UAEVqE,YAAa,CACXjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,WACZrE,MAAO,OACPuE,aAAc,UAEhBzB,OAAQ,CACNjF,MAAOpB,KAAOM,WAEhBxiB,OAAQ,CACNqyB,OAAQ,UAEV4zC,aAAc,CACZx8C,QAAS,OACTC,cAAe,MACfE,eAAgB,SAChBE,WAAY,SACZ,MAAO,CACLuI,OAAQ,kBAGZ6zC,WAAY,CACV5hD,QAAS,WACT,UAAW,CACTS,gBAAiB,eAgDV6iD,OA1Cf,WACE,IAAM78C,EAAU1B,KACV6C,EAAWM,eACXzsB,EAAWy6B,eACX7uB,EAAW4uB,cACTsB,EAAW97B,EAAS+b,MAApB+f,OALmB,EAMS9F,mBAAiB,IAN1B,oBAMpB7E,EANoB,KAMRqsC,EANQ,KAc3B,OACE,sBAAKpyC,UAAWJ,EAAQvB,UAAxB,UACE,qBAAK2B,UAAWJ,EAAQ2L,YAAxB,SACE,cAAC,GAAD,CAAa/L,MAAK,sBAAiBkR,EAAOhN,YAA1C,SACE,cAAC7C,GAAA,EAAD,CACEb,UAAWJ,EAAQxC,OACnBgD,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,EAAS,kBAAmB,CAAEpQ,MAAO,CAAE+f,OAAQA,MAJhE,wBAUJ,cAAC,GAAD,CAAmB8c,kBAAmB9c,EAAO8c,oBAC7C,qBAAKxtB,UAAWJ,EAAQ/qB,OAAxB,SACE,cAAC,GAAD,CACEkxB,WAAYA,EACZqsC,cAAeA,EACf+C,cAzBc,YAChBpvC,EAAWzwB,OAAS,GAA2B,IAAtBywB,EAAWzwB,SACtCkL,EAASklB,GAAcgL,EAAOve,GAAI4T,KAwB9BiE,YAAY,mCAGhB,cAAC,GAAD,CAAkBiuC,eAAgBvnC,EAAQuqC,gBAAgB,Q,WCxDjDyB,OArBf,YAAiG,IAA9DnvD,EAA6D,EAA7DA,OAAQovD,EAAqD,EAArDA,oBACnCrxC,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAEtD,OACE,qCACE,cAACmC,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN8U,KAAK,QACLnM,QAAS,kBAAM67C,EAAoBpvD,IACnC4f,UAAW7B,EALb,wBASA,cAACzK,GAAA,EAAD,CAAQ7oB,KAAK,SAASooB,QAAQ,YAAYjI,MAAM,UAAU8U,KAAK,QAAQE,UAAW7B,EAAlF,+BCPApN,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAU,cACRxB,SAAU,UACVqK,OAAQ,SACR/N,QAAS,8BACRzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B7B,SAAU,OACV1D,QAAS,OACToF,cAAe,oBAGnBgN,YAAY,cACVjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,OACPuE,aAAc,OACd,WAAW,gBACRnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,uBAGZzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,WAGlB+9C,YAAa,CACXt+C,QAAS,OACTC,cAAe,SACfjD,UAAW5E,EAAMwuB,QAAQ,GACzB1mB,IAAK,QAEPq+C,gBAAiB,CACfjlD,SAAU,WACVO,MAAOpB,KAAOM,WAEhBqzC,iBAAkB,CAChBpsC,QAAS,OACTE,IAAK,OACLlD,UAAW,eAyGFwhD,OA/Ff,WAA6B,IAAD,MACpBl9C,EAAU1B,KACV6+C,EAAYztC,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QACpDo5C,EAAY,iBAAGiT,QAAH,IAAGA,GAAH,UAAGA,EAAWz+D,eAAd,iBAAG,EAAoBM,gBAAvB,aAAG,EAA8B+kB,eAAjC,QAA4C,GAHpC,EAKaiH,oBAAkB,GAL/B,oBAKnBswB,EALmB,KAKL8hB,EALK,OAMJpyC,mBAAS,GAAD,OAAIj2B,OAAOC,SAASo1D,OAApB,YAA8BF,IANlC,oBAMnBt0D,EANmB,KAMdynE,EANc,OAOYryC,oBAAkB,GAP9B,oBAOnBsyC,EAPmB,KAONC,EAPM,OAQEvyC,qBARF,oBAQnB3W,EARmB,KAQXuwC,EARW,KASpB4Y,EAAavhC,GAAeI,YAAYrlC,IAAU,SAAC8e,GACvD,MAAO,CACLvD,GAAIuD,EACJvB,MAAO0nB,GAAeC,iBAAiBpmB,OAYrCinD,EAAsB,SAACpvD,GAC3B,IAAM0G,EAAS1G,EAAO0G,OAChB7b,EAAWyjC,GAAeE,gBAAgBxuB,EAAOnV,UAAU,GAC3D0E,EAAI,UAAMnI,OAAOC,SAASo1D,OAAtB,YAAgCF,EAAhC,YAAgD1xD,GAAhD,OAA6D6b,EAAF,WAAeA,GAAW,IAC/FuwC,EAAU,CAAErwC,OAAQF,EAAQ7b,SAAUmV,EAAOnV,WAC7CilE,GAAoB,EAAMvgE,IAOtBugE,EAAsB,SAACluC,EAAkBmuC,GAC7CL,EAAM,OAACK,QAAD,IAACA,IAAU9nE,GACjBwnE,EAAe7tC,IAGjB,OACE,sBAAKnP,UAAWJ,EAAQvB,UAAxB,UACE,cAAC,KAAD,CACEyR,cAAe,CACb13B,SAAUxB,GAAS2D,KACnB0Z,OAAQ,IAEV8b,iBAAkBxL,GAAQF,gBAC1B2L,SAjCS,SAACziB,EAA+B0iB,GAC7C,IAAMhc,EAAS1G,EAAO0G,OAChB7b,EAAWyjC,GAAeE,gBAAgBxuB,EAAOnV,UAAU,GAC3D0E,EAAI,UAAMnI,OAAOC,SAASo1D,OAAtB,YAAgCF,EAAhC,YAAgD1xD,GAAhD,OAA6D6b,EAAF,WAAeA,GAAW,IAC/FkpD,GAAe,GACfzhB,UAAUC,UAAUC,UAAU9+C,IAsB5B,SAQG,gBAAGyQ,EAAH,EAAGA,OAAH,OACC,eAAC,KAAD,CAAM4E,GAAG,aAAT,UACE,qBAAK6N,UAAWJ,EAAQ2L,YAAxB,SACE,cAAC,GAAD,CAAa/L,MAAM,mBAAnB,SACE,cAAC+9C,GAAA,EAAD,CAAQC,QAAM,EAAd,SACE,cAAC,GAAD,CAAyBjwD,OAAQA,EAAQovD,oBAAqBA,UAIpE,cAACzrC,GAAA,EAAD,CAAOlR,UAAWJ,EAAQvB,UAAW8S,UAAW,EAAhD,SACE,sBAAKnR,UAAWJ,EAAQg9C,YAAxB,UACE,cAACz8C,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQi9C,gBAA/C,oLAIA,cAAC,KAAD,CAAOvmE,KAAK,WAAW20B,UAAW2b,GAAiB7c,MAAM,SAASiJ,QAASoqC,IAC3E,cAAC,KAAD,CAAO9mE,KAAK,SAAS20B,UAAWtC,GAAe3wB,KAAK,MAAMgyB,YAAY,iBAG1E,cAACuzC,GAAA,EAAD,CAAQE,MAAI,EAAZ,SACE,qBAAKz9C,UAAWJ,EAAQ8qC,iBAAxB,SACE,cAAC,GAAD,CAAyBn9C,OAAQA,EAAQovD,oBAAqBA,cAMxE,cAAC,GAAD,CACEv1C,KAAM8zB,EACN/rB,QAAS6tC,EACTxnE,IAAKA,EACLge,YAAW,0BAAkBs2C,GAAY,cAAWA,IACpDtS,MAAOvjC,IAET,cAAC,GAAD,CACEmT,KAAM81C,EACN1hE,QAAS,+BACT8rB,YAxDa,WACjB61C,GAAe,IAwDXnlE,KAAMnB,GAAO4wB,cCrHNi2C,GAjCW,WACxB,IAAM1pD,EAA0Bsb,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,SAAS+P,mBAC3EzP,EAAoCgwB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMrR,iBA4BlF,OA1BuB8/C,mBAAQ,WAAO,IAAD,IACnC,IAAKprC,EACH,OAAO,KAGT,IAI6B,EAJzB2pD,EAAsB,UAAG3pD,EAAQ1U,cAAcwlC,MACjD,SAACl5B,GAAD,OAAkBA,EAAagyD,mBAAqBpmE,GAA4BqmE,+BADxD,aAAG,EAE1B1rD,GAEEwrD,IACHA,EAAsB,UAAG3pD,EAAQ1U,cAAcwlC,MAC7C,SAACl5B,GAAD,OAAkBA,EAAagyD,mBAAqBpmE,GAA4BsmE,qBAD5D,aAAG,EAEtB3rD,IAWL,OAPE7S,EAAcsM,cACdoI,EAAQ7B,KAAOxY,OAAM,UAAC2F,EAAcsM,oBAAf,aAAC,EAA4BA,aAAa1L,aAC9Dy9D,IAEDA,EAAyBr+D,EAAcsM,aAAaA,aAAauG,IAG5DwrD,IACN,CAACr+D,EAAcsM,aAAcoI,KCX5BkK,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACX2N,QAAS,CACP7E,OAAQ,eACRtN,gBAAiB7C,KAAOM,UACxB6C,QAAS,OAEXwwC,iBAAiB,cACfpsC,QAAS,OACTC,cAAe,MACfI,WAAY,SACZvF,SAAU,eACT1C,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BD,eAAgB,gBAChBD,IAAK,UACLlE,MAAO,OACP4M,OAAQ,sBAGZ9J,QAAM,GACJjF,MAAOpB,KAAOiD,qBADV,eAEHtD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAHL,eAKH5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,aANP,GASN4kD,cAAc,cACZ9gD,WAAY,SACZ,SAAU,CACR,MAAO,CACL9E,MAAOpB,KAAO2C,SAGjBhD,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGXipB,aAAc,CACZnqB,SAAU,OACVQ,gBAAiBlD,EAAME,QAAQ5W,MAAM8W,KACrC6C,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,MACzCqB,MAAOpB,KAAO2C,MACduD,WAAY,UACZ,UAAU,cACRrD,gBAAiB7C,KAAO2C,MACxBvB,MAAOzB,EAAME,QAAQ5W,MAAM8W,MAC1BJ,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B9E,gBAAiBlD,EAAME,QAAQ5W,MAAM8W,KACrC6C,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,MACzCqB,MAAOpB,KAAO2C,QAGlB,iBAAiB,cACfE,gBAAiBlD,EAAME,QAAQ5W,MAAM8W,KACrC6C,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,MACzCqB,MAAOpB,KAAO2C,MACdQ,QAAS,GACTd,SAAU,OACVmB,OAAQ,QACP7D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B9E,gBAAgB,GAAD,OAAKlD,EAAME,QAAQ5W,MAAM8W,KAAzB,eACfoD,QAAS,MAIf8jD,aAAc,CACZ5kD,SAAU,WACVjB,MAAOpB,KAAO2C,MACduD,WAAY,UACZ,iBAAkB,CAChB1C,OAAQ,SAGZ0jD,aAAc,CACZ3jD,MAAO,OACPnC,MAAOpB,KAAO2C,MACduD,WAAY,QA8JHihD,OAnJf,YAI+B,IAAD,IAH5Br+D,EAG4B,EAH5BA,cACA4tC,EAE4B,EAF5BA,iBACA0wB,EAC4B,EAD5BA,mBAEMv+C,EAAU1B,KACV6C,EAAWM,eACX7gB,EAAW4uB,cACX1e,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1D0tD,EAA8B9uC,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,YACtEgV,EAA0BoqD,EAAarvD,gBACvCsvD,EAAiBX,KAEjBp+D,EAAoCgwB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMrR,iBATtD,EAUkBsrB,oBAAkB,GAVpC,oBAUrB0zC,EAVqB,KAUJC,EAVI,OAW0B3zC,oBAAkB,GAX5C,oBAWrBpf,EAXqB,KAWAgzD,EAXA,OAYoB5zC,oBAAkB,GAZtC,oBAYrB6zC,EAZqB,KAYHC,EAZG,OAa0B9zC,qBAb1B,oBAarB+zC,EAbqB,KAaAC,EAbA,KAetBtzC,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAChDmgD,EAAiC,UAAGnuD,EAAKpS,eAAR,iBAAG,EAAcM,gBAAjB,aAAG,EAAwBgvC,0BAC5DkxB,EACJx/D,EAAcqM,uBAAyBrM,EAAckM,oBACjDuzD,EACJz/D,EAAcmM,yBAA0E,OAA/CnM,EAAcoM,6BACnDszD,EACJ1/D,EAAcuM,2BAA8E,OAAjDvM,EAAcwM,+BACrDmzD,EACJ3/D,EAAcuM,2BAA6BvM,EAAcmM,wBACrDyzD,EACJd,EAAaz8D,sBAAmE,OAA3Cy8D,EAAa/uD,0BAC9C8vD,EAAsBf,EAAaz8D,qBACnCy9D,EAAaH,GAAkCE,EAErD,OAAKnrD,EA6CH,sBAAKgM,UAAWJ,EAAQ8qC,iBAAxB,WACIp/B,GACA,mCACE,cAACzK,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,GAAU,IACzBf,UAAWJ,EAAQxC,OAJrB,sBAUHpJ,EAAQqrD,aAAerrD,EAAQvX,SAAWvF,GAAkBkd,WAC3D,sCACIkX,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,WAAWC,UAAQ,IAClF,cAAClM,GAAA,EAAD,CACET,QAAQ,YACRa,kBAAgB,EAChBH,QAAS,kBAAM49C,GAAoB,IACnC1+C,UAAS,UAAKJ,EAAQ2jB,aAAb,YAA8BjY,EAAkC1L,EAAQq+C,aAA/Br+C,EAAQ2jB,cAC1DtZ,SAAUq0C,EALZ,SAOGA,EAAkB,cAACtxC,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,qBAIzE0mD,GACC,sCACI7qD,EAAQqrD,cAAgB/zC,GACxB,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,WAAWC,UAAQ,IAEtE,cAAClM,GAAA,EAAD,CACET,QAAQ,YACRjI,MAAM,UACN2I,QA5DuB,WAC/B09C,GAAuB,GACvBI,EAAuB,UAEnBP,EACFF,EAAmBE,GAEnB5wB,EAAiBz5B,EAAQ7B,KAsDnB6N,UAAS,UAAKJ,EAAQxC,OAAb,YAAwBkO,EAAkC1L,EAAQq+C,aAA/Br+C,EAAQo+C,cACpD/zC,SAAUze,EALZ,SAOGszD,EACC,cAAC9xC,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAElC,gCAKR,cAAC,GAAD,CACEiP,KACGk3C,GAAmBY,GACnB1zD,IAAwBwzD,GAA8BD,GAEzDvjE,QAlEkB,WACtB,OAAQmjE,GACN,IAAK,SACH,OAAOQ,EAAsB,+BAAiC,4BAChE,IAAK,SACH,OAAOF,EACH,0CACA,oCACN,QACE,MAAO,uBAyDEK,GACTh4C,YAxFa,WAIuB,IAAD,OAHvCi3C,GAAmB,GACnBC,GAAuB,GAEnBJ,EAAaz8D,wBACfnB,EAASb,GAAWqU,EAAQ7B,GAAG/R,WAAZ,oBAAwBsQ,EAAKpS,eAA7B,iBAAwB,EAAcM,gBAAtC,aAAwB,EAAwBuT,UAAhD,aAAsDha,IACzEumE,GAAoB,KAmFlB1mE,KAAMonE,EAAavoE,GAAO4wB,QAAU5wB,GAAO05B,QAE7C,cAAC,GAAD,CACEnJ,KAAMq3C,EACNtvC,QAASuvC,EACTljE,QAAQ,mDACRioC,aArGoB,WACxB86B,GAAmB,GACnB1+D,EAAcmU,EAAQ1T,kBACtBs+D,EAAuB,WAmGnBl7B,iBAAiB,gBACjBE,eAAgB06B,OA1Gb,cAAC,GAAD,KC3HIiB,OAvBf,WACE,OACE,sBAAKjlD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBACEC,EAAE,wLACFvM,KAAK,UACLolD,YAAY,QAEd,mBAAGlxB,SAAS,wBAAZ,SACE,sBACE3nB,EAAE,mmCACFvM,KAAK,cAGT,+BACE,0BAAUjI,GAAG,kBAAb,SACE,sBAAMmI,MAAM,UAAUC,OAAO,UAAUH,KAAK,QAAQkD,UAAU,uCCdlEmiD,GAA0C,CAC9CC,KAAM,uBACNC,KAAM,uBACNC,KAAM,uBACNC,KAAM,uBACNC,MAAO,wBACPC,SAAU,2BACVC,MAAO,wBACPC,KAAM,uBACNC,KAAM,uBACNC,SAAU,2BACVC,IAAK,sBACLC,SAAU,4BACVC,IAAK,sBACLC,KAAM,uBACNC,UAAW,4BACXC,WAAY,6BACZC,WAAY,6BACZC,SAAU,6BAGNC,GAAuB,SAACnoE,GAK5B,OAJcA,EACXzD,MAAM,KACNuc,KAAI,SAACsvD,GAAD,OAAWA,EAAKC,MAAM,kBAAoBD,EAAKjO,cAAgBiO,EAAKtqE,iBAGxEgb,KAAI,SAACsvD,GAAD,MAAoB,OAATA,GAA0B,SAATA,EAAkBA,EAAOA,EAAKE,OAAO,GAAGnO,cAAgBiO,EAAK7uB,MAAM,MACnGgvB,KAAK,MAiDGC,GA/Be,SAACxoE,GAC3B,IAAKA,GAAmC,YAAzBA,EAAOm6D,cACpB,OACE,qCACE,cAAC,GAAD,IACA,yDAKN,IAAMsO,EAzBgB,SAACzoE,GACvB,IAAM0oE,EAAgB1oE,EAAOjC,OAAOo8D,cAEpC,OAAQuO,GACN,IAAK,uCACL,IAAK,OACH,MAAO,OACT,IAAK,8CACH,MAAO,QACT,IAAK,UACL,QACE,OAAOA,GAccC,CAAgB3oE,GACnC4oE,EAAU5B,GAAgByB,GAC1BI,EAAoB,+BAAOV,GAAqBnoE,KAEtD,OAAI4oE,EAEA,qCACE,qBAAKphD,IAAKohD,EAASnhD,IAAKznB,IACvB6oE,KAML,qCACE,cAAC,GAAD,IACCA,MCtEDpjD,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXgmB,MAAI,GACF9lB,QAAS,OACTK,WAAY,SACZrE,MAAO,OACP4pB,aAAc,gBACdzlB,eAAgB,gBAChBI,aAAc,YANZ,eAODnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WARf,eAUF,kBAAmB,CACjBD,QAAS,OACTK,WAAY,SACZjC,UAAW,QACX,SAAU,CACR4B,QAAS,OACTK,WAAY,UAEd,QAAS,CACP5C,YAAa,YACbxB,OAAQ,SACRD,MAAO,iBArBT,eAwBF,eAAgB,CACdgE,QAAS,OACTK,WAAY,QACZjC,UAAW,UA3BX,eA6BDhG,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BC,WAAY,aACZH,IAAK,SACL,kBAAmB,CACjB9B,UAAW,UAjCb,GAqCJ/L,MAAM,cACJ2N,QAAS,OACTK,WAAY,SACZrE,MAAO,OACP4pB,aAAc,gBACdzlB,eAAgB,gBAChBI,aAAc,YACbnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,QAGnBa,SAAU,CACRjH,MAAOpB,KAAOM,UACdO,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,GAEVq6C,UAAW,CACTppD,MAAOpB,KAAOg4C,UACdn3C,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1B2O,OAAQ,QAsBCs6C,OAVf,YAA+E,IAA1DhiD,EAAyD,EAAzDA,MAAOiiD,EAAkD,EAAlDA,OAAQC,EAA0C,EAA1CA,QAASC,EAAiC,EAAjCA,cACrC/hD,EAAU1B,KAChB,OACE,sBAAK8B,UAAW0hD,EAAU9hD,EAAQjP,MAAQiP,EAAQwkB,KAAlD,UACE,mBAAGpkB,UAAS,UAAKJ,EAAQR,SAAb,YAAyBuiD,GAArC,SAAuDniD,IACvD,mBAAGQ,UAAWJ,EAAQ2hD,UAAtB,SAAkCE,GAAkB,UCtE3CG,OAXf,WACE,OACE,qBAAKtnD,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACEC,EAAE,88EACFvM,KAAK,eCGP8D,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXuN,SAAU,CACRxT,MAAOpB,KAAOM,UACdiD,MAAO,OACPC,OAAQ,QAEVsnD,eAAgB,CACdvjD,QAAS,OACTC,cAAe,MACfI,WAAY,SACZH,IAAK,gBA0EIsjD,OAjEf,YAAiE,IAApC9tD,EAAmC,EAAnCA,QACrB4L,EAAU1B,KACVxH,EAAQmJ,eACRyL,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAHQ,EAIxBkM,oBAAkB,GAJM,oBAIvDmQ,EAJuD,KAI1CC,EAJ0C,KAKxDC,EAAuDzB,iBAAO,MAE9D0B,EAAqB,SAACxR,GACtBqR,GAAeE,EAAWjB,UAAYiB,EAAWjB,QAAQmB,SAASzR,EAAME,SAC1EoR,GAAe,IAInBnH,qBAAU,WACR,GAAIvI,EAEF,OADA8P,SAASC,iBAAiB,YAAaH,GAChC,WACLE,SAASE,oBAAoB,YAAaJ,MAI7C,CAAC5P,EAAUyP,IAEd,IAOMQ,EAA8B,CAClCC,cAAeT,EAAc,OAAS,OACtCzgB,MAAO,WAGT,OACE,cAAC,GAAD,CACEkF,MACE,sBAAKQ,UAAWJ,EAAQiiD,eAAxB,UACE,oDACA,cAACl1C,GAAA,EAAD,CACEnN,MAAM,0CACN4H,KAAMkE,EAAWyP,OAAc5iC,EAC/By0B,qBAAsBtB,EACtBoQ,qBAAsBpQ,EACtBqQ,qBAAsBrQ,EACtBpD,QAAS,kBAAM8S,GAAe,IAE9BY,YAAa,CAAErT,MAAOgT,GARxB,SAUE,sBACEza,QA5BgB,SAACoZ,GAC3BA,EAAEC,kBACE7O,GACF0P,GAAgBD,IA0BRjB,IAAKxO,EAAW,SAACwO,GAAD,OAAUmB,EAAWjB,QAAUF,QAAO3hC,EACtD6nB,UAAWJ,EAAQ+L,SAHrB,SAKE,cAAC,GAAD,OARGL,EAAW,SAAW,cAajCm2C,OAAM,OAAEztD,QAAF,IAAEA,OAAF,EAAEA,EAAS6tD,kBCvBRE,OA7Cf,YAU6B,IAT3B9tD,EAS0B,EAT1BA,OACAoiC,EAQ0B,EAR1BA,YACA55C,EAO0B,EAP1BA,OACAnG,EAM0B,EAN1BA,KACA0rE,EAK0B,EAL1BA,gBACAC,EAI0B,EAJ1BA,iBACAC,EAG0B,EAH1BA,kBACAC,EAE0B,EAF1BA,WACAx4D,EAC0B,EAD1BA,MAEMy4D,EAAuBvmC,GAAeC,iBAAiB7nB,EAAO7b,UAC9DiqE,EAAkCtsB,GAAaC,kBAAkBK,EAAYliC,OAC7EmuD,EAAkBvsB,GAAaC,kBAAkB/hC,EAAOE,MAAQkiC,EAAYliC,OAC5EouD,EAA6BxsB,GAAaC,kBAAkB/hC,EAAOE,OAEzE,OACE,qCACE,sBAAK6L,UAAWmiD,EAAhB,4BAAwCx4D,GAAxC,OACA,cAAC,GAAD,CACE6V,MAAM,SACNiiD,OACE,cAAC,GAAD,CACE13C,MAAO+lB,GAAwBG,cAAcxzC,GAC7C0b,MAAO23B,GAAwBI,sBAAsBzzC,KAGzDilE,SAAO,IAET,cAAC,GAAD,CAAWliD,MAAM,UAAUiiD,OAAQnrE,GAAQ,oBAC3C,cAAC,GAAD,CACEkpB,MAAM,UACNiiD,OACE,sBAAKzhD,UAAWgiD,EAAhB,UACE,mBAAGhiD,UAAWiiD,EAAd,mBAAoCG,EAApC,YAA4DG,KAC5D,mBACEviD,UAAWkiD,EADb,mBAEKE,EAFL,YAE6BC,EAF7B,cAEkED,EAFlE,YAE0FE,EAF1F,qBCnCNpkD,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXwvC,UAAW,CACT1mC,OAAQ,EACR/N,QAAS,WACTmF,QAAS,OACTC,cAAe,SACfI,WAAY,QACZF,eAAgB,gBAChBtG,MAAOpB,KAAOM,WAEhBmrD,WAAY,CACVrqD,MAAOpB,KAAOiD,qBAEhByoD,WAAW,cACTnkD,QAAS,OACTC,cAAe,SACfI,WAAY,WACZF,eAAgB,YACf/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BD,eAAgB,aAChBE,WAAY,eAGhBoN,QAAS,CACPlN,aAAc,OACdtE,OAAQ,MACRD,MAAO,QAETooD,kBAAmB,CACjBvqD,MAAOpB,KAAOiD,oBACdpC,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,oBAC1BsG,aAAc,YAEhB5K,OAAO,cACLqK,QAAS,OACTK,WAAY,WACZJ,cAAe,MACf02B,UAAW,WACX,MAAO,CACL,gBAAiB,CACfl5B,YAAa,cAGjB,MAAO,CACL3D,WAAYze,OAAOod,KAAOwB,oBAC1BJ,MAAOpB,KAAOwa,cACdrK,OAAQ,EACRtP,SAAU,cAEXlB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9Bu2B,UAAW,aACX,OAAQ,CACNr9B,SAAU,UAIhBk3C,aAAa,cACXpyC,UAAW,QACXwK,OAAQ,EACR/O,MAAOpB,KAAOsnC,SACdzmC,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,qBACzB7B,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B9G,SAAU,YAGd+qD,YAAa,CACX1tB,UAAW,cAEb2tB,kBAAmB,CACjBhrD,SAAU,UACVO,MAAOpB,KAAO8rD,SACdnmD,UAAW,QACXwK,OAAQ,GAEV47C,qBAAsB,CACpBxkD,QAAS,OACTK,WAAY,SACZ,QAAS,CACPpE,OAAQ,SAGZvI,eAAa,GACXsM,QAAS,OACTK,WAAY,SACZF,eAAgB,YAHL,eAIV/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BC,WAAY,QACZJ,cAAe,WANN,eAQX,MAAO,CACL2I,OAAQ,IATC,eAWX,QAAS,CACP5M,MAAO,OACPC,OAAQ,WAbC,GAgBbwoD,WAAY,CACVzkD,QAAS,OACTK,WAAY,SACZF,eAAgB,WAChBD,IAAK,UACL,SAAU,CACR0I,OAAQ,kBAmKD87C,OA7Jf,WAAiC,IAAD,gBACxBpjD,EAAU1B,KACVxN,EAAkB4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC1DsD,EAA0Bsb,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,SAAS+P,mBAC3Euc,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAChDukD,GACG,OAAPjvD,QAAO,IAAPA,OAAA,EAAAA,EAASvX,UAAWvF,GAAkBqd,WAAmB,OAAPP,QAAO,IAAPA,OAAA,EAAAA,EAASvX,UAAWvF,GAAkBkd,UAE1F,IAAKJ,EACH,OAAO,cAAC,GAAD,IAGT,IAAMkvD,EACc,OAAjBxyD,EAAKpS,SAA8C,OAA1BoS,EAAKpS,QAAQM,UAAqB8R,EAAKpS,QAAQM,SAASyW,iBAClF,UAAA3E,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WAChCqyD,EAAkBtnC,GAAeC,iBAAiB9nB,EAAQC,OAAO7b,UACjEgrE,EAAgBpvD,EAAQC,OAAOE,QAAS,UAAAH,EAAQgqC,oBAAR,eAAsB/pC,OAAOE,QAAS,GAC9EkvD,EAAyBttB,GAAaC,kBAAkBotB,GACxDE,EAAmBtvD,EAAQqiC,YAAYliC,QAAS,UAAAH,EAAQgqC,oBAAR,eAAsB3H,YAAYliC,QAAS,GAC3FovD,EAAuBxtB,GAAaC,kBAAkBstB,GACtDE,EAAaztB,GAAaK,OAAOgtB,EAAe,CACpD/sB,YAAaitB,IAGf,OACE,eAACpyC,GAAA,EAAD,CAAOlR,UAAWJ,EAAQguC,UAA1B,UACE,cAAC,GAAD,CACEpuC,MAAM,SACNiiD,OACE,cAAC,GAAD,CACE13C,MAAO+lB,GAAwBG,cAAcj8B,EAAQvX,QACrD0b,MAAO23B,GAAwBI,sBAAsBl8B,EAAQvX,UAGjEilE,SAAO,IAERuB,GACC,cAAC,GAAD,CACEzjD,MAAM,mBACNiiD,OAAQ,mBAAGzhD,UAAWJ,EAAQ4iD,WAAtB,mBAAmCxuD,EAAQe,uBAA3C,QAA8D,6BAGzEuW,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CAAWvM,MAAM,wBAAwBiiD,OAAQ/kC,GAAWI,oBAAoB9oB,EAAQ4oB,QACxF,cAAC/P,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC5B,cAAC,GAAD,CAAWvM,MAAM,iBAAciiD,OAAQztD,EAAQR,cAC9C8X,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CACEvM,MAAM,uCACNiiD,OAAQztD,EAAQyvD,iBAAmB/mC,GAAWI,oBAAoB9oB,EAAQyvD,kBAAoB,MAE/Fn4C,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CACEvM,MAAM,eACNiiD,OACE,qCACE,+BAAO5rB,GAAmBC,QAAQ9hC,EAAQd,YACzC2iC,GAAmBlZ,aAAa3oB,EAAQd,eAI/C,cAAC,GAAD,CAAWsM,MAAM,eAAeiiD,OAAQlrB,GAAkBC,kBAAkBxiC,EAAQhc,QACpF,cAAC60B,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC3B/X,EAAQgqC,cACP,qCACE,cAAC,GAAD,CACEr0C,MAAO,EACPsK,OAAQD,EAAQC,OAChBoiC,YAAariC,EAAQqiC,YACrB55C,OAAQuX,EAAQvX,OAChBnG,MAAM,UAAAoa,EAAKpS,eAAL,mBAAcM,gBAAd,eAAwB8kB,aAAc,GAC5Cy+C,WAAYviD,EAAQ8iD,kBACpBV,gBAAiBpiD,EAAQ6iD,WACzBP,kBAAmBtiD,EAAQgjD,kBAC3BX,iBAAkBriD,EAAQkvC,eAE5B,cAACjiC,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC5B,cAAC,GAAD,CACEpiB,MAAO,EACPsK,OAAQD,EAAQgqC,aAAa/pC,OAC7BoiC,YAAariC,EAAQgqC,aAAa3H,YAClC55C,OAAQuX,EAAQgqC,aAAavhD,OAC7BnG,MAAM,UAAA0d,EAAQ2hC,oBAAR,mBAAsB+tB,sBAAtB,eAAsCptE,OAAQ,GACpD6rE,WAAYviD,EAAQ8iD,kBACpBV,gBAAiBpiD,EAAQ6iD,WACzBP,kBAAmBtiD,EAAQgjD,kBAC3BX,iBAAkBriD,EAAQkvC,eAE5B,cAACjiC,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,aAGhC,cAAC,GAAD,CAAWvM,MAAM,SAASiiD,OAAQztD,EAAQ7U,aAAeq0D,OAAOx/C,EAAQ7U,cAAgB,MACvF6U,EAAQsqB,eAAiB1mC,GAAiBslC,MACzC,cAAC,GAAD,CAAW1d,MAAM,aAAaiiD,OAAQrjC,GAAmBC,oBAAoBrqB,EAAQsqB,gBAEvF,cAAC,GAAD,CACE9e,MAAM,gBACNmiD,cAAe/hD,EAAQ+iD,YACvBlB,OACE,sBAAKzhD,UAAWJ,EAAQ6iD,WAAxB,UACE,sBAAKziD,UAAWJ,EAAQ3L,OAAxB,UACE,4BAAIkvD,IACJ,4BAAIE,OAEN,mBACErjD,UAAWJ,EAAQkvC,aADrB,mBAEKqU,EAFL,YAEwBI,EAFxB,cAEkDJ,EAFlD,YAEqEK,EAFrE,iBAMN,cAAC32C,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC3B/X,EAAQd,WAAanc,GAAa0S,UACjC,cAAC,GAAD,CAAW+V,MAAM,aAAaiiD,OAAQztD,EAAQ2vD,mBAEhD,cAAC,GAAD,CAAWnkD,MAAM,cAAciiD,OAAQztD,EAAQ4vD,iBAC/C,cAAC/2C,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC5B,cAAC,GAAD,CAAWvM,MAAM,gCAA6BiiD,OAAQztD,EAAQ1T,mBAC7DgrB,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CAAWvM,MAAM,+BAAyBiiD,OAAQztD,EAAQ6vD,gBACzDv4C,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CAAWvM,MAAM,SAASiiD,OAAQztD,EAAQ8vD,SACzCx4C,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CAAWvM,MAAM,sBAAmBiiD,OAAQztD,EAAQ1T,mBACnDgrB,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CACEvM,MAAM,gBACNiiD,OACE,sBAAKzhD,UAAWJ,EAAQ5N,cAAxB,UACE,qBAAKgO,UAAWJ,EAAQmjD,WAAxB,SACG9B,GAAqCjtD,EAAQ+uD,eAE9Cz3C,GAAY,cAACuB,GAAA,EAAD,CAASC,YAAY,WAAWC,UAAQ,EAACxE,MAAO,CAAErB,OAAQ,cACxE,sBAAKlH,UAAWJ,EAAQkjD,qBAAxB,UACE,qBAAK7iD,IAAKjM,EAAQiqC,cAAe/9B,IAAKlM,EAAQk2B,aAC9C,8CAAOl2B,EAAQ89B,UAAUE,OAAO,cAKvCh+B,EAAQd,WAAanc,GAAa0S,UACjC,qCACG6hB,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CAAWvM,MAAM,cAAciiD,OAAQztD,EAAQL,SAC9C2X,GAAY,cAACuB,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UACzC,cAAC,GAAD,CAAmB/X,QAASA,OAG/BkvD,GACC,qCACE,cAACr2C,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC5B,cAAC,GAAD,CAAWvM,MAAM,mBAAgBiiD,OAAQztD,EAAQ+vD,uBCpRrD7lD,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXmN,YAAY,cACVjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,OACPuE,aAAc,OACd,WAAW,gBACRnI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BvF,QAAS,uBAGZzC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,gBAyCPmlD,OA7Bf,YAI8B,IAH5BnkE,EAG2B,EAH3BA,cACA4tC,EAE2B,EAF3BA,iBACA0wB,EAC2B,EAD3BA,mBAEMv+C,EAAU1B,KACV6C,EAAWM,eACXiK,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAEtD,OACE,sBAAKsB,UAAWJ,EAAQ2L,YAAxB,UACE,cAAC,GAAD,CAAa/L,MAAM,kBAAnB,UACI8L,GACA,cAAC,GAAD,CACEzrB,cAAeA,EACf4tC,iBAAkBA,EAClB0wB,mBAAoBA,MAIzB7yC,GACC,cAACzK,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAY2I,QAAS,kBAAMC,GAAU,IAAtE,wBCjDKkjD,GAAuB,CAClC9F,mB,6CACA1wB,iB,4FAGF,WAAgCvtC,GAAhC,SAAArE,EAAA,sEACe2B,GAAI,UAA2BM,GAAS,cAApC,oBAAiEoC,GAAa,IAC5FjE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WAAkCq+D,GAAlC,SAAAxiE,EAAA,sEACe2B,GAAI,UAAaM,GAAS,cAAtB,mBAAkDugE,GAAkB,IAClFpiE,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,sBCLO,IAaDwL,GAAsB,iBAAoC,CAC9DxT,KAAMrI,KAGF8b,GAA0B,SAC9By4D,GAD8B,MAEG,CACjClsE,KAAMpI,GACNgc,aAAcs4D,IAGVC,GAAwB,SAACnkE,GAAD,MAAiD,CAC7EhI,KAAMnI,GACNmQ,UAiBI2L,GAAwB,SAAC0yD,GAAD,MAA4D,CACxFrmE,KAAMlI,GACNuuE,mBAGIxyD,GAA4B,iBAAsC,CACtE7T,KAAMjI,KAGFq0E,GAA0B,SAACpkE,GAAD,MAAmD,CACjFhI,KAAMhI,GACNgQ,UCLaqkE,OAlDf,WACE,IAAM7jE,EAAW4uB,cACX9D,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OAEhDxe,EADSonD,eACUpnD,UACnBokE,EAAgBh1C,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,YACxD7I,EAAam5B,aAAY,SAAC3e,GAAD,yBAAsBA,EAAMD,KAAKpS,eAAjC,iBAAsB,EAAoBM,gBAA1C,aAAsB,EAA8BuT,MAC7E6B,EAAUswD,EAAcv1D,gBAExBw1D,EAA2B,SAACjkE,GAC5B0T,GAASxT,EvOoNf,SAACF,EAA0BnK,GAA3B,OAAkD,SAACqK,GAGjD,OAFAA,EAASkB,MAEFjC,GAAgBI,cAAcS,EAAkBnK,GAAY8F,MACjE,SAACF,GACCyE,EAASmB,GAAqBrB,OAEhC,SAACN,GACCQ,EAASoB,GAAmB5B,QuO5NVH,CAAcS,EAAkB0T,EAAQ7d,cAG1DquE,EAAyB,SAACtkE,GAC9BM,EDb4B,SAACN,GAAD,OAAuB,SAACM,GAGtD,OAFAA,EAASgL,MAEFy4D,GAAqBx2B,iBAAiBvtC,GAAWjE,MACtD,SAACF,GACCyE,EAASiL,GAAwB1P,OAEnC,SAACiE,GACCQ,EAAS2jE,GAAsBnkE,QCKxBytC,CAAiBvtC,KAGtBukE,EAA2B,SAACpG,GAChC79D,EDaF,SAAC69D,GAAD,OAA4B,SAAC79D,GAG3B,OAFAA,EAASmL,GAAsB0yD,IAExB4F,GAAqB9F,mBAAmBE,GAAgBpiE,MAC7D,SAACF,GACCyE,EAASqL,SAEX,SAAC7L,GACCQ,EAAS4jE,GAAwBpkE,QCrB5Bm+D,CAAmBE,KAO9B,OAJAxqC,qBAAU,WACJ3zB,GAAWM,EAASb,GAAWO,EAAD,OAAY/J,QAAZ,IAAYA,SAAcgC,MAC3D,CAAChC,EAAYqK,EAAUN,IAEtBokE,EAAc/iE,eAAuB,cAAC,GAAD,IAGvC,mCACGyS,GACC,sBAAKgM,UAAU,mBAAf,UACE,cAAC,GAAD,CACEngB,cAAe0kE,EACf92B,iBAAkB+2B,EAClBrG,mBAAoBsG,IAEtB,cAAC,GAAD,IACCn5C,GACC,cAAC,GAAD,CACEzrB,cAAe0kE,EACf92B,iBAAkB+2B,EAClBrG,mBAAoBsG,UCrCnBC,OAdf,YAAmD,IAAD,IAA/BvsD,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIxB,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAO5X,MACxBsG,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBAAK1F,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,SACE,sBACEC,EAAE,k0BACFvM,KAAMjC,OCPR+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXumD,aAAc,CACZp7C,SAAU,QACV24B,OAAQ,OACR53B,MAAO,OACP1Q,gBAAiBlD,EAAME,QAAQC,QAAQC,KACvCqB,MAAOzB,EAAME,QAAQC,QAAQ+tD,aAC7BtqD,MAAO,WACPC,OAAQ,WACRtB,aAAc,MACdU,OAAQ,OACR0C,OAAQ,UACRwoD,OAAQ,KAEVC,OAAQ,CACNxmD,QAAS,aAuCAymD,OAlCf,WACE,IAAMnlD,EAAU1B,KADS,EAEW0M,oBAAS,GAFpB,oBAElBo6C,EAFkB,KAENC,EAFM,KAwBzB,OApBApxC,qBAAU,WACR,IAAMqxC,EAAe,WACfvwE,OAAOwwE,QAAU,IACnBF,GAAc,GAEdA,GAAc,IAMlB,OAFAtwE,OAAO0mC,iBAAiB,SAAU6pC,GAE3B,WACLvwE,OAAO2mC,oBAAoB,SAAU4pC,MAEtC,IAOD,wBACEllD,UAAS,UAAKJ,EAAQ+kD,aAAb,aAA8BK,GAAcplD,EAAQklD,QAC7DhkD,QAPsB,WACxBnsB,OAAO2jC,SAAS,CAAEvd,IAAK,EAAGqqD,SAAU,YAIpC,SAIE,cAAC,GAAD,OCjDAlnD,GAAYC,cAAW,SAACzH,GAAD,iBAC3B0H,aAAa,CACX26B,OAAK,oBACFriC,EAAM8B,YAAYsG,GAAG,MAAQ,CAC5BR,QAAS,SAFR,gCAIa,iBAJb,4BAKS,UALT,yBAMM,uBANN,wBAOK,QAPL,2BAQQvH,KAAOyC,WARf,GAUL6rD,oBAAkB,oBACf3uD,EAAM8B,YAAYsG,GAAG,MAAQ,CAC5BL,eAAgB,kBAFF,yBAIP,QAJO,eAKhB,MAAO,CACLiN,aAAc,QANA,GASlB45C,eAAgB,CACd7mD,eAAgB,gBAChBH,QAAS,OACThE,MAAO,OACPqE,WAAY,cAEd4mD,gBAAiB,CACfjnD,QAAS,OACTG,eAAgB,gBAChBE,WAAY,WACZ,MAAO,CACL+M,aAAc,QAGlBK,SAAO,oBACJrV,EAAM8B,YAAYsG,GAAG,MAAQ,CAC5B0mD,WAAY,WAFT,wBAIG,eAJH,GAMPhyD,YAAa,CACX4E,WAAYze,OAAOod,KAAOsB,kBAC1BT,SAAU,WACVO,MAAOpB,KAAOM,WAEhBouD,YAAa,CACX7tD,SAAU,WACVQ,WAAYze,OAAOod,KAAOwB,0BAwEjBmtD,OAzDf,YAQgC,IAAD,QAP7BlyD,EAO6B,EAP7BA,YACAmyD,EAM6B,EAN7BA,YACAC,EAK6B,EAL7BA,UACAC,EAI6B,EAJ7BA,WACAC,EAG6B,EAH7BA,SACA3tD,EAE6B,EAF7BA,MACA6H,EAC6B,EAD7BA,UAEMtJ,EAAQmJ,eACRD,EAAU1B,KAEV6nD,EAAervD,EAAME,QAAQuB,GAC7B6tD,EAAqB,YAAV7tD,EAAsBzB,EAAME,QAAQ5a,KAAK6a,QAAUkvD,EAAajvD,KAEjF6uD,EAAW,UAAGA,SAAH,QAAkB,EAC7BC,EAAS,UAAGA,SAAH,QAAgB,EACzBC,EAAU,UAAGA,SAAH,QAAiB,EAC3BC,EAAQ,UAAGA,SAAH,QAAe,EAEvB,IAAMxtE,EAAQy9C,GAAaC,kBAAkB2vB,GACvCM,EAAMlwB,GAAaC,kBAAkB4vB,GAE3C,OACE,eAAC10C,GAAA,EAAD,CACE9Q,QAAQ,WACR+Q,UAAW,EACXnR,UAAS,UAAKJ,EAAQm5B,MAAb,YAAsB/4B,GAC/BuI,MAAO,CAAE3O,gBAAiB7C,KAAOmvD,OAJnC,UAME,qBAAKlmD,UAAWJ,EAAQylD,mBAAxB,SACE,cAACllD,GAAA,EAAD,CAAYH,UAAWJ,EAAQpM,YAA/B,SAA6CA,MAE/C,cAACqZ,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,UAC5B,sBAAK/L,UAAWJ,EAAQ0lD,eAAxB,UACE,sBAAKtlD,UAAWJ,EAAQ2lD,gBAAxB,UACE,cAACplD,GAAA,EAAD,CAAYC,QAAQ,KAAKmI,MAAO,CAAEpQ,MAAO6tD,GAAYhmD,UAAWJ,EAAQ6lD,YAAxE,eAGA,cAACtlD,GAAA,EAAD,CAAYC,QAAQ,KAAKmI,MAAO,CAAEpQ,MAAO6tD,GAAYhmD,UAAWJ,EAAQ6lD,YAAxE,SACGntE,OAGL,qBAAKiwB,MAAO,CAAEjO,MAAO,UACrB,sBAAK0F,UAAWJ,EAAQ2lD,gBAAxB,UACE,cAACplD,GAAA,EAAD,CAAYC,QAAQ,KAAKmI,MAAO,CAAEpQ,MAAO6tD,GAAYhmD,UAAWJ,EAAQ6lD,YAAxE,iBAGA,cAACtlD,GAAA,EAAD,CAAYC,QAAQ,KAAKmI,MAAO,CAAEpQ,MAAO6tD,GAAYhmD,UAAWJ,EAAQ6lD,YAAxE,SACGQ,cChHP/nD,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX+nD,YAAY,cACVtnD,aAAc,OACdP,QAAS,OACTC,cAAe,SACfjE,MAAO,MACPqE,WAAY,cACXjI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGX8rD,cAAe,CACbl/C,OAAQ,eA0FCkN,OAjFGC,aAJM,SAAC1jB,GAAD,MAAuB,CAC7C3R,SAAU2R,EAAM3R,YAoFHo1B,EA9Ef,YAA+D,IAA7Bp1B,EAA4B,EAA5BA,SAC1B4gB,EAAU1B,KAEhB,OACE,qCACE,cAACq/C,GAAA,EAAD,CAAQ8I,MAAI,EAAZ,SACE,cAAC,GAAD,CACErmD,UAAWJ,EAAQumD,YACnBhuD,MAAM,UACN3E,YAAY,4BACZmyD,YACE3mE,EAAS6O,eAAeC,kBACpB9O,EAAS6O,eAAeC,kBAAkBC,oBAC1C,EAEN63D,UACE5mE,EAAS6O,eAAeC,kBACpB9O,EAAS6O,eAAeC,kBAAkBG,aAC1C,EAEN43D,WACE7mE,EAAS6O,eAAeC,kBACpB9O,EAAS6O,eAAeC,kBAAkBE,mBAC1C,EAEN83D,SACE9mE,EAAS6O,eAAeC,kBACpB9O,EAAS6O,eAAeC,kBAAkBI,YAC1C,MAIV,cAAC,GAAD,CACE8R,UAAWJ,EAAQumD,YACnBhuD,MAAM,UACN3E,YAAY,kBACZmyD,YACE3mE,EAAS6O,eAAeM,eACpBnP,EAAS6O,eAAeM,eAAeJ,oBACvC,EAEN63D,UACE5mE,EAAS6O,eAAeM,eAAiBnP,EAAS6O,eAAeM,eAAeF,aAAe,EAEjG43D,WACE7mE,EAAS6O,eAAeM,eACpBnP,EAAS6O,eAAeM,eAAeH,mBACvC,EAEN83D,SACE9mE,EAAS6O,eAAeM,eAAiBnP,EAAS6O,eAAeM,eAAeD,YAAc,IAGlG,cAAC,GAAD,CACE8R,UAAWJ,EAAQumD,YACnBhuD,MAAM,QACN3E,YAAY,iBACZmyD,YACE3mE,EAAS6O,eAAeO,eACpBpP,EAAS6O,eAAeO,eAAeL,oBACvC,EAEN63D,UACE5mE,EAAS6O,eAAeO,eAAiBpP,EAAS6O,eAAeO,eAAeH,aAAe,EAEjG43D,WACE7mE,EAAS6O,eAAeO,eACpBpP,EAAS6O,eAAeO,eAAeJ,mBACvC,EAEN83D,SACE9mE,EAAS6O,eAAeO,eAAiBpP,EAAS6O,eAAeO,eAAeF,YAAc,UCzFlGgQ,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX+nD,YAAY,cACVtnD,aAAc,OACdP,QAAS,OACTC,cAAe,SACfjE,MAAO,MACPqE,WAAY,cACXjI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGXyR,QAAS,CACP7E,OAAQ,UAEVy9C,aAAc,CACZp7C,SAAU,QACV24B,OAAQ,OACR53B,MAAO,OACP1Q,gBAAiBlD,EAAME,QAAQC,QAAQC,KACvCqB,MAAOzB,EAAME,QAAQC,QAAQ+tD,aAC7BtqD,MAAO,WACPC,OAAQ,WACRtB,aAAc,MACdU,OAAQ,OACR0C,OAAQ,UACRwoD,OAAQ,KAEVplD,SAAU,CACRT,WAAY,aA8EHsnD,OApEf,YAAwE,IAoBrD,EApBMC,EAA8C,EAA9CA,SAAUC,EAAoC,EAApCA,aAC3B5mD,EAAU1B,KACVtpB,EAAWy6B,eACXtO,EAAWM,eACXriB,EAA0BswB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,YAElEuB,EAAoC,eAAtB3L,EAAS+H,SAYzBqiD,EAAgB,OAAGhgD,QAAH,IAAGA,OAAH,EAAGA,EAAUA,SASjC,OAPIuB,IACFy+C,GACU,OAARhgD,QAAQ,IAARA,GAAA,UAAAA,EAAU4O,yBAAV,eACIgE,QAAO,SAACoC,GAAD,OAAoB,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAASvX,UAAWvF,GAAkBqd,YAC3Dy9B,MAAM,EAAGu0B,KAAa,MAI3B,sBAAKvmD,UAAU,gBAAf,WACIzf,GACA,qCACE,cAAC,GAAD,IACA,cAAC4f,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAWJ,EAAQH,SAA5C,mCAKHzgB,EAAS2O,gBACR,cAAC,GAAD,IACEqxC,GAAoBA,EAAiB1pD,OAAS,EAChD,cAAC,KAAD,CACEiiE,QAASv4D,EAASoK,YAAcpK,EAASqK,UACzCjH,KA9BS,WACXokE,GACFA,KA6BIhP,WAAYx4D,EAASA,SAAWA,EAASA,SAAS1J,OAAS,EAC3DmiE,OAAQz4D,EAAS2O,iBAAmB64D,GAAgB,cAAC,GAAD,IACpDxmD,UAAWJ,EAAQmM,QALrB,SAOGizB,EAAiBztC,KAAI,SAACyC,GAAD,OACpB,qBAAsB8M,QAAS,WAvCvCC,EAAS,aAAD,OAuCmD/M,EAvCjC7B,IAAM,CAAExB,MAAO,CAAE1X,KAAMrE,EAAS+H,aAuClD,SACE,cAAC,GAAD,CAAaqX,QAASA,KADdA,EAAQ7B,SAMtB,cAAC,GAAD,CACEqN,OAAO,OAACxgB,QAAD,IAACA,OAAD,EAACA,EAAU4O,mBAA6C,0BAAzB,0BACtCpS,SACE,OAACwD,QAAD,IAACA,OAAD,EAACA,EAAU4O,mBAEP,yDADA,mEAKRrN,GAAe,cAAC,GAAD,QC3FR8tC,OApBf,YAAqD,IAAD,IAA/Bl2B,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAG1B,OAFA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAEvB,sBAAK1F,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,mBAAG4nB,SAAS,wBAAZ,SACE,sBACE3nB,EAAE,+nCACFvM,KAAMjC,MAGV,+BACE,0BAAUhG,GAAG,kBAAb,SACE,sBAAMmI,MAAM,KAAKC,OAAO,KAAKH,KAAK,kBCW7BqsD,OAxBf,YAAuD,IAAD,IAA/BtuD,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAI5B,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,iCACFgM,OAAQxa,EACRya,YAAY,IACZ8B,cAAc,QACdosB,eAAe,aCMR4lB,OAxBf,YAAwD,IAAD,IAA/BvuD,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAI7B,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,iCACFgM,OAAQxa,EACRya,YAAY,IACZ8B,cAAc,QACdosB,eAAe,aCRjB5iC,GAAYC,cAAW,SAACzH,GAAD,MAAY,CACvCiwD,WAAY,CACVroD,QAAS,OACTG,eAAgB,aAChBE,WAAY,SACZrD,UAAW5E,EAAMwuB,QAAQ,GACzB,QAAS,CACPhe,OAAQxQ,EAAMwuB,QAAQ,KAExB,6BAA8B,CAC5B/sB,MAAOmZ,KAAO5X,QAGlBktD,cAAe,CACbztD,QAAS,EACTmB,MAAO,UACPlB,SAAU,UACV,qBAAsB,CACpBkB,MAAO,YAGXusD,WAAY,CACVztD,SAAU,OACVjB,MAAOmZ,KAAOja,WAEhByvD,WAAY,CACVltD,gBAAiBlD,EAAME,QAAQC,QAAQC,KACvC,iBAAkB,CAChBqB,MAAM,GAAD,OAAKmZ,KAAO5X,SAGrBqtD,SAAU,CACR5tD,QAASzC,EAAMwuB,QAAQ,QAIrB8hC,GAAQ,SAAC/tE,EAAcC,GAI3B,IAJ+D,IAAxBtD,EAAuB,uDAAhB,EAC1C8f,EAAIzc,EACF+tE,EAAQ,GAEPtxD,GAAKxc,GACV8tE,EAAM51D,KAAKsE,GACXA,GAAK9f,EAGP,OAAOoxE,GAwEMC,OArEf,YAAsG,IAA1ExlB,EAAyE,EAAzEA,MAAqBr4C,GAAoD,EAAlE89D,aAAkE,EAApD99D,aAAa+9D,EAAuC,EAAvCA,aACtDvnD,EAAU1B,KAmCVkpD,EAzBkB,WACtB,IAAMC,EAAQ,GAId,GAAI5lB,EAFgB6lB,EAEK,CACvB,IAAMC,EAAYt/B,KAAKtlB,IAAI,EAAGvZ,EAAc,GACtCo+D,EAAUv/B,KAAK3lB,IAAIm/B,EAAQ,EAAGr4C,EAAc,GAClDi+D,EAAMj2D,KAAK,GACPm2D,EAAY,GACdF,EAAMj2D,KAAK,OAEb,IAAMq2D,EAAaT,GAAMO,EAAWC,GACpCH,EAAMj2D,KAAN,MAAAi2D,EAAK,aAASI,IACVD,EAAU/lB,EAAQ,GACpB4lB,EAAMj2D,KAAK,OAEbi2D,EAAMj2D,KAAKqwC,QAEX4lB,EAAMj2D,KAAN,MAAAi2D,EAAK,aAASL,GAAM,EAAGvlB,KAGzB,OAAO4lB,EAGiBK,GAAkBn2D,KAAI,SAACxb,GAC/C,MAAa,QAATA,EAEA,sBAAiBiqB,UAAWJ,EAAQmnD,SAApC,SACGhxE,GADQA,GAMb,cAAC8qB,GAAA,EAAD,CAEEC,QAAS,kBAAMqmD,EAAapxE,IAC5Bk0B,SAAU7gB,IAAgBrT,EAC1BiqB,UAAS,UAAKJ,EAAQinD,WAAb,YAA2Bz9D,IAAgBrT,EAAO6pB,EAAQknD,WAAa,IAJlF,SAMG/wE,GALIA,MAUX,OACE,sBAAKiqB,UAAWJ,EAAQ+mD,WAAxB,UACE,cAAC9lD,GAAA,EAAD,CAAQC,QAvDW,WACrBqmD,EAAal/B,KAAKtlB,IAAI,EAAGvZ,EAAc,KAsDJ6gB,SAA0B,IAAhB7gB,EAAmB4W,UAAWJ,EAAQgnD,cAAjF,SACE,cAAC,GAAD,MAEDQ,EACD,cAACvmD,GAAA,EAAD,CAAQC,QAvDO,WACjBqmD,EAAal/B,KAAK3lB,IAAIm/B,EAAOr4C,EAAc,KAsDZ6gB,SAAU7gB,IAAgBq4C,EAAOzhC,UAAWJ,EAAQgnD,cAAjF,SACE,cAAC,GAAD,UCpGF1oD,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXnC,KAAM,CACJ,UAAW,CACTrC,gBAAiB,gBAGrBnI,MAAO,CACLiL,UAAW,SACX/C,OAAQ,OACR/B,SAAU,WACV+E,aAAc,OACdxD,QAAS,UACTyD,UAAW,aACXE,SAAU,SACVC,aAAc,WACdC,WAAY,UAEd+O,QAAS,CACP7E,OAAQ,WACR+tB,UAAW,SACX16B,OAAQ,UAEVyjC,aAAc,CACZ1/B,QAAS,OACTG,eAAgB,QAChBE,WAAY,SACZ1B,WAAY,eAuNH0qD,OAxMf,YAA0E,IAAD,QAiBjD,EAjBCpB,EAAgD,EAAhDA,SAAUqB,EAAsC,EAAtCA,eAC3B7mD,EAAWM,eACXzsB,EAAWy6B,eACX7uB,EAAW4uB,cACXxP,EAAU1B,KAJuD,EAKnCoR,aAAY,SAAC3e,GAAD,OAAsBA,KAA9DD,EAL+D,EAK/DA,KAAM1R,EALyD,EAKzDA,SAAUI,EAL+C,EAK/CA,QAElByoE,EAAa7oE,EAASqK,UACtB69D,EAAeloE,EAASqP,SACxB2iB,GAAe,UAAAtgB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WATc,EAWjC8Z,mBAAiB5rB,EAASoK,aAAe,GAXR,oBAWhEA,EAXgE,KAWnD0+D,EAXmD,KAajE1P,EAAyC,eAAtBxjE,EAAS+H,SAE9BqiD,EAAgB,OAAGhgD,QAAH,IAAGA,OAAH,EAAGA,EAAUA,SAE7Bo5D,IACFpZ,GACU,OAARhgD,QAAQ,IAARA,GAAA,UAAAA,EAAU4O,yBAAV,eAA6BgE,QAAO,SAACoC,GAAD,OAAoB,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAASvX,UAAWvF,GAAkBqd,cACvF,MAGJ,IAAMwzD,EAAgB,UAAG/oB,SAAH,aAAG,EAAkBlpD,MAAK,SAACke,GAAD,OAAaA,EAAQhc,OAASP,GAAgBopC,SAiG9FhN,qBAAU,WACHz0B,EAAQ8H,gBAAsC,OAApB9H,EAAQA,SAA2D,OAAvCA,EAAQ+H,4BACjE3G,EAASm7D,SAIb,IAoBM5C,EAA+B,UAAG/Z,SAAH,aAAG,EAAkBhN,MAAM,EAAGu0B,GAAUh1D,KAAI,SAACyC,GAAD,oBAAC,gBAC7EA,GAD4E,IAE/E4oB,KAAM5oB,EAAQ4oB,KACdppB,YAAaQ,EAAQR,YACrB5a,aAAcob,EAAQ0kD,QACtBxlD,SAAUc,EAAQd,SAClB+qC,cAAejqC,EAAQiqC,cACvBnM,UAAW99B,EAAQ89B,UACnBgY,aAAc91C,EAAQ81C,aACtB71C,OAAQD,EAAQC,OAChB8vD,cAAe/vD,EAAQ+vD,cACvBtnE,OAAQuX,EAAQvX,YAGZurE,EACJ,cAAC,GAAD,CACExoD,OAAO,OAACxgB,QAAD,IAACA,OAAD,EAACA,EAAU4O,mBAA6C,0BAAzB,0BACtCpS,SACE,OAACwD,QAAD,IAACA,OAAD,EAACA,EAAU4O,mBAEP,yDADA,kEAMV,OACE,sBAAKoS,UAAU,gBAAf,UACIhhB,EAAS2O,iBAAoBvO,EAAQ8H,eAarC,cAAC,GAAD,IAZA,cAAC,GAAD,CACE8xD,UAAWb,GAAqBC,EAAkBpnC,GAClD+nC,SAAUA,GAAY,GACtBU,WAxJuB,SAAChc,EAAc6a,GAAmC,IAAD,YACxE2P,EAAY,UAAMpyB,GAAmBlZ,aAAa8gB,EAAIvqC,UAA1C,YAChBuqC,EAAIzlD,OAASP,GAAgBopC,MAAQ,mBAAqB,IAG5D,OAAQy3B,GACN,IAAK,OACH,OAAO57B,GAAWI,oBAAoB2gB,EAAI7gB,MAC5C,IAAK,eAGH,OAAOgrC,EAAc,UACjBxoE,EAAQA,eADS,iBACjB,EAAiB0lC,MAAK,SAACpU,GAAD,OAAYA,EAAOve,KAAOsrC,EAAItnD,qBADnC,aACjB,EAAiEq3C,kBACjEiQ,EAAIqM,aACV,IAAK,WACH,OACE,cAACn9B,GAAA,EAAD,CAASnN,MAAOyoD,EAAhB,SACE,sBAAKjoD,UAAW+nD,EAAmBnoD,EAAQo+B,aAAe,GAA1D,UACGnI,GAAmBC,QAAQ2H,EAAIvqC,UAC/BuqC,EAAIzlD,OAASP,GAAgBopC,OAC5B,qCACE,cAAChU,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,aACjD,cAAC,GAAD,YAMZ,IAAK,gBACH,OACE,sBAAKvE,MAAO,CAAEjK,QAAS,OAAQK,WAAY,SAAUF,eAAgB,UAArE,UACE,qBAAKwB,IAAKw9B,EAAIQ,cAAe/9B,IAAI,SAASqI,MAAO,CAAExM,YAAa,EAAGxB,OAAQ,eAC3E,8CAAOkjC,EAAI3L,UAAUE,OAAO,SAGlC,IAAK,SACH,OACE,qCACE,+BAAOnW,GAAeC,iBAAiB2hB,EAAIxpC,OAAO7b,YAClD,+BACG29C,GAAaC,kBAAkByH,EAAIxpC,OAAOE,QAAS,UAAAspC,EAAIO,oBAAJ,eAAkB/pC,OAAOE,QAAS,SAI9F,IAAK,UACH,OAAOspC,EAAIib,QACT,sBACEnwC,MAAO,CACLjK,QAAS,OACTC,cAAe,MACfI,WAAY,WACZF,eAAgB,SAChBD,IAAK,GANT,WASG,UAAAi/B,EAAIib,eAAJ,eAAa1gE,QAASV,GAAa67B,OAAS,cAAC,GAAD,IAC7C,mBAAGnT,UAAWJ,EAAQnO,MAAtB,6BAAiCgsC,EAAIib,eAArC,aAAiC,EAAajnD,MAAM,GAApD,uBAA2DgsC,EAAIib,eAA/D,aAA2D,EAAahnD,eAG1E,kCAEJ,IAAK,SACH,OACE,cAAC,GAAD,CACEqY,MAAO+lB,GAAwBG,cAAcwN,EAAIhhD,QACjD0b,MAAO23B,GAAwBI,sBAAsBuN,EAAIhhD,UAG/D,IAAK,gBACH,OAAOghD,EAAIsmB,cAAgBtmB,EAAIsmB,cAAgB,IACjD,IAAK,UACH,OACE,cAAC74C,GAAA,EAAD,CACElL,UAAWJ,EAAQ3D,KACnBkY,eAAa,EACbrT,QAAS,kBACPC,EAAS,aAAD,OAAc08B,EAAItrC,IAAM,CAC9BxB,MAAO,CAAE1X,KAAMrE,EAAS+H,aAL9B,SASE,cAAC,GAAD,MAIN,QACE,OAAO8gD,EAAI6a,KAmETW,iBAAkB+O,EAClBxO,SAAU,CACR7vD,MAAO3K,EAASxF,QAAQd,WACxBs+B,UAAWh4B,EAASxF,QAAQb,eAAiBtB,GAAS8iE,IACtDC,cAxDiB,SAAC9B,GAA6B,IAAD,EAEhD4P,EADQlpE,EAASxF,QAAQb,gBAAkBtB,GAAS8iE,IAC/B9iE,GAASoX,KAAOpX,GAAS8iE,IAC9CgO,EtPiCkB,SAAqCptE,EAAcu9D,GAC7E,GAAIA,KAAYv9D,EAEd,OADmBA,EAAUu9D,GsPnCH8P,CAAa5P,GAAkBF,GACzDwP,EAAe,GAEftnE,EACEK,GAAoB,6BAEb7B,EAASxF,SAFG,IAGfd,WAAYyvE,EACZxvE,cAAeuvE,IAEjB,EACAhB,EAPiB,UAQjBx2D,EAAKpS,eARY,aAQjB,EAAcM,SAASuT,UA+CvBimD,GAAoBp5D,EAASA,UAA0C,KAA9B,UAAAA,EAASA,gBAAT,eAAmB1J,SAC5D,cAAC,GAAD,CACEmsD,MAAOomB,EACPX,aAAcA,EACd99D,YAAaA,EACb+9D,aA9EiB,SAACpxE,GAAkB,IAAD,IACzC+xE,EAAe/xE,GACfyK,EAASK,GAAoB7B,EAASxF,QAASzD,EAAMmxE,EAAzB,UAAuCx2D,EAAKpS,eAA5C,iBAAuC,EAAcM,gBAArD,aAAuC,EAAwBuT,Y,mDCvKzF+L,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXiqD,UAAW,CACTzuD,gBAAiB,cACjB,WAAY,CACV0E,QAAS,SAGb2iC,iBAAkB,CAChB9nC,QAAS,KAEX+nC,iBAAiB,cACf3iC,cAAe,MACfpF,QAAS,IACTmB,MAAO,OACPkE,IAAK,QACJ9H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BH,cAAe,WAGnB+pD,eAAgB,CACdhqD,QAAS,QAEXoN,aAAc,CACZA,aAAc,QACd9T,SAAU,UACVQ,WAAYze,OAAOod,KAAOsB,mBAE5B8tD,YAAY,cACVtnD,aAAc,OACdP,QAAS,OACTC,cAAe,SACfjE,MAAO,MACPqE,WAAY,cACXjI,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BpE,MAAO,SAGX8rD,cAAe,CACbl/C,OAAQ,eAKRm6B,GAAmBknB,aAAW,CAClC7oD,QAAS,CACPpB,QAAS,UAFYiqD,CAItBC,MAwCYC,OAtCf,WACE,IAGsBC,EAHhB9oD,EAAU1B,KADS,EAEO0M,mBAAyB,UAFhC,oBAElB+9C,EAFkB,KAERC,EAFQ,KAQzB,OACE,eAACxnB,GAAA,EAAD,CACEynB,QAAM,EACNF,SAAuB,WAAbA,EACVl/C,UARkBi/C,EAQK,SARa,SAACh/C,EAA8Bo/C,GACrEF,IAAYE,GAAcJ,KAQxBv3C,UAAW,EACXnR,UAAWJ,EAAQyoD,UALrB,UAOE,cAAC,GAAD,CAAkBroD,UAAWJ,EAAQqhC,iBAArC,SACE,sBAAKjhC,UAAU,WAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,KAApB,gCACA,sBAAKJ,UAAWJ,EAAQ0oD,eAAxB,UACE,cAACnoD,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAWJ,EAAQ8L,aAAnD,SACgB,WAAbi9C,EAAwB,WAAa,YAE1B,WAAbA,EACC,cAAC,KAAD,CAAY/wD,SAAS,QAAQO,MAAM,WAEnC,cAAC,KAAD,CAASP,SAAS,QAAQO,MAAM,mBAKxC,cAACopC,GAAA,EAAD,CAAkBvhC,UAAWJ,EAAQshC,iBAArC,SACE,cAAC,GAAD,UChFFhjC,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX26B,MAAM,gBACHriC,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BgoB,UAAW,OACX5pB,SAAU,cAiGHisD,OArFf,YAKwB,IAJtBC,EAIqB,EAJrBA,iBAGApB,GACqB,EAHrBqB,aAGqB,EAFrBC,gBAEqB,EADrBtB,gBAEMhoD,EAAU1B,KACV1d,EAAW4uB,cACXxwB,EAA0B0wB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,YAClE0Q,EAAoBggB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,SAASsQ,qBAJtD,EAK2Bsb,mBAAiB,IAL5C,oBAKd6nC,EALc,KAKI0W,EALJ,KAOrBt1C,qBAAU,WAELj1B,EAASkH,mBACc,OAAxBlH,EAASmH,YAC2B,OAApCnH,EAASoH,wBAETxF,G/IdG,SAACA,GAGN,OAFAA,EAASsF,MAEFykC,GAAgBC,kBAAkBvuC,MACvC,SAACF,GACCyE,EAASkrC,GAAc3vC,OAEzB,SAACiE,GACCQ,EAASmrC,GAAsB3rC,Y+IQlC,CAACpB,EAASkH,kBAAmBlH,EAASmH,WAAYnH,EAASoH,uBAAwBxF,IAEtFqzB,qBAAU,WACJvkB,IACF85D,EAAmB,MACnB5oE,EAASqB,SAGV,CAACyN,IAEJ,IAAM85D,EAAkB,uCAAG,WAAOxqE,GAAP,eAAA/C,EAAA,sDACzBstE,EAAoBvqE,EAAWA,EAASivC,SAASztC,WAAa,IAC9DI,EAASklB,GAAa,iBAAC9mB,QAAD,IAACA,OAAD,EAACA,EAAUuT,UAAX,QAAiB,IACvC62D,EAAgB,OAACpqE,QAAD,IAACA,IAAY,MAHJ,2CAAH,sDAMxB,OACE,qBAAKohB,UAAU,mBAAf,SACE,eAAC8lB,GAAA,EAAD,CAAa7a,UAAU,WAAvB,UACE,cAAC+nC,GAAA,EAAD,CAAW/nC,UAAU,SAASrL,QAAS,CAAE5G,KAAM,cAAgBi6C,SAAS,EAAxE,qBAGA,cAACC,GAAA,EAAD,CAAWtzC,QAAS,CAAE5G,KAAM,SAA5B,SACE,eAAC8tB,GAAA,EAAD,CACEqsB,cAAY,EACZC,MAAO,cAACC,GAAA,EAAD,IACPrzC,UAAU,SACV+jC,aAAa,GACb2P,UAAW,CACT9zC,QAAS,CAAEm5B,MAAOn5B,EAAQm5B,OAC1B1mB,mBAAoB,KACpBlK,aAAc,CACZC,SAAU,SACVC,WAAY,QAEd+J,gBAAiB,CACfhK,SAAU,MACVC,WAAY,SAGhBlU,MAAOs+C,EAjBT,UAmBE,cAAClgC,GAAA,EAAD,CAAUpe,MAAM,GAAG6L,UAAU,iBAAiBc,QAAS,kBAAMsoD,EAAmB,OAAhF,mBAGCxqE,EAASmH,YACRnH,EAASmH,WAAWwL,KAAI,SAAC3S,GACvB,OACE,cAAC2zB,GAAA,EAAD,CACEpe,MAAOvV,EAASivC,SAEhB/sB,QAAS,kBAAMsoD,EAAmBxqE,IAClCohB,UAAU,iBAJZ,SAMG4nD,EAAiBhpE,EAAS4uC,kBAAoB5uC,EAAS8kB,YAJnD9kB,EAAS+kB,uBCrBnB0lD,OAjEf,YAS0B,IAAD,EARvB5W,EAQuB,EARvBA,iBACA0W,EAOuB,EAPvBA,oBACAhzE,EAMuB,EANvBA,WACAw5B,EAKuB,EALvBA,YACA96B,EAIuB,EAJvBA,OACAkxB,EAGuB,EAHvBA,WACAqsC,EAEuB,EAFvBA,cACAwV,EACuB,EADvBA,eACuB,EACIt4C,aAAY,SAAC3e,GAAD,OAAsBA,KAArDD,EADe,EACfA,KAAM1R,EADS,EACTA,SAERwB,EAAW4uB,cA+BjB,OArBAyE,qBAAU,YAEU,IAAhB19B,GACC6I,EAAS2O,iBACY,OAAtB3O,EAASA,UACyB,OAAlCA,EAAS2P,sBAETnO,EAASd,GAAcV,EAASxF,QAASwF,EAASoK,YAAapK,EAASqP,SAAUlY,MAEnF,CACD6I,EAAS2O,gBACT3O,EAASA,SACTA,EAAS2P,qBACT3P,EAASxF,QACTwF,EAASqP,SACTqC,EAAKpS,QACLnI,EACA6I,EAASoK,YACT5I,IAIA,cAAC,GAAD,CACEw1D,eAAa,EACbC,iBAAe,EACfC,uBAAqB,EACrBC,eACE,UAAAzlD,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,YAClC,cAAC,GAAD,CAAek4D,iBA9BE,SAACpqE,GAAD,OAA+BuqE,EAAoBvqE,IA8BjBgpE,eAAgBA,IAGvEnV,iBAAkBA,EAClB1sC,WAAYA,EACZqsC,cAAeA,EACf54D,QAASwF,EAASxF,QAClBg5D,WA3CgB,SAACh5D,GACfkX,EAAKpS,SACPkC,EAASK,GAAoBrH,EAAS,EAAGwF,EAASqP,SAAUlY,KA0C5Dg/D,cAAetgE,EACf86B,YAAaA,EACb8kC,iBAAe,KCvDN6U,OArBf,YAAmD,IAAD,IAA/BnxD,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIxB,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,qBACE1F,MAAM,KACNC,OAAO,KACPkM,QAAQ,YACRrM,KAAK,OACLsM,MAAM,6BACN1G,UAAWA,EANb,SAQE,sBACE2G,EAAE,shFACFvM,KAAMjC,OCTRpB,GAASogC,KAAWC,OAAO,CAC/BrhD,KAAM,CACJuoB,QAAS,OACTC,cAAe,SACfI,WAAY,SACZK,WAAY,GACZqkB,cAAe,GACf/oB,MAAO,KAETkF,MAAO,CACLX,aAAc,IAEhB0qD,UAAW,CACTjrD,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChB7G,SAAU,GACVQ,WAAY,OACZkC,MAAO,IACP0E,WAAY,EACZqkB,cAAe,GAEjBoa,IAAK,CACHn/B,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChB7G,SAAU,GACV0C,MAAO,IACP0E,WAAY,EACZqkB,cAAe,GAEjBmmC,OAAQ,CACNlrD,QAAS,OACTG,eAAgB,SAChB0/B,SAAU,EACV5P,YAAa,EACb7iB,aAAc,GAEhBK,QAAS,CACPxR,OAAQ,EACRD,MAAO,IACPV,gBAAiB,OACjB0B,UAAW,EACXuD,aAAc,GAEhB+d,KAAM,CACJtiB,MAAO,IACPoC,UAAW,UAEblJ,YAAa,CACX8G,MAAO,IACPoC,UAAW,UAEb1kB,KAAM,CACJsiB,MAAO,GACPoC,UAAW,UAEbjkB,OAAQ,CACN6hB,MAAO,GACPoC,UAAW,UAEbzI,OAAQ,CACNqG,MAAO,GACPoC,UAAW,SAEbinD,iBAAkB,CAChBrpD,MAAO,IACPoC,UAAW,YAqGA+sD,OA5Ff,YAA4D,IAArCl8B,EAAoC,EAApCA,KAAM3uC,EAA8B,EAA9BA,SACrB8X,EAAQmJ,eAEd,OACE,cAAC,KAAD,UACE,cAAC,KAAD,CAAMoN,KAAK,KAAK1E,MAAOxR,GAAOhhB,KAAM+2B,YAAY,YAAhD,SACE,eAAC,KAAD,WACE,cAAC,KAAD,CAAMvE,MAAOxR,GAAOyI,MAApB,oCAAgD5gB,EAAW,KAAO,GAAlE,YACEA,EAAWA,EAAS8kB,WAAa,MAEnC,eAAC,KAAD,WACE,eAAC,KAAD,CAAM6E,MAAOxR,GAAOwyD,UAApB,UACE,cAAC,KAAD,CAAMhhD,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAO,CAAEjO,MAAO,IAAtB,sBAEF,cAAC,KAAD,CAAMiO,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO6lB,KAApB,qBAEF,cAAC,KAAD,CAAMrU,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAOvD,YAApB,8BAEF,cAAC,KAAD,CAAM+U,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO/e,KAApB,4BAEF,cAAC,KAAD,CAAMuwB,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAOte,OAApB,6BAEF,cAAC,KAAD,CAAM8vB,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO9C,OAApB,uBAEF,cAAC,KAAD,CAAMsU,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO4sD,iBAApB,+BAEF,cAAC,KAAD,CAAMp7C,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO4sD,iBAApB,qCAGJ,cAAC,KAAD,CAAMp7C,MAAOxR,GAAOgV,QAApB,SACE,cAAC,KAAD,QA5BM,UA+BTwhB,GACCA,EAAKh8B,KAAI,SAACyC,EAASigB,GACjB,OACE,eAAC,KAAD,WACE,eAAC,KAAD,CAAM1L,MAAOxR,GAAO0mC,IAApB,UACE,cAAC,KAAD,CAAMl1B,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CACEjhD,MAAO,CACLjO,MAAO,GACPnC,MAAO23B,GAAwBE,qBAAqBh8B,EAAQvX,OAAQia,IAHxE,SAMGo5B,GAAwBG,cAAcj8B,EAAQvX,YAGnD,cAAC,KAAD,CAAM8rB,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO6lB,KAApB,SAA2BF,GAAWI,oBAAoB9oB,EAAQ4oB,UAEpE,cAAC,KAAD,CAAMrU,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAOvD,YAApB,UAAyC,OAAPQ,QAAO,IAAPA,OAAA,EAAAA,EAASR,cAAe,QAE5D,cAAC,KAAD,CAAM+U,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO/e,KAApB,SAA2B69C,GAAmBlZ,aAAa3oB,EAAQd,cAErE,cAAC,KAAD,CAAMqV,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAOte,OAApB,SAA6Bub,EAAQk2B,eAEvC,cAAC,KAAD,CAAM3hB,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO9C,OAApB,mBAAgC4nB,GAAeC,iBAC7C9nB,EAAQC,OAAO7b,UADjB,YAEK29C,GAAaC,kBAAkBhiC,EAAQC,OAAOE,YAErD,cAAC,KAAD,CAAMoU,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO4sD,iBAApB,UAA8C,OAAP3vD,QAAO,IAAPA,OAAA,EAAAA,EAAS2vD,mBAAoB,QAEtE,cAAC,KAAD,CAAMp7C,MAAOxR,GAAOyyD,OAApB,SACE,cAAC,KAAD,CAAMjhD,MAAOxR,GAAO4sD,iBAApB,UAA8C,OAAP3vD,QAAO,IAAPA,OAAA,EAAAA,EAAS4vD,iBAAkB,WAGtE,cAAC,KAAD,CAAMr7C,MAAOxR,GAAOgV,QAApB,SACE,cAAC,KAAD,QArCOkI,cCzGrB/V,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX6rB,OAAQ,CACNjtB,WAAY,SACZS,eAAgB,mBAElBisD,QAAS,CACPjsD,eAAgB,OAChByJ,OAAQ,SACRnL,YAAa,UAEf4tD,aAAc,CACZrrD,QAAS,OACTC,cAAe,MACf3E,gBAAiB7C,KAAO2C,MACxBiF,WAAY,SACZH,IAAK,YACLrF,QAAS,sBACTQ,OAAO,aAAD,OAAe5C,KAAOkD,uBAC5BhB,aAAc,MACd,MAAO,CACLiO,OAAQ,EACR/N,QAAS,EACThB,MAAOpB,KAAOiD,oBACdyD,eAAgB,QAElB,UAAW,CACT7D,gBAAiB7C,KAAOkD,6BAqHjB2vD,OAzGf,YAA8E,IAApDl5D,EAAmD,EAAnDA,KAAM1R,EAA6C,EAA7CA,SAAU7I,EAAmC,EAAnCA,WAClCypB,EAAU1B,KAD2D,EAE7B0M,mBAAyB,MAFI,oBAEpEjd,EAFoE,KAEnDk8D,EAFmD,OAG3Bj/C,mBAAoB,IAHO,oBAGpEk/C,EAHoE,KAGlDC,EAHkD,OAIjCn/C,oBAAkB,GAJe,oBAIpEo/C,EAJoE,KAIrDC,EAJqD,OAKjCr/C,oBAAkB,GALe,oBAKpEs/C,EALoE,KAKrDC,EALqD,KAMrE15B,EAASjX,mBAET4wC,EAAmB5oC,uBAAY,WACnC,IAAM5lC,EAA6B,cACjC7F,KAAM,EACN+J,MAAO,KACJd,EAASxF,SAGdiG,GACGC,cAAc9D,EAASzF,GACvB8F,MACC,SAACouE,GACKA,GAAcN,EAAoBM,EAAarrE,SAAS4T,YAE9D,SAAC5S,GAAD,OAAW+pE,EAAoB,OAEhCO,SAAQ,kBAAMT,GAAmB,QACnC,CAAC1zE,EAAY6I,EAASxF,UAEnB+wE,EAAiB,SAAChwC,GACtBsvC,GAAmB,GACF,QAAbtvC,EAAoB0vC,GAAiB,GACnB,QAAb1vC,GAAoB4vC,GAAiB,IAG1C5xB,EAAc/W,sBAAW,sBAAC,4BAAA3lC,EAAA,sEACX88C,aACjB,cAAC,GAAD,CAAapL,KAAMu8B,EAAkBlrE,SAAU8R,EAAKpS,QAAUoS,EAAKpS,QAAQM,SAAW,QACtFg6C,SAH4B,OACxBC,EADwB,OAI9BC,kBAAOD,EAAM,SAJiB,2CAK7B,CAACixB,EAAkBp5D,EAAKpS,UA2C3B,OAzCAu1B,qBAAU,WACJlmB,GACFy8D,MAED,CAACA,EAAkBz8D,IAEtBkmB,qBAAU,WACJi2C,EAAiBx0E,OAAS,IAAyB,IAApBqY,IAC7Bq8D,IACFv5B,EAAOzW,QAAQ/mB,KAAK+9B,QACpBi5B,GAAiB,IAEfC,IACF3xB,IACA4xB,GAAiB,OAGpB,CAACL,EAAiBx0E,OAAQijD,EAAayxB,EAAeE,EAAev8D,IAyBtE,qCACE,cAACyjB,GAAA,EAAD,CAAMpR,UAAWJ,EAAQqqB,OAAQnpB,QAAS,kBAAMypD,EAAe,QAA/D,SACE,sBAAKvqD,UAAWJ,EAAQ+pD,aAAxB,UACE,cAAC,GAAD,CAASxxD,MAAOpB,KAAOM,YACvB,4BAAI2yD,EAAgB,cAAgB,wBAGxC,cAAC,WAAD,CACEz8B,KA/BmB,SAACvuC,GACxB,OAAOA,EAASuS,KAAI,SAACyC,GACnB,MAAO,CACLvX,OAAQqzC,GAAwBG,cAAcj8B,EAAQvX,QACtDmgC,KAAMF,GAAWI,oBAAoB9oB,EAAQ4oB,MAC7CppB,aAAoB,OAAPQ,QAAO,IAAPA,OAAA,EAAAA,EAASR,cAAe,IACrCN,SAAU2iC,GAAmBlZ,aAAa3oB,EAAQd,UAClDg3B,WAAYl2B,EAAQk2B,WACpBsgC,SAAUx2D,EAAQw2D,UAAY,IAC9Bv2D,OAAO,GAAD,OAAK4nB,GAAeC,iBACxB9nB,EAAQqiC,YAAcriC,EAAQqiC,YAAYj+C,SAAW4b,EAAQC,OAAO7b,UADhE,YAED29C,GAAaC,kBAAkBhiC,EAAQC,OAAOE,QACnDwvD,kBAAyB,OAAP3vD,QAAO,IAAPA,OAAA,EAAAA,EAAS2vD,mBAAoB,IAC/CC,gBAAuB,OAAP5vD,QAAO,IAAPA,OAAA,EAAAA,EAAS4vD,iBAAkB,IAC3C9xB,UAAW99B,EAAQ89B,UAAUE,OAAO,GACpC7yC,aAAc6U,EAAQ7U,aACtB0kE,cAAe7vD,EAAQ6vD,eAAiB,IACxCC,OAAQ9vD,EAAQ8vD,QAAU,QAcpB2G,CAAiBX,GACvBx3B,SAAS,YACTt1C,QAAS2yC,GACT3vB,UAAWJ,EAAQ8pD,QACnB5vC,IAAK2W,IAEP,cAACrf,GAAA,EAAD,CAAMpR,UAAWJ,EAAQqqB,OAAQnpB,QAAS,kBAAMypD,EAAe,QAA/D,SACE,sBAAKvqD,UAAWJ,EAAQ+pD,aAAxB,UACE,cAAC,GAAD,CAASxxD,MAAOpB,KAAOM,YACvB,4BAAI6yD,EAAgB,cAAgB,4BCzJxChsD,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX4oC,QAAQ,cACN1oC,QAAS,OACTO,aAAc,SACdJ,eAAgB,iBACf/H,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BG,aAAc,WAGlBkN,QAAS,CACP7E,OAAQ,kBACR+tB,UAAW,SACX16B,OAAQ,SACRX,gBAAiB0X,KAAOrX,uBAE1BywD,iBAAkB,CAChBpsD,QAAS,OACTK,WAAY,SACZxG,MAAOmZ,KAAOja,gBAiDLszD,OApCf,YAM8B,IAL5Bx0E,EAK2B,EAL3BA,WACA2pB,EAI2B,EAJ3BA,UACAkR,EAG2B,EAH3BA,aACA42C,EAE2B,EAF3BA,eACAgD,EAC2B,EAD3BA,kBAEMhrD,EAAU1B,KADW,EAEAoR,aAAY,SAAC3e,GAAD,OAAsBA,KAArDD,EAFmB,EAEnBA,KAAM1R,EAFa,EAEbA,SAEd,OACE,qBAAKghB,UAAWJ,EAAQonC,QAAxB,SACE,cAAC,GAAD,CAAaxnC,MAAM,QAAQ4M,eAAgBtM,EAAY9gB,EAASsP,cAAWnW,EAA3E,SACG2nB,GACC,sBAAKE,UAAWJ,EAAQ8qD,iBAAxB,UACG15C,GACC,qCACE,cAAC7Q,GAAA,EAAD,CAAYC,QAAQ,QAApB,qCACA,cAAC,GAAD,CACEmlB,QAASqiC,EACTn+C,SAAU,kBAAMmhD,GAAmBhD,IACnCzvD,MAAM,UACN7hB,KAAK,WACL6yB,WAAY,CAAE,aAAc,sBAE9B,cAAC0D,GAAA,EAAD,CAASC,YAAY,WAAW9M,UAAWJ,EAAQmM,aAGvD,cAAC,GAAD,CAAgBrb,KAAMA,EAAM1R,SAAUA,EAAU7I,WAAYA,YCvClE+nB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXysD,cAAe,CACbvsD,QAAS,OACTE,IAAK,QAiJIqU,OA5If,WAAqB,IAAD,UACZryB,EAAW4uB,cACXxP,EAAU1B,KAFE,EAGwCoR,aAAY,SAAC3e,GAAD,OAAsBA,KAApFD,EAHU,EAGVA,KAAM1R,EAHI,EAGJA,SAAUgN,EAHN,EAGMA,eAAgBrN,EAHtB,EAGsBA,cAHtB,EAIkBisB,mBAAiB,IAJnC,oBAIX7E,EAJW,KAICqsC,EAJD,OAK8BxnC,mBAA0B,MALxD,oBAKX6nC,EALW,KAKO0W,EALP,OAMMv+C,oBAAS,GANf,oBAMXxD,EANW,KAML+H,EANK,OAO0BvE,oBAAS,GAPnC,oBAOXg9C,EAPW,KAOKgD,EAPL,KAQZ55C,GAAe,UAAAtgB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WAEnD4F,EAAQmJ,eACRC,EAAYC,aAAcrJ,EAAM8B,YAAYsG,GAAG,OAE/C3oB,EAAa66B,EACM,OAArByhC,EACE,EACAA,EAAiBtgD,GAHQ,oBAI3BzB,EAAKpS,eAJsB,iBAI3B,EAAcM,gBAJa,aAI3B,EAAwBuT,UAJG,SAII,EAEnC0hB,qBAAU,WAENnjB,EAAKpS,UACJ0N,EAAeD,uBACkB,OAAlCC,EAAeA,gBAC+B,OAA9CA,EAAeC,4BAEfzL,EAASohC,GAAoBzrC,MAE9B,CACDua,EAAKpS,QACL0N,EAAeD,sBACfC,EAAeA,eACfA,EAAeC,2BACf9V,EACAqK,IAGFqzB,qBAAU,WAENnjB,EAAKpS,UACJK,EAAcqJ,sBACiB,OAAhCrJ,EAAcA,eAC8B,OAA5CA,EAAcsJ,2BAEdzH,EAASklB,GAAcvvB,MAExB,CACDua,EAAKpS,QACLK,EAAcqJ,qBACdrJ,EAAcA,cACdA,EAAcsJ,0BACd9R,EACAqK,IAGF,IAAM3L,EAAS,WACb,IACGkxB,EAAWzwB,OAAS,GAA2B,IAAtBywB,EAAWzwB,SACrCywB,IAAe/mB,EAASxF,QAAQhB,OAChB,IAAhBrC,EACA,CACA,IAAMqD,EAAO,6BAAQwF,EAASxF,SAAjB,IAA0BhB,KAAMutB,IAC7CvlB,EAASK,GAAoBrH,EAASwF,EAASoK,YAAapK,EAASqP,SAAUlY,MAQ7Ew5B,EAAc,WAClBR,GAAQ,IAGV,OACE,sBACEnP,UAAW0M,aACT,mBACA,YACA,UAAAhc,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,YAAc,6BAJtD,UAOE,cAAC,GAAD,CACE3a,WAAYA,EACZ2pB,UAAWA,EACXkR,aAAcA,EACd42C,eAAgBA,EAChBgD,kBAAmBA,IAEpB9qD,GACC,cAAC,GAAD,CACE2yC,iBAAkBA,EAClB0W,oBAAqBA,EACrBhzE,WAAYA,EACZtB,OAAQA,EACRkxB,WAAYA,EACZqsC,cAAeA,EACfwV,eAAgBA,IAGnB9nD,GAAa,cAAC,GAAD,IACZA,EAiCA,cAAC,GAAD,CAAe8nD,eAAgBA,IAhC/B,qCACE,sBAAK5nD,UAAWJ,EAAQirD,cAAxB,UACE,cAAC,GAAD,CACE9kD,WAAYA,EACZqsC,cAAeA,EACf+C,cAAetgE,EACfm1B,YAAY,oDAEd,cAACnJ,GAAA,EAAD,CAAQT,QAAQ,WAAWjI,MAAM,YAAY2I,QAAS,kBAAMqO,GAAQ,IAApE,SACE,cAAC,GAAD,SAGJ,cAAC,GAAD,CAAeq3C,aAhDF,WACnBhmE,EAASd,GAAcV,EAASxF,QAASwF,EAASoK,YAAc,EAAGpK,EAASqP,SAAUlY,OAgDhF,eAACy5B,GAAA,EAAD,CAAQxI,KAAMA,EAAM+F,WAAS,EAACtQ,SAAS,KAAKqL,QAASyH,EAAa3P,UAAU,SAA5E,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAE1D,eAACU,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,UACE,cAACmH,GAAA,EAAD,CAAYC,QAAQ,KAApB,yBACA,cAAC,GAAD,CACEqyC,iBAAkBA,EAClB0W,oBAAqBA,EACrBhzE,WAAYA,EACZtB,OAAQA,EACR86B,YAAaA,EACb5J,WAAYA,EACZqsC,cAAeA,iBCjIhB0Y,OA3Bf,YAA6D,IAAD,EAApC1jD,EAAoC,EAApCA,KAAM+H,EAA8B,EAA9BA,QACtBlc,EAAOqc,aAAY,SAAC3e,GAAD,OAAsBA,EAAM5R,SAC/CH,EAAW0wB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,SAASA,YAE5D0oB,EAAc,kBAAM6H,GAAQ,IAElC,OACE,eAACS,GAAA,EAAD,CAAQ5P,UAAU,kBAAkBmN,WAAS,EAACtQ,SAAS,KAAKuK,KAAMA,EAAMc,QAASZ,EAAjF,UACE,cAACuI,GAAA,EAAD,CAAa7P,UAAU,QAAvB,SACE,cAAC,KAAD,CAAWA,UAAU,aAAac,QAASwG,MAE7C,eAAC+I,GAAA,EAAD,CAAerQ,UAAU,UAAzB,UACE,oBAAIA,UAAU,cAAd,6EACA,sBAAMA,UAAU,OAAhB,6EACA,sBAAKA,UAAU,UAAf,UACE,cAACa,GAAA,EAAD,CAAQb,UAAU,gBAAgB7H,MAAM,YAAYiI,QAAQ,WAAWU,QAASwG,EAAhF,sBAGA,mBAAGtH,UAAU,eAAemY,MAAM,UAAAllB,EAAK9H,iBAAL,eAAgB3V,MAAhB,kBAA2BoJ,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAU+kB,SAAvE,kCCfVhvB,OAAOo2E,YAAcp2E,OAAOo2E,aAAe,GAmF5BC,OAjFf,WACE,IAAMjqD,EAAWM,eACXriB,EAAWswB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3R,YACnDJ,EAAW0wB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM/R,SAASA,YAC5DqsE,EAAYzxC,iBAA0B,MAJtB,EAKE5O,oBAAkB,GALpB,oBAKfxD,EALe,KAKT+H,EALS,KAyBtB,SAAS+7C,EAAUxhD,GACjB,IAAI6jB,EAAO7jB,EAAM6jB,KACjBtsC,QAAQC,IAAIwoB,GACR6jB,GAAQA,EAAK49B,OAASF,GAAaA,EAAUjxC,UAC/CixC,EAAUjxC,QAAQzf,OAASgzB,EAAK49B,MAAM5wD,QA4B1C,OAxBAsZ,qBAAU,WAOR,OANIl/B,OAAO0mC,iBACT1mC,OAAO0mC,iBAAiB,UAAW6vC,GAAW,GACrCv2E,OAAOo2E,aAChBp2E,OAAOo2E,YAAY,YAAaG,GAAW,GAGtC,WACLv2E,OAAO2mC,oBAAoB,UAAW4vC,GAAW,OAIrDr3C,qBAAU,WACJ70B,EAASkQ,sBACX6R,EAAS,WACwC,OAAxC/hB,EAASoQ,4BAClB2R,EAAS,yBAIb8S,qBAAU,WACHj1B,GAAUmiB,GAAU,KACxB,CAACniB,EAAUmiB,IAGZ,sBAAKf,UAAU,iCAAf,UACE,sBAAKA,UAAU,uBAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,KAApB,6CACA,wBAAQjI,MAAM,YAAY2I,QAAS,kBAAMqO,GAAQ,IAAOnP,UAAU,mBAAlE,uBAIF,qBAAKA,UAAU,gBAAf,SACE,wBACE7N,GAAG,cACHi5D,wBAAA,EACAtxC,IAAKmxC,EACL1wD,OAAQ,IACRD,MAAO,IACP2F,IAAKjhB,EAAS4P,SAAW5P,EAAS4P,SAAW,qBAC7C4Q,MAAM,YAGV,cAAC,GAAD,CAAc4H,KAAMA,EAAM+H,QAASA,QCwB1BiF,OAtFGC,aATM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,SAGa,SAAClQ,GAAD,MAA0D,CACnFiuB,kBAAmB,SAACV,GAAD,OACjBvtB,EAASiuB,GAAkBV,QAyFhBqG,EA1Ef,YAAmF,IAAtD1jB,EAAqD,EAArDA,KAAM+d,EAA+C,EAA/CA,kBAAmBrH,EAA4B,EAA5BA,KAAM+H,EAAsB,EAAtBA,QAAsB,EAC1BvE,oBAAkB,GADQ,oBACzE7lB,EADyE,KACpDsmE,EADoD,KAG1E17C,EAAc,WAClBR,GAAQ,IAmBV,OACE,eAACS,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASyH,EAAaxC,WAAS,EAACtQ,SAAS,KAAKmD,UAAU,SAA5E,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAE1D,cAAC,KAAD,CACEG,cAAe,CAAE5N,MAAO,GAAIe,gBAAiB,GAAIb,SAAU,GAAIK,eAAgB,IAC/EsN,iBAAkBxL,GAAQ1B,kBAC1BmN,SAxBc,SAACziB,EAAgB0iB,GACnC,IAAMlC,EAAqD,CACzDvc,OAAQ,KACR0Q,MAAO3U,EAAO2U,MACdkO,YAAa7iB,EAAO0V,gBACpB6K,YAAavgB,EAAO6U,UAGtBipD,GAAuB,GACvB58C,EAAkBV,IAYhB,SAKE,eAAC,KAAD,CAAM/N,UAAU,OAAhB,UACE,eAACqQ,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,UACE,cAACmH,GAAA,EAAD,CAAYC,QAAQ,KAApB,2CACA,cAAC,KAAD,CACEJ,UAAU,WACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,gCAEd,cAAC7J,GAAA,EAAD,CAAYP,QAAS,CAAE5G,KAAM,cAAgBoH,QAAQ,YAArD,gHAGA,cAAC,GAAD,CAAeqK,UAAU,kBAAkBT,YAAY,yBACvD,cAAC,GAAD,CAAeS,UAAU,WAAWT,YAAY,wBAChD,cAAC,GAAD,CAAeS,UAAU,iBAAiBT,YAAY,mCAExD,cAACsG,GAAA,EAAD,CAAe1Q,QAAS,CAAE5G,KAAM,kBAAhC,SACE,cAAC6H,GAAA,EAAD,CAAQ7oB,KAAK,SAASmgB,MAAM,UAAUiI,QAAQ,YAAY+M,WAAS,EAAnE,gCAIF,cAAC,GAAD,CACE/F,KACEriB,IACC2L,EAAK1L,0BAAmE,OAAvC0L,EAAKzL,+BAEzCzJ,QACEkV,EAAK1L,yBACD,wCACA0L,EAAKzL,8BAEXqiB,YA9CS,WACjB+jD,GAAuB,IA8CfrzE,KAAM0Y,EAAK1L,yBAA2BnO,GAAO4wB,QAAU5wB,GAAO05B,mBCkB3DyF,OAvGf,WACE,IAAMx1B,EAAW4uB,cACXrO,EAAWM,eACX3Q,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC/CgG,EAAQmJ,eAJG,EAKiB+K,oBAAkB,GALnC,oBAKV0gD,EALU,KAKCC,EALD,OAMuB3gD,oBAAkB,GANzC,oBAMVkG,EANU,KAMIC,EANJ,OAO6BnG,oBAAkB,GAP/C,oBAOVhmB,EAPU,KAOO4mE,EAPP,KASXlgD,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAqBhDmN,EAAe,cAAC,GAAD,CAAcQ,OAAO,cAAcE,QAAS3nB,IAQjE,OANAivB,qBAAU,WACJnjB,EAAKpS,SAAWoS,EAAKpS,QAAQtG,OAASV,GAAao4B,cACrD3O,EAAS,gBAEV,CAACrQ,EAAKpS,QAASyiB,IAGhB,sBAAKf,UAAU,2BAAf,UACE,cAAC,GAAD,CAAaR,MAAM,SAAnB,UAA8B8L,GAAYO,IAC1C,eAACqF,GAAA,EAAD,CAAOC,UAAW,EAAGnR,UAAU,gBAA/B,UACGtP,EAAKpS,QACJ,cAAC,KAAD,CACEwxB,cAAe,CACbre,MAAOf,EAAKpS,QAAQmT,MACpBC,SAAUhB,EAAKpS,QAAQoT,SACvBwQ,MAAOxR,EAAKpS,QAAQ4jB,OAEtB6N,iBAAkBxL,GAAQpB,cAC1B6M,SAvCY,SAACziB,EAAgB0iB,GACrC,IAAM3xB,EAAmB,CACvBkT,OAAQd,EAAKpS,QAASkT,OACtBrb,WAAYua,EAAKpS,QAASM,SAASuT,GACnCV,MAAOlE,EAAOkE,MACdC,SAAUnE,EAAOmE,SACjBkR,YAAalS,EAAKpS,QAASskB,YAC3B5qB,KAAM0Y,EAAKpS,QAAStG,KACpBkqB,MAAO3U,EAAO2U,OAGhBspD,GAAmB,GACnBhrE,E7NiRyB,SAAClC,GAAD,OAAsB,SAACkC,GAGlD,OAFAA,EAASoE,MAEFyoB,GAAYG,cAAclvB,GAASrC,MACxC,SAACF,GACCyE,EAASqE,GAAqB9I,OAEhC,SAACiE,GACCQ,EAASguB,GAAmBxuB,Q6NzRrBwtB,CAAclvB,KAoBjB,SASE,eAAC,KAAD,CAAM0hB,UAAU,OAAO7N,GAAG,cAA1B,UACE,cAAC,KAAD,CACE6N,UAAU,WACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,YAEd,cAAC,KAAD,CACEhK,UAAU,WACV1pB,KAAK,WACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,cAEd,cAAC,KAAD,CACEhK,UAAU,WACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,wBACZC,UAAQ,IAEV,qBAAKjK,UAAU,QAAf,SACE,cAACoR,GAAA,EAAD,CAAMtQ,QAAS,kBAAMiQ,GAAgB,IAArC,SACE,0DAGJ,qBAAK/Q,UAAU,cAAf,SAA8BsL,GAAYO,SAI9C,cAAC,GAAD,IAEF,cAAC,GAAD,CAAmBzE,KAAMkkD,EAAWn8C,QAASo8C,IAC7C,cAAC,GAAD,CAAsBnkD,KAAM0J,EAAc3B,QAAS4B,IACnD,cAAC,GAAD,CACE3J,KAAMxiB,IAAoB8L,EAAK7L,sBAA2D,OAAnC6L,EAAK5L,2BAC5DtJ,QACEkV,EAAK7L,qBACD,oDACA6L,EAAK5L,0BAEXwiB,YArEW,WACjBkkD,GAAmB,IAqEbxzE,KAAM0Y,EAAK7L,qBAAuBhO,GAAO4wB,QAAU5wB,GAAO05B,eCnCrD6D,OAjEGC,aARM,SAAC1jB,GAAD,MAAuB,CAC7C3R,SAAU2R,EAAM3R,aAGS,SAACwB,GAAD,MAA0D,CACnFirE,eAAgB,SAACvrE,GAAD,OAAuBM,E9P2Pb,SAACN,GAAD,MAA4C,CACtElI,KAAM3H,GACN6P,a8P7PgDwrE,CAAaxrE,QAoEhDk0B,EA9Df,YAAiE,IAA7Cp1B,EAA4C,EAA5CA,SAAUysE,EAAkC,EAAlCA,eAAkC,EACtC7gD,oBAAkB,GADoB,oBACvD+gD,EADuD,KACjDC,EADiD,KAExD7qD,EAAWM,eAEXwqD,EAAal3E,OAAOC,WAAaD,OAAOm3E,OAAOl3E,SAC/CikC,EAAUtkC,GAAUE,mBAkC1B,GAhCAo/B,qBAAU,WAEHg4C,GAAeF,IAClBC,GAAQ,GACRH,EAAe5yC,EAAQkzC,mBAExB,CAACF,EAAYhzC,EAAS4yC,EAAgBE,EAAMC,IAE/C/3C,qBAAU,WACHg4C,IACC7sE,EAASkQ,sBACX6R,EAAS,WACwC,OAAxC/hB,EAASoQ,4BAClB2R,EAAS,0BAmBX8qD,EAAY,CACd5qE,QAAQC,IAAI,6BACZ,IAAM8qE,EAAS,CACbxwE,QAASq9B,EAAQozC,WAAapzC,EAAQqzC,aAAe,gBAAkB,kBACvEC,QAAStzC,EAAQozC,WAAapzC,EAAQqzC,aAAerzC,EAAQozC,UAAYpzC,EAAQkzC,gBAKnF,OAHA9qE,QAAQC,IAAI8qE,GACZr3E,OAAOm3E,OAAOM,YAAYJ,EAA1B,UAAqCr3E,OAAOC,SAASo1D,OAArD,cAEO,cAAC,GAAD,IAUP,OAAO,cAAC,GAAD,OC5EL9rC,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXgmB,KAAM,CACJ9lB,QAAS,OACTE,IAAK,IACLG,WAAY,UAEd0tD,YAAa,CACX/tD,QAAS,OACTG,eAAgB,gBAChBnE,MAAO,QAETyR,QAAS,CACP7E,OAAQ,UAEV+E,SAAU,CACRrU,SAAU,YACVO,MAAOmZ,KAAOtX,0BAWL,SAASsyD,GAAT,GAAwD,IAA9B12E,EAA6B,EAA7BA,KACjCgqB,EAAU1B,KAEhB,OACE,qBAAK8B,UAAWJ,EAAQysD,YAAxB,SACE,sBAAKrsD,UAAWJ,EAAQwkB,KAAxB,UACE,cAACjkB,GAAA,EAAD,CAAYC,QAAQ,KAApB,4BACA,cAACyM,GAAA,EAAD,CAASC,YAAY,WAAWC,UAAQ,EAAC/M,UAAWJ,EAAQmM,UAC5D,cAAC5L,GAAA,EAAD,CAAYH,UAAWJ,EAAQqM,SAA/B,wBAAkDr2B,EAAlD,gBCzBR,IAAMwtC,GAAkBjlB,cAAW,SAACzH,GAAD,OACjC0H,aAAa,CACXoB,MAAO,CACLlB,QAAS,OACTC,cAAe,MACfE,eAAgB,WAChB4kB,cAAe,GAEjBpnB,KAAM,CACJI,OAAQ,UACRmV,WAAY,OACZrZ,MAAOzB,EAAME,QAAQ6b,KAAK,MAE5Bj3B,QAAS,CACP4c,WAAYze,OAAOod,KAAOwB,oBAC1BX,SAAU,aAEZ8H,QAAS,CACPvG,QAAS,YACT6F,WAAY,OACZV,QAAS,OACTC,cAAe,SACfE,eAAgB,SAChBE,WAAY,SACZjC,UAAW,UAEb4mB,QAAS,CACPhoB,UAAW,SACXgD,QAAS,OACTC,cAAe,MACfE,eAAgB,SAChBE,WAAY,UAEd4tD,SAAU,CACRtvD,WAAY,aAkDHuvD,OAtCf,YAAoG,IAAjEplD,EAAgE,EAAhEA,KAAM+H,EAA0D,EAA1DA,QAAS3zB,EAAiD,EAAjDA,QAAS6G,EAAwC,EAAxCA,OACnDud,EAAUwjB,KAMVzT,EAAc,WAClBR,GAAQ,IAGV,OACE,eAACS,GAAA,EAAD,CAAQ5P,UAAU,SAASoH,KAAMA,EAAMc,QAASyH,EAAhD,UACE,cAACE,GAAA,EAAD,CAAa7P,UAAWJ,EAAQJ,MAAhC,SACE,cAAC,KAAD,CAAW5H,SAAS,UAAUoI,UAAWJ,EAAQ3D,KAAM6E,QAAS6O,MAElE,eAACU,GAAA,EAAD,CAAerQ,UAAWJ,EAAQF,QAAlC,UACE,cAACS,GAAA,EAAD,CAAYH,UAAWJ,EAAQpkB,QAA/B,SAAyCA,IACzC,sBAAKwkB,UAAWJ,EAAQ0jB,QAAxB,UACE,cAACziB,GAAA,EAAD,CAAQC,QAAS6O,EAAavP,QAAQ,WAAWjI,MAAM,YAAvD,2BAGA,cAAC0I,GAAA,EAAD,CACEkI,KAAK,eACL/wB,KAAK,SACLmgB,MAAM,UACN6H,UAAWJ,EAAQ2sD,SACnBnsD,QAAQ,YACRU,QAzBO,WACfze,KAkBM,wCC/DJ6b,GAAYC,cAAW,kBAC3BC,aAAa,CACXquD,SAAU,CACRtzD,QAAS,SACTo1B,YAAa,GAEf/uB,MAAO,CACLrH,MAAOyO,KAAUvP,UACjBO,SAAU,YACVQ,YAAawO,KAAUrO,oBAEzBvc,KAAM,CACJmc,MAAOyO,KAAUvP,WAEnBq1D,kBAAmB,CACjBv0D,MAAOyO,KAAUvP,UACjBqF,UAAW,SACXpC,MAAO,MACP1C,SAAU,UACV0D,UAAW,eAkMFqxD,OA7Kf,YAA4D,EAApCnlC,cAAqC,IACrD5nB,EAAU1B,KACV1d,EAAW4uB,cAFyC,EAG/BE,aAAY,SAAC3e,GAAD,OAAsBA,KAArDD,EAHkD,EAGlDA,KAAM9R,EAH4C,EAG5CA,SAH4C,EAIhBgsB,mBAAsB,MAJN,oBAInDgiD,EAJmD,KAIpCC,EAJoC,OAKEjiD,oBAAkB,GALpB,oBAKnDkiD,EALmD,KAK3BC,EAL2B,OAMtBniD,mBAAwB,MANF,oBAMnDoiD,EANmD,KAMvCC,EANuC,KAOpD3zC,EAAWE,iBAAyB,MAPgB,EAQtB5O,mBAAwB,MARF,oBAQnDuiB,EARmD,KAQvCC,EARuC,OAS9BxiB,mBAZrB+jB,KAAUC,SAAS,CAAEt5C,OAAQ,GAAIu5C,SAAS,EAAMC,WAAW,KAGR,oBASnDN,EATmD,KAS3CC,EAT2C,OAUV7jB,oBAAkB,GAVR,oBAUnD3kB,EAVmD,KAUjCinE,EAViC,KA8CtDC,EAAU7/D,GAAKiE,KAAI,SAACmE,GACtB,MAAO,CACLvD,GAAIuD,EACJvB,MAAOuB,EAAEtV,eASb,OANA+sE,EAAQ/5D,QAAQ,CAAEjB,GAAI,GAAIgC,MAAO,6BAO/B,qCACE,cAAC,KAAD,CACE2b,cAAe,CACbpM,WAAY,GACZC,QAAS,GACTC,QAAS,GACTpQ,YAAa,GACbqQ,IAAK,IAEPkM,iBAAkBxL,GAAQd,eAC1BuM,SA5BmB,SAACziB,GACxB0/D,EAAc1/D,GACdw/D,GAA0B,IA2BtBK,gBAAgB,EAVlB,SAYG,YAAiC,IAA9BrnC,EAA6B,EAA7BA,cAAezgB,EAAc,EAAdA,QACjB,OACE,eAAC,KAAD,CAAMtF,UAAU,OAAhB,UACE,eAACkR,GAAA,EAAD,CAAOC,UAAW,EAAlB,UACE,cAAChR,GAAA,EAAD,CAAYH,UAAWJ,EAAQJ,MAA/B,wBACA,cAAC,KAAD,CACEmD,IAAK,GACL3C,UAAU,YACV1pB,KAAK,aACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,SACZP,SAAU,SAACC,GAAD,OAxEK,SAC7BA,EACAqc,GAGAA,EAAc,UADSxxC,GAAU8B,wBAAwBqzB,EAAME,OAAOzV,QAqEtDk5D,CAAuB3jD,EAAOqc,MAGlC,cAAC,KAAD,CACE/lB,UAAU,4BACV1pB,KAAK,UACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,kCACZpB,eAAc,UAAKj0B,OAAOC,SAASo1D,OAArB,OAEhB,sBAAKhqC,UAAU,YAAf,UACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQ5jB,KAA/C,qCAGA,cAACmkB,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQ5jB,KAA/C,mIAKF,cAAC,KAAD,CACEgkB,UAAU,YACV1pB,KAAK,UACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,MACZrH,IAAK,KAEP,cAAC,KAAD,CACE3C,UAAU,YACV1pB,KAAK,MACL20B,UAAW2b,GACX5T,QAASm6C,EACTpjD,MAAM,QAER,cAAC,KAAD,CACE/J,UAAU,YACV1pB,KAAK,cACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,oBAEd,cAAC,GAAD,CAAcwkB,OAAQA,EAAQC,UAAWA,EAAWC,UAAQ,IAC5D,cAAC,GAAD,CACEvV,MAAOyzC,EACPxzC,SAAUyzC,EACV7sE,MAAOmtC,EACP9T,SAAU+T,EACV9T,SAAUA,OAGd,qBAAKtZ,UAAU,WAAf,SACE,qBAAKA,UAAU,mBAAf,SACE,cAACa,GAAA,EAAD,CACE7oB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACRa,kBAAgB,EAChBgJ,UAAW3E,GAAW1mB,EAASqH,oBAAsBknC,IAAey/B,EALtE,SAOGhuE,EAASqH,iBACR,cAAC+mB,GAAA,EAAD,CAAkBzE,MAAO,CAAEpQ,MAAO,QAAU8U,KAAM,GAAIG,UAAW,IAEjE,wBAShB,cAACkgD,GAAD,CACElmD,KAAM0lD,EACN39C,QAAS49C,EACTvxE,QAAQ,sDACR6G,OA7IuB,WAAO,IAAD,EAGwB,GAFzD0qE,GAA0B,GAC1BG,GAAoB,GAChBF,GAAcJ,IAAd,UAA+Bl8D,EAAKpS,eAApC,aAA+B,EAAckT,UAC/ChR,E7JZwB,SAAC5B,EAA2BqsC,GACxD,OAAO,SAACzqC,GAGN,OAFAA,EAASyF,MAEFskC,GAAgBE,eAAe7rC,EAAUqsC,GAAShvC,MACvD,SAACF,GACCyE,EAAS0F,GAAsBnK,OAEjC,SAACiE,GACCQ,EAASorC,GAAqB5rC,Q6JI9ByqC,CACE,CACE/mB,WAAYspD,EAAWtpD,WACvBC,QAASqpD,EAAWrpD,QACpBC,QAASopD,EAAWppD,QACpBpS,OAAM,UAAEd,EAAKpS,eAAP,aAAE,EAAckT,OACtB4S,eAAgB4oD,EAAWx5D,YAC3BirB,QAASuuC,EAAWnpD,IACpBiqB,aAAcU,GAEhBo+B,OAgIJ,cAAC,GAAD,CACExlD,KAAMnhB,GAA4D,OAAxCrH,EAASwH,2BACnC5K,QAASoD,EAASwH,4BAA8B,0CAChDkhB,YAhHa,WACjB4lD,GAAoB,IAgHhBl1E,KAAMnB,GAAO05B,Y,WCvMfrS,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXquD,SAAS,cACPtzD,QAAS,SACTo1B,YAAa,EACbp2B,MAAOyO,KAAU2mD,WAChB72D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B3C,YAAa,YACb5C,QAAS,IAGbqG,MAAO,CACLrH,MAAOyO,KAAUvP,UACjBO,SAAU,YACVQ,YAAawO,KAAUrO,oBAEzBvc,KAAK,cACHmc,MAAOyO,KAAUvP,UACjBO,SAAU,aACTlB,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9Bu2B,UAAW,SACX/1B,SAAU,YAGdmjC,WAAY,CACVtmC,YAAa,WAEfgQ,QAAS,CACPxR,OAAQ,MACRD,MAAO,OACP4M,OAAQ,iBAEVnpB,MAAO,CACLugB,QAAS,OACTK,WAAY,SACZF,eAAgB,SAChBD,IAAK,kBAiNI4V,OAlLGC,aARM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,SAGa,SAAClQ,GAAD,MAA0D,CACnFtC,aAAc,SAACqF,GAAD,OAAuB/C,ElO+FX,SAAC+C,GAAD,OAAuB,SAAC/C,GAGlD,OAFAA,EAASuD,MAEFspB,GAAYnvB,aAAa,CAAEqF,SAAQtH,MACxC,SAACF,GACCyE,EAASyD,GAAoBlI,OAE/B,SAACiE,GACCQ,EAAS4tB,GAAkBpuB,QkOvGe9B,CAAaqF,QAqL9C6wB,EA7Kf,YAAwE,IAApD1jB,EAAmD,EAAnDA,KAAMxS,EAA6C,EAA7CA,aAAcsvE,EAA+B,EAA/BA,SAAUC,EAAqB,EAArBA,OAC1C1sD,EAAWM,eACXzB,EAAU1B,KAFqD,EAIrC0M,oBAAkB,GAJmB,oBAI9D8jB,EAJ8D,KAIpDg/B,EAJoD,OAKvC9iD,oBAAkB,GALqB,oBAK9D2a,EAL8D,KAKrDooC,EALqD,OAMzB/iD,mBAAiB,IANQ,oBAM9DgjD,EAN8D,KAM9CC,EAN8C,OAOjCjjD,oBAAkB,GAPe,oBAO9DkjD,EAP8D,KAOlDC,EAPkD,OAQ7BnjD,oBAAkB,GARW,oBAQ9DojD,EAR8D,KAQhDC,EARgD,KAyC/DC,EAAQ,uCAAG,WAAO3gE,GAAP,iBAAA1R,EAAA,yDACXsyE,EAAY5gE,EAAO2U,MACnB+G,EAAsB,GAER,KAAdklD,IARF,wJACQppD,KAAKyuC,OAOoB2a,GAPN53E,gBAOoB43E,IAAcP,GAAmBE,EAJnE,uBAKbC,GAAc,GACdF,EAAkBM,GANL,SAQP9gD,GAAYI,uBAAuB0gD,GAAWlyE,MAClD,SAACF,GACCgyE,GAAc,GACdE,GAAgB,MAElB,SAACjuE,GAIC,OAHA+tE,GAAc,GACdE,GAAgB,GAChBhlD,EAAO/G,MAAQ,sCACR+G,KAjBE,kCAoBJ+kD,EApBI,wBAqBb/kD,EAAO/G,MAAQ,sCArBF,kBAsBN+G,GAtBM,iCAyBRA,GAzBQ,4CAAH,sDA4Bd,OACE,qCACE,cAAC,KAAD,CACE6G,cAAe,CACbre,MAAO,GACPC,SAAU,GACVkR,YAAa,GACbV,MAAO,GACPE,SAAU,GACVK,eAAgB,IAElBuN,SAtEa,SAACziB,GAClB,IAAMhK,EAAoB,CACxBkO,MAAOlE,EAAOkE,MACdC,SAAUnE,EAAOmE,SACjBkR,YAAarV,EAAOqV,YACpBV,MAAO3U,EAAO2U,MACdE,SAAU7U,EAAO6U,UAGforD,GACFA,EAASjgE,EAAO2U,OAGlBwrD,GAAY,GACZxvE,EAAaqF,IAyDT2qE,SAAUA,EACVE,kBAAkB,EAClBr+C,iBAAkBxL,GAAQ/B,mBAZ5B,SAcE,eAAC,KAAD,CAAMxC,UAAU,OAAhB,UACE,eAACkR,GAAA,EAAD,CAAOC,UAAW,EAAlB,UACE,cAAChR,GAAA,EAAD,CAAYH,UAAWJ,EAAQJ,MAA/B,sCACA,cAAC,KAAD,CACEQ,UAAU,YACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,YAEd,cAAC,KAAD,CACEhK,UAAU,YACV1pB,KAAK,WACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,cAEd,cAAC,KAAD,CACEhK,UAAU,YACV1pB,KAAK,cACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,gBAEd,cAAC,KAAD,CACEhK,UAAU,YACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,UAEd,cAAC,GAAD,CAAeS,UAAU,WAAWC,YAAY,YAAYC,aAAa,wBACzE,qBAAK3K,UAAU,sBAAf,SACE,cAACG,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQ5jB,KAA/C,uGAIF,cAAC,GAAD,CACEyuB,UAAU,iBACVT,YAAY,wBACZU,YAAY,YACZC,aAAa,wBAEf,sBAAK3K,UAAU,WAAf,UACE,sBAAKA,UAAU,YAAf,UACE,cAACquD,GAAA,EAAD,CACEzuD,QAAS,CAAE5G,KAAM4G,EAAQ6sD,UACzBlnC,QAASA,EACT9b,SAAU,kBAAMkkD,GAAYpoC,IAC5BptB,MAAM,YAER,oBAAG6H,UAAWJ,EAAQ5jB,KAAtB,wCAC8B,IAC5B,cAACo1B,GAAA,EAAD,CAAM+G,KAAK,wBAAwBm2C,IAAI,WAAW1kD,OAAO,SAAzD,6CAKJ,cAACiD,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,eACjD,qBAAK9M,UAAWJ,EAAQ7hB,MAAxB,SACE,oBAAGiiB,UAAWJ,EAAQ5jB,KAAtB,uCACyB,cAACo1B,GAAA,EAAD,CAAM+G,KAAK,SAAX,iCAK/B,sBAAKnY,UAAU,mBAAf,UACE,cAACa,GAAA,EAAD,CAAQb,UAAWJ,EAAQyiC,WAAYjiC,QAAQ,WAAWjI,MAAM,YAAY2I,QAAS2sD,EAArF,oBAGA,cAAC5sD,GAAA,EAAD,CAAQoJ,UAAWsb,EAASvtC,KAAK,SAASmgB,MAAM,UAAUiI,QAAQ,YAAYa,kBAAgB,EAA9F,SACGytB,EAAW,cAAC1hB,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,4BAKrE,cAAC,GAAD,CACEiP,KAAMsnB,IAAah+B,EAAKzM,qBAAyD,OAAlCyM,EAAKxM,0BACpD1I,QACEkV,EAAKzM,oBAAsB,sCAAqCyM,EAAKxM,yBAEvEojB,YA3Ia,WACjBomD,GAAY,GAERh9D,EAAK1L,0BACP+b,EAAS,eAwIP/oB,KAAM0Y,EAAKzM,oBAAsB,EAAI,UC/K9BsqE,OAhFf,WAAqB,IAAD,QACZxtD,EAAWM,eACXzsB,EAAWy6B,eAFC,EAGSC,aAAY,SAAC3e,GAAD,OAAsBA,KAArDD,EAHU,EAGVA,KAAM9R,EAHI,EAGJA,SAHI,EAIQgsB,mBAAiB,IAJzB,oBAIX1I,EAJW,KAIJsrD,EAJI,OAKM5iD,mBAAS,GALf,oBAKXh1B,EALW,KAKL2sD,EALK,KAMlB1uB,qBAAU,WACR,GAAa,IAATj+B,EAAY,CACd,IAAIijC,EAAUtkC,GAAUE,mBAEpBokC,EAAQjjC,KACV2sD,EAAQ5oD,OAAOk/B,EAAQjjC,OAEvB2sD,EAAQ,MAGX,CAAC3sD,EAAM2sD,IAEV,IAAMkrB,EAAS,WACb1sD,EAAS,WAGL8yB,EACJ,qCACE,0EAA0C3xB,KAC1C,oGACA,gIA8CJ,OApBA2R,qBAAU,WAAO,IAAD,IAGuD,QAF/Dp4B,EAAU,IAAIC,KACd8yE,GAAqB,UAAA99D,EAAKpS,eAAL,mBAAcM,gBAAd,eAAwBuT,KAAMvT,EAASuH,gBAC9D1K,EAAQ/B,IAAI,UAAY9E,EAAS+H,SAAS3G,SAAS,eACjDw4E,KAAsB,UAAC99D,EAAKpS,eAAN,iBAAC,EAAcM,gBAAf,aAAC,EAAwBiS,cACjDkQ,EAAS,yBACAytD,IAAkB,UAAI99D,EAAKpS,eAAT,iBAAI,EAAcM,gBAAlB,aAAI,EAAwBiS,cACvDkQ,EAAS,cAETA,EAAS,uBAGZ,WACDrQ,EAAKpS,eADJ,iBACD,EAAcM,gBADb,aACD,EAAwBiS,aADvB,UAEDH,EAAKpS,eAFJ,iBAED,EAAcM,gBAFb,aAED,EAAwBuT,GACxBvT,EAASuH,gBACTvR,EAAS+H,SACTokB,IAIA,qCACY,IAATnrB,IA3CE8a,EAAKzM,oBAQD,cAAC,GAAD,CAAWjI,KAAM63C,IANtB,sBAAK7zB,UAAU,2BAAf,UACE,cAACssD,GAAD,CAAgB12E,KAAMA,IACtB,cAAC,GAAD,CAAU43E,SAAUA,EAAUC,OAAQA,QAwChC,IAAT73E,GA9BD,sBAAKoqB,UAAU,2BAAf,UACE,cAACssD,GAAD,CAAgB12E,KAAMA,EAAM63E,OAAQA,EAAQgB,mBAAiB,IAC7D,cAAC,GAAD,WCDOC,OAhDf,WAA+B,IAAD,QACtB3tD,EAAWM,eADW,EAEeiO,aAAY,SAAC3e,GAAD,OAAsBA,KAArED,EAFoB,EAEpBA,KAAM9R,EAFc,EAEdA,SAAUoN,EAFI,EAEJA,eAClBwiE,GAAqB,UAAA99D,EAAKpS,eAAL,mBAAcM,gBAAd,eAAwBuT,KAAMvT,EAASuH,gBA0BlE,OAxBA0tB,qBAAU,WACR,IAE0B,KAFV,IAAIn4B,MAERhC,IAAI,UACT80E,GAAsB99D,EAAKpS,QAC9ByiB,EAAS,oBAETytD,IAAkB,UAClB99D,EAAKpS,eADa,iBAClB,EAAcM,gBADI,aAClB,EAAwBiS,gBACvB7E,EAAeG,4BAEhB4U,EAAS,cAGXA,EAAS,YAEV,CACDrQ,EAAKpS,QADJ,UAEDoS,EAAKpS,eAFJ,iBAED,EAAcM,gBAFb,aAED,EAAwBiS,aACxB7E,EAAeG,2BACfqiE,EACAztD,IAIA,mCACG/U,EAAeW,eACd,cAAC,GAAD,IAEA,sBAAKqT,UAAU,2BAAf,UACE,cAAC,GAAD,CAAaR,MAAM,8BACnB,cAAC,GAAD,CACEgoB,cAAe,kBAAMzmB,EAAS,eAC9B/O,cAAe,KACfk0B,oBAAkB,EAClBvvC,gBAAc,UCzBpBunB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXC,UAAW,CACT,QAAS,CACP/C,UAAW,OACXnD,MAAOmZ,KAAOja,WAEhB,uCAAwC,CACtCc,MAAOmZ,KAAOja,WAEhB,0CAA2C,CACzC,qBAAsB,CACpBc,MAAOmZ,KAAOza,WAIpB7a,KAAM,CAAE6iB,aAAc,QACtB8vD,YAAa,CACXrzD,UAAW,OACXgD,QAAS,OACTG,eAAgB,gBAChBE,WAAY,SACZH,IAAK,OACL,WAAW,cACTlE,MAAO,SACN5D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BwI,OAAQ,cAId0nD,cAAc,gBACXl4D,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9By/B,SAAU,SAgJH/pB,OAhIGC,aAVM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,KACZ1E,eAAgB2E,EAAM3E,mBAGG,SAACxL,GAAD,MAA0D,CACnFyhC,aAAc,kBAAMzhC,EAASyhC,OAC7BE,mBAAoB,SAAChsC,EAAD,OAAuB2I,EAAvB,EAAuBA,QAAvB,OAClB0B,EnL6S8B,SAACrK,EAAoB2I,GACrD,OAAO,SAAC0B,GAGN,OAFAA,EAASwM,MAEF20B,GAAsBQ,mBAAmBhsC,EAAY2I,GAAS7C,MACnE,SAACF,GACCyE,EAASyM,SAEX,SAACjN,GACCQ,EAASwiC,GAAqBhjC,QmLtTzBmiC,CAAmBhsC,EAAY,CAAE2I,iBAkI/Bs1B,EA5Hf,YAAkG,IAA3E1jB,EAA0E,EAA1EA,KAAM1E,EAAoE,EAApEA,eAAgBm2B,EAAoD,EAApDA,mBAAoBF,EAAgC,EAAhCA,aACzDriB,EAAU1B,KAEV6C,EAAWM,eAH8E,EAIlCuJ,oBAAkB,GAJgB,oBAIxFikD,EAJwF,KAIhEC,EAJgE,OAKlDlkD,mBAA0B,IALwB,oBAKxFmkD,EALwF,KAKxEC,EALwE,KAMzFh3C,EAAarjC,OAAOC,SAAS+H,SAASmtB,WAAW,aAEvD+J,qBAAU,WAEL7nB,EAAeW,gBACW,OAA3BX,EAAelN,SACwB,OAAvCkN,EAAeY,qBAEfq1B,MAED,CACDj2B,EAAeW,eACfX,EAAelN,QACfkN,EAAeY,oBACfq1B,IAGF,IAKMxY,EAAW,SAACC,GACZqlD,EAAej5E,MAAK,SAAC4f,GAAD,OAAOA,EAAEpf,OAASozB,EAAME,OAAOtzB,QACrD04E,EACED,EAAen9D,QAAO,SAAC8D,GACrB,OAAOA,EAAEpf,OAASozB,EAAME,OAAOtzB,SAInC04E,EACED,EAAep8D,OAAO,CACpB,CACErc,KAAMozB,EAAME,OAAOtzB,KACnB6b,GAAIuX,EAAME,OAAOzX,QAc3B,OACE,sBAAK6N,UAAWJ,EAAQvB,UAAxB,UACE,eAAC6S,GAAA,EAAD,CAAOC,UAAW,EAAlB,UACE,cAAChR,GAAA,EAAD,CAAYC,QAAQ,QAAQJ,UAAWJ,EAAQ5jB,KAA/C,uKAIA,qBAAKgkB,UAAU,OAAf,SACGhU,EAAeW,eACd,cAAC,GAAD,IAEA,qBAAKqT,UAAU,eAAf,SACGhU,EAAelN,SACdkN,EAAelN,QAAQyS,KAAI,SAAC9Y,GAAD,OACzB,cAACk4D,GAAA,EAAD,CACEC,QACE,cAACyd,GAAA,EAAD,CACE9oC,QAASwpC,EAAej5E,MAAK,SAAC4f,GAAD,OAAOA,EAAEpf,OAASmC,EAAOA,UACtD0f,MAAM,UACNsR,SAAUA,EACVnzB,KAAMmC,EAAOA,OACb0Z,GAAI1Z,EAAO0Z,KAGf4X,MAAOtxB,EAAOA,mBAO5B,sBAAKunB,UAAWJ,EAAQ+uD,YAAapmD,MAAQyP,EAA8C,GAAjC,CAAEvZ,eAAgB,YAA5E,UACGuZ,GACC,cAACnX,GAAA,EAAD,CAAQT,QAAQ,WAAWU,QAAS,kBAAMC,EAAS,WAAnD,oBAIF,cAAC,GAAD,IACA,cAACF,GAAA,EAAD,CACEC,QAtEO,WAAO,IAAD,EACnBguD,GAA2B,GAC3B3sC,EAAkB,UAACzxB,EAAKpS,eAAN,aAAC,EAAcM,SAASuT,GAAK,CAAErT,QAASiwE,KAqEpD52D,MAAM,UACNiI,QAAQ,YACR6J,SAAU8kD,EAAez5E,OAAS,GAAK0W,EAAegB,sBACtDiU,kBAAgB,EAChBjB,UAAWJ,EAAQgvD,cANrB,SAQG5iE,EAAegB,sBACd,cAACggB,GAAA,EAAD,CAAkB7U,MAAM,UAAU8U,KAAM,KAExC,iBAIN,cAAC,GAAD,CACE7F,KACEynD,IACC7iE,EAAeiB,uBAAuE,OAA9CjB,EAAekB,4BAE1D1R,QACEwQ,EAAeiB,sBACX,mGACA,yEAENqa,YAtEa,WACjBwnD,GAA2B,GACvB9iE,EAAeiB,uBACjB8T,EAAS,0BAoEP/oB,KAAMgU,EAAeiB,sBAAwBpW,GAAO4wB,QAAU5wB,GAAO05B,cC3K9D0+C,OAhBf,WACE,IAAMv+D,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QAC/CqQ,EAAWM,eAMjB,OAJAwS,qBAAU,WACHnjB,EAAKpS,SAASyiB,GAAU,KAC5B,CAACrQ,EAAKpS,QAASyiB,IAGhB,sBAAKf,UAAU,2BAAf,UACE,cAAC,GAAD,CAAaR,MAAM,2BACnB,cAAC,GAAD,QCMA4U,GAAYC,aATM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,SAGa,SAAClQ,GAAD,MAA0D,CACnFxC,cAAe,SAAC4vB,GAAD,OACbptB,EvO+FF,SAAC,GAAD,IAAG0hB,EAAH,EAAGA,MAAH,OACA,SAAC1hB,GACCA,EAASiD,MAET,IAAMmqB,EAA6C,CACjD1L,SAGF,OAAOmL,GAAYrvB,cAAc4vB,GAAsB3xB,MACrD,SAACF,GACCyE,EAASkD,SAEX,SAAC1D,GACCQ,EAAS0tB,GAAmBluB,QuO5GvBhC,CAAc4vB,SAWrB1P,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXusC,cAAe,CACbrwC,MAAO,OAETswC,gBAAiB,CACftwC,MAAO,OAET8C,OAAO,gBACJ1G,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9BtF,SAAU,QACVkB,MAAO,aAgFA8Z,WA1Ef,YAAiE,IAAxC1jB,EAAuC,EAAvCA,KAAM1S,EAAiC,EAAjCA,cACvB+iB,EAAWM,eACXzB,EAAU1B,KAF8C,EAId0M,oBAAkB,GAJJ,oBAIvDnnB,EAJuD,KAIrCotB,EAJqC,KAmB9D,OACE,qBAAK7Q,UAAU,2BAAf,SACE,eAACkR,GAAA,EAAD,CAAOC,UAAW,EAAlB,UACE,cAAC,GAAD,CAAa3R,MAAM,4BACnB,cAAC,KAAD,CACEsQ,cAAe,CAAE5N,MAAO,IACxB6N,iBAAkBxL,GAAQhC,oBAC1ByN,SApBY,SAACziB,EAAgB0iB,GACnC,IAAMr0B,EAAgC,CACpCsmB,MAAO3U,EAAO2U,OAGhB2O,GAAoB,GACpB7yB,EAAcpC,IAWV,SAKG,kBACC,eAAC,KAAD,CAAMokB,UAAU,OAAhB,UACE,cAAC,KAAD,CACEA,UAAU,WACV1pB,KAAK,QACL20B,UAAWtC,GACX3wB,KAAK,OACLgyB,YAAY,0BAEd,sBAAKhK,UAAU,mBAAf,UACE,cAACa,GAAA,EAAD,CACET,QAAQ,WACRjI,MAAM,YACN2I,QAAS,kBAAMC,EAAS,WACxBf,UAAS,UAAKJ,EAAQxC,OAAb,YAAuBwC,EAAQgrC,iBAJ1C,oBAQA,cAAC/pC,GAAA,EAAD,CACE7oB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACRJ,UAAS,UAAKJ,EAAQxC,OAAb,YAAuBwC,EAAQ+qC,eACxC1gC,SAAUxmB,EALZ,SAOGA,EAAmB,cAACupB,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,uBAM/E,cAAC,GAAD,CACEiP,KAAM3jB,IAAqBiN,EAAKhN,sBAA2D,OAAnCgN,EAAK/M,2BAC7DnI,QACEkV,EAAKhN,qBACD,sEACA,oDAEN4jB,YAnDW,WACjBuJ,GAAoB,IAmDd74B,KAAM0Y,EAAKhN,qBAAuB7M,GAAO4wB,QAAU5wB,GAAO05B,gBCDrD2+C,OArGf,WAAmB,IAAD,YACe5/C,aAAY,SAAC3e,GAAD,MAAuB,CAChE3R,SAAU2R,EAAM3R,SAChBJ,SAAU+R,EAAM/R,aAFVI,EADQ,EACRA,SAAUJ,EADF,EACEA,SADF,EAKUgsB,oBAAkB,GAL5B,oBAKTukD,EALS,KAKFC,EALE,KAMVruD,EAAWM,eACbwX,EAAUtkC,GAAUE,mBAClBqa,EAAqB9P,EAAS8P,mBAE9BugE,EAAgE,YAA5B,OAAlBvgE,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBm3C,WAAW/b,YAEjDolC,EAAeD,EAAkB,qBAAoB,8CAErD/vD,EAAY,cAAC,KAAD,CAAQmB,cAAeiY,GAAkB/X,MAAM,IAC3D4uD,EACJ,qCACGF,EACC,qCACE,cAAClvD,GAAA,EAAD,CAAYH,UAAU,YAAYI,QAAQ,KAA1C,gEACyCtR,QADzC,IACyCA,OADzC,EACyCA,EAAoB0gE,cAE7D,cAACrvD,GAAA,EAAD,CAAYH,UAAU,YAAYI,QAAQ,QAA1C,mFACyDtR,QADzD,IACyDA,GADzD,UACyDA,EAAoBm3C,kBAD7E,aACyD,EAAgC/b,iBAI3F,eAAC/pB,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAU,mBAA1C,2CACuBhhB,EAASmQ,wBADhC,aACuB,EAA2B7O,oBAGnDwO,GAAsB9P,EAASmQ,kBAAoBggE,GAClD,cAAC,KAAD,CACE/zC,SACE,cAAC,GAAD,2BACEpjC,KAAK,mBACD8W,GAFN,IAGEK,iBAAkBnQ,EAASmQ,iBAC3Bi3C,gBAAe,UAAExnD,EAASA,gBAAX,aAAE,EAAmB6/B,WAGxCqoB,SAAQ,eAAU9nD,EAASmQ,iBAAiB7O,kBAC5CioB,MAAO,CAAE9K,eAAgB,QAV3B,SAYG,gBAAG8O,EAAH,EAAGA,QAAH,OACC,cAAC1L,GAAA,EAAD,CAAQT,QAAQ,YAAYjI,MAAM,UAAU8R,SAAUsC,EAASvM,UAAU,kBAAzE,yCAkCV,OAzBA6T,qBAAU,WAEL70B,EAASiQ,mBACTjQ,EAASkQ,uBAC8B,OAAxClQ,EAASoQ,4BACRypB,EAAQkzC,gBAEThrD,EAAS,OAEV,CACD/hB,EAASiQ,kBACTjQ,EAASkQ,sBACTlQ,EAASoQ,2BACTypB,EAAQkzC,eACRhrD,IAGF8S,qBAAU,WACHs7C,GACHz6B,YAAW,WACT06B,GAAS,KACR,OAEJ,CAACD,EAAOC,IAEJpwE,EAASiQ,kBACd,cAAC,GAAD,IAC0C,OAAxCjQ,EAASoQ,2BACX,cAAC,GAAD,CACEoQ,MAAM,4BACNC,SAAQ,0CACN,UAAAzgB,EAASmQ,wBAAT,eAA2B4F,kBAAmB,gBAEhD8qC,iBAAgB,UAAE7gD,EAASmQ,wBAAX,aAAE,EAA2B7O,mBAG/C,qBAAK0f,UAAU,2BAAf,SACE,cAAC,GAAD,CACER,MAAO8vD,EACP7vD,SAhFkB,qEAiFlBC,QAAS6vD,EACTjwD,UAAWA,OCrGbpB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXqxD,gBAAiB,CACfnxD,QAAS,OACTC,cAAe,SACfI,WAAY,SACZ1F,aAAc,MACdqB,MAAO,OACPnB,QAAS,oBAEXu2D,eAAgB,CACdpxD,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,OACP,MAAO,CACLq1D,SAAU,WACVx3D,MAAOpB,KAAOM,UACde,YAAarB,KAAOwB,mBACpB2O,OAAQ,IAGZ6E,QAAS,CACP7E,OAAQ,aACR3M,OAAQ,OAEV2zC,uBAAwB,CACtB5vC,QAAS,OACT/D,OAAQ,OACR,QAAS,CACPA,OAAQ,SAGZq1D,wBAAyB,CACvBtxD,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBE,WAAY,SACZrE,MAAO,QAETtO,eAAgB,CACdsS,QAAS,OACTC,cAAe,MACfI,WAAY,SACZ,MAAO,CACL/G,SAAU,UACVQ,YAAarB,KAAOsB,iBACpBF,MAAOpB,KAAO6E,WAEhB,QAAS,CACPrB,OAAQ,WAGZs1D,qBAAsB,CACpB3oD,OAAQ,iBA+DC4oD,OArDf,YAA6F,IAA5DvwE,EAA2D,EAA3DA,YAAayM,EAA8C,EAA9CA,eACtC4T,EAAU1B,KACV6C,EAAWM,eACXy7B,EAA8C,KAAb,OAAd9wC,QAAc,IAAdA,OAAA,EAAAA,EAAgB1W,QAEnCy6E,GAAsC,OAAd/jE,QAAc,IAAdA,OAAA,EAAAA,EAAgB1W,QADnB,EAErB06E,EAAwBD,EAC1B/jE,EAAegmC,MAAM,EAHE,GAIvBhmC,EACEsJ,EAAU/V,EAAY9C,SAAW/E,GAAsB03D,OAE7D,OACE,eAACxO,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQ6vD,gBAAzB,UACE,sBAAKzvD,UAAWJ,EAAQ8vD,eAAxB,UACE,4BAAInwE,EAAYjJ,OAChB,cAAC,GAAD,CACE8mD,QAAM,EACNrzB,MAAOzU,EAAU,aAAe,gBAChC6C,MAAO7C,EAAU,UAAY,YAGjC,cAACuX,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASgB,UAAQ,IAC7C,sBAAK/M,UAAWJ,EAAQgwD,wBAAxB,UACE,sBAAK5vD,UAAWJ,EAAQ5T,eAAxB,UACG8wC,EACC,iEADe,OAGfkzB,QAHe,IAGfA,OAHe,EAGfA,EAAuBz+D,KAAI,SAACS,EAAeiiB,GAAhB,OACzB,sBAAKjU,UAAWJ,EAAQsuC,uBAAxB,UACE,qBAAKjuC,IAAKjO,EAAcg4B,eAAgB9pB,IAAI,KAC3C+T,KAAwB,OAAdjoB,QAAc,IAAdA,OAAA,EAAAA,EAAgB1W,QAAS,GAClC,cAACu3B,GAAA,EAAD,CAAS7M,UAAWJ,EAAQiwD,qBAAsB/iD,YAAY,WAAWC,UAAQ,MAHhC/a,EAAcG,OAQtE49D,GACC,cAAC,GAAD,CACE3yB,QAAM,EACNrzB,MAAK,WAAM/d,EAAe1W,OAnCX,GAoCf6iB,MAAM,OACNklC,aAAc,CAAEn2B,OAAQ,eAAgB/N,QAAS,QAAShB,MAAOpB,KAAOg4C,gBAI9E,sBAAMjuC,QAAS,kBAAMC,EAAS,gBAAiB,CAAEpQ,MAAO,CAAEpR,kBAA1D,SACE,cAAC,GAAD,aC/GJ2e,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXqxD,gBAAiB,CACfnxD,QAAS,OACTC,cAAe,MACfE,eAAgB,gBAChBxF,aAAc,OACdE,QAAS,mBACT,MAAO,CACLw2D,SAAU,WACVx3D,MAAOpB,KAAOM,UACde,YAAarB,KAAOwB,qBAGxB03D,uBAAwB,CACtB3xD,QAAS,OACTC,cAAe,SACf,MAAO,CACL2I,OAAQ,IAGZlb,eAAgB,CACdsS,QAAS,OACTC,cAAe,MACfI,WAAY,SACZrD,UAAW,WACXorB,UAAW,SACX,MAAO,CACL9uB,SAAU,UACVQ,YAAarB,KAAOsB,iBACpBF,MAAOpB,KAAO6E,YAGlBsyC,uBAAwB,CACtB5vC,QAAS,OACT/D,OAAQ,OACR,QAAS,CACPA,OAAQ,SAGZ21D,gBAAiB,CACf5xD,QAAS,OACTC,cAAe,MACfI,WAAY,SACZ,SAAU,CACRL,QAAS,SAGbuxD,qBAAsB,CACpB3oD,OAAQ,aAEV6E,QAAS,CACP7E,OAAQ,YACR3M,OAAQ,MACR06B,UAAW,cA+DFk7B,OArDf,YAAiF,IAAtD5wE,EAAqD,EAArDA,YAAayM,EAAwC,EAAxCA,eAChC4T,EAAU1B,KACV6C,EAAWM,eACXy7B,EAA8C,KAAb,OAAd9wC,QAAc,IAAdA,OAAA,EAAAA,EAAgB1W,QAEnCy6E,GAAsC,OAAd/jE,QAAc,IAAdA,OAAA,EAAAA,EAAgB1W,QADnB,EAErB06E,EAAwBD,EAC1B/jE,EAAegmC,MAAM,EAHE,GAIvBhmC,EACEsJ,EAAU/V,EAAY9C,SAAW/E,GAAsB03D,OAE7D,OACE,eAACl+B,GAAA,EAAD,CAAOlR,UAAWJ,EAAQ6vD,gBAA1B,UACE,sBAAKzvD,UAAWJ,EAAQqwD,uBAAxB,UACE,4BAAI1wE,EAAYjJ,OAChB,sBAAK0pB,UAAWJ,EAAQ5T,eAAxB,UACG8wC,EACC,iEADe,OAGfkzB,QAHe,IAGfA,OAHe,EAGfA,EAAuBz+D,KAAI,SAACS,EAAeiiB,GAAhB,OACzB,sBAAKjU,UAAWJ,EAAQsuC,uBAAxB,UACE,qBAAKjuC,IAAKjO,EAAcg4B,eAAgB9pB,IAAI,KAC3C+T,KAAwB,OAAdjoB,QAAc,IAAdA,OAAA,EAAAA,EAAgB1W,QAAS,GAClC,cAACu3B,GAAA,EAAD,CAAS7M,UAAWJ,EAAQiwD,qBAAsB/iD,YAAY,WAAWC,UAAQ,MAHhC/a,EAAcK,aAQtE09D,GACC,cAAC,GAAD,CACE3yB,QAAM,EACNrzB,MAAK,WAAM/d,EAAe1W,OA3BX,GA4Bf6iB,MAAM,OACNklC,aAAc,CAAEn2B,OAAQ,eAAgB/N,QAAS,QAAShB,MAAOpB,KAAOg4C,mBAKhF,sBAAK/uC,UAAWJ,EAAQswD,gBAAxB,UACE,cAAC,GAAD,CACE9yB,QAAM,EACNrzB,MAAOzU,EAAU,aAAe,gBAChC6C,MAAO7C,EAAU,UAAY,SAE/B,cAACuX,GAAA,EAAD,CAAS7M,UAAWJ,EAAQmM,QAASe,YAAY,WAAWC,UAAQ,IACpE,sBAAMjM,QAAS,kBAAMC,EAAS,iBAAD,OAAkBxhB,EAAY4S,MAA3D,SACE,cAAC,GAAD,aC5GGi+D,GAAqB,CAChCC,iB,6CACAC,kB,6CACAC,kB,6CACAC,+B,iDACAC,kC,4FAGF,WAAgCt6E,GAAhC,SAAA0F,EAAA,sEACenC,GAAG,UAAmBoE,GAAS,YAA5B,uBAA0D3H,IACvE8F,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KANZ,oF,oEAUA,WACE0wE,GADF,SAAA70E,EAAA,sEAGe2B,GAAI,UAAiBM,GAAS,aAAmB4yE,GAC3Dz0E,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WACE2wE,GADF,SAAA90E,EAAA,sEAGe8B,GAAG,UAAiBG,GAAS,aAAmB6yE,GAC1D10E,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KARZ,oF,oEAYA,WACE7J,EACAmc,EACAgwB,GAHF,SAAAzmC,EAAA,sEAKegC,GAAU,UAClBC,GAAS,QADS,0BACoB3H,EADpB,YACkCmc,GACvD,CAAEgwB,kBAEDrmC,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAbZ,oF,oEAiBA,WACE4wE,GADF,SAAA/0E,EAAA,sEAGe2B,GAAI,UACZM,GAAS,QADG,kBAEf8yE,GAEC30E,MAAK,SAACF,GACL,OAAOA,EAASI,cAEjB4D,OAAM,SAACC,GACN,MAAMA,KAXZ,oF,sBCvCO,IAAMqwE,GAAmB,SAACl6E,GAC/B,OAAO,SAACqK,GAGN,OAFAA,EAAS+O,MAEF6gE,GAAmBC,iBAAiBl6E,GAAY8F,MACrD,SAACF,GACCyE,EAASqwE,GAAe90E,OAE1B,SAACiE,GACCQ,EAASswE,GAAkB9wE,SAMtBuP,GAAqB,iBAA8B,CAC9DvX,KAAM3E,KAGKw9E,GAAiB,SAACtxE,GAAD,MAAwD,CACpFvH,KAAM1E,GACNiM,gBAGWuxE,GAAoB,SAAC9wE,GAAD,MAA2C,CAC1EhI,KAAMzE,GACNyM,UAoBWyP,GAAsB,iBAA+B,CAChEzX,KAAMxE,KAGKkc,GAA2B,SAACnQ,GAAD,MAAuD,CAC7FvH,KAAMvE,GACN8L,gBAGWwxE,GAA0B,SAAC/wE,GAAD,MAA4C,CACjFhI,KAAMtE,GACNsM,UAOWuwE,GAAoB,SAACI,GAChC,OAAO,SAACnwE,GAGN,OAFAA,EAASoP,MAEFwgE,GAAmBG,kBAAkBI,GAA0B10E,MACpE,SAACF,GACCyE,EAASqP,GAAyB9T,OAEpC,SAACiE,GACCQ,EAASwwE,GAAwBhxE,SAM5B4P,GAAsB,iBAA+B,CAChE5X,KAAMrE,KAGKkc,GAA2B,SAACtQ,GAAD,MAAuD,CAC7FvH,KAAMpE,GACN2L,gBAGWyxE,GAA0B,SAAChxE,GAAD,MAA4C,CACjFhI,KAAM7D,GACN6L,UAgCWqQ,GAAmC,iBAA+B,CAC7ErY,KAAMhE,KAGKsc,GAAwC,SAAC/Q,GAAD,MAAuD,CAC1GvH,KAAM/D,KAGKg9E,GAAuC,SAACjxE,GAAD,MAA4C,CAC9FhI,KAAM9D,GACN8L,UA0BWkQ,GAAiC,iBAA+B,CAC3ElY,KAAMnE,KAGKsc,GAAqC,SAAC6B,GAAD,MAA2D,CAC3Gha,KAAMlE,GACNke,kBAGWk/D,GAAoC,SAAClxE,GAAD,MAA4C,CAC3FhI,KAAMjE,GACNiM,UC1LIke,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXmN,YAAa,CACXjN,QAAS,OACTC,cAAe,MACfjE,MAAO,OACPmE,eAAgB,gBAChBE,WAAY,UAEdmlB,WAAY,CACVpnB,UAAW,OACXu4B,UAAW,aACX/tB,OAAQ,kBACR/O,MAAOpB,KAAOg4C,UACdn3C,SAAU,WACVQ,YAAarB,KAAOsB,kBAEtBgG,UAAW,CACT/D,MAAO,OACPnB,QAAS,OACTmC,UAAW,QAEb61D,qBAAsB,CACpB72D,MAAO,OACPgE,QAAS,OACTC,cAAe,SACfjD,UAAW,OACXkD,IAAK,kBAuEI4yD,OAlEf,WAA0B,IAAD,YACjB16D,EAAQmJ,eACRrf,EAAW4uB,cACXrO,EAAWM,eAHM,EAIOiO,aAAY,SAAC3e,GAAD,OAAsBA,KAAxDD,EAJe,EAIfA,KAAMnR,EAJS,EAITA,YACRqgB,EAAU1B,KACVoN,EAAWvL,aAAcrJ,EAAM8B,YAAYkG,KAAK,OAChDvoB,EAAU,UAAGua,EAAKpS,eAAR,aAAG,EAAcM,SAASuT,GAc1C,OAZA0hB,qBAAU,WAAO,IAAD,KACV,UAACnjB,EAAKpS,eAAN,iBAAC,EAAcM,gBAAf,aAAC,EAAwBgzB,uBAC3B7Q,EAAS,gBAEV,WAACrQ,EAAKpS,eAAN,iBAAC,EAAcM,gBAAf,aAAC,EAAwBgzB,qBAAsB7Q,IAElD8S,qBAAU,WACJnjB,EAAKpS,SACPkC,EAAS6vE,GAAiBl6E,MAE3B,CAACua,EAAKpS,QAASnI,EAAYqK,IAG5B,sBAAKwf,UAAU,mBAAf,UACE,qBAAKA,UAAWJ,EAAQ2L,YAAxB,SACE,cAAC,GAAD,2BACE/L,MAAM,mBACA8L,GAAY,CAAEc,eAAc,UAAE7sB,EAAYsH,qBAAd,aAAE,EAA2BvR,SAFjE,aAIE,cAACurB,GAAA,EAAD,CAAQT,QAAQ,YAAYjI,MAAM,UAAU2I,QAAS,kBAAMC,EAAS,kBAApE,iCAKJ,mBAAGf,UAAWJ,EAAQkkB,WAAtB,+EACEvkC,EAAYsH,cAE4B,KAAtC,UAAAtH,EAAYsH,qBAAZ,eAA2BvR,QAC7B,cAACsrD,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQvB,UAAzB,SACE,cAAC,GAAD,CACEmB,MAAM,+CACNhkB,QAAQ,wDAIZ,qBAAKwkB,UAAWJ,EAAQuxD,qBAAxB,mBACG5xE,EAAYsH,qBADf,aACG,EAA2B0K,KAAI,SAAChS,GAAD,OAC9B+rB,EACE,cAAC,GAAD,CAEE/rB,YAAaA,EACbyM,eAAgBzM,EAAYs8C,iBAFvBt8C,EAAYjJ,MAKnB,cAAC,GAAD,CAEEiJ,YAAaA,EACbyM,eAAgBzM,EAAYs8C,iBAFvBt8C,EAAYjJ,WAnBzB,cAAC,GAAD,QCeO+6E,OA/Ef,YAA8E,IAA5CprC,EAA2C,EAA3CA,OAAQj0B,EAAmC,EAAnCA,cACxC,OAAKi0B,EA4DH,mCACGA,EAAO10B,KAAI,SAAC40B,GACX,IAAMC,EA5Dc,SAACpuC,GACzB,OAAQA,GACN,KAAK,KACH,MAAO,CACL1B,KAAM,wBACN6d,MAAO,kBAGX,KAAK,KACH,MAAO,CACL7d,KAAM,wBACN6d,MAAO,kBAGX,KAAK,IACH,MAAO,CACL7d,KAAM,sBACN6d,MAAO,iBAEX,KAAK,IACH,MAAO,CACL7d,KAAM,8BACN6d,MAAO,sBAEX,KAAK,KACH,MAAO,CACL7d,KAAM,MACN6d,MAAO,OAEX,KAAK,KACH,MAAO,CACL7d,KAAM,MACN6d,MAAO,wBAGX,QACE,MAAO,CAAE7d,KAAM,GAAI6d,MAAO,GAAIyf,SAAU,OAwBtByS,CAAkBF,EAAEG,WAEtC,MAAwB,KAApBF,EAAUjyB,MACL,KAGe,uBAApBiyB,EAAUjyB,MA1BkB,SAACiyB,EAAsBp0B,GAAvB,aACpC,cAAC2yB,GAAA,EAAD,CAA4BC,MAAI,EAACnsB,GAAI,GAArC,SACE,cAAC,KAAD,CACEniB,KAAM8vC,EAAUjyB,MAChB8W,UAAW4a,GACX9b,MAAOqc,EAAU9vC,KACjB2zB,YAAW,OAACjY,QAAD,IAACA,GAAD,UAACA,EAAei0B,cAAhB,aAAC,EAAuBM,uBAL5BH,EAAUjyB,OA0BRm9D,CAA8BlrC,EAAWp0B,GAhB7B,SAACo0B,GAAD,OACzB,cAACzB,GAAA,EAAD,CAA4BC,MAAI,EAACnsB,GAAI,GAArC,SACE,cAAC,KAAD,CAAOniB,KAAM8vC,EAAUjyB,MAAO8W,UAAWtC,GAAe3wB,KAAK,OAAOgyB,YAAaoc,EAAU9vC,QADlF8vC,EAAUjyB,OAkBVo9D,CAAmBnrC,QAxEZ,MCwCPa,OA3Cf,YAA0G,IAA7Ej1B,EAA4E,EAA5EA,cAAewyB,EAA6D,EAA7DA,eAAgB0C,EAA6C,EAA7CA,kBACpDl7B,EAAiBsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAEzDm7B,EAAcrI,GAAaC,eAAe/yB,EAAgBgG,GAEhE,OACE,qCACE,cAAC2yB,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,cAAC,KAAD,CACEniB,KAAK,SACL20B,UAAW2b,GACX3c,SAA4B,OAAlBjY,EACV+X,MAAM,gBACNiJ,QAASmU,MAGb,cAACxC,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACGyuB,KAEY,OAAd1C,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,oBACf,cAAC0F,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,cAAC,KAAD,CACEniB,KAAK,WACL20B,UAAW2b,GACX7c,MAAM,aACNiJ,SACgB,OAAdwR,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,mBAAhB,OACIuF,QADJ,IACIA,OADJ,EACIA,EAAgBvF,kBAAkB1tB,KAAI,SAAC61B,GACrC,MAAO,CACLj1B,GAAIi1B,EAAGnjB,SACP9P,MAAOizB,EAAGnjB,SACVgG,UAAU,MAGd,WC/BHqd,OAbf,WACE,OACE,qCACE,cAAC3C,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAf,SACE,cAAC,KAAD,CAAOniB,KAAK,iBAAiB20B,UAAWtC,GAAe3wB,KAAK,OAAOgyB,YAAY,sBAEjF,cAAC2a,GAAA,EAAD,CAAMC,MAAI,EAACnsB,GAAI,GAAIuH,UAAU,kBAA7B,oHCgCSkN,OA9Bf,YAOuB,IANrBv2B,EAMoB,EANpBA,eACA66E,EAKoB,EALpBA,iBACAC,EAIoB,EAJpBA,iBACAz/D,EAGoB,EAHpBA,cACAiY,EAEoB,EAFpBA,SACAsC,EACoB,EADpBA,QAEA,OACE,qBAAKvM,UAAU,mBAAf,SACE,cAACa,GAAA,EAAD,CACE7oB,KAAK,SACLmgB,MAAM,UACNiI,QAAQ,YACR2I,KAAK,sBACLoE,WAAYx2B,EACZszB,SAAUunD,GAAoBC,GAAoBxnD,EANpD,SAQGunD,GAAoBC,GAAoBllD,EACvC,cAACS,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAChCnG,EACF,kBAEA,6BCqHK0/D,OApHf,YAKuC,IAAD,QAJpC1/D,EAIoC,EAJpCA,cACAw1B,EAGoC,EAHpCA,cACAmqC,EAEoC,EAFpCA,8BACAliB,EACoC,EADpCA,oBACoC,EACHngC,aAAY,SAAC3e,GAAD,OAAsBA,KAA3DD,EAD4B,EAC5BA,KAAM1E,EADsB,EACtBA,eACRxL,EAAW4uB,cACXkV,EAAuBtyB,EAAgBA,EAAczE,OAAS,CAAC,GAHjC,EAOkBqd,oBAAkB,GAPpC,oBAO7BgnD,EAP6B,KAORC,EAPQ,KAS9B17E,EAAU,UAAGua,EAAKpS,eAAR,aAAG,EAAcM,SAASuT,GA2BpC01B,EAAgB,SAACC,EAA+BtD,EAAoCyB,GAApE,OACpB,qCACE,cAAC9lB,GAAA,EAAD,CAAYC,QAAQ,KAAKJ,UAAS,aAAlC,wDAGA,eAAC2kB,GAAA,EAAD,CAAMtmB,WAAS,EAAC6mB,QAAS,EAAzB,UACE,cAAC,GAAD,CACElzB,cAAeA,EACfk1B,mBAAmB,EACnB1C,eAAgBA,IAElB,cAAC,GAAD,IACA,cAACstC,GAAD,CAA2B7rC,OAAQA,EAAQj0B,cAAeA,WAKhE,OACE,cAAC,KAAD,CACE8d,cAAe,CACbr3B,OAAQuZ,EAAgBA,EAAcK,SAASjS,WAAa,GAC5D6jB,SAAU,GACV9kB,aAAcmlC,EACdlgB,eAAgB,GAChB8jB,cAAgBl2B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsBiC,gBAAkB,GACzEC,eAAgB,GAChBE,eAAgB,GAChB9B,sBACGv0B,GAA8D,UAA7C,UAAAA,EAAci0B,cAAd,eAAsBM,uBAAiD,EAC3FiC,IAAMx2B,IAAa,UAAIA,EAAci0B,cAAlB,aAAI,EAAsBuC,MAAQ,GACrDE,qBAAsB,IAExB3Y,iBAAkBxL,GAAQP,oBAC1BgM,SA1DwB,SAACziB,EAAgB0iB,GAE3C,GADA4hD,GAAuB,GACnBpiB,EAAqB,CACvB,IAAMmhB,EAAqF,CACzFxsD,eAAgB7W,EAAO6W,eAAiB7W,EAAO6W,eAAiB,GAChE+jB,eAAgB56B,EAAO46B,eAAiB56B,EAAO46B,eAAiB,GAChEE,eAAgB96B,EAAO86B,eAAiB96B,EAAO86B,eAAiB,GAChEh2B,UAAW9E,EAAO9U,OAClBtC,WAAYA,EACZgJ,aAAcoO,EAAOpO,aACrB8kB,SAAU1W,EAAO0W,SACjB1kB,YAAa,CACX4S,GAAIs9C,EAAoBt9C,GACxB7b,KAAMm5D,EAAoBn5D,KAC1By7E,gBAAiBtiB,EAAoBsiB,gBACrCvkC,kBAAmBiiB,EAAoBjiB,oBAG3ChtC,ENmG2C,SAC/CowE,GAEA,OAAO,SAACpwE,GAGN,OAFAA,EAAS0P,MAEFkgE,GACJK,kCAAkCG,GAClC30E,MACC,SAACF,GACCyE,EAAS2P,GAAmCpU,OAE9C,SAACiE,GACCQ,EAAS0wE,GAAkClxE,QMhHtCywE,CAAkCG,IAE7Ce,EAA8BpkE,GAAQ,GACtCi6B,IACAqqC,GAAuB,IAqCrBhpC,oBAAoB,EAhBtB,SAkBG,YAAiB,IAAdt7B,EAAa,EAAbA,OACIi3B,EACJx4B,EAAelN,SAAWkN,EAAelN,QAAQ8S,QAAO,SAAC8D,GAAD,OAAOA,EAAEvD,KAAO5E,EAAO9U,UAAQ,GAEnFqwC,GAAiC,OAAdtE,QAAc,IAAdA,OAAA,EAAAA,EAAgBvF,mBAAhB,OACrBuF,QADqB,IACrBA,OADqB,EACrBA,EAAgBvF,kBAAkBrtB,QAAO,SAACw1B,GAAD,OAAQA,EAAGnjB,WAAa1W,EAAO0W,YAAU,GAClF,GAEEgiB,EAAS6C,EACXA,EAAiB7C,OAChBzB,GAAmBA,EAAevF,kBAEnCjtB,EAAa,OACbwyB,QADa,IACbA,OADa,EACbA,EAAgByB,OAChB,GAJA,OACAzB,QADA,IACAA,OADA,EACAA,EAAgByB,OAOd8C,GAtFwB,SAACvE,KAC5BA,GAAiBX,GAA6B7tC,SAA7B,OAAsCwuC,QAAtC,IAAsCA,OAAtC,EAAsCA,EAAgBnyB,UAmF7Cu1B,CAA4BpD,IAGrDxyB,IAAkBzE,EAAO6W,iBAAoB7W,EAAO0W,UAAY2tD,GAEpE,OACE,eAAC,KAAD,CAAM5xD,UAAU,2BAA2B7N,GAAG,sBAA9C,UACG01B,EAAcC,EAAsBtD,EAAiByB,GACtD,cAAC,GAAD,CACEj0B,cAAeA,EACfiY,SAAU8e,EACVyoC,kBAAkB,EAClBC,kBAAkB,EAClB96E,gBAAgB,EAChB41B,QAASqlD,WCpFRI,OA3Cf,YAM4B,IAL1B5qD,EAKyB,EALzBA,KACA+H,EAIyB,EAJzBA,QACAnd,EAGyB,EAHzBA,cACA2/D,EAEyB,EAFzBA,8BACAliB,EACyB,EADzBA,oBAEMjvD,EAAW4uB,cACXpjB,EAAiBsjB,aAAY,SAAC3e,GAAD,OAAsBA,EAAM3E,kBAEzD2jB,EAAc,kBAAMR,GAAQ,IAYlC,OAVA0E,qBAAU,WAEL7nB,EAAeW,gBACW,OAA3BX,EAAelN,SACwB,OAAvCkN,EAAeY,qBAEfpM,EAASyhC,QAEV,CAACj2B,EAAeW,eAAgBX,EAAelN,QAASkN,EAAeY,oBAAqBpM,IAG7F,eAACovB,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASyH,EAAaxC,WAAS,EAACtQ,SAAS,KAAKmD,UAAU,SAA5E,UACE,cAAC6P,GAAA,EAAD,CAAajQ,QAAS,CAAE5G,KAAM,gBAA9B,SACE,cAAC,KAAD,CAAWpB,SAAS,UAAUoI,UAAU,OAAOc,QAAS6O,MAEzD3jB,EAAelN,SACd,mCACE,cAACuxB,GAAA,EAAD,CAAezQ,QAAS,CAAE5G,KAAM,kBAAhC,SACE,cAAC,GAAD,CACEhH,cAAeA,EACf2/D,8BAA+BA,EAC/BnqC,cAAe7X,EACf8/B,oBAAqBA,YC/BpBwiB,OAhBf,YAAgE,IAAD,IAA/B95D,EAA+B,EAA/BA,MAAO6H,EAAwB,EAAxBA,UAIrC,OAHA7H,EAAK,UAAGA,SAAH,QAAYmZ,KAAOja,UACxB2I,EAAS,UAAGA,SAAH,QAAgB,GAGvB,sBAAK1F,MAAM,KAAKC,OAAO,KAAKkM,QAAQ,YAAYrM,KAAK,OAAOsM,MAAM,6BAAlE,UACE,sBAAMkO,EAAE,MAAMC,EAAE,MAAMva,MAAM,KAAKC,OAAO,KAAKskB,GAAG,MAAMzkB,KAAK,QAAQuY,OAAO,YAC1E,sBACEzY,QAAQ,QACRyM,EAAE,2uCACFvM,KAAMjC,QCFR+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX8zD,aAAc,CACZ5zD,QAAS,OACTC,cAAe,SACfI,WAAY,SACZF,eAAgB,gBAChBlE,OAAQ,OACRX,gBAAiB7C,KAAO2C,MACxBP,QAAS,kBAEXg5D,UAAW,CACTvgE,OAAQ,kBACR,UAAW,CACTsI,QAAS,KAGb+B,KAAM,CACJg5B,UAAW,WACX54B,OAAQ,WAEV0P,QAAS,CACPzR,MAAO,MACP4M,OAAQ,mBA6GCkrD,OAhGf,YAM8B,IAAD,EAL3BC,EAK2B,EAL3BA,0BACAC,EAI2B,EAJ3BA,oBACAX,EAG2B,EAH3BA,8BACAliB,EAE2B,EAF3BA,oBACA8iB,EAC2B,EAD3BA,oCAEM3yD,EAAU1B,KACV1d,EAAW4uB,cAFU,EAGME,aAAY,SAAC3e,GAAD,OAAsBA,KAA3DD,EAHmB,EAGnBA,KAAM1E,EAHa,EAGbA,eACR7V,EAAU,UAAGua,EAAKpS,eAAR,aAAG,EAAcM,SAASuT,GAmB1C,GAjBA0hB,qBAAU,WAENnjB,EAAKpS,UACJ0N,EAAeD,uBACkB,OAAlCC,EAAeA,gBAC+B,OAA9CA,EAAeC,4BAEfzL,EAASohC,GAAoBlxB,EAAKpS,QAAQM,SAASuT,OAEpD,CACDzB,EAAKpS,QACL0N,EAAeD,sBACfC,EAAeA,eACfA,EAAeC,2BACfzL,IAGEwL,EAAeD,sBAAuB,OAAO,cAACihB,GAAA,EAAD,IAEjD,IAAMwlD,EAAqC,SACzCxgE,EACAygE,EACAC,GAEIjjB,IACF8iB,GAAoC,GACpC/xE,ETgDwC,SAC5CrK,EACAmc,EACAgwB,GAEA,OAAO,SAAC9hC,GAGN,OAFAA,EAAS6P,MAEF+/D,GAAmBI,+BAA+Br6E,EAAYmc,EAAiBgwB,GAAermC,MACnG,SAACF,GACCyE,EAAS8P,GAAsCvU,OAEjD,SAACiE,GACCQ,EAASywE,GAAqCjxE,QS7DvCwwE,CAA+Br6E,EAAa6b,EAAcK,SAAUo9C,EAAoBt9C,KACjGw/D,EAA8Bc,EAAiBC,KAgBnD,OACE,mCACE,qBAAK1yD,UAAU,uBAAf,SACGhU,EAAeA,gBACdA,EAAeA,eAAeuF,KAAI,SAACS,EAAeiiB,GAChD,IAAMy+C,EAA+BJ,EAAoBx8E,MACvD,SAAC68E,GAAD,OAAoCA,EAActgE,WAAaL,EAAcK,YAE/E,OACE,sBACE2N,UAAS,UAAKJ,EAAQsyD,aAAb,YAA6BQ,EAA+B,GAAK9yD,EAAQuyD,WADpF,UAIE,qBAAKnyD,UAAWJ,EAAQ3D,KAAxB,SACE,sBAAM6E,QAAS,kBA1BX,SAAC9O,EAA8B0gE,GACjD,IAAMjjB,IAAuBijB,GAA+D,IAA/BJ,EAAoBh9E,OAAe,CAC9F,IAAMm9E,EAAe,6BAAQzgE,GAAR,IAAuBvZ,OAAQuZ,EAAcK,WAElEqgE,EACIjjB,EACE+iB,EAAmCxgE,EAAeygE,EAAiBC,GACnEf,EAA8Bc,EAAiBC,GACjDL,EAA0BrgE,IAkBG4gE,CAAY5gE,EAAe0gE,IAAhD,SACGjjB,GACDijB,GAC+B,IAA/BJ,EAAoBh9E,OAClB,cAAC,GAAD,IACEo9E,EACF,cAAC,GAAD,IAEA,cAAC,GAAD,QAIN,qBAAKzyD,IAAKjO,EAAcg4B,eAAgB9pB,IAAI,SAC5C,cAAC2M,GAAA,EAAD,CAASC,YAAY,aAAa9M,UAAWJ,EAAQmM,UACrD,qBAAK/L,UAAU,SAAf,SACE,cAACG,GAAA,EAAD,CAAY8pB,QAAM,EAACjqB,UAAU,sBAA7B,SACGhO,EAAck4B,WAAal4B,EAAck4B,WAAa,UAnBtDjW,WCnGf/V,GAAYC,cAAW,SAACzH,GAAD,aAC3B0H,aAAa,CACXC,WAAS,GACP6I,OAAQ,aADD,eAENxQ,EAAM8B,YAAYkG,KAAK,MAAQ,CAC9B,qBAAsB,CACpBwI,OAAQ,IACR5M,MAAO,UALJ,eAQP,2BAA4B,CAC1BmE,eAAgB,SAChB4kB,cAAe,cAVV,GAaT7jB,MAAO,CACLrG,QAAS,+BACTuD,UAAW,UAEbqyB,YAAa,CACXryB,UAAW,SACX9E,SAAU,YACVO,MAAOmZ,KAAOja,WAEhBksB,aAAc,CACZ3pB,gBAAiB0X,KAAOza,QACxB8C,OAAO,aAAD,OAAe2X,KAAOza,SAC5BsB,MAAOmZ,KAAO5X,MACd,UAAW,CACTE,gBAAiB0X,KAAO5X,MACxBvB,MAAOmZ,KAAOza,QACd2C,UAAW,QAEb,iBAAkB,CAChBI,gBAAiB0X,KAAOza,QACxB8C,OAAQ,OACRxB,MAAOmZ,KAAO5X,MACdQ,QAAS,GACTb,UAAW,gBAkDJw5D,OArCf,YAKmC,IAJjCzrD,EAIgC,EAJhCA,KACAE,EAGgC,EAHhCA,YACA2nB,EAEgC,EAFhCA,cACA6jC,EACgC,EADhCA,eAEMlzD,EAAU1B,KAEhB,OACE,eAAC0R,GAAA,EAAD,CAAQxI,KAAMA,EAAMc,QAASZ,EAAa6F,WAAS,EAACtQ,SAAS,KAAKmD,UAAWJ,EAAQvB,UAArF,UACE,cAACwR,GAAA,EAAD,CAAa7P,UAAWJ,EAAQJ,MAAhC,wEAGA,cAAC6Q,GAAA,EAAD,UACE,cAAC6e,GAAA,EAAD,CAAmBlvB,UAAWJ,EAAQmvB,YAAtC,qJAKF,eAACze,GAAA,EAAD,WACE,cAACzP,GAAA,EAAD,CAAQC,QAASwG,EAAanP,MAAM,YAAYiI,QAAQ,WAAW+uB,WAAS,EAA5E,sBAGA,cAACtuB,GAAA,EAAD,CACEb,UAAWJ,EAAQ2jB,aACnBziB,QAASmuB,EACT92B,MAAM,UACNiI,QAAQ,YACR6J,SAAU6oD,EALZ,SAOGA,EAAiB,cAAC9lD,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAe,qBCpC9D46D,OAhDf,YAGgC,IAF9BC,EAE6B,EAF7BA,iCACAT,EAC6B,EAD7BA,oCAEM/xE,EAAW4uB,cACX7vB,EAAc+vB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMpR,eAEtD0zE,EACJ1zE,EAAY4Q,oCAAsC5Q,EAAY+Q,sCAC1D4iE,EACJ3zE,EAAY6Q,yCACZ7Q,EAAYgR,2CAER/U,EAAUy3E,EAAY,wBAEtB1zE,EAAY4Q,mCAAqC,WAAa,YAFxC,kBAIxB+iE,EAAO,iCAEL3zE,EAAY6Q,wCAA0C,UAAY,WAF7D,qBAIP,qDAUJ,OACE,cAAC,GAAD,CACEgX,KACE4rD,IACCzzE,EAAY4Q,oCAC6C,OAAxD5Q,EAAY6Q,yCACZ7Q,EAAY+Q,uCACkC,OAA9C/Q,EAAY0Q,+BAEhBzU,QAASA,EACT8rB,YAdgB,WAClBirD,GAAoC,IAclCv6E,KAAMi7E,EAAep8E,GAAO4wB,QAAU5wB,GAAO05B,MAC7ChJ,SApBsC,WACxC/mB,GXyFK,SAACA,GACNA,EAAS,CAAExI,KAAM,0DYtHfkmB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXikC,WAAY,CACVjpC,SAAU,cA+FD+5D,OA9Ef,YAU6B,IAT3B1jB,EAS0B,EAT1BA,oBACA2jB,EAQ0B,EAR1BA,qBACAC,EAO0B,EAP1BA,wBACAC,EAM0B,EAN1BA,0BACAC,EAK0B,EAL1BA,mBACA9jE,EAI0B,EAJ1BA,oBACAG,EAG0B,EAH1BA,oBACA0iE,EAE0B,EAF1BA,oBACA/kE,EAC0B,EAD1BA,OAEMqS,EAAU1B,KACV6C,EAAWM,eAEjB,OACE,cAAC,GAAD,CACE7B,MAAK,yBAAoBiwC,EAAsBA,EAAoBn5D,KAAO,kBAD5E,SAGGm5D,EACC,qCACE,cAAC5uC,GAAA,EAAD,CACEC,QAASyyD,EAAqB,kBAAMH,GAAqB,IAAQ,kBAAMC,KACvEjzD,QAAQ,WACRjI,MAAM,YACN8R,SAAUqpD,EAJZ,SAMGA,EACC,cAACtmD,GAAA,EAAD,CAAkB7U,MAAM,UAAU8U,KAAM,KACtCsmD,EACF,eAEA,cAGJ,cAAC1mD,GAAA,EAAD,CAASC,YAAY,WAAWC,UAAQ,IACxC,cAAClM,GAAA,EAAD,CACEb,UAAWJ,EAAQyiC,WACnBvhC,QAAS,kBAAMC,GAAU,IACzBX,QAAQ,WACRjI,MAAM,YAJR,uBAUF,qCACE,cAAC0I,GAAA,EAAD,CACEb,UAAWJ,EAAQyiC,WACnBvhC,QAAS,kBAAMC,GAAU,IACzBX,QAAQ,WACRjI,MAAM,YAJR,oBAQA,cAAC0I,GAAA,EAAD,CACE7oB,KAAK,SACL+wB,KAAK,eACL5Q,MAAM,UACNiI,QAAQ,YACR6J,SACExa,GACAG,GAC+B,IAA/B0iE,EAAoBh9E,SACnBiY,EAAOA,OAAOjX,KATnB,SAYGmZ,GAAuBG,EACtB,cAACod,GAAA,EAAD,CAAkB7U,MAAM,UAAU8U,KAAM,KAExC,yBC1FR/O,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXo1D,SAAU,CACRtsD,OAAQ,YACR/N,QAAS,UACT,MAAO,CACL+N,OAAQ,EACR/O,MAAOpB,KAAO6E,UACdhE,SAAU,WACVQ,YAAarB,KAAO08D,mBAGxBpnC,eAAgB,CACd/xB,MAAO,OACPgE,QAAS,OACTC,cAAe,SACf+tB,WAAY,EACZ,MAAO,CACLn0B,MAAOpB,KAAOM,UACd6P,OAAQ,wBAGZwsD,eAAgB,CACdp1D,QAAS,OACTC,cAAe,MACfI,WAAY,SACZrD,UAAW,OACX,oBAAqB,CACnB4L,OAAQ,GAEV,WAAY,CACVjK,WAAY,OACZ3C,MAAO,QACPC,OAAQ,gBAgDDo5D,OApCf,YAI0B,IAHxBlkB,EAGuB,EAHvBA,oBACA7/C,EAEuB,EAFvBA,oBACAH,EACuB,EADvBA,oBAEMmQ,EAAU1B,KAEhB,OACE,cAAC,KAAD,CAAM/L,GAAG,eAAe6N,UAAU,OAAlC,SACE,eAAC4gC,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQ4zD,SAAzB,UACE,+KAIA,sBAAKxzD,UAAWJ,EAAQysB,eAAxB,UACE,oDACA,sBAAKrsB,UAAWJ,EAAQ8zD,eAAxB,UACE,cAAC,KAAD,CAAOp9E,KAAK,OAAO20B,UAAWtC,GAAe3wB,KAAK,SACjDy3D,GACC,cAAC5uC,GAAA,EAAD,CACET,QAAQ,YACRjI,MAAM,UACNngB,KAAK,SACL+wB,KAAK,eACLkB,SAAUra,GAAuBH,EALnC,SAOGG,EAAsB,cAACod,GAAA,EAAD,CAAkB7U,MAAM,YAAe,wBCmM/Dy7D,OA7Of,WAAwB,IAAD,QACyBtkD,aAAY,SAAC3e,GAAD,OAAsBA,KAAxED,EADa,EACbA,KAAMnR,EADO,EACPA,YAAayM,EADN,EACMA,eACrBxL,EAAW4uB,cACXrO,EAAWM,eACXtsB,EAASuyD,eACTmI,EAAgD,UAAGlwD,EAAYsH,qBAAf,aAAG,EAA2Bi+B,MAClF,SAACvlC,GAAD,OAAiBA,EAAY4S,KAAOpd,EAAOutC,iBANxB,EAQG1X,oBAAkB,GARrB,oBAQdxD,EARc,KAQR+H,EARQ,OASqCvE,mBAA+B,MATpE,oBASd4e,EATc,KASSC,EATT,OAUiC7e,oBAAkB,GAVnD,oBAUdnb,EAVc,KAUOokE,EAVP,OAWiCjpD,oBAAkB,GAXnD,oBAWdhb,EAXc,KAWOkkE,EAXP,OAY6ClpD,oBAAkB,GAZ/D,oBAYd0oD,EAZc,KAYaS,EAZb,OAaiCnpD,mBAA2B,IAb5D,oBAad0nD,EAbc,KAaO0B,EAbP,OAc2DppD,oBAAkB,GAd7E,oBAcdooD,EAdc,KAcoBT,EAdpB,OAe4B3nD,oBAAkB,GAf9C,oBAedqpD,EAfc,KAeIb,EAfJ,KAgBfxpC,EAAqBrI,KACrBprC,EAAU,UAAGua,EAAKpS,eAAR,aAAG,EAAcM,SAASuT,GACpCohE,GAAwC,OAAnB9jB,QAAmB,IAAnBA,OAAA,EAAAA,EAAqBhzD,UAAW/E,GAAsB03D,OAEjFv7B,qBAAU,WAENnjB,EAAKpS,UACJ0N,EAAeD,uBACkB,OAAlCC,EAAeA,gBAC+B,OAA9CA,EAAeC,4BAEfzL,EAASohC,GAAoBlxB,EAAKpS,QAAQM,SAASuT,OAEpD,CACDzB,EAAKpS,QACL0N,EAAeD,sBACfC,EAAeA,eACfA,EAAeC,2BACfzL,IAGFqzB,qBAAU,WAAO,IAAD,EACdrzB,EAAS6vE,GAAgB,UAAC3/D,EAAKpS,eAAN,aAAC,EAAcM,SAASuT,OAChD,WAACzB,EAAKpS,eAAN,aAAC,EAAcM,SAASuT,GAAI3R,IAE/BqzB,qBAAU,WACR,GAAI47B,EAAqB,CACvB,IAAMykB,EAAyBzkB,EAAoB5T,gBAAgBtqC,KAAI,SAACS,GACtE,MAAO,CACLK,SAAUL,EAAcK,SAASjS,WACjCjB,aAAc6S,EAAczE,WAGhCymE,GAAuB,SAACG,GAAD,6BAClBA,GADkB,aAElBD,UAGN,CAACzkB,IAEJ,IAAM4iB,EAA4B,SAACrgE,GACjCy3B,EAAyBz3B,GACzBmd,GAAQ,IAuCJwiD,EAAgC,SAAC3/D,EAAmCoiE,GACxE,IAAMzB,EAAgC,CACpCtgE,SAAUL,EAAcvZ,OACxB2rB,eAAgBpS,EAAcoS,eAC9B+jB,eAAgBn2B,EAAcm2B,eAC9BE,eAAgBr2B,EAAcq2B,eAC9BlpC,aAAc6S,EAAc7S,aAC5B8kB,SAAUjS,EAAciS,UAIxB+vD,EADEI,EAEA9B,EAAoB1gE,QAAO,SAACgzB,GAAD,OAA2BA,EAAKvyB,YAAcsgE,EAActgE,YAGlE,GAAD,oBAAKigE,GAAL,CAA0BK,KAG9CljB,GACF8iB,GAAoC,IAIlCc,EAA0B,WAC9B,GAAK5jB,EAAL,CAEAskB,GAA6B,GAE7B,IAAMpD,EAAqD,CACzDruC,cAAemtB,EAAoBt9C,GACnC7b,KAAMm5D,EAAoBn5D,KAC1BmG,OAAQ82E,EAAqB77E,GAAsB64D,SAAW74D,GAAsB03D,QAGtF5uD,EAAS+vE,GAAkBI,MAGvB1/C,EAAa,WACjB4iD,GAAuB,GACvBC,GAAuB,GACvBC,GAA6B,GAC7BX,GAAqB,GACrBxpC,IACA7oB,GAAU,IAGZ,OAAIxhB,EAAYgQ,mBACP,cAAC,GAAD,IAIP,qCACE,cAAC,KAAD,CACEugB,cAAe,CACbx5B,MAAyB,OAAnBm5D,QAAmB,IAAnBA,OAAA,EAAAA,EAAqBn5D,OAAQ,IAErC05B,SA5FoB,SAACziB,GACzB,GAAImD,EAAKpS,QAAS,CAChB,IAAM+1E,EAA0B/B,EAAoB/gE,KAAI,SAAC+iE,GAA8B,IAAD,MACpF,MAAO,CACLlwD,eAAc,UAAEkwD,EAASlwD,sBAAX,QAA6B,GAC3C+jB,eAAc,UAAEmsC,EAASnsC,sBAAX,QAA6B,GAC3CE,eAAc,UAAEisC,EAASjsC,sBAAX,QAA6B,GAC3Ch2B,SAAUiiE,EAASjiE,SACnBlT,aAAcm1E,EAASn1E,aACvB8kB,SAAUqwD,EAASrwD,aAIvB,GAAKwrC,EAUE,CACLqkB,GAAuB,GAEvB,IAAMnD,EAAqD,CACzDruC,cAAemtB,EAAoBt9C,GACnC7b,KAAMiX,EAAOjX,MAGfkK,EAAS+vE,GAAkBI,QAlBH,CACxBkD,GAAuB,GAEvB,IAAMnD,EAAqD,CACzDp6E,KAAMiX,EAAOjX,KACbH,WAAYA,EACZk+E,2BAGF7zE,EdzDyB,SAACkwE,GAChC,OAAO,SAAClwE,GAGN,OAFAA,EAASiP,MAEF2gE,GAAmBE,kBAAkBI,GAA0Bz0E,MACpE,SAACF,GACCyE,EAASkP,GAAyB3T,OAEpC,SAACiE,GACCQ,EAASuwE,GAAwB/wE,QcgDxBswE,CAAkBI,OAkE7B,SAMG,SAACnjE,GACA,OACE,sBAAKyS,UAAU,mBAAf,UACE,cAAC,GAAD,CACEyvC,oBAAqBA,EACrB2jB,qBAAsBA,EACtBC,wBAAyBA,EACzBC,0BAA2BA,EAC3BC,mBAAoBA,EACpB9jE,oBAAqBA,EACrBG,oBAAqBA,EACrB0iE,oBAAqBA,EACrB/kE,OAAQA,IAEV,cAAC,GAAD,CACEkiD,oBAAqBA,EACrB7/C,oBAAqBA,EACrBH,oBAAqBA,IAEvB,cAAC,GAAD,CAAa+P,MAAM,mBAClBwzD,EACC,cAAC,GAAD,IAEA,cAAC,GAAD,CACEvjB,oBAAqBA,EACrB4iB,0BAA2BA,EAC3BC,oBAAqBA,EACrBC,oCAAqCA,EACrCZ,8BAA+BA,IAGnC,cAAC,GAAD,CACEliB,oBAAqBA,EACrBroC,KAAMA,EACN+H,QAASA,EACTnd,cAAew3B,EACfmoC,8BAA+BA,IAEjC,cAAC,GAAD,CACEvqD,MACGxX,GAAuB0jE,KACvB/zE,EAAYsQ,0BAA0E,OAA9CtQ,EAAYuQ,+BAEvDtU,QACE+D,EAAYsQ,yBACR,qCACA,gDAENyX,YAAa2J,EACbj5B,KAAMuH,EAAYsQ,yBAA2BhZ,GAAO4wB,QAAU5wB,GAAO05B,QAEvE,cAAC,GAAD,CACEnJ,KACE3X,IACClQ,EAAYmQ,0BAA0E,OAA9CnQ,EAAYoQ,+BAEvDnU,QACE+D,EAAYmQ,yBACR,gCACA,2CAEN4X,YAAa2J,EACbj5B,KAAMuH,EAAYmQ,yBAA2B7Y,GAAO4wB,QAAU5wB,GAAO05B,QAEvE,cAAC,GAAD,CACEyiD,iCAAkCA,EAClCT,oCAAqCA,UAM/C,cAAC,GAAD,CACEnrD,KAAM6sD,EACN3sD,YAAa,kBAAM8rD,GAAqB,IACxCnkC,cAAeokC,EACfP,eAAgBQ,QCtQlBp1D,GAAYC,cAAW,kBAC3BC,aAAa,CACXm2D,UAAW,CACTrtD,OAAQ,UAEV0d,KAAM,CACJxsB,WAAY,QAEdoH,MAAO,CACL0H,OAAQ,WACRxK,UAAW,eAwJF83D,OAnJf,WACE,IAAM50D,EAAU1B,KAChB,OACE,qCACE,cAAC,GAAD,CAAasB,MAAM,8BACnB,cAACqN,GAAA,EAAD,CAAS7M,UAAU,mBACnB,cAACG,GAAA,EAAD,CAAYH,UAAWJ,EAAQJ,MAAOY,QAAQ,KAAK6K,UAAU,KAA7D,yBAGA,cAAC9K,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,KAAnC,sCAGA,eAAC9K,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,uYAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,+LAKA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,oPAKA,cAACzkB,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,KAAnC,gCAGA,eAAC9K,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,qVAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,2zBAUA,cAACzkB,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,KAAnC,wCAGA,eAAC9K,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,4UAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,ycAOA,cAACzkB,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,KAAnC,2DAGA,eAAC9K,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,yPAKA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,0RAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,gRAKA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,gPAKA,cAACzkB,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,KAAnC,4DAGA,eAAC9K,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,uLAKA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,0SAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,yXAMA,cAACzkB,GAAA,EAAD,CAAYC,QAAQ,KAAK6K,UAAU,KAAnC,4CAGA,eAAC9K,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,2VAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,8MAKA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,kUAMA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,onBASA,eAACzkB,GAAA,EAAD,CAAYH,UAAWJ,EAAQ20D,UAA/B,UACE,sBAAMv0D,UAAWJ,EAAQglB,KAAzB,kBADF,qgBCrIA1mB,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXvpB,OAAQ,CACNqyB,OAAQ,UAEV6zC,WAAY,CACV5hD,QAAS,WACT,UAAW,CACTS,gBAAiB,UAGrByE,UAAW,CACTlF,QAAS,SACT0D,SAAU,QACVqK,OAAQ,UAEVqE,YAAa,CACXjN,QAAS,OACTG,eAAgB,gBAChBE,WAAY,WACZrE,MAAO,aAsJE8Z,OArIGC,aAZM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,SAGa,SAAClQ,GAC1B,MAAO,CACLktB,oBAAqB,SAAC3H,GAAD,OAAyBvlB,E5P0Wf,SAACulB,GAClC,OAAO,SAACvlB,GAGN,OAFAA,EAAS6E,MAEFgoB,GAAYK,oBAAoB3H,GAAY9pB,MACjD,SAACF,GACCyE,EAASouB,GAA2B7yB,OAEtC,SAACiE,GACCQ,EAASquB,GAAyB7uB,Q4PnXiB0tB,CAAoB3H,KAC3E4H,WAAY,SAACnc,GAAD,OAAoBhR,EAASmtB,GAAWnc,KACpDhT,mBAAoB,SAAC0jB,GAAD,OAAmB1hB,EAAShC,GAAmB0jB,QAyIxDkS,EAlIf,YAAoG,IAAD,EAA7E1jB,EAA6E,EAA7EA,KAAMgd,EAAuE,EAAvEA,oBAAqBC,EAAkD,EAAlDA,WAAYnvB,EAAsC,EAAtCA,mBACrDohB,EAAU1B,KADiF,EAEvC0M,oBAAkB,GAFqB,oBAE1FplB,EAF0F,KAEnE01D,EAFmE,OAGvDtwC,oBAAkB,GAHqC,oBAG1FjlB,EAH0F,KAG3E8uE,EAH2E,OAI7D7pD,mBAAiB,IAJ4C,oBAI1F7E,EAJ0F,KAI9EqsC,EAJ8E,KAMjGv+B,qBAAU,WAELnjB,EAAKrL,yBACoB,OAA1BqL,EAAKpL,kBACoC,OAAzCoL,EAAKnL,iCAELmoB,MAED,CACDhd,EAAKnL,gCACLmL,EAAKrL,wBACLqL,EAAKpL,iBACLooB,IAOF,IAiDM4tC,EACJ91D,IAA0BkL,EAAKjL,2BAAqE,OAAxCiL,EAAKhL,gCAanE,OAPAmuB,qBAAU,WACJluB,GAAiB+K,EAAK9K,oBACxB8nB,IACA+mD,GAAiB,MAElB,CAAC/jE,EAAK9K,kBAAmBD,EAAe+nB,IAGzC,sBAAK1N,UAAWJ,EAAQvB,UAAxB,UACE,qBAAK2B,UAAWJ,EAAQ2L,YAAxB,SACE,cAAC,GAAD,CACE/L,MAAM,4CACN4M,eAAc,UAAE1b,EAAKpL,wBAAP,aAAE,EAAuBhQ,WAG3C,qBAAK0qB,UAAWJ,EAAQ/qB,OAAxB,SACE,cAAC,GAAD,CACEkxB,WAAYA,EACZqsC,cAAeA,EACf+C,cAhCc,YAChBpvC,EAAWzwB,OAAS,GAA2B,IAAtBywB,EAAWzwB,SACtCo4B,EAAoB3H,IA+BhBiE,YAAY,2CAGftZ,EAAKpL,kBAAqD,IAAjCoL,EAAKpL,iBAAiBhQ,SAAiBqQ,EAC/D,cAAC,GAAD,CAAcnK,QAAQ,gDACpBkV,EAAKpL,iBACP,cAAC,GAAD,CACE0zD,UAnF4B,CAClC,CAAEV,SAAU,QAASvuC,MAAO,qBAC5B,CAAEuuC,SAAU,QAASvuC,MAAO,SAC5B,CAAEuuC,SAAU,SAAUvuC,MAAO,UAC7B,CAAEuuC,SAAU,QAASvuC,MAAO,KAgFtBgvC,SAAUroD,EAAKpL,iBACfm0D,WA9EuB,SAAChc,EAAW6a,GACzC,OAAQA,GACN,IAAK,QACH,OAAO7a,EAAIhsC,MAAQ,IAAMgsC,EAAI/rC,SAC/B,IAAK,QACH,OAAO+rC,EAAIv7B,MACb,IAAK,SACH,OAAOu7B,EAAIpsC,OAAS,aAAe,cAAC,GAAD,CAAY0Y,MAAM,qBAAqB5R,MAAM,SAClF,IAAK,QACH,OACE,sBAAKoQ,MAAO,CAAEjK,QAAS,OAAQC,cAAe,MAAOC,IAAK,GAA1D,UACE,cAAC0M,GAAA,EAAD,CACElL,UAAWJ,EAAQm7C,WACnBj6C,QAAS,WACP2zD,GAAiB,GACjB9mD,EAAW8vB,EAAIjsC,SAJnB,SAOE,cAAC,GAAD,MAEF,cAAC0Z,GAAA,EAAD,CACElL,UAAWJ,EAAQm7C,WACnBj6C,QAAS,WACPo6C,GAAyB,GACzB18D,EAAmBi/C,EAAIjsC,SAJ3B,SAOE,cAAC,GAAD,SAIR,QACE,OAAOisC,EAAI6a,KA+CToB,aAAa,IAGf,cAAC,GAAD,IAEF,cAAC,GAAD,CACEtyC,KAAMk0C,EACN9/D,QACEkV,EAAKjL,0BACD,iDACAiL,EAAKhL,+BAEX4hB,YA9Ca,WACb9hB,GAAuB01D,GAAyB,IA8ChDljE,KAAM0Y,EAAKjL,0BAA4B5O,GAAO4wB,QAAU5wB,GAAO05B,cCnLxDmkD,OAJf,WACE,OAAO,cAAC,GAAD,KCWHtxC,GAAkBjlB,cAAW,SAACzH,GAAD,OACjC0H,aAAa,CACXoB,MAAO,CACLlB,QAAS,OACTC,cAAe,MACfE,eAAgB,WAChB4kB,cAAe,GAEjBpnB,KAAM,CACJI,OAAQ,UACRmV,WAAY,OACZrZ,MAAOzB,EAAME,QAAQ6b,KAAK,MAE5BkiD,UAAW,CACTv8D,WAAYze,OAAOod,KAAOwB,oBAC1BX,SAAU,aAEZg9D,YAAa,CACXt5D,UAAW,YACX1D,SAAU,WACVO,MAAOpB,KAAOM,UACde,WAAYze,OAAOod,KAAO89D,oBAE5Bn1D,QAAS,CACPvG,QAAS,YACT6F,WAAY,OACZV,QAAS,OACTC,cAAe,SACfE,eAAgB,SAChBE,WAAY,SACZjC,UAAW,UAEb4mB,QAAS,CACPhoB,UAAW,SACXgD,QAAS,OACTC,cAAe,MACfE,eAAgB,SAChBE,WAAY,UAEd4tD,SAAU,CACRtvD,WAAY,QAEd63D,YAAa,CACX73D,WAAY,OACZrD,gBAAiBlD,EAAME,QAAQ5W,MAAM8W,KACrCqB,MAAOpB,KAAO2C,MACdC,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,MAEzC,UAAW,CACT0C,UAAW,OACXI,gBAAiB7C,KAAO2C,MACxBvB,MAAOzB,EAAME,QAAQ5W,MAAM8W,KAC3B6C,OAAO,aAAD,OAAejD,EAAME,QAAQ5W,MAAM8W,aAoElCi+D,OArDf,YAO0B,IANxB3tD,EAMuB,EANvBA,KACA+H,EAKuB,EALvBA,QACA6lD,EAIuB,EAJvBA,WAEA3yE,GAEuB,EAHvB4yE,cAGuB,EAFvB5yE,QACA6yE,EACuB,EADvBA,UAEMn0D,EAAWM,eACXzB,EAAUwjB,KACV5nC,EAAU05E,EACZ,iEACe,OAAfF,EACA,6DACA,iEACEx1D,EAAQ01D,EACV,kCACe,OAAfF,EACA,iDACA,0DACEG,EAAwB,OAAfH,EAAsB,YAAc,iBAC7CI,EAA0B,OAAfJ,EAAsB3yE,EAAS,kBAAM0e,EAAS,sBACzDs0D,EAA6B,OAAfL,EAAsBp1D,EAAQ2sD,SAAW3sD,EAAQk1D,YAE/DnlD,EAAc,WAClBR,GAAQ,IAGV,OACE,eAACS,GAAA,EAAD,CAAQ5P,UAAU,SAASoH,KAAMA,EAAMc,QAASyH,EAAhD,UACE,cAACE,GAAA,EAAD,CAAa7P,UAAWJ,EAAQJ,MAAhC,SACE,cAAC,KAAD,CAAW5H,SAAS,UAAUoI,UAAWJ,EAAQ3D,KAAM6E,QAAS6O,MAElE,eAACU,GAAA,EAAD,CAAerQ,UAAWJ,EAAQF,QAAlC,UACE,cAACS,GAAA,EAAD,CAAYH,UAAWJ,EAAQ+0D,UAA/B,SAA2Cn1D,IAC3C,cAACW,GAAA,EAAD,CAAYH,UAAWJ,EAAQg1D,YAA/B,SAA6Cp5E,IAC5C05E,EACC,cAAC,GAAD,CAAS36D,OAAO,OAAOD,MAAM,SAE7B,sBAAK0F,UAAWJ,EAAQ0jB,QAAxB,UACE,cAACziB,GAAA,EAAD,CAAQC,QAAS6O,EAAavP,QAAQ,WAAWjI,MAAM,YAAvD,oBAGA,cAAC0I,GAAA,EAAD,CAAQ1I,MAAM,UAAU6H,UAAWq1D,EAAaj1D,QAAQ,YAAYU,QAASs0D,EAA7E,SACGD,cCjHTG,GAAkC,CACtCh3D,QAAS,QACTxB,SAAU,SACVC,aAAc,WACdC,WAAY,SACZH,SAAU,QAGN04D,GAAkC,CACtCt4D,WAAY,SACZqB,QAAS,cACTK,WAAY,UAqEC62D,GAxDK,YAAwE,IAAnDxc,EAAkD,EAAlDA,UAAWyc,EAAuC,EAAvCA,YAClD,OACE,cAACvkD,GAAA,EAAD,UACE,cAAC0oC,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,UACGf,EAAUznD,KAAI,WAAY0iB,GAAZ,IAAGlK,EAAH,EAAGA,MAAH,OACb,cAACkwC,GAAA,EAAD,CAEE1xC,MAAO,CACLnP,SAAW2Q,OAAiB5xB,EAAT,QAHvB,SAMG4xB,GALIkK,UAUb,cAACqmC,GAAA,EAAD,UACGmb,EAAYlkE,KAAI,SAACmkE,EAAYlb,GAC5B,IAAM/c,EAAMi4B,EAAWj4B,IACjBk4B,EAAYD,EAAWzsD,OAE7B,OACE,cAAC8wC,GAAA,EAAD,UACGf,EAAUznD,KAAI,WAAekpD,GAAe,IAA3BnC,EAA0B,EAA1BA,SACVt4D,EAAQ21E,EAAU7wC,MAAK,SAAC8wC,GAAD,OAASA,EAAI/sD,QAAUyvC,KAEpD,OACE,cAAC2B,GAAA,EAAD,CAA4Ch8C,MAAM,SAAlD,SACE,sBAAKsK,MAAO,CAAEjK,QAAS,cAAeK,WAAY,SAAU9B,SAAU,QAAtE,UACE,cAACsD,GAAA,EAAD,CAAYoI,MAAO+sD,GAAnB,SACqB,KAAlB73B,EAAI6a,GAAmB7a,EAAI6a,GAAY,MAEzCt4D,GACC,cAAC2sB,GAAA,EAAD,CAASnN,MAAOxf,EAAMxE,QAASq6E,OAAK,EAApC,SACE,qBAAKttD,MAAOgtD,GAAZ,SACE,cAAC,GAAD,YARV,UAAmB/a,EAAnB,YAA+BC,QALtBD,gBCxDzBt8C,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXwpC,SAAU,CACRzuC,QAAS,SACTF,aAAc,SACdU,OAAO,aAAD,OAAe5C,KAAO++D,qBAC5Bl8D,gBAAgB,GAAD,OAAK7C,KAAOg/D,yBAC3Bl3D,aAAc,OACdP,QAAS,OACTC,cAAe,MACfI,WAAY,SACZF,eAAgB,SAChBD,IAAK,YAEL,QAAS,CACPlE,MAAO,WACPC,OAAQ,WACR,SAAU,CACRH,KAAK,GAAD,OAAKrD,KAAO6wC,aAItBouB,YAAa,CACX79D,MAAOpB,KAAOk/D,kBACdr+D,SAAU,UACVQ,YAAarB,KAAOsB,kBAEtB69D,UAAW,CACT56D,UAAW,UACXnC,QAAS,qBAEXg9D,WAAY,CACV73D,QAAS,OACTK,WAAY,SACZF,eAAgB,iBAElBe,MAAO,CACLpH,YAAarB,KAAOwB,mBACpBJ,MAAOpB,KAAOM,UACdO,SAAU,YACViH,aAAc,aAEhBw4C,UAAW,CACTj/C,YAAarB,KAAOslC,eACpBlkC,MAAOpB,KAAOM,UACdO,SAAU,WACViH,aAAc,kBAWL,SAASu3D,GAAT,GAA4E,IAArDC,EAAoD,EAApDA,QAASC,EAA2C,EAA3CA,UAAWC,EAAgC,EAAhCA,WAClD32D,EAAU1B,KAEhB,OACE,eAAC0iC,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQs2D,UAAzB,UACE,sBAAKl2D,UAAWJ,EAAQgoC,SAAxB,UACE,cAAC,GAAD,IACA,cAACznC,GAAA,EAAD,CAAYC,QAAQ,YAAYJ,UAAWJ,EAAQo2D,YAAnD,8KAKF,qCACE,eAAC3jC,GAAA,EAAD,CAAKryB,UAAWJ,EAAQu2D,WAAxB,UACE,cAACh2D,GAAA,EAAD,CAAYH,UAAWJ,EAAQJ,MAA/B,6BACA,eAACW,GAAA,EAAD,CAAYH,UAAWJ,EAAQy3C,UAA/B,uCAAqEkf,QAEvE,cAAC,GAAD,CAAavd,UAAWqd,EAASZ,YAAaa,UCtEvC,SAASE,GAAT,GAKqB,IAJlCD,EAIiC,EAJjCA,WACAlf,EAGiC,EAHjCA,UACA6d,EAEiC,EAFjCA,UACAliC,EACiC,EADjCA,WAEA,OACE,eAAC,GAAD,CAAaxzB,MAAO,sBAAuB5pB,KAAM,EAAjD,UACE,cAACirB,GAAA,EAAD,CAAQC,QAAS,kBAAMkyB,EAAW,WAAW5yB,QAAQ,WAAWjI,MAAM,YAAtE,sBAGA,cAAC0U,GAAA,EAAD,CAASC,YAAY,WAAWC,UAAQ,IACxC,cAAClM,GAAA,EAAD,CAAQC,QAAS,kBAAMkyB,EAAW,WAAW5yB,QAAQ,WAAWjI,MAAM,YAAtE,oBAGA,cAAC0I,GAAA,EAAD,CACEC,QAAS,kBAAMkyB,EAAW,OAC1B/oB,SAAUssD,EAAa,GAAKrB,IAAc7d,EAC1Cj3C,QAAQ,YACRjI,MAAM,UAJR,SAMI+8D,EAA0B,cAACloD,GAAA,EAAD,CAAkBC,KAAM,GAAI9U,MAAM,YAAhD,iB,kCCKhB+F,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACX83D,UAAW,CACT56D,UAAW,UACXnC,QAAS,qBAEXg9D,WAAY,CACV73D,QAAS,OACTK,WAAY,SACZF,eAAgB,iBAElBe,MAAO,CACLpH,YAAarB,KAAOwB,mBACpBJ,MAAOpB,KAAOM,UACdO,SAAU,YACViH,aAAc,aAEhBw4C,UAAW,CACTj/C,YAAarB,KAAOslC,eACpBlkC,MAAOpB,KAAOM,UACdO,SAAU,WACViH,aAAc,kBAKdw3D,GAA+B,CACnC,CAAE/d,SAAU,QAASvuC,MAAO,SAC5B,CAAEuuC,SAAU,cAAevuC,MAAO,kBAClC,CAAEuuC,SAAU,YAAavuC,MAAO,cAChC,CAAEuuC,SAAU,aAAcvuC,MAAO,mBACjC,CAAEuuC,SAAU,WAAYvuC,MAAO,UAC/B,CAAEuuC,SAAU,SAAUvuC,MAAO,YAoGhB0sD,OAjGf,WAA2B,IAAD,MAElBn8C,GAAO,UADIjL,eACK1e,aAAT,eAAgB2pB,OAAQ,KAC/B1a,EAAU1B,KACV6C,EAAWM,eACX7gB,EAAW4uB,cALO,EAMAE,aAAY,SAAC3e,GAAD,OAAsBA,KAAlD5R,EANgB,EAMhBA,MAAO2R,EANS,EAMTA,KANS,EAOUka,oBAAS,GAPnB,oBAOjBsqD,EAPiB,KAONwB,EAPM,OAQA9rD,oBAAS,GART,oBAQjBxD,EARiB,KAQX+H,EARW,OASYvE,mBAAS,IATrB,oBASjBoqD,EATiB,KASLC,EATK,OC1DC,SAAC36C,GAAuB,IAAD,EAClB1P,mBAAoB,IADF,oBACzCsmB,EADyC,KAChCylC,EADgC,OAEd/rD,mBAAyB,IAFX,oBAEzC0rD,EAFyC,KAE9BM,EAF8B,OAGIhsD,mBAAsB,MAH1B,oBAGzCisD,EAHyC,KAGrBC,EAHqB,KA2EhD,OAtEAjjD,qBAAU,WACJyG,GACFy8C,KAAK16E,MAAMi+B,EAAM,CACfsnB,QAAQ,EACRo1B,gBAAgB,EAChBC,SAAS,WAAD,4BAAE,WAAOrkE,GAAP,mCAAA/W,EAAA,sDACA0xC,EAAS36B,EAAT26B,KAEF2pC,EAAuB,GACvBzB,EAA8B,GAE9B0B,EAAc,CAAC,SAAU,WAAY,cAAe,YAAa,QAAS,cAE1EC,EAAgB7pC,EAAKyE,MAAM,GARzB,eAUUolC,GAVV,aAAAv7E,EAAA,sCAAAA,EAAA,6DAUG4hD,EAVH,QAWA45B,EAAqBF,EAAYG,QAAO,SAACC,EAAKC,EAASvjD,GAE3D,OADAsjD,EAAIC,GAA4B/5B,EAAIxpB,GAC7BsjD,IACN,IAdG,kBAiBEhzD,GAAQO,cAAcopD,SAASmJ,EAAW,CAAEI,YAAY,IAjB1D,OAkBJP,EAAU9lE,KAAKimE,GAlBX,gDAoBA,gBAA2BK,OACvBzuD,EAAS,KAAgB0uD,MAAMpmE,KAAI,SAACqkE,GACxC,MAAO,CACL/sD,MAAO+sD,EAAI94E,MAAQ,GACnBtB,QAASo6E,EAAIp6E,YAGjBi6E,EAAYrkE,KAAK,CACfqsC,IAAK,CACHxpC,OAAQojE,EAAUpjE,OAClB7b,SAAUyjC,GAAeE,iBAAiBs7C,EAAUj/E,WAAai/E,EAAUj/E,SAC3Eob,YAAa6jE,EAAU7jE,YACvBC,UAAW4jE,EAAU5jE,UACrByO,MAAOm1D,EAAUn1D,OAAS,IAC1BkD,WAAYiyD,EAAUjyD,YAAc,KAEtC6D,YApCA,2RA0CF2uD,EAAgBV,EAAU3lE,KAAI,SAACksC,GACnC,MAAO,CACLxpC,OAAQwpC,EAAIxpC,OACZ7b,SAAUyjC,GAAeE,iBAAiB0hB,EAAIrlD,WAAaqlD,EAAIrlD,SAC/Dob,YAAaiqC,EAAIjqC,YACjBC,UAAWgqC,EAAIhqC,UACfyO,MAAOu7B,EAAIv7B,OAAS,IACpBkD,WAAYq4B,EAAIr4B,YAAc,QAG5ByyD,EAAgBd,KAAKe,QAAQV,EAAe,CAAEW,UAAW,MACzDC,EAAU,IAAIC,KAAK,CAACJ,GAAgBv9C,EAAKhkC,KAAM,CACnD0B,KAAM,aAGR2+E,EAAWiB,GACXhB,EAAanB,GACbqB,EAAsBkB,GA3Dd,gEAAF,mDAAC,OA+DZ,CAAC19C,IAEG,CAAE4W,UAASolC,YAAWO,sBDPsBqB,CAAY59C,GAAvD4W,EAVgB,EAUhBA,QAASolC,EAVO,EAUPA,UAAWO,EAVJ,EAUIA,mBACtBxf,EAAYnmB,EAAQ57C,OACpBihF,EAAaD,EAAUhhF,OACvBa,EAAU,OAAGua,QAAH,IAAGA,GAAH,UAAGA,EAAMpS,eAAT,iBAAG,EAAeM,gBAAlB,aAAG,EAAyBuT,GAEtCgmE,EAAY,uCAAG,4BAAAt8E,EAAA,6DACnB66E,GAAa,GACP0B,EAAmD,CACvD99C,KAAMu8C,GAHW,SAKbwB,QAAQC,QAAQ93E,EAASugC,GAAmBq3C,KAL/B,OAMnB53E,EACE8/B,GACEvhC,EAAM8K,mBACN,EACA0D,GAAOE,eACPtX,EACAY,GAAa2qC,SACb,IAGJlhC,EACE2+B,GACEpgC,EAAM2K,aACN,EACA6D,GAAOE,eACPtX,EACAY,GAAa8D,KACb,GACA,GACA,IAzBe,2CAAH,qDA0ClB,OACE,sBAAKmlB,UAAU,mBAAf,UACE,cAACw2D,GAAD,CACExjC,WARa,SAACh7C,GAClBm3B,GAAQ,GACR8lD,EAAcj9E,IAOVq/D,UAAWA,EACXkf,WAAYA,EACZrB,UAAWA,IAEZqB,EAAa,GAAK,cAACH,GAAD,CAAaC,QAASA,GAASC,UAAWA,EAAWC,WAAYA,IAEpF,eAAC31B,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQs2D,UAAzB,UACE,eAAC7jC,GAAA,EAAD,CAAKryB,UAAWJ,EAAQu2D,WAAxB,UACE,cAACh2D,GAAA,EAAD,CAAYH,UAAWJ,EAAQJ,MAA/B,4BACA,eAACW,GAAA,EAAD,CAAYH,UAAWJ,EAAQy3C,UAA/B,6BAA2DA,QAE7D,cAAC,GAAD,CAAa2B,UAAWqd,GAAStd,SAAU7nB,EAAS+nB,iBAAiB,oCAGvE,cAAC,GAAD,CACE7xC,KAAMA,EACN+H,QAASA,EACT6lD,WAAYA,EACZC,cAAeA,EACf5yE,OAAQ81E,EACRjD,UAAWA,IAEb,cAAC,GAAD,CACE9tD,KAAM8tD,IAAcn2E,EAAMuM,2BAAsE,OAAzCvM,EAAMwM,gCAC7D/P,QACEuD,EAAMuM,0BACF,8BACA,yCAENgc,YA7Ca,WACjBovD,GAAa,GACT33E,EAAMuM,2BACRyV,EAAS,mBA2CP/oB,KAAM+G,EAAMuM,0BAA4BzU,GAAO4wB,QAAU5wB,GAAO05B,YElK3DgoD,GAAa,CACxB,CACEtkE,OAAQ,IACR7b,SAAU,EACVob,YAAa,mBACbC,UAAW,eACXyO,MAAO,qBACPkD,WAAY,MAEd,CACEnR,OAAQ,IACR7b,SAAU,EACVob,YAAa,mBACbC,UAAW,eACXyO,MAAO,qBACPkD,WAAY,eCFVlH,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXo6D,WAAY,CACVl9D,UAAW,UACXnC,QAAS,qBAEXqG,MAAO,CACLpH,YAAarB,KAAOwB,mBACpBJ,MAAOpB,KAAOM,UACdO,SAAU,YACViH,aAAc,aAEhB45D,gBAAiB,CACfn6D,QAAS,OACTK,WAAY,MACZF,eAAgB,gBAChBD,IAAK,YACLK,aAAc,UAEhB65D,cAAe,CACbp+D,MAAO,MACPnB,QAAS,OACTmF,QAAS,OACTC,cAAe,SACfI,WAAY,SACZF,eAAgB,SAChB9E,OAAO,cAAD,OAAgB5C,KAAOkD,uBAC7B,MAAO,CACLqB,UAAW,cAGfW,KAAM,CACJ3B,MAAO,YACPC,OAAQ,aAEVupB,WAAY,CACV3rB,MAAOpB,KAAOM,UACdO,SAAU,UACV0C,MAAO,MACPoC,UAAW,UAEbsP,gBAAiB,CACf1N,QAAS,OACTC,cAAe,SACfjE,MAAO,QAETq+D,SAAU,CACRr9D,UAAW,WACXe,OAAQ,UACRlE,MAAOpB,KAAOF,QACd4G,eAAgB,kBA+GPm7D,OA1Gf,WACE,IAAMh5D,EAAU1B,KACV6C,EAAWM,eAFO,EC5DM,WAAO,IAAD,EACYuJ,mBAA2B,CACzE5qB,MAAO,KACP64E,aAAc,OAHoB,oBAC7BC,EAD6B,KACXC,EADW,KA6DpC,MAAO,CAAED,mBAAkBE,aAvDN,SAAC1+C,GAChBA,EAAKrN,KAAO,QACd8rD,EAAoB,CAClB/4E,MACE,6GACF64E,aAAc,OAKlB9B,KAAK16E,MAAMi+B,EAAM,CACfsnB,QAAQ,EACRo1B,gBAAgB,EAChBC,SAAU,SAACrkE,GACT,IAAMqmE,EAAcrmE,EAAQoY,KAAKib,QAAU,GACrCizC,EAAkB,CAAC,UAAW,SAAU,iBAAe,aAAc,QAAS,gBAEpF,GAA+B,MAA3BtmE,EAAQoY,KAAK+sD,UAAjB,CASA,IAAMoB,EAAiBD,EAAgBtnE,QAAO,SAACgwC,GAAD,OAAaq3B,EAAYjjF,SAAS4rD,MAC5Ds3B,EAAgB5jF,OAAS2jF,EAAY3jF,OAGvDyjF,EAAoB,CAClB/4E,MAAO,uFACP64E,aAAc,OAKdM,EAAe7jF,OAAS,EAC1ByjF,EAAoB,CAClB/4E,MAAM,0DAAD,OAA4Dm5E,EAAenY,KAC9E,MADG,iDAGL6X,aAAc,OAKlBE,EAAoB,CAClB/4E,MAAO,KACP64E,aAAcv+C,SA/Bdy+C,EAAoB,CAClB/4E,MACE,wHACF64E,aAAc,YDoCmBO,GAAnCN,EAHgB,EAGhBA,iBAAkBE,EAHF,EAGEA,aAHF,EAIkCpuD,oBAAkB,GAJpD,oBAIjByuD,EAJiB,KAIMC,EAJN,KAKlB7oC,EAASjX,mBAgCf,OAPA3F,qBAAU,WACJwlD,IACF5oC,EAAOzW,QAAQ/mB,KAAK+9B,QACpBsoC,GAAyB,MAE1B,CAACD,IAGF,sBAAKr5D,UAAU,mBAAf,UACE,eAAC,GAAD,CAAaR,MAAO,sBAAuB5pB,KAAM,EAAjD,UACE,cAACirB,GAAA,EAAD,CAAQC,QAlBO,WACnBC,EAAS,mBAiB0BX,QAAQ,WAAWjI,MAAM,YAAxD,sBAGA,cAAC0I,GAAA,EAAD,CACEC,QA1Be,WACrBC,EAAS,oBAAqB,CAAEpQ,MAAO,CAAE2pB,KAAMw+C,EAAiBD,iBA0B1Dz4D,QAAQ,YACRjI,MAAM,UACN8R,UAAW6uD,EAAiBD,aAJ9B,0BASF,eAACj4B,GAAA,EAAD,CAAM5gC,UAAWJ,EAAQ44D,WAAzB,UACE,cAACr4D,GAAA,EAAD,CAAYH,UAAWJ,EAAQJ,MAA/B,+BACA,eAAC6yB,GAAA,EAAD,CAAKryB,UAAWJ,EAAQ64D,gBAAxB,UACE,eAACpmC,GAAA,EAAD,CAAKryB,UAAWJ,EAAQ84D,cAAxB,UACGI,EAAiBD,aAChB,cAAC,GAAD,CAAiB74D,UAAWJ,EAAQ3D,OAEpC,cAAC,GAAD,CAAS+D,UAAWJ,EAAQ3D,OAE9B,cAACkE,GAAA,EAAD,CAAYH,UAAWJ,EAAQkkB,WAA/B,SACGg1C,EAAiBD,aAAjB,qBACiBC,EAAiBD,aAAaviF,KAD/C,qJAKL,eAAC+7C,GAAA,EAAD,CAAKryB,UAAWJ,EAAQoM,gBAAxB,UACE,eAACnL,GAAA,EAAD,CACEC,QAvDc,WAAO,IAAD,EAC9B,UAAAsa,SAASouB,eAAe,uBAAxB,SAAyCxY,SAuD/B5wB,QAAQ,WACRjI,MAAM,YACNgf,UAAW,cAAC,GAAD,IAJb,UAME,uBACEhlB,GAAG,eACHna,KAAK,OACLoiC,OAAO,OACP7R,MAAO,CAAEjK,QAAS,QAClBmL,SAxEW,SAACC,GAAgD,IAAD,EACjE4Q,EAAI,UAAG5Q,EAAME,OAAOyQ,aAAhB,aAAG,EAAqB,GAC9BC,GACF0+C,EAAa1+C,MA0DP,gBAeA,cAAClJ,GAAA,EAAD,CAAMtQ,QAAS,kBAAMw4D,GAAyB,IAAOt5D,UAAWJ,EAAQ+4D,SAAxE,sCAGA,cAAC,WAAD,CACEprC,KA5DHgrC,GA6DGjmC,SAAS,YACTt1C,QAAS6yC,GACT/V,IAAK2W,EACLyU,UAAU,IACVq0B,mBAAmB,WAIxBT,EAAiB94E,OAChB,cAACmgB,GAAA,EAAD,CAAYC,QAAQ,QAAQjI,MAAM,QAAlC,SACG2gE,EAAiB94E,eEjKxBke,GAAYC,cAAW,SAACzH,GAAD,OAC3B0H,aAAa,CACXo7D,KAAM,CACJl7D,QAAS,OACTK,WAAY,SACZF,eAAgB,eA0BPg7D,OAjBf,YAAoF,IAAhD7gF,EAA+C,EAA/CA,aAC5BmoB,EAAWM,eACXzB,EAAU1B,KAMhB,OACE,cAACyO,GAAA,EAAD,CAASnN,MAAM,SAASic,UAAU,MAAMqO,WAAY,IAApD,SACE,sBAAMhpB,QAAS,kBANQ,SAACloB,GAC1BmoB,EAAS,QAAS,CAAEpQ,MAAO,CAAE/X,kBAKNgtB,CAAmBhtB,IAAeonB,UAAWJ,EAAQ45D,KAA1E,SACE,cAAC,GAAD,SCqFOE,OA/Ff,YAKuB,IAAD,EAJpBzgB,EAIoB,EAJpBA,iBACA0gB,EAGoB,EAHpBA,wBACAte,EAEoB,EAFpBA,yBACA1yD,EACoB,EADpBA,qBAEMoY,EAAWM,eACX1iB,EAAgB2wB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMhS,iBAF1C,EAGkDisB,mBAAwB,MAH1E,oBAGbgvD,EAHa,KAGgBC,EAHhB,KAKdC,EAAoB,UAAGn7E,EAAcA,qBAAjB,aAAG,EAA6B+hD,MAAK,SAAC7kD,EAAG8kD,GAAJ,OAC7D9kD,EAAE4V,MAAMmhD,cAAcC,cAAclS,EAAElvC,MAAMmhD,kBAiD9C,OACE,sBAAK5yC,UAAU,yBAAf,UACE,cAAC,GAAD,CACER,MAAM,gBACN4M,eAAgBztB,EAAcA,cAAd,OAA8Bm7E,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAsBxkF,OAAS,EAF/E,SAIE,cAACurB,GAAA,EAAD,CACET,QAAQ,YACRjI,MAAM,UACN6H,UAAU,cACVc,QAAS,WACPC,EAAS,UALb,iCAYDpiB,EAAcqJ,qBACb,cAAC,GAAD,IAEA,cAAC,GAAD,CACEkxD,SAAU,CAAE5+C,MAAO,OAAQgB,UAAW,QACtCq+C,eAAa,EACbX,UAtE2B,CACjC,CAAEV,SAAU,eAAgBvuC,MAAO,eACnC,CAAEuuC,SAAU,QAASvuC,MAAO,SAC5B,CAAEuuC,SAAU,QAASvuC,MAAO,UAC5B,CAAEuuC,SAAU,UAAWvuC,MAAO,cAC9B,CAAEuuC,SAAU,UAAWvuC,MAAO,aAkExBgvC,SAAU+gB,GAAwB,GAClCrgB,WAzDuB,SAAChc,EAAmB6a,GACjD,IAAMyhB,GACHt8B,EAAI8d,gBAAmB5yD,GAAwBixE,IAAgCn8B,EAAIjsC,OACtF,OAAQ8mD,GACN,IAAK,eACH,MAAM,GAAN,OAAU7a,EAAIhsC,MAAd,YAAuBgsC,EAAI/rC,UAC7B,IAAK,QACH,OAAO+rC,EAAIv7B,MACb,IAAK,QACH,OACE,cAAC,GAAD,CACE6H,MAAO0zB,EAAI8d,eAAiB,aAAe,qBAC3CpjD,MAAOslC,EAAI8d,eAAiB,UAAY,UAG9C,IAAK,UACH,OACE,cAAC,GAAD,CACEpjD,MAAM,UACNqjD,eAAgB/d,EAAIpsC,OACpByP,QAAS,SAACoZ,GAAD,OA3BO,SAACA,EAAqBujB,GAC9CvjB,EAAEC,kBACFw/C,GAAwB,GACxBE,EAA+Bp8B,EAAIjsC,QACnC6pD,EAAyB5d,GAuBDu8B,CAAkB9/C,EAAGujB,IACrCxzB,SAAU8vD,IAGhB,IAAK,UACH,OAAO,cAACE,GAAD,CAAcrhF,aAAc6kD,IACrC,QACE,OAAOA,IA+BLwb,iBAAkBA,EAClBS,aAAa,QC/DRwgB,OAlCf,YAAuG,IAAnFthF,EAAkF,EAAlFA,aAAc+gF,EAAoE,EAApEA,wBAAyBte,EAA2C,EAA3CA,yBACzD,OACE,sBAAKr7C,UAAU,YAAf,UACE,sBAAKA,UAAU,MAAf,UACE,gCACE,+BAAOpnB,EAAa6Y,QACpB,qCAAQ7Y,EAAa8Y,eAEvB,cAAC,GAAD,CACEqY,MAAOnxB,EAAa2iE,eAAiB,aAAe,qBACpDpjD,MAAOvf,EAAa2iE,eAAiB,UAAY,aAGrD,qBAAKv7C,UAAU,uBACf,sBAAKA,UAAU,MAAf,UACE,+BAAOpnB,EAAaspB,QACpB,sBAAKlC,UAAU,UAAf,UACE,cAACi6D,GAAD,CAAcrhF,aAAcA,IAC5B,qBAAKonB,UAAU,qBACf,cAAC,GAAD,CACE7H,MAAM,UACNqjD,eAAgB5iE,EAAayY,OAC7ByP,QAAS,SAACoZ,GACRy/C,GAAwB,GACxBte,EAAyBziE,IAE3BqxB,UAAWrxB,EAAa2iE,2BCsBrB4e,OA7Cf,YAIsB,IAAD,EAHnBlhB,EAGmB,EAHnBA,iBACA0gB,EAEmB,EAFnBA,wBACAte,EACmB,EADnBA,yBAEMt6C,EAAWM,eACX1iB,EAAgB2wB,aAAY,SAAC3e,GAAD,OAAsBA,EAAMhS,iBAExDm7E,EAAoB,UAAGn7E,EAAcA,qBAAjB,aAAG,EAA6B+hD,MAAK,SAAC7kD,EAAG8kD,GAAJ,OAC7D9kD,EAAE4V,MAAMmhD,cAAcC,cAAclS,EAAElvC,MAAMmhD,kBAG9C,OACE,sBAAK5yC,UAAU,eAAf,UACE,sBAAKA,UAAU,sBAAf,UACE,+CACA,cAACa,GAAA,EAAD,CACET,QAAQ,YACRjI,MAAM,UACN6H,UAAU,cACVc,QAAS,WACPC,EAAS,UALb,kCAYDpiB,EAAcqJ,qBACb,cAAC,GAAD,KACsB,OAApB8xE,QAAoB,IAApBA,OAAA,EAAAA,EAAsBxkF,UAA8B,OAApBwkF,QAAoB,IAApBA,OAAA,EAAAA,EAAsBxkF,QAAS,EACjEwkF,EAAqBvoE,KAAI,SAAC3Y,GAAD,OACvB,cAAC,GAAD,CACEA,aAAcA,EACdyiE,yBAA0BA,EAC1Bse,wBAAyBA,OAI7B1gB,MCmDO7kC,OA/EGC,aAXM,SAAC1jB,GAAD,MAAuB,CAC7CD,KAAMC,EAAMD,KACZ/R,cAAegS,EAAMhS,kBAGI,SAAC6B,GAAD,MAA0D,CACnFilB,mBAAoB,SAACtvB,GAAD,OAAwBqK,EvRcZ,SAACrK,GACjC,OAAO,SAACqK,GAGN,OAFAA,EAASwH,MAEFwd,GAAqBC,mBAAmBtvB,GAAY8F,MACzD,SAACF,GACCyE,EAAS2lB,GAAiBpqB,OAE5B,SAACiE,GACCQ,EAAS4lB,GAAoBpmB,QuRvBkBylB,CAAmBtvB,KACxE2vB,mBAAoB,SAACI,GAAD,OAClB1lB,EAASslB,GAAmBI,QAkFjBkO,EA3Ef,YAAiG,IAAhF1jB,EAA+E,EAA/EA,KAAM/R,EAAyE,EAAzEA,cAAe8mB,EAA0D,EAA1DA,mBAAoBK,EAAsC,EAAtCA,mBAClDwF,EAAWvL,aAAcrJ,GAAM8B,YAAYkG,KAAK,OADwC,EAEtCkM,oBAAS,GAF6B,oBAEvFjiB,EAFuF,KAEjEgxE,EAFiE,KAI9F9lD,qBAAU,WAENnjB,EAAKpS,UACJK,EAAcqJ,sBACiB,OAAhCrJ,EAAcA,eAC8B,OAA5CA,EAAcsJ,2BAEdwd,EAAmB/U,EAAKpS,QAAQM,SAASuT,MAE1C,CACDzB,EAAKpS,QACLK,EAAcqJ,qBACdrJ,EAAcA,cACdA,EAAcsJ,0BACdwd,IAGF,IAAM41C,EAA2B,SAACziE,GAChC,IAAMstB,EAAuD,CAC3D1U,OAAQ5Y,EAAa4Y,OACrBH,QAASzY,EAAayY,QAExByU,EAAmBI,IAGrB2N,qBAAU,WAAO,IAAD,EACdpO,EAAkB,UAAC/U,EAAKpS,eAAN,aAAC,EAAcM,SAASuT,MAEzC,CAACxT,EAAckK,iCAElB,IAAMowD,EACJ,cAAC,GAAD,CACEz5C,MAAM,gDACNhkB,QAAQ,6DAIZ,OACE,qCACG8vB,EACC,cAAC,GAAD,CACE2tC,iBAAkBA,EAClBoC,yBAA0BA,EAC1Bse,wBAAyBA,IAG3B,cAAC,GAAD,CACE1gB,iBAAkBA,EAClB0gB,wBAAyBA,EACzBte,yBAA0BA,EAC1B1yD,qBAAsBA,IAI1B,cAAC,GAAD,CACEye,KACEze,IACChK,EAAciK,2BAA8E,OAAjDjK,EAAckK,gCAE5DrN,QACEmD,EAAciK,0BACV,0DACA,0DAEN0e,YAAa,kBAAMqyD,GAAwB,IAC3C3hF,KAAM2G,EAAciK,0BAA4B/R,GAAO4wB,QAAU5wB,GAAO05B,cC+JjE6pD,OAjNf,WAAiB,IAAD,cAER3+E,EAAU,IAAIC,KACd8E,EAAW4uB,cACXx6B,EAAWy6B,eACXtO,EAAWM,eACX3Q,EAAO4e,aAAY,SAAC3e,GAAD,OAAsBA,EAAMD,QANvC,EAO4Bka,mBAAkBr2B,GAAUoB,cAAcf,EAAS+H,WAP/E,oBAOPhH,EAPO,KAOQ0kF,EAPR,OAQczvD,mBAAwC,MAAtBh2B,EAAS+H,UARzC,oBAQPo7B,EARO,KAQCuiD,EARD,OASwC1vD,mBACpDj1B,GACwB,cAAtBf,EAAS+H,UACa,0BAAtB/H,EAAS+H,UACa,qBAAtB/H,EAAS+H,UACQ,OAAjB+T,EAAKpS,UAJP,UAKEoS,EAAKpS,eALP,aAKE,EAAcM,aACd,UAAC8R,EAAKpS,eAAN,aAAC,EAAcM,SAASiS,eAhBd,oBASP0pE,EATO,KAScC,EATd,KAkBRC,OAAoCtiF,IAAzBsD,EAAQ/B,IAAI,SACvBs3B,GAAe,UAAAtgB,EAAKpS,eAAL,eAActG,QAASV,GAAawZ,WACnD4pE,GAAkB,UAAAhqE,EAAKpS,eAAL,eAActG,QAASV,GAAa67B,MAE5DU,qBAAU,WAeI,IAAD,IAdP4mD,IAEC/pE,EAAKpN,UACLoN,EAAKrN,WACqB,OAA3BqN,EAAKlN,oBACJ7N,IAAiBf,EAAS+H,SAAS3G,SAAS,yBAE7CwK,EAAS+sB,MAGe,WAAtB34B,EAAS+H,WACX09E,GAAiB,GACb3pE,EAAKpS,SAAqC,OAA1BoS,EAAKpS,QAAQM,WAAsBoyB,EACrDjQ,EAAS,qBAETy5D,EACmB,OAAjB9pE,EAAKpS,UAAL,UAAyBoS,EAAKpS,eAA9B,aAAyB,EAAcM,aAAY,UAAC8R,EAAKpS,eAAN,aAAC,EAAcM,SAASiS,eAE9DkQ,EAAfiQ,EAAwB,YAAwB,kBAKjDypD,GAAY9kF,IACforB,EAAS,UACTs5D,GAAiB,MAElB,CACD1kF,EACA+a,EAAKpN,SACLoN,EAAKrN,UACLo3E,EACA/pE,EAAKlN,kBACLkN,EAAKpS,QACL0yB,EACAp8B,EAAS+H,SACTokB,EACAvgB,IAGFqzB,qBAAU,WAAO,IAAD,IACR/2B,EAAOlI,EAAS+H,SAChBg+E,EAAYpmF,GAAUoB,cAAcmH,GAE1Cw9E,EAAmB,MAATx9E,GACVu9E,EAAiBM,GACjBH,EACEG,GACW,cAAT79E,GACS,0BAATA,GACS,qBAATA,GACiB,OAAjB4T,EAAKpS,UAJP,UAKEoS,EAAKpS,eALP,aAKE,EAAcM,aACd,UAAC8R,EAAKpS,eAAN,aAAC,EAAcM,SAASiS,eAI1B8pE,GACS,cAAT79E,GACS,qBAATA,GACS,0BAATA,GACS,eAATA,GACA4T,EAAKpS,SACqB,OAA1BoS,EAAKpS,QAAQM,WACZoyB,GAEDjQ,EAAS,oBAGE,WAATjkB,GAAqB29E,GACR15D,EAAfiQ,EAAwB,YAAwB,gBAEjD,CAACtgB,EAAKpS,QAASm8E,EAAUzpD,EAAcp8B,EAAS+H,SAAUokB,IAE7D,IAAM65D,EAAoBH,IAAa/pE,EAAKpN,UAAY3N,GAA4C,QAA3B,UAAA+a,EAAKpS,eAAL,eAAcM,UAEjFi8E,EACa,OAAjBnqE,EAAKpS,UAAL,UAAyBoS,EAAKpS,eAA9B,aAAyB,EAAcM,YAAvC,UAAmD8R,EAAKpS,eAAxD,aAAmD,EAAcM,SAASiS,cAEtEiqE,EAAiBlmF,EAAS+H,SAASmtB,WAAW,aAC9CixD,EAAiBnmF,EAAS+H,SAAS3G,SAAS,YAC5CglF,EAAgBpmF,EAAS+H,SAAS3G,SAAS,mBAC3CilF,EAAarmF,EAAS+H,SAAS3G,SAAS,aACxCklF,EAAgCL,IAAsBG,GAAiBC,GAE7E,OAKE,sBAAKj7D,UAAU,OAAf,UACE,cAAC,GAAD,IACErqB,IAAkBolF,GAAmBG,EACrC,cAAC,GAAD,KAECJ,GAAkB,cAAC,GAAD,CAAc/iD,OAAQA,IAE3C,qBAAK/X,UAAW+X,EAAS,OAAS,UAAlC,SACG6iD,GAAqBlqE,EAAKhM,eACzB,cAAC,GAAD,IACE61E,IAAwBvpD,EAC1BjQ,EAAS,yBAET,eAAC,KAAD,WACE,cAAC,KAAD,CACEjkB,KAAK,YACLq+E,QAASzqE,EAAKpS,QAAUo8E,EAAkB,cAAC,GAAD,IAAe,cAAC,GAAD,IAAgB,cAAC,GAAD,MAE3E,cAAC,KAAD,CAAO59E,KAAK,iBAAiBq+E,QAAS,cAAC,GAAD,MACtC,cAAC,KAAD,CAAOr+E,KAAK,iBAAiBq+E,QAAS,cAAC,GAAD,MACtC,cAAC,KAAD,CAAOr+E,KAAK,WAAWq+E,QAAS,cAAC,GAAD,MAChC,cAAC,KAAD,CAAOr+E,KAAK,aAAaq+E,QAAS,cAAC,GAAD,MAClC,cAAC,KAAD,CAAOr+E,KAAK,QAAQq+E,QAAS,cAAC,GAAD,MAC7B,cAAC,KAAD,CAAOr+E,KAAK,aAAaq+E,QAAS,cAAC,GAAD,MAClC,cAAC,KAAD,CAAOr+E,KAAK,SAASq+E,QAAS,cAAC,GAAD,CAAOjoE,SAAUnc,GAAaoc,cAC5D,cAAC,KAAD,CAAOrW,KAAK,kBAAkBq+E,QAAS,cAAC,GAAD,MACvC,cAAC,KAAD,CAAOr+E,KAAK,gBAAgBq+E,QAAS,cAAC,GAAD,MACrC,cAAC,KAAD,CAAOr+E,KAAK,uBAAuBq+E,QAAS,cAAC,GAAD,MAC5C,cAAC,KAAD,CAAOr+E,KAAK,WAAWq+E,QAAS,cAAC,GAAD,MAChC,cAAC,KAAD,CAAOr+E,KAAK,SAASq+E,QAAS,cAAC,GAAD,MAC9B,cAAC,KAAD,CAAOr+E,KAAK,iBAAiBq+E,QAAS,cAAC,GAAD,CAAOjoE,SAAUnc,GAAa2qC,YACpE,cAAC,KAAD,CAAO5kC,KAAK,YAAYq+E,QAAS,cAAC,GAAD,MACjC,cAAC,KAAD,CAAOr+E,KAAK,iBAAiBq+E,QAAS,cAAC,GAAD,MACtC,cAAC,KAAD,CAAOr+E,KAAK,WAAWq+E,QAAS,cAAC,GAAD,MAChC,cAAC,KAAD,CAAOr+E,KAAK,YAAYq+E,QAAS,cAAC,GAAD,MACjC,cAAC,KAAD,CAAOr+E,KAAK,YAAYq+E,QAAS,cAAC,GAAD,MACjC,cAAC,KAAD,CAAOr+E,KAAK,wBAAwBq+E,QAAS,cAAC,GAAD,MAC7C,cAAC,KAAD,CAAOr+E,KAAK,UAAUq+E,QAAS,cAAC,GAAD,MAC/B,cAAC,KAAD,CAAOr+E,KAAK,wBAAwBq+E,QAAS,cAAC,GAAD,MAC7C,cAAC,KAAD,CAAOr+E,KAAK,mBAAmBq+E,QAAS,cAAC,GAAD,MACxC,cAAC,KAAD,CAAOr+E,KAAK,gBAAgBq+E,QAAS,cAAC,GAAD,MACrC,cAAC,KAAD,CACEr+E,KAAK,kBACLq+E,QAASzqE,EAAKpS,QAAU0yB,EAAe,cAAC,GAAD,IAAoB,cAAC,GAAD,IAAgB,cAAC,GAAD,MAE7E,cAAC,KAAD,CACEl0B,KAAK,gBACLq+E,QAASzqE,EAAKpS,QAAU0yB,EAAe,cAAC,GAAD,IAAwB,cAAC,GAAD,IAAgB,cAAC,GAAD,MAEjF,cAAC,KAAD,CACEl0B,KAAK,iBACLq+E,QAASzqE,EAAKpS,QAAU0yB,EAAe,cAAC,GAAD,IAAuB,cAAC,GAAD,IAAgB,cAAC,GAAD,MAEhF,cAAC,KAAD,CACEl0B,KAAK,SACLq+E,QAA0B,OAAjBzqE,EAAKpS,QAAmBo8E,EAAkB,cAAC,GAAD,IAAY,cAAC,GAAD,IAAgB,cAAC,GAAD,MAEjF,cAAC,KAAD,CACE59E,KAAK,kBACLq+E,QACmB,OAAjBzqE,EAAKpS,QAAmBo8E,EAAkB,cAAC,GAAD,IAAoB,cAAC,GAAD,IAAgB,cAAC,GAAD,MAGlF,cAAC,KAAD,CACE59E,KAAK,gCACLq+E,QACmB,OAAjBzqE,EAAKpS,QAAmBo8E,EAAkB,cAAC,GAAD,IAAkB,cAAC,GAAD,IAAgB,cAAC,GAAD,MAGhF,cAAC,KAAD,CACE59E,KAAK,QACLq+E,QACEzqE,EAAKpS,QAAU0yB,GAAgB0pD,EAAkB,cAAC,GAAD,IAAc,cAAC,GAAD,IAAgB,cAAC,GAAD,MAGnF,cAAC,KAAD,CACE59E,KAAK,oBACLq+E,QAA0B,OAAjBzqE,EAAKpS,QAAmB,cAAC,GAAD,IAAqB,cAAC,GAAD,MAExD,cAAC,KAAD,CACExB,KAAK,oBACLq+E,QAA0B,OAAjBzqE,EAAKpS,QAAmB,cAAC,GAAD,IAAqB,cAAC,GAAD,MAExD,cAAC,KAAD,CAAOxB,KAAK,uBAAuBq+E,QAAS,cAAC,GAAD,MAC5C,cAAC,KAAD,CAAOr+E,KAAK,kBAAkBq+E,QAAS,cAAC,GAAD,MACvC,cAAC,KAAD,CAAOr+E,KAAK,mBAAmBq+E,QAAS,cAAC,GAAD,MACxC,cAAC,KAAD,CAAOr+E,KAAK,UAAUq+E,QAAS,cAAC,GAAD,MAC/B,cAAC,KAAD,CAAOr+E,KAAK,IAAIq+E,QAAS,cAAC,GAAD,MACzB,cAAC,KAAD,CAAOr+E,KAAK,4CAA4Cq+E,QAAS,cAAC,GAAD,e,0BC3N9DC,OAjBf,WACE,OACE,cAAC,IAAD,CAAUj5E,MAAOA,GAAjB,SACE,cAACk5E,GAAA,EAAD,CAAe3kE,MAAOA,GAAtB,SACE,cAAC,KAAD,CAAyB4kE,MAAOC,KAAaC,OAAO,KAApD,SACE,cAAC,KAAD,UACE,eAAC,GAAD,WACE,cAACC,GAAA,EAAD,IACA,cAAC,GAAD,gBCfRC,GAASpnF,kWAAYqnF,gBAAkBrnF,kWAAYqnF,eAAiB,EACpEC,GAAgBtnF,kWAAYunF,gBAAkBvnF,kWAAYunF,eAAiB,EAG7E,CAAC,OAAQ,MAAM7lF,SAAS1B,SAC1BgiB,IAAY,CACVwlE,IAAKxnF,yFACLynF,aAAc,CAACzlE,OAEf0lE,yBAA0B,EAC1BC,YAAa3nF,2FAKf4nF,IAAOvQ,KAAK+P,GAAQE,GAAe,CACjCO,OAAO,IAGXC,IAASz4B,OACP,cAAC,IAAM04B,WAAP,UACE,cAAC,GAAD,MAEFjhD,SAASouB,eAAe,W","debug_id":"875ae9a0-ebda-5436-8184-c3bbdb18b35e"}