{"version":3,"sources":["auth/state/token.js","users/pseudo/hooks.js","users/pseudo/pseudoSchema.js","users/pseudo/PseudoEditor.js","users/pseudo/PseudoLink.js","users/pseudo/index.js","users/pseudo/PseudoTable.js","users/groups/programs/hooks.js","users/groups/programs/index.js","users/groups/GroupLookupByProgram.js","users/groups/index.js","users/groups/GroupLabel.js","app/state/index.js","projects/estimateStatuses/hooks.js","users/groups/hooks.js","apis/shark.js","projects/types/hooks.js","users/teams/hooks.js","users/teams/TeamTableFilter.js","users/teams/index.js","projects/estimateStatuses/state/index.js","projects/types/state/index.js","users/groups/state/index.js","users/teams/state/index.js","users/pseudo/state/api.js","users/pseudo/state/index.js","common/functions/state/reducers.js","common/entity/createEntity.js","common/entity/createEntityActions.js","common/entity/createEntityReducer.js","projects/types/index.js","users/RealUserSelect.js","users/notificationGroups/hooks.js","users/UserDescription.js","users/UserSelect.js","users/notificationGroups/notificationGroupSchema.js","users/notificationGroups/NotificationGroupEditor.js","users/notificationGroups/index.js","users/notificationGroups/NotificationGroupNew.js","users/notificationGroups/NotificationGroupTable.js","users/ServerLoginEditor.js","users/userSchema.js","users/UserEditor.js","users/UserEmailSelect.js","users/userGroupings/hooks.js","users/userGroupings/userGroupingSchema.js","users/userGroupings/UserGroupingEditor.js","users/userGroupings/UserGroupingSelect.js","users/userGroupings/index.js","users/userGroupings/UserGroupingNew.js","users/userGroupings/UserGroupingTable.js","users/useUserRate.js","users/index.js","users/UserTable.js","users/groups/GroupDescription.js","users/groups/GroupSelect.js","projects/types/TypeSelect.js","settings/state/api.js","settings/state/slices.js","settings/state/reducers.js","settings/state/index.js","app/useAppCanStateExpire.js","common/hooks/useMemoCompare.js","users/groups/programs/state/index.js","common/tables/TableHeaderContextMenu.js","common/tables/TableHeaders.js","common/tables/tableSortTypes.js","common/tables/useColumns.js","common/tables/Table.js","common/entity/createEntityHooks.js","common/functions/difference.js","common/functions/state/index.js","common/functions/index.js","projects/estimateStatuses/EstimateStatusSelect.js","users/groups/GroupTableFilter.js","projects/types/TypeDescription.js","projects/types/TypeTableFilter.js","users/UserTableFilter.js","users/UserModal.js","users/teams/TeamDescription.js","users/teams/TeamSelect.js","common/isDev.ts","estimates/EstimateEditor.js","estimates/estimateSchema.js","common/fields/FieldSelect.js","common/fields/FieldDate.js","common/hooks/useReinitState.js","common/hooks/useDocumentVisibility.js","common/hooks/useInterval.js","common/hooks/useIntervalUpdateComponent.js","app/AppStateHandler.js","common/hooks/useDocumentFocus.js","activity/jobs/state/api.js","activity/jobs/state/slices.js","activity/jobs/state/reducers.js","activity/jobs/state/index.js","activity/notifications/state/api.js","activity/notifications/state/slices.js","activity/notifications/state/reducers.js","activity/notifications/state/index.js","activity/userActivity/state/api.js","activity/userActivity/state/slices.js","activity/userActivity/state/reducers.js","activity/userActivity/state/index.js","activity/watches/state/api.js","activity/watches/state/index.js","activity/state/index.js","approvals/state/api.js","approvals/state/slices.js","approvals/state/reducers.js","approvals/state/index.js","auth/state/api.js","auth/state/actions.js","auth/state/slices.js","auth/state/reducers.js","auth/state/index.js","codeReviews/state/api.js","codeReviews/state/index.js","contacts/contactTypes/state/index.js","contacts/state/api.js","contacts/state/persist.js","contacts/state/index.js","contracts/contractProductCategories/state/api.js","contracts/contractProductCategories/state/index.js","contracts/contractProducts/state/api.js","contracts/contractProducts/state/index.js","contracts/contractProductsDefaultCrs/state/api.js","contracts/contractProductsDefaultCrs/state/index.js","contracts/state/api.js","contracts/state/index.js","crs/difficulties/state/index.js","crs/filters/favorites/state/api.js","crs/filters/favorites/state/index.js","crs/tableLayouts/sharkColumns.js","crs/filters/favorites/hooks.js","crs/filters/favorites/index.js","crs/filters/state/api.js","crs/filters/state/index.js","crs/modules/state/index.js","crs/notificationTypes/state/index.js","common/functions/fileBase64.js","apis/attachments.js","crs/qaReviews/state/api.js","crs/qaReviews/state/index.js","crs/statuses/state/index.js","crs/tableLayouts/state/api.js","crs/tableLayouts/state/index.js","common/toasts/toastMessage.js","common/toasts/toastPrompt.js","customers/contracts/state/index.js","customers/contracts/hooks.js","customers/contracts/CustomerContractDescription.js","customers/contracts/CustomerContractSelect.js","customers/contracts/CustomerContractTableFilter.js","customers/contracts/index.js","customers/hostingAgreements/state/api.js","customers/hostingAgreements/state/index.js","customers/hostingAgreementsMonth/state/api.js","customers/hostingAgreementsMonth/state/index.js","customers/jiraProjects/state/api.js","customers/jiraProjects/state/index.js","customers/modules/state/index.js","customers/organizations/state/index.js","customers/thirdPartyLicenses/state/api.js","customers/thirdPartyLicenses/state/index.js","customers/state/api.js","customers/state/entity.js","customers/state/actions.js","customers/state/reducer.js","customers/state/index.js","customers/hooks.js","customers/CustomerName.js","contacts/hooks.js","contacts/ContactLink.js","customers/CustomerTableFilter.js","contacts/ContactTable.js","contacts/contactTypes/hooks.js","contacts/contactTypes/ContactTypeSelect.js","contacts/ContactLookupModal.js","contacts/ContactSelectByCustomer.js","common/details/DetailSection.js","common/details/DetailTable.js","common/navs/NavSidebar.js","common/pages/Page.js","contacts/ContactShow.js","contacts/ContactTableByCustomer.js","contacts/contactTypes/ContactTypeDescription.js","contacts/contactTypes/ContactTypeTableFilter.js","contacts/contactTypes/index.js","contacts/index.js","customers/CustomerLink.js","customers/CustomerSelect.js","customers/CustomerSpecialWorkConditions.js","customers/hostingAgreements/hooks.js","servers/awsInstanceTypes/awsInstanceTypeSchema.js","servers/awsInstanceTypes/AwsInstanceTypeEditor.js","servers/awsInstanceTypes/AwsInstanceTypeLink.js","servers/awsInstanceTypes/state/api.js","servers/awsInstanceTypes/state/index.js","servers/awsInstanceTypes/hooks.js","servers/awsInstanceTypes/AwsInstanceTypeSelect.js","servers/awsInstanceTypes/index.js","servers/awsInstanceTypes/AwsInstanceTypeTable.js","servers/awsRegions/awsRegionSchema.js","servers/awsRegions/AwsRegionEditor.js","servers/awsRegions/AwsRegionLink.js","servers/awsRegions/state/api.js","servers/awsRegions/state/index.js","servers/awsRegions/hooks.js","servers/awsRegions/AwsRegionSelect.js","servers/awsRegions/index.js","servers/awsRegions/AwsRegionTable.js","servers/awsZones/awsZoneSchema.js","servers/awsZones/AwsZoneEditor.js","servers/awsZones/AwsZoneLink.js","servers/awsZones/state/api.js","servers/awsZones/state/index.js","servers/awsZones/hooks.js","servers/awsZones/AwsZoneSelect.js","servers/awsZones/index.js","servers/awsZones/AwsZoneTable.js","servers/s3Buckets/state/api.js","servers/s3Buckets/state/index.js","servers/s3Buckets/hooks.js","servers/s3Buckets/S3BucketSelect.js","customers/hostingAgreements/hostingAgreementSchema.js","customers/hostingAgreements/types.js","customers/hostingAgreements/HostingAgreementEditor.js","customers/hostingAgreements/HostingAgreementLink.js","customers/hostingAgreements/index.js","customers/hostingAgreements/HostingAgreementTable.js","customers/hostingAgreementsMonth/hooks.js","servers/s3Buckets/S3BucketLink.js","servers/ServerLink.js","customers/hostingAgreementsMonth/index.js","customers/hostingAgreementsMonth/HostingAgreementMonthTable.js","customers/hostingAgreementsMonth/HostingAgreementMonthExceptionsTable.js","customers/modules/hooks.js","customers/modules/ModuleDescription.js","customers/modules/ModuleSelect.js","customers/modules/ModuleTableFilter.js","customers/modules/index.js","customers/organizations/hooks.js","customers/organizations/OrganizationDescription.js","customers/organizations/OrganizationSelect.js","customers/organizations/OrganizationTableFilter.js","customers/organizations/index.js","customers/thirdPartyLicenses/hooks.js","customers/thirdPartyLicenses/thirdPartyLicenseSchema.js","customers/thirdPartyLicenses/types.js","customers/thirdPartyLicenses/ThirdPartyLicenseEditor.js","customers/thirdPartyLicenses/index.js","customers/thirdPartyLicenses/ThirdPartyLicenseTable.js","customers/index.js","customers/CustomerTable.js","customers/CustomerLocationSelect.js","customers/CustomerContactLink.js","customers/CustomerChangedAlert.js","projects/folders/state/index.js","projects/priorities/state/index.js","projects/sources/state/index.js","projects/statuses/state/index.js","projects/state/api.js","projects/state/entity.js","projects/state/actions.js","projects/state/reducer.js","projects/state/index.js","projects/updateProjectPrompt.js","crs/crSchema.js","crs/state/api.js","crs/state/entity.js","crs/state/actions.js","crs/state/reducer.js","crs/state/index.js","dbc/branches/state/index.js","dbc/codeTests/state/index.js","dbc/reusablePrograms/state/index.js","dbc/sourceCodes/state/index.js","dbc/state/index.js","edi/customerEdiSetups/state/index.js","edi/ftpUsers/state/index.js","edi/tradingPartners/state/index.js","edi/state/index.js","estimates/state/api.js","estimates/state/index.js","expenses/categories/state/index.js","expenses/trips/users/state/index.js","expenses/trips/state/index.js","expenses/types/state/index.js","expenses/state/api.js","expenses/state/entity.js","expenses/state/actions.js","expenses/state/reducer.js","expenses/state/index.js","invoices/taxProductCategories/state/api.js","invoices/taxProductCategories/state/index.js","invoices/taxProducts/state/api.js","invoices/taxProducts/state/index.js","invoices/state/index.js","servers/awsAccounts/state/api.js","servers/awsAccounts/state/index.js","servers/reservations/state/api.js","servers/reservations/state/index.js","servers/state/api.js","servers/state/index.js","time/billableOverrideReasons.js","time/currentTimer/state/slices.js","time/currentTimer/state/api.js","time/currentTimer/state/reducers.js","time/currentTimer/state/index.js","time/holdReasons/index.js","time/holdReasons/TimeHoldDateSelect.js","time/internalProjects.js","time/state/api.js","time/state/slices.js","time/state/reducers.js","time/state/index.js","reducers.js","store.js","auth/useLogout.js","common/hooks/useRedirect.js","ErrorFallback.js","common/modals/CenteredModal.js","projects/estimateStatuses/EstimateStatusDescription.js","projects/estimateStatuses/EstimateStatusTableFilter.js","projects/estimateStatuses/index.js","projects/folders/hooks.js","projects/folders/FolderDescription.js","projects/folders/FolderSelect.js","projects/folders/FolderTableFilter.js","projects/folders/index.js","projects/getProjectPriorityClassName.js","projects/priorities/hooks.js","projects/priorities/PriorityDescription.js","projects/priorities/PrioritySelect.js","projects/priorities/PriorityTableFilter.js","projects/priorities/index.js","projects/ProjectAlerts.js","projects/ProjectContacts.js","common/hooks/forms/useGroupOwnerFields.js","common/components/forms/GroupOwnerFields.js","projects/statuses/hooks.js","projects/statuses/StatusDescription.js","projects/statuses/StatusSelect.js","projects/statuses/StatusTableFilter.js","projects/statuses/index.js","projects/ProjectTable.js","common/functions/entityLookup.js","projects/ProjectCustomerSelect.js","projects/ProjectCustomerEdit.js","projects/projectCustomerSchema.js","projects/ProjectCustomersEdit.js","projects/projectSchema.js","projects/sources/hooks.js","projects/sources/SourceDescription.js","projects/sources/SourceSelect.js","projects/sources/SourceTableFilter.js","projects/sources/index.js","projects/ProjectEditor.js","common/fields/FieldInput.js","estimates/EstimateEditorModal.js","estimates/hooks.js","estimates/EstimateModifyModal.js","estimates/EstimateNewButton.js","common/formatters/index.js","estimates/activeStatuses.js","estimates/EstimateLink.js","estimates/types.js","estimates/EstimateTable.js","projects/ProjectEstimateEditor.js","projects/ProjectFilters.js","projects/ProjectLink.js","projects/useProject.js","projects/ProjectNew.js","common/functions/queryToString.js","projects/useProjectsByFilter.js","projects/ProjectSearch.js","activity/userActivity/useUserActivity.js","activity/userActivity/useUserActivityOptions.js","projects/useFindOption.js","projects/ProjectSelect.js","projects/ProjectShareButton.js","activity/watches/hooks.js","activity/watches/index.js","activity/watches/WatchButton.js","common/hooks/useSearchParams.js","projects/ProjectStatusEditor.js","projects/useProjects.js","projects/index.js","crs/CrAlerts.js","app/useAppFormsState.js","common/details/DetailField.js","crs/defectOccurrences/hooks.js","crs/defectOccurrences/DefectOccurrenceSelect.js","crs/defectOccurrences/index.js","crs/defectOccurrences/DefectOccurrenceDescription.js","crs/difficulties/hooks.js","crs/difficulties/DifficultyDescription.js","crs/difficulties/DifficultySelect.js","crs/difficulties/DifficultyTableFilter.js","crs/difficulties/index.js","crs/modules/hooks.js","crs/modules/ModuleDescription.js","crs/modules/ModuleSelect.js","crs/modules/ModuleTableFilter.js","crs/modules/index.js","crs/notificationTypes/hooks.js","crs/notificationTypes/NotificationTypeDescription.js","crs/notificationTypes/NotificationTypeSelect.js","crs/notificationTypes/NotificationTypeTableFilter.js","crs/notificationTypes/index.js","crs/CrEditor.js","crs/CrEstimateEditor.js","crs/CrLink.js","common/lists/List.js","common/lists/InfiniteList.js","crs/useCrsByFilter.js","crs/useCr.js","crs/CrNew.js","crs/getCrPriorityClassName.js","crs/qaStatuses/hooks.js","crs/qaStatuses/QaStatusSelect.js","crs/qaStatuses/index.js","crs/qaStatuses/QaStatusDescription.js","crs/statuses/hooks.js","crs/statuses/StatusDescription.js","crs/statuses/StatusSelect.js","crs/statuses/StatusTableFilter.js","crs/statuses/index.js","crs/useCrTableColumns.js","crs/CrTable.js","crs/filters/CrFilterParameters.js","crs/CrSearch.js","crs/CrSelect.js","crs/CrShareButton.js","crs/CrStatusEditor.js","common/tables/TableColumnSelect.js","crs/tableLayouts/hooks.js","crs/tableLayouts/TableLayoutDescription.js","common/tables/TableLayoutEditor.js","crs/tableLayouts/tableLayoutSchema.js","crs/tableLayouts/TableLayoutEditor.js","crs/tableLayouts/TableLayoutSelect.js","crs/tableLayouts/index.js","crs/filters/crFilterSchema.js","crs/filters/CrFilterEditor.js","crs/filters/hooks.js","crs/filters/CrFilterSelect.js","crs/filters/index.js","crs/useCrTableSettings.js","crs/CrTableSettingsEditor.js","crs/CrTargetDatesTable.js","crs/useCrs.js","crs/index.js","crs/updateCrPrompt.js","crs/CrList.js","crs/CrNav.js","time/currentTimer/useCurrentTimer.js","time/TimeBillingNoteLink.js","time/TimeCrEditor.js","time/TimeEstimateTable.js","common/fields/FieldHours.js","common/functions/timerCalculation.js","common/modals/NoEscapeModal.js","common/modals/DeletingModal.js","common/modals/GetReasonModal.js","common/modals/OkCancelModal.js","common/modals/SavingModal.js","common/functions/parseTime.js","time/TimeTimersTable.js","time/timeTypes.js","time/timeTypeSelector.js","time/TimeForm.js","time/TimeModify.js","time/TimeModifyModal.js","time/TimeNew.js","time/TimeNewModal.js","time/timeListingTypes.js","time/useTimeModifyModal.js","time/TimersTable.js","time/useTimer.js","time/TimeTable.js","time/index.js","time/useTimes.js","time/useTimeStats.js","time/TimeFilters.js","NavSearch.js","time/NavTimer.js","NavBarCommon.js","activity/jobs/useJob.js","approvals/ApprovalsFilters.js","approvals/ApprovalsSkipped.js","approvals/ApprovalsStatement.js","approvals/ApprovalsTable.js","approvals/index.js","common/modals/LoadingModal.js","pages/approvals/ApprovalsIndex.js","pages/approvals/index.js","auth/useToken.js","auth/index.js","auth/useLogin.js","pages/auth/Login.js","pages/auth/Logout.js","pages/auth/ResetPassword.js","pages/auth/index.js","codeReviews/repositories/hooks.js","codeReviews/repositories/RepositorySelect.js","codeReviews/repositories/index.js","codeReviews/repositories/RepositoryDescription.js","pages/codeReviews/CodeReviewOptions.js","pages/codeReviews/CodeReviewNew.js","common/components/HelixLink.js","common/functions/helixUrl.js","codeReviews/hooks.js","codeReviews/statuses.js","codeReviews/CodeReviewTable.js","codeReviews/index.js","pages/codeReviews/CodeReviewShow.js","pages/codeReviews/index.js","common/components/StampDisplay.js","contracts/contractSchema.js","contracts/ContractEditor.js","contracts/ContractLink.js","contracts/contractProductCategories/contractProductCategorySchema.js","contracts/contractProductCategories/ContractProductCategoryEditor.js","contracts/contractProductCategories/ContractProductCategoryLink.js","contracts/contractProductCategories/hooks.js","contracts/contractProductCategories/ContractProductCategorySelect.js","contracts/contractProductCategories/ContractProductCategoryTableFilter.js","contracts/contractProductCategories/index.js","contracts/contractProductCategories/ContractProductCategoryTable.js","expenses/categories/hooks.js","expenses/categories/ExpenseCategorySelect.js","invoices/taxProducts/hooks.js","invoices/taxProductCategories/hooks.js","invoices/taxProductCategories/taxProductCategorySchema.js","invoices/taxProductCategories/TaxProductCategoryEditor.js","invoices/taxProductCategories/TaxProductCategoryLink.js","invoices/taxProductCategories/TaxProductCategorySelect.js","invoices/taxProductCategories/TaxProductCategoryTableFilter.js","invoices/taxProductCategories/index.js","invoices/taxProductCategories/TaxProductCategoryTable.js","invoices/taxProducts/taxProductSchema.js","invoices/taxProducts/TaxProductEditor.js","invoices/taxProducts/TaxProductLink.js","invoices/taxProducts/TaxProductSelect.js","invoices/taxProducts/index.js","invoices/taxProducts/TaxProductTable.js","invoices/taxProducts/TaxProductTableFilter.js","contracts/contractProducts/contractProductSchema.js","contracts/contractProducts/ContractProductEditor.js","contracts/contractProducts/hooks.js","contracts/contractProducts/ContractProductLink.js","contracts/contractProducts/ContractProductSelect.js","contracts/contractProducts/ContractProductTableFilter.js","contracts/contractProducts/index.js","contracts/contractProducts/ContractProductTable.js","contracts/contractProductsDefaultCrs/contractProductDefaultCrSchema.js","contracts/contractProductsDefaultCrs/ContractProductDefaultCrEditor.js","contracts/contractProductsDefaultCrs/ContractProductDefaultCrLink.js","contracts/contractProductsDefaultCrs/ContractProductDefaultCrTable.js","contracts/contractProductsDefaultCrs/hooks.js","contracts/contractProductsDefaultCrs/index.js","contracts/ContractTable.js","contracts/hooks.js","contracts/index.js","contracts/ContractDetailTable.js","common/navs/NavSidebarItem.js","pages/contracts/ContractNavSidebar.js","pages/contracts/ContractEdit.js","pages/contracts/ContractIndex.js","pages/contracts/ContractNew.js","pages/contracts/contractProductCategories/ContractProductCategoryEdit.js","pages/contracts/contractProductCategories/ContractProductCategoryIndex.js","pages/contracts/contractProductCategories/ContractProductCategoryNew.js","pages/contracts/contractProductCategories/index.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrEdit.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrEditPage.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrIndex.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrNew.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrNewPage.js","pages/contracts/contractProductDefaultCrs/index.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrEditModal.js","pages/contracts/contractProductDefaultCrs/ContractProductDefaultCrNewModal.js","pages/contracts/contractProducts/ContractProductEdit.js","pages/contracts/contractProducts/ContractProductIndex.js","pages/contracts/contractProducts/ContractProductNew.js","pages/contracts/contractProducts/index.js","common/components/calendars/index.js","pages/contracts/ContractScheduling.js","pages/contracts/index.js","pages/crs/CrPage.js","pages/crs/CrNavSidebar.js","pages/crs/CrShowNavSidebar.js","pages/crs/CrEdit.js","common/components/CrLinkWithContextMenu.js","pages/crs/CrIndex.js","pages/crs/CrNew.js","common/details/AttachmentsTable.js","common/hooks/useAttachment.js","common/details/AttachmentsButton.js","common/details/Comments.js","common/details/DetailTableEdit.js","pages/crs/CrShowDetails.js","pages/crs/CrShowToggles.js","pages/crs/CrShow.js","activity/userActivity/UserActivityTable.js","pages/crs/CrShowLog.js","pages/crs/CrShowProject.js","crs/qaReviews/hooks.js","crs/qaReviews/QaReviewLink.js","crs/qaReviews/QaReviewTable.js","crs/qaReviews/index.js","crs/qaReviews/qaReviewSchema.js","crs/qaReviews/QaReviewEditor.js","crs/qaReviews/QaReviewEditorModal.js","crs/qaReviews/QaReviewModifyModal.js","crs/qaReviews/QaReviewNewButton.js","pages/crs/CrShowQa.js","pages/crs/CrShowRevisions.js","pages/crs/CrShowTimeSetAll.js","pages/crs/CrShowTime.js","pages/crs/index.js","pages/customers/CustomerNavSidebar.js","pages/customers/CustomerIndexNavSidebar.js","pages/customers/CustomerIndex.js","common/details/Address.js","pages/customers/CustomerShowNavSidebar.js","pages/customers/CustomerShow.js","pages/customers/CustomerShowCrs.js","pages/customers/CustomerShowProjects.js","pages/customers/hostingAgreements/HostingAgreementNavSidebar.js","pages/customers/hostingAgreements/HostingAgreementIndex.js","pages/customers/hostingAgreements/HostingAgreementMonthNew.js","pages/customers/hostingAgreements/HostingAgreementMonthShow.js","pages/customers/hostingAgreements/HostingAgreementNew.js","pages/customers/hostingAgreements/HostingAgreementShow.js","pages/customers/hostingAgreements/index.js","customers/jiraProjects/hooks.js","customers/jiraProjects/jiraProjectSchema.js","customers/jiraProjects/JiraProjectEditor.js","customers/jiraProjects/JiraProjectLink.js","customers/jiraProjects/JiraProjectSelectByCustomer.js","customers/jiraProjects/types.js","customers/jiraProjects/JiraProjectTable.js","customers/jiraProjects/JiraProjectTableByCustomer.js","customers/jiraProjects/index.js","pages/customers/jiraProjects/JiraProjectNavSidebar.js","pages/customers/jiraProjects/JiraProjectIndex.js","pages/customers/jiraProjects/JiraProjectNew.js","pages/customers/jiraProjects/JiraProjectShow.js","pages/customers/jiraProjects/index.js","pages/customers/third-party-licenses/ThirdPartyLicenseNavSidebar.js","pages/customers/third-party-licenses/ThirdPartyLicenseIndex.js","pages/customers/third-party-licenses/ThirdPartyLicenseNew.js","pages/customers/third-party-licenses/ThirdPartyLicenseShow.js","pages/customers/third-party-licenses/index.js","pages/customers/index.js","dbc/branches/hooks.js","dbc/branches/BranchDescription.js","dbc/branches/branchSchema.js","dbc/branches/BranchEditor.js","dbc/branches/BranchSelect.js","dbc/branches/BranchTableFilter.js","dbc/branches/index.js","dbc/branches/BranchTable.js","dbc/codeTests/codeTestSchema.js","dbc/codeTests/CodeTestEditor.js","dbc/codeTests/hooks.js","dbc/codeTests/CodeTestSelect.js","dbc/codeTests/index.js","dbc/codeTests/CodeTestTable.js","dbc/codeTests/CodeTestFailuresTable.js","dbc/reusablePrograms/hooks.js","dbc/reusablePrograms/reusableProgramSchema.js","dbc/reusablePrograms/ReusableProgramEditor.js","dbc/reusablePrograms/ReusableProgramSelect.js","dbc/reusablePrograms/ReusableProgramTableFilter.js","dbc/reusablePrograms/index.js","dbc/reusablePrograms/ReusableProgramTable.js","dbc/sourceCodes/hooks.js","dbc/sourceCodes/sourceCodeSchema.js","dbc/sourceCodes/SourceCodeEditor.js","dbc/sourceCodes/SourceCodeSelect.js","dbc/sourceCodes/SourceCodeTableFilter.js","dbc/index.js","dbc/sourceCodes/index.js","dbc/sourceCodes/SourceCodeTable.js","pages/dbc/DbcNavSidebar.js","pages/dbc/branches/BranchIndex.js","pages/dbc/branches/BranchShow.js","pages/dbc/branches/index.js","pages/dbc/codeTests/CodeTestIndex.js","pages/dbc/codeTests/CodeTestShow.js","pages/dbc/codeTests/index.js","pages/dbc/DbcIndex.js","pages/dbc/reusablePrograms/ReusableProgramIndex.js","pages/dbc/reusablePrograms/ReusableProgramShow.js","pages/dbc/reusablePrograms/index.js","pages/dbc/sourceCodes/SourceCodeIndex.js","pages/dbc/sourceCodes/SourceCodeShow.js","pages/dbc/sourceCodes/index.js","pages/dbc/index.js","edi/tradingPartners/hooks.js","edi/tradingPartners/TradingPartnerDescription.js","edi/tradingPartners/tradingPartnerSchema.js","edi/tradingPartners/TradingPartnerEditor.js","edi/tradingPartners/TradingPartnerSelect.js","edi/tradingPartners/TradingPartnerTableFilter.js","edi/tradingPartners/index.js","edi/tradingPartners/TradingPartnerTable.js","edi/customerEdiSetups/customerEdiSetupSchema.js","edi/customerEdiSetups/CustomerEdiSetupEditor.js","edi/customerEdiSetups/hooks.js","edi/customerEdiSetups/CustomerEdiSetupSelect.js","edi/tradingPartners/TradingPartnerLink.js","edi/customerEdiSetups/CustomerEdiSetupTableFilter.js","edi/customerEdiSetups/index.js","edi/customerEdiSetups/CustomerEdiSetupTable.js","edi/ftpUsers/ftpUserSchema.js","edi/ftpUsers/FtpUserEditor.js","edi/ftpUsers/hooks.js","edi/ftpUsers/FtpUserSelect.js","edi/ftpUsers/index.js","edi/ftpUsers/FtpUserTable.js","edi/index.js","pages/edi/EdiNavSidebar.js","pages/edi/customerEdiSetups/CustomerEdiSetupEdit.js","pages/edi/customerEdiSetups/CustomerEdiSetupIndex.js","pages/edi/customerEdiSetups/CustomerEdiSetupNew.js","pages/edi/customerEdiSetups/index.js","pages/edi/EdiIndex.js","edi/ftpUsers/FtpUserDeleteLogTable.js","pages/edi/ftpUsers/FtpUserEdit.js","pages/edi/ftpUsers/FtpUserIndex.js","pages/edi/ftpUsers/FtpUserNew.js","pages/edi/ftpUsers/index.js","pages/edi/tradingPartners/TradingPartnerEdit.js","pages/edi/tradingPartners/TradingPartnerIndex.js","pages/edi/tradingPartners/TradingPartnerNew.js","pages/edi/tradingPartners/index.js","pages/edi/index.js","expenses/categories/ExpenseCategoryDescription.js","expenses/categories/ExpenseCategoryTableFilter.js","expenses/categories/index.js","common/modals/ConfirmModal.js","common/modals/useConfirmModal.js","expenses/expenseSchema.js","expenses/trips/hooks.js","expenses/trips/ExpenseTripDescription.js","expenses/trips/ExpenseTripSelect.js","expenses/trips/users/hooks.js","expenses/trips/users/ExpenseTripUserDescription.js","expenses/trips/users/ExpenseTripUserSelect.js","expenses/trips/users/ExpenseTripUserTableFilter.js","expenses/trips/users/index.js","expenses/trips/index.js","expenses/types/hooks.js","expenses/types/ExpenseTypeDescription.js","expenses/types/ExpenseTypeSelect.js","expenses/types/ExpenseTypeTableFilter.js","expenses/types/index.js","expenses/ExpenseEditor.js","expenses/ExpenseEditorModal.js","expenses/hooks.js","expenses/ExpenseTable.js","expenses/index.js","expenses/ExpenseNewButton.js","pages/expenses/ExpenseNavSidebar.js","pages/expenses/ExpenseCustomerEntry.js","pages/expenses/ExpenseCustomerIndex.js","pages/expenses/ExpenseIndex.js","pages/expenses/ExpenseOtherEntry.js","pages/expenses/ExpenseSearch.js","pages/expenses/ExpenseTripEntry.js","pages/expenses/ExpenseTripIndex.js","pages/expenses/index.js","activity/jobs/JobsTable.js","activity/jobs/useJobs.js","activity/notifications/NotificationsTable.js","activity/notifications/useNotifications.js","pages/Home.js","pages/invoices/InvoicesNavSidebar.js","pages/invoices/InvoicesIndex.js","pages/invoices/taxProductCategories/TaxProductCategoryEdit.js","pages/invoices/taxProductCategories/TaxProductCategoryIndex.js","pages/invoices/taxProductCategories/TaxProductCategoryNew.js","pages/invoices/taxProductCategories/index.js","invoices/index.js","pages/invoices/taxProducts/TaxProductEdit.js","pages/invoices/taxProducts/TaxProductIndex.js","pages/invoices/taxProducts/TaxProductNew.js","pages/invoices/taxProducts/index.js","pages/invoices/index.js","pages/projects/ProjectPage.js","pages/projects/ProjectNavSidebar.js","pages/projects/ProjectShowNavSidebar.js","pages/projects/ProjectEdit.js","pages/projects/ProjectIndex.js","pages/projects/ProjectNew.js","pages/projects/ProjectShowDetails.js","pages/projects/ProjectShow.js","pages/projects/ProjectShowLog.js","pages/projects/ProjectShowTime.js","pages/projects/index.js","activity/jobs/JobPage.js","pages/reports/ReportNavSidebar.js","pages/reports/ReportOptions.js","pages/reports/ReportActivity.js","common/fields/FieldYesNoSelect.js","pages/reports/ReportARYearlyCustomerSummary.js","pages/reports/ReportCodeChanges.js","pages/reports/ReportContractorWorkSummary.js","pages/reports/ReportCustomAnalysis.js","pages/reports/ReportCustomerBilledByProduct.js","pages/reports/ReportCustomerCrs.js","pages/reports/ReportCustomerProducts.js","pages/reports/ReportCustomerStatement.js","pages/reports/ReportCustomerTime.js","pages/reports/ReportDailyBreakdown.js","pages/reports/ReportEmployeeByMeasures.js","pages/reports/ReportHostingYearBreakdown.js","pages/reports/ReportIndex.js","pages/reports/ReportInternalTime.js","pages/reports/ReportModuleSummary.js","pages/reports/ReportNonbillableTime.js","pages/reports/ReportOutOfOffice.js","pages/reports/ReportOvertime.js","pages/reports/ReportPrCrTextSearch.js","pages/reports/ReportQaReviewers.js","pages/reports/ReportTimeOnHold.js","pages/reports/ReportUnbilledTime.js","pages/reports/ReportWorkSummary.js","pages/reports/index.js","servers/awsAccounts/awsAccountSchema.js","servers/awsAccounts/AwsAccountEditor.js","servers/awsAccounts/hooks.js","servers/awsAccounts/AwsAccountLink.js","servers/awsAccounts/AwsAccountSelect.js","servers/awsAccounts/index.js","servers/awsAccounts/AwsAccountTable.js","servers/awsAccounts/AwsAccountTableFilter.js","servers/hooks.js","servers/reservations/hooks.js","servers/reservations/ReservationComparisonTable.js","servers/reservations/reservationSchema.js","servers/reservations/ReservationEditor.js","servers/reservations/ReservationLink.js","servers/reservations/ReservationSelect.js","servers/reservations/index.js","servers/reservations/ReservationTable.js","servers/s3Buckets/s3BucketSchema.js","servers/s3Buckets/S3BucketEditor.js","servers/s3Buckets/index.js","servers/s3Buckets/S3BucketTable.js","servers/types.js","servers/getServerAlias.js","servers/serverSchema.js","servers/ServerEditor.js","servers/ServerSelectByCustomer.js","servers/ServerTable.js","servers/ServerTableByCustomer.js","servers/index.js","pages/servers/ServerNavSidebar.js","pages/servers/awsAccounts/AwsAccountNavSidebar.js","pages/servers/awsAccounts/AwsAccountEdit.js","pages/servers/awsAccounts/AwsAccountIndex.js","pages/servers/awsAccounts/AwsAccountNew.js","pages/servers/awsAccounts/index.js","pages/servers/awsInstanceTypes/AwsInstanceTypeNavSidebar.js","pages/servers/awsInstanceTypes/AwsInstanceTypeEdit.js","pages/servers/awsInstanceTypes/AwsInstanceTypeIndex.js","pages/servers/awsInstanceTypes/AwsInstanceTypeNew.js","pages/servers/awsInstanceTypes/index.js","pages/servers/awsRegions/AwsRegionNavSidebar.js","pages/servers/awsRegions/AwsRegionEdit.js","pages/servers/awsRegions/AwsRegionIndex.js","pages/servers/awsRegions/AwsRegionNew.js","pages/servers/awsRegions/index.js","pages/servers/awsZones/AwsZoneNavSidebar.js","pages/servers/awsZones/AwsZoneEdit.js","pages/servers/awsZones/AwsZoneIndex.js","pages/servers/awsZones/AwsZoneNew.js","pages/servers/awsZones/index.js","pages/servers/reservations/ReservationComparison.js","pages/servers/reservations/ReservationEdit.js","pages/servers/reservations/ReservationIndex.js","pages/servers/reservations/index.js","pages/servers/s3Buckets/S3BucketNavSidebar.js","pages/servers/s3Buckets/S3BucketEdit.js","pages/servers/s3Buckets/S3BucketIndex.js","pages/servers/s3Buckets/S3BucketNew.js","pages/servers/s3Buckets/index.js","pages/servers/ServerIndex.js","pages/servers/ServerNew.js","pages/servers/ServerShow.js","pages/servers/index.js","common/hooks/useGetPuttyKey.js","pages/settings/SettingsNavSidebar.js","pages/settings/Settings.js","estimates/EstimateSelectBySource.js","estimates/EstimateTableBySource.js","estimates/index.js","usePreloader.js","pages/settings/SettingsCache.js","pages/settings/SettingsWatched.js","pages/settings/index.js","pages/time/TimeNavSidebar.js","pages/time/TimeEdit.js","pages/time/TimeIndex.js","pages/time/TimeInternal.js","pages/time/TimeNew.js","pages/time/TimeStats.js","pages/time/TimeUnassigned.js","pages/time/index.js","pages/users/UserNavSidebar.js","pages/users/notification-groups/NotificationGroupNavSidebar.js","pages/users/notification-groups/NotificationGroupEdit.js","pages/users/notification-groups/NotificationGroupIndex.js","pages/users/notification-groups/NotificationGroupNew.js","pages/users/notification-groups/index.js","pages/users/pseudos/PseudoNavSidebar.js","pages/users/pseudos/PseudoEdit.js","pages/users/pseudos/PseudoIndex.js","pages/users/pseudos/PseudoNew.js","pages/users/pseudos/index.js","pages/users/userGroupings/UserGroupingNavSidebar.js","pages/users/userGroupings/UserGroupingEdit.js","pages/users/userGroupings/UserGroupingIndex.js","pages/users/userGroupings/UserGroupingNew.js","pages/users/userGroupings/index.js","pages/users/UserIndex.js","pages/users/UserShow.js","pages/users/index.js","pages/index.js","Preloader.js","useVersion.js","App.js","serviceWorker.js","index.js","common/entity/entityDescription.js","common/entity/entitySelect.js","common/entity/entityTableFilter.js","common/functions/parseIntId.js","settings/useSettings.js","common/forms/Errors.js","common/forms/ErrorIcon.js","common/forms/useForms.js","common/forms/Forms.js","common/forms/FormsField.js","common/forms/useFormsAutoSubmit.js","common/forms/useFormsKeys.js","users/state/api.js","users/state/entity.js","users/state/actions.js","users/state/reducer.js","users/state/index.js","common/functions/dates.js","common/hooks/useTinykeys.js","users/hooks.js","users/UserLink.js","common/tables/TableFilters.js","app/index.js","app/useAppIsActive.js","common/details/Mailto.js","common/popovers/ContextMenu.js","common/hooks/useClickOutsideEvent.js","common/details/Tel.js","common/functions/phone.js","users/notificationGroups/state/api.js","users/notificationGroups/state/entity.js","users/notificationGroups/state/actions.js","users/notificationGroups/state/reducer.js","users/notificationGroups/state/index.js","users/userGroupings/state/api.js","users/userGroupings/state/entity.js","users/userGroupings/state/actions.js","users/userGroupings/state/reducer.js","users/userGroupings/state/index.js"],"names":["setToken","token","localStorage","setItem","getToken","getItem","createEntityHooks","entity","pseudoState","actions","usePseudos","useEntities","usePseudo","useEntity","pseudoSchema","object","shape","name","string","label","required","defaultGroup","owner","id","max","inactive","bool","default","allowedTypes","array","of","nullable","PseudoUserForm","isNew","submitForm","useFormContext","useFormsKeys","Form","Row","Col","xs","readOnly","autoComplete","className","Check","style","minWidth","Select","as","Group","RealUserSelect","Type","isMulti","Button","variant","onClick","PseudoUserLink","children","to","pathname","Pseudo","api","state","selectors","useOne","useAll","Table","pseudos","pseudoLink","Components","layout","props","columns","useMemo","Header","accessor","Filter","TextColumnFilter","filter","Cell","value","pseudo","row","original","UserTableFilter","SelectColumnFilter","hasCount","data","Link","PseudoLink","Editor","values","onSubmit","isDisabled","defaultValues","schema","pseudoUserSchema","showDevTool","programState","usePrograms","Program","GroupLookupByProgram","React","forwardRef","ref","onSelect","useState","results","setResults","programs","onRowDoubleClick","rowInfo","groupId","_","isFunction","onRowDoubleClickProp","fuse","Fuse","keys","minMatchCharLength","GroupDescription","Text","SearchInput","onEnter","q","search","map","p","item","query","setQuery","Control","onChange","e","target","onKeyDown","event","keyCode","isTierOneGroup","groupState","useGroup","useGroups","isTierOne","GroupSelect","Description","Label","onChosen","disabled","show","setShow","useCallback","onMouseDown","stopPropagation","title","Modal","size","onHide","closeButton","Title","Body","TableFilter","GroupTableFilter","LookupByProgram","persistConfig","key","version","storage","whitelist","rehydrate","createAsyncThunk","a","dispatch","getStoredState","type","REHYDRATE","payload","appSlice","createSlice","initialState","INITIAL_LOADING_STATE","isActive","canStateExpire","forms","lastRehydrate","reducers","setIsActive","action","console","log","setCanStateExpire","isEmpty","setForms","extraReducers","builder","buildAsyncThunkReducer","Date","toISOString","appReducer","persistReducer","reducer","appActions","estimateStatusState","useEstimateStatuses","useEstimateStatus","SHARK_URL","process","apiClient","axios","create","baseURL","timeout","headers","endPoint","apiData","appId","post","unimplemented","config","logData","password","command","Promise","reject","authToken","then","response","responseMessage","responseFor","catch","error","message","Error","typeState","useTypes","useType","teamState","useTeams","useTeam","TeamTableFilter","entityTableFilter","Team","TeamSelect","TeamDescription","getMany","shark","r","responseData","projectEstimateStatuses","createEntity","getState","projects","estimateStatuses","createEntityActions","createEntityReducer","persist","projectTypes","types","groups","users","addDefaultCase","teams","customerId","args","pseudoUsers","searchArgs","getOne","createOne","pseudoUser","updateOne","requests","ids","loading","testStateLoading","requestId","getChangesExcludingStamps","changes","current","currentFields","undefined","createDateTime","modifyDateTime","changesFields","difference","thunk","fullfilled","stateSlice","rejected","setState","addCase","pending","_state","meta","arg","_arg","JSON","stringify","includes","fulfilled","toast","getEntityState","adapterConfig","selectId","isString","adapter","createEntityAdapter","getSelectors","selectBySearch","createSelector","selectEntities","idsBySearch","lastUpdate","startAfter","entities","at","selectByIds","camelCase","pluralize","createEntityThunkAction","getActions","deleteOne","reset","createAction","payloadCreator","entityType","thunkAPI","isUndefined","createReducer","getInitialState","removeAll","updateState","isObject","upsertMany","searchIds","uniq","concat","upsertOne","removeOne","Object","entries","forEach","remove","TypeSelect","TypeDescription","TypeTableFilter","realUser","internal","isChampion","isContractor","placeholder","hasMeButton","shouldValuesSortLikeOptions","useUsers","loadingUsers","user","useSelector","auth","_options","sortBy","isInternalUser","f","valueOption","o","v","find","fs","isLoading","isSearchable","options","displayName","useNotificationGroups","useNotificationGroup","UserDescription","entityDescription","useUser","u","UserSelect","canPerformCodeReview","loadingPseudoUsers","FieldSelect","notificationOption","oneOf","notificationGroupSchema","transform","toUpperCase","description","pseudoUserId","newProjectSetting","leaveTeamSetting","assignedSetting","priorityChangedSetting","qaStatusChangedSetting","NotificationGroupEditor","NotificationGroupForms","MemberTable","members","PseudoUser","NotificationSelect","InputGroup","Prepend","useController","field","fieldState","formsContext","isInvalid","errors","useDispatch","t","UserLink","showId","disableSortBy","member","notificationGroupState","deleteMember","notificationGroupId","addMember","AddMemberForms","watch","controlId","NotificationGroup","New","onNew","isManager","isAdmin","notificationGroups","disableFilters","ServerLoginForm","serverLoginPassword","serverLoginKeyInfo","serverLoginPasswordInfo","DropdownButton","Append","Dropdown","Item","Alert","userSchema","UserForm","md","lg","xl","isClearable","validateEmail","email","test","String","toLowerCase","1","2","3","8","9","useUserGroupings","useUserGrouping","userGroupingSchema","isInactive","UserGroupingEditor","UserGroupingForms","userGroupingState","userGroupingId","userGrouping","UserGroupingSelect","entitySelect","UserGrouping","userGroupings","useUserRate","crId","projectId","canGet","userRate","rate","useEffect","userState","getRate","User","disableFilter","contact","phone","formatPhone","phoneHome","phoneHomeExtension","phoneWork","phoneWorkExtension","phoneCell","phoneCellExtension","phoneOther","phoneOtherExtension","index","Tel","Mailto","UserModal","EmailSelect","emails","initialValues","input","setInput","usersEntities","loggedInUser","usersOptions","createOption","createOptionsWithManager","managerOption","managerId","push","argsOptions","flatten","meOptions","allUsersOptions","emailsOptions","validEmails","length","inputString","inputOption","groupedOptions","groupBy","split","onInputChange","Name","ServerLoginEditor","serverLogin","updateSettingsAPI","getSettings","settings","updateSettings","currentSettings","success","autoClose","useAppCanStateExpire","app","set","useMemoCompare","memoFn","deps","useRef","render","setRender","isEqual","TableHeaderContextMenu","onSortChange","onGroupBy","onExportToCSV","ContextMenu","closeOnClick","placement","Divider","TableLayout","columnsStart","useReinitState","c","setColumns","columnCheckListItem","onDragEnd","result","destination","items","list","startIndex","endIndex","Array","from","splice","removed","reorder","source","i","droppableId","renderClone","provided","innerRef","droppableProps","column","draggableId","snapshot","rubric","draggableProps","dragHandleProps","getToggleHiddenProps","TableHeaders","hasFilter","exportTableToCSV","table","headerGroups","allColumns","setColumnOrder","toggleGroupBy","getToggleAllRowsExpandedProps","isAllRowsExpanded","setGroupBy","showContextMenu","setShowContextMenu","setTarget","headerGroup","getHeaderGroupProps","getHeaderProps","headerClassName","onContextMenu","preventDefault","handleHeaderContextMenu","isGrouped","canSort","getSortByToggleProps","isSorted","isSortedDesc","canFilter","canGroupBy","disableGroupBy","gb","g","getRowValuesByColumnID","row1","row2","columnId","sortStringValues","aV","bV","Boolean","b","aa","shift","bb","alower","blower","REQUIRED_COLUMNS","getToggleAllRowsSelectedProps","IndeterminateCheckbox","getToggleRowSelectedProps","REQUIRED_COLUMNS_IDS","useColumns","columnsDef","layoutDef","sortByDef","filtersDef","filters","groupByDef","expandedDef","expanded","isSelect","select","hasFooter","initColumns","colDef","col","has","dataType","get","DATATYPES","format","cellClassName","getAlignmentClassName","alignment","join","getFormattedValue","formattedValue","Aggregated","aggregate","isExpanded","columnIds","warn","columnsLookup","keyBy","setupColumns","getColumn","requiredCols","hiddenColumns","columnOrder","invalidLayoutColumns","layoutWithRequired","initSort","desc","isArray","_groupByDef","number","horizontal","toNumber","isNaN","decimals","toFixed","currency","indeterminate","rest","defaultRef","resolvedRef","ALIGNMENT_HORIZONAL_CLASSNAMES","right","left","center","ALIGNMENT_VERTICAL_CLASSNAMES","middle","top","bottom","textBottom","textTop","classNames","vertical","sortTypes","rowA","rowB","custom","convertValue","padStart","numeric","defaultCellProps","cell","doNothingFunction","emptyArray","initialSort","initialGroupBy","initialExpanded","initialFilters","skeletonLines","getRowProps","getCellProps","moveFooterToTop","autoResetSort","autoResetFilters","autoResetExpanded","autoResetSelected","getMore","hasMore","onRefresh","refreshLabel","isMultiSelect","onSelectedRowsChange","tableRef","isLoadingForUseColumns","_data","d","fill","_skeleton","useTable","autoResetSortBy","autoResetSelectedRows","useFilters","useColumnOrder","useGroupBy","useSortBy","useExpanded","useRowSelect","getTableProps","rows","flatRows","prepareRow","footerGroups","setHiddenColumns","setSortBy","selectedFlatRows","reduce","getRowData","rowData","subRows","CountInfoButton","records","shown","RefreshButton","bordered","hover","csv","querySelectorAll","classList","contains","cols","j","text","innerText","replaceAll","trim","csvBlob","Blob","encoding","FileSaver","saveAs","TableFooters","idx","TableRow","toggleRowSelected","isSelected","onDoubleClick","cells","TableCell","getToggleRowExpandedProps","isAggregated","group","getFooterGroupProps","getFooterProps","resetAction","getManyAction","getAction","updateAction","deleteAction","expire","parseId","getToastMessage","startCase","hasGetMany","hasGet","useGetOne","rawId","getCallback","unwrapResult","_get","loaded","setLoaded","selectById","setError","createCallback","updateCallback","deleteCallback","shouldGet","finally","selectAll","canExpire","useCanStateExpire","moment","diff","resetCallback","_getMany","useEntitiesBySearch","useEntityByFind","findArgs","setId","entityError","resetEntity","base","parseIntId","EstimateStatusSelect","mailto","_user","charAt","aria-labelledby","teamId","UserField","subject","body","isDev","EstimateEditor","onSaveAsNew","estimateSchema","EstimateForm","projectManagement","design","development","testing","installation","instruction","support","codeCheckin","scopeAddition","buckets","currencyFormatter","Intl","NumberFormat","setValue","getValues","reference","estimateId","rateUserId","projectManagementHours","designHours","developmentHours","testingHours","installationHours","instructionHours","supportHours","codeCheckinHours","scopeAdditionHours","Number","userRateLoading","totalHours","hours","parseFloat","eval","cost","totalCost","easyButtonClicked","ActiveStatusSelect","OwnerSelect","includeArrows","customInput","ProjectEstimateStatusSelect","RateUserIdSelect","RateInput","formGroupClassName","HoursBucket","setChanged","Feedback","onBlur","date","activeStatus","projectEstimateStatus","min","isValid","menuPlacement","componentsInitial","components","memo","DropdownIndicator","selectComponents","htmlFor","classNamePrefix","opt","getValue","isNull","innerProps","OptionExtended","Option","info","lineHeight","FieldDate","initialValue","includeTime","timeFormat","timeIntervals","timeCaption","dateOnlyFormat","dateAndTimeFormat","noDateChange","labelClassName","minDate","maxDate","includeNow","effectiveDateFormat","rightNowDesc","_label","_datetime","displayLongDateTime","_date","displayLong","disableSubtract","isSameOrBefore","disableAdd","isSameOrAfter","startOf","subtract","add","selected","toDate","newDate","_value","isSame","handleOnBlur","dateFormat","showTimeSelect","argsRef","useDocumentVisibility","getIsDocumentHidden","isVisible","setIsVisible","onVisibilityChange","visibilityChange","document","hidden","msHidden","webkitHidden","getBrowserVisibilityProp","addEventListener","removeEventListener","useInterval","callback","ms","clearInterval","setInterval","useIntervalUpdateComponent","now","setTime","appIsActive","useIsActive","AppStateHandler","setActive","documentFocus","isFocus","setIsFocus","onFocus","window","useDocumentFocus","documentVisible","lastDocumentFocus","setLastDocumentFocus","debouncedRehydrate","debounce","appIsActiveNext","getJobAPI","submitJobAPI","functionName","resubmitJobAPI","jobsAdapter","getJobs","activity","jobs","getJob","submitJob","resubmitJob","jobsSlice","clearJobs","updateJob","sliceReducer","getNotificationsAPI","getNotificationAPI","updateNotificationAPI","payload2","notificationsAdapter","getNotifications","notifications","getNotification","updateNotification","notificationsSlice","clearNotifications","getUserActivityAPI","userActivityAdapter","getUserActivity","userActivity","userActivitySlice","clearUserActivity","watches","watchState","activityReducer","combineReducers","notificationsReducer","userActivityReducer","jobsReducer","approveProjectAPI","jobId","approveProjectsAPI","discountProjectAPI","amount","comment","refreshProjectsAPI","customers","billThruDate","approvalsAdapter","approveProject","approvals","myjob","parse","output","x","project","approved","jobActions","discountProject","discountAmount","discountComment","refreshProjects","jobCusts","newCusts","n","nc","jc","jp","np","approveProjects","y","errorMessage","approvalsSlice","clearApprovals","approvalsReducer","getVersion","versionBuild","loginApi","userId","appVersion","logoutApi","checkTokenApi","resetPasswordApi","login","rejectWithValue","checkToken","logout","resetPassword","isRejectedAction","endsWith","isLoggedIn","accessApprovals","canBypassContractRestriction","allEmployeeReports","canEnterOtherUserExpenses","hostingAgreementAccess","canMaintainServers","canMaintainEdi","canMaintainInvoices","canMaintainContracts","experimentalFeatures","loginFulfilled","logoutFulfilled","invalidToken","toastId","addMatcher","codeReviews","codereview","codeReviewState","contactTypes","contacts","contactTypeState","customer","customerContacts","migrations","contactsPersistConfig","migrate","createMigrate","contactState","contractTypesState","contractProductCategories","contractProductCategory","contracts","contractProductCategoryState","contractProducts","contractProduct","contractProductState","contractProductId","contractProductDefaultCrs","contractProductDefaultCr","contractProductDefaultCrState","contract","contractState","contractProductCategoriesState","contractProductsState","contractProductDefaultCrsState","crDifficulties","crs","difficulties","difficultyState","crFilterFavorites","crFilterId","shouldSendRequest","returnValue","favorites","favoriteState","sharkColumns","CUST","OWNR","CRDT","CRTM","MODT","MOTM","CLDT","CLTM","CROP","MOOP","CLBY","STAT","DIFF","MODU","GRUP","PRIO","TYPE","RFCC","PJRF","TDDT","TSDT","TFDT","NOTF","CHMP","WTFC","REFR","DESC","SYNP","ESST","SAMF","STAX","QOWN","QAST","JIRA","FIXN","EST1","EST2","PRST","CLSR","ASGN","QAAI","CONT","MDGR","MLTC","PONO","CNOT","useFavorites","useFavorite","Favorite","filterState","buildCrFilter","layoutId","sortByOriginal","isPublic","public","s","folderId","deconstructCrFilter","originalFilter","crFilter","findKey","k","crFilters","crModules","modules","modulesState","crNotificationTypes","notificationTypes","notificationTypeState","fileBase64","file","resolve","reader","FileReader","readAsDataURL","onload","replace","onerror","getAttachmentAPI","method","fetch","json","blob","deleteAttachmentAPI","createAttachmentAPI","files","lcFiles","content","originalFilename","lcFilesToDecode","qaReviews","qaReview","qareview","createAttachment","qaActions","qaReviewState","crStatuses","statuses","statusState","buildCrTableLayout","deconstructCrTableLayout","columnsOriginal","crTableLayout","crTableLayouts","tableLayouts","tableLayoutState","toastMessage","toastOptions","Prompt","whiteSpace","toastPrompt","dismiss","draggable","position","transition","Zoom","onConfirm","confirm","cancel","ButtonGroup","customerContracts","customerContractState","useCustomerContracts","useCustomerContractsByCustomer","useCustomerContract","CustomerContractDescription","CustomerContractSelect","getHookArgs","CustomerContractTableFilter","CustomerContract","useSearch","hostingAgreements","license","entityActions","hostingAgreementsState","hostingAgreementMonths","month","hostingAgreementMonthsState","jiraProjects","jira","jiraProjectState","customerModules","moduleState","customerOrganizations","organizations","organizationState","customerThirdPartyLicenses","createComment","customerThirdPartyLicense","updateComment","thirdPartyLicenses","thirdPartyLicensesState","customerState","customerContractsState","customerModulesState","customerOrganizationsState","hostingAgreementState","useCustomers","useCustomer","CustomerName","nextId","useContacts","useContact","useContactsByCustomer","ContactLink","sourceType","phones","phoneCustomer","titles","width","extention","ContactField","CustomerTableFilter","filterValue","DEFAULT_COMPONENTS","Customer","rel","ContactTable","contactLink","OverrideComponents","disablefilter","useContactTypes","useContactType","ContactTypeSelect","ContactSelectByCustomer","DetailSection","DetailTable","fields","seq","hide","rowProps","scope","header","NavSidebar","Page","heading","lead","navSidebar","tableOfContents","contents","Children","scrollTo","lgFactor","colSizes","Container","fluid","TableOfContents","href","Details","ContactShow","parseInt","useParams","ContactTypeDescription","ContactTypeTableFilter","ContactType","Contact","Show","SelectByCustomer","TableByCustomer","LookupModal","TableComponents","tableData","setTableData","setLoading","setTypes","searchValue","setSearchValue","focus","dialogClassName","defaultValue","CustomerLink","filterOption","createFilter","ignoreCase","ignoreAccents","matchFromStart","sortName","CustomersSelect","champion","championId","useSettings","customerSort","sort","getSortValue","sortValueA","sortValueB","localeCompare","CustomerConditions","conditions","warranty","futureUpgrade","today","isPoRequired","_warrantyExpirationDate","fromStamp","_futureUpgrade","display","useHostingAgreements","awsInstanceTypeSchema","vCpu","memory","creditsPerHour","AwsInstanceTypeForm","AwsInstanceTypeLink","awsInstanceTypes","awsInstanceType","servers","awsInstanceTypeState","useAwsInstanceTypes","useAwsInstanceType","AwsInstanceTypeSelect","AwsInstanceType","awsInstanceTypeLink","awsRegionSchema","regionDescription","AwsRegionForm","AwsRegionLink","awsRegions","awsRegion","awsRegionState","useAwsRegions","useAwsRegion","AwsRegionSelect","AwsRegion","awsRegionLink","awsZoneSchema","AwsZoneForm","AwsZoneLink","awsZones","awsZone","awsZoneState","useAwsZones","useAwsZone","AwsZoneSelect","AwsZone","awsZoneLink","s3Buckets","s3Bucket","s3BucketState","useS3Buckets","useS3Bucket","useS3BucketsByCustomer","S3BucketSelect","hostingAgreementSchema","serverType","billingDescription","information","currentMonthlyPrice","maxPrice","originalMonthlyPrice","effectiveMonth","awsInstanceId","diskSpace","HOSTING_TYPES","P","T","M","R","W","Y","A","E","F","O","HostingAgreementForm","monthlyLabel","CustomerSelect","showMonthYearPicker","TextArea","minRows","l","HostingAgreementLink","HostingAgreement","monthStamp","expirationMonth","displayMM_YYYY","fromMonthStamp","S3BucketLink","ServerLink","HostingAgreementMonth","status","exceptionsExist","ExceptionsTable","serverDescription","hostingAgreementServerType","useModules","useModule","ModuleDescription","ModuleSelect","ModuleTableFilter","Module","useOrganizations","useOrganization","OrganizationDescription","OrganizationSelect","OrganizationTableFilter","Organization","useThirdPartyLicenses","thirdPartyLicenseSchema","LICENSE_TYPES","domainRegistration","sslCertWildcard","sslCertMulti","sslCertSingle","sslLetsEncrypt","ThirdPartyLicenseForm","ThirdPartyLicense","expirationDate","stamp","active","found","produceOrganizations","sortType","substring","futureCodeDate","lastCodeDate","filterDateRange","DateRangeColumnFilter","futureUpgradeDate","lastUpgradeDate","liveDate","org","mod","SpecialWorkConditions","customerEntities","customersWithConditions","specialWorkConditions","warrantyExpirationDate","LocationSelect","addOther","addInvoice","locations","code","nameA","nameB","contactId","ChangedAlert","currentCustomer","nextCustomer","next","Contracts","Modules","CustomerModules","Organizations","CustomerOrganizations","ThirdPartyLicenses","HostingAgreements","HostingAgreementMonths","projectFolders","folders","folderState","projectPriorities","priorities","priorityState","projectSources","sources","sourceState","projectStatuses","logActivity","includeLogs","cr","maxRecs","transferredFolder","postProcess","nextProject","createCr","projectFields","updateCrPrompt","currentProject","getProjectAction","typeId","compareAndCrPrompt","properties","compareProperties","property","crChanges","noemail","compareTypes","overrideTypeId","updateWatch","isWatching","setFilter","projectReducer","projectState","updateProjectPrompt","shouldPromptToUpdateCr","isClosed","statusId","crSchema","synopsis","parent","context","difficultyId","when","is","overrideCustomerId","defectOccurrenceId","moduleId","notificationTypeId","isWaitingOnCustomer","boolean","isTestingRequired","isReadyForCodeCheckin","estimateMinHours","estimateMaxHours","estimateRate","positive","estimateUserId","targetFirstContactDateTime","actualFirstContactDateTime","targetStartWorkDateTime","actualStartWorkDateTime","targetDeliveryDate","actualDeliveryDate","crSchemaInitial","nextCr","crFields","shouldPromptToUpdateProject","currentCr","open","compareAndProjectPrompt","projectChanges","updateSetAll","setAll","moveOne","createQaComment","updateQaComment","setCrTableSettings","setCurrentCr","crTableSettings","crReducer","qaReviewsState","crState","branches","dbc","branchState","codeTests","codeTestState","reusablePrograms","reusableProgramState","sourceCodes","sourceCodeState","dbcState","branchesState","codeTestsState","sourceCodesState","reusableProgramsState","customerEdiSetups","customerEdiSetup","edi","customerEdiSetupState","ftpUsers","ftpUser","ftpUserState","tradingPartners","tradingPartner","tradingPartnerState","ediState","tradingPartnersState","customerEdiSetupsState","ftpUsersState","estimates","estimate","estimateState","expenseCategories","expenses","categories","categoryState","tripId","expenseTripUsers","sendEmail","trips","expenseTrips","tripState","expenseTripUserState","expenseTypes","expense","getDateSettings","expenseReducer","expenseState","taxProductCategories","taxProductCategory","invoices","taxProductCategoryState","taxProducts","taxProduct","taxProductState","invoiceState","taxProductCategoriesState","taxProductsState","awsAccounts","awsAccount","awsAccountState","reservations","reservation","reservationState","server","serverState","billableOverrideReasons","times","billableOverrideReasonState","useBillableOverrideReasons","useBillableOverrideReason","TimeBillableOverrideReasonSelect","TimeBillableOverrideReasonTableFilter","TimeBillableOverrideReasonDescription","TimeBillableOverrideReason","getCurrentTimer","thunkApi","currentTimer","currentTimerSlice","timer","setCurrentTimer","updateCurrentTimer","newCurrentTimer","getNewest","timers","timerDescription","startTime","updateOrRestart","endTime","currentTimerReducer","holdReasons","holdReasonState","useTimeHoldReasons","useTimeHoldReason","TimeHoldReasonSelect","TimeHoldReasonTableFilter","TimeHoldReasonDescription","TimeHoldReason","DateSelect","defaultFirstMonth","valueFound","startDate","convertedValue","obj","internalTimeProjects","internalProjects","internalProjectState","useInternalProjects","useInternalProject","TimeInternalProjectSelect","TimeInternalProjectTableFilter","TimeInternalProjectDescription","TimeInternalProject","getTimesAPI","getTimeAPI","createTimeAPI","updateTimeAPI","deleteTimeAPI","moveTimeAPI","restartTimerAPI","timeId","datetime","getTimeStatsAPI","endDate","timesAdapter","getTimes","getTime","createTime","currentTimerActions","updateTime","deleteTime","moveTime","restartTimer","getStats","stats","timesSlice","clearTimes","warning","timeReducer","rootReducer","authReducer","settingsReducer","contractsState","codeReviewsState","invoicesState","STORE_RESET","store","configureStore","middleware","getDefaultMiddleware","serializableCheck","ignoredActions","FLUSH","PAUSE","PERSIST","PURGE","REGISTER","warnAfter","immutableCheck","devTools","stateSanitizer","hiddenString","oStr","persistor","persistStore","manualPersist","useLogout","canResetState","authActions","purge","useRedirect","redirect","setRedirect","history","useHistory","ErrorFallback","resetErrorBoundary","stack","setTimeout","CenteredModal","modalTitle","onClose","bodyHeader","centered","Footer","EstimateStatusDescription","EstimateStatusTableFilter","EstimateStatus","useFolders","useFolder","FolderDescription","FolderSelect","FolderTableFilter","Folder","getProjectPriorityClassName","priorityId","usePriorities","usePriority","PriorityDescription","PrioritySelect","PriorityTableFilter","Priority","ProjectAlerts","transferred","lockedBy","CustomerBadges","codeDate","Badge","alias","otherChampions","ch","engineeringResponsibilty","canOwnerChangeGroup","useOwnerGroupFields","autoUpdate","ownerUpdateId","setOwnerUpdateId","groupUpdateId","setGroupUpdateId","handleGroupChange","isOwnerReset","_isOwnerReset","isBoolean","shouldValidate","shouldDirty","handleOwnerChange","defaultOwner","groupDefaultOwner","ownerDefaultGroup","GroupOwnerFields","GroupId","Owner","useStatuses","useStatus","StatusDescription","StatusSelect","StatusTableFilter","Status","ProjectTable","projectCustomers","idInt","toString","entityLookup","contactName","sortInverted","isSAMFollowup","displayTime","isContractProject","ProjectCustomerSelect","setContext","projectPrompt","setProjectPrompt","getCustomer","getCustomerContracts","contractLoading","checkContracts","warningContracts","projectCreateWarning","prompt","onProjectCustomerChange","supportPlan","contractOnly","ProjectCustomerEdit","onRemove","isFirst","isCustomerDisabled","showDetails","setShowDetails","formState","Collapse","in","projectCustomerSchema","integer","path","createError","poNumber","waitingOnCustomer","splitType","splitAmount","otherwise","percents","sum","PROJECT_CUSTOMER_INITIAL","ProjectCustomersEdit","useFieldArray","append","editCustomers","setEditCustomers","projectSchema","sourceId","fixNotes","isSeparateInvoice","estimateMinCost","estimateMaxCost","estimateStatusId","useSources","useSource","SourceDescription","SourceSelect","SourceTableFilter","Source","ProjectEditor","onCancel","isWeb","ProjectForms","register","isSubmitting","dirtyFields","isFieldsDirty","sm","block","FieldInput","onChangeEvent","onChangeOnBlur","fieldValue","setFieldValue","setFocus","canOnChangeOnBlur","formValue","parseValue","EstimateEditorModal","useEstimates","useEstimate","useEstimatesBySource","EstimateModifyModal","ShowTheModal","onUpdate","payloadEstimate","EstimateNewButton","onCreate","showAdd","setShowAdd","useTinykeys","HoursFormatter","suffix","displayType","thousandSeparator","decimalScale","fixedDecimalScale","NumberFormatter","blankZero","CurrencyFormatter","prefix","PercentFormatter","ESTIMATE_ACTIVE_STATUSES","D","V","EstimateLink","setModifyShow","ESTIMATE_TYPES","B","I","EstimateTable","update","onFormsUpdate","estimateMethod","setEstimateMethod","useForms","modifiedProject","_project","control","trigger","showEstimateModifyModalId","setShowEstimateModifyModalId","estimatesLoading","resetEstimates","handleChange","onFormsUpdateLocal","estimateNewInitVals","estimateMin","multiply","estimateMax","ProjectFilters","opts","owners","champions","ProjectLink","useProject","redirecting","useProjectGetOne","getProject","err","setLastUpdate","ProjectNew","defaultGroupId","pickBy","validateOnMount","queryToString","excludeFlag","flag","ownersInclude","statusCount","qaStatuses","crStatusesInclude","projectStatusesInclude","projectEstimateStatusesInclude","championsInclude","groupsInclude","customersInclude","typesInclude","projectPrioritiesInclude","projectSourcesInclude","crDifficultiesInclude","crNotifications","crNotificationsInclude","crModulesInclude","userCount","createUsers","modifyUsers","closedUsers","createUsersInclude","closedUsersInclude","modifyUsersInclude","flags","isMultiCustomer","isAssigned","dates","closedStart","closedEnd","createStart","createEnd","modifyStart","modifyEnd","targetDeliveryStart","targetDeliveryEnd","targetStartWorkStart","targetStartWorkEnd","targetFirstContactStart","targetFirstContactEnd","capitalize","useProjectsByFilter","blocked","projectsToLoadInterval","projectsToLoad","setProjectsToLoad","totalProjects","ProjectSearch","defaultCustomerId","defaultOwnerId","initialSearch","defaultFilter","setSearch","aval","bval","useUserActivity","userActivitySelectors","userActivityActions","useUserActivityOptions","activityOptions","uniqBy","reverse","moreInfo","typeOf","useFindOption","includeCr","includeProject","inputInt","ProjectSelect","getCr","initialErrors","canFetch","refreshActivityButton","canAllowTransferred","setErrors","loadingProject","useValue","handleProject","handleValue","showSearch","setShowSearch","loadingActivity","getActivities","_loading","blurInputOnSelect","backdropClassName","defaultFetch","shouldUseInitial","ProjectShareDetailsForm","notesBefore","handleSubmit","notes","toUsers","isCompose","setIsCompose","rules","checked","copy","shareProjectAPI","useWatches","Watch","useSearchParams","useLocation","URLSearchParams","ProjectStatusId","onShow","statusIdParam","onStatusChange","valueNext","StatusId","ProjectStatusForms","AdditionalForms","handleHide","StatusForm","ActionContextMenu","showDuplicate","setShowDuplicate","location","ListGroup","DuplicateProjectModal","backdrop","useProjects","Project","updatePrompt","getPriorityClassName","Contacts","isLoadingAndInvalid","_contacts","stubObject","tabIndex","isNil","Search","StatusEditor","setStatusId","statusPrompt","setStatusPrompt","onReset","shouldUnregister","ShareButton","onCopy","Filters","Alerts","ProjectPriority","ProjectSource","ProjectStatus","ProjectType","ProjectFolder","CrAlerts","useAppFormsState","_formState","debouncedSetFormState","initial","setInitial","_setState","shouldUpdateInitial","DetailField","forwardedRef","onEditClick","setHover","handleMouse","enter","onMouseEnter","onMouseLeave","FieldTextFormModal","savedValue","initialSavedValue","setSavedValue","formsLoading","nextValue","dirty","dirtyHeader","isChanged","Current","Saved","FieldTextFormSubmitKeys","heightRem","onEdit","fieldRef","overflow","setOverflow","showall","setShowall","editField","setEditField","handleOverflow","offsetHeight","scrollHeight","offsetWidth","scrollWidth","onClickHandler","height","displayText","pStyle","count","CR_DEFECT_OCCURENCES","N","H","C","X","useDefectOccurrence","useDefectOccurrences","crDefectOccurrences","DefectOccurrenceSelect","DefectOccurrence","defect","useDifficulties","useDifficulty","DifficultyDescription","DifficultySelect","DifficultyTableFilter","Difficulty","matchFrom","groupDescription","moduleGroups","m","moduleGroupId","moduleGroupDescription","useNotificationTypes","useNotificationType","NotificationTypeDescription","NotificationTypeSelect","NotificationTypeTableFilter","NotificationType","CrEditor","isTransferred","CrForm","defaultProjectId","ProjectId","CustomerId","projectLoading","showOverrideCustomer","setShowOverrideCustomer","modifiedCr","projectEstimateRate","CrLink","List","idField","link","InfiniteList","endMessage","loaderMessage","dataLength","loader","useCrsByFilter","crsToLoadInterval","crsToLoad","setCrsToLoad","totalCrs","isExpired","useCr","shouldSetCurrent","CrNew","newCr","getCrPriorityClassName","getMoment","dayStart","minutes","dayEnd","projectPriorityId","isPracticeUpgradeCr","nowHour","startWorkDateTime","firstContactDateTime","CR_QA_STATUSES","FA","emojii","PA","PW","WA","useQaStatus","useQaStatuses","crQaStatuses","CrQaStatusSelect","QaStatus","QaStatusSelect","qaStatus","defaultLayout","useCrTableColumns","selectRow","displayDateTime","projectTypeId","qaStatusId","notesArray","jiraNotes","startsWith","CrTable","crChosen","DateInput","isMoment","NumberInput","CheckInput","inline","include","Input","estimateMaxHoursStart","estimateMaxHoursEnd","estimateMinHoursStart","estimateMinHoursEnd","fieldsOptions","CrFilterParameters","setValues","changed","includeField","ExcludeFlag","newFilter","CrSearch","FilterEditor","defaults","fromNow","FilterEditorForm","CrShareDetailsForm","shareCrAPI","CrStatusEditor","shouldOnlyShowEditButton","modalProps","crVals","CrStatusForms","CrWarnings","jiraKey","isInternalCr","code_revisions","canCheckTime","hasMissingFirstContact","hasMissingStartWork","hasMissingCommitsAsCustom","hasCommitsAsSupport","showMove","setShowMove","CrMoveModal","DuplicateCrModal","CrMoveForm","setProjectId","projectCustomer","TableColumnSelect","useTableLayouts","useTableLayout","TableLayoutDescription","TableLayoutEditor","columnsInitial","crTableLayoutSchema","LayoutForm","currentId","showSave","setShowSave","ColumnEditor","SaveForms","TableLayoutSelect","onSearch","formSubmitType","formSubmitDirty","isDirty","crFilterSchema","CrFilterForm","onDelete","crTableColumns","FavoriteToggle","CrFilterForms","beforeSubmit","tableLayout","OverlayTrigger","rootClose","overlay","Popover","Content","favorite","isFavorite","useFilter","FilterDescription","userFilters","isOwner","mapOptions","optionsFlat","flat","crFilterNew","useCrTableSettings","crTableLayoutId","canSet","shallowEqual","loadingFilter","_crTableLayoutId","loadingTableLayout","useFilterAndLayout","canSetCrFilter","canSetCrTableLayout","TargetDatesForm","TargetDateForms","useCrs","Cr","useTableSettings","useTableColumns","initialSchema","onRefreshHandler","searchButton","customerFilter","loadingCr","searchProps","setSearchProps","shouldShowSearch","handleCr","valueLoading","validatedId","setValidatedId","TableSettingsEditor","crFilterInitial","crLayoutInitial","setCrFilter","setCrTableLayout","filterId","setFilterId","setLayoutId","loadedCrFilter","loadedCrTableLayout","defaultCrTableLayout","createCrFilter","updateCrFilter","deleteCrFilter","createCrTableLayout","updateCrTableLayout","handleSearch","adjFilter","Tabs","defaultActiveKey","Tab","eventKey","hasChanges","crTableLayoutNew","TargetDatesTable","showEdit","setShowEdit","hideShowEdit","setDateTime","setDate","fallback","dispDate","displayDate","colSpan","CrStatus","CrFilter","CrNav","defaultFilterId","isFilterValid","counts","totals","prioritiesTotals","typeTotals","delay","fontSize","useCurrentTimer","currentTimerX","TimeBillingNoteLink","textVal","maxWidth","TimeCrEditor","defaultUserId","setCustomerId","setUserId","crLoading","nextCustomerId","valueFloat","renderText","FieldHours","foundOption","option","searchText","timerCalculation","dateTime","timersArray","totalSeconds","start","fromMomentDateStringTime","formatTotalSeconds","h","Math","floor","roundedHours","ceil","hhmmss","hhmm","NoEscapeModal","spinnerAnimation","spinnerVariant","keyboard","Spinner","animation","vaiant","DeletingModal","GetReasonModal","onOk","defaultReason","okText","cancelText","modalBodyHeader","reason","setReason","shortcutOk","unsubscribe","tinykeys","maxLength","autoFocus","OkCancelModal","SavingModal","parseTime","timeInput","RegExp","ampm","TimeTimersTable","splitMode","lastGoodData","setLastGoodData","showTimeExampleModal","setShowTimeExampleModal","showSplitModal","setShowSplitModal","splitIndex","setSplitIndex","splitTime","setSplitTime","validTimesButton","newTimers","newTimer","splitFrontEnd","splitBackEnd","splitError","splitFrontEndObj","splitBackEndObj","futureTimer","overlapping","reverseTimer","zeroSeconds","runningCtr","cancelMe","updateData","rowIndex","old","deleteRow","hideSplitModal","saveSplit","newData","stopRow","timeOnlyStamp","makeRunningRow","changeSelected","columnsArray","normalArray","RangeCellMemo","duration","onEscapeKeyDown","enforceFocus","ValidTimesBody","newTime","borderColor","newTableData","nowStamp","addRow","newValue","displayTimeSeconds","RangeCell","showToolTip","setShowToolTip","newTimeStamp","validTime","validTimeDisplay","bgcolor","relatedTarget","Overlay","striped","textAlign","timeTypes","onsite","travel","TimeTypesSelect","statusIncomplete","statusNull","statusDone","TimeForm","mode","onSaveSuccess","time","openTimers","startTimer","stopTimer","onSplit","showOnInvoice","ds","getDefaultState","useDefaultState","timeIsInvoiced","invoiceNumber","methods","useForm","splitWasPerformed","splitIsVisible","originalIsVisible","defaultOriginalTimers","defaultSplitTimers","splitId","Accordion","Card","bg","Toggle","TimeFormSingle","defaultTimers","originalCustomerId","splitRecord","setNow","momentDatetime","originalUserId","billingNote","lastManualbillingNote","timeType","originalCrId","locationId","internalProjectId","travelDirection","holdReasonId","holdDate","holdDateMoment","internalComments","billableOverrideReasonId","overrideBillableFlag","isCustomerContacted","isWorkPerformed","isNeither","originalIsBillable","borsState","borsRecord","holdReasonsState","holdReasonRecord","timeIsNotInvoiced","isTravelType","isOnsiteType","isCrType","isInternalType","isCustomerType","typeRequiresCr","doesTypeRequireCr","customerValue","crIsValid","isBillingNoteValid","getIsBillingNoteValid","workLogValue","momementDatetime","timerHours","timerHoursFormatted","runningTimer","hasTimers","hoursInvalid","travelInfo","needBacApproval","travelInformation","billableHours","nonBillableHourse","billable","nonBillableHours","getTravelInfo","userSelectProps","dateEditDisabled","billableOverrideYesProps","billableOverrideNoProps","showOnInvoiceYesProps","showOnInvoiceNoProps","travelToProps","travelFromProps","allowBillFlagChange","sectionStatuses","billingNoteInvalid","topSectionStatus","billingNoteInValid","getTopSectionStatus","timeTypeSectionStatus","getTypeSectionStatus","internalProjectSectionStatus","getInternalProjectSectionStatus","crSectionStatus","getCrSectionStatus","crLocationStatus","getLocationSectionStatus","borsSectionStatus","getBorsSectionStatus","holdSectionStatus","getHoldSectionStatus","internalCommentSectionStatus","getInternalCommentsSectionStatus","workLogSectionStatus","isInternal","getWorkLogSectionStatus","noCrCustomerSectionStatus","saveDisabled","internalProject","crLocation","bors","hold","workLog","noCrCustomer","getSectionStatuses","billingNoteDisabled","locationDisabled","isValidatingCrPr","getLocationDisabled","internalCommentHelp","billabilitySection","billMessage","defaultBillability","billMessage2","hasSetAllInfo","customerId2","createTimePayload","travelBacReason","stopTimerTime","overrideReason","modifyReason","useGetAllFormVals","showTimers","setShowTimers","setHasSetAllInfo","workLogHelpModalShow","setWorkLogHelpModalShow","splittingTimers","setSplittingTimers","setSplitOrigHours","splitNewHours","setSplitNewHours","splitNewTimers","setSplitNewTimers","showDeleteModal","setShowDeleteModal","showReasonModal","setShowReasonModal","showReasonTitle","setShowReasonTitle","showReasonAction","setShowReasonAction","setModifyReason","saving","setSaving","savingSplit","setSavingSplit","deleting","setDeleting","askForTravelBac","setAskForTravelBac","bacTravelInformation","setBacTravelInformation","setTravelBacReason","wasMyTimeRecord","isMyTimeRecord","shortcutSave","deleteDisabled","payload1","splitHours","splitTimers","timeActions","ov","nv","splitTimeRecord","propt","propt2","clickSave","temp","changeTravelDirection","changeOverrideBillableFlag","timersTableOnCancel","finalizeSplit","timerstTableOnOk","workLogSection","WorkLogToggle","chosenArray","newContacted","newPerformed","newNeither","clickedHelp","splitButtonShown","cancelSaveOrDeleteOrSplit","WorkLogBody","SplitModal","okButtonText","getListItemVariant","CrDetails","onChangeClick","crNext","setallHold","setallBillability","setallInternalComments","setallHoldDate","setallHoldReasonId","setallBillableOverrideReasonId","setallOverrideBillableFlag","setallInvoiceFlag","setallShowOnInvoice","handleCrChange","oldBors","billFlagDefault","clicked","newArray","performed","contacted","neither","getWorkLogVariant","class","requiresCrType","isBillable","origHours","setOrigHours","setSplitHours","TimeModify","TimeModifyModal","onSave","splitted","setSplitted","TimeNew","defaultUser","defaultDate","defaultCrId","defaultUser2","isToday","rightNow","defaultDate2","TimeNewModal","TIME_LISTING_TYPES","getTimeType","DEFAULT_STATE","useTimeModifyModal","resetState","TimersTable","ModifyModal","modifyModelProps","gap","lastEndTime","lastDate","lastMoment","startMoment","gapEnd","gapStart","gapTimer","dateMoment","timerArray","formattedSeconds","internalProjectName","displayVal","wordWrap","hasRunningTimer","total","useTimer","restart","getRoundedHours","dbcDate","getSeconds","allSameOrEmpty","leafValues","Time","timeSelectors","searchParams","dateParm","useModifyModal","useStats","additionalColumns","todayStamp","timerStatus","urlParams","calcRow","seconds","secondsFormatted","tooltipData","onNewTime","leafRows","billingNoteAggregate","fromCodePoint","internalCommentsAggregate","NewModal","actual","estimateSubtitle","hasEstimate","minCost","maxCost","actualInvoiced","invoicedBlCost","actualTotal","billableCost","actualOpen","actualVariant","invoicedNbCost","nonBillCost","minHours","maxHours","invoicedBlHours","invoicedNbHours","nonBillHours","updateUrl","Modify","BillableOverrideReason","HoldReason","InternalProject","BillingNoteLink","prCrTextSearchUrl","ContactTableComponents","SelectComponents","NavSearch","links","showNewTime","setShowNewTime","hideShowNewTime","showNewProject","setShowNewProject","showContactLookup","setShowContactLookup","showGroupLookup","setShowGroupLookup","getFocus","keyCfg","blur","openInNewTab","routes","_userActivity","_customers","styles","container","menu","maxMenuHeight","NewProjectModal","GroupLookupByProgramModal","getTimerText","NavTimer","showNewModal","setShowNewModal","hideNewModal","modifyShow","TimerText","NavBarCommon","more","useNavLinks","NavLinks","Nav","NavMore","mapLinks","NavDropdown","menuRole","showShortcuts","setShowShortcuts","showColors","setShowColors","Navbar","expand","sticky","Brand","NavBarUser","clickedShortcuts","clickedColors","ShortcutKeys","Colors","useJob","job","jobsSelectors","loadingSelection","finishedGetJobId","setFinishedGetJobId","inProgressJobId","setInProgessJobId","jobsActions","isDone","isWaiting","isInProgress","shouldGetInterval","isErrored","ApprovalsFilters","championDefault","customerDefault","projectTypeDefault","billThruDateDefault","showOpenDefault","showApprovedDefault","projectOwnerDefault","disableAll","setChampion","setCustomer","useCustomerValue","showOpen","setShowOpen","showApproved","setShowApproved","projectType","setProjectType","projectOwner","setProjectOwner","projectTypeOptions","currentProjectTypeValue","approvedStatusOptions","currentShowApproved","projectStatusOptions","currentShowOpen","disableSubmit","zIndex","ApprovalsSkipped","showModifyModal","setShowModifyModal","showTimeId","setShowTimeId","setTimeRecordsChanged","popupTimeModal","activeLines","foundMode","currentSectionPtr","SkippedLine","keyfield","ApprovalsStatement","Line","cspo","rowClassName","dateRange","quantity","price","rowClassName2","rowClassName3","ApprovalsTable","clickedProject","approveAll","showTheDiscountModal","projectAlertClasses","alertClassName","alertOverBudget","alertFutureClosed","alertHeldTime","alertHoldingOlder","alertCrsClosed","alertSeparateInvoice","product","pastTotal","pastBillHours","pastNonbillHours","billTotal","billHours","nonbillHours","futureTotal","futureBillHours","futureNonbillHours","Approvals","approvalsActions","Statement","Skipped","LoadingModal","ApprovalsIndex","jobSubmitted","setJobSubmitted","showProject","setShowProject","showStatementModal","setShowStatementModal","showSavingModal","setShowSavingModal","showRefreshModal","setShowRefreshModal","showLoadingModal","setShowLoadingModal","showDiscountModal","setShowDiscountModal","setDiscountAmount","setDiscountComment","setDiscountProject","newJobId","setNewJobId","activeCustomerId","setActiveCustomerId","activeCustomer","dispatchApprove","theJob","reqCusts","custProjs","custObj","submitSuccess","submitFail","dispatchApproveAll","prjs","saveDiscount","isJob","jobHasData","jobRunning","defaultBillThruDate","endOf","ApprovalFiltersJsx","currentActiveCustomerIndex","customerName","lines","unbilledLines","currentActiveCustomer","parseJobsCustomers","Pane","ApprovalsRouting","useRouteMatch","exact","useToken","setChecked","url","URL","hostname","Auth","useLogin","updatePassword","Login","LoginForm","Logout","ResetPassword","ResetPasswordForm","AuthRouting","REPOSITORIES","useRepository","useRepositories","repositories","RepositorySelect","Repository","repository","CodeReviewOptions","sd","ed","fileOwner","author","authorTeam","allCommitsFromCr","CodeReviewOptionsForm","useWatch","CodeReviewNew","HelixLink","revisionType","revision","revType","helixUrl","useCodeReviews","useCodeReview","useCodeReviewsSearch","STATUSES","defaultInitialSort","RevisionColumnMemo","RevisionColumn","DateColumnMemo","DateColum","SourceGroupColumnMemo","SourceGroupColumn","OwnerEditableColumnMemo","OwnerEditableColumn","CommentsColumnMemo","CommentsColumn","ReviewedCommentsColumnMemo","ReviewedCommentsColumn","CrColumnMemo","CrColumn","ActionsColumnMemo","ActionsColumn","UserLinkMemo","TableMemo","CodeReviewTable","colorMethod","showCommentsModal","setShowCommentsModal","showCommentsRecord","setShowCommentsRecord","showSourceModal","setShowSourceModal","showSourceRecord","setShowSourceRecord","showInfoModal","setShowInfoModal","showInfoApprovals","setShowInfoApprovals","showAssignedToModal","setShowAssignedToModal","showAssignedToRecord","setShowAssignedToRecord","approveReview","codeReview","myApprovalStatus","saveAssignedTo","newUser","assignedTo","saveSourceCodeOwnership","newGroup","newOwner","sourceGroup","sourceOwner","saveCodeReviewAndComment","newComment","myApprovalComment","clearReview","warnReview","failReview","changeComments","showInfo","changeAssignedTo","changeSourceCodeOwnership","crGroup","crType","crStatus","synopsisNotes","revisionDate","revisionComment","authorName","record","lastApprovalStatus","getRowColors","isExtraCommit","InfoModal","CommentsModal","SourceModal","AssignedToModal","getAllApprovals","comments","approver","currentUser","myApprovalDate","otherApprovals","iHaveComments","Fragment","modalComment","setModalComment","filename","modalGroup","setModalGroup","modalOwner","setModalOwner","modalAssignedTo","setModalAssignedTo","CodeReview","CodeReviewOptionsMemo","CodeReviewTableMemo","CodeReviewShow","CodeReviewShowTable","setKey","setColorMethod","includeAllCommitsFromCr","authorUserId","setKeyCommits","onTabSelect","activeKey","CodeReviewsRouting","StampDisplay","createDate","createOperator","modifyOperator","modifyDate","modifyTime","serverSchema","isNewInstall","salesperson","totalContractAmount","blendedRate","blendedTravelRate","ContractForm","canChangeCustomer","totalPrepayExpected","totalPrepayReceived","totalBilled","totalTax","totalTravelExpenses","totalTravelBillableTime","ContractLink","contractProductCategorySchema","ContractProductCategoryForm","ContractProductCategoryLink","useContractProductCategories","useContractProductCategory","ContractProductCategorySelect","ContractProductCategoryTableFilter","ContractProductCategory","contractProductCategoryLink","useExpenseCategories","useExpenseCategory","ExpenseCategorySelect","useTaxProducts","useTaxProduct","useTaxProductCategories","useTaxProductCategory","taxProductCategorySchema","avalaraTaxCodeSaleOfSoftware","avalaraTaxCode","TaxProductCategoryForm","TaxProductCategoryLink","TaxProductCategorySelect","TaxProductCategoryTableFilter","TaxProductCategory","taxProductCategoryLink","taxProductSchema","longDescription","productTaxCategory","TaxProductForm","TaxProductLink","TaxProductSelect","TaxProduct","taxProductLink","contractProductSchema","isPriorityIssue","isApplicbleForCommission","isFixedCostWithAllNonbillTime","isExpenseTripBillable","willCreateProject","willCreateExpenseTrip","projectGroup","sortValue","ContractProductForm","useContractProducts","useContractProduct","ContractProductLink","ContractProductSelect","ContractProductTableFilter","ContractProduct","contractProductLink","contractProductDefaultCrSchema","willPrefixDateOnSynopsis","targetDeliveryDays","module","ContractProductDefaultCrForm","ContractProductDefaultCrLink","ContractProductDefaultCrTable","contractProductDefaultCrLink","useContractProductDefaultCrs","useContractProductDefaultCr","ContractProductDefaultCr","useContracts","useContract","useContractsSearch","Contract","contractLink","openProjects","closedProjects","contractSchema","ContractDetailTable","openCrs","isLicense","isAddOn","budgetedAmount","billedAmount","budgetDifference","toBeBilled","nonBillAmount","travelBillableTime","travelExpense","travelNonBillableTime","srce","NavSidebarItem","ContractNavSidebar","ContractEdit","details","oslProjects","TABLE_COMPONENTS","projectOpenOptions","contractStatusOptions","ContractIndex","activeTab","setActiveTab","customerIdParam","contractProductIdParam","projectsOpenParam","statusParam","searchCtr","setSearchCtr","setContracts","projectsOpenSearch","setProjectsOpenSearch","contractProductIdSearch","setContractProductIdSearch","customerIdSearch","setCustomerIdSearch","statusSearch","setStatusSearch","searchObject","out","projectsOpen","runSearch","searchString","ContractNew","ContractProductCategoryEdit","ContractProductCategoryIndex","toggle","ToggleButton","currentTarget","ContractProductCategoryNew","ContractProductCategoriesPages","ContractProductDefaultCrEdit","ContractProductDefaultCrEditPage","ContractProductDefaultCrIndex","ContractProductDefaultCrNew","ContractProductDefaultCrNewPage","ContractProductDefaultCrsPages","ContractProductDefaultCrEditModal","ContractProductDefaultCrNewModal","ContractProductEdit","modifyModalId","setModifyModalId","defaultCrs","ContractProductIndex","ContractProductNew","ContractProductsPages","GoogleCalendarForm","showMode","calendars","toggleLock","setStartDate","setEndDate","modeValue","setModeValue","lastCalendarInput","setLastCalendarInput","calendarValues","setCalendarValues","currentHeight","setCurrentHeight","colors","offsetDate","offset","newCalendarsValues","cv","some","colorCounters","counter","color","pass","rawCalendarData","cal","GoogleCalendarRaw","showNav","showTabs","showCalendars","showTitle","backgroundColor","currentValue","newCals","toggleCalendar","showPrint","timeZone","googleCalendarTimeZone","finalUrl","src","btoa","frameBorder","scrolling","ContractScheduling","userGroupingsChosen","setUserGroupingsChosen","usersChosen","setUsersChosen","andMode","setAndMode","thisUserGroupCals","keyField","cVal","uc","newUserGroups","ug","changeUserGrouping","val","addUserGrouping","newUsers","changeUser","addUser","ContractsRouting","CrPage","_lead","CrNavSidebar","CrShowNavSidebar","revisionsClassName","timeClassName","actualInvoicedHours","actualInvoicedNbHours","actualBillableHours","actualNonBillableHours","CrEdit","CrLinkWithContextMenu","tooltipDataProp","updateCr","canShowTooltip","Tooltip","CrContextMenu","fetchedCr","CrTableComponents","CrIndex","urlFilterId","layoutColumns","IndexNavSidebar","defaultCrFilterId","CrFilterFavorites","AttachmentsTable","attachments","setAttachments","getAttachment","SUCCESS","ERROR","deleteAttachment","resp","useAttachment","deleteFile","hideProgressBar","progress","successfulCount","updateToast","File","multiple","AttachmentsButton","Component","showAttachments","setshowAttachments","setChanges","INITIAL_COMMENT","Comments","isReversed","setIsReversed","_comments","CreateComment","Comment","isEdit","setIsEdit","EditComment","ShowComment","updateDateTime","updateUser","createString","editString","savedComment","savedCommentInitial","setSavedComment","shouldWarnOnLeave","commentSchema","EditCommentForms","useFormsAutoSubmit","textFocus","setTextFocus","Escape","CommentTextField","aria-label","DetailTableEdit","edit","setEdit","onClickShowEdit","onBlurProp","As","onBlurField","onMenuClose","openMenuOnFocus","CrShowDetails","TableBody","debounceMs","shouldResetOnError","OwnerGroup","CrShowToggles","CrShow","JiraNotes","internalNotes","loadingProp","isDisabledOrClosed","createUserId","UserActivityTable","read","CrShowLog","logs","CrShowProject","useQaReviews","useQaReviewsSearch","useQaReview","QaReviewLink","QaReviewTable","reviewDate","QaReviewAttachmentsButton","QaReview","qaReviewSchema","reviewer","QaReviewEditor","QaReviewForm","QaReviewStatusSelect","QaReviewEditorModal","refreshRecord","QaReviewModifyModal","qaReviewId","payloadQaReview","QaReviewNewButton","CrShowQa","isReviewer","showQaReviewModifyModalId","setShowQaReviewModifyModalId","resetQaReviews","qaReviewsGetMany","qaReviewsLoading","onQaReviewsRefresh","qaReviewNewInitVals","qaOwner","qaComments","CrShowQaCodeReview","CrShowRevisions","acc","recs","rf","authorId","CrShowTimeSetAll","setAllInternalComments","setInternalComments","setHold","setHoldReasonId","setHoldDate","billability","setBillability","invoiceFlag","setInvoiceFlag","setShowOnInvoice","setOverrideBillableFlag","setBillableOverrideReasonId","billableSectionVariant","holdSectionVariant","invoiceFlagYesButtonVariant","invoiceFlagNoButtonVariant","holdYesButtonVariant","holdNoButtonVariant","billabilityYesButtonVariant","billabilityNoButtonVariant","internalCommentsVariant","nextMonth","defaultHoldDate","setAllPayload","CrShowTime","timesLoading","showEstimate","setShowEstimate","selectedRows","setSelectedRows","setIsMultiSelect","actualInvoicedCost","actualInvoicedNbCost","actualBillableCost","actualNonBillableCost","TimeButtons","setMultiSelect","showSetall","setShowSetall","showStartMove","setShowStartMove","showMoveFinish","setShowMoveFinish","moveStarted","setMoveStarted","moveCr","setMoveCr","moveTheRecords","setMoveTheRecords","single","moveMessage","CrStartMoveTime","NewTimeButton","timeProject","onCancelModify","setNewCr","setNewCrId","setCrIsValid","CrsRouting","CustomerNavSidebar","CustomerIndexNavSidebar","CustomerIndex","setModules","setOrganizations","Address","adr","address","adrString","address2","city","zipCode","encodeURIComponent","CustomerShowNavSidebar","CustomerShow","sections","CustomerLocations","locationsInfo","CustomerLicense","thirdPartyApps","CustomerUpgradeDates","upgradeDates","CustomerCodeDates","codeDates","CustomerLogins","logins","CustomerAccounting","isValidUrl","phone2","fax","website","ipAddress","businessTypes","parentCustomerId","serverCustomerId","CustomerLocationType","primary","secondary","invoice","others","pproUsers","singleFunctionUsers","extraSessionsUnlimted","extraSessionsUsers","dbcdxUsers","dbcdx","dbcfsUsers","dbcfs","defaultChecked","defLayout","defSort","CustomerShowCrs","CustomerShowProjects","HostingAgreementNavSidebar","HostingAgreementIndex","HostingAgreementIndexDisplay","HostingAgreementMonthNew","setMonth","getMonth","HostingAgreementMonthShow","canEditHostingAgreements","HostingAgreementMonthReview","canSubmit","dataCharges","charges","exceptions","HostingAgreementShow","agreement","HostingAgreementsPages","jiraState","useJiraProjects","useJiraProject","useJiraProjectsByCustomer","jiraProjectSchema","JiraForm","JiraTypeSelect","JiraProjectLink","JiraProjectSelectByCustomer","JIRA_PROJECT_TYPES","L","U","Q","JiraProjectTable","jiraLink","jiraProject","JiraProject","jiraSchema","sendCount","openDefectCount","closedDefectCount","openCustomCount","closedCustomCount","JiraProjectNavSidebar","JiraProjectIndex","JiraProjectNew","JiraProjectShow","JiraProjectsRouting","ThirdPartyLicenseNavSidebar","ThirdPartyLicenseIndex","ThirdPartyLicenseShow","ThirdPartyLicensesPages","CustomersRouting","useBranches","useBranch","BranchDescription","branchSchema","branchType","BranchForm","BranchTextField","BranchSelect","BranchTableFilter","Branch","codeTestSchema","CodeTestForm","CodeTestTextField","useCodeTests","useCodeTest","CodeTestSelect","CodeTest","eose","gete","imh2","it01","mkvr","ifer","nobl","tede","lmod","qury","rkqy","meme","swtc","FailuresTable","pop","useReusablePrograms","useReusableProgram","reusableProgramSchema","isReviewed","reviewedBy","createdOn","ReusableProgramForm","ReusableProgramTextField","ReusableProgramSelect","ReusableProgramTableFilter","ReusableProgram","useSourceCodes","useSourceCode","sourceCodeSchema","ownerId","SourceCodeForm","SourceCodeTextField","SourceCodeSelect","SourceCodeTableFilter","Dbc","SourceCode","sourceCode","DbcNavSidebar","BranchIndex","BranchShow","branch","BranchesPages","CodeTestIndex","CodeTestShow","codeTest","failures","CodeTestsPages","DbcIndex","ReusableProgramIndex","ReusableProgramShow","reusableProgram","ReusableProgramsPages","SourceCodeIndex","SourceCodeShow","SourceCodesPages","DbcsRouting","useTradingPartners","useTradingPartner","TradingPartnerDescription","tradingPartnerSchema","TradingPartnerForm","TradingPartnerSelect","TradingPartnerTableFilter","TradingPartner","customerEdiSetupSchema","subscriber","company","tradingPartnerId","CustomerEdiSetupForm","useCustomerEdiSetups","useCustomerEdiSetup","CustomerEdiSetupSelect","TradingPartnerLink","CustomerEdiSetupTableFilter","CustomerEdiSetup","ftpUserSchema","tradingPartnerPrefix","overridePostfix","FtpUserForm","username","existingUsename","useFtpUsers","useFtpUser","FtpUserSelect","FtpUser","isLoadin","Edi","CustomerEdiSetupShow","CustomerEdiSetupIndex","CustomerEdiSetupNew","CustomerEdiSetupsPages","EdiIndex","FtpUserDeleteLogTable","FtpUserEdit","emailPwFtpUser","deleteLogs","FtpUserIndex","FtpUserNew","FtpUsersPages","TradingPartnerShow","TradingPartnerIndex","TradingPartnerNew","TradingPartnersPages","EdiRouting","ExpenseCategoryDescription","ExpenseCategoryTableFilter","Category","ConfirmModal","buttons","useConfirmModal","modalOptions","setModalOptions","showConfirm","onHideAlso","expenseSchema","overrideDescription","expenseTypeId","expenseCategoryId","expenseTripId","note","perDiem","useExpenseTrips","useExpenseTripsBySearch","useExpenseTrip","ExpenseTripDescription","ExpenseTripSelect","useExpenseTripUsers","useExpenseTripUser","useExpenseTripUserByFind","ExpenseTripUserDescription","ExpenseTripUserSelect","ExpenseTripUserTableFilter","ExpenseTripUser","useOneByFind","ExpenseTrip","ExpenseUser","useExpenseTypes","useExpenseType","ExpenseTypeDescription","ExpenseTypeSelect","ExpenseTypeTableFilter","ExpenseType","expenseTypeState","DEFAULT_VALUES","paymentType","miles","mileageRate","breakfast","lunch","dinner","ExpenseEditor","ExpenseForms","expenseDate","expenseMiles","expenseMileageRate","typeIsMileage","isMileage","ExpenseCategory","category","categoryIsMileage","isExpenseType","isPerDiem","maxPerDiem","confirmModalProps","ExpenseDate","MileageTable","PerDiemTable","PerDiemCalculator","perDiemAmounts","updateField","days","setDays","setTotals","shouldChangeNotes","setShouldChangeNotes","newValues","slice","ExpenseEditorModal","useExpenses","useExpensesBySearch","useExpense","ExpenseEditModal","updateExpense","deleteExpense","ExpenseAttachmentsModal","getExpense","Expense","editId","setEditId","attachmentId","setAttachmentId","billCustomerAmount","reimburseAmount","NewButton","Trip","ExpenseNavSidebar","ExpenseIndexNavSidebar","ExpenseCustomerEntry","ExpenseCustomerIndex","ExpenseIndex","ExpenseOtherEntry","ExpenseSearch","currentUserId","hasPermissionsError","searchParms","startArr","SearchOptions","userRequired","searchSchema","SearchOptionsForms","ExpenseTripEntry","expenseTripUser","updateExpenseTripUser","loadingExpenseTripUser","isExpensesFinished","FinishCheck","missingTypes","requiredTypes","shouldShowReminder","currentTypes","newExpensesFinished","performUpdate","ExpenseTripIndex","setTripId","ExpensesRouting","JobsTable","useJobs","NotificationsTable","notifyPartySource","useNotifications","notificationsSelectors","notificationsActions","Home","mountOnEnter","CalendarTab","NotificationTab","ActivityTab","JobsTab","myCalendar","notificationsLoading","lastUpdateNotifications","userActivityLoading","lastUpdateUserActivity","logDescription","InvoicesNavSidebar","InvoicesIndex","TaxProductCategoryShow","TaxProductCategoryIndex","TaxProductCategoryNew","TaxProductCategoriesPages","Invoice","TaxProductShow","TaxProductIndex","TaxProductNew","TaxProductsPages","InvoicesRouting","ProjectPage","ProjectNavSidebar","ProjectShowNavSidebar","ProjectEdit","projectModified","ProjectIndex","loadingSettings","projectFilterOwner","projectFilterStatusId","projectFilterChampionId","projectFilterGroupId","filterDefault","ProjectShowDetails","ProjectShow","ProjectCrStatusEditor","canShow","ProjectShowLog","ProjectShowTime","loadingTimes","crEstimateMinHours","crEstimateMaxHours","crEstimateMinCost","crEstimateMaxCost","ProjectsRouting","JobPage","pageProps","JobPageContent","doOptions","Options","defaultOptions","Report","jobString","navSidebarProps","JobNavSidebar","ReportNavSidebar","ReportOptions","jobOptions","ReportOptionsForms","validate","allowed","ReportActivity","FieldYesNoSelect","ReportARYearlyCustomerSummary","ARYearlyCustomerSummaryOptions","startYear","endYear","includeOther","incO","includeMaintenance","incM","includeHardware","incH","includeLicenses","incL","accountManager","useUserValue","ReportCodeChanges","CodeChangesOptions","revisions","hiddenTime","ReportContractorWorkSummary","ContractorWorkOptions","formattedVersion","clickedBillingNote","estimateLayout","noEstimateLayout","oslLayout","ReportCustomAnalysis","CustomAnalysisOptions","noEstimates","osls","nbReasons","summary","Summary","Detail","NbReasons","estimateDollars","billDollars","nonbillDollars","bill","leaf","nonbill","under","underBudget","flatGain","flatLoss","nbFlipGain","dollars","projectCount","projectCountE","projectCountN","modulesExclude","nbReasonsExclude","includeOpen","ReportHostingYearBreakdown","CustomerBilledByProductOptions","MonthlyTotal","ptr","showDollars","showHours","showCrCount","mm","billed","MonthCell","setShowCrCount","setShowHours","setShowDollars","customer_and_proj","year","ReportCustomerTime","CustomerCrsOptions","allSameOrCount","ReportCustomerProducts","CustomerProductsOptions","products","busTypes","Products","BusTypes","ReportCustomerStatement","CustomerStatementOptions","inv","agingBucketPtr","balance","CustomerTimeOptions","ReportDailyBreakdown","filterLessThan","SliderColumnFilter","ProgressBar","week","preFilteredRows","muted","step","ReportEmployeeByMeasuress","minWorkHours","holidayHours","HostingYearBreakdownOptions","RevenueTotal","expectedStart","reservationCosts","planCosts","diskCosts","serverCosts","otherCosts","showCosts","reservationCostSum","planCostSum","diskCostSum","serverCostSum","otherCostSum","revenueCell","setShowCosts","savingsPlanCosts","serverDiskSpaceCosts","serverHostingCosts","ReportIndex","reportJobFunctions","jobsLoading","ReportInternalTime","tbdOnly","ReportModuleSummary","ModuleSummaryOptions","numberOfUsers","avg","ReportNonbillableTime","NonbillableTimeOptions","includeInternalTime","includeInternalCrs","includeDefects","includeQuestions","ReportOutOfOffice","ReportOvertime","OvertimeOptions","usersData","daysData","day","holidayDescription","ReportPrCrTextSearch","PrCrTextSearchOptions","createStartDate","createEndDate","lastStartDate","lastEndDate","searchInTime","searchText1","searchText2","searchText3","searches","noWhitespace","inclue","QaReviewersReport","qaPassed","qaFailed","qaWarned","qaCodeReviewed","qaTestsWritten","qaFrontEndTested","filePassed","fileFailed","fileWarned","ReportTimeOnHold","TimeOnHoldOptions","ReportUnbilledTime","ReportWorkSummary","WorkSummaryOptions","requiredHours","buildTimes","crTypeId","TimebyCR","BillableTime","NonbillableTime","BACNonbillTimeTotal","BACBillableTimeTotal","RegularNonbillTimeTotal","RegularBillableTimeTotal","currentTab","setCurrentTab","TimeTableComponents","setUser","userValue","ReportsRouting","awsAccountSchema","isInternalAccount","accessKey","secretKey","AwsAccountForm","useAwsAccounts","useAwsAccount","AwsAccountLink","AwsAccountSelect","AwsAccount","awsAccountLink","useServers","useServer","useServersByCustomer","useReservations","useReservation","ReservationComparisonTable","comparisons","reservationSchema","unitPrice","instanceCount","ReservationForm","ReservationLink","ReservationSelect","Reservation","reservationLink","ComparisonTable","s3BucketSchema","S3BucketForm","S3Bucket","s3BucketLink","SERVER_TYPES","postfix","getServerAlias","aliasPostfix","shouldGenerateSSHAlias","generatedAlias","severType","locality","engineeringResponsibility","isOldServer","getDefaultDescription","ServerForm","vpnRequired","isRedHatLicenseRequired","newDesc","FormsRow","LocalitySelect","ServerSelectByCustomer","ServerTable","serverLink","Server","hardwareExpirationDate","redHatLicenseExpirationDate","ServerNavSidebar","AwsAccountNavSidebar","AwsAccountEdit","AwsAccountIndex","AwsAccountNew","AwsAccountsPages","AwsInstanceTypeNavSidebar","AwsInstanceTypeEdit","AwsInstanceTypeIndex","AwsInstanceTypeNew","AwsInstanceTypesPages","AwsRegionNavSidebar","AwsRegionEdit","AwsRegionIndex","AwsRegionNew","AwsRegionsPages","AwsZoneNavSidebar","AwsZoneEdit","AwsZoneIndex","AwsZoneNew","AwsZonesPages","ReservationComparison","AllowedPage","setData","refreshCtr","setRefreshCtr","runComparison","getReservationComparisonAPI","ReservationEdit","ReservationIndex","ReservationsPages","S3BucketNavSidebar","S3BucketEdit","S3BucketIndex","S3BucketNew","S3BucketsPages","ServerIndex","statusFilter","setStatusFilter","ServerNew","ServerShow","ServersRouting","getUserPuttyKeyAPI","SettingsNavSidebar","timeZoneOptions","Settings","settingsServer","setSettings","settingsActions","SettingsGeneral","SettingsDefaults","SettingsTime","ServerLogin","timeZoneOption","gmailEmailFromAccount","emailOnOwnerCreate","emailOnNewDirect","minBillableHours","minBillableDollars","getPuttyKey","useGetPuttyKey","EstimateSelectBySource","Estimate","SelectBySource","TableBySource","usePreloader","preloadedEntities","groupPrograms","timeHoldReasons","timeInternalProjects","timeBillableOverrideReasons","loadingArgs","INFO","flush","CacheItem","_name","_entities","SettingsCache","caches","CacheClearables","CacheClearableItem","hook","SettingsWatched","Cards","w","WatchCard","SettingsRouting","TimeNavSidebar","TimeEdit","TimeIndex","paramsUser","paramsDate","showTimersParam","getUrl","parmsDate","setStartTimer","TimeInternal","showYearPicker","TimeStats","end","getDates","_startDate","_endDate","CustomDateRange","TimeStatsTable","canSeeTargets","getMinBillDollars","overtimeHours","overtimeBillableHours","totalDollars","totalBillableDollars","NonBillHours","overtimeNonBillHours","decScale","printValue","TimeUnassigned","TimeRouting","UserNavSidebar","NotificationGroupNavSidebar","NotificationGroupEdit","notificationGroup","NotificationGroupIndex","NotificationGroupNew","NotificationGroupsPages","PseudoNavSidebar","PseudoEdit","PseudoIndex","PseudoNew","PseudosPages","UserGroupingNavSidebar","UserGroupingEdit","UserGroupingIndex","UserGroupingNew","UserGroupingsPages","UserIndex","UserShow","createServerLogin","deleteServerLogin","updateServerLoginKeys","updateServerLoginPassword","generatedPassword","setGeneratedPassword","submitType","UsersRouting","Routing","authError","reload","Routes","PrivateRoute","Preloader","cacheLoading","loadingAuth","canRoute","Reloader","useVersion","refreshAndUpdate","nextVersion","nextBuild","names","delete","shouldFetch","build","prev","nextVersions","prevVersions","compareVersions","UpdateToast","onUpgradeClick","App","Slide","newestOnTop","pauseOnFocusLoss","pauseOnHover","FallbackComponent","VersionChecker","match","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister","upperFirst","Errors","useFormState","getFlatValues","prevValues","flatMap","ErrorIcon","initialDefaultValues","initialContext","schemaOptions","resolver","yupResolver","formProps","schemaInitial","abortEarly","shouldReduceSchema","resolverOptions","pick","yupResolverDefault","Forms","FormsControl","FormsField","FormsController","asLabel","_isInvalid","TextareaAutosize","newV","DEFAULT_LAST","hasSubmit","onSubmitOverride","onError","last","setLast","shouldSubmit","debouncer","func","submit","resetAutoSubmit","afterSubmit","debouncedSubmit","leading","trailing","dataNew","userReducer","userGroupingsState","FORMATS","formatIfValid","momentDate","stringTime","this","stampUtc","utc","fromUrlParams","cfg","authUser","optionsFromRows","SelectColumnFilterWithOptions","filteredValues","showModal","setShowModal","dateFilterStart","setDateFilterStart","dateFilterEnd","setDateFilterEnd","DateRangeForms","rowValue","autoRemove","eventHandler","handleClickOutside","useClickOutsideEvent","ext","_phone","_phoneNums","extension","newPhone","parsePhoneNumberFromString","formatInternational"],"mappings":"8GAAO,SAASA,EAASC,GACvBC,aAAaC,QAAQ,YAAaF,GAE7B,SAASG,IACd,OAAOF,aAAaG,QAAQ,aAJ9B,qE,uDCIEC,YAAkB,CAChBC,OAAQC,IAAYD,OACpBE,QAASD,IAAYC,UAHGC,E,EAAbC,YAAoCC,E,EAAXC,U,gFCQzBC,EATMC,cAASC,MAAM,CAClCC,KAAMC,cAASC,MAAM,eAAeC,WACpCC,aAAcH,cAASC,MAAM,iBAC7BG,MAAOJ,cAASC,MAAM,SACtBI,GAAIL,cAASC,MAAM,MAAMC,WAAWI,IAAI,GACxCC,SAAUC,cAAON,WAAWO,SAAQ,GACpCC,aAAcC,cAAQC,GAAGZ,eAAUM,IAAI,IAAIO,a,OCgC7C,SAASC,EAAT,GAAoC,IAAVC,EAAS,EAATA,MAChBC,EAAeC,cAAfD,WAGR,OADAE,cAEE,eAACC,EAAA,EAAD,WACE,cAACA,EAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,WACE,eAACF,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,cAAC,IAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,cAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,cAAC,IAAWC,MAAZ,CAAkB3B,KAAK,WAAWE,MAAM,kBAG5C,cAACkB,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAD,CAAY7B,KAAK,OAAOE,MAAM,OAAOuB,aAAa,YAGtD,cAACL,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAWC,OAAZ,CACE9B,KAAK,eACLE,MAAM,gBACN6B,GAAIC,IAAMF,aAIhB,cAACV,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAWC,OAAZ,CACE9B,KAAK,QACLE,MAAM,QACN6B,GAAIE,UAIV,cAACb,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAWC,OAAZ,CACE9B,KAAK,eACLE,MAAM,mCACN6B,GAAIG,IAAKJ,OACTK,SAAS,aAMnB,cAACC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uB,YC7FS,SAASsB,EAAT,GAA2C,IAAjBjC,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SAC3C,OACE,cAAC,OAAD,CAAMd,UAAU,aAAae,GAAI,CAAEC,SAAS,kBAAD,OAAoBpC,IAA/D,SACGkC,GAAYlC,I,oCCAnB,IAAMqC,EAAS,CAEbC,IAAKC,IAAMD,IAEXpD,QAASqD,IAAMrD,QACfsD,UAAWD,IAAMvD,OAAOwD,UAExBC,OAAQpD,EACRqD,OAAQvD,EAERwD,MCLa,YAMX,IALFC,EAKC,EALDA,QAKC,IAJDC,kBAIC,cAHDC,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,OAAQ,gBAAiB,SAExC,EADEC,EACF,8DACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,IACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBC,EAA3B,EAAUC,IAAOC,SAAjB,OACJf,EACE,cAAC,EAAD,CAAY7C,GAAE,OAAE0D,QAAF,IAAEA,OAAF,EAAEA,EAAQ1D,GAAxB,SAA6ByD,IAAK,OAAIC,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ1D,MAE9CyD,IAGN,CACEzD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQC,IACRC,OAAQ,QAEV,CACEvD,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQQ,IACRN,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,cAAC,OAAD,CAAMrC,UAAU,aAAae,GAAI,CAAEC,SAAS,UAAD,OAAYqB,IAAvD,SACGA,MAIP,CACEzD,GAAI,gBACJmD,OAAQ,QACRC,SAAU,eACVC,OAAQS,IACRP,OAAQ,aAGZ,CAACV,IAEH,OACE,cAACF,EAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,UACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMpB,GACFI,KDpDRiB,KAAMC,EACNC,OFJa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,cAAC,IAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQC,GAClBH,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,cAACjE,EAAD,CAAgBC,MAAOA,QEbd2B,O,oNElBbtD,YAAkB,CAChBC,OAAQ2F,IAAa3F,OACrBE,QAASyF,IAAazF,UAHE0F,E,EAAbxF,YCGAyF,EAJC,CACdpC,O,EDAuCnD,UCCvCoD,OAAQkC,G,OCMJE,EAAuBC,IAAMC,YAAW,WAAeC,GAAS,IAArBC,EAAoB,EAApBA,SAAoB,EACrCC,mBAAS,IAD4B,mBAC5DC,EAD4D,KACnDC,EADmD,KAE3DC,EAAaT,EAAQnC,SAArB4C,SAEFC,EAAmB,SAACC,GACA,OAApBA,EAAQC,SAAwC,KAApBD,EAAQC,SAClCC,IAAEC,WAAWT,IAAWA,EAASM,EAAQC,UAG3CG,EAAuBL,EACzB,CAAEA,iBAAkBA,GACpB,GAEEM,EAAO,IAAIC,IAAKR,EAAU,CAC9BS,KAAM,CAAC,cAAe,sBACtBC,mBAAoB,IAGhB/C,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,UACRC,SAAU,cACVC,OAAQC,IACRC,OAAQ,QAEV,CACEJ,OAAQ,cACRC,SAAU,qBACVC,OAAQC,IACRC,OAAQ,QAEV,CACEJ,OAAQ,QACRC,SAAU,UAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,cAACwC,EAAA,EAAD,CAAkBjG,GAAIyD,SAG/C,IAGF,OACE,cAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,WACE,cAACD,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,eAACF,EAAA,EAAKY,MAAN,WACE,eAACZ,EAAA,EAAKoF,KAAN,CAAW9E,UAAU,kBAArB,mDACwC,2CAExC,cAAC+E,EAAD,CACEC,QAAS,SAACC,GAAD,OAAOhB,EAAWQ,EAAKS,OAAOD,GAAGE,KAAI,SAACC,GAAD,OAAOA,EAAEC,UACvDxB,IAAKA,IAENS,IAAEC,WAAWT,GACZ,eAACpE,EAAA,EAAKoF,KAAN,CAAW9E,UAAU,aAArB,UACE,+CADF,gCAGE,YAIV,cAACL,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,cAAC2B,EAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,WACNqD,QAASA,EACTe,KAAMoB,GACFQ,gBASZO,EAAcpB,IAAMC,YAAW,WAAcC,GAAS,IAApBmB,EAAmB,EAAnBA,QAAmB,EAC/BjB,mBAAS,IADsB,mBAClDuB,EADkD,KAC3CC,EAD2C,KAOzD,OACE,cAAC7F,EAAA,EAAK8F,QAAN,CACE3B,IAAKA,EACLxB,MAAOiD,EACPG,SAAU,SAACC,GAAD,OAAOH,EAASG,EAAEC,OAAOtD,QACnCuD,UAVgB,SAACC,GACG,KAAlBA,EAAMC,SACRd,EAAQM,SAaC5B,I,wCCjGFqC,EAAiB,SAAC1B,GAAD,MAChB,WAAZA,GACY,WAAZA,GACY,UAAZA,GACY,WAAZA,GAEI/D,EAAQ,CAEZY,IAAK8E,IAAW9E,IAEhBpD,QAASkI,IAAWlI,QACpBsD,UAAW4E,IAAWpI,OAAOwD,UAE7BC,OAAQ4E,IACR3E,OAAQ4E,IAERC,UAAWJ,EAEX3F,OAAQgG,IACRC,YAAaxB,IACbyB,MCvBK,YAA6C,IAAvBC,EAAsB,EAAtBA,SAAUC,EAAY,EAAZA,SAAY,EACzBzC,oBAAS,GADgB,mBAC1C0C,EAD0C,KACpCC,EADoC,KAG3C5C,EAAW6C,uBACf,SAAC/H,GACC8H,GAAQ,GACRH,EAAS3H,KAEX,CAAC2H,IAGH,OACE,uBACEK,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,UAIE,uBAAMC,MAAM,eAAelG,QAAS,kBAAO4F,GAAYE,GAAQ,IAA/D,mBACQ,cAAC,IAAD,CAAsB1G,UAAU,WAExC,eAAC+G,EAAA,EAAD,CAAOC,KAAK,KAAKP,KAAMA,EAAMQ,OAAQ,kBAAMP,GAAQ,IAAnD,UACE,cAACK,EAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,cAACH,EAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,uCAKF,cAACmI,EAAA,EAAMK,KAAP,UACE,cAAC,EAAD,CAAsBtD,SAAUA,aDHxCuD,YAAaC,IACbC,gBAAiB7D,EAEjBD,QAASA,GAEInD,O,uJEzBTkH,EAAgB,CACpBC,IAAK,MACLC,QAAS,EACTC,YACAC,UAAW,CAAC,UAGDC,EAAYC,YACvB,gBADuC,uCAEvC,WAAOxD,EAAP,oBAAAyD,EAAA,6DAAYC,EAAZ,EAAYA,SAAZ,SACsBC,YAAeT,GADrC,OACQrG,EADR,OAGE6G,EAAS,CACPE,KAAMC,IACNV,IAAKD,EAAcC,IACnBW,QAASjH,IANb,2CAFuC,yDAanCkH,EAAWC,YAAY,CAC3BhK,KAAM,MACNiK,aAAa,2BACRC,KADO,IAEVC,UAAU,EACVC,eAAgB,CAAEA,gBAAgB,EAAM/D,KAAM,IAC9CgE,MAAO,GACPC,cAAe,OAEjBC,SAAU,CACRC,YADQ,SACI3H,EAAO4H,GACjBC,QAAQC,IAAR,cAAmBF,EAAOX,QAAU,SAAW,aAC/CjH,EAAMsH,SAAWM,EAAOX,SAE1Bc,kBALQ,SAKU/H,EAAO4H,GAAS,IAAD,EACRA,EAAOX,QAAtBX,EADuB,EACvBA,IADuB,EAClBpF,aAIJlB,EAAMuH,eAAe/D,KAAK8C,GAFjCtG,EAAMuH,eAAe/D,KAAK8C,IAAO,EAInC,IAAMiB,EAAiBS,kBAAQhI,EAAMuH,eAAe/D,MAChDxD,EAAMuH,eAAeA,iBAAmBA,IAC1CM,QAAQC,IAAR,gCAAqCP,IACrCvH,EAAMuH,eAAeA,eAAiBA,IAG1CU,SAlBQ,SAkBCjI,EAAO4H,GAAS,IAAD,EACCA,EAAOX,QAAtBX,EADc,EACdA,IAAKpF,EADS,EACTA,MACT8G,kBAAQ9G,UACHlB,EAAMwH,MAAMlB,GAEnBtG,EAAMwH,MAAMlB,GAAOpF,IAIzBgH,cAAe,SAACC,GAAD,OACbC,YACED,EACAzB,GACA,SAAC1G,GAAD,OAAYA,EAAMyH,eAAgB,IAAIY,MAAOC,oBAI7CC,EAAaC,YAAenC,EAAea,EAASuB,SAE3CF,MACR,IAAMG,EAAU,2BAAQxB,EAASvK,SAAjB,IAA0B+J,e,iCC7EjD,wF,EAMIlK,YAAkB,CACpBC,OAAQkM,IAAoBlM,OAC5BE,QAASgM,IAAoBhM,UAJhBiM,E,EAAb/L,YACWgM,E,EAAX9L,W,iCCLF,wF,EAIEP,YAAkB,CAChBC,OAAQoI,IAAWpI,OACnBE,QAASkI,IAAWlI,UAHIoI,E,EAAblI,YAAmCiI,E,EAAX/H,W,wGCE1B+L,G,OACTC,yCAKEC,EAAYC,IAAMC,OAAO,CAC7BC,QAASL,EACTM,QAAS,KACTC,QAAS,CACP,eAAgB,sBAIdC,EAAW,YAEXC,EAAU,CACdC,MAAO,MAGM,KACbC,KADa,SACRhI,GAAoD,IAAD,yDAAJ,GAAI,IAA3CiI,qBAA2C,aAApBC,cAAoB,MAAX,GAAW,EAChDC,EAAU,aAAcnI,EAAd,2BAA0BA,GAA1B,IAAgCoI,SAAU,KAAOpI,EACjEoG,QAAQC,IAAI8B,GACZ,IAAME,EAAUrI,EAAKqI,QACrB,OAAIJ,EACKK,QAAQC,OAAR,qCAA6CF,EAA7C,MAEFd,EACJS,KAAKH,EADD,uCACgBC,GAAY9H,GAD5B,IACkCwI,UAAW3N,gBAAcqN,GAC/DO,MAAK,SAACC,GAEL,OADAtC,QAAQC,IAAIqC,EAAS1I,MAEQ,SAA3B0I,EAAS1I,KAAK0I,UACa,UAA3BA,EAAS1I,KAAK0I,SAEPJ,QAAQC,OAAOG,EAAS1I,KAAK2I,iBACA,YAA3BD,EAAS1I,KAAK0I,SAChBJ,QAAQC,OAAR,6BAAqCF,EAArC,MACEK,EAAS1I,KAAK4I,cAAgBP,EAChCC,QAAQC,OAAO,6BAEjBG,EAAS1I,QAEjB6I,OAAM,SAACC,GAAW,IAAD,IAChB1C,QAAQ0C,MAAMA,EAAOX,GACrB,IAAMY,EAAO,OAAGD,QAAH,IAAGA,GAAH,UAAGA,EAAOJ,gBAAV,iBAAG,EAAiB1I,YAApB,aAAG,EAAuB2I,gBACvC,OAAOL,QAAQC,OAAOQ,EAAU,IAAIC,MAAMD,GAAWD,S,iCCpD7D,wF,EAG6D/N,YAAkB,CAC7EC,OAAQiO,IAAUjO,OAClBE,QAAS+N,IAAU/N,UAFOgO,E,EAAb9N,YAAkC+N,E,EAAX7N,W,iCCHtC,wF,EAG6DP,YAAkB,CAC7EC,OAAQoO,IAAUpO,OAClBE,QAASkO,IAAUlO,UAFOmO,E,EAAbjO,YAAkCkO,E,EAAXhO,W,gFCKvBiO,EALSC,YAAkB,CACxC9N,KAAM,OACNN,YAAaiO,MCCTI,EAAO,CAEXnL,IAAKC,IAAMD,IAEXpD,QAASqD,IAAMrD,QACfsD,UAAWD,IAAMvD,OAAOwD,UAExBC,OAAQ6K,IACR5K,OAAQ2K,IAER7L,OAAQkM,IACRjG,YAAakG,IACblF,YAAa8E,GAEAE,O,iCCpBf,mBAOMnL,EAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,+BAAgCI,MAAK,SAACqB,GACjE,MAAO,CAAE9J,KAAM8J,EAAEC,aAAaC,8BAK9BhP,EAASiP,YAAa,CAC1BvO,KAAM,iBACN4J,KAAM,4BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAASC,oBAEhClP,EAAUmP,YAAoB,CAAErP,SAAQsD,QAOxC4I,EAAsB,CAC1B5I,MACAtD,SACAE,UACA8L,QAVcsD,YAAoB,CAClCtP,SACAE,UACAqP,SAAS,KAUIrD,O,iCClCf,mBAOM5I,EAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,oBAAqBI,MAAK,SAACqB,GACtD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAaS,mBAK9BxP,EAASiP,YAAa,CAC1BvO,KAAM,OACN4J,KAAM,iBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAASM,SAEhCvP,EAAUmP,YAAoB,CAAErP,SAAQsD,QAOxC2K,EAAY,CAChB3K,MACAtD,SACAE,UACA8L,QAVcsD,YAAoB,CAClCtP,SACAE,UACAqP,SAAS,KAUItB,O,iCClCf,4BAQM3K,EAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,cAAeI,MAAK,SAACqB,GAChD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAaW,aAK9B1P,EAASiP,YAAa,CAC1BvO,KAAM,SACN4J,KAAM,eACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAMD,UAE7BxP,EAAUmP,YAAoB,CAAErP,SAAQsD,QAYxC8E,EAAa,CACjB9E,MACAtD,SACAE,UACA8L,QAfcsD,YAAoB,CAClCtP,SACAE,UACAqP,SAAS,EACT9D,cAAe,SAACC,GACdA,EAAQkE,gBAAe,SAACrM,EAAO4H,GAC7B5H,EAAM+C,SAAWX,IAAaqG,QAAQzI,EAAM+C,SAAU6E,UAY7C/C,O,iCCxCf,mBAOM9E,EAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,aAAcI,MAAK,SAACqB,GAC/C,MAAO,CAAE9J,KAAM8J,EAAEC,aAAac,YAK9B7P,EAASiP,YAAa,CAC1BvO,KAAM,OACN4J,KAAM,cACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAME,SAE7B3P,EAAUmP,YAAoB,CAAErP,SAAQsD,QAOxC8K,EAAY,CAChB9K,MACAtD,SACAE,UACA8L,QAVcsD,YAAoB,CAClCtP,SACAE,UACAqP,SAAS,KAUInB,O,2DCUR,IAAM9K,EAAM,CACjBsL,QA3CF,WAA6C,IAAD,yDAAJ,GAAfkB,EAAmB,EAAnBA,WACjBC,EAAI,eAASD,EAAa,CAAEA,WAAYA,GAAe,MACvDtF,EAAO,aACX6C,QAAS,kBACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaiB,YAC5BC,WAAYF,OAoCdG,OAhCF,YAA+B,IACvB1F,EAAU,CACd6C,QAAS,gBACTrM,GAH0B,EAANA,IAKtB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAAyBC,GACvB,IAAM5F,EAAO,aACX6C,QAAS,oBACN+C,GAEL,OAAOvB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAAyBD,GACvB,IAAM5F,EAAO,aACX6C,QAAS,oBACN+C,GAEL,OAAOvB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBClCP/O,EAASiP,YAAa,CAC1BvO,KAAM,SACN4J,KAAM,gBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAMjL,UAE7BxE,EAAUmP,YAAoB,CAAErP,SAAQsD,QAOxCrD,EAAc,CAClBqD,MACApD,UACA8L,QATcsD,YAAoB,CAClCtP,SACAE,UACAqP,SAAS,IAOTvP,UAGaC,O,qNCrBF2K,EAAwB,CACnC0F,SAAU,CACRC,IAAK,GACLC,SAAS,IAIN,SAASC,EAAiBlN,EAAOmN,GAAY,IAC1CJ,EAAa/M,EAAb+M,SACR,SAAIA,EAASE,WAAWE,KAAaJ,EAASC,MAIzC,SAASI,EAA0BC,EAASC,GACjD,IAAMC,EAAa,2BACdD,GADc,IAEjB7P,QAAI+P,EACJC,oBAAgBD,EAChBE,oBAAgBF,IAEZG,EAAa,2BACdN,GADc,IAEjB5P,QAAI+P,EACJC,oBAAgBD,EAChBE,oBAAgBF,IAElB,OAAOI,YAAWD,EAAeJ,GAG5B,SAASnF,EACdD,EACA0F,GAGC,IAFDC,EAEA,uDAFa,aAEb,yDAD6C,GAApCC,EACT,EADE/N,MACF,IADqBgO,gBACrB,MADgC,aAChC,EACA,SAASC,EAASjO,GAKhB,OAHI+N,EACe/N,EAAM+N,GACD/N,EAI1BmI,EAAQ+F,QAAQL,EAAMM,SAAS,SAACnO,EAAO4H,GACrC,IAAIwG,EAASH,EAASjO,GAD0B,EAEhB4H,EAAOyG,KAA/BlB,EAFwC,EAExCA,UAFwC,IAE7BmB,WAF6B,MAEvB,GAFuB,EAI1CC,EAAOC,KAAKC,UAAUH,GACvBnL,IAAEuL,SAASN,EAAOrB,SAASC,IAAKuB,KACnCH,EAAOrB,SAASC,IAAIG,GAAaoB,EACjCH,EAAOrB,SAASE,SAAU,MAG9B9E,EAAQ+F,QAAQL,EAAMc,WAAW,SAAC3O,EAAO4H,GACvC,IAAIwG,EAASH,EAASjO,GACdmN,EAAcvF,EAAOyG,KAArBlB,UAEJD,EAAiBkB,EAAQjB,YACpBiB,EAAOrB,SAASC,IAAIG,GACvBhK,IAAE6E,QAAQoG,EAAOrB,SAASC,OAAMoB,EAAOrB,SAASE,SAAU,GAC9Da,EAAWM,EAAQxG,OAGvBO,EAAQ+F,QAAQL,EAAMG,UAAU,SAAChO,EAAO4H,GACtC,IAAIwG,EAASH,EAASjO,GACdmN,EAAcvF,EAAOyG,KAArBlB,UACJD,EAAiBkB,EAAQjB,YACpBiB,EAAOrB,SAASC,IAAIG,GACvBhK,IAAE6E,QAAQoG,EAAOrB,SAASC,OAAMoB,EAAOrB,SAASE,SAAU,GAC9De,EAASI,EAAQxG,GAEjBgH,IAAMrE,MAAM3C,EAAO2C,MAAMC,e,mJC3DxB,SAASkB,EAAT,GAKH,IAJFvO,EAIC,EAJDA,KACA4J,EAGC,EAHDA,KACU8H,EAET,EAFDlD,SAEC,IADDmD,qBACC,MADe,CAAEC,SAAU,SAACxK,GAAD,OAAOA,EAAE9G,KACpC,EACD,IAAKuR,mBAAS7R,GACZ,MAAM,IAAIsN,MAAJ,oBAER,IAAKuE,mBAASjI,GACZ,MAAM,IAAI0D,MAAJ,oBAER,IAAKrH,qBAAWyL,GACd,MAAM,IAAIpE,MAAJ,wBAGR,IAAMwE,EAAUC,YAAoBJ,GAE9B7O,EAAYgP,EAAQE,aAAaN,GAMjCO,EAAiBC,YACrBpP,EAAUqP,gBACV,SAACtP,EAAOwM,GACN,IAAMzI,EAAS0K,IAAUjC,GACzB,OAAOqC,EAAe7O,GAAOuP,YAAYxL,IATX,CAChCiJ,IAAK,GACLwC,WAAY,KACZC,WAAY,SAQZ,SAACC,EAAD,GAAgD,IAAnC1C,EAAkC,EAAlCA,IAAKwC,EAA6B,EAA7BA,WAAYC,EAAiB,EAAjBA,WAC5B,MAAO,CAACtM,IAAEwM,GAAGD,EAAU1C,IAAQ,GAAIwC,EAAYC,MAG7CG,EAAcP,aAClB,SAACrP,EAAOgN,GACN,OAAO7J,IAAEwM,GAAG1P,EAAUqP,eAAetP,GAAQgN,IAAQ,MAEvD,SAACA,GAAD,OAASA,KAGX,MAAO,CACL7P,KAAM0S,oBAAUC,IAAU3S,EAAM,IAChC4J,KAAMA,EACNkI,UACAtD,SAAUkD,EACV5O,UAAU,2BAAMA,GAAP,IAAkBmP,iBAAgBQ,iBAIhClE,O,8HCpDR,SAASI,EAAT,GAA+C,IAAhBrP,EAAe,EAAfA,OAAQsD,EAAO,EAAPA,IACpCgH,EAAmCtK,EAAnCsK,KAAgB8H,EAAmBpS,EAA7BkP,SACd,IAAKvI,qBAAWyL,KAAoBG,mBAASjI,GAC3C,MAAM,IAAI0D,MAAJ,sBAER,IAAKrH,qBAAWrD,EAAIsL,SAClB,MAAM,IAAIZ,MAAJ,2BAGR,IAiCM9N,EAAU,CACd0O,QAlCc0E,EACdtT,EACA,WACAsD,EAAIsL,QACJ2E,GA+BArD,OA7BaoD,EACbtT,EACA,UACAsD,EAAI4M,OACJqD,GA0BApD,UAxBgBmD,EAChBtT,EACA,UACAsD,EAAI6M,UACJoD,GAqBAlD,UAnBgBiD,EAChBtT,EACA,UACAsD,EAAI+M,UACJkD,GAgBAC,UAdgBF,EAChBtT,EACA,UACAsD,EAAIkQ,UACJD,GAWAE,MARYC,YAAapJ,EAAO,WAWlC,SAASiJ,IACP,OAAOrT,EAGT,OAAOA,EAKF,SAASoT,EACdtT,EACAsK,EACAqJ,GAEC,IADDJ,EACA,uDADa,aAEb,GAAK5M,qBAAWgN,GAAhB,CADA,IAGcC,EAAyC5T,EAA/CsK,KAA4B8H,EAAmBpS,EAA7BkP,SAE1B,OAAOhF,YAAiB0J,EAAatJ,EAAd,uCAAoB,WAAOyF,EAAM8D,GAAb,iBAAA1J,EAAA,yDACjC+E,EAAwB2E,EAAxB3E,SAAUwB,EAAcmD,EAAdnD,UACbD,YAAiB2B,EAAelD,KAAawB,GAFT,8CAGhCK,GAHgC,uBAI5B4C,EAAe5D,EAAM8D,EAAP,aACzB3T,QAASqT,KACNvT,IANoC,mFAApB,0DAZVqP,O,+JCzCR,SAASC,EAAT,GAYH,IAAD,IAXDtP,OAAUU,EAWT,EAXSA,KAAM4J,EAWf,EAXeA,KAAMkI,EAWrB,EAXqBA,QAAmBJ,EAWxC,EAX8BlD,SAC/BhP,EAUC,EAVDA,QAUC,IATDyK,oBASC,MATc,GASd,MARD4E,eAQC,aAPD3F,qBAOC,MAPe,CACdC,IAAKS,EACLR,QAAS,EACTC,YACAC,UAAW,CAAC,MAAO,WAAY,aAAc,eAG9C,MADDyB,qBACC,MADe,aACf,EACD,IAAK9E,qBAAWyL,IAAmB0B,sBAAYtB,KAAaD,mBAASjI,GACnE,MAAM,IAAI0D,MAAJ,sBAER,GAAI8F,sBAAY5T,EAAQ0O,SACtB,MAAM,IAAIZ,MAAJ,8BAER,GAAI8F,sBAAY5T,EAAQuT,OACtB,MAAM,IAAIzF,MAAJ,4BAGR,IAeMhC,EAAU+H,YAddvB,EAAQwB,gBAAR,2BACKpJ,KADL,IAEEmI,WAAY,KACZC,WAAY,KACZF,YAAa,IACVnI,KAS0C,SAACe,GAChDA,EAAQ+F,QAAQvR,EAAQuT,OAAO,SAAClQ,EAAO4H,GACrC,GAAIA,EAAOX,QAAS,CAClB,IAAMlD,EAAS0K,IAAU7G,EAAOX,SAChCjH,EAAMuP,YAAYxL,GAVU,CAChCiJ,IAAK,GACLwC,WAAY,KACZC,WAAY,WASRR,EAAQyB,UAAU1Q,GAClBA,EAAM+M,SAAW1F,IAAsB0F,SACvC/M,EAAMwP,WAAa,KACnBxP,EAAMyP,WAAa,KACnBzP,EAAMuP,YAAc,MAIxBnH,YAAuBD,EAASxL,EAAQ0O,SAAS,SAACrL,EAAO4H,GACvD,GAAI2I,sBAAW,OAAC3I,QAAD,IAACA,OAAD,EAACA,EAAQX,SACtB,MAAM,IAAIwD,MAAJ,UAAatN,EAAb,+BAER,GAAwB,QAAd,OAANyK,QAAM,IAANA,OAAA,EAAAA,EAAQX,SAAZ,CAJkE,MAU9DW,EAAOX,QAJTxF,EANgE,EAMhEA,KANgE,IAOhEgO,kBAPgE,MAOnD,GAPmD,EAQhE/C,EARgE,EAQhEA,WARgE,IAShEiE,YAEF,SAXkE,WAW/CC,mBAASnP,KAC1BwN,EAAQ4B,WAAW7Q,EAAOyB,GAC1BzB,EAAMwP,YAAa,IAAInH,MAAOC,cAC9BtI,EAAMyP,WAAaA,GACdc,sBAAY7D,IAAa,CAC5B,IAAM3I,EAAS0K,IAAU/B,GACZoE,GACX9Q,EAAMuP,YAAYxL,IAtCM,CAChCiJ,IAAK,GACLwC,WAAY,KACZC,WAAY,OAkCEzC,IAERhN,EAAMuP,YAAYxL,GAAU,CAC1BiJ,IAAK+D,eAAKD,EAAUE,OAAOvP,EAAKuC,IAAIiL,EAAQF,YAC5CS,YAAY,IAAInH,MAAOC,cACvBmH,WAAYA,QAKhB9S,EAAQgQ,QACVvE,YAAuBD,EAASxL,EAAQgQ,QAAQ,SAAC3M,EAAO4H,GACtD,GAAI2I,sBAAW,OAAC3I,QAAD,IAACA,OAAD,EAACA,EAAQX,SACtB,MAAM,IAAIwD,MAAJ,UAAatN,EAAb,2BAER,GAAwB,QAAd,OAANyK,QAAM,IAANA,OAAA,EAAAA,EAAQX,SAAZ,CAJiE,MAK5BW,EAAOX,QAApCxF,EALyD,EAKzDA,KALyD,IAKnDkP,kBALmD,WAM9CC,mBAASnP,IAAOwN,EAAQgC,UAAUjR,EAAOyB,OAG5D9E,EAAQiQ,WACVxE,YAAuBD,EAASxL,EAAQiQ,WAAW,SAAC5M,EAAO4H,GACzD,GAAI2I,sBAAW,OAAC3I,QAAD,IAACA,OAAD,EAACA,EAAQX,SACtB,MAAM,IAAIwD,MAAJ,UAAatN,EAAb,8BAER,GAAwB,QAAd,OAANyK,QAAM,IAANA,OAAA,EAAAA,EAAQX,SAAZ,CAJoE,MAK/BW,EAAOX,QAApCxF,EAL4D,EAK5DA,KAL4D,IAKtDkP,kBALsD,WAMjDC,mBAASnP,IAAOwN,EAAQgC,UAAUjR,EAAOyB,OAG5D9E,EAAQmQ,WACV1E,YAAuBD,EAASxL,EAAQmQ,WAAW,SAAC9M,EAAO4H,GACzD,GAAI2I,sBAAW,OAAC3I,QAAD,IAACA,OAAD,EAACA,EAAQX,SACtB,MAAM,IAAIwD,MAAJ,UAAatN,EAAb,8BAER,GAAwB,QAAd,OAANyK,QAAM,IAANA,OAAA,EAAAA,EAAQX,SAAZ,CAJoE,MAK/BW,EAAOX,QAApCxF,EAL4D,EAK5DA,KAL4D,IAKtDkP,kBALsD,WAMjDC,mBAASnP,IAAOwN,EAAQgC,UAAUjR,EAAOyB,OAG5D9E,EAAQsT,WACV7H,YAAuBD,EAASxL,EAAQsT,WAAW,SAACjQ,EAAO4H,GACzD,GAAI2I,sBAAW,OAAC3I,QAAD,IAACA,OAAD,EAACA,EAAQX,SACtB,MAAM,IAAIwD,MAAJ,UAAatN,EAAb,8BAER,GAAwB,QAAd,OAANyK,QAAM,IAANA,OAAA,EAAAA,EAAQX,SAAZ,CAJoE,MAK/BW,EAAOX,QAApCxF,EAL4D,EAK5DA,KAL4D,IAKtDkP,YACd,SANoE,WAMjDlP,EAAM,CACvBwN,EAAQiC,UAAUlR,EAAOyB,GACzB,IAAM8N,EAAcjC,YAAQtN,EAAMuP,aAClC4B,OAAOC,QAAQ7B,GAAa8B,SAAQ,YAAmB,IAAD,mBAAhB/K,EAAgB,KAAXpF,EAAW,KAChDA,EAAM8L,IAAI0B,SAASjN,KACrBzB,EAAMuP,YAAYjJ,GAAK0G,IAAMsE,iBAAOpQ,EAAM8L,IAAKvL,YAKzDyG,EAAcC,EAAS8G,MAGzB,OAAOjD,EAAUxD,YAAenC,EAAeoC,GAAWA,EAG7CsD,O,iCCpKf,iDAMM1M,EAAO,CAEXU,IAAK2K,IAAU3K,IAEfpD,QAAS+N,IAAU/N,QACnBsD,UAAWyK,IAAUjO,OAAOwD,UAE5BE,OAAQwK,IACRzK,OAAQ0K,IAER3L,OAAQsS,IACRrM,YAAasM,IACbtL,YAAauL,KAEApS,O,2ICZTD,EAAiBoD,IAAMC,YAC3B,WAgBEC,GACI,IAfFxB,EAeC,EAfDA,MAeC,IAdDwQ,gBAcC,aAbDC,gBAaC,SAZDC,EAYC,EAZDA,WACAC,EAWC,EAXDA,aAWC,IAVDvS,eAUC,aATDwS,mBASC,MATa,iBASb,MARDC,mBAQC,SAPDzN,EAOC,EAPDA,SACAjH,EAMC,EANDA,MAMC,IALD2U,mCAKC,SAJDjQ,EAIC,EAJDA,WACGtB,EAGF,iLACsCwR,cAAjC7F,EADL,EACKA,MAAgB8F,EADrB,EACYjF,QAETkF,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAEzCG,GAAYZ,EAAWa,iBAAOnG,EAAO,MAAQ,IAChDpL,QAAO,SAACuD,GACP,SAAKpB,IAAEoN,YAAYqB,IAAeA,IAAerN,EAAEqN,iBAE9CzO,IAAEoN,YAAYsB,IAAiBA,IAAiBtN,EAAEsN,kBAE7B,KAArB,OAADtN,QAAC,IAADA,OAAA,EAAAA,EAAGiO,kBAAwC,IAAbb,MAEZ,IAAfpN,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,QAEzC8C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEhV,GAAK,KAAOgV,EAAEtV,KAAM+D,MAAOuR,EAAEhV,OAG/CiV,EAAc,KACdxR,IAEAwR,EADEpT,EACY0S,EACVM,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UACxCA,EAAM8C,KAAI,SAAC4O,GAAD,OAAOzP,IAAE0P,KAAKP,GAAU,SAACK,GAAD,OAAOA,EAAEzR,QAAU0R,QAE3CzP,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAG7C,IAAI4R,EACF,cAAC,IAAD,aACEpQ,IAAKA,EACLqQ,UAAWb,EACXc,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,EACbxN,SAAUA,EACVvC,WAAYA,GACRtB,IAIR,OACE,mCACGsR,EACC,qCACG1U,EAAQ,cAAC,IAAK8H,MAAN,UAAa9H,IAAsB,KAC5C,eAAC,IAAKmB,IAAN,CAAUK,UAAU,UAApB,UACE,cAAC,IAAD,CAAKA,UAAU,UAAf,SAA0BiU,IAC1B,cAAC,IAAD,CAAKpU,GAAG,OAAOG,UAAU,UAAzB,SACGkT,EACC,cAAC,IAAD,CAAQtS,QAAS,kBAAM6E,EAAS6N,IAAO9M,SAAUtD,EAAjD,gBAGE,aAKV,qCACG1E,EAAQ,cAAC,IAAK8H,MAAN,UAAa9H,IAAsB,KAC3CyV,UAQb1T,EAAe8T,YAAc,iBACd9T,O,yGC5FX5C,YAAkB,CACpBC,OAAQuD,IAAMvD,OACdE,QAASqD,IAAMrD,UAJFwW,E,EAAbtW,YACWuW,E,EAAXrW,U,sGCIasW,EANSC,YAAkB,CACxCnW,KAAM,OACNJ,UAAWwW,IACXlW,MAAO,SAACmW,GAAD,OAAOA,EAAErW,Q,gDCGZsW,EAAajR,IAAMC,YACvB,WAkBEC,GACI,IAjBFxB,EAiBC,EAjBDA,MAiBC,IAhBDC,cAgBC,aAfDuQ,gBAeC,aAdDC,gBAcC,SAbDC,EAaC,EAbDA,WACAC,EAYC,EAZDA,aACA6B,EAWC,EAXDA,qBAWC,IAVDpU,eAUC,aATDwS,mBASC,MATa,iBASb,MARDC,mBAQC,SAPDzN,EAOC,EAPDA,SACAjH,EAMC,EANDA,MAMC,IALD2U,mCAKC,SAJDjQ,EAIC,EAJDA,WACGtB,EAGF,iNACsCwR,cAAjC7F,EADL,EACKA,MAAgB8F,EADrB,EACYjF,QADZ,EAE8CnN,IAAOK,SAAhDE,EAFL,EAEKA,QAAkBsT,EAFvB,EAEc1G,QAEXkF,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAEzCG,GAAYZ,EAAWa,iBAAOnG,EAAO,MAAQ,IAChD4E,OAAO7P,EAASd,EAAU,IAC1BW,QAAO,SAACuD,GACP,SAAKpB,IAAEoN,YAAYqB,IAAeA,IAAerN,EAAEqN,iBAGhDzO,IAAEoN,YAAYmD,IACfA,IAAyBnP,EAAEmP,2BAGxBvQ,IAAEoN,YAAYsB,IAAiBA,IAAiBtN,EAAEsN,kBAE7B,KAArB,OAADtN,QAAC,IAADA,OAAA,EAAAA,EAAGiO,kBAAwC,IAAbb,MAEZ,IAAfpN,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,SAEzC8C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEhV,GAAK,KAAOgV,EAAEtV,KAAM+D,MAAOuR,EAAEhV,OAG/CiV,EAAc,KACdxR,IAEAwR,EADEpT,EACY0S,EACVM,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UACxCA,EAAM8C,KAAI,SAAC4O,GAAD,OAAOzP,IAAE0P,KAAKP,GAAU,SAACK,GAAD,OAAOA,EAAEzR,QAAU0R,QAE3CzP,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAG7C,IAAI4R,EACF,cAACc,EAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAWb,GAAgByB,EAC3BX,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,EACbxN,SAAUA,EACVvC,WAAYA,GACRtB,IAIR,OACE,mCACGsR,EACC,qCACG1U,EAAQ,cAACkB,EAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,eAACkB,EAAA,EAAKC,IAAN,CAAUK,UAAU,UAApB,UACE,cAACJ,EAAA,EAAD,CAAKI,UAAU,UAAf,SAA0BiU,IAC1B,cAACrU,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,UAAzB,SACGkT,EACC,cAACxS,EAAA,EAAD,CAAQE,QAAS,kBAAM6E,EAAS6N,IAAO9M,SAAUtD,EAAjD,gBAGE,aAKV,qCACG1E,EAAQ,cAACkB,EAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC3CyV,UAQbW,EAAWP,YAAc,aACVO,Q,QC1GTI,EAAqB,kBACzBzW,cAAS0W,MAAM,CAAC,IAAK,IAAK,MAAMjW,QAAQ,KAAKP,YA6BhCyW,EA3BiB9W,cAASC,MAAM,CAC7CO,GAAIL,cACDC,MAAM,MACNC,WACAI,IAAI,GACJsW,WAAU,SAACpB,GAAD,MAAO,UAAGA,GAAIqB,iBAC3BC,YAAa9W,cAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnD4F,QAAS9F,cAASC,MAAM,SACxB8W,aAAc/W,cAASC,MAAM,eAC7B+W,kBAAmBP,IAAqBxW,MAAM,uBAC9CgX,iBAAkBR,IAAqBxW,MACrC,4CAEFiX,gBAAiBT,IAAqBxW,MACpC,mCAEFkX,uBAAwBV,IAAqBxW,MAC3C,gCAEFmX,uBAAwBpX,cACrB0W,MAAM,CAAC,IAAK,IAAK,MACjBxW,WACAD,MAAM,iCACNQ,QAAQ,KACXF,SAAUC,cAAON,WAAWO,SAAQ,KCTvB,SAAS4W,EAAT,GAKX,IAAD,IAJD5S,cAIC,MAJQ,GAIR,EAHDC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,SADD4U,EACC,EADDA,UAEA,OACE,qCACE,cAAC,IAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQ8R,GAClB5R,aAAW,EAJb,SAME,cAACuS,EAAD,CAAwBvW,MAAOA,EAAO4U,UAAWA,MAEjD5U,EAeE,KAdF,cAACI,EAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,WACE,cAACF,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKI,UAAW,OAAhB,SACE,6CAGJ,cAACN,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACkW,EAAD,CAAalX,GAAE,OAAEoE,QAAF,IAAEA,OAAF,EAAEA,EAAQpE,GAAIoE,OAAM,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAQ+S,sBAU7D,SAASF,EAAT,GAA4C,IAAVvW,EAAS,EAATA,MACxBC,EAAeC,cAAfD,WACR,OACE,eAACG,EAAA,EAAD,WACE,eAACA,EAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,WACE,eAACF,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,cAAC,IAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,cAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,cAAC,IAAWC,MAAZ,CAAkB3B,KAAK,WAAWE,MAAM,kBAG5C,cAACkB,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAD,CACE7B,KAAK,cACLE,MAAM,cACNuB,aAAa,YAInB,cAACL,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAWC,OAAZ,CACE9B,KAAK,UACLE,MAAM,QACN6B,GAAIC,IAAMF,aAIhB,cAACV,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC6V,EAAD,CAAY1X,KAAK,eAAeE,MAAM,uBAI5C,eAACoB,EAAA,EAAD,WACE,cAACF,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,8CAGJ,cAACqW,EAAD,CACE3X,KAAK,oBACLE,MAAM,wBAER,cAACyX,EAAD,CACE3X,KAAK,mBACLE,MAAM,6CAER,cAACyX,EAAD,CACE3X,KAAK,kBACLE,MAAM,oCAER,cAACyX,EAAD,CACE3X,KAAK,yBACLE,MAAM,iCAER,cAACkB,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,cAACH,EAAA,EAAKY,MAAN,CAAY1B,GAAG,yBAAf,SACE,eAACsX,EAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,cAACkW,EAAA,EAAWC,QAAZ,UACE,cAACD,EAAA,EAAWpR,KAAZ,UACG,oCAGL,eAAC,IAAWU,QAAZ,CAAoBnF,GAAG,SAAS/B,KAAK,yBAArC,UACE,wBAAQ+D,MAAM,IAAd,gBACA,wBAAQA,MAAM,IAAd,iBACA,wBAAQA,MAAM,IAAd,2CAQd,cAAC3C,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACc,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,SACGD,EAAQ,eAAiB,sBAQtC,SAAS0W,EAAT,GAAyC,IAAnB1X,EAAkB,EAAlBA,KAASsD,EAAS,0BAIlCwU,YAAc,CAAE9X,SAFlB+X,EAFoC,EAEpCA,MACc3K,EAHsB,EAGpC4K,WAAc5K,MAGExI,EACd1D,cADF+W,aAAgBrT,WAGlB,OACE,cAACxD,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,cAAC,EAAD,yBACEmC,QAAQ,EACRuQ,UAAU,GACNwD,GAHN,IAIEG,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfzI,WAAYA,GACRtB,QAOd,SAASkU,EAAT,GAAiD,IAA1BlX,EAAyB,EAAzBA,GAAIoE,EAAqB,EAArBA,OAAQkR,EAAa,EAAbA,UAC3BlM,EAAW0O,cAEX7U,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRE,OAAQC,IACRC,OAAQ,OACRH,SAAU,SAAC2U,GACT,OAAQA,EAAEzO,MACR,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,QACT,QACE,MAAO,UAAYyO,EAAEzO,QAI7B,CACEtJ,GAAI,MACJmD,OAAQ,SACRC,SAAU,MACVC,OAAQC,IACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,MACY,MADZ,EAAUE,IAAOC,SACd0F,KACL,qCACE,cAAC0O,EAAA,EAAD,CAAUhY,GAAIyD,EAAOwU,QAAQ,IAAS,IACtC,cAAC,EAAD,CAAiBjY,GAAIyD,OAGvBA,IAGN,CACEzD,GAAI,OACJmD,OAAQ,GACRC,SAAU,MACV8U,eAAe,EACf1U,KAAM,YAAoC,IAAhB2U,EAAe,EAAhCxU,IAAOC,SACd,OACE,cAAC9B,EAAA,EAAD,CACEE,QAAS,kBACPoH,EACEgP,IAAuBlZ,QAAQmZ,aAA/B,aACEC,oBAAqBtY,GAClBmY,MAITvQ,SAAU0N,EACVpN,MAAM,gBACNE,KAAK,KACLrG,QAAQ,OACRX,UAAU,kBAbZ,SAeE,cAAC,IAAD,WAMV,CAACgI,EAAUpJ,EAAIsV,IAGjB,OACE,qCACE,cAACxU,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACF,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAAC2B,EAAA,EAAD,CACEoB,UAAQ,EACRnE,MAAM,UACNqD,QAASA,EACTe,KAAMI,EACNrB,OAAQ,CAAC,MAAO,kBAM1B,cAACjC,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAAC,IAAD,CACEqD,SAAU,SAACD,GAAD,OACRgF,EACEgP,IAAuBlZ,QAAQqZ,UAA/B,aACED,oBAAqBtY,GAClBoE,MAITE,WAAYgR,EACZ/Q,cAAe,CAAE+E,KAAM,KAVzB,SAYE,cAACkP,EAAD,aAQZ,SAASA,IAAkB,IAAD,EACM5X,cAAtB6X,EADgB,EAChBA,MAAO9X,EADS,EACTA,WACT2I,EAAOmP,EAAM,QACnB,OACE,eAAC3X,EAAA,EAAD,WACE,eAACA,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,IAAD,CAAYQ,GAAG,SAAS/B,KAAK,OAAOE,MAAM,OAA1C,UACE,wBAAQ6D,MAAM,IAAd,kBACA,wBAAQA,MAAM,IAAd,wBAGJ,cAACzC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACY,MAAT+H,EACC,cAAC,IAAW9H,OAAZ,CAAmB9B,KAAK,MAAME,MAAM,OAAO6B,GAAIuU,IAE/C,cAAC,IAAD,CAAYtW,KAAK,MAAME,MAAM,QAAQyU,YAAY,qBAIvD,cAACvT,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACc,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,+BASV,SAAS0W,EAAT,GAAmE,IAArC3X,EAAoC,EAApCA,KAAoC,IAA9BM,UAA8B,MAAzBN,EAAyB,EAAnBE,EAAmB,EAAnBA,MAAUoD,EAAS,qCAChE,OACE,cAAClC,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,cAACH,EAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,SACE,eAACsX,EAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,cAACkW,EAAA,EAAWC,QAAZ,UACE,cAACD,EAAA,EAAWpR,KAAZ,UAAkBtG,MAEpB,eAAC,IAAWgH,QAAZ,yBAAoBnF,GAAG,SAAS/B,KAAMA,GAAUsD,GAAhD,cACE,wBAAQS,MAAM,IAAd,gBACA,wBAAQA,MAAM,IAAd,iBACA,wBAAQA,MAAM,IAAd,+C,YClUd,IAeekV,EAfW,CAExBrW,IAAK8V,IAAuB9V,IAE5BpD,QAASkZ,IAAuBlZ,QAChCsD,UAAW4V,IAAuBpZ,OAAOwD,UAEzCC,OAAQkT,EACRjT,OAAQgT,EAERkD,ICVa,YAAqD,IAAD,IAApBC,aAAoB,MAAZ,aAAY,IAClClE,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAApDkE,EADyD,EACzDA,UAAWC,EAD8C,EAC9CA,QAEX5J,EAAcwG,IAAdxG,UAER,OAAM2J,GAAaC,EAGjB,cAAC/B,EAAD,CACEtW,OAAK,EACL2D,SAAU,SAACD,GAAD,OAAY+K,EAAU/K,GAAQqI,KAAKoM,MALb,MDMpC1U,OAAQ6S,EACRrU,MEZa,YAGX,IAFFqW,EAEC,EAFDA,mBACGhW,EACF,sCACKC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,OACRC,SAAU,KACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,cAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,8BAAD,OAAgCqB,IAFhD,SAIGA,MAIP,CACEN,OAAQ,cACRC,SAAU,cACVC,OAAQC,IACRC,OAAQ,WAGZ,IAGF,OACE,cAACZ,EAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,sBACNqD,QAASA,EACTe,KAAMgV,GACFhW,M,mCCIV,SAASkW,EAAT,GAKI,IAJFC,EAIC,EAJDA,oBACAC,EAGC,EAHDA,mBACAC,EAEC,EAFDA,wBACA3Y,EACC,EADDA,MAEQqY,EAAYpE,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QACApY,EAAeC,cAAfD,WAGR,OADAE,cAEE,eAACC,EAAA,EAAD,WACE,eAACA,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,EAAA,EAAKY,MAAN,WACE,cAACZ,EAAA,EAAK4G,MAAN,uBACA,eAAC4P,EAAA,EAAD,WACE,cAAC,IAAW1Q,QAAZ,CACElH,KAAK,cACLkI,UAAWmR,IAAYrY,IAExBC,EACC,cAAC2Y,EAAA,EAAD,CACE7X,GAAI6V,IAAWiC,OACfxX,QAAQ,oBACRmG,MAAO,cAAC,IAAD,IACPlI,GAAG,yBAJL,SAMIU,EAaA,cAAC8Y,EAAA,EAASC,KAAV,CAAezX,QAAS,kBAAMrB,EAAW,WAAzC,iBAZA,qCACE,cAAC6Y,EAAA,EAASC,KAAV,CAAezX,QAAS,kBAAMrB,EAAW,QAAzC,+BAGA,cAAC6Y,EAAA,EAASC,KAAV,CAAezX,QAAS,kBAAMrB,EAAW,aAAzC,mCAGA,cAAC6Y,EAAA,EAASC,KAAV,CAAezX,QAAS,kBAAMrB,EAAW,WAAzC,yBAUJ,aAITD,EAAQ,KACP,eAACM,EAAA,EAAD,WACE,cAACF,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACF,EAAA,EAAK4G,MAAN,wBAGJ,cAAC5G,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,+BAAOoY,QAGX,cAACtY,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,+BAAOqY,cAOhBF,EACC,cAACrY,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACyY,EAAA,EAAD,CAAO3X,QAAQ,OAAf,UACE,cAACjB,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACF,EAAA,EAAK4G,MAAN,qCAGJ,cAAC5G,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACF,EAAA,EAAK8F,QAAN,CACExF,UAAU,iBACVkI,KAAK,OACL7F,MAAO0V,EACPvR,UAAQ,QAId,cAAC9G,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACF,EAAA,EAAKoF,KAAN,CAAW9E,UAAU,aAArB,kFAQR,Q,qBC5IKuY,EAJIna,cAASC,MAAM,CAChCC,KAAMC,cAASC,MAAM,eAAeC,aC2BtC,SAAS+Z,IAAY,IACXb,EAAYpE,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QACApY,EAAeC,cAAfD,WACRE,cACA,IAAMyD,GAAa,EACnB,OACE,eAACxD,EAAA,EAAD,WACE,cAACA,EAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAhC,UACE,cAAC,IAAD,CAAYra,KAAK,OAAOE,MAAM,OAAOgI,SAAUtD,IAC/C,eAACxD,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,UACE,cAAC,IAAWQ,OAAZ,CACE9B,KAAK,YACLE,MAAM,UACN6B,GAAIuU,EACJgE,aAAW,EACX1V,WAAYA,MAGhB,cAACtD,EAAA,EAAD,UACE,cAAC,IAAWQ,OAAZ,CACE9B,KAAK,WACLE,MAAM,SACN6B,GAAIuU,EACJgE,aAAW,EACX1V,WAAYA,SAIlB,cAAC,IAAW9C,OAAZ,CACE9B,KAAK,SACLE,MAAM,OACN6B,GAAIgM,IAAKjM,OACTwY,aAAW,EACX1V,WAAYA,IAEd,cAAC,IAAD,CACE5E,KAAK,QACLE,MAAM,gBACNgI,SAAUtD,IAEZ,cAAC,IAAD,CAAY5E,KAAK,aAAaE,MAAM,WAAWgI,UAAU,IACzD,eAAC9G,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,UACE,cAAC,IAAD,CACEtB,KAAK,YACLE,MAAM,eACNgI,SAAUtD,MAGd,cAACtD,EAAA,EAAD,UACE,cAAC,IAAD,CACEtB,KAAK,YACLE,MAAM,yBACNgI,SAAUtD,SAIhB,eAACxD,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,UACE,cAAC,IAAD,CACEtB,KAAK,YACLE,MAAM,eACNgI,SAAUtD,MAGd,cAACtD,EAAA,EAAD,UACE,cAAC,IAAD,CACEtB,KAAK,YACLE,MAAM,eACNgI,SAAUtD,SAIhB,cAACxD,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAAC,IAAWK,MAAZ,CACE3B,KAAK,WACLE,MAAM,YACNgI,UAAWmR,aAMrB,cAACjY,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACc,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,2B,mBC/GV,SAASsZ,GAAcC,GAGrB,MADE,wJACQC,KAAKC,OAAOF,GAAOG,eAG/B,IAAM3L,GAAS,CACb4L,EAAG,MACHC,EAAG,iBACHC,EAAG,gBACHC,EAAG,KACHC,EAAG,e,gBCdH3b,YAAkB,CAChBC,OAAQuD,KAAMvD,OACdE,QAASqD,KAAMrD,UAHSyb,G,GAAbvb,YAA0Cwb,G,GAAXtb,U,oBCS/Bub,GAVYrb,cAASC,MAAM,CACxCO,GAAIL,cACDC,MAAM,MACNC,WACAI,IAAI,GACJsW,WAAU,SAACpB,GAAD,MAAO,UAAGA,GAAIqB,iBAC3BC,YAAa9W,cAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnDib,WAAY3a,cAAON,WAAWO,SAAQ,KCOzB,SAAS2a,GAAT,GAKX,IAAD,IAJD3W,cAIC,MAJQ,GAIR,EAHDC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,SADD4U,EACC,EADDA,UAEA,OACE,qCACE,cAAC,IAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQqW,IAClBnW,aAAW,EAJb,SAME,cAACsW,GAAD,CAAmBta,MAAOA,EAAO4U,UAAWA,MAE5C5U,EAeE,KAdF,cAACI,EAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,WACE,cAACF,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKI,UAAW,OAAhB,SACE,6CAGJ,cAACN,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAAC,GAAD,CAAahB,GAAE,OAAEoE,QAAF,IAAEA,OAAF,EAAEA,EAAQpE,GAAIoE,OAAM,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAQ+S,sBAU7D,SAAS6D,GAAT,GAAuC,IAAVta,EAAS,EAATA,MACnBC,EAAeC,cAAfD,WACR,OACE,eAACG,EAAA,EAAD,WACE,cAACA,EAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,WACE,eAACF,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,cAAC,IAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,cAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,cAAC,IAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,cAACkB,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,cAAC,IAAD,CACE7B,KAAK,cACLE,MAAM,cACNuB,aAAa,iBAMvB,cAACL,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACc,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,SACGD,EAAQ,eAAiB,sBAQtC,SAASwW,GAAT,GAAiD,IAA1BlX,EAAyB,EAAzBA,GAAIoE,EAAqB,EAArBA,OAAQkR,EAAa,EAAbA,UAC3BlM,EAAW0O,cAEX7U,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRE,OAAQC,IACRC,OAAQ,OACRH,SAAU,SAAC2U,GACT,OAAQA,EAAEzO,MACR,IAAK,IACH,MAAO,OACT,IAAK,IACH,MAAO,OACT,QACE,MAAO,UAAYyO,EAAEzO,QAI7B,CACEtJ,GAAI,MACJmD,OAAQ,SACRC,SAAU,WACVC,OAAQC,IACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,MACY,MADZ,EAAUE,IAAOC,SACd0F,KACL,qCACE,cAAC0O,EAAA,EAAD,CAAUhY,GAAIyD,EAAOwU,QAAQ,IAAS,IACtC,cAAC,EAAD,CAAiBjY,GAAIyD,OAGvB,mCACE,cAACkK,GAAA,EAAD,CAAiB3N,GAAIyD,QAI7B,CACEzD,GAAI,OACJmD,OAAQ,GACRC,SAAU,MACV8U,eAAe,EACf1U,KAAM,YAAoC,IAAhB2U,EAAe,EAAhCxU,IAAOC,SACd,OACE,cAAC9B,EAAA,EAAD,CACEE,QAAS,kBACPoH,EACE6R,KAAkB/b,QAAQmZ,aAA1B,aACE6C,eAAgBlb,GACbmY,MAITvQ,SAAU0N,EACVpN,MAAM,gBACNE,KAAK,KACLrG,QAAQ,OACRX,UAAU,kBAbZ,SAeE,cAAC,IAAD,WAMV,CAACgI,EAAUpJ,EAAIsV,IAGjB,OACE,qCACE,cAACxU,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACF,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAAC2B,EAAA,EAAD,CACEoB,UAAQ,EACRnE,MAAM,UACNqD,QAASA,EACTe,KAAMI,EACNrB,OAAQ,CAAC,OAAQ,MAAO,kBAMlC,cAACjC,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAAC,IAAD,CACEqD,SAAU,SAACD,GAAD,OACRgF,EACE6R,KAAkB/b,QAAQqZ,UAA1B,aACE4C,aAAcnb,GACXoE,MAITE,WAAYgR,EACZ/Q,cAAe,CAAE+E,KAAM,KAVzB,SAYE,cAAC,GAAD,aAQZ,SAASkP,KAAkB,IAAD,EACM5X,cAAtB6X,EADgB,EAChBA,MAAO9X,EADS,EACTA,WACT2I,EAAOmP,EAAM,QACnB,OACE,eAAC3X,EAAA,EAAD,WACE,eAACA,EAAA,EAAKC,IAAN,WACE,cAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,IAAD,CAAYQ,GAAG,SAAS/B,KAAK,OAAOE,MAAM,OAA1C,UACE,wBAAQ6D,MAAM,IAAd,kBACA,wBAAQA,MAAM,IAAd,uBAGJ,cAACzC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACY,MAAT+H,EACC,cAAC,IAAW9H,OAAZ,CAAmB9B,KAAK,WAAWE,MAAM,OAAO6B,GAAIuU,IAEpD,cAAC,IAAWxU,OAAZ,CAAmB9B,KAAK,WAAWE,MAAM,OAAO6B,GAAIiM,YAI1D,cAAC5M,EAAA,EAAKC,IAAN,UACE,cAACC,EAAA,EAAD,UACE,cAACc,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,+BC7NV,IAKeya,GALYC,YAAa,CACtC3b,KAAM,eACNN,YAAaub,KCEf,IAgBeW,GAhBM,CAEnBhZ,IAAK2Y,KAAkB3Y,IAEvBpD,QAAS+b,KAAkB/b,QAC3BsD,UAAWyY,KAAkBjc,OAAOwD,UAEpCC,OAAQmY,GACRlY,OAAQiY,GAER/B,ICZa,YAAgD,IAAD,IAApBC,aAAoB,MAAZ,aAAY,EACpD1J,EAAcyL,KAAdzL,UACR,OACE,cAAC4L,GAAD,CACEra,OAAK,EACL2D,SAAU,SAACD,GAAD,OAAY+K,EAAU/K,GAAQqI,KAAKoM,ODQjD1U,OAAQ4W,GACRpY,MEba,YAAyD,IAA5B4Y,EAA2B,EAA3BA,cAAkBvY,EAAS,iCAC/DC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,OACRC,SAAU,KACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,cAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,yBAAD,OAA2BqB,IAF3C,SAIGA,MAIP,CACEN,OAAQ,cACRC,SAAU,cACVC,OAAQC,IACRC,OAAQ,WAGZ,IAGF,OACE,cAACZ,EAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,iBACNqD,QAASA,EACTe,KAAMuX,GACFvY,KFnBRxB,OAAQ4Z,I,6DGdH,SAASI,GAAT,GAA+D,IAAxCxb,EAAuC,EAAvCA,GAAIyb,EAAmC,EAAnCA,KAAMC,EAA6B,EAA7BA,UAA6B,IAAlBC,cAAkB,SAC7DnM,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAMoM,MAAMA,MAAMW,SAASE,WAC5DoM,EAAWjH,aAAY,SAACpS,GAAD,OAAWA,EAAMoM,MAAMA,MAAMkN,QACpDzS,EAAW0O,cAOjB,OALAgE,qBAAU,WACJpW,IAAE6L,SAASvR,IAAO2b,GACpBvS,EAAS2S,IAAU7c,QAAQ8c,QAAQ,CAAEhc,GAAIA,EAAIyb,OAAMC,iBACpD,CAAC1b,EAAIyb,EAAMC,EAAWC,EAAQvS,IAE1B,CACLoG,UACAoM,YAIWJ,ICHTS,GAAO,CAEX3Z,IAAKyZ,IAAUzZ,IAEfpD,QAAS6c,IAAU7c,QACnBsD,UAAWuZ,IAAU/c,OAAOwD,UAE5BC,OAAQqT,IACRpT,OAAQ8R,IAER7R,MCfa,YAAyC,IAApBgM,EAAmB,EAAnBA,MAAU3L,EAAS,yBAC/CC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,OACRC,SAAU,KACVC,OAAQC,IACRC,OAAQ,OAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,cAACuU,EAAA,EAAD,CAAUhY,GAAIyD,EAAOwU,QAAQ,MAEpD,CACE9U,OAAQ,OACRC,SAAU,OACVC,OAAQC,IACRC,OAAQ,QAEV,CACEJ,OAAQ,OACRC,SAAU,SACVC,OAAQoK,IAAKhF,YACblF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,cAAC,IAAKgE,YAAN,CAAkBzH,GAAIyD,MAE7C,CACEN,OAAQ,UACRC,SAAU,YACVC,OAAQS,IACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,cAACuU,EAAA,EAAD,CAAUhY,GAAIyD,EAAOwU,QAAQ,MAEpD,CACE9U,OAAQ,WACRC,SAAU,sBACVC,OAAQS,IACRP,OAAQ,UAEV,CACEvD,GAAI,SACJmD,OAAQ,WACR+Y,eAAe,EACf9Y,SAAU,SAAC+Y,GAgCT,MA/Be,CACb,CACEC,MAAOC,aAAW,OAChBF,QADgB,IAChBA,OADgB,EAChBA,EAASG,UADO,OAEhBH,QAFgB,IAEhBA,OAFgB,EAEhBA,EAASI,oBAEXjT,KAAM,QAGR,CACE8S,MAAOC,aAAW,OAChBF,QADgB,IAChBA,OADgB,EAChBA,EAASK,UADO,OAEhBL,QAFgB,IAEhBA,OAFgB,EAEhBA,EAASM,oBAEXnT,KAAM,QAER,CACE8S,MAAOC,aAAW,OAChBF,QADgB,IAChBA,OADgB,EAChBA,EAASO,UADO,OAEhBP,QAFgB,IAEhBA,OAFgB,EAEhBA,EAASQ,oBAEXrT,KAAM,QAER,CACE8S,MAAOC,aAAW,OAChBF,QADgB,IAChBA,OADgB,EAChBA,EAASS,WADO,OAEhBT,QAFgB,IAEhBA,OAFgB,EAEhBA,EAASU,qBAEXvT,KAAM,UAGI/F,QAAO,SAACiD,GAAD,OAAOA,EAAE4V,UAGhC5Y,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,cAAC1C,GAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACGyC,EAAM8C,KAAI,SAACC,EAAGsW,GAAJ,OACT,cAAC/b,GAAA,EAAD,UACE,eAACC,EAAA,EAAD,WACE,cAAC+b,GAAA,EAAD,CAAKX,MAAO5V,EAAE4V,QACd,uCAAU5V,EAAE8C,KAAZ,WAHJ,eAAkBwT,aAW5B,CACE9c,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQC,IACRC,OAAQ,OAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,cAACuZ,GAAA,EAAD,CAAQ9C,MAAOzW,SAGxC,IAGF,OACE,cAACd,EAAA,EAAD,aAAOoB,UAAQ,EAACnE,MAAM,QAAQqD,QAASA,EAASe,KAAM2K,GAAW3L,KD3FnEiB,KAAM+T,IACN7P,MAAO8U,KACPzb,OAAQwU,EACRkH,YTZa,YAKX,IAAD,IAJDvO,aAIC,MAJO,GAIP,MAHDwO,cAGC,MAHQ,GAGR,MAFD1Z,MAAO2Z,OAEN,MAFsB,GAEtB,EADEpa,EACF,4CACyBmC,mBAAS,IADlC,mBACMkY,EADN,KACaC,EADb,KAGKC,EAAgB5I,YAAYoH,IAAU/c,OAAOwD,UAAUqP,gBACvD2L,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACjD+I,EAAeva,mBAAQ,WAC3B,IAAMwa,EAAe,SAAC1d,EAAIyF,EAAS7F,GACjC,IAAM8U,EAAI,OAAG6I,QAAH,IAAGA,OAAH,EAAGA,EAAgBvd,GAC7B,OAAK0U,IAAQ,OAACA,QAAD,IAACA,OAAD,EAACA,EAAMwF,OACb,CACLta,MAAM,GAAD,OAAK8U,EAAKhV,MAAV,OAAiBE,EAAK,YAAQA,EAAR,KAAmB,IAC9C6D,MAAOiR,EAAKwF,MACZzU,WAJgC,MAQ9BkY,EAA2B,SAAC3d,EAAIyF,GACpC,IAAI+P,EAAU,CAACkI,EAAa1d,EAAIyF,IAE1BiP,EAAI,OAAG6I,QAAH,IAAGA,OAAH,EAAGA,EAAgBvd,GACvB4d,EAAgBF,EAAY,OAAChJ,QAAD,IAACA,OAAD,EAACA,EAAMmJ,UAAWpY,EAAS,WAG7D,OAFImY,GAAepI,EAAQsI,KAAKF,GAEzBpI,EAAQjS,QAAO,SAAC2R,GAAD,OAAOA,MAGzB6I,EAAcrY,IAAEsY,QACpBrP,EACGpL,QAAO,SAACwS,GAAD,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAG/V,MACjBuG,KAAI,SAACwP,GAAD,OAAO4H,EAAyB5H,EAAE/V,GAAH,YAAY+V,EAAEnW,YAGhDqe,EAAYN,EAAyBH,EAAc,GAEnDU,EAAkBxY,IAAEoP,OACxBpB,OAAOC,QAAQ4J,GACZhX,KAAI,YAAW,IAATvG,EAAQ,oBACb,OAAO0d,EAAa1d,EAAI,MAEzBuD,QAAO,SAACwS,GAAD,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAGtS,SACpB,SAGF,MAAO,GAAG8P,OAAOwK,EAAaE,EAAWC,KACxC,CAACvP,EAAO4O,EAAeC,IAEpBW,EAAgBjb,mBAAQ,WAC5B,IAAMkb,EAAW,OAAGjB,QAAH,IAAGA,OAAH,EAAGA,EAAQ5Z,QAAO,SAACuD,GAAD,OACjCpB,IAAE6L,SAASzK,GAAKmT,GAAcnT,GAAKA,KAGrC,cAAIsX,QAAJ,IAAIA,OAAJ,EAAIA,EAAaC,QACRD,EACJ7X,KAAI,SAACO,GACJ,GAAIpB,IAAE6L,SAASzK,GAAI,CACjB,IAAMoT,EAAQE,OAAOtT,GAAGuT,cACxB,MAAO,CAAEza,MAAOsa,EAAOzW,MAAOyW,EAAOzU,QAAS,GAE9C,OAAOqB,KAGVvD,QAAO,SAACuD,GAAD,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAGrD,SACV,KACX,CAAC0Z,IAEE3H,EAAUtS,mBAAQ,WACtB,IAAMob,EAAclE,OAAOiD,GAAOhD,cAC5BkE,EAActE,GAAcqE,GAC9B,CAAC,CAAE1e,MAAO0e,EAAa7a,MAAO6a,EAAa7Y,QAAS,IACpD,GAEJ,MAAM,GAAN,mBAAW0Y,GAAX,YAA6BV,GAAiBc,KAC7C,CAACJ,EAAeV,EAAcJ,IAE3BjZ,EAASlB,mBACb,kBACEka,EAAa,OACTA,QADS,IACTA,OADS,EACTA,EACI7W,KACA,SAAC4O,GAAD,OACEzP,IAAE0P,KAAKI,GAAS,SAACN,GAAD,OAAOA,EAAEzR,QAAU0R,MAAM,CAAEvV,MAAOuV,EAAG1R,MAAO0R,MAE/D5R,QAAO,SAACuD,GAAD,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAGrD,SACpB,KACN,CAAC2Z,EAAe5H,IAGZgJ,EAAiBtb,mBACrB,kBACEwC,IAAEoP,OACApB,OAAOC,QAAQjO,IAAE+Y,QAAQjJ,EAAS,YAAYjP,KAAI,YAAmB,IAAD,mBAAhBsC,EAAgB,KAAXpF,EAAW,KAClE,MAAO,CACLgC,QAASoD,EACTjJ,OAAa,OAAN8O,SAAM,IAANA,QAAA,EAAAA,GAAS7F,KAAQA,EAAI6V,MAAM,KAAK,IAAM,UAC7ClJ,QAAS/R,MAGb,aAEJ,CAAC+R,IAGH,OACE,cAACW,EAAA,EAAD,aACE1S,MAAOW,EACPoR,QAASgJ,EACT3c,SAAO,EACP8c,cAAerB,GACXta,KSpGR4b,KAAMhJ,EACNnN,YAAa5E,KACbM,OVtBa,YAA+D,IAAzCC,EAAwC,EAAxCA,OAAQC,EAAgC,EAAhCA,SAAgC,IAAtBC,kBAAsB,SAC3E,OACE,cAAC,IAAD,CACEC,cAAa,eACRH,GAELC,SAAUA,EACVG,OAAQ,CAAEA,OAAQmV,GAClBrV,WAAYA,EACZI,aAAW,EAPb,SASE,cAACkV,EAAD,OUYJiF,kBZlBa,YAKX,IAAD,IAJDza,OAAUpE,EAIT,EAJSA,GAAI8e,EAIb,EAJaA,YAAa1F,EAI1B,EAJ0BA,mBAAoBC,EAI9C,EAJ8CA,wBAI9C,IAHD/U,kBAGC,SAFDD,EAEC,EAFDA,SACA8U,EACC,EADDA,oBAEA,OACE,cAAC,IAAD,CACE5U,cAAe,CACbvE,KACA8e,eAEFza,SAAUA,EACVC,WAAYA,EANd,SAQE,cAAC4U,EAAD,CAEIxY,OAAQoe,EACR1F,qBACAC,0BACAF,2BYAR1L,KAAMA,IACN/L,MAAOA,IACPW,OAAQA,IACRsW,kBAAmBA,EACnB2C,aAAcA,IAGDW,Q,iCE9Cf,oBAGMhW,EAAmB4P,YAAkB,CACzCnW,KAAM,QACNJ,UAAW+H,MAGEpB,O,iCCRf,oBAGMuB,EAAc6T,YAAa,CAC/B3b,KAAM,QACNN,YAAakI,IACb/D,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAG1C+D,O,iCCTf,oBAGMsM,EAAauH,YAAa,CAC9B3b,KAAM,cACNN,YAAa8N,IACb3J,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAG1CqQ,O,yLCCR,SAASiL,EAAkBnP,GAChC,IAAMpG,EAAO,aACX6C,QAAS,kBACNuD,GAGL,OAAO/B,IAAM7B,KAAKxC,GCJb,IAAMwV,EAAc9V,YACzB,eADyC,uCAEzC,WAAOxD,EAAP,wBAAAyD,EAAA,yDAAY+E,EAAZ,EAAYA,SAAUwB,EAAtB,EAAsBA,UACfD,YAAiBvB,IAAW+Q,SAAUvP,GAD7C,iEDPO7B,IAAM7B,KAJG,CACdK,QAAS,gBCUX,uBAGU0B,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAFyC,yDAU9BmR,EAAiBhW,YAC5B,kBAD4C,uCAE5C,WAAOM,EAAP,4BAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW+Q,SAAUvP,GAD7C,oDAIQyP,EAAkBjR,IAAW+Q,SAASA,SACtCrP,EAAUyF,IAAGlF,WAAW3G,EAAS2V,IACnCzZ,IAAE6E,QAAQqF,GANhB,iEAOiCmP,EAAkBnP,GAPnD,uBAOU7B,EAPV,EAOUA,aAPV,kBAQSA,GART,4CAF4C,yDAoCjC/C,EAtBStB,YAAY,CAChChK,KAAM,WACNiK,aAAa,2BACRC,KADO,IAEVqV,SAAU,KAEZxU,cAAe,SAACC,GACdC,YAAuBD,EAASsU,GAAa,SAACzc,EAAO4H,GACnD5H,EAAM0c,SAAW9U,EAAOX,WAE1BmB,YAAuBD,EAASwU,GAAgB,SAAC3c,EAAO4H,GAClDA,EAAOX,UACTjH,EAAM0c,SAAN,2BAAsB1c,EAAM0c,UAAa9U,EAAOX,SAChD2H,IAAMiO,QAAQ,iBAAkB,CAC9BC,UAAW,IACX/W,aAAa,WAOc0C,QAExB9L,EAAU,CAAE8f,cAAaE,kBCvDhCtW,EAAgB,CACpBC,IAAK,WACLC,QAAS,EACTC,YACAC,UAAW,CAAC,WAAY,YAGX+B,cAAenC,EAAeoC,GCR9BA,O,iCCJf,4BAKA,SAASsU,IAKP,OAJuB3K,aACrB,SAACpS,GAAD,OAAWA,EAAMgd,IAAIzV,eAAeA,kBAexCwV,EAAqBE,IATrB,SAAgB3W,GACd,IAAMO,EAAW0O,cAKjB,OAJ0B/P,uBACxB,SAACtE,GAAD,OAAW2F,EAAS6B,IAAWX,kBAAkB,CAAEzB,MAAKpF,aACxD,CAAC2F,EAAUP,KAMAyW,O,uGCpBA,SAASG,EAAeC,EAAQC,GAC7C,IAAM1a,EAAM2a,iBAAO,IADgC,EAEvBza,mBAAS,GAFc,mBAE5C0a,EAF4C,KAEpCC,EAFoC,KAQnD,OALKC,IAAQ9a,EAAI4K,QAAQ8P,KAAMA,KAC7B1a,EAAI4K,QAAU,CAAEpM,MAAOic,IAAUC,QAEjCG,EAAUD,EAAS,IAEd5a,EAAI4K,QAAQpM,Q,iCCXrB,mBAOMnB,EAAM,CACVsL,QAAS,WACP,OAAOC,IACJ7B,KAAK,CAAEK,QAAS,sBAAwB,CAAEH,OAAQ,CAAEP,QAAS,KAC7Dc,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAM8J,EAAEC,aAAazI,eAKhCtG,EAASiP,YAAa,CAC1BvO,KAAM,UACN4J,KAAM,wBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAMD,OAAOpJ,YAEpCpG,EAAUmP,YAAoB,CAAErP,SAAQsD,QAOxCqC,EAAe,CACnBrC,MACAtD,SACAE,UACA8L,QAVcsD,YAAoB,CAClCtP,SACAE,UACAqP,SAAS,KAUI5J,O,4PC7BA,SAASqb,EAAT,GASX,IARFnY,EAQC,EARDA,KACAyN,EAOC,EAPDA,UACAvO,EAMC,EANDA,OACA9D,EAKC,EALDA,QACAoF,EAIC,EAJDA,OACA4X,EAGC,EAHDA,aACAC,EAEC,EAFDA,UACAC,EACC,EADDA,cAEA,OACE,cAACC,EAAA,EAAD,CACElY,MAAM,gBACNL,KAAMA,EACNd,OAAQA,EACRsZ,cAAc,EACdC,UAAU,OACVjY,OAAQA,EANV,SAQGiN,EACC,cAACvU,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,cAACwY,EAAA,EAASrW,OAAV,6BAIJ,qCACE,cAACpC,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,cAACwY,EAAA,EAASC,KAAV,CAAezX,QAASme,EAAxB,+BAKHD,EACC,cAACnf,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,WACE,cAACwY,EAAA,EAAS+G,QAAV,IACA,cAAC/G,EAAA,EAASC,KAAV,CAAezX,QAASke,EAAxB,kCAKF,KACJ,cAACnf,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,WACE,cAACwY,EAAA,EAAS+G,QAAV,IACA,cAACC,EAAD,CAAavd,QAASA,EAAS4D,SAAUoZ,cASvD,SAASO,EAAT,GAA2D,IAA3BC,EAA0B,EAAnCxd,QAAuB4D,EAAY,EAAZA,SAAY,EAC1B6Z,YAC5BD,EAAald,QAAO,SAACod,GAAD,MAAgB,gBAATA,EAAE3gB,OAFyB,mBACjDiD,EADiD,KACxC2d,EADwC,KAIlDna,EAAOoa,EAAoB5d,GAyBjC,OACE,qCACE,cAACuW,EAAA,EAASrW,OAAV,2BACA,cAAC,IAAD,CAAiB2d,UAnBrB,SAAmBC,GAEjB,GAAKA,EAAOC,YAAZ,CAIA,IAAMC,EAdQ,SAACC,EAAMC,EAAYC,GACjC,IAAML,EAASM,MAAMC,KAAKJ,GADoB,EAE5BH,EAAOQ,OAAOJ,EAAY,GAArCK,EAFuC,oBAK9C,OAFAT,EAAOQ,OAAOH,EAAU,EAAGI,GAEpBT,EASOU,CACZxe,EACA8d,EAAOW,OAAO5E,MACdiE,EAAOC,YAAYlE,OAGrB8D,EAAWK,GACXpa,EAASoa,EAAM1a,KAAI,SAACob,GAAD,OAAOA,EAAE3hB,SAM1B,SACE,cAAC,IAAD,CAAW4hB,YAAY,qBAAqBC,YAAapb,EAAzD,SACG,SAACqb,GAAD,OACC,8CAAK7c,IAAK6c,EAASC,UAAcD,EAASE,gBAA1C,cACG/e,EAAQsD,KAAI,SAAC0b,EAAQnF,GAAT,OACX,cAAC,IAAD,CAEEoF,YAAaD,EAAOjiB,GACpB8c,MAAOA,EAHT,SAKGrW,GAJIwb,EAAOjiB,OAOf8hB,EAASzN,wBASxB,IAAMwM,EAAsB,SAAC5d,GAAD,OAC1B,SAAyB6e,EAAUK,EAAUC,GAC3C,IAAMH,EAAShf,EAAQmf,EAAOV,OAAO5E,OACrC,OACE,yDACE7X,IAAK6c,EAASC,UACVD,EAASO,gBACTP,EAASQ,iBAHf,aAKE,cAACxhB,EAAA,EAAKO,MAAN,aACEiI,KAAK,WACLtJ,GAAE,wBAAmBiiB,EAAOjiB,IAC5BJ,MAAOqiB,EAAOpC,OAAO,WACjBoC,EAAOM,8BCzHN,SAASC,EAAT,GAcX,IAbFlN,EAaC,EAbDA,UACAmN,EAYC,EAZDA,UACAC,EAWC,EAXDA,iBAWC,IAVDC,MACEC,EASD,EATCA,aACAC,EAQD,EARCA,WACAC,EAOD,EAPCA,eACAC,EAMD,EANCA,cACAC,EAKD,EALCA,8BACAC,EAID,EAJCA,kBAEFC,EAEC,EAFDA,WACAhhB,EACC,EADDA,SACC,EAC6CiD,mBAAS,MADtD,mBACMge,EADN,KACuBC,EADvB,OAE2Bje,mBAAS,MAFpC,mBAEM4B,EAFN,KAEcsc,EAFd,KAUD,OACE,kCACGT,EAAarc,KAAI,SAAC+c,GAAD,OAChB,8CAAQA,EAAYC,uBAApB,aACGD,EAAY1X,QAAQrF,KAAI,SAAC0b,GAAD,OACvB,8CACMA,EAAOuB,kBADb,IAEEpiB,UAAW6gB,EAAOwB,gBAClBC,cAAe,SAAC5c,GAAD,OAd3B,SAAiCA,EAAGmb,GAClCnb,EAAE6c,iBACFN,EAAUvc,EAAEC,QACZqc,EAAmBnB,GAWa2B,CAAwB9c,EAAGmb,IAHnD,SAKE,eAAClhB,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,WACGihB,EAAOpC,OAAO,UACdoC,EAAO4B,UACNZ,EACE,cAAC,IAAD,eAAuBD,MAEvB,cAAC,IAAD,eACMA,MAIR,MAGHf,EAAO6B,QACN,cAAC9iB,EAAA,EAAD,yBACEC,GAAG,QACCghB,EAAO8B,wBAFb,IAGE7b,MAAM,cAHR,SAKE,+BACG+Z,EAAO6B,QACN7B,EAAO+B,SACL/B,EAAOgC,aACL,cAAC,IAAD,IAEA,cAAC,IAAD,IAGF,cAAC,IAAD,IAGF,QAIJ,oBAMbxB,EACGG,EAAarc,KAAI,SAAC+c,GAAD,OACf,wDACMA,EAAYC,oBAAoB,CAClCniB,UAAW,mBAFf,IAIEyH,IAAKya,EAAYC,sBAAsB1a,IAAM,YAE5Cya,EAAY1X,QAAQrF,KAAI,SAAC0b,GAAD,OACvB,8CACMA,EAAOuB,kBADb,IAEEpiB,UAAW6gB,EAAOwB,gBAFpB,SAIGxB,EAAOiC,UAAYjC,EAAOpC,OAAO,UAAY,eAKtD,KACH3d,EACD,cAAC8d,EAAD,CACEnY,OAAMsb,EACN7N,UAAWA,EACXvO,OAAQA,EACR9D,QAAS4f,EACTxa,OAAQ,WACN+a,EAAmB,OAErBnD,aAAc6C,EACd5C,WACiB,OAAfiD,QAAe,IAAfA,OAAA,EAAAA,EAAiBgB,cACkB,IAAnChB,EAAgBiB,eACZ,WACE,IAAMpkB,EAAE,OAAGmjB,QAAH,IAAGA,OAAH,EAAGA,EAAiBnjB,GAC5BkjB,GAAW,SAACmB,GACV,OAAIA,EAAGpT,SAASjR,GACPqkB,EAAG9gB,QAAO,SAAC+gB,GAAD,OAAOA,IAAMtkB,KAClBqkB,EAAG9Q,OAAO,CAACvT,OAE3B+iB,EAAc/iB,GACdojB,EAAmB,OAErB,KAENjD,cAAeuC,OClIvB,SAAS6B,EAAuBC,EAAMC,EAAMC,GAC1C,MAAO,CAACF,EAAKpgB,OAAOsgB,GAAWD,EAAKrgB,OAAOsgB,IAG7C,SAASC,EAAiBC,EAAIC,GAI5B,IAJiC,IAAD,IAC5B1b,EAAC,UAAGiR,OAAOwK,UAAV,aAAG,EAAYlG,MAAM,IAAInb,OAAOuhB,SACjCC,EAAC,UAAG3K,OAAOyK,UAAV,aAAG,EAAYnG,MAAM,IAAInb,OAAOuhB,SAE9B3b,EAAEkV,QAAU0G,EAAE1G,QAAQ,CAC3B,IAAI2G,EAAK7b,EAAE8b,QACPC,EAAKH,EAAEE,QAEPE,EAASH,EAAG3K,cACZ+K,EAASF,EAAG7K,cAGhB,GAAI8K,EAASC,EACX,OAAO,EAET,GAAIA,EAASD,EACX,OAAQ,EAGV,GAAIH,EAAKE,EACP,OAAO,EAET,GAAIA,EAAKF,EACP,OAAQ,EAKZ,OAAO7b,EAAEkV,OAAS0G,EAAE1G,O,4BC3BhBgH,EAAmB,CAEvB,CACErlB,GAAI,cAGJmD,OAAQ,gBAAGmiB,EAAH,EAAGA,8BAAH,OACN,8BACE,cAACC,EAAD,eAA2BD,SAK/B9hB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,8BACE,cAAC4hB,EAAD,eAA2B5hB,EAAI6hB,mCAMjCC,EAAuBJ,EAAiB9e,KAAI,SAACoa,GAAD,OAAOA,EAAE3gB,MAE5C,SAAS0lB,EAAT,GASX,IAROC,EAQR,EARD1iB,QACQ2iB,EAOP,EAPD7iB,OACQ8iB,EAMP,EAND/Q,OACSgR,EAKR,EALDC,QACSC,EAIR,EAJDvH,QACUwH,EAGT,EAHDC,SACQC,EAEP,EAFDC,OACA9Q,EACC,EADDA,UACC,EACgBoL,YAAekF,GAAzB7iB,EADN,sBAEmEG,mBAClE,kBAqJJ,SAAsByiB,GACpB,IAAIU,GAAY,EACZ5D,GAAY,EAEhB,SAAS6D,EAAYrjB,GACnB,OAAOA,EAAQsD,KAAI,SAACggB,GAClB,IAAIC,EAAG,eAAQD,GAEX7gB,IAAE+gB,IAAID,EAAK,YAAWH,GAAY,GAEjC3gB,IAAE+gB,IAAID,EAAK,CAAC,qBACX9gB,IAAE+gB,IAAID,EAAK,UAAWA,EAAIvN,gBAAiB,EAC1CuN,EAAIvN,gBAAiB,IACD,IAAvBuN,EAAIvN,iBAA0BwJ,GAAY,GAEzC/c,IAAE+gB,IAAID,EAAK,CAAC,qBACX9gB,IAAE+gB,IAAID,EAAK,CAAC,cAAeA,EAAIpC,gBAAiB,EAC/CoC,EAAIpC,gBAAiB,GAE5B,IAAMsC,EAAWhhB,IAAEihB,IAAIC,EAAN,OAAiBJ,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAKE,UACnCA,IACFF,EAAIK,OAAJ,kCACKH,QADL,IACKA,OADL,EACKA,EAAUG,QACVL,EAAIK,SAlBkB,IAqBrBzlB,EAAsBolB,EAAtBplB,UAAWylB,EAAWL,EAAXK,OAqCnB,OApCAL,EAAIM,cAAgB,CAClB1lB,EACA2lB,EAAqB,OAACF,QAAD,IAACA,OAAD,EAACA,EAAQG,YAC9BC,KAAK,KACPT,EAAI/C,gBAAkB,CACpBriB,EACA2lB,EAAqB,OAACF,QAAD,IAACA,OAAD,EAACA,EAAQG,YAC9BC,KAAK,KAEPT,EAAIU,kBAAoBxhB,IAAEC,WAAF,OAAa+gB,QAAb,IAAaA,OAAb,EAAaA,EAAUQ,mBAC3CR,EAASQ,kBACT,SAACzjB,GAAD,OAAWA,GAEViC,IAAE+gB,IAAID,EAAK,UACdA,EAAIhjB,KAAO,YAAuD,IAApDC,EAAmD,EAAnDA,MAAmD,IAA5Cwe,OACbkF,GAAiBD,EADwC,EAAlCA,mBACYzjB,EADsB,EAAfojB,QAEhD,OAAOnhB,IAAEoN,YAAYqU,GAAkB,KAAOA,IAG7CX,EAAIpC,gBAAmB1e,IAAE+gB,IAAID,EAAK,gBACrCA,EAAIY,WAAa,YAIV,IAHL3jB,EAGI,EAHJA,MAGI,IAFJwe,OAAUiF,EAEN,EAFMA,kBAAmBL,EAEzB,EAFyBA,OAAQQ,EAEjC,EAFiCA,UAGrC,GADI,EADJ1jB,IAAO2jB,YAGwB,gBAAdD,GACD,UAAdA,EAEA,MAAO,GACT,IAAMF,EAAiBD,EAAkBzjB,EAAOojB,GAChD,MAAM,GAAN,OAAUM,GAAV,OAAyC,gBAAdE,EAA8B,IAAM,MAI/D3hB,IAAE+gB,IAAID,EAAK,aAAYA,EAAIvjB,QAAUqjB,EAAYE,EAAIvjB,UAClDujB,KAIX,IAAMvjB,EAAUqjB,EAAY,GAAD,OAAKjB,EAAL,YAA0BM,KAC/C9C,EAAand,IAAEsY,QAAQ/a,GAE7B,MAAO,CACLA,QAASA,EACTskB,UAAW1E,EAAWtc,KAAI,SAACoa,GAGzB,OAFKA,EAAE3gB,IAAO0F,IAAE6L,SAASoP,EAAEvd,WACzBgH,QAAQod,KAAK,uCAAwC7G,GAChDA,EAAE3gB,IAAM2gB,EAAEvd,YAEnBqkB,cAAe/hB,IAAEgiB,MAAM7E,GAAY,SAAClC,GAAD,OAAQ,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG3gB,MAAH,OAAS2gB,QAAT,IAASA,OAAT,EAASA,EAAGvd,aACtDqf,YACA4D,aApOMsB,CAAahC,KACnB,CAACA,IAFK1iB,EAFP,EAEOA,QAASskB,EAFhB,EAEgBA,UAAWE,EAF3B,EAE2BA,cAAehF,EAF1C,EAE0CA,UAAW4D,EAFrD,EAEqDA,UAKhDuB,EAAY7f,uBAAY,SAAC/H,GAAD,OAAQynB,EAAcznB,KAAK,CAACynB,IAPzD,EASsCvkB,mBAAQ,WAC7C,IAAI2kB,EAAe,GAGnB,GAFI1B,GAAU0B,EAAa/J,KAAK,gBAE3B/a,EAAOsb,OACV,MAAO,CACLyJ,cAAepiB,IAAEyK,WAAWsV,EAAsBoC,GAClDE,YAAaR,GAGjB,IAAMS,EAAuBtiB,IAAEyK,WAAWpN,EAAQwkB,GAC9CS,EAAqB3J,QACvBjU,QAAQod,KAAK,qCAAsCQ,GAGrD,IAAMC,EAAkB,UAAOJ,EAAP,YAAwB9kB,IAChD,MAAO,CACL+kB,cAAepiB,IAAEyK,WAAWoX,EAAWU,GACvCF,YAAaE,KAEd,CAACllB,EAAQwkB,EAAWpB,IApBf2B,EATP,EASOA,cAAeC,EATtB,EASsBA,YAsBjBG,EAAWngB,uBACf,SAAC4Y,GAAD,OAAQjb,IAAE6L,SAASoP,GAAK,CAAE3gB,GAAI2gB,EAAGwH,MAAM,GAAUxH,IACjD,IAGI7L,EAAS5R,mBACb,kBACE2iB,EACIngB,IAAE0iB,QAAQvC,GACRA,EAAUtf,IAAI2hB,GACd,CAACA,EAASrC,IACZ,KACN,CAACqC,EAAUrC,IAGPwC,EAAcnlB,mBAAQ,WAO1B,OANiB8iB,EAEbtgB,IAAE0iB,QAAQpC,GACVA,EACA,CAACA,GAHD,IAKWziB,QAAO,SAAC+gB,GAAD,cAAO,UAACsD,EAAUtD,UAAX,aAAC,EAAcF,qBAC3C,CAAC4B,EAAY4B,IAtDf,EAuD6BlH,YAAe2H,GAvD5C,mBAuDM5J,EAvDN,KAuDeyE,EAvDf,KAyDKgD,EAAWhjB,mBACf,kBAAOwC,IAAEyN,SAAS8S,GAAeA,EAAc,KAC/C,CAACA,IAGGF,EAAU7iB,mBACd,kBACG4iB,EAAkBpgB,IAAE0iB,QAAQtC,GAAcA,EAAa,CAACA,GAA3C,KAChB,CAACA,IAGH,OAAO5iB,mBAAQ,WACb,MAAO,CACLD,UACA2kB,YACAvB,YACA5D,YACA9Y,aAAc,CACZme,gBACAC,cACAjT,SACA2J,QAASnJ,EAAY,GAAKmJ,EAC1BsH,QAASzQ,EAAY,GAAKyQ,EAC1BG,YAEFhD,gBAED,CACD6E,EACA9kB,EACAijB,EACAH,EACA6B,EACAnJ,EACAgE,EACA4D,EACAyB,EACAxS,EACA4N,EACApO,IAIJ,IAAM8R,EAAY,CAChB0B,OAAQ,CACNzB,OAAQ,CACNG,UAAW,CACTuB,WAAY,UAGhBrB,kBAAmB,SAACzjB,GAAwB,IAAjBojB,EAAgB,uDAAP,GAC9B1R,EAAIzP,IAAE8iB,SAAS/kB,GACnB,GAAIiC,IAAE+iB,MAAMtT,GAAI,MAAO,GAFkB,MAGH0R,EAA9ByB,OAAUI,GAHuB,aAGV,GAHU,GAGvBA,SAIlB,OAHIA,IACFvT,EAAIA,EAAEwT,QAAQD,IAETvT,IAGXyT,SAAU,CACR/B,OAAQ,CACNG,UAAW,CACTuB,WAAY,UAGhBrB,kBAAmB,SAACzjB,GAAwB,IAAjBojB,EAAgB,uDAAP,GAC9B1R,EAAIzP,IAAE8iB,SAAS/kB,GACnB,GAAIiC,IAAE+iB,MAAMtT,GAAI,MAAO,GAFkB,MAGH0R,EAA9ByB,OAAUI,GAHuB,aAGV,GAHU,GAGvBA,SAIlB,OAHIA,IACFvT,EAAIA,EAAEwT,QAAQD,IAET,IAAMvT,KAKboQ,EAAwBxgB,IAAMC,YAClC,WAA6BC,GAAS,IAAnC4jB,EAAkC,EAAlCA,cAAkBC,EAAgB,iCAC7BC,EAAahkB,IAAM6a,SACnBoJ,EAAc/jB,GAAO8jB,EAM3B,OAJAhkB,IAAM+W,WAAU,WACdkN,EAAYnZ,QAAQgZ,cAAgBA,IACnC,CAACG,EAAaH,IAGf,mCACE,mCAAOvf,KAAK,WAAWrE,IAAK+jB,GAAiBF,SAyFrD,IAAMG,EAAiC,CACrCC,MAAO,aACPC,KAAM,YACNC,OAAQ,eAEJC,EAAgC,CACpCC,OAAQ,eACRC,IAAK,YACLC,OAAQ,eACRC,WAAY,iBACZC,QAAS,kBAGX,SAAS3C,IAAuC,IAAjBC,EAAgB,uDAAJ,GACrC2C,EAAa,GACjB,GAAIjkB,IAAE6E,QAAQyc,GAAY,OAAO2C,EACjC,IAAMpB,EAAa7iB,IAAEihB,IACnBsC,EADiB,OAEjBjC,QAFiB,IAEjBA,OAFiB,EAEjBA,EAAWuB,YAETA,GAAYoB,EAAW7L,KAAKyK,GAChC,IAAMqB,EAAWlkB,IAAEihB,IAAI0C,EAAN,OAAqCrC,QAArC,IAAqCA,OAArC,EAAqCA,EAAW4C,UAEjE,OADIA,GAAUD,EAAW7L,KAAK8L,GACvBD,ECjRT,IAAME,EAAY,CAChBlqB,OFYK,SAAoBmqB,EAAMC,EAAMrF,GAAW,IAAD,EACtBH,EAAuBuF,EAAMC,EAAMrF,GADb,0BACxCvb,OADwC,MACpC,GADoC,SAE/C,OAAOwb,EAAiBxb,OAFuB,MAC5B,GAD4B,IEX/C6gB,OFgBK,SAAoBF,EAAMC,EAAMrF,GACrC,SAASuF,IAAsB,IAAT9U,EAAQ,uDAAJ,GACxB,MAAiB,kBAANA,EACFiF,OAAOjF,GAAG+U,SAAS,IAErB/U,EALsC,MAOtBoP,EAAuBuF,EAAMC,EAAMrF,GAPb,0BAOxCvb,OAPwC,MAOpC,GAPoC,SAOhC4b,OAPgC,MAO5B,GAP4B,EAQ/C,OAAOJ,EAAiBsF,EAAa9gB,GAAI8gB,EAAalF,KEvBtDoF,QF0BK,SAAqBL,EAAMC,EAAMrF,GAAW,IAAD,EACjCH,EAAuBuF,EAAMC,EAAMrF,GADF,mBAEhD,OAFgD,YEvB5C0F,EAAmB,SAACC,GACxB,OAAOA,EAAK1mB,IAAIkgB,WAAawG,EAAK1mB,IAAI2jB,WAClC,CAAElmB,UAAW,oBAAsBipB,EAAKpI,OAAO6E,eAC/C,IAGAwD,EAAoB,aACpBC,EAAa,GAEJ,SAAS5nB,EAAT,GA2BX,IA1BOgjB,EA0BR,EA1BD1iB,QA0BC,IAzBDF,OAAQ6iB,OAyBP,MAzBmB2E,EAyBnB,EAxBY1E,EAwBZ,EAxBD2E,YACgBxE,EAuBf,EAvBDyE,eACiBxE,EAsBhB,EAtBDyE,gBACgB5E,EAqBf,EArBD6E,eACA3mB,EAoBC,EApBDA,KACAsR,EAmBC,EAnBDA,UAmBC,IAlBDsV,qBAkBC,MAlBe,GAkBf,MAjBDrlB,wBAiBC,MAjBkB+kB,EAiBlB,MAhBDO,mBAgBC,MAhBaP,EAgBb,MAfDQ,oBAeC,MAfcV,EAed,MAdDW,uBAcC,aAbDC,qBAaC,aAZDC,wBAYC,aAXDC,yBAWC,aAVDC,yBAUC,aATDpnB,gBASC,aARDnE,aAQC,MARO,UAQP,EAPDwrB,EAOC,EAPDA,QACAC,EAMC,EANDA,QACAC,EAKC,EALDA,UACAC,GAIC,EAJDA,aACAC,GAGC,EAHDA,cAGC,KAFDC,6BAEC,OAFsBnB,EAEtB,GADEtnB,GACF,+XACK0oB,GAAW9L,iBAAO,MAElB+L,GAAyBzoB,mBAC7B,kBAAMoS,KAAa,OAACtR,QAAD,IAACA,OAAD,EAACA,EAAMqa,UAC1B,QAACra,QAAD,IAACA,OAAD,EAACA,EAAMqa,OAAQ/I,IALhB,GASCoQ,EAAW,CACTziB,QAAS0iB,EACT5iB,OAAQ6iB,EACR9Q,OAAQ+Q,EACRE,QAASD,EACTrH,QAASuH,EACTE,SAAUD,EACVG,OAAQoF,GACRlW,UAAWqW,KATP1oB,GARP,GAQOA,QAASojB,GARhB,GAQgBA,UAAW5D,GAR3B,GAQ2BA,UAAW9Y,GARtC,GAQsCA,aAAcuZ,GARpD,GAQoDA,WAY/C0I,GAAQ1oB,mBAAQ,WACpB,IAAM2oB,EAAI7nB,GAAQ,GAClB,OAAOsR,IAAcuW,EAAExN,OACnBwN,EAAEtY,OAAO8N,MAAMuJ,GAAekB,KAAK,CAAEC,WAAW,KAChDF,IACH,CAACvW,EAAWtR,EAAM4mB,IAEfjI,GAAQqJ,mBACZ,CACE/oB,WACAe,KAAM4nB,GACNjiB,gBACAsiB,gBAAiBjB,EACjBC,mBACAC,oBACAgB,sBAAuBf,EACvBtB,aAEFsC,aACAC,iBACAC,aACAC,YACAC,cACAC,gBAGAC,GASE9J,GATF8J,cACAC,GAQE/J,GARF+J,KACAC,GAOEhK,GAPFgK,SACAC,GAMEjK,GANFiK,WACAC,GAKElK,GALFkK,aACA/J,GAIEH,GAJFG,eACAgK,GAGEnK,GAHFmK,iBACAC,GAEEpK,GAFFoK,UACAC,GACErK,GADFqK,iBAGMlF,GAAuCne,GAAvCme,cAAeC,GAAwBpe,GAAxBoe,YAAajT,GAAWnL,GAAXmL,OAmDpC,OAlDAgH,qBAAU,WACRgR,GAAiBhF,MAChB,CAACA,GAAegF,KAEnBhR,qBAAU,WACRgH,GAAeiF,MACd,CAACA,GAAajF,KAEjBhH,qBAAU,WACRiR,GAAUjY,MACT,CAACA,GAAQiY,KAEZjR,qBAAU,WAKR2P,GAAoB,OAACuB,SAAD,IAACA,QAAD,EAACA,GAAkBC,QAJpB,SAAbC,EAAcR,EAAM/oB,GACxB,IAAMwpB,EAAUxpB,EAAIC,SAAW,CAACD,EAAIC,UAAY,GAChD,OAAO8oB,EAAKnZ,OAAO4Z,EAAZ,OAAqBxpB,QAArB,IAAqBA,OAArB,EAAqBA,EAAKypB,QAAQH,OAAOC,EAAY,OAEJ,OACzD,CAACzB,GAAsBuB,KAiCxB,cAACjsB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,WACG+C,EACC,eAAChD,EAAA,EAAD,WACE,cAACC,EAAA,EAAD,UACE,cAACqsB,EAAD,CACEztB,MAAOA,EACP0V,UAAWA,EACX8V,QAASA,EACTC,QAASA,EACTiC,SAAa,OAAJtpB,QAAI,IAAJA,OAAA,EAAAA,EAAMqa,SAAU,EACzBkP,MAAOZ,GAASppB,QAAO,SAACuK,GAAD,OAAQA,EAAE+V,aAAWxF,WAGhD,cAACrd,EAAA,EAAD,UACE,cAACwsB,EAAD,CACElC,UAAWA,EACXC,aAAcA,GACdjW,UAAWA,SAIf,KAEJ,cAACvU,EAAA,EAAD,UACE,cAACC,EAAA,EAAD,UACE,eAAC,IAAD,uCACMyrB,MADN,IAEEgB,UAAQ,EACRC,OAAK,GACD1qB,IAJN,IAKEiC,IAAKymB,GALP,UAOE,cAAClJ,EAAD,CACElN,UAAWA,EACXqN,MAAOA,GACPF,UAAWA,GACXC,iBApEd,WAOE,IAHA,IAAIiL,EAAM,CAAC,UACPjB,EAAOhB,GAAS7b,QAAQ+d,iBAAiB,YAEpCjM,EAAI,EAAGA,EAAI+K,EAAKrO,OAAQsD,IAC/B,IAAI+K,EAAK/K,GAAGkM,UAAUC,SAAS,iBAA/B,CAIA,IAHA,IAAInqB,EAAM,GACRoqB,EAAOrB,EAAK/K,GAAGiM,iBAAiB,UAEzBI,EAAI,EAAGA,EAAID,EAAK1P,OAAQ2P,IAAK,CACpC,IAAMC,EAAOF,EAAKC,GAAGE,UAClBC,WAAW,IAAK,MAChBA,WAAW,IAAK,MAChBC,OACHzqB,EAAIma,KAAJ,WAAamQ,EAAb,MAGFN,EAAI7P,KAAKna,EAAIsjB,KAAK,MAEpB,IAAMoH,EAAU,IAAIC,KAAK,CAACX,EAAI1G,KAAK,OAAQ,CACzC3d,KAAM,WACNilB,SAAU,UAGZC,IAAUC,OAAOJ,EAAS,mBA0CdnL,WAAYA,GALd,SAOGmD,IAAa0E,EACZ,cAAC2D,EAAD,CAAoB7B,kBAClB,OAEN,gCACGH,GAAKnmB,KAAI,SAAC5C,EAAKgrB,GAAN,OACR,cAACC,EAAD,CAGIjrB,MACAipB,cACAtX,YACAkW,iBACAjmB,mBACAslB,cACAC,gBATJ,kBACkB6D,SAarBtI,KAAc0E,EACb,gCACE,cAAC2D,EAAD,CAAoB7B,oBAEpB,kBASlB,SAASW,EAAT,GAAgE,IAAvClC,EAAsC,EAAtCA,UAAWC,EAA2B,EAA3BA,aAAcjW,EAAa,EAAbA,UAChD,IAAKgW,GAAahW,EAAW,OAAO,KACpC,IAAM2Y,EAAO1C,GAA8B,iBAC3C,OACE,cAACzpB,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,yBACVgH,KAAK,KACLpG,QAASspB,EACTpjB,MAAM,0BALR,SAOG+lB,IAKP,SAASZ,EAAT,GAOI,IANFztB,EAMC,EANDA,MACA0tB,EAKC,EALDA,QACAC,EAIC,EAJDA,MACAjY,EAGC,EAHDA,UACA+V,EAEC,EAFDA,QACAD,EACC,EADDA,QAEM6C,EAAI,UAAMX,EAAN,YAAiB1tB,GAAjB,OACR0tB,EAAU,GAAKA,IAAYC,EAA3B,YAAwCA,EAAxC,WAAyD,IADjD,OAEPjY,EAAY,eAAiB+V,EAAU,IAAM,IAE1CrpB,EAAUopB,GAAoB,KAC9BxjB,GAAWwjB,EAEjB,OACE,sBAAMhqB,UAAU,wBAAhB,SACE,cAACU,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,aACVgH,KAAK,KACLpG,QAASA,EACT4F,SAAUA,EACVM,MAAM,qBANR,SAQG+lB,MAMT,SAASW,EAAT,GAQI,IAPFjrB,EAOC,EAPDA,IACAmnB,EAMC,EANDA,aACAxV,EAKC,EALDA,UACAsX,EAIC,EAJDA,WACA/B,EAGC,EAHDA,YACAW,EAEC,EAFDA,cACAjmB,EACC,EADDA,iBAIA,OAFAqnB,EAAWjpB,GAGT,wDACE3B,QAAS,WACHwpB,GAAe7nB,EAAIkrB,mBAAmBlrB,EAAImrB,aAEhDC,cAAe,kBAAMxpB,EAAiB5B,EAAIC,YACtCD,EAAIknB,eACJA,EAAYlnB,IANlB,aAQGA,EAAIqrB,MAAMzoB,KAAI,SAAC8jB,EAAMsE,GAAP,OACb,cAACM,EAAD,CAEQtrB,MAAK0mB,OAAMS,eAAcxV,aAFjC,mBACmBqZ,UAQ3B,SAASM,EAAT,GAA4D,IAAD,EAAtCtrB,EAAsC,EAAtCA,IAAK0mB,EAAiC,EAAjCA,KAAMS,EAA2B,EAA3BA,aACxBrnB,EADmD,EAAb6R,YAEjC,UAAI3R,EAAIC,gBAAR,aAAI,EAAcmoB,WACzB,cAAC,IAAD,IACE1B,EAAKxG,UAEP,qCACE,gDACMlgB,EAAIurB,6BADV,IAEEltB,QAAS,SAAC8E,GACRA,EAAEmB,kBACFtE,EAAIurB,4BAA4BltB,QAAQ8E,IAJ5C,SAOGnD,EAAI2jB,WAAa,cAAC,IAAD,IAAwB,cAAC,IAAD,OACpC,IACP+C,EAAKxK,OAAO,QAVf,KAU0Blc,EAAIypB,QAAQ/O,OAVtC,OAYEgM,EAAK8E,aAEP9E,EAAKxK,OAAO,cAEdwK,EAAK1mB,IAAIkgB,UAAY,KAEnBwG,EAAKxK,OAAO,QAGhB,OACE,0DACMwK,EAAKS,gBADX,IAEE1pB,UAAWipB,EAAKpI,OAAO6E,eACnBgE,EAAaT,IAHnB,aAKG5mB,KAKP,SAASirB,EAAT,GAAyC,IAAjB7B,EAAgB,EAAhBA,aACtB,OACE,mCACGA,EAAatmB,KAAI,SAAC6oB,GAAD,OAChB,8CAAQA,EAAMC,oBAAoB,CAAEjuB,UAAW,mBAA/C,aACGguB,EAAMxjB,QAAQrF,KAAI,SAAC0b,GAAD,OACjB,8CAAQA,EAAOqN,kBAAf,IAAiCluB,UAAW6gB,EAAOwB,gBAAnD,SACGxB,EAAOpC,OAAO,0B,wMCrUtB,SAAS9gB,EAAT,GAcH,IAAD,IAbDC,OAAUU,EAaT,EAbSA,KAAM8C,EAaf,EAbeA,UAAW0L,EAa1B,EAb0BA,SAa1B,IAZDhP,QACSqwB,GAWR,aALG,GAKH,GAXC9c,MACS+c,EAUV,EAVC5hB,QACQ6hB,EAST,EATCvgB,OACWwD,EAQZ,EARCvD,UACWugB,EAOZ,EAPCrgB,UACWsgB,EAMZ,EANCnd,UAMD,IAJDod,cAIC,MAJQ,CAAE/mB,IAAK,OAAQpF,MAAO,GAI9B,MAHDosB,eAGC,MAHS,SAAC7vB,GAAD,OAAQA,GAGjB,MAFD8vB,uBAEC,MAFiB,gBAAGpwB,EAAH,EAAGA,KAAgBM,EAAnB,EAAShB,OAAUgB,GAAMsJ,EAAzB,EAAyBA,KAAzB,gBACb5D,IAAEqqB,UAAUrwB,GADC,YACQM,EADR,YACcsJ,IAC/B,EACD,IAAK3D,qBAAWuI,GACd,MAAM,IAAIlB,MAAJ,wBAGR,IAAMgjB,EAAatqB,IAAEC,WAAW6pB,GA0G1BS,EAASvqB,IAAEC,WAAW8pB,GAEtBS,EAAY,WAAyB,IAAD,2DAAP,GAAVC,EAAiB,EAArBnwB,GACbA,EAAK6vB,EAAQM,GACb/mB,EAAW0O,cACXtI,EAAUmF,aAAY,SAACpS,GAAD,OAAW2L,EAAS3L,GAAO+M,SAASE,WAE1D4gB,EAAcroB,uBAClB,SAACgH,GAAD,OAAU3F,EAASqmB,EAAU,aAAEzvB,MAAO+O,KAAStC,KAAK4jB,OACpD,CAACjnB,EAAUpJ,IAGPswB,EAAOL,EAASG,OAAcrgB,EAEpC,OAAO,EAAP,CACEP,WADF,cAEG9J,IAAE0M,UAAU,OAASC,IAAU3S,EAAM,IAAM4wB,GAF9C,uBAGUA,GAHV,GAOIhxB,EAAY,WAAyC,IAAD,2DAAP,GAA1B6wB,EAAiC,EAArCnwB,GAAqC,IAA1B2b,cAA0B,SAClD3b,EAAK6vB,EAAQM,GADqC,EAE5BhrB,oBAAS,GAFmB,mBAEjDorB,EAFiD,KAEzCC,EAFyC,KAGlDpnB,EAAW0O,cACX9Y,EAAS2V,aAAY,SAACpS,GAAD,OAAWC,EAAUiuB,WAAWluB,EAAOvC,MAJV,EAK9BmF,mBAAS,MALqB,mBAKjD2H,EALiD,KAK1C4jB,EAL0C,OAOfR,EAAU,CAAElwB,GAAImwB,IAAjD3gB,EAPgD,EAOhDA,QAAiB4gB,EAP+B,EAOvClhB,OAEXyhB,EAAiB5oB,uBACrB,SAAC/I,GAAD,OACEoK,EAASsJ,EAAa1T,IACnByN,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAIP,OAHAmN,IAAMiO,QACJ0Q,EAAgB,CAAEpwB,OAAMV,OAAQ+hB,EAAQzX,KAAM,aAEzCyX,OAEb,CAAC3X,IAEGwnB,EAAiB7oB,uBACrB,gBAAM/I,EAAN,2BACEoK,EAASsmB,EAAa,2BAAK1wB,GAAN,IAAcgB,GAAIA,MACpCyM,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAIP,OAHAmN,IAAMiO,QACJ0Q,EAAgB,CAAEpwB,OAAMV,OAAQ+hB,EAAQzX,KAAM,aAEzCyX,OAEb,CAAC3X,EAAUpJ,IAGP6wB,EAAiB9oB,uBACrB,kBACEqB,EAASumB,EAAa,CAAE3vB,GAAIA,KACzByM,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAIP,OAHAmN,IAAMiO,QACJ0Q,EAAgB,CAAEpwB,OAAMV,OAAQ,CAAEgB,MAAMsJ,KAAM,aAEzCyX,OAEb,CAAC3X,EAAUpJ,IAGP8wB,IACF9wB,GACFiwB,IACCM,KACW,IAAX5U,IAA+B,IAAXA,GAAoBjW,IAAEoN,YAAY9T,KAC7C,OAAV8N,EAEFgP,qBAAU,WACJgV,GACFV,IACGvjB,MAAM6jB,GACNK,SAAQ,kBAAMP,GAAU,QAE5B,CAACpnB,EAAUgnB,EAAaU,IAE3B,IAAMre,EAAQ1K,uBAAY,WACxB2oB,EAAS,MACTF,GAAU,KACT,IAEGF,EAAOL,EAASG,OAAcrgB,EAEpC,OAAO,EAAP,iBACGrK,IAAE0M,UAAU1S,GAAQV,GADvB,wBAEWixB,IAAWzgB,GAAWshB,IAFjC,uBAGE9xB,GAHF,cAIG0G,IAAE0M,UAAU,OAASC,IAAU3S,EAAM,IAAM4wB,GAJ9C,uBAKUA,GALV,0BAMa5qB,IAAEC,WAAW+M,GAAgBie,OAAiB5gB,GAN3D,0BAOarK,IAAEC,WAAW+pB,GAAgBkB,OAAiB7gB,GAP3D,0BAQarK,IAAEC,WAAWgqB,GAAgBkB,OAAiB9gB,GAR3D,sBASE0C,GATF,GAaFnT,EAAU4P,OAASghB,EAgCnB,MAAO,CACL9wB,YAjPkB,WAA8B,IAAD,2DAAP,GAAO,IAA1Buc,cAA0B,SACzCvS,EAAW0O,cAD8B,EAEnB3S,oBAAS,GAFU,mBAExCorB,EAFwC,KAEhCC,EAFgC,KAGzCve,EAAW0C,aAAY,SAACpS,GAAD,OAAWC,EAAUwuB,UAAUzuB,MACtDiN,EAAUmF,aAAY,SAACpS,GAAD,OAAW2L,EAAS3L,GAAO+M,SAASE,WAJjB,EAKrBrK,mBAAS,MALY,mBAKxC2H,EALwC,KAKjC4jB,EALiC,KAMzC3e,EAAa4C,aAAY,SAACpS,GAAD,OAAW2L,EAAS3L,GAAOwP,cACpDkf,EAAY1R,IAAI2R,oBAEhBd,EAAcroB,uBAClB,SAACgH,GAAD,OAAU3F,EAASomB,EAAczgB,IAAOtC,KAAK4jB,OAC7C,CAACjnB,IAGG0nB,EACJd,IACCO,KACW,IAAX5U,IAA+B,IAAXA,GAAoBjW,IAAE6E,QAAQ0H,MACnC,OAAfF,GACEof,MAASC,KAAKrf,EAAY6d,EAAO/mB,KAAO+mB,EAAOnsB,OAASwtB,IACjD,OAAVnkB,EAEFgP,qBAAU,WACJgV,GACFV,IACGvjB,MAAM6jB,GACNK,SAAQ,kBAAMP,GAAU,QAE5B,CAACpnB,EAAU0nB,EAAWV,IAEzB,IAAMiB,EAAgBtpB,uBAAY,WAChCqB,EAASmmB,KACTmB,EAAS,QACR,CAACtnB,IAEEkoB,EAAWtB,EAAaI,OAAcrgB,EAE5C,OAAO,EAAP,iBACGrK,IAAE0M,UAAUC,IAAU3S,IAASuS,GADlC,cAEGvM,IAAE0M,UAAU,OAASC,IAAU3S,IAAS4xB,GAF3C,wBAGWA,GAHX,wBAIWtB,IAAexgB,GAAWshB,IAJrC,2BAKE/e,GALF,sBAMSrM,IAAEC,WAAW4pB,GAAe8B,OAAgBthB,GANrD,yBAOEkC,GAPF,sBAQEnF,GARF,GA6MAykB,oBAjM0B,WAAkD,IAAD,2DAAP,GAAO,IAA9C5V,cAA8C,SAAtB1M,EAAsB,EAA9B3I,OACvC8C,EAAW0O,cAD0D,EAE/C3S,oBAAS,GAFsC,mBAEpEorB,EAFoE,KAE5DC,EAF4D,KAGrElqB,EAASmZ,aAAe,kBAAMxQ,IAAY,CAACA,IAH0B,EAK5C0F,aAAY,SAACpS,GAAD,OACzCC,EAAUmP,eAAepP,EAAO+D,MANyC,mBAKpE2L,EALoE,KAK1DF,EAL0D,KAQrEvC,EAAUmF,aAAY,SAACpS,GAAD,OAAW2L,EAAS3L,GAAO+M,SAASE,WARW,EASjDrK,mBAAS,MATwC,mBASpE2H,EAToE,KAS7D4jB,EAT6D,KAUrEO,EAAY1R,IAAI2R,oBAElBpe,sBAAYxM,KAAsB,IAAXqV,GACzBvR,QAAQod,KAAR,UAAgB9nB,EAAhB,yBAEF,IAAM0wB,EAAcroB,uBAClB,kBAAMqB,EAASomB,EAAclpB,IAASmG,KAAK4jB,OAC3C,CAACjnB,EAAU9C,IAGPwqB,EACJd,IACCO,KACW,IAAX5U,IAA+B,IAAXA,GAAoBjW,IAAE6E,QAAQ0H,MACnC,OAAfF,GACEof,MAASC,KAAKrf,EAAY6d,EAAO/mB,KAAO+mB,EAAOnsB,OAASwtB,IACjD,OAAVnkB,KACExG,EAEJwV,qBAAU,WACJgV,GACFV,IACGvjB,MAAM6jB,GACNK,SAAQ,kBAAMP,GAAU,QAE5B,CAACpnB,EAAU0nB,EAAWV,IAEzB,IAAMiB,EAAgBtpB,uBAAY,WAChCqB,EAASmmB,KACTmB,EAAS,QACR,CAACtnB,IAEEkoB,EAAW5rB,IAAEC,WAAW6pB,GAAiBY,OAAcrgB,EAE7D,OAAO,EAAP,iBACGrK,IAAE0M,UAAUC,IAAU3S,IAASuS,GADlC,cAEGvM,IAAE0M,UAAU,OAASC,IAAU3S,IAAS4xB,GAF3C,wBAGWA,GAHX,wBAIWtB,IAAexgB,GAAWshB,IAJrC,2BAKE/e,GALF,sBAMSrM,IAAEC,WAAW4pB,GAAe8B,OAAgBthB,GANrD,yBAOEkC,GAPF,sBAQEnF,GARF,GAsJAxN,YACAkyB,gBAlCsB,SAAC,GAAwB,IAAhBC,EAAe,EAArBrc,KACnBA,EAAOqK,aAAe,kBAAMgS,IAAU,CAACA,IACrCviB,EAAWghB,IAAXhhB,OAFsC,EAG1B/J,mBAAS,MAHiB,mBAGvCnF,EAHuC,KAGnC0xB,EAHmC,OAIpBvsB,mBAAS,MAJW,mBAIvC2H,EAJuC,KAIhC4jB,EAJgC,KAK9C5U,qBAAU,WACR4V,EAAM,MACNxiB,EAAO,CAAEkG,KAAMA,IACZvI,MAAM6jB,GACNjkB,MAAK,YAAuB,IAAZzM,EAAW,EAAnBgE,KAAQhE,GACf0xB,EAAM1xB,QAET,CAACoV,EAAMlG,IAZoC,MAkB1C5P,EAAU,CACZU,GAAIA,IAJG2xB,EAfqC,EAe5C7kB,MACO8kB,EAhBqC,EAgB5Cnf,MACGzT,EAjByC,iCAsBxCyT,EAAQ1K,uBAAY,WACxB2oB,EAAS,MACTgB,EAAM,MACNE,MACC,CAACA,IACJ,OAAO,2BAAK5yB,GAAZ,IAAoB8N,MAAOA,GAAS6kB,EAAalf,YAWtC1T,O,iCCvTf,sDAQe,SAASoR,EAAW3Q,EAAQqyB,GAWzC,OAVA,SAASjiB,EAAQpQ,EAAQqyB,GACvB,OAAOnsB,IAAE6Q,UAAU/W,GAAQ,SAAUuhB,EAAQtd,EAAOoF,GAC7CnD,IAAEqa,QAAQtc,EAAOouB,EAAKhpB,MACzBkY,EAAOlY,GACLnD,IAAEyN,SAAS1P,IAAUiC,IAAEyN,SAAS0e,EAAKhpB,IACjC+G,EAAQnM,EAAOouB,EAAKhpB,IACpBpF,MAILmM,CAAQpQ,EAAQqyB,K,gCCnBzB,0H,iCCAA,qBAGe,KAAEC,eAAY3hB,iB,iCCH7B,oBAGM4hB,EAAuB1W,YAAa,CACxC3b,KAAM,iBACNN,YAAa+L,IACb5H,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAG1CsuB,O,iCCTf,oBAGMrpB,EAAmB8E,YAAkB,CACzC9N,KAAM,QACNN,YAAakI,IACb/D,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAG1CiF,O,iCCTf,oBAGMqL,EAAkB8B,YAAkB,CACxCnW,KAAM,cACNJ,UAAW6N,MAGE4G,O,iCCRf,oBAGMC,EAAkBxG,YAAkB,CACxC9N,KAAM,cACNN,YAAa8N,IACb3J,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAG1CuQ,O,iCCTf,mBAGMnQ,EAAkB2J,YAAkB,CACxC9N,KAAM,OACNN,YAAaoV,IACbjR,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAG1CI,O,iCCTf,+HAWe,SAASoZ,EAAT,GAAkD,IAA7Bjd,EAA4B,EAA5BA,GAAI6H,EAAwB,EAAxBA,KAAMQ,EAAkB,EAAlBA,OAAQ2pB,EAAU,EAAVA,OAC5Ctd,EAASoB,YAAQ,CAAE9V,OAAnB0U,KACQtF,EAAe/M,IAAOI,OAAO,CAAEzC,OAAvC0D,OAEFuuB,EAA0B,OAAhB,OAAFjyB,QAAE,IAAFA,OAAA,EAAAA,EAAIkyB,OAAO,IAAaxd,EAAOtF,EAE7C,OACE,eAAC,IAAD,CACEvH,KAAMA,EACNQ,OAAQA,EACR8pB,kBAAgB,gCAHlB,UAKE,cAAC,IAAMhvB,OAAP,CAAcmF,aAAW,EAAzB,SACE,cAAC,IAAMC,MAAP,CAAavI,GAAG,gCAAhB,SACE,cAAC,OAAD,CAAMmC,GAAE,iBAAYnC,GAApB,0BAA8BiyB,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAOvyB,KAArC,oBAA8CuyB,QAA9C,IAA8CA,OAA9C,EAA8CA,EAAOjyB,GAArD,WAGJ,eAAC,IAAMwI,KAAP,WACE,mBAAGpH,UAAU,kBAAb,SACG,cAAC,IAAKqG,YAAN,CAAkBzH,GAAE,OAAEiyB,QAAF,IAAEA,OAAF,EAAEA,EAAOG,WAEhC,cAACC,EAAD,CAAWnqB,MAAM,eAAezE,MAAK,OAAEwuB,QAAF,IAAEA,OAAF,EAAEA,EAAOzV,UAA9C,SACE,cAAC,IAAD,CAAKJ,MAAK,OAAE6V,QAAF,IAAEA,OAAF,EAAEA,EAAOzV,cAErB,cAAC6V,EAAD,CAAWnqB,MAAM,eAAezE,MAAK,OAAEwuB,QAAF,IAAEA,OAAF,EAAEA,EAAOvV,UAA9C,SACE,cAAC,IAAD,CAAKN,MAAK,OAAE6V,QAAF,IAAEA,OAAF,EAAEA,EAAOvV,cAErB,cAAC2V,EAAD,CAAWnqB,MAAM,QAAQzE,MAAK,OAAEwuB,QAAF,IAAEA,OAAF,EAAEA,EAAO/X,MAAvC,SACE,cAAC,IAAD,CACEA,MAAK,OAAE+X,QAAF,IAAEA,OAAF,EAAEA,EAAO/X,MACdoY,QAAO,OAAEN,QAAF,IAAEA,OAAF,EAAEA,EAAQM,QACjBC,KAAI,OAAEP,QAAF,IAAEA,OAAF,EAAEA,EAAQO,eAQ1B,SAASF,EAAT,GAAgD,IAA3BnqB,EAA0B,EAA1BA,MAAOzE,EAAmB,EAAnBA,MAAOvB,EAAY,EAAZA,SACjC,OAAIwD,IAAEoN,YAAYrP,KAAWA,EAAc,KAEzC,qCACE,qBAAKrC,UAAU,qBACf,uBAAOA,UAAU,wBAAjB,SAA0C8G,IAC1C,mBAAG9G,UAAU,YAAb,SAA0Bc,GAAYuB,S,iCCxD5C,oBAGMkK,EAAkBkI,YAAkB,CACxCnW,KAAM,OACNJ,UAAWgO,MAGEK,O,iCCRf,oBAGMD,EAAa2N,YAAa,CAC9B3b,KAAM,OACNN,YAAaiO,MAGAK,O,iCCRf,kCAGe,SAAS8kB,IACtB,OAHwBlnB,Q,ulDCcX,SAASmnB,eAAT,GAKX,IAJFruB,EAIC,EAJDA,OACAC,EAGC,EAHDA,SACAquB,EAEC,EAFDA,YAEC,IADDpuB,kBACC,SACD,OACE,4DAAC,6CAAD,CACEC,cAAeH,EACfC,SAAUA,EACVquB,YAAaA,EACbluB,OAAQ,CAAEA,OAAQmuB,iDAClBruB,WAAYA,EALd,SAOE,4DAACsuB,aAAD,CAAcxuB,OAAQA,EAAQsuB,YAAaA,MAKjD,IAAMG,kBAAoB,CACxBjzB,MAAO,2BACPF,KAAM,0BAEFozB,OAAS,CACblzB,MAAO,eACPF,KAAM,eAEFqzB,YAAc,CAClBnzB,MAAO,oBACPF,KAAM,oBAEFszB,QAAU,CACdpzB,MAAO,gBACPF,KAAM,gBAEFuzB,aAAe,CACnBrzB,MAAO,qBACPF,KAAM,qBAEFwzB,YAAc,CAClBtzB,MAAO,oBACPF,KAAM,oBAEFyzB,QAAU,CACdvzB,MAAO,gBACPF,KAAM,gBAEF0zB,YAAc,CAClBxzB,MAAO,qBACPF,KAAM,oBAEF2zB,cAAgB,CACpBzzB,MAAO,uBACPF,KAAM,sBAGF4zB,QAAU,CACdT,kBACAC,OACAC,YACAC,QACAC,aACAC,YACAC,QACAC,YACAC,eAGIE,kBAAoB,IAAIC,KAAKC,aAAa,QAAS,CACvDnyB,MAAO,WACPsnB,SAAU,QAGZ,SAASgK,aAAT,OAA+D,IAA/BxV,cAA8B,MAAtChZ,OAAuBsuB,YAAe,MAAfA,YAAe,gBACT9xB,uDAA3CD,WADoD,gBACpDA,WAAY8X,MADwC,gBACxCA,MAAOib,SADiC,gBACjCA,SAAUC,UADuB,gBACvBA,UAC/BjS,OAASiS,UAAU,UACnBC,UAAYD,UAAU,aACtBE,WAAaF,UAAU,MACvBlY,KAAkB,OAAXiG,OAAkBkS,UAAY,GACrClY,UAAuB,OAAXgG,OAAkBkS,UAAY,GAC1CE,WAAarb,MAAM,cACnBoD,KAAOpD,MAAM,QACbsb,uBAAyBtb,MAAM,0BAC/Bub,YAAcvb,MAAM,eACpBwb,iBAAmBxb,MAAM,oBACzByb,aAAezb,MAAM,gBACrB0b,kBAAoB1b,MAAM,qBAC1B2b,iBAAmB3b,MAAM,oBACzB4b,aAAe5b,MAAM,gBACrB6b,iBAAmB7b,MAAM,oBACzB8b,mBAAqB9b,MAAM,sBAjB2B,aAmBb+C,8CAAY,CACzDxb,GAAI8zB,WACJpY,UAAWA,UACXD,KAAMA,KACNE,OAAyB,IAAjB6Y,OAAO3Y,OAAwB,KAATA,OAJf4Y,gBAnB2C,aAmBpDjlB,QAA0BoM,SAnB0B,aAmB1BA,SAOlCE,sDAAU,WACH2Y,iBACHf,SAAS,OAAQ9X,YAElB,CAACA,SAAU8X,SAAUe,kBAExB3Y,sDAAU,WACR,IAAI4Y,WAAa,EACjBpB,QAAQ1f,SAAQ,SAACmR,GACf,IAAM4P,MAAQC,WAAWC,KAAK9P,EAAErlB,OAChCg1B,YAA0BC,MAC1B,IAAMG,KAAOH,MAAQ9Y,KAChB4M,MAAMqM,OACTpB,SAAS3O,EAAErlB,KAAO,OAAQ6zB,kBAAkB1M,OAAOiO,UAIlDrM,MAAMiM,aACThB,SAAS,aAAcgB,YAEzB,IAAMK,UAAYL,WAAaE,WAAW/Y,MACrC4M,MAAMsM,YACTrB,SAAS,YAAaH,kBAAkB1M,OAAOkO,cAChD,CACDf,YACAC,iBACAC,aACAR,SACAK,uBACAI,kBACAC,iBACAC,aACAC,iBACAC,mBACA1Y,KACAuB,gBAGF,IAAM4X,kBAAoB,WACxBtB,SAASb,kBAAkBnzB,KAAM,QACjCg0B,SAASZ,OAAOpzB,KAAM,QACtBg0B,SAASX,YAAYrzB,KAAM,QAC3Bg0B,SAASV,QAAQtzB,KAAM,QACvBg0B,SAAST,aAAavzB,KAAM,QAC5Bg0B,SAASR,YAAYxzB,KAAM,QAC3Bg0B,SAASP,QAAQzzB,KAAM,QACvBg0B,SAASN,YAAY1zB,KAAM,QAC3Bg0B,SAASL,cAAc3zB,KAAM,SAI/B,OADAmB,uDAEE,6DAAC,+CAAD,WACE,6DAAC,+CAAKE,IAAN,WACE,4DAAC,+CAAD,CAAKE,GAAG,OAAR,SACE,4DAAC6S,WAAD,CAAYpU,KAAK,OAAOE,MAAM,WAEhC,4DAAC,+CAAD,CAAKqB,GAAG,OAAR,SACE,4DAACg0B,mBAAD,CAAoBv1B,KAAK,eAAeE,MAAM,oBAEhD,4DAAC,+CAAD,CAAKqB,GAAG,KAAR,SACE,4DAACi0B,YAAD,CAAax1B,KAAK,QAAQE,MAAM,mBAGpC,6DAAC,+CAAKmB,IAAN,WACE,4DAAC,+CAAD,CAAKE,GAAI,OAAT,SACE,4DAAC,6CAAW2J,KAAZ,CACElL,KAAK,OACLE,MAAM,gBACNu1B,eAAe,EACfC,YAAa,qEAAOhtB,KAAM,SAG9B,4DAAC,+CAAD,CAAKhH,UAAU,cAAf,SACE,4DAACi0B,4BAAD,CACE31B,KAAK,wBACLE,MAAM,iCAIZ,6DAAC,+CAAKmB,IAAN,WACE,4DAAC,+CAAD,CAAKE,GAAG,KAAR,SACE,4DAACq0B,iBAAD,CAAkB51B,KAAK,aAAaE,MAAM,uBAE5C,4DAAC,+CAAD,UACE,4DAAC21B,UAAD,CACE71B,KAAK,OACLE,MAAM,OACN60B,gBAAiBA,uBAIvB,6DAAC,+CAAK1zB,IAAN,CAAUK,UAAU,OAApB,UACE,4DAAC,+CAAKsG,MAAN,CAAYua,OAAO,KAAKnI,GAAI,EAAG1Y,UAAU,YAAzC,SACG,UAEH,4DAAC,+CAAD,UACE,4DAAC,6CAAD,CACE1B,KAAK,aACLkI,UAAU,EACV0B,KAAK,SACLksB,mBAAmB,YACnBp0B,UAAU,iBAGd,4DAAC,+CAAD,UACE,4DAAC,6CAAD,CACE1B,KAAM,YACNkI,UAAU,EACV4tB,mBAAmB,YACnBp0B,UAAU,oBAIfkyB,QAAQ/sB,KAAI,SAACwe,GAAD,OACX,4DAAC0Q,YAAD,CAAa71B,MAAOmlB,EAAEnlB,MAAOF,KAAMqlB,EAAErlB,MAAWqlB,EAAErlB,SAEpD,6DAAC,+CAAKqB,IAAN,CAAUK,UAAW,0CAArB,UACE,4DAAC,+CAAD,CAAQW,QAAQ,UAAUC,QAASrB,WAAnC,kBAGCkzB,WACC,4DAAC,+CAAD,CAAQ9xB,QAAQ,UAAUC,QAAS,kBAAM0wB,YAAYiB,cAArD,gCAGE,KACJ,4DAAC,+CAAD,CAAQ5xB,QAAQ,OAAOC,QAASgzB,kBAAhC,uCAQR,SAASS,YAAT,GAAuC,IAAhB71B,EAAe,EAAfA,MAAOF,EAAQ,EAARA,KAC5B,OACE,6DAAC,+CAAKqB,IAAN,CAAUK,UAAU,OAApB,UACE,4DAAC,+CAAKsG,MAAN,CAAYua,OAAO,KAAKnI,GAAI,EAAG1Y,UAAU,YAAzC,SACGxB,IAEH,4DAAC,+CAAD,UACE,4DAAC,6CAAD,CACEF,KAAMA,EACN4J,KAAK,SACLlB,KAAK,KACLotB,mBAAmB,YACnBp0B,UAAU,iBAGd,4DAAC,+CAAD,UACE,4DAAC,6CAAD,CACE1B,KAAMA,EAAO,OACb0I,KAAK,KACLR,UAAU,EACV4tB,mBAAmB,YACnBp0B,UAAU,oBAOpB,SAASk0B,iBAAT,GAA6E,IAAjD51B,EAAgD,EAAhDA,KAAgD,IAA1CM,UAA0C,MAArCN,EAAqC,EAA/BE,EAA+B,EAA/BA,MAAsBoD,GAAS,EAAxB0yB,WAAwB,2PAItEle,qDAAc,CAAE9X,SAJsD,IAExE+X,MAAS5Q,EAF+D,EAE/DA,SAAa4Q,EAFkD,kOAG1D3K,EAH0D,EAGxE4K,WAAc5K,MAH0D,EAQtElM,uDARsE,IAMxE+W,aAAgBrT,kBANwD,SAOxEovB,EAPwE,EAOxEA,SAGF,OACE,6DAAC,+CAAKhyB,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,4DAAC,+CAAK8H,MAAN,UAAa9H,IAAsB,KAE5C,4DAAC,sCAAK4B,OAAN,2lBACMiW,GADN,IAEE7P,SAAUtD,EACVuC,SAAU,SAACsO,GACTtO,EAASsO,GACTue,EAAS,OAAQ,KAEf1wB,GAPN,IAQEgX,aAAW,KAEb,4DAAC,+CAAKpT,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAASwoB,UAAT,GAAiE,IAA5C71B,EAA2C,EAA3CA,KAA2C,IAArCM,UAAqC,MAAhCN,EAAgC,EAA1BE,EAA0B,EAA1BA,MAAO60B,EAAmB,EAAnBA,gBAAmB,EAI1Djd,qDAAc,CAAE9X,SAFTmH,EAFmD,EAE5D4Q,MAAS5Q,SACKiG,EAH8C,EAG5D4K,WAAc5K,MAER4mB,EAAa9yB,uDAAb8yB,SAER,OACE,6DAAC,+CAAKhyB,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,4DAAC,+CAAK8H,MAAN,UAAa9H,IAAsB,KAC5C,4DAAC,6CAAD,CACEF,KAAMA,EACN4J,KAAK,SACLpI,SAAUuzB,EACV5tB,SAAU,SAACsO,GACTtO,EAASsO,GAAK,GACdue,EAAS,aAAc,OAG3B,4DAAC,+CAAK9sB,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAASmoB,YAAT,GAA4D,IAArCx1B,EAAoC,EAApCA,KAAoC,IAA9BM,UAA8B,MAAzBN,EAAyB,EAAnBE,EAAmB,EAAnBA,MAAUoD,EAAS,6OAIrDwU,qDAAc,CAAE9X,SAJqC,IAEvD+X,MAAS5Q,EAF8C,EAE9CA,SAAa4Q,EAFiC,kOAGzC3K,EAHyC,EAGvD4K,WAAc5K,MAHyC,EAOrDlM,uDADF+W,aAAgBrT,kBANuC,SASzD,OACE,6DAAC,+CAAK5C,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,4DAAC,+CAAK8H,MAAN,UAAa9H,IAAsB,KAC5C,4DAAC,sCAAK4B,OAAN,mZACMiW,GADN,IAEE7P,SAAUtD,EACVuC,SAAU,SAACsO,GACTtO,EAASsO,KAEPnS,IAEN,4DAAC,+CAAK4D,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAAS+G,WAAT,GAAsE,IAAhDpU,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,yPAI/DwU,qDAAc,CAAE9X,SAJ+C,IAEjE+X,MAAS5Q,EAFwD,EAExDA,SAAa4Q,EAF2C,kOAGnD3K,EAHmD,EAGjE4K,WAAc5K,MAHmD,EAO/DlM,uDADF+W,aAAgBrT,kBANiD,SASnE,OACE,6DAAC,+CAAK5C,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,4DAAC,+CAAK8H,MAAN,UAAa9H,IAAsB,KAC5C,6DAAC,+CAAKgH,QAAN,ylBACElH,KAAMA,EACNE,MAAM,OACN6B,GAAG,SACHoF,SAAU,SAACsO,GACTtO,EAASsO,IAEXvN,SAAUtD,EACVsT,UAAW9E,wDAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAVN,cAYE,sEAAQS,MAAM,IAAd,sBACA,sEAAQA,MAAM,IAAd,oBACA,sEAAQA,MAAM,IAAd,0BAEF,4DAAC,+CAAKmD,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAASkoB,mBAAT,GAA8E,IAAhDv1B,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,yPAIvEwU,qDAAc,CAAE9X,SAJuD,IAEzE+X,MAAS5Q,EAFgE,EAEhEA,SAAa4Q,EAFmD,kOAG3D3K,EAH2D,EAGzE4K,WAAc5K,MAH2D,EAOvElM,uDADF+W,aAAgBrT,kBANyD,SAS3E,OACE,6DAAC,+CAAK5C,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,4DAAC,+CAAK8H,MAAN,UAAa9H,IAAsB,KAC5C,6DAAC,+CAAKgH,QAAN,ylBACElH,KAAMA,EACNE,MAAM,SACN6B,GAAG,SACHoF,SAAU,SAACsO,GACTtO,EAASsO,IAEXvN,SAAUtD,EACVsT,UAAW9E,wDAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAVN,cAYE,sEAAQS,MAAM,IAAd,mBACA,sEAAQA,MAAM,IAAd,uBACA,sEAAQA,MAAM,IAAd,sBACA,sEAAQA,MAAM,IAAd,wBAEF,4DAAC,+CAAKmD,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAASsoB,4BAAT,GAA6E,IAAtC31B,EAAqC,EAArCA,KAAqC,IAA/BM,UAA+B,MAA1BN,EAA0B,EAApBE,EAAoB,EAApBA,MAAOgY,EAAa,EAAbA,UAAa,EAItEJ,qDAAc,CAAE9X,SAJsD,IAExE+X,MAAS5Q,EAF+D,EAE/DA,SAAU+uB,EAFqD,EAErDA,OAAQnyB,EAF6C,EAE7CA,MACbqJ,EAH0D,EAGxE4K,WAAc5K,MAH0D,EAOtElM,uDADF+W,aAAgBrT,kBANwD,SAQ1E,OACE,6DAAC,+CAAK5C,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,4DAAC,+CAAK8H,MAAN,UAAa9H,IAAsB,KAC5C,4DAAC,+EAAD,CACE6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVe,SAAUtD,EACVsT,UAAW9E,wDAAY8E,KAAe9K,EAAQ8K,EAC9CC,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,e,iCChcvB,YAEM4lB,EAAiBnzB,cAASC,MAAM,CACpCM,MAAOJ,cAASC,MAAM,SAASC,WAC/Bg2B,KAAMl2B,cAASC,MAAM,QAAQC,WAC7Bi2B,aAAcn2B,cAASC,MAAM,UAAUC,WAAWI,IAAI,GACtD81B,sBAAuBp2B,cAASC,MAAM,2BAA2BC,WACjEyJ,KAAM3J,cAASC,MAAM,QAAQC,WAAWI,IAAI,GAC5C4b,KAAMyM,cAAS1oB,MAAM,eAAeo2B,IAAI,GACxClC,WAAYn0B,cAASC,MAAM,aAC3Bm0B,uBAAwBzL,cACrB1oB,MAAM,4BACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzD0L,YAAa1L,cACV1oB,MAAM,gBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzD2L,iBAAkB3L,cACf1oB,MAAM,qBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzD4L,aAAc5L,cACX1oB,MAAM,qBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzD6L,kBAAmB7L,cAChB1oB,MAAM,sBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzD8L,iBAAkB9L,cACf1oB,MAAM,qBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzD+L,aAAc/L,cACX1oB,MAAM,iBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzDgM,iBAAkBhM,cACf1oB,MAAM,sBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,MAEzDiM,mBAAoBjM,cACjB1oB,MAAM,wBACNo2B,IAAI,GACJ7b,KACC,mBACA,4CACA,SAACmO,GAAD,MAAY,oCAAoCnO,KAAKmO,QAI5CqK,O,gMC1Df,IAAMxc,EAAcpR,IAAMC,YACxB,WAiBEC,GACI,IAhBFjF,EAgBC,EAhBDA,GACAN,EAeC,EAfDA,KAeC,IAdDkY,iBAcC,aAbDqe,eAaC,aAZDp0B,eAYC,aAXDT,iBAWC,MAXW,GAWX,EAVDyF,EAUC,EAVDA,SACAjH,EASC,EATDA,MACAiY,EAQC,EARDA,OACAjQ,EAOC,EAPDA,SAOC,IAND4tB,0BAMC,MANoB,GAMpB,MALDU,qBAKC,MALe,OAKf,EAJWC,EAIX,EAJDC,WACGpzB,EAGF,kKACC2mB,EAAa,GACbvoB,GAAWuoB,EAAW7L,KAAK1c,GAC3BwW,GAAW+R,EAAW7L,KAAK,cAC3BmY,GAAStM,EAAW7L,KAAK,YACzBjc,EAAS8nB,EAAW7L,KAAK,sBACxB6L,EAAW7L,KAAK,gBAErB,IAAMsY,EAAalzB,mBACjB,8BAAC,eAjDP,YAAmD,IAAvB0U,EAAsB,EAAtBA,UAAWqe,EAAW,EAAXA,QACjCtM,EAAa,GACb/R,GAAW+R,EAAW7L,KAAK,2CAC3BmY,GAAStM,EAAW7L,KAAK,0CAC7B,IAAMlX,EAAU7B,IAAMsxB,MAAK,gBAAGj1B,EAAH,EAAGA,UAAc4B,EAAjB,oCACzB,cAAC,IAAW4D,QAAZ,aACExF,UAAW,CAACA,GAAWmS,OAAOoW,GAAY1C,KAAK,MAC3CjkB,OAGR4D,EAAQ6O,YAAc,qBACtB,IAAM6gB,EAAoBvxB,IAAMsxB,MAAK,gBAAMrzB,EAAN,2BACnC,cAAC,IAAWszB,kBAAZ,aACEl1B,UAAWwW,EAAY,cAAgBqe,EAAU,eAAiB,IAC9DjzB,OAIR,OADAszB,EAAkB7gB,YAAc,+BACzB,CAAE7O,UAAS0vB,qBAgCTC,CAAiB,CAAE3e,YAAWqe,aAC9BE,KAEL,CAACve,EAAWqe,EAASE,IAWvB,OACE,eAAC,IAAKz0B,MAAN,CAAYN,UAAWo0B,EAAvB,UACG51B,EAAQ,cAAC,IAAK8H,MAAN,CAAY8uB,QAASx2B,EAArB,SAA0BJ,IAAsB,KACzD,cAAC,IAAD,aACEqF,IAAKA,EACLjF,GAAIA,EACJN,KAAMA,GAAcM,EACpBoB,UAAWuoB,EAAW1C,KAAK,KAC3BwP,gBAAgB,SAChB5vB,SAjBN,SAAsB6vB,GACpB,IAAMC,EAAW,SAACxhB,GAAD,OAAQzP,IAAEkxB,OAAOzhB,IAAMzP,IAAEoN,YAAYqC,GAAK,GAAKA,GAE5CtO,EADhBhF,EACU,OAAR60B,EAAuB,GACbA,EAAInwB,KAAI,SAAC2O,GAAD,OAAOyhB,EAASzhB,EAAEzR,UAC5BkzB,EAAQ,OAACD,QAAD,IAACA,OAAD,EAACA,EAAKjzB,SAaxB5B,QAASA,EACTyC,WAAYsD,EACZsuB,cAAeA,EACfW,WAAY,CAAEjf,YAAWqe,WACzBG,WAAYA,GACRpzB,IAEL6U,EACC,cAAC,IAAKjR,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,SAAuCuO,IACrC,WASL,SAASif,EAAe9zB,GAAQ,IAC7BgB,EAAShB,EAATgB,KACR,OACE,cAAC,IAAW+yB,OAAZ,2BAAuB/zB,GAAvB,aACE,qBAAI5B,UAAU,qBAAd,UACE,6BAAK4C,EAAKkE,MAAQlE,EAAKkE,MAAQlE,EAAKpE,SAC/B,OAAJoE,QAAI,IAAJA,OAAA,EAAAA,EAAMgzB,MACL,oBAAI51B,UAAU,OAAOE,MAAO,CAAE21B,WAAY,QAA1C,SACE,gCAAQjzB,EAAKgzB,SAEb,WAbZ7gB,EAAYV,YAAc,cACXU,O,oLCrFT+gB,EAAYnyB,IAAMC,YACtB,WAqBEC,GACI,IApBF4B,EAoBC,EApBDA,SAoBC,IAnBDpD,MAAO0zB,OAmBN,MAnBqB,KAmBrB,MAlBDC,mBAkBC,aAjBDC,kBAiBC,MAjBY,QAiBZ,MAhBDC,qBAgBC,MAhBe,GAgBf,MAfDC,mBAeC,MAfa,OAeb,MAdDC,sBAcC,MAdgB,aAchB,MAbDC,yBAaC,MAbmB,qBAanB,MAZD7vB,gBAYC,aAXD8vB,oBAWC,aAVDvC,qBAUC,SATDv1B,EASC,EATDA,MASC,IARD+3B,sBAQC,MARgB,OAQhB,EAPDC,EAOC,EAPDA,QACAC,EAMC,EANDA,QAMC,IALDC,kBAKC,aAJDlC,cAIC,MAJQ,aAIR,EAHE5yB,EAGF,+OACG+0B,EAAsBX,EACxBK,EACAD,EAHD,EAKuB9W,YAAeyW,GALtC,mBAKI1zB,EALJ,KAKWiwB,EALX,KAaH,IAAMsE,EAAeZ,EAAc,MAAQ,QAErCa,EAASvyB,IAAEoN,YAAYlT,GACzBw3B,EACEc,IAAUC,oBAAoB10B,GAC9B20B,IAAMC,YAAY50B,GACpB7D,EAEE04B,OACQvoB,IAAZ6nB,GAEIzG,IAAO1tB,GAAO80B,eAAepH,IAAOyG,GAAU,OAE9CY,QACQzoB,IAAZ8nB,GAEI1G,IAAO1tB,GAAOg1B,cAActH,IAAO0G,GAAU,OAEnD,OACE,qCACGnyB,IAAEkxB,OAAOqB,GAAU,KAClB,cAAC,IAAKvwB,MAAN,CAAYtG,UAAWu2B,EAAvB,SAAwCM,IAE1C,eAAC,IAAD,CAAY72B,UAAU,OAAtB,UACG+zB,EACC,eAAC,IAAW5d,QAAZ,WACE,cAAC,IAAD,CACExV,QAAQ,kBACRX,UAAU,OACVwG,SAAUA,GAAY8vB,GAAgBY,EACtCt2B,QAAS,WAGH6E,EAFU,OAAVpD,EACqB,SAAnB+zB,EACOrG,MAASuH,QAAQ,QACE,YAAnBlB,EACArG,MAASuH,QAAQ,SAEjBvH,MAGY,SAAnBqG,EACOrG,IAAO1tB,GAAOk1B,SAAS,EAAG,SACP,YAAnBnB,EACArG,IAAO1tB,GAAOk1B,SAAS,EAAG,UAE1BxH,IAAO1tB,GAAOk1B,SAAS,EAAG,UAnB3C,SAwBE,cAAC,IAAD,MAEF,cAAC,IAAD,CACE52B,QAAQ,kBACRX,UAAU,OACVwG,SAAUA,GAAY8vB,GAAgBc,GACtCx2B,QAAS,WAGH6E,EAFU,OAAVpD,EACqB,SAAnB+zB,EACOrG,MAASuH,QAAQ,QACE,YAAnBlB,EACArG,MAASuH,QAAQ,SAEjBvH,MAGY,SAAnBqG,EACOrG,IAAO1tB,GAAOm1B,IAAI,EAAG,SACF,YAAnBpB,EACArG,IAAO1tB,GAAOm1B,IAAI,EAAG,UAErBzH,IAAO1tB,GAAOm1B,IAAI,EAAG,UAnBtC,SAwBE,cAAC,IAAD,SAGF,KACJ,cAAC,IAAD,aACE3zB,IAAKA,EACL7D,UAAU,eACVy3B,SAAUp1B,GAAS0tB,IAAO1tB,GAAOq1B,SACjC5zB,SAAU,SAACzB,GACToD,EAASpD,GAAS0tB,IAAO1tB,KAE3BoD,SAAU,SAACkyB,GACTrF,EAASqF,GAAW5H,IAAO4H,IACvB3B,GAAavwB,EAASkyB,GAAW5H,IAAO4H,KAE9CnD,OAAQ,SAAC9uB,IAjGjB,WACE,IAAMkyB,EAAS7H,IAAO1tB,GAClBA,IAAU0zB,GAAiB6B,EAAOC,OAAO9H,IAAOgG,KAClDtwB,EAASpD,GAAS0tB,IAAO1tB,IA+FnBy1B,GACAtD,EAAO9uB,IAETqyB,WAAYpB,EACZX,YAAaA,EACbC,WAAYA,EACZC,cAAeA,EACfC,YAAaA,EACb6B,eAAgBhC,EAChBj2B,kBAAc4O,EACdnI,SAAUA,EACVgwB,QACEF,EACIvG,IAAO1tB,GAAOq1B,cACF/oB,IAAZ6nB,EACA,KACAzG,IAAOyG,GAASkB,SAEtBjB,QACEH,EACIvG,IAAO1tB,GAAOq1B,cACF/oB,IAAZ8nB,EACA,KACA1G,IAAO0G,GAASiB,UAElB91B,IAEL80B,EACC,cAAC,IAAWve,OAAZ,UACE,cAAC,IAAD,CACExX,QAAQ,UACRX,UAAU,OACVY,QAAS,kBAAM6E,EAASsqB,QACxBvpB,SAAUA,GAAY8vB,EAJxB,SAMGM,MAIL,sCAOGd,O,sGCrLA,SAASxW,EAAe3R,GACrC,IAAMsqB,EAAUzZ,iBAAO7Q,GADoB,EAEjB5J,mBAAS4J,GAFQ,mBAEpCxM,EAFoC,KAE7BiO,EAF6B,KAS3C,OANAsL,qBAAU,WACHiE,IAAQsZ,EAAQxpB,QAASd,KAC5BsqB,EAAQxpB,QAAUd,EAClByB,EAASzB,MAEV,CAACA,IACG,CAACxM,EAAOiO,K,oMCTF,SAAS8oB,IAAyB,IAAD,EACZn0B,mBAASo0B,KADG,mBACvCC,EADuC,KAC5BC,EAD4B,KAExCC,EAAqB,kBAAMD,EAAaF,MAQ9C,OAPAzd,qBAAU,WACR,IAAM6d,EASH,WACL,GAA+B,qBAApBC,SAASC,OAElB,MAAO,mBACF,GAAiC,qBAAtBD,SAASE,SACzB,MAAO,qBACF,GAAqC,qBAA1BF,SAASG,aACzB,MAAO,yBAhBkBC,GAEzB,OADAJ,SAASK,iBAAiBN,EAAkBD,GAAoB,GACzD,WACLE,SAASM,oBAAoBP,EAAkBD,OAG5CF,EAsBF,SAASD,IACd,OAAQK,SATuB,qBAApBA,SAASC,OACX,SAC+B,qBAAtBD,SAASE,SAClB,WACmC,qBAA1BF,SAASG,aAClB,oBADF,G,oBC7BM,SAASI,EAAYC,EAAUC,GAAgB,IAAZ1a,EAAW,uDAAJ,GACjD3f,EAAK4f,iBAAO,MAElB9D,qBAAU,WACR,GAAW,IAAPue,GAAcD,EAGhB,OAFIp6B,EAAG6P,SAASyqB,cAAct6B,EAAG6P,SACjC7P,EAAG6P,QAAU0qB,YAAYH,EAAUC,GAC5B,WACLC,cAAct6B,EAAG6P,UAEd7P,EAAG6P,QAAU,OAPb,CASLwqB,GATK,mBASE1a,KCLE,SAAS6a,EAA2BH,GAAK,IAAD,EACjCl1B,mBAASyF,KAAK6vB,OAAzBC,EAD4C,oBAG/CC,EAAcpb,IAAIqb,cAExBT,GAAY,kBAAMO,EAAQ9vB,KAAK6vB,SAAQE,EAAcN,EAAK,EAAG,CAC3DA,EACAM,I,aCDW,SAASE,IACtB,IAAMzxB,EAAW0O,cACXgjB,EAAY/yB,uBAChB,SAAC8B,GAAD,OAAcT,EAAS6B,IAAWf,YAAYL,MAC9C,CAACT,IAGG2xB,ECnBO,WAA6B,IAAD,EACX51B,qBADW,mBAClC61B,EADkC,KACzBC,EADyB,KAEnCC,EAAU,kBAAMD,GAAW,IAC3BrF,EAAS,kBAAMqF,GAAW,IAShC,OARAnf,qBAAU,WAGR,OAFAqf,OAAOlB,iBAAiB,QAASiB,GACjCC,OAAOlB,iBAAiB,OAAQrE,GACzB,WACLuF,OAAOjB,oBAAoB,QAASgB,GACpCC,OAAOjB,oBAAoB,OAAQtE,OAGhCoF,EDOeI,GAChBC,EAAkB/B,IARgB,EAUUn0B,mBAASgsB,OAVnB,mBAUjCmK,EAViC,KAUdC,EAVc,KAalCC,EAAqBzzB,sBACzB0zB,oBAAS,kBAAMryB,EAAS6B,IAAWhC,eAAc,KACjD,CAACG,IAIHoxB,EAA2B,KAE3B1e,qBAAU,WACJif,IACFQ,EAAqBpK,OACrBqK,OAED,CAACA,EAAoBT,IAGxB,IAAMJ,EAAcpb,IAAIqb,cAClBc,EACJL,GAAmBlK,MAASC,KAAKkK,EAAmB,WAAW,GAAQ,GAKzE,OAJAxf,qBAAU,WACJ6e,IAAgBe,GAAiBZ,EAAUY,KAC9C,CAACZ,EAAWH,EAAae,IAErB,K,uHEjDF,SAASC,EAAT,GAA4B,IAC3BnyB,EAAU,CACd6C,QAAS,SACTrM,GAH8B,EAANA,IAK1B,OAAO6N,IAAM7B,KAAKxC,GAUb,SAASoyB,EAAT,GAAoE,IAA5CC,EAA2C,EAA3CA,aAAcplB,EAA6B,EAA7BA,YAA6B,IAAhBjB,QAClDhM,EAAU,CACd6C,QAAS,YACTwvB,aAAcA,EACdrmB,aAJsE,MAAN,GAAM,EAKtEiB,YAAaA,GAEf,OAAO5I,IAAM7B,KAAKxC,GAGb,SAASsyB,EAAT,GAAiC,IAChCtyB,EAAU,CACd6C,QAAS,cACTrM,GAHmC,EAANA,IAK/B,OAAO6N,IAAM7B,KAAKxC,GCjBpB,IAAMuyB,EAActqB,cAEduqB,EAAU9yB,YACd,eAD8B,uCAE9B,WAAOM,EAAP,wBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW+tB,SAASC,KAAMxsB,GADlD,iEDLO7B,IAAM7B,KAHG,CACdK,QAAS,YCOX,uBAGU0B,EAHV,EAGUA,aAHV,kBAISA,EAAamuB,MAJtB,2CAF8B,yDAU1BC,EAASjzB,YACb,WAD6B,uCAE7B,WAAOM,EAAP,wBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW+tB,SAASC,KAAMxsB,GADlD,iEAGiCisB,EAAUnyB,GAH3C,uBAGUuE,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAF6B,yDAUlBquB,EAAYlzB,YACvB,aADuC,uCAEvC,WAAOM,EAAP,wBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW+tB,SAASC,KAAMxsB,GADlD,iEAGiCksB,EAAapyB,GAH9C,uBAGUuE,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAFuC,yDAU5BsuB,EAAcnzB,YACzB,eADyC,uCAEzC,WAAOM,EAAP,wBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW+tB,SAASC,KAAMxsB,GADlD,iEAEiCosB,EAAetyB,GAFhD,uBAEUuE,EAFV,EAEUA,aAFV,kBAGSA,GAHT,2CAFyC,yDASrCuuB,EAAY5yB,YAAY,CAC5BhK,KAAM,OACNiK,aAAcoyB,EAAY/oB,gBAAZ,2BACTpJ,KADS,IAEZmI,WAAYof,MAASwH,SAAS,GAAI,QAAQ9tB,iBAE5CZ,SAAU,CACRsyB,UADQ,SACEh6B,GACRw5B,EAAY9oB,UAAU1Q,GACtBA,EAAM+M,SAAW1F,IAAsB0F,SACvC/M,EAAMwP,WAAaof,MAASwH,SAAS,GAAI,QAAQ9tB,eAEnD2xB,UANQ,SAMEj6B,EAAO4H,GACf4xB,EAAYvoB,UAAUjR,EAAO4H,EAAOX,WAGxCiB,cAAe,SAACC,GACdC,YAAuBD,EAASsxB,GAAS,SAACz5B,EAAO4H,GACjB,IAA1BA,EAAOX,QAAQ6U,QACjB0d,EAAY3oB,WAAW7Q,EAAO4H,EAAOX,SAEvCjH,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAASyxB,GAAQ,SAAC55B,EAAO4H,GAChB,IAA1BA,EAAOX,QAAQ6U,QACjB0d,EAAYvoB,UAAUjR,EAAO4H,EAAOX,SAEtCjH,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAAS0xB,GAAW,SAAC75B,EAAO4H,GAC7CA,EAAOX,UACTuyB,EAAYvoB,UAAUjR,EAAO4H,EAAOX,SACpC2H,IAAMiO,QAAQ,gBAAiB,CAC7BC,UAAW,IACX/W,aAAa,QAInBqC,YAAuBD,EAAS2xB,GAAa,SAAC95B,EAAO4H,GAC/CA,EAAOX,UACTuyB,EAAYvoB,UAAUjR,EAAO4H,EAAOX,SACpC2H,IAAMiO,QAAQ,kBAAmB,CAC/BC,UAAW,IACX/W,aAAa,WAOV0C,EAAUsxB,EAAUtxB,Q,EAEAsxB,EAAUp9B,QAAnCq9B,E,EAAAA,UAAWC,E,EAAAA,UACNt9B,EAAU,CACrB88B,UACAG,SACAI,YACAC,YACAJ,YACAC,eAGW75B,EAAYu5B,EAAYrqB,cACnC,SAACnP,GAAD,OAAWA,EAAM05B,SAASC,QClHtBtzB,GAAgB,CACpBC,IAAK,gBACLC,QAAS,EACTC,YACAC,UAAW,CAAC,MAAO,WAAY,eCJlByzB,GDOA1xB,YAAenC,GAAeoC,GEVtC,SAAS0xB,GAAoBn5B,GAClC,IAAMiG,EAAO,2BACRjG,GADQ,IAEX8I,QAAS,qBAEX,OAAOwB,IAAM7B,KAAKxC,GAGb,SAASmzB,GAAT,GAAqC,IACpCnzB,EAAU,CACdxJ,GAFuC,EAANA,GAGjCqM,QAAS,mBAEX,OAAOwB,IAAM7B,KAAKxC,GAGb,SAASozB,GAAsBpzB,GACpC,IAAMqzB,EAAQ,aACZxwB,QAAS,sBACN7C,GAEL,OAAOqE,IAAM7B,KAAK6wB,GCLpB,IAAMC,GAAuBrrB,cAEvBsrB,GAAmB7zB,YACvB,uBADuC,uCAEvC,WAAO3F,EAAP,wBAAA4F,EAAA,yDAAiB+E,EAAjB,EAAiBA,SAAUwB,EAA3B,EAA2BA,UACpBD,YAAiBvB,IAAW+tB,SAASe,cAAettB,GAD3D,iEAGiCgtB,GAAoBn5B,GAHrD,uBAGUwK,EAHV,EAGUA,aAHV,kBAISA,EAAaivB,eAJtB,2CAFuC,yDAUnCC,GAAkB/zB,YACtB,mBADsC,uCAEtC,WAAO3F,EAAP,wBAAA4F,EAAA,yDAAiB+E,EAAjB,EAAiBA,SAAUwB,EAA3B,EAA2BA,UACpBD,YAAiBvB,IAAW+tB,SAASe,cAAettB,GAD3D,iEAGiCitB,GAAmBp5B,GAHpD,uBAGUwK,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAFsC,yDAU3BmvB,GAAqBh0B,YAChC,sBADgD,uCAEhD,WAAOM,EAAP,wBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW+tB,SAASe,cAAettB,GAD3D,iEAGiCktB,GAAsBpzB,GAHvD,uBAGUuE,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAFgD,yDAU5CovB,GAAqBzzB,YAAY,CACrChK,KAAM,eACNiK,aAAcmzB,GAAqB9pB,gBAArB,2BACTpJ,KADS,IAEZmI,WAAY,QAEd9H,SAAU,CACRmzB,mBADQ,SACW76B,GACjBu6B,GAAqB7pB,UAAU1Q,GAC/BA,EAAM+M,SAAW1F,IAAsB0F,SACvC/M,EAAMwP,WAAa,OAGvBtH,cAAe,SAACC,GACdC,YAAuBD,EAASqyB,IAAkB,SAACx6B,EAAO4H,GAC1B,IAA1BA,EAAOX,QAAQ6U,QACjBye,GAAqB1pB,WAAW7Q,EAAO4H,EAAOX,SAEhDjH,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAASuyB,IAAiB,SAAC16B,EAAO4H,GACzB,IAA1BA,EAAOX,QAAQ6U,QACjBye,GAAqBtpB,UAAUjR,EAAO4H,EAAOX,SAE/CjH,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAASwyB,IAAoB,SAAC36B,EAAO4H,GACtDA,EAAOX,UACTszB,GAAqBtpB,UAAUjR,EAAO4H,EAAOX,SAC7C2H,IAAMiO,QAAQ,4BAA6B,CACzCC,UAAW,IACX/W,aAAa,WAOV0C,GAAUmyB,GAAmBnyB,QAElCoyB,GAAuBD,GAAmBj+B,QAA1Ck+B,mBACKl+B,GAAU,CACrB69B,oBACAE,mBACAG,sBACAF,uBAGW16B,GAAYs6B,GAAqBprB,cAC5C,SAACnP,GAAD,OAAWA,EAAM05B,SAASe,iBC9FtBp0B,GAAgB,CACpBC,IAAK,yBACLC,QAAS,EACTC,YACAC,UAAW,CAAC,MAAO,WAAY,eCJlByzB,GDOA1xB,YAAenC,GAAeoC,IEVtC,SAASqyB,GAAmB95B,GACjC,IAAMiG,EAAO,2BACRjG,GADQ,IAEX8I,QAAS,oBAEX,OAAOwB,IAAM7B,KAAKxC,GCOpB,IAAM8zB,GAAsB7rB,cAEtB8rB,GAAkBr0B,YACtB,uBADsC,uCAEtC,WAAO3F,EAAP,wBAAA4F,EAAA,yDAAiB+E,EAAjB,EAAiBA,SAAUwB,EAA3B,EAA2BA,UACpBD,YAAiBvB,IAAW+tB,SAASuB,aAAc9tB,GAD1D,iEAGiC2tB,GAAmB95B,GAHpD,uBAGUwK,EAHV,EAGUA,aAHV,kBAISA,EAAayvB,cAJtB,2CAFsC,yDAUlCC,GAAoB/zB,YAAY,CACpChK,KAAM,eACNiK,aAAc2zB,GAAoBtqB,gBAApB,2BACTpJ,KADS,IAEZmI,WAAYof,MAASwH,SAAS,GAAI,QAAQ9tB,iBAE5CZ,SAAU,CACRwI,MADQ,SACFlQ,GACJ+6B,GAAoBrqB,UAAU1Q,GAC9BA,EAAM+M,SAAW1F,IAAsB0F,SACvC/M,EAAMwP,WAAaof,MAASwH,SAAS,GAAI,QAAQ9tB,gBAGrDJ,cAAe,SAACC,GACdC,YAAuBD,EAAS6yB,IAAiB,SAACh7B,EAAO4H,GACzB,IAA1BA,EAAOX,QAAQ6U,QACjBif,GAAoBlqB,WAAW7Q,EAAO4H,EAAOX,SAE/CjH,EAAMwP,YAAa,IAAInH,MAAOC,oBAKvBG,GAAUyyB,GAAkBzyB,QAEjCyH,GAAUgrB,GAAkBv+B,QAA5BuT,MACKvT,GAAU,CACrBq+B,mBACAG,kBAAmBjrB,IAGRjQ,GAAY86B,GAAoB5rB,cAC3C,SAACnP,GAAD,OAAWA,EAAM05B,SAASuB,gBCrDtB50B,GAAgB,CACpBC,IAAK,wBACLC,QAAS,EACTC,YACAC,UAAW,CAAC,MAAO,WAAY,eCJlByzB,GDOA1xB,YAAenC,GAAeoC,I,QEDtC,IAAM1I,GAAM,CAAEsL,QATrB,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,eAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa4vB,cCA1B3+B,GAASiP,aAAa,CAC1BvO,KAAM,QACN4J,KAAM,UACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM05B,SAAS0B,WAEhCz+B,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/Bs7B,GAPI,CACjBt7B,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCVa6+B,GANSC,YAAgB,CACtCd,cAAee,GACfP,aAAcQ,GACd9B,KAAM+B,GACNN,QAASC,GAAW5yB,U,UCTf,SAASkzB,GAAT,GAMH,IALFxiB,EAKC,EALDA,UACAyiB,EAIC,EAJDA,MAKM30B,EAAU,CACd6C,QAAS,iBACTwpB,KAHD,EAHDA,KAOE1rB,OAJD,EAFDA,OAOEg0B,MAAOA,EACPziB,UAAWA,EACX5M,WAPD,EADDA,YAUA,OAAOjB,IAAM7B,KAAKxC,GAGb,SAAS40B,GAAT,GAMH,IALFjwB,EAKC,EALDA,SACAgwB,EAIC,EAJDA,MAKM30B,EAAU,CACd6C,QAAS,kBACTwpB,KAHD,EAHDA,KAOE1rB,OAJD,EAFDA,OAOEg0B,MAAOA,EACPhwB,SAAUA,EACVW,WAPD,EADDA,YAUA,OAAOjB,IAAM7B,KAAKxC,GAGb,SAAS60B,GAAT,GAAoE,IAAtC3iB,EAAqC,EAArCA,UAC7BlS,EAAU,CACd6C,QAAS,kBACT8xB,MAHsE,EAA1BA,MAI5CziB,UAAWA,EACX4iB,OALsE,EAAnBA,OAMnDC,QANsE,EAAXA,SAQ7D,OAAO1wB,IAAM7B,KAAKxC,GAGb,SAASg1B,GAAT,GAAiE,IAChEh1B,EAAU,CACd6C,QAAS,0BACT8xB,MAHmE,EAAlCA,MAIjCM,UAJmE,EAA3BA,UAKxCC,aALmE,EAAhBA,cAOrD,OAAO7wB,IAAM7B,KAAKxC,GCjCpB,IAAMm1B,GAAmBltB,YAAoB,CAC3CH,SAAU,SAACxK,GAAD,OAAOuO,KAAGyc,WAAWhrB,EAAE9G,OAG7B4+B,GAAiB11B,YACrB,2BADqC,uCAErC,WAAOM,EAAP,oCAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW2wB,UAAUA,UAAWnvB,GADxD,iEAEiCwuB,GAAkB10B,GAFnD,gBAEUuE,EAFV,EAEUA,aAGJ+wB,EAAQ/tB,KAAKguB,MACfhuB,KAAKC,UAAU9C,IAAW+tB,SAASC,KAAKjqB,SAASlE,EAAaowB,SAG1DM,EAAYK,EAAME,OAAOP,UACtB9d,EAAI,EAVf,aAUkBA,EAAI8d,EAAUpgB,QAVhC,oBAWQ7U,EAAQsF,aAAe2vB,EAAU9d,GAAG7R,WAX5C,iBAYM,IAAS6S,EAAI,EAAGA,EAAI8c,EAAU9d,GAAGxS,SAASkQ,OAAQsD,KAC5Csd,EAAIR,EAAU9d,GAAGxS,SAASwT,IACxBud,UAAYnxB,EAAa2N,YAC7BujB,EAAEE,SAAWpxB,EAAaoxB,SAC1BF,EAAEP,aAAe3wB,EAAa2wB,cAhBxC,oCAUwC/d,IAVxC,+BAsBEvX,EAAS,CACPE,KAAM81B,EAAW5C,UAAUlzB,KAC3BE,QAAQ,eACHs1B,KAzBT,kBA4BS/wB,GA5BT,4CAFqC,yDAkCjCsxB,GAAkBn2B,YACtB,4BADsC,uCAEtC,WAAOM,EAAP,oCAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW2wB,UAAUA,UAAWnvB,GADxD,iEAEiC2uB,GAAmB70B,GAFpD,gBAEUuE,EAFV,EAEUA,aAGJ+wB,EAAQ/tB,KAAKguB,MACfhuB,KAAKC,UAAU9C,IAAW+tB,SAASC,KAAKjqB,SAASlE,EAAaowB,SAG1DM,EAAYK,EAAME,OAAOP,UACtB9d,EAAI,EAVf,aAUkBA,EAAI8d,EAAUpgB,QAVhC,iBAWI,IAASsD,EAAI,EAAGA,EAAI8c,EAAU9d,GAAGxS,SAASkQ,OAAQsD,KAC5Csd,EAAIR,EAAU9d,GAAGxS,SAASwT,IACxBud,UAAYnxB,EAAa2N,YAC7BujB,EAAEK,eAAiBvxB,EAAauxB,eAChCL,EAAEM,gBAAkBxxB,EAAawxB,iBAfzC,oCAUwC5e,IAVxC,+BAoBEvX,EAAS,CACPE,KAAM81B,EAAW5C,UAAUlzB,KAC3BE,QAAQ,eACHs1B,KAvBT,kBA0BS/wB,GA1BT,4CAFsC,yDAgClCyxB,GAAkBt2B,YACtB,4BADsC,uCAEtC,WAAOM,EAAP,oCAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW2wB,UAAUA,UAAWnvB,GADxD,iEAEiC8uB,GAAmBh1B,GAFpD,gBAEUuE,EAFV,EAEUA,aAGJ+wB,EAAQ/tB,KAAKguB,MACfhuB,KAAKC,UAAU9C,IAAW+tB,SAASC,KAAKjqB,SAASlE,EAAaowB,SAG1DsB,EAAWX,EAAME,OAAOP,UACxBiB,EAAW3xB,EAAa0wB,UAVhC,WAgBWkB,GACP,IAAMC,EAAKF,EAASC,GACdE,EAAKJ,EAASrqB,MAAK,SAACD,GAAD,OAAOyqB,EAAG9wB,aAAeqG,EAAErG,cACpD,QAAWiB,IAAP8vB,EAAkB,iBACtB,IApBJ,eAoBar5B,GACP,IAAMs5B,EAAKD,EAAG1xB,SAAS3H,GACjBu5B,EAAKH,EAAGzxB,SAASiH,MAAK,SAACD,GAAD,OAAO2qB,EAAGZ,UAAY/pB,EAAEuG,aACpD,QAAW3L,IAAPgwB,EAAkB,iBACtBD,EAAGR,eAAiBS,EAAGT,eACvBQ,EAAGP,gBAAkBQ,EAAGR,gBACxBO,EAAGpB,aAAeqB,EAAGrB,aACrBoB,EAAGX,SAAWY,EAAGZ,UAPV34B,EAAI,EAAGA,EAAIq5B,EAAG1xB,SAASkQ,OAAQ7X,IAAK,EAApCA,IAJFm5B,EAAI,EAhBf,aAgBkBA,EAAID,EAASrhB,QAhB/B,mCAgBWshB,GAhBX,wDAgBuCA,IAhBvC,+BA8BEv2B,EAAS,CACPE,KAAM81B,EAAW5C,UAAUlzB,KAC3BE,QAAQ,eACHs1B,KAjCT,kBAoCS/wB,GApCT,4CAFsC,yDA0ClCiyB,GAAkB92B,YACtB,4BADsC,uCAEtC,WAAOM,EAAP,wCAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW2wB,UAAUA,UAAWnvB,GADxD,iEAEiC0uB,GAAmB50B,GAFpD,gBAEUuE,EAFV,EAEUA,aAGJ+wB,EAAQ/tB,KAAKguB,MACfhuB,KAAKC,UAAU9C,IAAW+tB,SAASC,KAAKjqB,SAASlE,EAAaowB,SAG1DM,EAAYK,EAAME,OAAOP,UACtB9d,EAAI,EAVf,aAUkBA,EAAI8d,EAAUpgB,QAVhC,oBAWQ7U,EAAQsF,aAAe2vB,EAAU9d,GAAG7R,WAX5C,iBAYekf,EAAI,EAZnB,aAYsBA,EAAIjgB,EAAaI,SAASkQ,QAZhD,iBAaY4hB,EAAIlyB,EAAaI,SAAS6f,GACzBtoB,IAAE6E,QAAQ01B,EAAEC,eACf/uB,IAAMrE,MAAM,YAAcmzB,EAAEvkB,UAAY,IAAMukB,EAAEC,cAEzCve,EAAI,EAjBrB,aAiBwBA,EAAI8c,EAAU9d,GAAGxS,SAASkQ,QAjBlD,qBAkBc4gB,EAAIR,EAAU9d,GAAGxS,SAASwT,IACxBud,UAAYe,EAAEvkB,UAnB9B,wBAoBYujB,EAAEE,SAAWc,EAAEd,SACfF,EAAEP,aAAeuB,EAAEvB,aArB/B,6BAiB0D/c,IAjB1D,wBAYwDqM,IAZxD,4DAUwCrN,IAVxC,+BA6BEvX,EAAS,CACPE,KAAM81B,EAAW5C,UAAUlzB,KAC3BE,QAAQ,eACHs1B,KAhCT,kBAmCS/wB,GAnCT,4CAFsC,yDAyClCoyB,GAAiBz2B,YAAY,CACjChK,KAAM,WACNiK,aAAcg1B,GAAiB3rB,gBAAjB,2BACTpJ,KADS,IAEZyhB,SAAS,EACTtZ,WAAYof,MAASwH,SAAS,GAAI,QAAQ9tB,cAC1CtH,OAAQ,MAEV0G,SAAU,CACRm2B,eADQ,SACO79B,GACbo8B,GAAiB1rB,UAAU1Q,GAC3BA,EAAM+M,SAAW1F,IAAsB0F,SACvC/M,EAAM8oB,SAAU,EAChB9oB,EAAMwP,WAAaof,MAASwH,SAAS,GAAI,QAAQ9tB,gBAGrDJ,cAAe,SAACC,GACdC,YAAuBD,EAASk0B,IAAgB,SAACr8B,GAE/CA,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAASs1B,IAAiB,SAACz9B,GAEhDA,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAAS20B,IAAiB,SAAC98B,GAEhDA,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAAS80B,IAAiB,SAACj9B,GAEhDA,EAAMwP,YAAa,IAAInH,MAAOC,oBAKvB4xB,GAAe0D,GAAen1B,QAEnCo1B,GAAmBD,GAAejhC,QAAlCkhC,eACKlhC,GAAU,CACrB0/B,kBACAoB,mBACAX,mBACAG,mBACAY,mBC1Na3D,ID6NUkC,GAAiBjtB,cACxC,SAACnP,GAAD,OAAWA,EAAMs8B,UAAUA,aC9NdpC,ICQA4D,GAHUvC,YAAgB,CACvCe,UAAW7zB,KCNPs1B,GAAa,WACjB,IAAMx3B,EAAUnK,aAAaG,QAAQ,WAC/ByhC,EAAe5hC,aAAaG,QAAQ,gBAC1C,MAAM,GAAN,OAAUgK,GAAV,OACEy3B,GAAiC,WAAjBA,EAA4B,IAAMA,EAAe,KAI9D,SAASC,GAAT,GAAyC,IACxCh3B,EAAU,CACd6C,QAAS,eACTo0B,OAH2C,EAApBA,OAIvBr0B,SAJ2C,EAAZA,SAK/Bs0B,WAAYJ,MAGd,OAAOzyB,IAAM7B,KAAKxC,GAGb,SAASm3B,KACd,IAAMn3B,EAAU,CACd6C,QAAS,aACTq0B,WAAYJ,MAGd,OAAOzyB,IAAM7B,KAAKxC,GAGb,SAASo3B,KACd,IAAMp3B,EAAU,CACd6C,QAAS,gBACTq0B,WAAYJ,MAGd,OAAOzyB,IAAM7B,KAAKxC,GAGb,SAASq3B,GAAT,GAAuC,IACtCr3B,EAAU,CACd6C,QAAS,gBACTo0B,OAHyC,EAAVA,QAMjC,OAAO5yB,IAAM7B,KAAKxC,GCxCb,IAAMs3B,GAAQ53B,YACnB,aADmC,uCAEnC,WAAO6F,EAAP,sBAAA5F,EAAA,6DAAe43B,EAAf,EAAeA,gBAAf,kBAEmCP,GAASzxB,GAF5C,uBAEYhB,EAFZ,EAEYA,aACRoD,IAAMiO,QAAQ,2BAHlB,kBAIWrR,GAJX,2DAMWgzB,EAAe,OAAC,EAAD,yBAAC,KAAKh0B,UANhC,0DAFmC,yDAaxBi0B,GAAa93B,YACxB,kBADwC,uCAExC,WAAOxD,EAAP,sBAAAyD,EAAA,6DAAY43B,EAAZ,EAAYA,gBAAZ,kBAEmCH,KAFnC,uBAEY7yB,EAFZ,EAEYA,aAFZ,kBAGWA,GAHX,yDAKWgzB,EAAe,OAAC,EAAD,yBAAC,KAAKh0B,UALhC,yDAFwC,yDAY7Bk0B,GAAS/3B,YAAiB,cAAD,sBAAgB,8BAAAC,EAAA,sEAClBw3B,KADkB,uBAC5Ch0B,EAD4C,EAC5CA,gBACRwE,IAAMiO,QAAQ,4BAFsC,kBAG7CzS,GAH6C,4CAMzCu0B,GAAgBh4B,YAC3B,qBAD2C,uCAE3C,WAAO6F,GAAP,iBAAA5F,EAAA,sEACoC03B,GAAiB9xB,GADrD,uBACUpC,EADV,EACUA,gBACRwE,IAAMiO,QAAQ,0CAFhB,kBAGSzS,GAHT,2CAF2C,uD,UC9B7C,SAASw0B,GAAiBh3B,GACxB,OAAOA,EAAOb,KAAK83B,SAAS,YAG9B,IAAMz3B,GAAe,WAAiB,IAAhBpH,EAAe,uDAAP,GAsB5B,OArBAA,EAAMiN,SAAU,EAChBjN,EAAM8+B,YAAa,EACnB9+B,EAAMmS,KAAO,GACbnS,EAAM7C,KAAO,GACb6C,EAAM2X,MAAQ,GACd3X,EAAMuK,MAAQ,KACdvK,EAAM++B,iBAAkB,EACxB/+B,EAAMuW,WAAY,EAClBvW,EAAM4R,YAAa,EACnB5R,EAAMg/B,8BAA+B,EACrCh/B,EAAMi/B,oBAAqB,EAC3Bj/B,EAAMk/B,2BAA4B,EAClCl/B,EAAMwW,SAAU,EAChBxW,EAAMm/B,uBAAyB,KAC/Bn/B,EAAMo/B,oBAAqB,EAC3Bp/B,EAAMq/B,gBAAiB,EACvBr/B,EAAMs/B,qBAAsB,EAC5Bt/B,EAAMu/B,sBAAuB,EAC7Bv/B,EAAM0T,sBAAuB,EAC7B1T,EAAMw/B,qBAAuB,IAEtBx/B,GAGT,SAASy/B,GAAez/B,EAAO4H,GAAS,IAAD,EAoBjCA,EAAOX,QAlBTkL,EAFmC,EAEnCA,KACAhV,EAHmC,EAGnCA,KACAwa,EAJmC,EAInCA,MACAonB,EALmC,EAKnCA,gBACAxoB,EANmC,EAMnCA,UACA3E,EAPmC,EAOnCA,WACAotB,EARmC,EAQnCA,6BACAC,EATmC,EASnCA,mBACAh1B,EAVmC,EAUnCA,UACAi1B,EAXmC,EAWnCA,0BACA1oB,EAZmC,EAYnCA,QACA2oB,EAbmC,EAanCA,uBACAC,EAdmC,EAcnCA,mBACAC,EAfmC,EAenCA,eACAC,EAhBmC,EAgBnCA,oBACAC,EAjBmC,EAiBnCA,qBACA7rB,EAlBmC,EAkBnCA,qBACA8rB,EAnBmC,EAmBnCA,qBAEF33B,QAAQC,IAAIF,EAAOX,SACnBjH,EAAMiN,SAAU,EAChBjN,EAAM8+B,YAAa,EACnB9+B,EAAMmS,KAAOA,EACbnS,EAAM7C,KAAOA,EACb6C,EAAM2X,MAAQA,EACd3X,EAAM++B,gBAAkBA,EACxB/+B,EAAMuW,UAAYA,EAClBvW,EAAM4R,WAAaA,EACnB5R,EAAMg/B,6BAA+BA,EACrCh/B,EAAMi/B,mBAAqBA,EAC3Bj/B,EAAMk/B,0BAA4BA,EAClCl/B,EAAMwW,QAAUA,EAChBxW,EAAMm/B,uBAAyBA,EAC/Bn/B,EAAMo/B,mBAAqBA,EAC3Bp/B,EAAMq/B,eAAiBA,EACvBr/B,EAAMs/B,oBAAsBA,EAC5Bt/B,EAAMu/B,qBAAuBA,EAC7Bv/B,EAAM0T,qBAAuBA,EAC7B1T,EAAMw/B,qBAAuBA,EAC7BtjC,aAAS+N,GAGX,SAASy1B,GAAgB1/B,GACvBoH,GAAapH,GACb9D,kBAASsR,GAGX,SAASmyB,GAAa3/B,EAAO4H,GAC3B,IAAM4C,EAAO,OAAG5C,QAAH,IAAGA,OAAH,EAAGA,EAAQX,QAEG,iCAAzBW,EAAO2C,MAAMC,SACD,iCAAZA,IAEAk1B,GAAgB1/B,GAChB4O,IAAMrE,MAAM,mCAAoC,CAC9Cq1B,QAAS,mBAKf,IAuCan3B,GAvCKtB,YAAY,CAC5BhK,KAAM,OACNiK,aAAcA,KACdc,cAAe,SAACC,GACdA,EACG+F,QAAQqwB,GAAMpwB,SAAS,SAACnO,GACvBA,EAAMiN,SAAU,KAEjBiB,QAAQqwB,GAAM5vB,UAAW8wB,IACzBvxB,QAAQqwB,GAAMvwB,UAAU,SAAChO,EAAO4H,GAC/B83B,GAAgB1/B,GAChB4O,IAAMrE,MAAM3C,EAAO2C,MAAMC,YAE1B0D,QAAQuwB,GAAWtwB,SAAS,SAACnO,GAC5BA,EAAMiN,SAAU,KAEjBiB,QAAQuwB,GAAW9vB,UAAW8wB,IAC9BvxB,QAAQuwB,GAAWzwB,UAAU,SAAChO,EAAO4H,GACpC+3B,GAAa3/B,EAAO4H,GAChB5H,EAAMiN,UACRjN,EAAMuK,MAAQ3C,EAAO2C,MAAMC,QAC3BxK,EAAMiN,SAAU,MAGnBiB,QAAQwwB,GAAOvwB,SAAS,SAACnO,GACxBA,EAAMiN,SAAU,KAEjBiB,QAAQwwB,GAAO/vB,UAAW+wB,IAC1BxxB,QAAQwwB,GAAO1wB,UAAU,SAAChO,EAAO4H,GAChC83B,GAAgB1/B,GAChB4O,IAAMrE,MAAM3C,EAAO2C,MAAMC,YAE1B0D,QAAQywB,GAAc3wB,UAAU,SAAChO,EAAO4H,GACvCgH,IAAMrE,MAAM3C,EAAO2C,MAAMC,YAE1Bq1B,WAAWjB,GAAkBe,OAIHl3B,QAEpB9L,GAAU,CACrB+hC,UACAH,SACAE,cACAE,kBCzIIt4B,GAAgB,CACpBC,IAAK,OACLC,QAAS,EACTC,YACAC,UAAW,ICLEgC,GDQAD,YAAenC,GAAeoC,IEqBtC,IAAM1I,GAAM,CACjBsL,QAhCF,SAA2BmY,GACzB,IAAMvc,EAAO,aACX6C,QAAS,kBACN0Z,GAEL,OAAOlY,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAas0B,YAC5BpzB,WAAY8W,OA0Bd7W,OAtBF,YAAmC,IAC3B1F,EAAU,CACd6C,QAAS,gBACTrM,GAH8B,EAANA,IAK1B,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBAiBjBsB,UAbF,SAA6BizB,GAC3B,IAAM94B,EAAO,aACX6C,QAAS,oBACNi2B,GAEL,OAAOz0B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBCrBP/O,GAASiP,aAAa,CAC1BvO,KAAM,aACN4J,KAAM,cACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM8/B,YAAYA,eAEnCnjC,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAcIg0B,GAPS,CACtBjgC,OACApD,WACA8L,QAPwB8yB,YAAgB,CACxCuE,YAAar3B,KAObhM,WCtBIsD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,oBAAqBI,MAAK,SAACqB,GACtD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAay0B,mBAK9BxjC,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,wBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMkgC,SAASD,gBAEhCtjC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BogC,GAPU,CACvBpgC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCDJ,IAAMjM,GAAM,CAAEsL,QArBrB,YAAyC,IAAfkB,EAAc,EAAdA,WAClBtF,EAAU,CACd6C,QAAS,sBACTs2B,SAAU7zB,GAEZ,OAAOjB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa60B,iBAC5B3zB,WAAY,CAAEH,mBAc4BI,OAV9C,YAAgC,IACxB1F,EAAU,CACd6C,QAAS,qBACTrM,GAH2B,EAANA,IAKvB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,mBCdb80B,GAAa,CAEjBtoB,EAJiB,cAONuoB,GAAwB,CACnCj6B,IAAK,WACLC,QAAS,EACTC,YACAC,UAAW,CAAC,MAAO,WAAY,aAAc,cAC7C+5B,QAASC,YAAcH,KCJnB7jC,GAASiP,aAAa,CAC1BvO,KAAM,UACN4J,KAAM,WACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMkgC,SAASA,YAEhCvjC,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,EACT3F,cAAek6B,KAeFG,GAPM,CACnB3gC,OACApD,WACA8L,QARqB8yB,YAAgB,CACrC2E,SAAUz3B,GACVw3B,aAAcU,GAAmBl4B,UAOjChM,WCQK,IAAMsD,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,iCAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAao1B,+BAoC9Bj0B,OAhCF,YAAgD,IACxC1F,EAAU,CACd6C,QAAS,6BACTrM,GAH2C,EAANA,IAKvC,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA0Ci0B,GACxC,IAAM55B,EAAO,aACX6C,QAAS,iCACN+2B,GAEL,OAAOv1B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA0C+zB,GACxC,IAAM55B,EAAO,aACX6C,QAAS,iCACN+2B,GAEL,OAAOv1B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,4BACN4J,KAAM,sCACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM8gC,UAAUF,6BAEjCjkC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BghC,GAPsB,CACnChhC,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCkBK,IAAMsD,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,wBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaw1B,sBAoC9Br0B,OAhCF,YAAwC,IAChC1F,EAAU,CACd6C,QAAS,qBACTrM,GAHmC,EAANA,IAK/B,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAAkCq0B,GAChC,IAAMh6B,EAAO,aACX6C,QAAS,yBACNm3B,GAEL,OAAO31B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAAkCm0B,GAChC,IAAMh6B,EAAO,aACX6C,QAAS,yBACNm3B,GAEL,OAAO31B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,mBACN4J,KAAM,6BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM8gC,UAAUE,oBAEjCrkC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BmhC,GAPc,CAC3BnhC,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCyBK,IAAMsD,GAAM,CACjBsL,QA/CF,WAAsE,IAAD,yDAAJ,GAAtB81B,EAA0B,EAA1BA,kBACnC30B,EAAI,eACJ20B,EAAoB,CAAEA,kBAAmBA,GAAsB,MAG/Dl6B,EAAO,aACX6C,QAAS,gCACN0C,GAGL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa41B,0BAC5B10B,WAAYF,OAoCdG,OAhCF,YAAiD,IACzC1F,EAAU,CACd6C,QAAS,8BACTrM,GAH4C,EAANA,IAKxC,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA2Cy0B,GACzC,IAAMp6B,EAAO,aACX6C,QAAS,kCACNu3B,GAEL,OAAO/1B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA2Cu0B,GACzC,IAAMp6B,EAAO,aACX6C,QAAS,kCACNu3B,GAEL,OAAO/1B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBCtCP/O,GAASiP,aAAa,CAC1BvO,KAAM,4BACN4J,KAAM,sCACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM8gC,UAAUM,6BAEjCzkC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BuhC,GAPuB,CACpCvhC,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCoBK,IAAMsD,GAAM,CACjBsL,QA1CF,SAAyBqB,GACvB,IAAMzF,EAAO,aACX6C,QAAS,gBACN4C,GAEL,OAAOpB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAas1B,UAC5Bp0B,WAAYA,OAoCdC,OAhCF,YAAiC,IACzB1F,EAAU,CACd6C,QAAS,cACTrM,GAH4B,EAANA,IAKxB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA2B20B,GACzB,IAAMt6B,EAAO,aACX6C,QAAS,kBACNy3B,GAEL,OAAOj2B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA2By0B,GACzB,IAAMt6B,EAAO,aACX6C,QAAS,kBACNy3B,GAEL,OAAOj2B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC5BP/O,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,YACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM8gC,UAAUA,aAEjCnkC,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAiBIw1B,GAPO,CACpBzhC,OACApD,WACA8L,QAVsB8yB,YAAgB,CACtCuF,UAAWr4B,GACXm4B,0BAA2Ba,GAA+Bh5B,QAC1Du4B,iBAAkBU,GAAsBj5B,QACxC24B,0BAA2BO,GAA+Bl5B,UAO1DhM,WC5BIsD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,sBAAuBI,MAAK,SAACqB,GACxD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAao2B,qBAK9BnlC,GAASiP,aAAa,CAC1BvO,KAAM,aACN4J,KAAM,mBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAIC,gBAE3BnlC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BgiC,GAPS,CACtBhiC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,UCDJ,IAAMjM,GAAM,CACjBsL,QAtBF,WACE,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,yBAA0BI,MAAK,SAACqB,GAC3D,MAAO,CAAE9J,KAAM8J,EAAEC,aAAaw2B,uBAqBhCp1B,UAjBF,SAAwBq1B,GACtB,OAAO32B,IAAM7B,KAAK,CAAEK,QAAS,sBAAuBm4B,eAAc/3B,MAAK,WACrE,MAAO,CAAEzI,KAAM,CAAEwgC,mBAgBnBhyB,UAZF,YAA0E,IAAzCgyB,EAAwC,EAA5CxkC,GAA4C,IAA5BykC,kBACrCC,EAAc,CAAE1gC,KAAMwgC,GAC5B,OAA6B,UAF0C,UAGnEE,EACA72B,IACG7B,KAAK,CAAEK,QAAS,yBAA0Bm4B,eAC1C/3B,MAAK,kBAAMi4B,OCbd1lC,GAASiP,aAAa,CAC1BvO,KAAM,YACN4J,KAAM,wBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAIre,QAAQ4e,WACvCtzB,cAAe,CAAEC,SAAU,SAACxK,GAAD,OAAOA,EAAE09B,eAEhCtlC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BsiC,GAPO,CACpBtiC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,SCmCIs2B,GApDM,CACnBC,KAAM,WACNC,KAAM,QACNC,KAAM,aACNC,KAAM,aACNC,KAAM,aACNC,KAAM,aACNC,KAAM,aACNC,KAAM,aACNC,KAAM,YACNC,KAAM,aACNC,KAAM,WACNC,KAAM,SACNC,KAAM,aACNC,KAAM,SACNC,KAAM,QACNC,KAAM,WACNC,KAAM,OACNC,KAAM,OACNC,KAAM,UACNC,KAAM,qBACNC,KAAM,kBACNC,KAAM,qBACNC,KAAM,gBACNC,KAAM,WACNC,KAAM,UACNC,KAAM,KACNC,KAAM,cACNC,KAAM,WACNC,KAAM,iBACNC,KAAM,gBACNC,KAAM,iBACNC,KAAM,WACNC,KAAM,WACNC,KAAM,OACNC,KAAM,kBAGNC,KAAM,eACNC,KAAM,gBACNC,KAAM,iBACNC,KAAM,cACNC,KAAM,WACNC,KAAM,qBACNC,KAAM,UAENC,KAAM,eACNC,KAAM,iBACNC,KAAM,cACNC,KAAM,iB,GC3CN5oC,aAAkB,CAChBC,OAAQ4lC,GAAc5lC,OACtBE,QAAS0lC,GAAc1lC,QACvB4wB,gBAAiB,gBAAGpwB,EAAH,EAAGA,KAAH,IAASV,OAAUgB,EAAnB,EAAmBA,GAAIwkC,EAAvB,EAAuBA,WAAcl7B,EAArC,EAAqCA,KAArC,gBACZymB,oBAAUrwB,GADE,YACOM,GAAMwkC,EADb,YAEJ,YAATl7B,EAAqB,QAAmB,YAATA,EAAqB,UAAY,OAN5Cs+B,G,GAAbxoC,YAAsCyoC,G,GAAXvoC,UCS3BwoC,GAXE,CAEfxlC,IAAKylC,GAAYzlC,IAEjBpD,QAAS6oC,GAAY7oC,QACrBsD,UAAWulC,GAAY/oC,OAAOwD,UAE9BE,OAAQklC,GACRnlC,OAAQolC,ICLJG,GAAgB,SAAChzB,GAAO,IAE1BhV,EAOEgV,EAPFhV,GACAioC,EAMEjzB,EANFizB,SAHyB,EASvBjzB,EALFF,OAAQozB,OAJiB,MAIA,GAJA,EAKzBzxB,EAIEzB,EAJFyB,YACA1W,EAGEiV,EAHFjV,MACQooC,EAENnzB,EAFFozB,OACG7kC,EARsB,aASvByR,EATuB,2DAUrBF,EAASozB,EAAe3hC,KAAI,SAAC8hC,GAAD,OAAOxD,GAAawD,MACtD,MAAO,CACLroC,KACAyW,cACA1W,QACAqoC,OAAQD,EACR5kC,OAAO,2BAAMA,GAAP,IAAe+kC,SAAU,YAC/BL,WACAnzB,WAIEyzB,GAAsB,SAACvzB,GAAO,IAExBwzB,EAGNxzB,EAHFzR,OAF+B,EAK7ByR,EAFFF,OAAQozB,OAHuB,MAGN,GAHM,EAI5BO,EAJ4B,aAK7BzzB,EAL6B,qBAO7BzR,EAAM,eAAQilC,GAElB90B,OAAOC,QAAQpQ,GAAQqQ,SAAQ,YAAmB,IAAD,mBAAhB/K,EAAgB,KAAXpF,EAAW,KAC3CmzB,iBAAOnzB,WAAeF,EAAOsF,MAGnC,IAAMiM,EAASozB,EAAe3hC,KAAI,SAAC8hC,GAAD,OAChCK,kBAAQ7D,IAAc,SAAC8D,GAAD,OAAOA,IAAMN,QAErC,OAAO,uCAAKI,GAAallC,GAAzB,IAAiCuR,YAsC5B,IAAMxS,GAAM,CACjBsL,QApCF,WACE,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,iBAAkBI,MAAK,SAACqB,GACnD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa66B,UAAUriC,IAAIyhC,SAmC9C94B,OA/BF,YAA+B,IAAPlP,EAAM,EAANA,GACtB,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,cAAerM,GAAIA,IAAMyM,MAAK,SAACqB,GAC1D,MAAO,CAAE9J,KAAMgkC,GAAcl6B,EAAEC,mBA8BjCoB,UA1BF,SAAyBs5B,GACvB,OAAO56B,IACJ7B,KAAK,CAAEK,QAAS,iBAAkB9I,OAAQglC,GAAoBE,KAC9Dh8B,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAMgkC,GAAcl6B,EAAEC,mBAuBnCsB,UAnBF,SAAyBo5B,GACvB,OAAO56B,IACJ7B,KAAK,CAAEK,QAAS,iBAAkB9I,OAAQglC,GAAoBE,KAC9Dh8B,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAMgkC,GAAcl6B,EAAEC,mBAgBnCyE,UAZF,cAAgD,IAArBxS,EAAoB,EAApBA,GAAQoJ,EAAY,EAAZA,SACjC,OAAOyE,IAAM7B,KAAK,CAAEK,QAAS,iBAAkBrM,OAAMyM,MAAK,WAExD,OADArD,EAAS0+B,GAAS5oC,QAAQsT,UAAU,CAAExS,KAAIykC,mBAAmB,KACtD,CAAEzgC,KAAMhE,QCpEbhB,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,cACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAIre,QAAQA,WAEnC7mB,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAeIw5B,GAPK,CAClBzlC,OACAtD,UACAE,WACA8L,QAToB8yB,aAAgB,CACpC/X,QAAS/a,GACT25B,UAAWC,GAAc55B,WCjBrB1I,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,iBAAkBI,MAAK,SAACqB,GACnD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa86B,gBAK9B7pC,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,cACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAI0E,WAE3B5pC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BymC,GAPM,CACnBzmC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCjBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,2BAA4BI,MAAK,SAACqB,GAC7D,MAAO,CAAE9J,KAAM8J,EAAEC,aAAai7B,0BAK9BhqC,GAASiP,aAAa,CAC1BvO,KAAM,mBACN4J,KAAM,wBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAI6E,qBAE3B/pC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B4mC,GAPe,CAC5B5mC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCxBI,SAAe46B,GAA9B,mC,8CAAe,WAA0BC,GAA1B,SAAAjgC,EAAA,+EACN,IAAImD,SAAQ,SAAC+8B,EAAS98B,GAC3B,IAAM+8B,EAAS,IAAIC,WACnBD,EAAOE,cAAcJ,GACrBE,EAAOG,OAAS,kBAAMJ,EAAQC,EAAOvoB,OAAO2oB,QAAQ,OAAQ,MAC5DJ,EAAOK,QAAU,SAAC78B,GAAD,OAAWP,EAAOO,QALxB,4C,sBCIR,SAAe88B,GAAtB,mC,8CAAO,mCAAAzgC,EAAA,6DAAkCnJ,EAAlC,EAAkCA,GACjCwJ,EAAU,CACdqgC,OAAQ,OACRj+B,QAAS,CAAE,eAAgB,oBAC3B2mB,KAAMxhB,KAAKC,UAAU,CACnBjF,MAAO,KACPM,QAAS,gBACTrM,KACAwM,UAAW3N,kBARV,SAegBirC,MAAMz+B,IAAY,YAAa7B,GAf/C,UAeDkD,EAfC,OAmBQ,qBAFAA,EAASd,QAAQ+a,IAAI,gBAjB7B,iCAoBgBja,EAASq9B,OApBzB,cAoBGA,EApBH,yBAqBIz9B,QAAQC,OAAOw9B,EAAKp9B,kBArBxB,iCAwBED,EAASs9B,QAxBX,6C,sBA2BA,SAAeC,GAAtB,mC,8CAAO,+BAAA9gC,EAAA,6DAAqCnJ,EAArC,EAAqCA,GACpCwJ,EAAU,CACdxJ,KACAqM,QAAS,oBAHN,kBAKEwB,IAAM7B,KAAKxC,IALb,4C,sBAQA,SAAe0gC,GAAtB,mC,8CAAO,qCAAA/gC,EAAA,6DAAqCkD,EAArC,EAAqCA,QAASrM,EAA9C,EAA8CA,GAAImqC,EAAlD,EAAkDA,MAAlD,SACyBA,EAAMld,OAAN,uCAAa,WAAOmd,EAAShB,GAAhB,eAAAjgC,EAAA,sEACnBggC,GAAWC,GADQ,cACnCiB,EADmC,gBAE5BD,EAAQ72B,OAAO,CAAC,CAAE82B,UAASC,iBAAkBlB,EAAK1pC,QAFtB,mFAAb,wDAG3B,IAJE,cACC6qC,EADD,OAKC/gC,EAAU,CACd6C,UACArM,KACAuqC,mBARG,kBAUE18B,IACJ7B,KAAKxC,EAAS,CAAE0C,OAAQ,CAAEP,QAAS,KACnCc,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAZrB,4C,sBCYA,IAAMzL,GAAM,CACjBsL,QAjDF,SAAyBmY,GACvB,IAAMvc,EAAO,aACX6C,QAAS,gBACN0Z,GAEL,OAAOlY,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAay8B,UAC5Bv7B,WAAY8W,OA2Cd7W,OAvCF,YAAiC,IACzB1F,EAAU,CACd6C,QAAS,cACTrM,GAH4B,EAANA,IAKxB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBAkCjBsB,UA9BF,SAA2Bo7B,GACzB,IAAMjhC,EAAO,aACX6C,QAAS,kBACNo+B,GAEL,OAAO58B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAwBXoB,UArBF,SAA2Bu7B,GACzB,IAAMlhC,EAAO,aACX6C,QAAS,kBACNq+B,GAEL,OAAO78B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAeX48B,iBAZF,SAAqC57B,GACnC,OAAOm7B,GAAoB,aACzB79B,QAAS,4BACN0C,MCrCD/P,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,gBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAIoG,aAE3BI,GAAYv8B,aAAoB,CAAErP,UAAQsD,SAE1CqoC,GAAmBzhC,YACvB,mCADuC,uCAEvC,WAAO6F,GAAP,eAAA5F,EAAA,sEACyB7G,GAAIqoC,iBAAiB57B,GAD9C,cACQrC,EADR,yBAESA,GAFT,2CAFuC,uDAQnCxN,GAAO,2BAAQ0rC,IAAR,IAAmBD,sBAE1B3/B,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,EACT9D,cAAe,SAACC,EAAS8G,GACvB7G,YACED,EACAxL,GAAQyrC,kBACR,SAACpoC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,SAalB6mC,GAPO,CACpBvoC,OACApD,WACA8L,WACAhM,WCvCIsD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,kBAAmBI,MAAK,SAACqB,GACpD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa+8B,iBAK9B9rC,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,eACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAI2G,YAE3B7rC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B0oC,GAPK,CAClB1oC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCnBL08B,GAAqB,SAACloC,GAC1B,IAAME,EAAUF,EAAOE,QAAQsD,KAAI,SAACoa,GAClC,OAAO,2BAAKA,GAAZ,IAAesB,OAAQ4iB,GAAalkB,EAAEsB,aAExC,OAAO,2BAAKlf,GAAZ,IAAoBE,aAGhBioC,GAA2B,SAAC,GAG3B,IAFIC,EAEL,EAFJloC,QACGmoC,EACC,4BACEnoC,EAAU6R,iBAAOq2B,EAAiB,MAAM5kC,KAAI,SAACoa,EAAGgO,GAAJ,MAAa,CAC7D1M,OAAQymB,kBAAQ7D,IAAc,SAAC8D,GAAD,OAAOA,IAAMhoB,EAAEsB,UAC7CjiB,GAAI2uB,EAAM,MAEZ,OAAO,2BAAKyc,GAAZ,IAA2BnoC,aAqCtB,IAAMX,GAAM,CACjBsL,QAnCF,WACE,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,sBAAuBI,MAAK,SAACqB,GACxD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAas9B,eAAe9kC,IAAI0kC,SAkCnD/7B,OA9BF,YAAsC,IAAPlP,EAAM,EAANA,GAC7B,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,mBAAoBrM,OAAMyM,MAAK,SAACqB,GAC3D,MAAO,CAAE9J,KAAMinC,GAAmBn9B,EAAEC,mBA6BtCoB,UAzBF,SAAgCi8B,GAC9B,OAAOv9B,IACJ7B,KADI,aAEHK,QAAS,uBACN6+B,GAAyBE,KAE7B3+B,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAMinC,GAAmBn9B,EAAEC,mBAmBxCsB,UAfF,SAAgC+7B,GAC9B,OAAOv9B,IACJ7B,KADI,aAEHK,QAAS,uBACN6+B,GAAyBE,KAE7B3+B,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAMinC,GAAmBn9B,EAAEC,oBC9CpC/O,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,mBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAIkH,gBAE3BpsC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BipC,GAPU,CACvBjpC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,oCCZI,SAASi9B,GACtBxoC,GAEC,IAAD,yDADwC,GACxC,IADEsG,YACF,MADS,UACT,EADuBmiC,EACvB,yBACA,OAAOt6B,YAAM,eAACu6B,GAAD,eAAY1oC,IAAb,aACVsG,QACGmiC,IAIP,SAASC,GAAT,GAA0C,IAAxB3+B,EAAuB,EAAvBA,QAAuB,IAAd7E,aAAc,MAAN,GAAM,EACvC,OACE,eAACnH,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMkH,EAAQ,8BAAKA,IAAc,SAEnC,eAACnH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,oBAAGI,UAAU,kBAAkBE,MAAO,CAAEqqC,WAAY,YAApD,SACG5+B,a,cCpBA,SAAS6+B,GAAY5oC,EAAOyoC,GACzC,IAAItJ,EAAUhxB,YACZ,eAAC,GAAD,2BACMnO,GADN,IAEE6oC,QAAS,WACP16B,IAAM06B,QAAQ1J,OAJD,aAQf74B,KAAM,UACN+V,WAAW,EACXgB,cAAc,EACd/X,aAAa,EACbwjC,WAAW,EACXC,SAAU,aACVC,WAAYC,KACTR,IAKT,SAASC,GAAT,GAMI,IALF3+B,EAKC,EALDA,QACAm/B,EAIC,EAJDA,UACAL,EAGC,EAHDA,QAGC,IAFDM,eAEC,MAFS,UAET,MADDC,cACC,MADQ,SACR,EACD,OACE,kCACE,oBAAGhrC,UAAU,iBAAb,SACE,kCAAS2L,MAEX,gBAACs/B,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,WACP6pC,IACAK,KAJJ,SAOGC,IAEH,eAACrqC,EAAA,EAAD,CAAQC,QAAQ,SAASC,QAAS6pC,EAAlC,SACGO,UCzCX,IAAM9pC,GAAM,CACVsL,QAAS,YAAqB,IAAlBkB,EAAiB,EAAjBA,WACV,OAAOjB,IACJ7B,KAAK,CAAEK,QAAS,uBAAwBs2B,SAAU7zB,IAClDrC,MAAK,SAACqB,GACL,MAAO,CACL9J,KAAM8J,EAAEC,aAAau+B,kBACrBr9B,WAAY,CAAEH,oBAMlB9P,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,sBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAU4E,aAEjCnkC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAa/ByhC,GANO,CACpBzhC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,GCtBPxP,aAAkB,CACpBC,OAAQutC,GAAsBvtC,OAC9BE,QAASqtC,GAAsBrtC,UALlBstC,G,GAAbptC,YACqBqtC,G,GAArBlb,oBACWmb,G,GAAXptC,UCEaqtC,GALqB92B,aAAkB,CACpDnW,KAAM,mBACNJ,UAAWotC,KCMEE,GARgBvxB,aAAa,CAC1C3b,KAAM,mBACNN,YAAaqtC,GACbI,YAAa,SAAC7pC,GAAD,MAAY,CACvB2Y,SAAU3Y,EAAM8L,WAChBxI,OAAQ,CAAEwI,WAAY9L,EAAM8L,iBAAciB,OCA/B+8B,GALqBt/B,aAAkB,CACpD9N,KAAM,mBACNN,YAAaqtC,KCoBAM,GAfU,CAEvBzqC,IAAKiqC,GAAsBjqC,IAE3BpD,QAASqtC,GAAsBrtC,QAC/BsD,UAAW+pC,GAAsBvtC,OAAOwD,UAExCC,OAAQiqC,GACRhqC,OAAQ8pC,GACRQ,UAAWP,GAEXjrC,OAAQorC,GACRnlC,YAAaklC,GACblkC,YAAaqkC,I,mBCpBFxqC,GAAM,CACjBsL,QAAS,SAACmY,GACR,IAAMvc,EAAU,CAAE6C,QAAS,wBAI3B,OAHA,OAAI0Z,QAAJ,IAAIA,OAAJ,EAAIA,EAASjX,cACXtF,EAAQsF,WAAR,OAAqBiX,QAArB,IAAqBA,OAArB,EAAqBA,EAASjX,YAEzBjB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAC/B,MAAO,CAAE9J,KAAM8J,EAAEC,aAAak/B,uBAIlC/9B,OAAQ,YAAa,IACb1F,EAAU,CACd6C,QAAS,sBACTrM,GAHgB,EAATA,IAKT,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBAInBoB,UAAW,SAAC+9B,GACV,IAAM1jC,EAAO,aACX6C,QAAS,0BACN6gC,GAEL,OAAOr/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAGbsB,UAAW,SAAC69B,GACV,IAAM1jC,EAAO,aACX6C,QAAS,0BACN6gC,GAEL,OAAOr/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAGb48B,iBAAkB,SAAC57B,GACjB,OAAOm7B,GAAoB,aACzB79B,QAAS,oCACN0C,MCrCH/P,GAASiP,aAAa,CAC1BvO,KAAM,mBACN4J,KAAM,8BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAUwO,qBAGjCE,GAAgB9+B,aAAoB,CAAErP,UAAQsD,SAE9CqoC,GAAmBzhC,YACvB,iDADuC,uCAEvC,WAAO6F,GAAP,eAAA5F,EAAA,sEACyB7G,GAAIqoC,iBAAiB57B,GAD9C,cACQrC,EADR,yBAESA,GAFT,2CAFuC,uDAQnCxN,GAAO,2BAAQiuC,IAAR,IAAuBxC,sBAE9B3/B,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,EACT9D,cAAe,SAACC,EAAS8G,GACvB7G,YACED,EACAxL,GAAQyrC,kBACR,SAACpoC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,SAalBopC,GAPgB,CAC7B9qC,OACAtD,UACAE,WACA8L,YC7CW1I,GAAM,CACjB4M,OAAQ,YAAa,IACb1F,EAAU,CACd6C,QAAS,2BACTrM,GAHgB,EAATA,IAKT,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBAInBH,QAAS,WAEP,OAAOC,IAAM7B,KADG,CAAEK,QAAS,8BACAI,MAAK,SAACqB,GAC/B,MAAO,CAAE9J,KAAM8J,EAAEC,aAAas/B,4BAIlCh+B,UAAW,SAACi+B,GACV,IAAM9jC,EAAO,aACX6C,QAAS,4BACNihC,GAEL,OAAOz/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBCpBT/O,GAASiP,aAAa,CAC1BvO,KAAM,wBACN4J,KAAM,mCACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAU4O,0BAGjCnuC,GAAO,eACRmP,aAAoB,CAAErP,UAAQsD,UAepBirC,GAPqB,CAClCjrC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCyBJ,IAAMjM,GAAM,CACjBsL,QA3CF,WAAkD,IAAD,yDAAJ,GAAfkB,EAAmB,EAAnBA,WACtBC,EAAI,eAASD,EAAa,CAAEA,WAAYA,GAAe,MACvDtF,EAAO,aACX6C,QAAS,mBACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAay/B,aAC5Bv+B,WAAYF,OAoCdG,OAhCF,YAA6B,IACrB1F,EAAU,CACd6C,QAAS,iBACTrM,GAHwB,EAANA,IAKpB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAAuBs+B,GACrB,IAAMjkC,EAAO,aACX6C,QAAS,qBACNohC,GAEL,OAAO5/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAAuBo+B,GACrB,IAAMjkC,EAAO,aACX6C,QAAS,qBACNohC,GAEL,OAAO5/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBChCP/O,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,eACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAU+O,aAAaA,gBAE9CtuC,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAcIm/B,GAPU,CACvBprC,OACApD,WACA8L,QAPyB8yB,YAAgB,CACzC0P,aAAcxiC,KAOdhM,WCtBIsD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,uBAAwBI,MAAK,SAACqB,GACzD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa4/B,sBAK9B3uC,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,oBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAUqK,WAEjC5pC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BsrC,GAPK,CAClBtrC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCjBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,6BAA8BI,MAAK,SAACqB,GAC/D,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa8/B,4BAK9B7uC,GAASiP,aAAa,CAC1BvO,KAAM,eACN4J,KAAM,0BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAUqP,iBAEjC5uC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/ByrC,GAPW,CACxBzrC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCtBEjM,GAAM,CACjBsL,QAAS,SAACmY,GACR,IAAMvc,EAAU,CAAE6C,QAAS,iCAK3B,OAJA,OAAI0Z,QAAJ,IAAIA,OAAJ,EAAIA,EAASjX,cACXtF,EAAQsF,WAAR,OAAqBiX,QAArB,IAAqBA,OAArB,EAAqBA,EAASjX,YAGzBjB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAC/B,MAAO,CAAE9J,KAAM8J,EAAEC,aAAaigC,gCAIlC9+B,OAAQ,YAAa,IACb1F,EAAU,CACd6C,QAAS,+BACTrM,GAHgB,EAATA,IAKT,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBAInBoB,UAAW,SAAC+9B,GACV,IAAM1jC,EAAO,aACX6C,QAAS,mCACN6gC,GAEL,OAAOr/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAGbsB,UAAW,SAAC69B,GACV,IAAM1jC,EAAO,aACX6C,QAAS,mCACN6gC,GAEL,OAAOr/B,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAGbkgC,cAAe,YAAiD,IACxDzkC,EAAU,CACd6C,QAAS,yCACT6hC,0BAH2D,EAA7CA,0BAIdhmC,MAJ2D,EAAlBA,MAKzC+lB,KAL2D,EAAXA,MAOlD,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAGpDogC,cAAe,YAAqD,IAAlDD,EAAiD,EAAjDA,0BAA2BhmC,EAAsB,EAAtBA,MAAO+lB,EAAe,EAAfA,KAC5CzkB,EAAU,CACd6C,QAAS,yCACT6hC,4BACAluC,GAJ+D,EAATA,GAKtDkI,QACA+lB,QAEF,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,mBCpDhD/O,GAASiP,aAAa,CAC1BvO,KAAM,oBACN4J,KAAM,+BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAU2P,sBAGjCH,GAAgB/kC,YACpB,+CADoC,uCAEpC,WAAO6F,GAAP,eAAA5F,EAAA,sEACyB7G,GAAI2rC,cAAcl/B,GAD3C,cACQrC,EADR,yBAESA,GAFT,2CAFoC,uDAQhCyhC,GAAgBjlC,YACpB,+CADoC,uCAEpC,WAAO6F,GAAP,eAAA5F,EAAA,sEACyB7G,GAAI6rC,cAAcp/B,GAD3C,cACQrC,EADR,yBAESA,GAFT,2CAFoC,uDAQhCxN,GAAO,aACX+uC,iBACAE,kBACG9/B,aAAoB,CAAErP,UAAQsD,UAE7B0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,EACT9D,cAAe,SAACC,EAAS8G,GACvB7G,YACED,EACAxL,GAAQ+uC,eACR,SAAC1rC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQivC,eACR,SAAC5rC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,SAalBqqC,GAPiB,CAC9B/rC,OACAtD,UACAE,WACA8L,YCnCK,IAAM1I,GAAM,CAAEsL,QA1BrB,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,iBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa0wB,eAqBevvB,OAjB/C,gBAA4E,IAAlDlP,EAAiD,EAAjDA,GAAiD,IAA7C8pC,aAA6C,SAA3B57B,EAA2B,EAA3BA,SAAc1L,EAAa,EAAbA,UACtDgH,EAAU,CACd6C,QAAS,cACTrM,GAAIA,GAEN,OAAI8pC,EACKj8B,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,iBAGV,CACL/J,KAAMxB,EAAUiuB,WAAWviB,IAAYlO,GACvCkT,aAAa,K,UCrBNlU,GAASiP,aAAa,CACjCvO,KAAM,WACN4J,KAAM,YACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMk8B,UAAUA,aCD1Bv/B,GAAUmP,aAAoB,CACzCrP,OAAQA,GACRsD,IAAKA,K,UCFM0I,GAAUsD,aAAoB,CACzCtP,UACAE,QAASA,GACTqP,SAAS,ICyBI+/B,GAPO,CACpBhsC,OACAtD,UACAE,WACA8L,QAfsB8yB,YAAgB,CACtCW,UAAWzzB,GACXq4B,UAAWkL,GAAuBvjC,QAClC89B,QAAS0F,GAAqBxjC,QAC9B8iC,cAAeW,GAA2BzjC,QAC1CojC,mBAAoBC,GAAwBrjC,QAC5CwiC,aAAcE,GAAiB1iC,QAC/BiiC,kBAAmByB,GAAsB1jC,QACzCqiC,uBAAwBE,GAA4BviC,W,GClBpDjM,aAAkB,CAChBC,OAAQuD,GAAMvD,OACdE,QAASqD,GAAMrD,QACf0wB,OAAQ,CACN/mB,IAAK,OACLpF,MAAO,KANekrC,G,GAAbvvC,YAAsCwvC,G,GAAXtvC,UCE3B,SAASuvC,GAAT,GAA+B,IAAP7uC,EAAM,EAANA,GAC7B2iC,EAAaiM,GAAY,CAAE5uC,OAA3B2iC,SACR,OAAKA,EAEE,qCAAGA,EAASjjC,OAFG,qCAAGM,I,kFCCvBjB,aAAkB,CACpBC,OAAQikC,GAAajkC,OACrBE,QAAS+jC,GAAa/jC,QACtB2wB,QAAS,SAAC7vB,GACR,IAAM8uC,EAAShd,aAAW9xB,GAC1B,OAAkB,IAAX8uC,OAAe/+B,EAAY++B,KARvBC,G,GAAb3vC,YACW4vC,G,GAAX1vC,UACqB2vC,G,GAArB1d,oBCGa,SAAS2d,GAAT,GAQX,IAAD,MAPDlvC,EAOC,EAPDA,GACA0hB,EAMC,EANDA,OAMC,IALDytB,kBAKC,MALY,SAKZ,MAJD75B,iBAIC,aAHD0c,cAGC,MAHQ,GAGR,MAFDrW,cAEC,MAFQ,OAER,EADD/b,EACC,EADDA,MACC,EAC4CovC,GAAW,CACtDhvC,KACA2b,WAFMQ,EADP,EACOA,QAKF3M,EANL,EACgBA,SAKiB8F,EANjC,EAQuBnQ,oBAAS,GARhC,mBAQM0C,EARN,KAQYC,EARZ,KAUG6Y,EAAI,CACNjhB,KAAM,GACNwa,MAAO,GACPk1B,OAAQ,GACRC,cAAe,GACfC,OAAQ,IAwBV,OAtBK5pC,IAAEoN,YAAYqJ,IAAYzW,IAAEoN,YAAY4O,KAAYlS,EACvDmR,EAAEjhB,KAAO,eAAC,KAAD,CAAU6vC,MAAO,MAE1B5uB,EAAEjhB,KAAF,WAAmB,OAAPyc,QAAO,IAAPA,OAAA,EAAAA,EAASzc,OAAQ,cAG/BihB,EAAEzG,MAAF,OAAUiC,QAAV,IAAUA,OAAV,EAAUA,EAASjC,OAEnB,OAAIiC,QAAJ,IAAIA,GAAJ,UAAIA,EAASizB,cAAb,aAAI,EAAiB/wB,SACnBlC,EAAQizB,OAAOx7B,SAAQ,SAACwI,GACtBuE,EAAEyuB,OAAOtxB,KAAK,CACZra,MAAO4Y,aAAYD,EAAMkM,OAAQlM,EAAMozB,WACvClmC,KAAM8S,EAAM9S,UAKlBqX,EAAEyuB,OAAOtxB,KAAK,CAAEra,MAAO4Y,aAAW,OAACqF,QAAD,IAACA,OAAD,EAACA,EAAQtF,OAAQ9S,KAAM6lC,KAEzD,OAAIhzB,QAAJ,IAAIA,OAAJ,EAAIA,EAASjU,QAAOyY,EAAE2uB,OAAOxxB,KAAK3B,EAAQjU,QAC1C,OAAIiU,QAAJ,IAAIA,GAAJ,UAAIA,EAAS1N,aAAb,aAAI,EAAgB4P,UAAQsC,EAAE2uB,OAAS3uB,EAAE2uB,OAAO/7B,OAAO4I,EAAQ1N,QAG7D,uCACE,uBAAMzM,QAAS,kBAAOwN,GAAW1H,GAAQ,IAAzC,SACE,uBAAMI,MAAM,kBAAZ,SACGxC,IAAEoN,YAAYlT,GAAS+gB,EAAEjhB,KAAOE,MAGrC,gBAACuI,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQ,kBAAMP,GAAQ,IACtBqqB,kBAAgB,gCAHlB,UAKE,eAAChqB,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,gBACG2gB,QADH,IACGA,OADH,EACGA,EAAGjhB,SAIR,gBAACyI,GAAA,EAAMK,KAAP,WACE,oBAAGpH,UAAU,kBAAb,gBAAgCsgB,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAQhiB,OACxC,wBAAO0B,UAAU,cAAjB,gBAAgCuf,QAAhC,IAAgCA,GAAhC,UAAgCA,EAAG2uB,cAAnC,aAAgC,EAAWroB,KAAK,QAC/CtG,EAAEyuB,OAAO7oC,KAAI,SAAC6V,EAAOuS,GAAR,OACZ,eAAC8gB,GAAD,CACEvnC,MAAK,iBAAYkU,EAAM9S,KAAlB,KACL7F,MAAO2Y,EAAM3Y,MAFf,SAKE,eAACsZ,GAAA,EAAD,CAAKX,MAAOA,EAAM3Y,SALpB,gBAGgBkrB,OAKlB,eAAC8gB,GAAD,CAAcvnC,MAAM,QAAQzE,OAAQ,OAADkd,QAAC,IAADA,OAAA,EAAAA,EAAGzG,SAAS,EAA/C,SACE,eAAC8C,GAAA,EAAD,CACE9C,MAAK,OAAEyG,QAAF,IAAEA,OAAF,EAAEA,EAAGzG,MACVoY,QAAO,OAAEN,QAAF,IAAEA,OAAF,EAAEA,EAAQM,QACjBC,KAAI,OAAEP,QAAF,IAAEA,OAAF,EAAEA,EAAQO,KAHhB,UAKI,OAAD5R,QAAC,IAADA,OAAA,EAAAA,EAAGzG,QAAS,2BAS3B,SAASu1B,GAAT,GAAmD,IAA3BvnC,EAA0B,EAA1BA,MAAOzE,EAAmB,EAAnBA,MAAOvB,EAAY,EAAZA,SACpC,OAAIwD,IAAEoN,YAAYrP,KAAWA,EAAc,KAEzC,uCACE,sBAAKrC,UAAU,qBACf,wBAAOA,UAAU,wBAAjB,SAA0C8G,IAC1C,oBAAG9G,UAAU,YAAb,SAA0Bc,GAAYuB,O,qBCvG7B,SAASisC,GAAT,GAA0C,IAAXztB,EAAU,EAAVA,OACpC0tB,EAAgB1tB,EAAhB0tB,YAEF96B,EADgB85B,KAAdlQ,UAELl7B,QAAO,SAAC8kC,GAAD,OAAsB,IAAfA,EAAEnoC,UAAsBmoC,EAAEroC,KAAO2vC,KAC/CppC,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEtV,KAAM+D,MAAOuR,EAAEhV,OAErC,OAAO,eAAC,KAAD,CAA+BiiB,OAAQA,EAAQzM,QAASX,ICEjE,IAAM+6B,GAAqB,CACzBC,SAAU,gBAAGpsC,EAAH,EAAGA,MAAH,OACR,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,cAAD,OAAgBqB,IAC9BsD,OAAO,SACP+oC,IAAI,sBAJN,SAMGrsC,MAKQ,SAASssC,GAAT,GAMX,IALFtN,EAKC,EALDA,SACA1/B,EAIC,EAJDA,OAIC,IAHDitC,mBAGC,SAFWC,EAEX,EAFDntC,WACGE,EACF,iEACKF,EAAaI,mBACjB,8BAAC,eAAW0sC,IAAuBK,KACnC,CAACA,IAGGhtC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB0Y,EAA3B,EAAUxY,IAAOC,SAAjB,OACJosC,EACE,eAACd,GAAD,CAAapgC,WAAU,OAAEqN,QAAF,IAAEA,OAAF,EAAEA,EAASrN,WAAY9O,GAAE,OAAEmc,QAAF,IAAEA,OAAF,EAAEA,EAASnc,KAE3DyD,IAGN,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,SACRC,KAAMV,EAAW+sC,UAEnB,CACE7vC,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,OACRnD,GAAI,QACJkwC,eAAe,EACf9sC,SAAU,QACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACGyC,EAAM8C,KAAI,SAACC,EAAGsW,GAAJ,OACT,eAAC/b,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMwF,KADR,cAAiBsW,aAQ3B,CACE9c,GAAI,SACJmD,OAAQ,WACR+Y,eAAe,EACf9Y,SAAU,SAAC+Y,GAAa,IAAD,EAMrB,QAJS,OAAPA,QAAO,IAAPA,GAAA,UAAAA,EAASizB,cAAT,eAAiB7oC,KAAI,SAAC6V,GAAD,MAAY,CAC/B3Y,MAAO4Y,aAAYD,EAAMkM,OAAQlM,EAAMozB,WACvClmC,KAAM8S,EAAM9S,WACP,IACK/F,QAAO,SAACiD,GAAD,OAAOA,EAAE/C,UAGhCD,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACGyC,EAAM8C,KAAI,SAACC,EAAGsW,GAAJ,OACT,eAAC/b,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAAC+b,GAAA,EAAD,CAAKX,MAAO5V,EAAE/C,QACd,wCAAU+C,EAAE8C,KAAZ,WAHJ,eAAkBwT,aAW5B,CACE9c,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACuZ,GAAA,EAAD,CAAQ9C,MAAOzW,SAGxC,CAACX,EAAYktC,IAEf,OACE,eAACrtC,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,WACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMy+B,GACFz/B,I,OCrIRjE,aAAkB,CAChBC,OAAQ0jC,GAAiB1jC,OACzBE,QAASwjC,GAAiBxjC,UAHFixC,G,GAAb/wC,YAAyCgxC,G,GAAX9wC,UCK9B+wC,GALWh1B,aAAa,CACrC3b,KAAM,cACNN,YAAa+wC,KCITptC,GAAS,CAAC,OAAQ,WAAY,QAAS,SAAU,SAuGvD,IAAMoD,GAAcpB,IAAMC,YAAW,WAAkCC,GAAS,IAAxCmB,EAAuC,EAAvCA,QAASwB,EAA8B,EAA9BA,SAAUf,EAAoB,EAApBA,SAAoB,EACnD1B,mBAAS,IAD0C,mBACtEuB,EADsE,KAC/DC,EAD+D,KAO7E,OACE,eAAC7F,GAAA,EAAK8F,QAAN,CACE3B,IAAKA,EACLxB,MAAOiD,EACPG,SAAU,SAACC,GACTH,EAASG,EAAEC,OAAOtD,OACdoD,GACFA,EAASC,EAAEC,OAAOtD,QAGtBuD,UAfgB,SAACC,GACG,KAAlBA,EAAMC,SACRd,EAAQM,IAcRkB,SAAUA,O,SC1ED0oC,GAjDiBvrC,IAAMC,YACpC,WAQEC,GACI,IAPFxB,EAOC,EAPDA,MAOC,IAND5B,eAMC,SALDiN,EAKC,EALDA,WAKC,IAJDuF,mBAIC,MAJa,oBAIb,EAHErR,EAGF,iEAC2BisC,GAAsB,CAClD3oC,OAAQ,CAAEwI,cACV6M,SAAU7M,IAFJ2zB,EADL,EACKA,SAAUjzB,EADf,EACeA,QAKZqF,EAAWnP,IAAEoP,OACjB2tB,EACGl/B,QAAO,SAACod,GAAD,OAAsB,IAAfA,EAAEzgB,UAAsBygB,EAAE3gB,KAAOyD,KAC/C8C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEtV,KAAM+D,MAAOquB,aAAW9c,EAAEhV,QAGhD,SAGEiV,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAW9F,EACX+F,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OC/CG,SAASutC,GAAT,GAA6C,IAApBroC,EAAmB,EAAnBA,MAAOhG,EAAY,EAAZA,SAC7C,OACE,eAACnB,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,qBAAIhB,GAAIkI,EAAMmS,cAAd,SAA8BnS,QAGjChG,O,cCRM,SAASsuC,GAAT,GAA+D,IAAxCC,EAAuC,EAAvCA,OAAuC,IAA/Bn7B,iBAA+B,SAATtS,EAAS,uCAC3E,OACE,eAAC,KAAD,yBAAOoF,KAAK,MAASpF,GAArB,aACE,iCACGytC,EAAOlqC,KAAI,SAACyO,EAAG07B,GACd,OAAgB,KAAX,OAAD17B,QAAC,IAADA,OAAA,EAAAA,EAAG27B,MAAsB,KAE3B,uDAAyC37B,QAAzC,IAAyCA,OAAzC,EAAyCA,EAAG47B,UAA5C,cACE,qBAAIC,MAAM,MAAV,SAAkBv7B,EAAuB,eAAC,KAAD,IAAXN,EAAE87B,SAChC,qBAAI1vC,UAAS,OAAE4T,QAAF,IAAEA,OAAF,EAAEA,EAAG5T,UAAlB,SACIkU,EAAsB,eAAC,KAAD,IAAVN,EAAEvR,WAHpB,4BAA8BitC,Y,cCT3B,SAASK,GAAT,GAAmC,IAAb7uC,EAAY,EAAZA,SACnC,OAAO,qBAAId,UAAU,+BAAd,SAA8Cc,ICGxC,SAAS8uC,GAAT,GAOX,IANF9oC,EAMC,EANDA,MACA+oC,EAKC,EALDA,QACAC,EAIC,EAJDA,KACAC,EAGC,EAHDA,WACAjvC,EAEC,EAFDA,SACAkvC,EACC,EADDA,gBAEMC,EAAW3rC,IAAEoN,YAAYs+B,GAC3BrsC,IAAMusC,SAAS/qC,IAAIrE,GAAU,SAACye,GAAD,oBAAOA,QAAP,IAAOA,GAAP,UAAOA,EAAG3d,aAAV,aAAO,EAAUkF,SAC9CkpC,EAEAlpC,IAAO0xB,SAAS1xB,MAAQA,GAE5B4T,qBAAU,WACRqf,OAAOoW,SAAS,EAAG,KAClB,IAOH,IAAMC,GAA0B,IAAfL,EAAuB,EAAI,EAEtCM,EAAW,CAAE13B,GAAI,GAAKy3B,IADS,IAApBJ,EAA4B,EAAI,GACAt3B,GAAI,GAAK03B,EAAU33B,GAAI,IAExE,OACE,eAAC63B,GAAA,EAAD,CAAWC,OAAK,EAAhB,SACE,gBAAC5wC,EAAA,EAAD,CAAKK,UAAU,OAAf,WACkB,IAAf+vC,EACC,eAACnwC,EAAA,EAAD,CAAKI,UAAU,mBAAmB0Y,GAAI,EAAtC,SACGq3B,IAED,KACJ,gBAACnwC,EAAA,EAAD,2BAASywC,GAAT,IAAmBrwC,UAAU,UAA7B,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,8BAAKiwC,GAAoB/oC,QAI7B,eAACnH,EAAA,EAAD,CAAKK,UAAU,oBAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,oBAAGI,UAAU,OAAb,SAAqB8vC,QAGzB,eAACnwC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMkB,eAKbmvC,EAAW,eAACO,GAAD,CAAiBP,SAAUA,IAAe,UAM9D,SAASO,GAAT,GAAwC,IAAbP,EAAY,EAAZA,SACzB,OACE,eAACrwC,EAAA,EAAD,CACES,GAAG,MACHsY,GAAI,EACJ3Y,UAAU,eAHZ,SAWE,eAAC,GAAD,CAAYpB,GAAG,UAAf,gBACGqxC,QADH,IACGA,OADH,EACGA,EAAU9qC,KAAI,SAACoa,GAAD,OACb,qBAAIvf,UAAU,OAAd,SACE,oBACEywC,KAAI,WAAMlxB,EAAEtG,eACZjZ,UAAU,kCAFZ,SAIGuf,KALL,cAAiCA,WCxE3C,SAASmxB,GAAT,GAA0C,IAAvB31B,EAAsB,EAAtBA,QAAS7G,EAAa,EAAbA,UAC1B,OAAI5P,IAAEoN,YAAYqJ,GAEd,eAACpb,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMsU,EAAY,4CAAoB,yDAM1C,gBAACvU,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKwlB,IAAK,EAAV,gBAAcrK,QAAd,IAAcA,OAAd,EAAcA,EAASzc,OACvB,eAACsB,EAAA,EAAD,UACE,eAACwvC,GAAD,CACEC,OAAQ,CACN,CACEK,OAAQ,SACRrtC,MAAO0Y,EAAQjc,SAAW,WAAa,UAEzC,CAAE4wC,OAAQ,KAAMrtC,MAAO0Y,EAAQnc,YAQ5B,SAAS+xC,KACtB,IAAM/xC,EAAKgyC,SAASC,eAAYjyC,IACxBmc,EAAY6yB,GAAW,CAAEhvC,OAAzBmc,QACR,OACE,eAAC60B,GAAD,CAAM9oC,OAAc,OAAPiU,QAAO,IAAPA,OAAA,EAAAA,EAASzc,MAAOyc,EAAQzc,KAAO,UAA5C,SACE,eAAC6wC,GAAD,CAAeroC,MAAM,UAArB,SACE,eAAC4pC,GAAD,CAAS31B,QAASA,KADe,oBCrCzC,IAAMpZ,GAAS,CAAC,OAAQ,QAAS,QAAS,SAAU,SCFpD,IAKemvC,GALgBr8B,aAAkB,CAC/CnW,KAAM,cACNJ,UAAW8wC,KCGE+B,GALgB3kC,aAAkB,CAC/C9N,KAAM,cACNN,YAAa+wC,KCeAiC,GAdK,CAElB9vC,IAAKogC,GAAiBpgC,IAEtBpD,QAASwjC,GAAiBxjC,QAC1BsD,UAAWkgC,GAAiB1jC,OAAOwD,UAEnCE,OAAQytC,GACR1tC,OAAQ2tC,GAER5uC,OAAQ6uC,GACR5oC,YAAayqC,GACbzpC,YAAa0pC,ICSf,IAqBeE,GArBC,CAEd/vC,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQusC,GACRtsC,OAAQqsC,GACR/B,UAAWiC,GAEXqD,QACA3vC,SACAsB,KAAMirC,GACNqD,oBACAC,gBJnCa,YAAiD,IAAf1jC,EAAc,EAAdA,WAAc,EACxBmgC,GAAsB,CACzD3oC,OAAQ,CAAEwI,cACV6M,QAAQ,IAFF8mB,EADqD,EACrDA,SAAUjzB,EAD2C,EAC3CA,QAASiD,EADkC,EAClCA,MAK3B,OACE,eAACs9B,GAAD,CACEtN,SAAUA,EACV1/B,OAAQA,GACRuS,UAAW9F,EACX8b,UAAW,kBAAM7Y,EAAM,CAAE3D,gBACzB8b,cAAe,KIwBnB6nB,YXhCa,YAAgE,IAAlC5qC,EAAiC,EAAjCA,KAAMQ,EAA2B,EAA3BA,OAAQqqC,EAAmB,EAAnBA,gBAAmB,EAC1CvtC,mBAAS,IADiC,mBACrEwtC,EADqE,KAC1DC,EAD0D,OAE9CztC,oBAAS,GAFqC,mBAErEqK,EAFqE,KAE5DqjC,EAF4D,OAGlD1tC,mBAAS,IAHyC,mBAGrEsJ,EAHqE,KAG9DqkC,EAH8D,OAItC3tC,mBAAS,IAJ6B,mBAIrE4tC,EAJqE,KAIxDC,EAJwD,KAMtE/tC,EAAM2a,mBAEZ9D,qBAAU,WACJjU,GAAM5C,EAAI4K,QAAQojC,UACrB,CAACprC,IAEJ,IAAMxD,EAAW,WACfwuC,GAAW,GACXhlC,IACG7B,KAAK,CACJK,QAAS,gBACT/F,OAAQysC,EACRvQ,aAAc/zB,IAEfhC,MAAK,SAACsU,GACL6xB,EAAa7xB,EAAOhT,aAAa00B,aAElC51B,OAAM,SAACkU,GACN5P,IAAMrE,MAAMiU,GACZ3W,QAAQC,IAAI0W,MAEbgQ,SAAQ,WACP8hB,GAAW,GACX5tC,EAAI4K,QAAQojC,YAIlB,OACE,gBAAC9qC,GAAA,EAAD,CACEC,KAAK,KACLP,KAAMA,EACNQ,OAAQA,EACR6qC,gBAAgB,mBAJlB,UAME,eAAC/qC,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,uCAIF,gBAACmI,GAAA,EAAMK,KAAP,WACE,eAACzH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,WACE,gBAACZ,GAAA,EAAKoF,KAAN,CAAW9E,UAAU,kBAArB,mDACwC,yCADxC,uCAIA,eAAC+E,GAAD,CACElB,IAAKA,EACL4B,SAAU,SAACsO,GACT/K,QAAQC,IAAI8K,GACZ69B,EAAe79B,IAEjB/O,QAAS/B,EACTuD,SAAU4H,WAKlB,eAACzO,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,0BACA,eAAC,GAAD,CACEpB,GAAG,cACHmzC,aAAc1kC,EACd5H,SAAU,SAACsO,GACT/K,QAAQC,IAAI8K,GACZ29B,EAAS39B,IAEXvN,SAAU4H,EACV/L,MAAOgL,EACP5M,SAAO,SAIb,eAACd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQE,QAASqC,EAAjB,oBAGJ,eAACtD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC+uC,GAAD,CACEhtC,OAAQA,GACR0/B,SAAUkQ,EACV3C,aAAa,EACbltC,WAAY4vC,eW3DxBN,YAAaA,ICvCA,SAASgB,GAAT,GAA+B,IAAPpzC,EAAM,EAANA,GAC7B2iC,EAAaiM,GAAY,CAAE5uC,OAA3B2iC,SAER,OAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAU3iC,IAGb,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,SAIE,eAAC,OAAD,CAAM7G,UAAU,aAAae,GAAI,CAAEC,SAAS,cAAD,OAAgBpC,IAA3D,gBACG2iC,QADH,IACGA,OADH,EACGA,EAAUjjC,SARS,sC,uBCAtB2zC,GAAeC,aAAa,CAChCC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBziC,UAAW,YAAe,IAAD,EAAXhN,EAAW,EAAXA,KACZ,MAAM,GAAN,QAAc,OAAJA,QAAI,IAAJA,GAAA,UAAAA,EAAM0vC,gBAAN,eAAgBhK,QAAQ,QAAS,MAAO,GAAlD,YAAwD1lC,EAAKpE,QAE/DwuB,MAAM,IA2DOulB,GAxDS5uC,IAAMC,YAC5B,WAYEC,GACI,IAXFxB,EAWC,EAXDA,MAWC,IAVD5B,eAUC,SATD+xC,EASC,EATDA,SASC,IARDv/B,mBAQC,MARa,qBAQb,MAPDE,mCAOC,aANDhR,cAMC,MANQ,SAACod,GAAD,QACS,IAAfA,EAAEzgB,UAAsBygB,EAAE3gB,KAAOyD,MAChCmwC,GAAYA,IAAajzB,EAAEkzB,aAI9B,EAHE7wC,EAGF,sGAC4B2rC,KAAvBlQ,EADL,EACKA,UAAWjvB,EADhB,EACgBA,QADhB,EAEyCskC,eAApC70B,SAAY80B,GAFjB,aAEkC,GAFlC,GAEiBA,aAEdl/B,EAAW4pB,EACdl7B,OAAOA,GACPgD,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEtV,KAAM+D,MAAOuR,EAAEhV,GAAI0zC,SAAU1+B,EAAE0+B,aAElDM,MAAK,SAAC7qC,EAAG4b,GACR,IAAMkvB,EAAe,SAACvd,GAAD,MACF,MAAjBqd,IAAwB,OAACrd,QAAD,IAACA,OAAD,EAACA,EAAKgd,UAAuBhd,EAAIgd,SAAhBhd,EAAI92B,OACzCs0C,EAAaD,EAAa9qC,GAC1BgrC,EAAaF,EAAalvB,GAChC,OAAOmvB,EAAW75B,cAAc+5B,cAAcD,EAAW95B,kBAGzDpF,EAAc,KAUlB,OATIxR,IAEAwR,EADEpT,EACY0S,EACVM,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UACxCA,EAAM8C,KAAI,SAAC4O,GAAD,OAAOzP,IAAE0P,KAAKP,GAAU,SAACK,GAAD,OAAOA,EAAEzR,QAAU0R,QAE3CzP,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAW9F,EACX/L,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,EACbg/B,aAAcA,IACVrwC,OC3DZ,SAASqxC,GAAT,GAOI,IANF30C,EAMC,EANDA,KACA40C,EAKC,EALDA,WACAC,EAIC,EAJDA,SACAC,EAGC,EAHDA,cACAC,EAEC,EAFDA,MACAC,EACC,EADDA,aAEMC,EAA0Bvc,KAAMwc,UAAUL,GAC1CM,EAAiBzc,KAAMwc,UAAUJ,GACvC,OACE,uCACE,eAACzzC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,8BAAKtB,QAGT,eAACqB,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACG0zC,EAAe,qDAAkC,KACjDG,EAAiBJ,EAChB,sDAAwBrc,KAAM0c,QAAQD,MACpC,KACHF,EAA0BF,EACzB,yDAC0Brc,KAAM0c,QAAQH,MAEtC,UAGPL,EAAW51B,MAAM,cAAcnY,KAAI,SAAC04B,EAAGtQ,GAAJ,OAClC,eAAC5tB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMi+B,KADR,2CAA8CtQ,U,OCjCG5vB,aAAkB,CACzEC,OAAQuD,GAAMvD,OACdE,QAASqD,GAAMrD,UAFI61C,G,GAAb31C,YAAmCE,G,GAAAA,U,iBCG5B01C,GARex1C,eAASC,MAAM,CAC3Cw1C,KAAM3sB,eAAS1oB,MAAM,SAASC,WAAWm2B,IAAI,GAC7Ckf,OAAQ5sB,eAAS1oB,MAAM,gBAAgBo2B,IAAI,GAC3Cmf,eAAgB7sB,eAAS1oB,MAAM,qBAAqBo2B,IAAI,GACxDh2B,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxC6a,WAAY3a,eAAON,WAAWO,SAAQ,KC8BxC,SAASg1C,GAAT,GAAyC,IAAV10C,EAAS,EAATA,MACrBC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CAAY7B,KAAK,QAAQE,MAAM,QAAQuB,aAAa,YAGxD,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,SACLE,MAAM,eACNuB,aAAa,YAInB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,iBACLE,MAAM,mBACNuB,aAAa,iBAMvB,eAACW,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBChFS,SAAS00C,GAAT,GAAgD,IAAjBr1C,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SAChD,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,+BAAD,OAAiCpC,IAFjD,SAIGkC,GAAYlC,ICgCZ,IAAMsC,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,wBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaunC,sBAoC9BpmC,OAhCF,YAAwC,IAChC1F,EAAU,CACd6C,QAAS,qBACTrM,GAHmC,EAANA,IAK/B,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAAkComC,GAChC,IAAM/rC,EAAO,aACX6C,QAAS,yBACNkpC,GAEL,OAAO1nC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAAkCkmC,GAChC,IAAM/rC,EAAO,aACX6C,QAAS,yBACNkpC,GAEL,OAAO1nC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,mBACN4J,KAAM,2BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQF,oBAE/Bp2C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BmzC,GAPc,CAC3BnzC,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,W,GCjBED,aAAkB,CACpBC,OAAQy2C,GAAqBz2C,OAC7BE,QAASu2C,GAAqBv2C,UAJjBw2C,G,GAAbt2C,YACWu2C,G,GAAXr2C,UCKas2C,GAPev6B,aAAa,CACzC3b,KAAM,kBACNN,YAAas2C,GACbnyC,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE9G,MCAlB,IAiBe61C,GAjBS,CAEtBvzC,IAAKmzC,GAAqBnzC,IAE1BpD,QAASu2C,GAAqBv2C,QAC9BsD,UAAWizC,GAAqBz2C,OAAOwD,UAEvCC,OAAQkzC,GACRjzC,OAAQgzC,GAER/yC,MCRa,YAMX,IALF2yC,EAKC,EALDA,iBAKC,IAJDQ,2BAIC,cAHDhzC,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,QAAS,SAAU,oBAElC,EADEC,EACF,iFACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB8xC,EAA3B,EAAU5xC,IAAOC,SAAjB,OACJkyC,EACE,eAACT,GAAD,CAAqBr1C,GAAE,OAAEu1C,QAAF,IAAEA,OAAF,EAAEA,EAAiBv1C,GAA1C,SACGyD,IAAK,OAAI8xC,QAAJ,IAAIA,OAAJ,EAAIA,EAAiBv1C,MAG7ByD,IAGN,CACEzD,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,SACJmD,OAAQ,cACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,iBACVC,OAAQS,KACRP,OAAQ,WAGZ,CAACuyC,IAEH,OACE,eAACnzC,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,qBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMsxC,GACFtyC,KD9CRiB,KAAMoxC,GACNlxC,ONRa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQwwC,IAClB1wC,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAAC0wC,GAAD,CAAqB10C,MAAOA,OMZhCc,OAAQo0C,IEZKG,GANSv2C,eAASC,MAAM,CACrCu2C,kBAAmBr2C,eAASC,MAAM,sBAAsBC,WAAWI,IAAI,IACvED,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxC6a,WAAY3a,eAAON,WAAWO,SAAQ,KCgCxC,SAAS61C,GAAT,GAAmC,IAAVv1C,EAAS,EAATA,MACfC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,oBACLE,MAAM,qBACNuB,aAAa,iBAMvB,eAACW,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBClES,SAASu1C,GAAT,GAA0C,IAAjBl2C,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SAC1C,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,wBAAD,OAA0BpC,IAF1C,SAIGkC,GAAYlC,ICgCZ,IAAMsC,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,kBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaooC,gBAoC9BjnC,OAhCF,YAAkC,IAC1B1F,EAAU,CACd6C,QAAS,eACTrM,GAH6B,EAANA,IAKzB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA4BinC,GAC1B,IAAM5sC,EAAO,aACX6C,QAAS,mBACN+pC,GAEL,OAAOvoC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA4B+mC,GAC1B,IAAM5sC,EAAO,aACX6C,QAAS,mBACN+pC,GAEL,OAAOvoC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,aACN4J,KAAM,qBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQW,cAE/Bj3C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B+zC,GAPQ,CACrB/zC,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,W,GCnBAD,aAAkB,CAChBC,OAAQq3C,GAAer3C,OACvBE,QAASm3C,GAAen3C,UAHAo3C,G,GAAbl3C,YAAuCm3C,G,GAAXj3C,UCO5Bk3C,GAPSn7B,aAAa,CACnC3b,KAAM,YACNN,YAAak3C,GACb/yC,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE9G,GAAK,IAAM8G,EAAEkvC,kBAAoB,OCAnD,IAiBeS,GAjBG,CAEhBn0C,IAAK+zC,GAAe/zC,IAEpBpD,QAASm3C,GAAen3C,QACxBsD,UAAW6zC,GAAer3C,OAAOwD,UAEjCC,OAAQ8zC,GACR7zC,OAAQ4zC,GAER3zC,MCRa,YAMX,IALFwzC,EAKC,EALDA,WAKC,IAJDO,qBAIC,cAHD5zC,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,sBAEf,EADEC,EACF,qEACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB2yC,EAA3B,EAAUzyC,IAAOC,SAAjB,OACJ8yC,EACE,eAACR,GAAD,CAAel2C,GAAE,OAAEo2C,QAAF,IAAEA,OAAF,EAAEA,EAAWp2C,GAA9B,SACGyD,IAAK,OAAI2yC,QAAJ,IAAIA,OAAJ,EAAIA,EAAWp2C,MAGvByD,IAGN,CACEzD,GAAI,qBACJmD,OAAQ,qBACRC,SAAU,oBACVC,OAAQS,KACRP,OAAQ,WAGZ,CAACmzC,IAEH,OACE,eAAC/zC,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,cACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMmyC,GACFnzC,KDhCRiB,KAAMiyC,GACN/xC,ONRa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQuxC,IAClBzxC,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAACuxC,GAAD,CAAev1C,MAAOA,OMZ1Bc,OAAQg1C,IEXKG,GAPOn3C,eAASC,MAAM,CACnCu2C,kBAAmBr2C,eAASC,MAAM,sBAAsBC,WAAWI,IAAI,IACvED,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxCm2C,UAAWz2C,eAASC,MAAM,MAAMC,WAAWI,IAAI,IAC/C6a,WAAY3a,eAAON,WAAWO,SAAQ,KCgCxC,SAASw2C,GAAT,GAAiC,IAAVl2C,EAAS,EAATA,MACbC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,oBACLE,MAAM,cACNuB,aAAa,YAKnB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,YACLE,MAAM,aACN6B,GAAIg1C,GAAUj1C,kBAMxB,eAACM,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBC7ES,SAASk2C,GAAT,GAAwC,IAAjB72C,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACxC,OACE,eAAC,OAAD,CAAMd,UAAU,aAAae,GAAI,CAAEC,SAAS,sBAAD,OAAwBpC,IAAnE,SACGkC,GAAYlC,ICmCZ,IAAMsC,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,gBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa+oC,cAoC9B5nC,OAhCF,YAAgC,IACxB1F,EAAU,CACd6C,QAAS,aACTrM,GAH2B,EAANA,IAKvB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA0B4nC,GACxB,IAAMvtC,EAAO,aACX6C,QAAS,iBACN0qC,GAEL,OAAOlpC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA0B0nC,GACxB,IAAMvtC,EAAO,aACX6C,QAAS,iBACN0qC,GAEL,OAAOlpC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,mBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQsB,YAE/B53C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B00C,GAPM,CACnB10C,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,W,GCnBAD,aAAkB,CAChBC,OAAQg4C,GAAah4C,OACrBE,QAAS83C,GAAa93C,UAHE+3C,G,GAAb73C,YAAqC83C,G,GAAX53C,UCO1B63C,GAPO97B,aAAa,CACjC3b,KAAM,UACNN,YAAa63C,GACb1zC,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE9G,GAAK,IAAM8G,EAAEkvC,kBAAoB,OCAnD,IAiBeoB,GAjBC,CAEd90C,IAAK00C,GAAa10C,IAElBpD,QAAS83C,GAAa93C,QACtBsD,UAAWw0C,GAAah4C,OAAOwD,UAE/BC,OAAQy0C,GACRx0C,OAAQu0C,GAERt0C,MCRa,YAMX,IALFm0C,EAKC,EALDA,SAKC,IAJDO,mBAIC,cAHDv0C,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,sBAEf,EADEC,EACF,iEACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBszC,EAA3B,EAAUpzC,IAAOC,SAAjB,OACJyzC,EACE,eAACR,GAAD,CAAa72C,GAAE,OAAE+2C,QAAF,IAAEA,OAAF,EAAEA,EAAS/2C,GAA1B,SAA+ByD,IAAK,OAAIszC,QAAJ,IAAIA,OAAJ,EAAIA,EAAS/2C,MAEjDyD,IAGN,CACEzD,GAAI,qBACJmD,OAAQ,qBACRC,SAAU,oBACVC,OAAQS,KACRP,OAAQ,WAGZ,CAAC8zC,IAEH,OACE,eAAC10C,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,YACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAM8yC,GACF9zC,KD9BRiB,KAAM4yC,GACN1yC,ONPa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQmyC,IAClBryC,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAACkyC,GAAD,CAAal2C,MAAOA,OMbxBc,OAAQ21C,IEwBH,IAAM70C,GAAM,CACjBsL,QA3CF,WAA+C,IAAD,yDAAJ,GAAfkB,EAAmB,EAAnBA,WACnBC,EAAI,eAASD,EAAa,CAAEA,WAAYA,GAAe,MACvDtF,EAAO,aACX6C,QAAS,gBACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaupC,UAC5BroC,WAAYF,OAoCdG,OAhCF,YAAiC,IACzB1F,EAAU,CACd6C,QAAS,cACTrM,GAH4B,EAANA,IAKxB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA2BooC,GACzB,IAAM/tC,EAAO,aACX6C,QAAS,kBACNkrC,GAEL,OAAO1pC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA2BkoC,GACzB,IAAM/tC,EAAO,aACX6C,QAAS,kBACNkrC,GAEL,OAAO1pC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBClCP/O,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,oBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQ8B,aAE/Bp4C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/Bk1C,GAPO,CACpBl1C,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,W,GChBED,aAAkB,CACpBC,OAAQw4C,GAAcx4C,OACtBE,QAASs4C,GAAct4C,UALVu4C,G,GAAbr4C,YACWs4C,G,GAAXp4C,UACqBq4C,G,GAArBpmB,oBCIaqmB,GAPQv8B,aAAa,CAClC3b,KAAM,WACNN,YAAaq4C,GACbl0C,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE9G,MCYH63C,GAjBgBr4C,eAASC,MAAM,CAC5CqP,WAAYwZ,eAAS1oB,MAAM,YAAYC,WACvCi4C,WAAYn4C,eAASC,MAAM,eAAeC,WAAWI,IAAI,GACzD83C,mBAAoBp4C,eAASC,MAAM,uBAAuBK,IAAI,KAC9D+3C,YAAar4C,eAASC,MAAM,eAAeK,IAAI,KAC/Cg4C,oBAAqB3vB,eAAS1oB,MAAM,aAAao2B,IAAI,GACrDkiB,SAAU5vB,eAAS1oB,MAAM,eAAeo2B,IAAI,GAC5CmiB,qBAAsB7vB,eAAS1oB,MAAM,cAAco2B,IAAI,GACvDoiB,eAAgBz4C,eAASC,MAAM,mBAAmBC,WAClDk3C,QAASp3C,eAASC,MAAM,QACxBw2C,UAAWz2C,eAASC,MAAM,UAC1B23C,SAAU53C,eAASC,MAAM,aAAaK,IAAI,IAC1Cs1C,gBAAiB51C,eAASC,MAAM,iBAChCy4C,cAAe14C,eAASC,MAAM,eAAeK,IAAI,IACjDq4C,UAAW34C,eAASC,MAAM,cAAcK,IAAI,MChBjCs4C,GAAgB,CAC3BC,EAAG,CACDx4C,GAAI,IACJyW,YAAa,cAEfgiC,EAAG,CACDz4C,GAAI,IACJyW,YAAa,QAEfiiC,EAAG,CACD14C,GAAI,IACJyW,YAAa,UAEfkiC,EAAG,CACD34C,GAAI,IACJyW,YAAa,WAEfmiC,EAAG,CACD54C,GAAI,IACJyW,YAAa,OAEfoiC,EAAG,CACD74C,GAAI,IACJyW,YAAa,cAEfqiC,EAAG,CACD94C,GAAI,IACJyW,YAAa,aAEfsiC,EAAG,CACD/4C,GAAI,IACJyW,YAAa,WAEfuiC,EAAG,CACDh5C,GAAI,IACJyW,YAAa,qBAEf+D,EAAG,CACDxa,GAAI,IACJyW,YAAa,MAEfwiC,EAAG,CACDj5C,GAAI,IACJyW,YAAa,UCyBjB,SAASyiC,GAAT,GAAsD,IAAtBx4C,EAAqB,EAArBA,MAAO4D,EAAc,EAAdA,WAAc,EACrB1D,eAAtB6X,EAD2C,EAC3CA,MAAO9X,EADoC,EACpCA,WACTm3C,EAAar/B,EAAM,cAEnB0gC,EACW,MAAfrB,EAAqB,uBAAyB,YAGhD,OADAj3C,eAEE,gBAACC,GAAA,EAAD,WACE,gBAACA,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAD,CAAY7vC,KAAK,KAAKE,MAAM,KAAKgI,UAAU,MAE7C,eAAC5G,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW/tC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAI23C,GACJ90C,YAAa5D,GAAS4D,SAI5B,gBAACxD,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW3kC,KAAZ,CACElL,KAAK,iBACLE,MAAM,kBACNu5B,WAAW,UACXkgB,qBAAmB,EACnBlkB,eAAe,MAGnB,eAACn0B,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW3kC,KAAZ,CACElL,KAAK,kBACLE,MAAM,mBACNu5B,WAAW,UACXkgB,qBAAmB,EACnBlkB,eAAe,SAIrB,gBAACr0B,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC6S,GAAD,CAAYpU,KAAK,aAAaE,MAAM,kBAEtC,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAD,CAAY7vC,KAAK,YAAYE,MAAM,0BAGvB,MAAfk4C,EAAqB,KAAsB,MAAfA,EAC3B,gBAACh3C,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,YACLE,MAAM,aACN6B,GAAIg1C,GAAUj1C,OACdwY,aAAW,GACP,eAGR,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,WACLE,MAAM,YACN6B,GAAIm2C,GAEJ59B,aAAW,GADP,iBAMV,gBAAClZ,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,UACLE,MAAM,WACN6B,GAAI21C,GAAQ51C,OACZwY,aAAW,MAGf,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,kBACLE,MAAM,oBACN6B,GAAIo0C,GAAgBr0C,OACpBwY,aAAW,MAGf,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAD,CAAY7B,KAAK,gBAAgBE,MAAM,yBAI7C,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAD,CACEvB,KAAK,sBACLE,MAAO,WAAau5C,MAGR,MAAfrB,EACC,eAAC92C,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAD,CAAYvB,KAAK,WAAWE,MAAM,wBAElC,KACJ,eAACoB,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAD,CACEvB,KAAK,uBACLE,MAAO,YAAcu5C,SAK3B,gBAACr4C,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,qBACLE,MAAM,sBACN25C,QAAS,MAGb,eAACv4C,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,cACLE,MAAM,cACN25C,QAAS,SAKf,eAACz3C,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAYiH,SAAUtD,EAAzD,uBAMN,SAASwP,GAAT,GAAsE,IAAhDpU,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,oDAI/DwU,aAAc,CAAE9X,SAJ+C,IAEjE+X,MAAS5Q,EAFwD,EAExDA,SAAa4Q,EAF2C,6BAGnD3K,EAHmD,EAGjE4K,WAAc5K,MAHmD,EAO/DlM,eADF+W,aAAgBrT,kBANiD,SASnE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,gBAACkB,GAAA,EAAK8F,QAAN,qCACElH,KAAMA,EACNE,MAAM,OACN6B,GAAG,SACHoF,SAAU,SAACsO,GACTtO,EAASsO,IAEXvN,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAVN,cAYE,yBAAQS,MAAM,KACbiQ,OAAOtP,OAAOm0C,IAAehyC,KAAI,SAACizC,EAAG7qB,GAAJ,OAChC,yBAAkClrB,MAAO+1C,EAAEx5C,GAA3C,SACGw5C,EAAE/iC,aADL,qBAA2BkY,WAK/B,eAAC7tB,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aC3OD,SAAS0sC,GAAT,GAAiD,IAAjBz5C,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACjD,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,iCAAD,OAAmCpC,IAFnD,SAIGkC,GAAYlC,ICHnB,IAce05C,GAdU,CAEvBp3C,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OpCD0B,WAA2B,IAAD,yDAAP,GAAhBzC,EAAuB,EAAvBA,GAAO+O,EAAgB,uBAC9C3F,EAAW0O,cACjB,OAAO,aACL6yB,iBAAkB5iC,uBAChB,SAACgH,GAAD,OACE3F,EAAS7G,GAAMrD,QAAQyrC,iBAAd,aAAiC3qC,MAAO+O,KAAStC,KACxD4jB,OAEJ,CAACjnB,EAAUpJ,KAEVV,GAAU,aAAEU,MAAO+O,MoCRxBrM,OAAQqyC,GAER5wC,OFKa,YAKX,IAAD,IAJDC,OAIC,aAJuB,GAIvB,MAJYA,EAIZ,oBAHDC,EAGC,EAHDA,SAGC,IAFDC,kBAEC,aADD5D,aACC,SAeD,OAdA+2C,GAAa,CACX97B,QAAQ,IAGVy7B,GAAQ10C,OAAO,CACbiZ,QAAQ,IAEV86B,GAAU/zC,OAAO,CACfiZ,QAAQ,IAEVk6B,GAAgBnzC,OAAO,CACrBiZ,QAAQ,IAIR,qCACE,eAAC,KAAD,CACEpX,cAAa,aACX0zC,oBAAqB,EACrBE,qBAAsB,GACnB/zC,GAELC,SAAU,SAACD,GACT,IAAMg0C,EAAiBhgB,KAAMuhB,WAAWv1C,EAAOg0C,gBACzCwB,EAAkBx1C,EAAOw1C,gBAC3BxhB,KAAMuhB,WAAWv1C,EAAOw1C,iBACxB,GACEpwC,EAAO,2BAAQpF,GAAR,IAAgBg0C,iBAAgBwB,oBAC7Cv1C,EAASmF,IAEXhF,OAAQ,CAAEA,OAAQqzC,IAClBvzC,WAAYA,EACZI,aAAW,EAhBb,SAkBE,eAACw0C,GAAD,CAAsBx4C,MAAOA,EAAO4D,WAAYA,SE5CtD3B,MCJa,YAgBX,IAfFqB,EAeC,EAfDA,KAeC,KAdDlB,WAcC,EAbDC,eAaC,MAbQ,CACP,KACA,WACA,cACA,sBACA,YACA,aACA,cACA,kBACA,YACA,cAGD,EADEC,EACF,+CACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC2vC,GAAD,CAAcpzC,GAAIyD,MAEzC,CACEzD,GAAI,KACJmD,OAAQ,eACRC,SAAU,KACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACg2C,GAAD,CAAsBz5C,GAAIyD,MAEjD,CACEzD,GAAI,cACJmD,OAAQ,OACRC,SAAU,SAACo2C,GAAD,aAAO,UAAAjB,GAAa,OAACiB,QAAD,IAACA,OAAD,EAACA,EAAG1B,mBAAjB,eAA8BrhC,cAAe,IAC9DpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,gBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,YACJmD,OAAQ,YACRC,SAAU,sBACVsjB,SAAU,YAEZ,CACE1mB,GAAI,aACJmD,OAAQ,aACRC,SAAU,uBACVsjB,SAAU,YAEZ,CACE1mB,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,qBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,eAEZ,CACEpD,GAAI,aACJmD,OAAQ,aACRC,SAAU,kBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAMyhB,eAAezhB,KAAM0hB,eAAer2C,QAGrD,CACEzD,GAAI,YACJmD,OAAQ,YACRC,SAAU,iBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAMyhB,eAAezhB,KAAM0hB,eAAer2C,WAIvD,IAEF,OACE,eAACd,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,qBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMA,GACFhB,KD5FRiB,KAAMw1C,I,GEfsD16C,aAC5D,CACEC,OAAQuD,GAAMvD,OACdE,QAASqD,GAAMrD,UAH6BI,I,GAAxCF,Y,GAAwCE,WCAjC,SAASy6C,GAAT,GAAyC,IAAjB/5C,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACzC,OACE,eAAC,OAAD,CAAMd,UAAU,aAAae,GAAI,CAAEC,SAAS,uBAAD,OAAyBpC,IAApE,SACGkC,GAAYlC,ICHJ,SAASg6C,GAAT,GAAuC,IAAjBh6C,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACvC,OACE,eAAC,OAAD,CAAMd,UAAU,aAAae,GAAI,CAAEC,SAAS,YAAD,OAAcpC,IAAzD,SACGkC,GAAYlC,ICDnB,IAYei6C,GAZe,CAE5B33C,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OHF0B,WAA2B,IAAD,yDAAP,GAAhBzC,EAAuB,EAAvBA,GAAO+O,EAAgB,uBACpD,OAAO,eAAKzP,GAAU,aAAEU,MAAO+O,MGG/BpM,MCAa,YAiBX,IAhBFqB,EAgBC,EAhBDA,KAgBC,KAfDlB,WAeC,EAdDC,eAcC,MAdQ,CACP,WACA,oBACA,cACA,sBACA,SACA,SACA,kBACA,WACA,oBACA,cACA,UAGD,EADEC,EACF,+CACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC2vC,GAAD,CAAcpzC,GAAIyD,MAEzC,CACEzD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,qBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACg2C,GAAD,CAAsBz5C,GAAIyD,MAEjD,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,SACVI,KAAM,kBAA0B,MAA1B,EAAGC,MAA6B,iBAAmB,QACzDJ,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,SAACo2C,GAAD,aAAO,UAAAjB,GAAa,OAACiB,QAAD,IAACA,OAAD,EAACA,EAAG1B,mBAAjB,eAA8BrhC,cAAe,IAC9DpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,SACJmD,OAAQ,WACRC,SAAU,UAEZ,CACEpD,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,qBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,gBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACozC,GAAD,CAAa72C,GAAIyD,MAExC,CACEzD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,kBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC4xC,GAAD,CAAqBr1C,GAAIyD,SAGlD,IAEF,OACE,eAACd,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,qBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMA,EACN6mB,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,GACG,OAAtB,OAAHlgB,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASs2C,QACT,CACL94C,UAAW,kBAER,OAAIuC,QAAJ,IAAIA,OAAJ,EAAIA,EAAKC,SAASu2C,iBAChB,CACL/4C,UAAW,iBAGN,KAGP4B,KD9GRo3C,gBEFa,YAiBX,IAhBFp2C,EAgBC,EAhBDA,KAgBC,KAfDlB,WAeC,EAdDC,eAcC,MAdQ,CACP,WACA,oBACA,SACA,YACA,qBACA,cACA,kBACA,kBACA,2BACA,2BACA,aAGD,EADEC,EACF,+CACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC2vC,GAAD,CAAcpzC,GAAIyD,MAEzC,CACEzD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,qBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACg2C,GAAD,CAAsBz5C,GAAIyD,MAEjD,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WACVI,KAAM,SAACy7B,GAAD,eACJ,eAAC+a,GAAD,CAAYh6C,GAAE,OAAEi/B,QAAF,IAAEA,OAAF,EAAEA,EAAGx7B,MAAnB,gBACGw7B,QADH,IACGA,GADH,UACGA,EAAGt7B,WADN,iBACG,EAAQC,gBADX,aACG,EAAkBy2C,sBAIzB,CACEr6C,GAAI,cACJmD,OAAQ,OACRC,SAAU,SAACo2C,GAAD,aAAO,UAAAjB,GAAa,OAACiB,QAAD,IAACA,OAAD,EAACA,EAAG1B,mBAAjB,eAA8BrhC,cAAe,IAC9DpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,qBACJmD,OAAQ,cACRC,SAAU,SAACo2C,GAAD,aACR,UAAAjB,GAAa,OAACiB,QAAD,IAACA,OAAD,EAACA,EAAGc,mCAAjB,eAA8C7jC,cAAe,IAC/DpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,YACJmD,OAAQ,YACRC,SAAU,YACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,0BACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACozC,GAAD,CAAa72C,GAAIyD,MAExC,CACEzD,GAAI,2BACJmD,OAAQ,2BACRC,SAAU,kCACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC4xC,GAAD,CAAqBr1C,GAAIyD,MAEhD,CACEzD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,gBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACozC,GAAD,CAAa72C,GAAIyD,MAExC,CACEzD,GAAI,2BACJmD,OAAQ,2BACRC,SAAU,wBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC4xC,GAAD,CAAqBr1C,GAAIyD,MAEhD,CACEzD,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs2C,GAAD,CAAc/5C,GAAIyD,SAG3C,IAEF,OACE,eAACd,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,+BACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMA,EACN6mB,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,GACG,OAAtB,OAAHlgB,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASs2C,QACT,CACL94C,UAAW,kBAER,OAAIuC,QAAJ,IAAIA,OAAJ,EAAIA,EAAKC,SAASu2C,iBAChB,CACL/4C,UAAW,iBAGN,KAGP4B,M,GCjIRjE,aAAkB,CAChBC,OAAQ4uC,GAAY5uC,OACpBE,QAAS0uC,GAAY1uC,UAHGq7C,G,GAAbn7C,YAAoCo7C,G,GAAXl7C,UCKzBm7C,GALW5kC,aAAkB,CAC1CnW,KAAM,SACNJ,UAAWk7C,KCMEE,GARMr/B,aAAa,CAChC3b,KAAM,SACNN,YAAam7C,GACb1N,YAAa,iBAAO,CAClBlxB,QAAQ,MCCGg/B,GALWntC,aAAkB,CAC1C9N,KAAM,SACNN,YAAam7C,KCeAK,GAdA,CAEbt4C,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQ+3C,GACR93C,OAAQ63C,GAER/4C,OAAQk5C,GACRjzC,YAAagzC,GACbhyC,YAAakyC,I,GCdb57C,aAAkB,CAChBC,OAAQ+uC,GAAkB/uC,OAC1BE,QAAS6uC,GAAkB7uC,UAHH27C,G,GAAbz7C,YAA0C07C,G,GAAXx7C,UCK/By7C,GALiBllC,aAAkB,CAChDnW,KAAM,eACNJ,UAAWw7C,KCMEE,GARY3/B,aAAa,CACtC3b,KAAM,eACNN,YAAay7C,GACbhO,YAAa,iBAAO,CAClBlxB,QAAQ,MCCGs/B,GALiBztC,aAAkB,CAChD9N,KAAM,eACNN,YAAay7C,KCeAK,GAdM,CAEnB54C,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQq4C,GACRp4C,OAAQm4C,GAERr5C,OAAQw5C,GACRvzC,YAAaszC,GACbtyC,YAAawyC,I,GCX2Cl8C,aAAkB,CAC1EC,OAAQuD,GAAMvD,OACdE,QAASqD,GAAMrD,UAFIi8C,G,GAAb/7C,YAAoCE,G,GAAAA,UCA7B87C,GALiB57C,eAASC,MAAM,CAC7CqP,WAAYwZ,eAAS1oB,MAAM,YAAYC,WACvCyJ,KAAM3J,eAASC,MAAM,QAAQC,WAAWI,IAAI,MCJjCo7C,GAAgB,CAC3BC,mBAAoB,CAClBt7C,GAAI,qBACJyW,YAAa,uBAEf8kC,gBAAiB,CACfv7C,GAAI,kBACJyW,YAAa,+BAEf+kC,aAAc,CACZx7C,GAAI,eACJyW,YAAa,4BAEfglC,cAAe,CACbz7C,GAAI,gBACJyW,YAAa,6BAEfilC,eAAgB,CACd17C,GAAI,iBACJyW,YAAa,sBC0BjB,SAASklC,GAAT,GAA2C,IAAVj7C,EAAS,EAATA,MACvBC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW/tC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAI23C,GACJ90C,YAAa5D,QAInB,eAACI,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,GAAD,CAAYvB,KAAK,OAAOE,MAAM,aAGlC,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,iBACLE,MAAM,aACNk4B,YAAY,EACZ3C,eAAe,QAIrB,eAACrzB,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBAON,SAASmT,GAAT,GAAsE,IAAhDpU,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,oDAI/DwU,aAAc,CAAE9X,SAFlB+X,EAFiE,EAEjEA,MACc3K,EAHmD,EAGjE4K,WAAc5K,MAHmD,EAO/DlM,eADF+W,aAAgBrT,kBANiD,SASnE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,gBAACkB,GAAA,EAAK8F,QAAN,qCACElH,KAAMA,EACNE,MAAM,OACN6B,GAAG,SACHmG,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAPN,cASE,yBAAQS,MAAM,KACbiQ,OAAOtP,OAAOi3C,IAAe90C,KAAI,SAACizC,EAAG7qB,GAAJ,OAChC,yBAAkClrB,MAAO+1C,EAAEx5C,GAA3C,SACGw5C,EAAE/iC,aADL,qBAA2BkY,WAK/B,eAAC7tB,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aC3GhB,IAae6uC,GAbW,CAExBt5C,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OJA2B,WAA2B,IAAD,yDAAP,GAAhBzC,EAAuB,EAAvBA,GAAO+O,EAAgB,uBAC/C3F,EAAW0O,cACjB,OAAO,aACLm2B,cAAelmC,uBACb,SAACgH,GAAD,OACE3F,EACE7G,GAAMrD,QAAQ+uC,cAAd,aACEC,0BAA2BluC,GACxB+O,KAELtC,KAAK4jB,OACT,CAACjnB,EAAUpJ,IAEbmuC,cAAepmC,uBACb,SAACgH,GAAD,OACE3F,EACE7G,GAAMrD,QAAQivC,cAAd,aACED,0BAA2BluC,GACxB+O,KAELtC,KAAK4jB,OACT,CAACjnB,EAAUpJ,KAEVV,GAAU,aAAEU,MAAO+O,MItBxBrM,OAAQy4C,GAERh3C,ODCa,YAKX,IAAD,IAJDC,OAAUy3C,GAIT,aAJuC,GAIvC,GAJSA,eAAmBz3C,EAI5B,mCAHDC,EAGC,EAHDA,SAGC,IAFDC,kBAEC,aADD5D,aACC,SACD,OACE,eAAC,KAAD,CACE6D,cAAa,aACXs3C,eAAgBA,EACZzjB,KAAMwc,UAAUiH,GAAgBhxC,cAChC,IACDzG,GAELC,SAAU,gBAAGw3C,EAAH,EAAGA,eAAmBz3C,EAAtB,0CACRC,EAAS,aACPw3C,eAAgBA,EAAiBzjB,KAAM0jB,MAAMD,GAAkB,IAC5Dz3C,KAGPI,OAAQ,CAAEA,OAAQ42C,IAClB92C,WAAYA,EACZI,aAAW,EAfb,SAiBE,eAACi3C,GAAD,CAAuBj7C,MAAOA,OCxBlCiC,MCNa,YAKX,IAJFqB,EAIC,EAJDA,KAIC,KAHDlB,WAGC,EAFDC,eAEC,MAFQ,CAAC,WAAY,OAAQ,kBAE7B,EADEC,EACF,+CACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC2vC,GAAD,CAAcpzC,GAAIyD,MAGzC,CACEzD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SAACo2C,GAAD,aAAO,UAAA6B,GAAa,OAAC7B,QAAD,IAACA,OAAD,EAACA,EAAGlwC,aAAjB,eAAwBmN,cAAe,IACxDpT,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAoBg2C,EAApB,EAAG71C,IAAOC,SAAeH,EAAzB,EAAyBA,MAAzB,OACJ,eAAC,OAAD,CACErC,UAAU,aACVe,GAAI,CAAEC,SAAS,mCAAD,cAAqCo3C,QAArC,IAAqCA,OAArC,EAAqCA,EAAGx5C,KAFxD,SAIGyD,MAIP,CACEzD,GAAI,iBACJmD,OAAQ,kBACRC,SAAU,iBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,SAGvD,IAEF,OACE,eAACd,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,uBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMA,GACFhB,MCZK6sC,GA5BE,CAEfvtC,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQmsC,GACRlsC,OAAQisC,GAERhsC,MCfa,YAaX,IAZFY,EAYC,EAZDA,OACAinB,EAWC,EAXDA,YAWC,IAVDznB,cAUC,MAVQ,CACP,KACA,OACA,aACA,QACA,WACA,eACA,kBACA,4BAED,IACqC4rC,KAA9BlQ,EADP,EACOA,UAAWjvB,EADlB,EACkBA,QAASiD,EAD3B,EAC2BA,MAEtBkgC,EAAY5tC,IAAM7B,SACtB,kBACEu7B,EAAUl7B,QAAO,SAACo/B,GAAc,IAAD,IAC7B,GAAIA,EAASziC,WAAaqD,EAAOw4C,OAAQ,OAAO,EAEhD,IAAI,UAAAx4C,EAAOulC,eAAP,eAAgBzqB,QAAS,EAAG,CAE9B,IADA,IAAI29B,GAAQ,EACHr6B,EAAI,EAAGA,EAAIghB,EAASmG,QAAQzqB,OAAQsD,IAC3C,GAAIpe,EAAOulC,QAAQ73B,SAAS0xB,EAASmG,QAAQnnB,GAAG3hB,IAAK,CACnDg8C,GAAQ,EACR,MAGJ,IAAc,IAAVA,EAAiB,OAAO,EAG9B,IAAI,UAAAz4C,EAAOuqC,qBAAP,eAAsBzvB,QAAS,EAAG,CAEpC,IADA,IAAI29B,GAAQ,EACHr6B,EAAI,EAAGA,EAAIghB,EAASsZ,qBAAqB59B,OAAQsD,IACxD,GACEpe,EAAOuqC,cAAc78B,SAAS0xB,EAASsZ,qBAAqBt6B,GAAG3hB,IAC/D,CACAg8C,GAAQ,EACR,MAGJ,IAAc,IAAVA,EAAiB,OAAO,EAE9B,OAAO,OAEX,CAACvd,EAAWl7B,IAGRN,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,WACRC,SAAU,KACVpD,GAAI,KACJiZ,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,cAAD,OAAgBqB,IAFhC,SAIGA,MAIP,CACEN,OAAQ,OACRC,SAAU,OACVpD,GAAI,OACJqD,OAAQC,KACRC,OAAQ,QAEV,CACEJ,OAAQ,WACRC,SAAU,aACVpD,GAAI,aACJqD,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,gBACRC,SAAU,yBACVpD,GAAI,yBACJiZ,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,SAIV,CACEh5C,OAAQ,YACRC,SAAU,WACVpD,GAAI,WACJiZ,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,SAIV,CACEh5C,OAAQ,YACRC,SAAU,SAACu/B,GAAD,OACA,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAUyZ,kBAAV,OAA4BzZ,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAU0Z,eACxCr8C,GAAI,eACJuD,OAAQ+4C,KACRj5C,OAAQk5C,KACRL,SAAU,SAEV14C,KAAM,YAA6C,IAA1CC,EAAyC,EAAzCA,MAAwBk/B,EAAiB,EAAlCh/B,IAAOC,SACfuF,EAAI1F,KAAK,OAAKk/B,QAAL,IAAKA,OAAL,EAAKA,EAAUyZ,gBAAiB,IAAM,GACrD,OACE,gCACG34C,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAAOhzC,EACzD,SAKZ,CACEhG,OAAQ,eACRC,SAAU,SAACu/B,GAAD,OACA,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAU6Z,qBAAV,OACA7Z,QADA,IACAA,OADA,EACAA,EAAU8Z,mBADV,OAEA9Z,QAFA,IAEAA,OAFA,EAEAA,EAAU+Z,WACZ18C,GAAI,kBACJuD,OAAQ+4C,KACRj5C,OAAQk5C,KACRL,SAAU,SAEV14C,KAAM,YAA6C,IAA1CC,EAAyC,EAAzCA,MAAwBk/B,EAAiB,EAAlCh/B,IAAOC,SACfuF,EAAI1F,KAAK,OAAKk/B,QAAL,IAAKA,OAAL,EAAKA,EAAU6Z,mBAAoB,IAAM,GACxD,OACE,gCACG/4C,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAAOhzC,EACzD,SAKZ,CACEhG,OAAQ,cACRC,SAAU,2BACVpD,GAAI,2BACJqD,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,QACRC,SAAU,QACVpD,GAAI,QACJqD,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,SAACu/B,GAAD,oBACRA,QADQ,IACRA,GADQ,UACRA,EAAUsZ,4BADF,aACR,EAAgChvB,QAC9B,SAACob,EAAGsU,GAAJ,gBAAetU,EAAC,UAAMA,EAAN,MAAc,IAA9B,OAAmCsU,EAAIlmC,eACvC,KAEJpT,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,UACJmD,OAAQ,UACRC,SAAU,SAACu/B,GAAD,oBACRA,QADQ,IACRA,GADQ,UACRA,EAAUmG,eADF,aACR,EAAmB7b,QACjB,SAACob,EAAGuU,GAAJ,gBAAevU,EAAC,UAAMA,EAAN,MAAc,IAA9B,OAAmCuU,EAAInmC,eACvC,KAEJpT,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,wBACJmD,OAAQ,0BACRC,SAAU,wBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQC,KACRC,OAAQ,WAGZ,IAGF,OACE,eAACZ,GAAA,EAAD,CACEoB,UAAQ,EACRnE,MAAM,YACNqD,QAASA,EACTe,KAAM2uC,EACNr9B,UAAW9F,EACX8b,UAAW7Y,EACX+X,YAAaA,EACbznB,OAAQA,EACR+nB,aAAc,YAIP,IAHK9qB,EAGN,EAHJiiB,OAAUjiB,GACVyD,EAEI,EAFJA,MACiBk/B,EACb,EADJh/B,IAAOC,SAEP,OAAKH,EACM,iBAAPzD,EACKyD,KAAK,OAAKk/B,QAAL,IAAKA,OAAL,EAAKA,EAAUyZ,gBACvB,CAAEh7C,UAAW,cACb,KAEK,oBAAPpB,EACKyD,KAAK,OAAKk/B,QAAL,IAAKA,OAAL,EAAKA,EAAU6Z,mBACvB,CAAEp7C,UAAW,cACb,UAHN,EANmB,SD7MzBy7C,sB7DmBa,YAGX,IAFFpe,EAEC,EAFDA,UAEC,IADDnpB,iBACC,SACKwnC,EAAmBnoC,aAAY,SAACpS,GAAD,OACnC+rC,GAActvC,OAAOwD,UAAU2P,YAAY5P,EAAOk8B,GAAa,OAG3DgW,EAAQvxC,mBAAQ,kBAAMiuB,QAAU,IAEhC4rB,EAAuB,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAkBv5C,QAChD,SAACod,GAAD,OACG,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAGq8B,wBACH5kB,KAAMwc,UAAN,OAAgBj0B,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAGs8B,wBAA0BxI,GAC7Crc,KAAMwc,UAAN,OAAgBj0B,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAG67B,mBAAqB/H,KAG5C,OAAIn/B,GAAa5P,IAAE6E,QAAQwyC,GAAiC,KAG1D,eAACh8C,EAAA,EAAD,CAAKK,UAAU,oDAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,8DAGH+7C,EAAwBx2C,KAAI,SAACoa,GAAD,OAC3B,eAAC0zB,GAAD,CAEE30C,KAAI,OAAEihB,QAAF,IAAEA,OAAF,EAAEA,EAAGjhB,KACT40C,WAAU,OAAE3zB,QAAF,IAAEA,OAAF,EAAEA,EAAGq8B,sBACfzI,SAAQ,OAAE5zB,QAAF,IAAEA,OAAF,EAAEA,EAAGs8B,uBACbzI,cAAa,OAAE7zB,QAAF,IAAEA,OAAF,EAAEA,EAAG67B,kBAClB/H,MAAOA,EACPC,aAAY,OAAE/zB,QAAF,IAAEA,OAAF,EAAEA,EAAG+zB,cAPnB,yCACkC/zB,QADlC,IACkCA,OADlC,EACkCA,EAAG3gB,c6D/C7CwB,OAAQmyC,GACRuJ,eEzBa,YASX,IARFz5C,EAQC,EARDA,MAQC,IAPD5B,eAOC,SANDiN,EAMC,EANDA,WAMC,IALDuF,mBAKC,MALa,qBAKb,MAJDxN,gBAIC,MAJU,aAIV,MAHDs2C,gBAGC,aAFDC,kBAEC,SADEp6C,EACF,oGAC6B4rC,GAAY,CAAE5uC,GAAI8O,EAAY6M,QAAQ,IAA5DgnB,EADP,EACOA,SAAUnzB,EADjB,EACiBA,QAEZqF,EAAQ,OAAG8tB,QAAH,IAAGA,OAAH,EAAGA,EAAU0a,UACxB95C,QAAO,SAACyR,GAAD,QAAoB,YAAXA,EAAE1L,OAAqC,IAAf8zC,MACxC72C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEsoC,SAEzCtJ,MAAK,SAAC7qC,EAAG4b,GACR,IAAIw4B,EAAQp0C,EAAEvJ,MAAM4W,cAChBgnC,EAAQz4B,EAAEnlB,MAAM4W,cACpB,OAAI+mC,EAAQC,GACF,EAEND,EAAQC,EACH,EAEF,KAEPL,GACFtoC,EAASiJ,KAAK,CAAEle,MAAO,QAAS6D,MAAO,UAGzC,IAYIwR,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACEb,UAAW9F,EACX/L,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,EACbxN,SA3BmB,SAACsO,GACtB,IAAIF,EAAc,KACdE,IAEAF,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOC,EAAElE,SAASiE,EAAEzR,UAEpCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASM,KAG7CtO,EAASoO,KAmBHjS,KFlCR4b,KAAMiwB,GACNpmC,YAAainC,GACbzrC,KAAMmvC,GACNlE,YG9Ba,YAMX,IALFlvC,EAKC,EALDA,GACAy9C,EAIC,EAJDA,UAIC,IAHDnoC,iBAGC,aAFDqG,cAEC,SADE3Y,EACF,0DAC8C4rC,GAAY,CAAE5uC,KAAI2b,WAAzDgnB,EADP,EACOA,SAEFnzB,EAHL,EACiBA,SAEiB8F,EAEnC,OACE,eAAC,GAAQrR,KAAT,aACEkrC,WAAW,WACXnvC,GAAIy9C,EACJ/7B,OAAQihB,EACRrtB,UAAW9F,EACXmM,OAAQA,GACJ3Y,KHaR06C,aI/Ba,YAGX,IAFOC,EAER,EAFD9tC,QACM+tC,EACL,EADDC,KAEA,OAAIF,GAAmBC,GAAgBD,IAAoBC,EAEvD,+BACE,gBAAClkC,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAU,cAAnC,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,2FAIJ,eAACD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,uBACW,eAAC6tC,GAAD,CAAc7uC,GAAI29C,SAG/B,eAAC58C,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,mBACO,eAAC6tC,GAAD,CAAc7uC,GAAI49C,cAMvB,MJMZE,UAAW/Q,GACXgR,QAASC,GACTC,cAAeC,GACfC,mBAAoBvC,GACpBwC,kBAAmB1E,GACnB2E,uBAAwBpE,I,UKpCpB33C,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,sBAAuBI,MAAK,SAACqB,GACxD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAauwC,qBAK9Bt/C,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,mBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAASowC,WAEhCr/C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/Bk8C,GAPK,CAClBl8C,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCjBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,yBAA0BI,MAAK,SAACqB,GAC3D,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa0wC,wBAK9Bz/C,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,sBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAASuwC,cAEhCx/C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/Bq8C,GAPO,CACpBr8C,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCjBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,sBAAuBI,MAAK,SAACqB,GACxD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa6wC,qBAK9B5/C,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,mBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAAS0wC,WAEhC3/C,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/Bw8C,GAPK,CAClBx8C,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCjBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,uBAAwBI,MAAK,SAACqB,GACzD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAagxC,sBAK9B//C,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,oBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAAS48B,YAEhC7rC,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B0oC,GAPK,CAClB1oC,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,UCgMJ,IAAMjM,GAAM,CACjB4M,OA3LF,gBAIG,IAHClP,EAGF,EAHEA,GAAIg/C,EAGN,EAHMA,YAAaC,EAGnB,EAHmBA,YAGnB,IAHgCnV,aAGhC,SAFE57B,EAEF,EAFEA,SACA1L,EACF,EADEA,UAEIgH,EAAU,CACd6C,QAAS,aACTrM,GAAIA,EACJg/C,cACAC,eAEF,IAAc,IAAVnV,EAAgB,CAClB,IAAMoV,EAAK18C,EAAUiuB,WAAWviB,IAAYlO,GAC5C,GAAIk/C,IAAgB,IAAVpV,EACR,MAAO,CACL9lC,KAAMk7C,EACNhsC,aAAa,GAGnB,OAAOrF,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAyKlDH,QA/MF,YAII,IAAD,IAHDrK,OAAU+kC,GAGT,aAHiC,GAGjC,GAHSA,SAAa/kC,EAGtB,6BAFD47C,EAEC,EAFDA,QAEC,IADDntC,kBACC,MADY,GACZ,EACKxI,EAAO,2BACRjG,GADQ,IAEX8I,QAAS,cACT8yC,QAASA,EACTntC,WAAYA,GAAc,GAC1BotC,kBAAmB9W,IAErB,OAAOz6B,IAAM7B,KAAKxC,GAASiD,MAAK,oBAAGsB,oBAAH,MAAkB,GAAlB,QAA4B,CAC1D/J,KAAM+J,EAAaI,SACnB6D,WAAYjE,EAAaiE,WACzB/C,WAAW,aAAGq5B,YAAa/kC,QAiM7B4L,UAvKF,SAA0B+vB,GACxB,SAASmgB,EAAYC,GAAc,IAAD,EAMhC,OALW,OAAPpgB,QAAO,IAAPA,OAAA,EAAAA,EAASqgB,YAAT,OAAqBD,QAArB,IAAqBA,GAArB,UAAqBA,EAAalb,WAAlC,aAAqB,EAAkB/lB,QACzClN,IAAMiO,QAAN,oBACQkgC,QADR,IACQA,OADR,EACQA,EAAalb,IAAI,GAAGpkC,GAD5B,iCACuDs/C,EAAYt/C,KAE9DmR,IAAMiO,QAAN,kBAAyBkgC,EAAYt/C,GAArC,aACAs/C,EAGT,IAAM91C,EAAU,CACd6C,QAAS,gBACT6yB,WAEF,OAAOrxB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAMq7C,EAA/B,EAAGtxC,mBAwJXsB,UArJF,gBAIG,IAAD,EAHErP,EAGF,EAHEA,GAAUw/C,EAGZ,EAHMx7C,KAAqBy7C,EAG3B,EAH2BA,eACzBvxC,EAEF,EAFEA,SAAU9E,EAEZ,EAFYA,SACVlK,EACF,EADEA,QAASsD,EACX,EADWA,UAEX,GAAKxC,EAAL,CACA,IAAM0/C,EAAiBl9C,EAAUiuB,WAAWviB,IAAYlO,GAqFhDgQ,EAAmC0vC,EAAnC1vC,eAAgBC,EAAmByvC,EAAnBzvC,eAEpBL,EAAUD,aAA0B6vC,EAAeE,GACvD,GAAIh6C,IAAE6E,QAAQqF,GAEZ,OADAuB,IAAM6lB,KAAN,kBAAsBh3B,EAAtB,uBACO,CAAEgE,KAAM07C,IAGjB,UAAI9vC,SAAJ,aAAI,EAAS6uB,aACX7uB,EAAO,2BAAQA,GAAR,IAAiB6uB,UAAW+gB,EAAc/gB,aACnD,IAAMj1B,EAAU,CACd6C,QAAS,gBACTrM,KACAk/B,QAAQ,2BAAMtvB,GAAP,IAAgBI,iBAAgBC,oBAEzC,OAAOpC,IAAM7B,KAAKxC,GAASiD,MAAK,kBAAuB,CACrDzI,KAAMq7C,EADwB,EAAGtxC,kBAlGnC,SAASsxC,EAAYC,GAAc,IAAD,EAChCnuC,IAAMiO,QAAN,kBAAyBpf,EAAzB,WACA,IAAM2/C,EAAmB,kBAAMzgD,EAAQgQ,OAAO,CAAElP,QAChD,GACyB,OAAvBs/C,EAAYM,QACZN,EAAYM,UAAZ,OAAuBF,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAgBE,QACvC,CAAC,IAAD,IACMjd,EAAWkN,GAASrtC,UAAUiuB,WAClCviB,IADe,OAEfoxC,QAFe,IAEfA,GAFe,UAEfA,EAAa7gB,iBAFE,iBAEf,EAAyB,UAFV,aAEf,EAA6B3vB,aAGrB,OAAR6zB,QAAQ,IAARA,OAAA,EAAAA,EAAUsa,yBACV7kB,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUsa,wBAA0B9rB,OAEpDqa,GACE,CACEtjC,MAAO,4BACP6E,QAAQ,GAAD,OAAK41B,EAASjjC,KAAd,8BAAwC04B,KAAM0c,QAAN,OAC7CnS,QAD6C,IAC7CA,OAD6C,EAC7CA,EAAUsa,0BAGd,CAAE3zC,KAAM,UAAW+V,UAAW,OAIpC,GACEogC,GAC2B,IAA3BH,EAAYlb,IAAI/lB,SADhB,OAEAqhC,QAFA,IAEAA,GAFA,UAEAA,EAAgBtb,WAFhB,aAEA,EAAqB/lB,QACrB,CACA,IAAM5C,EAAO6jC,EAAYlb,IAAI,GAAGpkC,GAC1B6/C,EAAqB,SAAC9yC,EAAS+yC,GACnC,IAAMC,EAAoB,SAAClwC,GACzB,IAAID,EAAU,GAMd,OALAkwC,EAAWlsC,SAAQ,SAACosC,GACdV,EAAYU,MAAZ,OAA0BnwC,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAUmwC,MACtCpwC,EAAQowC,GAAYV,EAAYU,OAGhCt6C,IAAE6E,QAAQqF,GAAiB,KACnBA,GAERqwC,EAAYF,EAAkBL,GAChCO,GACFR,EACE,CACEz/C,GAAIyb,EACJ1O,QAASA,EACT3D,WACA+Q,KAAM,SAAC+kC,GAAD,OAAQa,EAAkBb,IAChCtvC,QAAQ,aACNswC,SAAS,GACND,GAELN,iBAAkBA,GAEpB,CAAExd,QAAQ,oBAAD,OAAsBniC,EAAtB,YAA4B8/C,EAAW74B,KAAK,SAG3D44B,EAAmB,0BAA2B,CAAC,QAAS,YACxDA,EAAmB,qBAAsB,CAAC,aAE1C,IAAMM,EAAe,SAACP,GAAD,OAAYA,GAAUN,EAAYM,SAAWA,GAC9DO,EAAY,OAACT,QAAD,IAACA,OAAD,EAACA,EAAgBE,SAC/BH,EACE,CACEz/C,GAAIyb,EACJ1O,QAAS,iBACT3D,WACA+Q,KAAM,SAAC+kC,GAAD,OAAQiB,EAAY,OAACjB,QAAD,IAACA,OAAD,EAACA,EAAIkB,iBAC/BxwC,QAAS,CACPswC,SAAS,EACTE,eAAgBd,EAAYM,QAE9BD,iBAAkBA,GAEpB,CAAExd,QAAQ,oBAAD,OAAsBniC,EAAtB,aAGf,OAAOs/C,IA8DTrR,cAvCF,YAA4D,IACpDzkC,EAAU,CACd6C,QAAS,uBACT6yB,QAHuD,EAAxBA,QAI/Bh3B,MAJuD,EAAfA,MAKxC+lB,KALuD,EAARA,MAOjD,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAiClDogC,cA9BF,YAAgE,IAA7BjP,EAA4B,EAA5BA,QAASh3B,EAAmB,EAAnBA,MAAO+lB,EAAY,EAAZA,KAC3CzkB,EAAU,CACd6C,QAAS,uBACT6yB,UACAl/B,GAJ2D,EAANA,GAKrDkI,QACA+lB,QAEF,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAuBlD48B,iBApBF,SAAoC57B,GAClC,OAAOm7B,GAAoB,aAAE79B,QAAS,2BAA8B0C,KAoBpEsxC,YAjBF,YAAoD,IAC5C72C,EAAU,CACd6C,QAAS,qBACTrM,GAH+C,EAAlBA,GAI7BsgD,WAJ+C,EAAdA,YAMnC,OAAOzyC,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,mBCnNvC/O,GAASiP,aAAa,CACjCvO,KAAM,UACN4J,KAAM,WACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM4L,SAASA,YCEhCg/B,GAAgB9+B,aAAoB,CAAErP,UAAQsD,SAE9C2rC,GAAgB/kC,YACpB,2BADoC,uCAEpC,uCAAAC,EAAA,yDAAS+1B,EAAT,EAASA,QAASh3B,EAAlB,EAAkBA,MAAO+lB,EAAzB,EAAyBA,KAAU/f,EAAnC,EAAmCA,SAAUwB,EAA7C,EAA6CA,UACtCD,YAAiBvB,IAAWC,SAASA,SAAUuB,GADtD,iEAGepN,GAAI2rC,cAAc,CAC7B/O,QAASA,EACTh3B,QACA+lB,SANJ,mFAFoC,yDAahCkgB,GAAgBjlC,YACpB,2BADoC,uCAEpC,yCAAAC,EAAA,yDAAS+1B,EAAT,EAASA,QAASl/B,EAAlB,EAAkBA,GAAIkI,EAAtB,EAAsBA,MAAO+lB,EAA7B,EAA6BA,KAAU/f,EAAvC,EAAuCA,SAAUwB,EAAjD,EAAiDA,UAC1CD,YAAiBvB,IAAWC,SAASA,SAAUuB,GADtD,iEAEepN,GAAI6rC,cAAc,CAC7BjP,QAASA,EACTl/B,GAAIA,EACJkI,QACA+lB,SANJ,mFAFoC,yDAahC0c,GAAmBzhC,YACvB,8BADuC,uCAEvC,WAAO6F,GAAP,SAAA5F,EAAA,sEACe7G,GAAIqoC,iBAAiB57B,GADpC,mFAFuC,uDAOnCsxC,GAAcn3C,YAClB,wBADkC,uCAElC,WAAO6F,EAAP,sBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWC,SAASA,SAAUuB,GADtD,iEAGyBpN,GAAI+9C,YAAYtxC,GAHzC,cAGQrC,EAHR,yBAISA,GAJT,2CAFkC,yDAU9B6zC,GAAY7tC,YAAa,sBAElBxT,GAAO,2BACfiuC,IADe,IAElBgB,iBACAF,iBACAtD,oBACA4V,aACAF,iBCvDWr1C,GAAUsD,aAAoB,CACzCtP,OAAQA,GACRE,QAASA,GACTqP,SAAS,EACT5E,aAAc,CAAEpG,OAAQ,GAAIyO,WAAY,IACxCvH,cAAe,SAACC,EAAS8G,GACvB7G,YACED,EACAxL,GAAQ+uC,eACR,SAAC1rC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQivC,eACR,SAAC5rC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQyrC,kBACR,SAACpoC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQmhD,aACR,SAAC99C,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAI7B0G,EAAQ+F,QAAQvR,GAAQqhD,WAAW,SAACh+C,EAAO4H,GACzC5H,EAAMgB,OAAS4G,EAAOX,cC5BtBg3C,GAAiB1iB,YAAgB,CACrC3vB,SAAUnD,GACV+/B,SAAUC,GAAYhgC,QACtB0zC,WAAYC,GAAc3zC,QAC1B6zC,QAASC,GAAY9zC,QACrByD,MAAOxB,KAAUjC,QACjBuzC,QAASC,GAAYxzC,QACrBoD,iBAAkBlD,KAAoBF,UAUzBy1C,GAPM,CACnBn+C,OACAtD,UACAE,WACA8L,QAASw1C,ICtBI,SAASE,GAAT,EAEbjV,GACC,IAFCzrC,EAEF,EAFEA,GAAI+M,EAEN,EAFMA,QAAS6C,EAEf,EAFeA,QAASxG,EAExB,EAFwBA,SAExB,IAFkC+Q,YAElC,MAFyC,kBAAM,GAE/C,EACA/Q,EAASq3C,GAAavhD,QAAQgQ,OAAO,CAAElP,QACpCyM,KAAK4jB,KACL5jB,MAAK,YAAwB,IAAfyyB,EAAc,EAApBl7B,KACHmW,EAAK+kB,IACP0M,GACE,CACE7+B,UACAo/B,QAAS,MACTC,OAAQ,KACRF,UAAW,WACT9iC,EACEq3C,GAAavhD,QAAQmQ,UAAU,CAC7BrP,KACAgE,KAAM4L,EACN+wC,wBAAwB,OAKhClV,MCxBH,IAAMmV,GAAW,SAACC,GAAD,MAA2B,OAAbA,GAAkC,OAAbA,GAsH5CC,GApHEthD,eAASC,MAAM,CAC9BshD,SAAUphD,eAASC,MAAM,YAAYC,WAAWI,IAAI,KACpDwW,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,KAC1Dyb,UAAW4M,eACR1oB,MAAM,WACNC,WACAsa,KACC,gBACA,wBACA,SAACzU,EAAD,GAA+C,IAAD,IAAxC8P,QAAWwrC,EAA6B,EAA7BA,OAA6B,IAArBC,eAAqB,MAAX,GAAW,EACpCJ,EAAaG,EAAbH,SACA3hB,EAAY+hB,EAAZ/hB,QACR,OAAQA,GAAW0hB,GAASC,IAAmC,QAAf,OAAP3hB,QAAO,IAAPA,OAAA,EAAAA,EAAS2hB,aAGxDp7C,QAAS9F,eAASC,MAAM,SAASC,WACjCqhD,aAAcvhD,eAASC,MAAM,cAAcC,WAC3CghD,SAAUlhD,eAASC,MAAM,UAAUC,WACnCE,MAAOJ,eACJC,MAAM,SACNC,WACAshD,KAAK,WAAY,CAChBC,GAAI,SAACjsC,GAAD,MAAa,OAANA,GACX1I,KAAM9M,eAASwa,KACb,gBACA,yCACA,SAAC1W,GAAD,MAAgC,OAAhB,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOyuB,OAAO,SAG/BkuB,eAAgBzgD,eAASC,MAAM,iBAC/ByhD,mBAAoB/4B,eAAS1oB,MAAM,qBACnC0hD,mBAAoB3hD,eACjBC,MAAM,qBACNuhD,KAAK,WAAY,CAChBC,GAAIR,GACJn0C,KAAM9M,eAASwa,KACb,wCACA,oDACA,SAAC1W,EAAD,GAAmD,IAAzCu9C,EAAwC,EAAxCA,OAAwC,IAAhCxrC,QAAWyrC,QACnB/hB,QADwC,MAAX,GAAW,GACxCA,QAGR,MAAkB,QAFS8hB,EAAnBZ,iBACqB,OAAIlhB,QAAJ,IAAIA,OAAJ,EAAIA,EAAS0gB,UAChBn8C,OAIlC89C,SAAU5hD,eAASC,MAAM,UAAUuhD,KAAK,WAAY,CAClDC,GAAIR,GACJn0C,KAAM9M,eAASE,aAEjB2hD,mBAAoB7hD,eAASC,MAAM,qBAAqBuhD,KAAK,WAAY,CACvEC,GAAIR,GACJn0C,KAAM9M,eAASE,aAEjB4hD,oBAAqBC,eAClB9hD,MAAM,WACNuhD,KAAK,WAAY,CAChBC,GAAIR,GACJn0C,KAAMi1C,eAAUrrC,MAAM,EAAC,GAAQ,uCAEnCsrC,kBAAmBD,eAChB9hD,MAAM,oBACNuhD,KAAK,WAAY,CAChBC,GAAIR,GACJn0C,KAAMi1C,eAAUrrC,MACd,EAAC,GACD,mDAGNurC,sBAAuBF,eACpB9hD,MAAM,2BACNuhD,KAAK,WAAY,CAChBC,GAAIR,GACJn0C,KAAMi1C,eAAUrrC,MACd,EAAC,GACD,uDAGNwrC,iBAAkBv5B,eACf1oB,MAAM,4BACNo2B,IAAI,GACJ/1B,IACCgF,aAAI,oBACJ,+DAEJ68C,iBAAkBx5B,eACf1oB,MAAM,4BACNo2B,IAAI,GACJA,IACC/wB,aAAI,oBACJ,kEAEJ88C,aAAcz5B,eACX1oB,MAAM,iBACNuhD,KAAK,mBAAoB,CAAEC,GAAI,SAACjsC,GAAD,OAAOA,EAAI,GAAG1I,KAAM6b,eAAS05B,aAC/DC,eAAgBtiD,eAASC,MAAM,wBAC/BsiD,2BAA4BviD,eACzB4W,UAAU2hB,KAAU4jB,OACpBl8C,MAAM,kCACTuiD,2BAA4BxiD,eACzB4W,UAAU2hB,KAAU4jB,OACpBl8C,MAAM,kCACTwiD,wBAAyBziD,eACtB4W,UAAU2hB,KAAU4jB,OACpBl8C,MAAM,+BACTyiD,wBAAyB1iD,eACtB4W,UAAU2hB,KAAU4jB,OACpBl8C,MAAM,+BACT0iD,mBAAoB3iD,eACjB4W,UAAU6hB,KAAM0jB,OAChBl8C,MAAM,wBACT2iD,mBAAoB5iD,eACjB4W,UAAU6hB,KAAM0jB,OAChBl8C,MAAM,0BAKJ,SAAS4iD,GAAT,GAMH,IAAD,IALDziD,aAKC,MALO,GAKP,MAJD0F,eAIC,MAJS,GAIT,MAHDiW,iBAGC,MAHW,EAGX,MAFDqlC,gBAEC,MAFU,GAEV,MADDtqC,YAEA,MAAO,CACLiF,YACAjW,UACAo7C,SAAU,KACV9gD,QACAmhD,aAAc,IACdO,qBAAqB,EACrBE,mBAAmB,EACnBC,uBAAuB,EACvBb,WACAtqC,iBAXD,MADa,GACb,GC4II,IAAMnU,GAAM,CACjBsL,QAjQF,YAII,IAAD,IAHDrK,OAAU+kC,GAGT,aAHiC,GAGjC,GAHSA,SAAa/kC,EAGtB,6BAFD47C,EAEC,EAFDA,QAEC,IADDntC,kBACC,MADY,GACZ,EACKxI,EAAO,2BACRjG,GADQ,IAEX8I,QAAS,SACT8yC,QAASA,EACTntC,WAAYA,GAAc,GAC1BotC,kBAAmB9W,IAErB,OAAOz6B,IAAM7B,KAAKxC,GAASiD,MAAK,oBAAGsB,oBAAH,MAAkB,GAAlB,QAA4B,CAC1D/J,KAAM+J,EAAaq2B,IACnBpyB,WAAYjE,EAAaiE,WACzB/C,WAAW,aAAGq5B,YAAa/kC,QAmP7B2L,OA/OF,gBAIG,IAHClP,EAGF,EAHEA,GAAIg/C,EAGN,EAHMA,YAAaC,EAGnB,EAHmBA,YAGnB,IAHgCnV,aAGhC,SAFE57B,EAEF,EAFEA,SACA1L,EACF,EADEA,UAEIgH,EAAU,CACd6C,QAAS,QACTrM,GAAIA,EACJg/C,cACAC,YAAaA,GAEf,IAAc,IAAVnV,GAA6B,SAAVA,EAAkB,CACvC,IAAMoV,EAAK18C,EAAUiuB,WAAWviB,IAAYlO,GAC5C,GAAIk/C,IAAgB,IAAVpV,EACR,MAAO,CACL9lC,KAAMk7C,EACNhsC,aAAa,GAGnB,OAAOrF,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBA6NlDoB,UA1NF,SAAqB+vC,GAKnB,IAAM11C,EAAU,CACd6C,QAAS,WACT6yC,GAAIA,GAEN,OAAOrxC,IACJ7B,KAAKxC,GACLiD,MAAK,gBAVag2C,EAUV10C,EAAH,EAAGA,aAAH,MAAuB,CAAE/J,MAVZy+C,EAU8B10C,EATjDoD,IAAMiO,QAAN,aAAoBqjC,EAAOziD,GAA3B,aACOyiD,QAwNTpzC,UA7MF,gBAIG,IAHCrP,EAGF,EAHEA,GAAU0iD,EAGZ,EAHM1+C,KAGN,IAHsB2+C,mCAGtB,SAFEz0C,EAEF,EAFEA,SAAU9E,EAEZ,EAFYA,SACV5G,EACF,EADEA,UAEF,GAAKxC,EAAL,CACA,IAAM4iD,EAAYpgD,EAAUiuB,WAAWviB,IAAYlO,GAyG3CgQ,EAAmC4yC,EAAnC5yC,eAAgBC,EAAmB2yC,EAAnB3yC,eAEpBL,EAAUD,aAA0B+yC,EAAUE,GAClD,GAAIl9C,IAAE6E,QAAQqF,GAEZ,OADAuB,IAAM6lB,KAAN,aAAiBh3B,EAAjB,uBACO,CAAEgE,KAAM4+C,GAEjB,IAAMp5C,EAAU,CACd6C,QAAS,WACTrM,KACAk/C,GAAG,2BAAMtvC,GAAP,IAAgBI,iBAAgBC,oBAEpC,OAAOpC,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAMq7C,EAA/B,EAAGtxC,kBArHX,SAASsxC,EAAYoD,GAGnB,GAFAtxC,IAAMiO,QAAN,aAAoBpf,EAApB,WAG4B,OAA1ByiD,EAAOrC,gBACPqC,EAAOrC,kBAAP,OAA0BwC,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAWxC,gBACrC,CAAC,IAAD,IACMzd,EAAWkN,GAASrtC,UAAUiuB,WAClCviB,IADe,OAEfu0C,QAFe,IAEfA,GAFe,UAEfA,EAAQhkB,iBAFO,iBAEf,EAAoB,UAFL,aAEf,EAAwBz+B,KAGhB,OAAR2iC,QAAQ,IAARA,OAAA,EAAAA,EAAUsa,yBACV7kB,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUsa,wBAA0B9rB,OAEpDqa,GACE,CACEtjC,MAAO,uBACP6E,QAAQ,GAAD,OAAK41B,EAASjjC,KAAd,8BAAwC04B,KAAM0c,QAAN,OAC7CnS,QAD6C,IAC7CA,OAD6C,EAC7CA,EAAUsa,0BAGd,CAAE3zC,KAAM,UAAW+V,UAAW,OAwBpC,IApBEuhC,GAAQ,OAAC6B,QAAD,IAACA,OAAD,EAACA,EAAQ5B,WACfD,GAAQ,OAACgC,QAAD,IAACA,OAAD,EAACA,EAAW/B,YACX,OAAT+B,QAAS,IAATA,OAAA,EAAAA,EAAWpB,uBAAX,OAAkCiB,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAQjB,qBAEV,MAA9BiB,EAAOjB,oBACT5V,GAAY,CACV7+B,QACE,gFACFo/B,QAAS,YACTC,OAAQ,SACRF,UAAW,WACT/Q,OAAO0nB,KAAP,+HAC0HJ,EAAOziD,IAC/H,aAON2iD,EAA6B,CAC/B,IAAMjnC,EAAY+mC,EAAO/mC,UACnBonC,EAA0B,SAAC/1C,EAAS+yC,GACxC,IAAMC,EAAoB,SAAClwC,GACzB,IAAID,EAAU,GAMd,OALAkwC,EAAWlsC,SAAQ,SAACosC,GACdyC,EAAOzC,MAAP,OAAqBnwC,QAArB,IAAqBA,OAArB,EAAqBA,EAAUmwC,MACjCpwC,EAAQowC,GAAYyC,EAAOzC,OAG3Bt6C,IAAE6E,QAAQqF,GAAiB,KACnBA,GAERmzC,EAAiBhD,EAAkB6C,GACrCG,GACFrC,GACE,CACE1gD,GAAI0b,EACJ3O,QAASA,EACT3D,WACA+Q,KAAM,SAAC3T,GAAD,aAA0B,KAAlB,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAG49B,WAAH,eAAQ/lB,SAAgB0hC,EAAkBv5C,IACvDoJ,QAAQ,aACNswC,SAAS,GACN6C,IAGP,CAAE5gB,QAAQ,eAAD,OAAiBniC,EAAjB,YAAuB8/C,EAAW74B,KAAK,SAGtD67B,EAAwB,+BAAgC,CACtD,QACA,YAEFA,EAAwB,0BAA2B,CAAC,aAEpD,IAAM3C,EAAe,SAACP,GAAD,OACnB6C,EAAOrC,gBAAkBqC,EAAOrC,iBAAmBR,GACjDO,EAAY,OAACyC,QAAD,IAACA,OAAD,EAACA,EAAWxC,iBAC1BM,GACE,CACE1gD,GAAI0b,EACJ3O,QAAS,sBACT3D,WACA+Q,KAAM,SAAC+kB,GAAD,aACqB,KAAlB,OAAPA,QAAO,IAAPA,GAAA,UAAAA,EAASkF,WAAT,eAAc/lB,SAAgB8hC,EAAY,OAACjhB,QAAD,IAACA,OAAD,EAACA,EAAS0gB,SACtDhwC,QAAS,CACPswC,SAAS,EACTN,OAAQ6C,EAAOrC,iBAGnB,CAAEje,QAAQ,eAAD,OAAiBniC,EAAjB,aAIf,OAAOyiD,IAkGTO,aA9EF,YAA4C,IAAfhjD,EAAc,EAAdA,GAAIijD,EAAU,EAAVA,OACzBz5C,EAAO,aACX6C,QAAS,iBACToP,KAAMzb,GACHijD,GAEL,OAAOp1C,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAyElDm1C,QAtEF,YAAyC,IACjC15C,EAAU,CACd6C,QAAS,SACToP,KAHoC,EAAnBA,KAIjBC,UAJoC,EAAbA,WAMzB,OAAO7N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAiElDkgC,cA9DF,YAAkD,IAC1CzkC,EAAU,CACd6C,QAAS,kBACT6yC,GAH6C,EAAnBA,GAI1Bh3C,MAJ6C,EAAfA,MAK9B+lB,KAL6C,EAARA,MAOvC,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAwDlDogC,cArDF,YAAsD,IAAxB+Q,EAAuB,EAAvBA,GAAIh3C,EAAmB,EAAnBA,MAAO+lB,EAAY,EAAZA,KACjCzkB,EAAU,CACd6C,QAAS,kBACT6yC,GAAIA,EACJl/C,GAJiD,EAANA,GAK3CkI,MAAOA,EACP+lB,KAAMA,GAER,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBA8ClD48B,iBA3CF,SAA+B57B,GAC7B,OAAOm7B,GAAoB,aAAE79B,QAAS,sBAAyB0C,KA2C/DsxC,YAxCF,YAA+C,IACvC72C,EAAU,CACd6C,QAAS,gBACTrM,GAH0C,EAAlBA,GAIxBsgD,WAJ0C,EAAdA,YAM9B,OAAOzyC,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBAmClDo1C,gBAhCF,YAAoD,IAC5C35C,EAAU,CACd6C,QAAS,oBACT6yC,GAH+C,EAAnBA,GAI5Bh3C,MAJ+C,EAAfA,MAKhC+lB,KAL+C,EAARA,MAOzC,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,kBA0BlDq1C,gBAvBF,YAAwD,IAAxBlE,EAAuB,EAAvBA,GAAIh3C,EAAmB,EAAnBA,MAAO+lB,EAAY,EAAZA,KACnCzkB,EAAU,CACd6C,QAAS,oBACT6yC,GAAIA,EACJl/C,GAJmD,EAANA,GAK7CkI,MAAOA,EACP+lB,KAAMA,GAER,OAAOpgB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACqB,GAAD,MAAQ,CAAE9J,KAAM8J,EAAEC,mBCzQvC/O,GAASiP,aAAa,CACjCvO,KAAM,KACN4J,KAAM,MACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAM6hC,IAAIA,OCE3B+I,GAAgB9+B,aAAoB,CAAErP,UAAQsD,SAE9C2rC,GAAgB/kC,YACpB,sBADoC,uCAEpC,WAAO6F,EAAP,sBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAGyBpN,GAAI2rC,cAAcl/B,GAH3C,cAGQrC,EAHR,yBAISA,GAJT,2CAFoC,yDAUhCyhC,GAAgBjlC,YACpB,sBADoC,uCAEpC,WAAO6F,EAAP,sBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAGyBpN,GAAI6rC,cAAcp/B,GAH3C,cAGQrC,EAHR,yBAISA,GAJT,2CAFoC,yDAUhCi+B,GAAmBzhC,YACvB,yBADuC,uCAEvC,WAAO6F,GAAP,eAAA5F,EAAA,sEACyB7G,GAAIqoC,iBAAiB57B,GAD9C,cACQrC,EADR,yBAESA,GAFT,2CAFuC,uDAQnCs2C,GAAe95C,YACnB,oBADmC,uCAEnC,uCAAAC,EAAA,yDAASnJ,EAAT,EAASA,GAAIijD,EAAb,EAAaA,OAAY/0C,EAAzB,EAAyBA,SAAUwB,EAAnC,EAAmCA,UAC5BD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAEyBpN,GAAI0gD,aAAa,CACtChjD,GAAIA,EACJijD,OAAQA,IAJZ,cAEQv2C,EAFR,yBAMSA,GANT,2CAFmC,yDAY/Bw2C,GAAUh6C,YACd,oBAD8B,uCAE9B,uCAAAC,EAAA,yDAASsS,EAAT,EAASA,KAAMC,EAAf,EAAeA,UAAexN,EAA9B,EAA8BA,SAAUwB,EAAxC,EAAwCA,UACjCD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAEyBpN,GAAI4gD,QAAQ,CACjCznC,KAAMA,EACNC,UAAWA,IAJf,cAEQhP,EAFR,yBAMSA,GANT,2CAF8B,yDAY1B2zC,GAAcn3C,YAClB,mBADkC,uCAElC,WAAO6F,EAAP,sBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAGyBpN,GAAI+9C,YAAYtxC,GAHzC,cAGQrC,EAHR,yBAISA,GAJT,2CAFkC,yDAU9By2C,GAAkBj6C,YACtB,wBADsC,uCAEtC,WAAO6F,EAAP,sBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAGyBpN,GAAI6gD,gBAAgBp0C,GAH7C,cAGQrC,EAHR,yBAISA,GAJT,2CAFsC,yDAUlC02C,GAAkBl6C,YACtB,wBADsC,uCAEtC,WAAO6F,EAAP,sBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWk2B,IAAIA,IAAK10B,GAD5C,iEAGyBpN,GAAI8gD,gBAAgBr0C,GAH7C,cAGQrC,EAHR,yBAISA,GAJT,2CAFsC,yDAUlC22C,GAAqB3wC,YAAa,0BAClC4wC,GAAe5wC,YAAa,oBAErBxT,GAAO,2BACfiuC,IADe,IAElBc,iBACAE,iBACAxD,oBACAqY,gBACAE,WACAG,sBACAC,gBACAjD,eACA8C,mBACAC,qBClGWp4C,GAAUsD,aAAoB,CACzCtP,UACAE,WACAqP,SAAS,EACT5E,aAAc,CAAE45C,gBAAiB,GAAIX,UAAW,MAChDn4C,cAAe,SAACC,EAAS8G,GACvB7G,YACED,EACAxL,GAAQ+uC,eACR,SAAC1rC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQivC,eACR,SAAC5rC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQyrC,kBACR,SAACpoC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQ8jD,cACR,SAACzgD,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQgkD,SACR,SAAC3gD,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQmhD,aACR,SAAC99C,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQikD,iBACR,SAAC5gD,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,GAAQkkD,iBACR,SAAC7gD,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAI7B0G,EAAQ+F,QAAQvR,GAAQmkD,oBAAoB,SAAC9gD,EAAO4H,GAAY,IAAD,EAClCA,EAAOX,QAA1BjG,EADqD,EACrDA,OAAQR,EAD6C,EAC7CA,OACX+P,sBAAYvP,KAAShB,EAAMghD,gBAAgBhgD,OAASA,GACpDuP,sBAAY/P,KAASR,EAAMghD,gBAAgBxgD,OAASA,MAE3D2H,EAAQ+F,QAAQvR,GAAQokD,cAAc,SAAC/gD,EAAO4H,GAC5C5H,EAAMqgD,UAAYz4C,EAAOX,cC9DzBg6C,GAAY1lB,YAAgB,CAChCsG,IAAKp5B,GACL+a,QAASgiB,GAAY/8B,QACrB+/B,SAAUC,GAAYhgC,QACtBi+B,kBAAmBC,GAAsBl+B,QACzCq5B,aAAcC,GAAgBt5B,QAC9B89B,QAASC,GAAa/9B,QACtBsgC,aAAcC,GAAiBvgC,QAC/Bw/B,UAAWiZ,GAAez4C,UAUb04C,GAPC,CACdphD,OACAtD,UACAE,WACA8L,QAASw4C,ICtBLlhD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,gBAAiBI,MAAK,SAACC,GAClD,MAAO,CAAE1I,KAAM0I,EAASqB,aAAa41C,cAGzCz0C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,YAAarM,GAAIA,IAAMyM,MAAK,SAACC,GACxD,MAAO,CAAE1I,KAAM0I,EAASqB,mBAKxB/O,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,eACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMqhD,IAAID,YAE3BzkD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BuhD,GAPK,CAClBvhD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCtBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,iBAAkBI,MAAK,SAACC,GACnD,MAAO,CAAE1I,KAAM0I,EAASqB,aAAa+1C,eAGzC50C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,cAAerM,GAAIA,IAAMyM,MAAK,SAACC,GAC1D,MAAO,CAAE1I,KAAM0I,EAASqB,mBAKxB/O,GAASiP,aAAa,CAC1BvO,KAAM,YACN4J,KAAM,gBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMqhD,IAAIE,aAE3B5kD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/ByhD,GAPO,CACpBzhD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCtBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,wBAAyBI,MAAK,SAACC,GAC1D,MAAO,CAAE1I,KAAM0I,EAASqB,aAAai2C,sBAGzC90C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IACJ7B,KAAK,CAAEK,QAAS,qBAAsBrM,GAAIA,IAC1CyM,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,mBAK1B/O,GAASiP,aAAa,CAC1BvO,KAAM,mBACN4J,KAAM,uBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMqhD,IAAII,oBAE3B9kD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B2hD,GAPc,CAC3B3hD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCxBLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,mBAAoBI,MAAK,SAACC,GACrD,MAAO,CAAE1I,KAAM0I,EAASqB,aAAam2C,iBAGzCh1C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,gBAAiBrM,GAAIA,IAAMyM,MAAK,SAACC,GAC5D,MAAO,CAAE1I,KAAM0I,EAASqB,mBAKxB/O,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,kBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMqhD,IAAIM,eAE3BhlD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B6hD,GAPS,CACtB7hD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCXI61C,GAJE,CACfp5C,QARiB8yB,YAAgB,CACjC6lB,SAAUU,GAAcr5C,QACxB84C,UAAWQ,GAAet5C,QAC1Bk5C,YAAaK,GAAiBv5C,QAC9Bg5C,iBAAkBQ,GAAsBx5C,WCJpC1I,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,yBAA0BI,MAAK,SAACC,GAC3D,MAAO,CAAE1I,KAAM0I,EAASqB,aAAa02C,uBAGzCv1C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IACJ7B,KAAK,CAAEK,QAAS,sBAAuBrM,GAAIA,IAC3CyM,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,kBAG9BoB,UAAW,SAACu1C,GACV,OAAO72C,IACJ7B,KADI,aACGK,QAAS,0BAA6Bq4C,IAC7Cj4C,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,kBAG9BsB,UAAW,SAACq1C,GACV,OAAO72C,IACJ7B,KADI,aACGK,QAAS,0BAA6Bq4C,IAC7Cj4C,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,mBAK1B/O,GAASiP,aAAa,CAC1BvO,KAAM,oBACN4J,KAAM,wBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoiD,IAAIF,qBAE3BvlD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BsiD,GAPe,CAC5BtiD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCtCLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,gBAAiBI,MAAK,SAACC,GAClD,MAAO,CAAE1I,KAAM0I,EAASqB,aAAa82C,cAGzC31C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,aAAcrM,GAAIA,IAAMyM,MAAK,SAACC,GACzD,MAAO,CAAE1I,KAAM0I,EAASqB,kBAG5BoB,UAAW,SAAC21C,GACV,OAAOj3C,IACJ7B,KADI,aACGK,QAAS,iBAAoBy4C,IACpCr4C,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,kBAG9BsB,UAAW,SAACy1C,GACV,OAAOj3C,IACJ7B,KADI,aACGK,QAAS,iBAAoBy4C,IACpCr4C,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,mBAK1B/O,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,eACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoiD,IAAIE,YAE3B3lD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/ByiD,GAPM,CACnBziD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCpCLjM,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,uBAAwBI,MAAK,SAACC,GACzD,MAAO,CAAE1I,KAAM0I,EAASqB,aAAai3C,qBAGzC91C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IACJ7B,KAAK,CAAEK,QAAS,oBAAqBrM,GAAIA,IACzCyM,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,kBAG9BoB,UAAW,SAAC81C,GACV,OAAOp3C,IACJ7B,KADI,aACGK,QAAS,wBAA2B44C,IAC3Cx4C,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,kBAG9BsB,UAAW,SAAC41C,GACV,OAAOp3C,IACJ7B,KADI,aACGK,QAAS,wBAA2B44C,IAC3Cx4C,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,mBAK1B/O,GAASiP,aAAa,CAC1BvO,KAAM,kBACN4J,KAAM,sBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoiD,IAAIK,mBAE3B9lD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B4iD,GAPa,CAC1B5iD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KC7BI42C,GAJE,CACfn6C,QAPiB8yB,YAAgB,CACjCknB,gBAAiBI,GAAqBp6C,QACtCy5C,kBAAmBY,GAAuBr6C,QAC1C65C,SAAUS,GAAct6C,WCqCnB,IAAM1I,GAAM,CACjBsL,QA7CF,WAAsD,IAAD,yDAAJ,GAAtB8T,EAA0B,EAA1BA,OAAQkS,EAAkB,EAAlBA,UAC3B7kB,EAAI,eACJ2S,EAAS,CAAEA,OAAQA,EAAQkS,UAAWA,GAAc,MAEpDpqB,EAAO,aACX6C,QAAS,gBACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaw3C,UAC5Bt2C,WAAYF,OAoCdG,OAhCF,YAAiC,IACzB1F,EAAU,CACd6C,QAAS,cACTrM,GAH4B,EAANA,IAKxB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA2Bq2C,GACzB,IAAMh8C,EAAO,aACX6C,QAAS,kBACNm5C,GAEL,OAAO33C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA2Bm2C,GACzB,IAAMh8C,EAAO,aACX6C,QAAS,kBACNm5C,GAEL,OAAO33C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBClCP/O,GAASiP,aAAa,CAC1BvO,KAAM,WACN4J,KAAM,YACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMgjD,UAAUA,aAEjCrmD,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAcIk3C,GAPO,CACpBnjD,OACApD,WACA8L,QAPsB8yB,YAAgB,CACtCynB,UAAWv6C,KAOXhM,WCtBIsD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,yBAA0BI,MAAK,SAACC,GAC3D,MAAO,CAAE1I,KAAM0I,EAASqB,aAAa23C,uBAIzCx2C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IACJ7B,KAAK,CAAEK,QAAS,qBAAsBrM,GAAIA,IAC1CyM,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,mBAK1B/O,GAASiP,aAAa,CAC1BvO,KAAM,aACN4J,KAAM,sBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMojD,SAASC,cAEhC1mD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BujD,GAPO,CACpBvjD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCzBLjM,GAAM,CACVsL,QAAS,YAAiB,IAAdk4C,EAAa,EAAbA,OACV,OAAOj4C,IAAM7B,KAAK,CAAEK,QAAS,sBAAuBy5C,WAAUr5C,MAAK,SAACqB,GAClE,MAAO,CAAE9J,KAAM8J,EAAEC,aAAag4C,sBAGlC72C,OAAQ,YAA4C,IAAzClP,EAAwC,EAAxCA,GAAwC,IAApCoV,KAAQ0wC,GAA4B,aAAT,GAAS,GAA5BA,OAAQrlB,EAAoB,EAApBA,OAC7B,OAAO5yB,IACJ7B,KAAK,CAAEK,QAAS,qBAAsBrM,KAAI8lD,SAAQrlB,WAClDh0B,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAM8J,EAAEC,kBAGvBsB,UAAW,SAACN,GACV,OAAOlB,IACJ7B,KADI,aACGK,QAAS,yBAA4B0C,IAC5CtC,MAAK,SAACqB,GACL,MAAO,CAAE9J,KAAM8J,EAAEC,kBAIvBi4C,UAAW,SAACxwC,GACV,IAAMhM,EAAO,2BACRgM,GADQ,IAEXnJ,QAAS,yBAEX,OAAOwB,IAAM7B,KAAKxC,KAIhBxK,GAASiP,aAAa,CAC1BvO,KAAM,QACN4J,KAAM,uBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMojD,SAASM,MAAMt3C,SAEtCzP,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/ByZ,GAPG,CAChBzZ,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCpCLjM,GAAM,CACVsL,QAAS,SAACtH,GACR,OAAOuH,IAAM7B,KAAN,aAAaK,QAAS,mBAAsB/F,IAAUmG,MAAK,SAACqB,GACjE,MAAO,CACL9J,KAAM8J,EAAEC,aAAam4C,aACrBj3C,WAAY3I,OAIlB4I,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IAAM7B,KAAK,CAAEK,QAAS,iBAAkBrM,OAAMyM,MAAK,SAACqB,GACzD,MAAO,CACL9J,KAAM8J,EAAEC,mBAMV/O,GAASiP,aAAa,CAC1BvO,KAAM,OACN4J,KAAM,iBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMojD,SAASM,MAAMA,SAEtC/mD,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAeI43C,GAPG,CAChB7jD,OACAtD,UACAE,WACA8L,QATkB8yB,aAAgB,CAClCmoB,MAAOj7C,GACP2D,MAAOy3C,GAAqBp7C,WCnCxB1I,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,oBAAqBI,MAAK,SAACC,GACtD,MAAO,CAAE1I,KAAM0I,EAASqB,aAAas4C,kBAGzCn3C,OAAQ,YAAa,IAAVlP,EAAS,EAATA,GACT,OAAO6N,IACJ7B,KAAK,CAAEK,QAAS,iBAAkBrM,GAAIA,IACtCyM,MAAK,SAACC,GACL,MAAO,CAAE1I,KAAM0I,EAASqB,mBAK1B/O,GAASiP,aAAa,CAC1BvO,KAAM,QACN4J,KAAM,iBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMojD,SAASl3C,SAEhCvP,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B2K,GAPG,CAChB3K,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,KCkCJ,IAAMjM,GAAM,CACjBsL,QA/DF,SAAwBtH,GACtB,IAAMkD,EAAO,aACX6C,QAAS,eACN/F,GAEL,OAAOuH,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa43C,SAC5B12C,WAAY3I,OAyDd4I,OArDF,YAAgC,IACxB1F,EAAU,CACd6C,QAAS,aACTrM,GAH2B,EAANA,IAKvB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBAgDjBoB,UA5CF,SAA0Bm3C,GACxB,IAAM98C,EAAO,aACX6C,QAAS,iBACNi6C,GAEL,OAAOz4C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAsCXsB,UAnCF,SAA0Bi3C,GACxB,IAAM98C,EAAO,aACX6C,QAAS,iBACNi6C,GAEL,OAAOz4C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBA6BXyE,UA1BF,YAA+C,IAAnBxS,EAAkB,EAAlBA,GAAOsmD,EAAW,uBACtC98C,EAAO,aACX6C,QAAS,gBACTrM,MACGsmD,GAEL,OAAOz4C,IAAM7B,KAAKxC,GAASiD,MAAK,iBAAO,CAAEzI,KAAMhE,OAqB/CumD,gBAlBF,SAAmCx3C,GACjC,IAAMvF,EAAO,aACX6C,QAAS,0BACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,OAAcA,EAASqB,iBAcvD48B,iBAXF,SAAoC57B,GAClC,OAAOm7B,GAAoB,aAAE79B,QAAS,2BAA8B0C,MC5DzD/P,GAASiP,aAAa,CACjCvO,KAAM,UACN4J,KAAM,WACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMojD,SAASA,YCChCxY,GAAgB9+B,aAAoB,CAAErP,UAAQsD,SAE9CqoC,GAAmBzhC,YACvB,8BADuC,uCAEvC,WAAO6F,GAAP,eAAA5F,EAAA,sEACyB7G,GAAIqoC,iBAAiB57B,GAD9C,cACQrC,EADR,yBAESA,GAFT,2CAFuC,uDAQ5BxN,GAAO,2BAAQiuC,IAAR,IAAuBxC,sBCX9B3/B,GAAUsD,aAAoB,CACzCtP,UACAE,WACAqP,SAAS,EACT9D,cAAe,SAACC,EAAS8G,GACvB7G,YACED,EACAxL,GAAQyrC,kBACR,SAACpoC,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,SCJ3BwiD,GAAiB1oB,YAAgB,CACrC6nB,SAAU36C,GACV46C,WAAYC,GAAc76C,QAC1ByD,MAAOxB,GAAUjC,QACjBi7C,MAAOE,GAAUn7C,UAUJy7C,GAPM,CACnBnkD,OACAtD,UACAE,WACA8L,QAASw7C,ICoBJ,IAAMlkD,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,4BAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa24C,0BAoC9Bx3C,OAhCF,YAA2C,IACnC1F,EAAU,CACd6C,QAAS,wBACTrM,GAHsC,EAANA,IAKlC,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAAqCw3C,GACnC,IAAMn9C,EAAO,aACX6C,QAAS,4BACNs6C,GAEL,OAAO94C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAAqCs3C,GACnC,IAAMn9C,EAAO,aACX6C,QAAS,4BACNs6C,GAEL,OAAO94C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,uBACN4J,KAAM,gCACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMqkD,SAASF,wBAEhCxnD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BukD,GAPiB,CAC9BvkD,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCkBK,IAAMsD,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,mBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAa+4C,iBAoC9B53C,OAhCF,YAAmC,IAC3B1F,EAAU,CACd6C,QAAS,gBACTrM,GAH8B,EAANA,IAK1B,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA6B43C,GAC3B,IAAMv9C,EAAO,aACX6C,QAAS,oBACN06C,GAEL,OAAOl5C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA6B03C,GAC3B,IAAMv9C,EAAO,aACX6C,QAAS,oBACN06C,GAEL,OAAOl5C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,uBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMqkD,SAASE,eAEhC5nD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/B0kD,GAPS,CACtB1kD,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCTaioD,GAJM,CACnBj8C,QANqB8yB,YAAgB,CACrC4oB,qBAAsBQ,GAA0Bl8C,QAChD87C,YAAaK,GAAiBn8C,WCkCzB,IAAM1I,GAAM,CACjBsL,QAxCF,WAIE,OAAOC,IAAM7B,KAHG,CACdK,QAAS,mBAEgBI,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaq5C,iBAoC9Bl4C,OAhCF,YAAmC,IAC3B1F,EAAU,CACd6C,QAAS,gBACTrM,GAH8B,EAANA,IAK1B,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA6Bk4C,GAC3B,IAAM79C,EAAO,aACX6C,QAAS,oBACNg7C,GAEL,OAAOx5C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA6Bg4C,GAC3B,IAAM79C,EAAO,aACX6C,QAAS,oBACNg7C,GAEL,OAAOx5C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC/BP/O,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,sBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQ4R,eAE/BloD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BglD,GAPS,CACtBhlD,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCqBK,IAAMsD,GAAM,CACjBsL,QA3CF,WAAkD,IAAD,yDAAJ,GAAfkB,EAAmB,EAAnBA,WACtBC,EAAI,eAASD,EAAa,CAAEA,WAAYA,GAAe,MACvDtF,EAAO,aACX6C,QAAS,mBACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaw5C,aAC5Bt4C,WAAYF,OAoCdG,OAhCF,YAAoC,IAC5B1F,EAAU,CACd6C,QAAS,iBACTrM,GAH+B,EAANA,IAK3B,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAA8Bq4C,GAC5B,IAAMh+C,EAAO,aACX6C,QAAS,qBACNm7C,GAEL,OAAO35C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAA8Bm4C,GAC5B,IAAMh+C,EAAO,aACX6C,QAAS,qBACNm7C,GAEL,OAAO35C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mB,8CAUN,4BAAA5E,EAAA,6DACCK,EAAU,CACd6C,QAAS,4BAFN,kBAIEwB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBANN,4C,sBC5CP,IAAM/O,GAASiP,aAAa,CAC1BvO,KAAM,cACN4J,KAAM,uBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQ+R,gBAE/BroD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAc/BmlD,GAPU,CACvBnlD,OACApD,WACA8L,QATcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAOTvP,WCqBK,IAAMsD,GAAM,CACjBsL,QA3CF,WAA6C,IAAD,yDAAJ,GAAfkB,EAAmB,EAAnBA,WACjBC,EAAI,eAASD,EAAa,CAAEA,WAAYA,GAAe,MACvDtF,EAAO,aACX6C,QAAS,cACN0C,GAEL,OAAOlB,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,aAAaynC,QAC5BvmC,WAAYF,OAoCdG,OAhCF,YAA+B,IACvB1F,EAAU,CACd6C,QAAS,YACTrM,GAH0B,EAANA,IAKtB,OAAO6N,IAAM7B,KAAKxC,GAASiD,MAAK,SAACC,GAAD,MAAe,CAC7C1I,KAAM0I,EAASqB,kBA2BjBoB,UAvBF,SAAyBu4C,GACvB,IAAMl+C,EAAO,aACX6C,QAAS,gBACNq7C,GAEL,OAAO75C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiBXsB,UAdF,SAAyBq4C,GACvB,IAAMl+C,EAAO,aACX6C,QAAS,gBACNq7C,GAEL,OAAO75C,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC1BP/O,GAASiP,aAAa,CAC1BvO,KAAM,SACN4J,KAAM,UACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMizC,QAAQA,WAE/Bt2C,GAAUmP,aAAoB,CAAErP,UAAQsD,SACxC0I,GAAUsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,IAoBIo5C,GAPK,CAClBrlD,OACApD,WACA8L,QAboB8yB,YAAgB,CACpC0X,QAASxqC,GACTsqC,iBAAkBG,GAAqBzqC,QACvC8rC,SAAUE,GAAahsC,QACvBo8C,YAAaE,GAAgBt8C,QAC7BmrC,WAAYE,GAAerrC,QAC3BssC,UAAWE,GAAcxsC,QACzBu8C,aAAcE,GAAiBz8C,UAO/BhM,W,UC9BIsD,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,+BAAgCI,MAAK,SAACqB,GACjE,MAAO,CAAE9J,KAAM8J,EAAEC,aAAa65C,8BAK9B5oD,GAASiP,aAAa,CAC1BvO,KAAM,yBACN4J,KAAM,gCACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMslD,MAAMD,2BAE7B1oD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAOjCwlD,GAA8B,CACzCxlD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,GAaPxP,aAAkB,CACpBC,OAAQA,GACRE,QAASA,KAJI6oD,G,GAAb3oD,YACW4oD,G,GAAX1oD,UAMI2oD,GAAmC5sC,aAAa,CACpD3b,KAAM,6BACNN,YAAa2oD,GACbxkD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAGnDykD,GAAwC16C,aAAkB,CAC9D9N,KAAM,6BACNN,YAAa2oD,GACbxkD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAGnD0kD,GAAwCtyC,aAAkB,CAC9DnW,KAAM,6BACNJ,UAAW0oD,KAiBEI,GAdoB,CAEjC9lD,IAAKwlD,GAA4BxlD,IAEjCpD,QAAS4oD,GAA4B5oD,QACrCsD,UAAWslD,GAA4B9oD,OAAOwD,UAE9CE,OAAQqlD,GACRtlD,OAAQulD,GAERxmD,OAAQymD,GACRxgD,YAAa0gD,GACb1/C,YAAay/C,IChEf,IAAMG,GAAkBn/C,YACtB,wBADsC,uCAEtC,WAAOxD,EAAG4iD,GAAV,qBAAAn/C,EAAA,yDACU+E,EAAwBo6C,EAAxBp6C,SAAUwB,EAAc44C,EAAd54C,UACbD,YAAiBvB,IAAW25C,MAAMU,aAAc74C,GAFvD,iECTO7B,IAAM7B,KAAK,CAAEK,QAAS,kBAAmBwpB,KAAMuC,KAAM0jB,UDS5D,uBAGU/tC,EAHV,EAGUA,aAHV,kBAISA,EAAaw6C,cAJtB,2CAFsC,yDAoClCC,GAAoB9+C,YAAY,CACpChK,KAAM,oBACNiK,aAAa,2BACRC,KADO,IAEVmI,WAAYof,MAASwH,SAAS,GAAI,QAAQ9tB,cAC1C49C,MAAO,KAETx+C,SAAU,CACRy+C,gBADQ,SACQnmD,EAAO4H,GACH,oBAAdA,EAAOnK,KACTuC,EAAMkmD,MAAQt+C,EAAOX,UAGzBm/C,mBANQ,SAMWpmD,EAAO4H,GACxB,GAA8B,WAA1BA,EAAOX,QAAQW,OAAqB,CAAC,IAAD,IAClC4N,EAAI5N,EAAOX,QAIf,GAAIuO,EAAE0oB,SAAW1oB,EAAEyF,aAAc,OAEjC,IACIorC,EAAkBC,GADb9wC,EAAE+wC,OACyB/wC,EAAE8d,KAAM9d,EAAEgxC,kBAEd,KAA9BH,EAAgBI,iBACYj5C,KAA3B,UAAAxN,EAAMkmD,aAAN,eAAaO,aACZ,UAAAzmD,EAAMkmD,aAAN,eAAaO,WAAYJ,EAAgBI,aAE3CJ,EAAgB5oD,GAAK+X,EAAE/X,GACvBuC,EAAMkmD,MAAQG,QAEX,GAA8B,WAA1Bz+C,EAAOX,QAAQW,QAiBhC,SAAyB5H,EAAO4H,GAAS,IAAD,EAClC4N,EAAI5N,EAAOX,QACXo/C,EAAkBC,GAAU9wC,EAAE+wC,OAAQ/wC,EAAE8d,KAAM9d,EAAEgxC,kBAKpD,GAJAH,EAAgB5oD,GAAK+X,EAAE/X,IAInB,UAAAuC,EAAMkmD,aAAN,eAAazoD,MAAO+X,EAAE/X,GACU,KAA9B4oD,EAAgBI,WAAoBjxC,EAAE0oB,SAAW1oB,EAAEyF,aACrDjb,EAAMkmD,MAAQ,GACXlmD,EAAMkmD,MAAQG,MACd,CAAC,IAAD,IACL,GAAI7wC,EAAE0oB,SAAW1oB,EAAEyF,aAAc,OAGD,KAA9BorC,EAAgBI,iBACYj5C,KAA3B,UAAAxN,EAAMkmD,aAAN,eAAaO,aACZ,UAAAzmD,EAAMkmD,aAAN,eAAaO,WAAYJ,EAAgBI,aAE3CzmD,EAAMkmD,MAAQG,IAnCZK,CAAgB1mD,EAAO4H,QAClB,GAA8B,WAA1BA,EAAOX,QAAQW,OAAqB,CAAC,IAAD,GACzC,UAAA5H,EAAMkmD,aAAN,eAAazoD,MAAOmK,EAAOX,QAAQxJ,KACrCuC,EAAMkmD,MAAQ,OAKtBh+C,cAAe,SAACC,GACdC,YAAuBD,EAAS29C,IAAiB,SAAC9lD,EAAO4H,GACvD5H,EAAMkmD,MAAQt+C,EAAOX,QACrBjH,EAAMwP,YAAa,IAAInH,MAAOC,oBA6BpC,SAASg+C,GAAUC,EAAQjzB,EAAMkzB,GAK/B,IAJA,IAAIC,EAAY,GACZE,EAAU,GACRzU,EAAQrc,KAAM0jB,QAEXn6B,EAAI,EAAGA,EAAImnC,EAAOzqC,OAAQsD,IAAK,CACtC,GAA0B,KAAtBmnC,EAAOnnC,GAAGunC,QAAgB,CAC5BF,EAAYnzB,EAAOizB,EAAOnnC,GAAGqnC,UAC7BE,EAAUJ,EAAOnnC,GAAGunC,QACpB,MACSF,EAAYnzB,EAAOizB,EAAOnnC,GAAGqnC,WAAanzB,IAAS4e,IAC5DuU,EAAYnzB,EAAOizB,EAAOnnC,GAAGqnC,UAC7BE,EAAUrzB,EAAOizB,EAAOnnC,GAAGunC,SAG/B,MAAO,CACLF,UAAWA,EACXE,QAASA,EACTH,iBAAkBA,GAIf,IAAM/9C,GAAUw9C,GAAkBx9C,Q,GAEOw9C,GAAkBtpD,QAA1DwpD,G,GAAAA,gBAAiBC,G,GAAAA,mBACZzpD,GAAU,CAAEmpD,mBAAiBK,mBAAiBC,uBE3IrD//C,GAAgB,CACpBC,IAAK,oBACLC,QAAS,EACTC,YACAC,UAAW,CAAC,UCJCmgD,GDOAp+C,YAAenC,GAAeoC,I,SEA7C,IAAM1I,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,mBAAoBI,MAAK,SAACqB,GACrD,MAAO,CAAE9J,KAAM8J,EAAEC,aAAaq7C,kBAK9BpqD,GAASiP,aAAa,CAC1BvO,KAAM,aACN4J,KAAM,oBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMslD,MAAMuB,eAE7BlqD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAOjC+mD,GAAkB,CAC7B/mD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,GAWTxP,aAAkB,CAChBC,OAAQqqD,GAAgBrqD,OACxBE,QAASmqD,GAAgBnqD,UAHDoqD,G,GAAblqD,YAA4CmqD,G,GAAXjqD,UAM1CkqD,GAAuBnuC,aAAa,CACxC3b,KAAM,iBACNN,YAAakqD,GACb/lD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAGnDgmD,GAA4Bj8C,aAAkB,CAClD9N,KAAM,iBACNN,YAAakqD,GACb/lD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAGnDimD,GAA4B7zC,aAAkB,CAClDnW,KAAM,iBACNJ,UAAWiqD,KAkBEI,GAfQ,CAErBrnD,IAAK+mD,GAAgB/mD,IAErBpD,QAASmqD,GAAgBnqD,QACzBsD,UAAW6mD,GAAgBrqD,OAAOwD,UAElCE,OAAQ4mD,GACR7mD,OAAQ8mD,GAER/nD,OAAQgoD,GACR/hD,YAAaiiD,GACbjhD,YAAaghD,GACbG,WCtEa,YAOX,IANFnmD,EAMC,EANDA,MACAoD,EAKC,EALDA,SACA7G,EAIC,EAJDA,GAIC,IAHDga,mBAGC,SAFD6b,EAEC,EAFDA,KAEC,IADDg0B,yBACC,SACGC,EAAa,KACXC,EAAoB,MAARl0B,EAAe1E,MAAWA,IAAO0E,GACnDk0B,EAAUl0B,KAAK,GAEf,IAAIm0B,EAAiB,KACR,MAATvmD,IACFumD,EAAiB74B,IAAO1tB,GAAOoyB,KAAK,IAItC,IADA,IAAMhhB,EAAW,GACR8M,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,IAAIoX,EAAU5H,IAAO44B,GAAWnxB,IAAIjX,EAAG,UACjCsoC,EAAM,CACVxmD,MAAOs1B,EACPn5B,MAAOm5B,EAAQlS,OAAO,cAExBhS,EAASiJ,KAAKmsC,GACQ,MAAlBD,GAA0BjxB,EAAQE,OAAOx1B,EAAO,SAClDqmD,EAAaG,GAEXJ,GAEe,OAAfC,IACCpkD,IAAE6E,QAAQ9G,IACiB,oBAAlBA,EAAMwyB,UAA2BxyB,EAAMwyB,aAEjD6zB,EAAaG,EACbpjD,EAASkyB,IAKf,GAAuB,OAAnBixB,IAA0C,IAAfF,EAAsB,CACnD,IAAM/wB,EAAU5H,IAAO1tB,GACjBwmD,EAAM,CACVxmD,MAAOs1B,EACPn5B,MAAOm5B,EAAQlS,OAAO,cAExBhS,EAASiJ,KAAKmsC,GACdH,EAAaG,EAGf,OACE,eAAC,KAAD,CACE7oD,UAAW,eACXq1B,gBAAgB,SAChBnhB,WAAW,EACX0E,YAAaA,EACbzE,cAAc,EACdvV,GAAIA,EACJN,KAAMM,EACNyD,MAAOqmD,EACPt0C,QAASX,EACThO,SAAUA,EACVhF,SAAS,MCxDTS,GAAM,CACVsL,QAAS,WACP,OAAOC,IAAM7B,KAAK,CAAEK,QAAS,4BAA6BI,MAAK,SAACqB,GAC9D,MAAO,CAAE9J,KAAM8J,EAAEC,aAAam8C,2BAK9BlrD,GAASiP,aAAa,CAC1BvO,KAAM,kBACN4J,KAAM,yBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMslD,MAAMsC,oBAE7BjrD,GAAUmP,aAAoB,CAAErP,UAAQsD,SAOjC8nD,GAAuB,CAClC9nD,OACAtD,UACAE,WACA8L,QAVcsD,aAAoB,CAClCtP,UACAE,WACAqP,SAAS,K,GAWTxP,aAAkB,CAChBC,OAAQorD,GAAqBprD,OAC7BE,QAASkrD,GAAqBlrD,UAHbmrD,G,GAAbjrD,YAA6CkrD,G,GAAXhrD,UAMpCirD,GAA4BlvC,aAAa,CAC7C3b,KAAM,sBACNN,YAAairD,GACb9mD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAGnD+mD,GAAiCh9C,aAAkB,CACvD9N,KAAM,sBACNN,YAAairD,GACb9mD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KAGnDgnD,GAAiC50C,aAAkB,CACvDnW,KAAM,sBACNJ,UAAWgrD,KAiBEI,GAda,CAE1BpoD,IAAK8nD,GAAqB9nD,IAE1BpD,QAASkrD,GAAqBlrD,QAC9BsD,UAAW4nD,GAAqBprD,OAAOwD,UAEvCE,OAAQ2nD,GACR5nD,OAAQ6nD,GAER9oD,OAAQ+oD,GACR9iD,YAAagjD,GACbhiD,YAAa+hD,ICtER,SAASG,GAAYpnD,GAC1B,IAAMiG,EAAO,2BACRjG,GADQ,IAEX8I,QAAS,aAEX,OAAOwB,IAAM7B,KAAKxC,GAGb,SAASohD,GAAT,GAA6B,IAC5BphD,EAAU,CACdxJ,GAF+B,EAANA,GAGzBqM,QAAS,WAEX,OAAOwB,IAAM7B,KAAKxC,GAGb,SAASqhD,GAAcrhD,GAC5B,IAAMqzB,EAAQ,aACZxwB,QAAS,cACN7C,GAEL,OAAOqE,IAAM7B,KAAK6wB,GAGb,SAASiuB,GAActhD,GAC5B,IAAMqzB,EAAQ,aACZxwB,QAAS,cACN7C,GAEL,OAAOqE,IAAM7B,KAAK6wB,GAGb,SAASkuB,GAAcvhD,GAC5B,IAAMqzB,EAAQ,aACZxwB,QAAS,cACN7C,GAEL,OAAOqE,IAAM7B,KAAK6wB,GAGb,SAASmuB,GAAYxhD,GAC1B,IAAMqzB,EAAQ,aACZxwB,QAAS,YACN7C,GAEL,OAAOqE,IAAM7B,KAAK6wB,GAGb,SAASouB,GAAT,GAAsC,IAAXC,EAAU,EAAVA,OAChC,OAAOr9C,IAAM7B,KAAK,CAChBK,QAAS,eACT6+C,OAAQA,EACRC,SAAUjzB,KAAU4jB,UAIjB,SAASsP,GAAT,GAA0D,IAA/BrB,EAA8B,EAA9BA,UAAWsB,EAAmB,EAAnBA,QAAS5qB,EAAU,EAAVA,OACpD,OAAO5yB,IAAM7B,KAAK,CAChBK,QAAS,eACT09C,UAAW3xB,KAAM0jB,MAAMiO,GACvBsB,QAASjzB,KAAM0jB,MAAMuP,GACrB5qB,OAAQA,ICvCZ,IAAM6qB,GAAe75C,cAEf85C,GAAWriD,YACf,gBAD+B,uCAE/B,WAAO3F,EAAP,wBAAA4F,EAAA,yDAAiB+E,EAAjB,EAAiBA,SAAUwB,EAA3B,EAA2BA,UACpBD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAGiCi7C,GAAYpnD,GAH7C,uBAGUwK,EAHV,EAGUA,aAHV,kBAISA,EAAa85C,OAJtB,2CAF+B,yDAU3B2D,GAAUtiD,YACd,YAD8B,uCAE9B,WAAO3F,EAAP,wBAAA4F,EAAA,yDAAiB+E,EAAjB,EAAiBA,SAAUwB,EAA3B,EAA2BA,UACpBD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAGiCk7C,GAAWrnD,GAH5C,uBAGUwK,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAF8B,yDAUnB09C,GAAaviD,YACxB,cADwC,uCAExC,WAAOM,EAAP,0BAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAGiCm7C,GAAcrhD,GAH/C,uBAGUuE,EAHV,EAGUA,aACR3E,EAAS,CACPE,KAAMoiD,GAAoB/C,mBAAmBr/C,KAC7CE,QAAQ,2BACHuE,GADE,IAEL5D,OAAQ,SACRqT,aAActP,IAAW0G,KAAKF,SATpC,kBAYS3G,GAZT,2CAFwC,yDAkB7B49C,GAAaziD,YACxB,cADwC,uCAExC,WAAOM,EAAP,0BAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAGiCo7C,GAActhD,GAH/C,uBAGUuE,EAHV,EAGUA,aACR3E,EAAS,CACPE,KAAMoiD,GAAoB/C,mBAAmBr/C,KAC7CE,QAAQ,2BACHuE,GADE,IAEL5D,OAAQ,SACRqT,aAActP,IAAW0G,KAAKF,SATpC,kBAYS3G,GAZT,2CAFwC,yDAkB7B69C,GAAa1iD,YACxB,cADwC,uCAExC,WAAOM,EAAP,0BAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAGiCq7C,GAAcvhD,GAH/C,uBAGUuE,EAHV,EAGUA,aACR3E,EAAS,CACPE,KAAMoiD,GAAoB/C,mBAAmBr/C,KAC7CE,QAAQ,2BACHuE,GADE,IAEL5D,OAAQ,SACRqT,aAActP,IAAW0G,KAAKF,SATpC,kBAYS3G,GAZT,2CAFwC,yDAkB7B89C,GAAW3iD,YACtB,YADsC,uCAEtC,WAAOM,EAAP,wBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAGiCs7C,GAAYxhD,GAH7C,uBAGUuE,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAFsC,yDAU3B+9C,GAAe5iD,YAC1B,oBAD0C,uCAE1C,WAAOM,EAAP,0BAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAU9E,EAA5B,EAA4BA,SAAUsG,EAAtC,EAAsCA,UAC/BD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GADhD,iEAEiCu7C,GAAgBzhD,GAFjD,uBAEUuE,EAFV,EAEUA,aACR3E,EAAS,CACPE,KAAMoiD,GAAoB/C,mBAAmBr/C,KAC7CE,QAAQ,2BACHuE,GADE,IAEL5D,OAAQ,SACRqT,aAActP,IAAW0G,KAAKF,SARpC,kBAWS3G,GAXT,2CAF0C,yDAiB/Bg+C,GAAW7iD,YACtB,gBADsC,uCAEtC,+CAAAC,EAAA,yDACI4gD,EADJ,EACIA,UAAWsB,EADf,EACeA,QAAS5qB,EADxB,EACwBA,OADxB,IACgC53B,WADhC,MACsC,UADtC,EAEIqF,EAFJ,EAEIA,SAAUwB,EAFd,EAEcA,UAEPD,YAAiBvB,IAAW25C,MAAMA,MAAOn4C,GAJhD,iEAKiC07C,GAAgB,CAC7CrB,YACAsB,UACA5qB,WARJ,uBAKU1yB,EALV,EAKUA,aALV,kBAUS,CACLlF,IAAKA,EACLmjD,MAAOj+C,EAAai+C,QAZxB,2CAFsC,yDAmBlCC,GAAaviD,YAAY,CAC7BhK,KAAM,QACNiK,aAAc2hD,GAAat4C,gBAAb,2BACTpJ,KADS,IAEZmI,WAAYof,MAASwH,SAAS,GAAI,QAAQ9tB,cAC1CmhD,MAAO,MAET/hD,SAAU,CACRiiD,WADQ,SACG3pD,GACT+oD,GAAar4C,UAAU1Q,GACvBA,EAAM+M,SAAW1F,IAAsB0F,SACvC/M,EAAMwP,WAAaof,MAASwH,SAAS,GAAI,QAAQ9tB,gBAGrDJ,cAAe,SAACC,GACdC,YAAuBD,EAAS6gD,IAAU,SAAChpD,EAAO4H,GAClB,IAA1BA,EAAOX,QAAQ6U,QACjBitC,GAAal4C,WAAW7Q,EAAO4H,EAAOX,SAExCjH,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAAS8gD,IAAS,SAACjpD,EAAO4H,GACjB,IAA1BA,EAAOX,QAAQ6U,QACjBitC,GAAa93C,UAAUjR,EAAO4H,EAAOX,SAEvCjH,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAAS+gD,IAAY,SAAClpD,EAAO4H,GAC9CA,EAAOX,SAET2H,IAAMiO,QAAQ,oBAAqB,CACjCC,UAAW,IACX/W,aAAa,OAInBqC,YAAuBD,EAASmhD,IAAU,SAACtpD,EAAO4H,GACZ,IAAhCA,EAAOX,QAAQq+C,MAAMxpC,QACvBitC,GAAal4C,WAAW7Q,EAAO4H,EAAOX,QAAQq+C,OACT,IAAjC19C,EAAOX,QAAQqO,OAAOwG,OACxBlN,IAAMg7C,QACJhiD,EAAOX,QAAQqO,OAAOwG,OACpB,2CAGJlN,IAAMiO,QAAQ,uBAGhBjO,IAAMrE,MAAM,0CAEdvK,EAAMwP,YAAa,IAAInH,MAAOC,iBAEhCF,YAAuBD,EAASihD,IAAY,SAACppD,EAAO4H,GAC9CA,EAAOX,UACT8hD,GAAaj8C,UAAU9M,EAAO4H,EAAOX,SACrC2H,IAAMiO,QAAQ,oBAAqB,CACjCC,UAAW,IACX/W,aAAa,QAInBqC,YAAuBD,EAASkhD,IAAY,SAACrpD,EAAO4H,GAC9CA,EAAOX,UACT8hD,GAAa73C,UAAUlR,EAAO4H,EAAOX,QAAQxJ,IAC7CmR,IAAMiO,QAAQ,sBAAuB,CACnCC,UAAW,IACX/W,aAAa,QAInBqC,YAAuBD,EAASohD,IAAc,SAACvpD,EAAO4H,GAChDA,EAAOX,UACT8hD,GAAaj8C,UAAU9M,EAAO4H,EAAOX,SACrC2H,IAAMiO,QAAQ,kBAAmB,CAC/BC,UAAW,IACX/W,aAAa,QAInBqC,YAAuBD,EAASqhD,IAAU,SAACxpD,EAAO4H,GAChD,GAAIA,EAAOX,QAAS,CAAC,IAAD,EACKW,EAAOX,QAAtBX,EADU,EACVA,IAAKmjD,EADK,EACLA,MACbzpD,EAAMypD,MAAMnjD,GAAOmjD,SAMdvvB,GAAewvB,GAAWjhD,QAE/BkhD,GAAeD,GAAW/sD,QAA1BgtD,WACKhtD,GAAU,CACrBqsD,YACAC,WACAU,cACAT,cACAE,cACAC,cACAC,YACAC,gBACAC,aAGWvpD,GAAY8oD,GAAa55C,cACpC,SAACnP,GAAD,OAAWA,EAAMslD,MAAMA,SCzPVprB,MCgBA2vB,GAPKtuB,YAAgB,CAClC+pB,MAAOprB,GACP2sB,YAAaC,GAAgBr+C,QAC7Bm/C,iBAAkBC,GAAqBp/C,QACvC48C,wBAAyBE,GAA4B98C,QACrDu9C,aAAcY,K,SCMVkD,GAAcvuB,YAAgB,CAClCve,IAAKzU,IACL8J,KAAM03C,GACNrtC,SAAUstC,KACVnoB,IAAKsf,GAAQ14C,QACb44C,IAAKQ,GAASp5C,QACd25C,IAAKQ,GAASn6C,QACdmD,SAAUsyC,GAAaz1C,QACvByzB,UAAW6P,GAActjC,QACzBy3B,SAAUQ,GAAaj4B,QACvBixB,SAAU4B,GACVlvB,MAAOoN,KAAU/Q,QACjB68C,MAAOuE,GACPvtB,UAAWwB,GACXslB,SAAUc,GAAaz7C,QACvBwqC,QAASmS,GAAY38C,QACrBu6C,UAAWE,GAAcz6C,QACzBq4B,UAAWmpB,GAAexhD,QAC1Bq3B,YAAaoqB,GAAiBzhD,QAC9B47C,SAAU8F,GAAc1hD,UAGpB2hD,GAAc,cC9BPC,GAAQC,YAAe,CAClC7hD,QDoCmC,SAACzI,EAAO4H,GAC3C,OAAIA,EAAOb,OAASqjD,GACXN,QAAYt8C,EAAW5F,GAEzBkiD,GAAY9pD,EAAO4H,ICvC1B2iD,WAAYC,YAAqB,CAC/BC,kBAAmB,CACjBC,eAAgB,CAACC,IAAO3jD,IAAW4jD,IAAOC,IAASC,IAAOC,KAC1DC,UAAW,KAEbC,eAAgB,CACdD,UAAW,OAGfE,SAAU,CAERC,eAMJ,SAAwBnrD,GAAQ,IAAD,8DACvBorD,EAAe,SAACz4C,GACpB,IAAM04C,EAAOloD,IAAE0iB,QAAQlT,GAAV,UAAkBA,EAAEmJ,OAApB,oBAAwCnJ,GACrD,MAAM,2BAAN,OAAkC04C,EAAlC,MAGA3xB,EASE15B,EATF05B,SACAmI,EAQE7hC,EARF6hC,IACA3F,EAOEl8B,EAPFk8B,UACAtwB,EAME5L,EANF4L,SACA05C,EAKEtlD,EALFslD,MACAl5C,EAIEpM,EAJFoM,MACAi1C,EAGErhD,EAHFqhD,IACApO,EAEEjzC,EAFFizC,QACA/S,EACElgC,EADFkgC,SAEF,OAAO,2BACFlgC,GADL,IAEE05B,SAAS,2BACJA,GADG,IAENe,cAAe2wB,EAAY,OAAC1xB,QAAD,IAACA,GAAD,UAACA,EAAUe,qBAAX,aAAC,EAAyBztB,KACrDiuB,aAAcmwB,EAAY,OAAC1xB,QAAD,IAACA,GAAD,UAACA,EAAUuB,oBAAX,aAAC,EAAwBjuB,OAErD60B,IAAI,2BACCA,GADF,IAEDA,IAAKupB,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAKA,WAAN,aAAC,EAAU70B,KAC5BwW,QAAS4nC,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAKre,eAAN,aAAC,EAAcxW,KACpCw7B,SAAU4iB,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAK2G,gBAAN,aAAC,EAAex7B,KACtC05B,kBAAmB0kB,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAK6E,yBAAN,aAAC,EAAwB15B,KACxD80B,aAAcspB,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAKC,oBAAN,aAAC,EAAmB90B,KAC9Cu5B,QAAS6kB,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAK0E,eAAN,aAAC,EAAcv5B,KACpC+7B,aAAcqiB,EAAY,OAACvpB,QAAD,IAACA,GAAD,UAACA,EAAKkH,oBAAN,aAAC,EAAmB/7B,OAEhDkvB,UAAU,2BACLA,GADI,IAEPA,UAAWkvB,EAAY,OAAClvB,QAAD,IAACA,GAAD,UAACA,EAAWA,iBAAZ,aAAC,EAAsBlvB,OAEhDpB,SAAS,2BACJA,GADG,IAENA,SAAUw/C,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAUA,gBAAX,aAAC,EAAoBoB,KAC3Cw7B,SAAU4iB,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAU48B,gBAAX,aAAC,EAAoBx7B,KAC3CmvC,WAAYiP,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAUuwC,kBAAX,aAAC,EAAsBnvC,KAC/CsvC,QAAS8O,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAU0wC,eAAX,aAAC,EAAmBtvC,KACzCd,MAAOk/C,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAUM,aAAX,aAAC,EAAiBc,KACrCgvC,QAASoP,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAUowC,eAAX,aAAC,EAAmBhvC,KACzCnB,iBAAkBu/C,EAAY,OAACx/C,QAAD,IAACA,GAAD,UAACA,EAAUC,wBAAX,aAAC,EAA4BmB,OAE7Ds4C,MAAM,2BACDA,GADA,IAEHA,MAAO8F,EAAY,OAAC9F,QAAD,IAACA,GAAD,UAACA,EAAOA,aAAR,aAAC,EAAct4C,KAClC65C,YAAauE,EAAY,OAAC9F,QAAD,IAACA,GAAD,UAACA,EAAOuB,mBAAR,aAAC,EAAoB75C,KAC9C46C,iBAAkBwD,EAAY,OAAC9F,QAAD,IAACA,GAAD,UAACA,EAAOsC,wBAAR,aAAC,EAAyB56C,KACxDq4C,wBAAyB+F,EAAY,OACnC9F,QADmC,IACnCA,GADmC,UACnCA,EAAOD,+BAD4B,aACnC,EAAgCr4C,OAGpCZ,MAAM,2BACDA,GADA,IAEHA,MAAOg/C,EAAY,OAACh/C,QAAD,IAACA,GAAD,UAACA,EAAOA,aAAR,aAAC,EAAcY,KAClC7L,OAAQiqD,EAAY,OAACh/C,QAAD,IAACA,GAAD,UAACA,EAAOjL,cAAR,aAAC,EAAe6L,KACpCb,OAAQi/C,EAAY,OAACh/C,QAAD,IAACA,GAAD,UAACA,EAAOD,cAAR,aAAC,EAAea,KACpCV,MAAO8+C,EAAY,OAACh/C,QAAD,IAACA,GAAD,UAACA,EAAOE,aAAR,aAAC,EAAcU,OAEpCq0C,IAAI,2BACCA,GADF,IAEDD,SAAUgK,EAAY,OAAC/J,QAAD,IAACA,GAAD,UAACA,EAAKD,gBAAN,aAAC,EAAep0C,KACtCu0C,UAAW6J,EAAY,OAAC/J,QAAD,IAACA,GAAD,UAACA,EAAKE,iBAAN,aAAC,EAAgBv0C,KACxC20C,YAAayJ,EAAY,OAAC/J,QAAD,IAACA,GAAD,UAACA,EAAKM,mBAAN,aAAC,EAAkB30C,KAC5Cy0C,iBAAkB2J,EAAY,OAAC/J,QAAD,IAACA,GAAD,UAACA,EAAKI,wBAAN,aAAC,EAAuBz0C,OAExDimC,QAAQ,2BACHA,GADE,IAELA,QAASmY,EAAY,OAACnY,QAAD,IAACA,GAAD,UAACA,EAASA,eAAV,aAAC,EAAkBjmC,OAE1CkzB,SAAS,2BACJA,GADG,IAENA,SAAUkrB,EAAY,OAAClrB,QAAD,IAACA,GAAD,UAACA,EAAUA,gBAAX,aAAC,EAAoBlzB,aA9EpCs+C,GAAYC,YAAalB,GAAO,CAAEmB,eAAe,ICxB/C,SAASC,GAAT,GAA+C,IAAD,IAAzBC,qBAAyB,SACrD7kD,EAAW0O,cAWjB,OAVuB/P,uBACrB,kBACEqB,EAAS8kD,GAAYjtB,UAAUx0B,MAAK,WAC9BwhD,IACF7kD,EFiCD,CACLE,KAAMqjD,KEjCAkB,GAAUM,cAGhB,CAAC/kD,EAAU6kD,ICdA,SAASG,KAAe,IAAD,EACJjpD,mBAAS,MADL,mBAC7BkpD,EAD6B,KACnBC,EADmB,KAE9BC,EAAUC,eAQhB,OANA1yC,qBAAU,WACJuyC,IACFE,EAAQzwC,KAAKuwC,GACbC,EAAY,SAEb,CAACD,EAAUE,IACP,CAACF,EAAUC,GCNL,SAASG,GAAT,GAAuD,IAA9B3hD,EAA6B,EAA7BA,MAAO4hD,EAAsB,EAAtBA,mBACvCztB,EAAS+sB,GAAU,CAAEC,eAAe,IADyB,EAE3CG,KAAfE,EAF0D,oBAGnE,OACE,gBAACtd,GAAD,CACE9oC,MAAM,iDACNgpC,KAAK,yEAFP,UAIE,eAACnwC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQE,QAAS0sD,EAAjB,uBAGJ,eAAC3tD,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,uDACmB,IACjB,oBAAG6wC,KAAK,2CAAR,kCAEK,IAJP,8CASJ,eAAC9wC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,+BACE,gCAAO8L,EAAM6hD,cAKnB,eAAC5tD,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,WACPi/B,IACAqtB,EAAY,KACZM,YAAW,WACTF,MACC,OAPP,iD,4FCpCK,SAASG,GAAT,GAMX,IALFC,EAKC,EALDA,WACAC,EAIC,EAJDA,QACAC,EAGC,EAHDA,WACAz8B,EAEC,EAFDA,KACA1qB,EACC,EADDA,KAEA,OACE,gBAACM,GAAA,EAAD,CACEN,KAAMA,EACNO,KAAK,KACL+pB,kBAAgB,gCAChB88B,UAAQ,EACR5mD,OAAQ0mD,EALV,UAOE,eAAC5mD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG8uD,MAGL,gBAAC3mD,GAAA,EAAMK,KAAP,WACE,8BAAKwmD,IACJz8B,KAEH,eAACpqB,GAAA,EAAM+mD,OAAP,UACE,eAACptD,EAAA,EAAD,CAAQE,QAAS+sD,EAAjB,wB,4CCtBOI,GAL0Bt5C,aAAkB,CACzDnW,KAAM,iBACNJ,UAAW8L,O,UCIEgkD,GANmB5hD,aAAkB,CAClD9N,KAAM,iBACNN,YAAa+L,KACb5H,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1C4rD,GAdQ,CAErB/sD,IAAK4I,KAAoB5I,IAEzBpD,QAASgM,KAAoBhM,QAC7BsD,UAAW0I,KAAoBlM,OAAOwD,UAEtCE,OAAQyI,KACR1I,OAAQ2I,KAER5J,OAAQuwB,KACRtqB,YAAa0nD,GACb1mD,YAAa2mD,I,GCdbrwD,aAAkB,CAChBC,OAAQw/C,GAAYx/C,OACpBE,QAASs/C,GAAYt/C,UAHGowD,G,GAAblwD,YAAoCmwD,G,GAAXjwD,UCKzBkwD,GALW35C,aAAkB,CAC1CnW,KAAM,gBACNJ,UAAWiwD,KCIEE,GANMp0C,aAAa,CAChC3b,KAAM,gBACNN,YAAakwD,GACb/rD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCG1CisD,GANWliD,aAAkB,CAC1C9N,KAAM,gBACNN,YAAakwD,GACb/rD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1CksD,GAdA,CAEbrtD,IAAKk8C,GAAYl8C,IAEjBpD,QAASs/C,GAAYt/C,QACrBsD,UAAWg8C,GAAYx/C,OAAOwD,UAE9BE,OAAQ4sD,GACR7sD,OAAQ8sD,GAER/tD,OAAQiuD,GACRhoD,YAAa+nD,GACb/mD,YAAainD,IClBA,SAASE,GAA4B1wB,GAClD,IAAKA,EAAS,MAAO,GADsC,IAEnD2hB,EAAyB3hB,EAAzB2hB,SAAUgP,EAAe3wB,EAAf2wB,WAElB,MAAiB,OAAbhP,GAAkC,OAAbA,EAA0B,GAEhC,OAAfgP,GAAsC,OAAfA,EAA4B,aAC/B,OAAfA,EAA4B,YACb,OAAfA,GAAsC,OAAfA,EAA4B,eAChD,G,OCLZ9wD,aAAkB,CAChBC,OAAQ2/C,GAAc3/C,OACtBE,QAASy/C,GAAcz/C,UAHC4wD,G,GAAb1wD,YAAuC2wD,G,GAAXzwD,UCK5B0wD,GALan6C,aAAkB,CAC5CnW,KAAM,kBACNJ,UAAWywD,KCGEE,GALQ50C,aAAa,CAClC3b,KAAM,kBACNN,YAAa0wD,KCGAI,GALa1iD,aAAkB,CAC5C9N,KAAM,kBACNN,YAAa0wD,KCeAK,GAdE,CAEf7tD,IAAKq8C,GAAcr8C,IAEnBpD,QAASy/C,GAAcz/C,QACvBsD,UAAWm8C,GAAc3/C,OAAOwD,UAEhCE,OAAQotD,GACRrtD,OAAQstD,GAERvuD,OAAQyuD,GACRxoD,YAAauoD,GACbvnD,YAAaynD,ICfA,SAASE,GAAT,GAAqC,IAAZlxB,EAAW,EAAXA,QAChCmxB,GACG,OAAPnxB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,oBAAoD,aAAxB,OAAPlgB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,mBACzC,OACE,wCACU,OAAPlgB,QAAO,IAAPA,OAAA,EAAAA,EAASoxB,UACR,eAACvvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,SAAf,SAAyBm9B,EAAQoxB,eAGnC,KACHD,EACC,eAACtvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,UAAf,iEAKF,QCyCV,SAASwuD,GAAT,GAAiC,IAAPvwD,EAAM,EAANA,GAChB2iC,EAAakN,GAASptC,OAAO,CAAEzC,OAA/B2iC,SACF6tB,EAAWp4B,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAU0Z,cAC3C,OACE,gBAACr7C,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACwvD,GAAA,EAAD,CAAO1uD,QAAQ,UAAUmG,MAAM,QAA/B,gBACGy6B,QADH,IACGA,OADH,EACGA,EAAU+tB,QAEb,gBAACD,GAAA,EAAD,CAAO1uD,QAAQ,QAAQmG,MAAM,WAA7B,iBACGy6B,QADH,IACGA,OADH,EACGA,EAAUkR,WADb,OAEGlR,QAFH,IAEGA,OAFH,EAEGA,EAAUguB,eAAepqD,KAAI,SAACqqD,GAAD,MAAQ,YAAMA,QAAN,IAAMA,OAAN,EAAMA,EAAInwB,WAAQxZ,KAAK,OAE/D,eAACwpC,GAAA,EAAD,CAAO1uD,QAAQ,UAAUmG,MAAM,YAA/B,SACGsoD,EAASv6B,UAAY,uCAAGu6B,EAAS3pC,OAAO,YAAnB,OAAsC,OAE9D,eAAC4pC,GAAA,EAAD,CAAO1uD,QAAQ,UAAUmG,MAAM,6BAA/B,gBACGy6B,QADH,IACGA,OADH,EACGA,EAAUkuB,8B,uBCxEnB,SAASC,GAAoB/wD,EAAO0F,GAClC,IAAM8B,GACO,UAAVxH,GAA+B,UAAVA,IAAsBoH,aAAe1B,GAC7D,OAAO1F,GAA6B,MAApBA,EAAMmyB,OAAO,IAAwB,UAAVnyB,IAAsBwH,EAGpD,SAASwpD,KAGf,IAAD,yDAAJ,GAAI,IAFNC,kBAEM,aADNtwD,aACM,WACsBE,eAApB6X,EADF,EACEA,MAAOib,EADT,EACSA,SADT,EAE6Bjb,EAAM,CAAC,QAAS,UAAW,aAFxD,mBAEC1Y,EAFD,KAEQ0F,EAFR,KAEiBo7C,EAFjB,KAIArjC,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAJjD,EAMoCvP,mBAAS,MAN7C,mBAMC8rD,EAND,KAMgBC,EANhB,OAOoC/rD,mBAAS,MAP7C,mBAOCgsD,EAPD,KAOgBC,EAPhB,KASAC,EAAoBtpD,uBACxB,SAACtC,EAAS6rD,GACR,IAAMC,EAAgB7rD,IAAE8rD,UAAUF,GAC9BA,GACCvxD,GAAS+wD,GAAoB/wD,EAAO0F,GACzCiuB,EAAS,UAAWjuB,EAAS,CAAEgsD,gBAAgB,EAAMC,aAAa,IAC9DH,KACG7wD,GAAmB,UAAVX,IAAsBoH,aAAe1B,GACjDiuB,EAAS,QAAS,QAAS,CACzB+9B,gBAAgB,EAChBC,aAAa,IAEZN,EAAiB3rD,MAE1B,CAAC1F,EAAO2zB,EAAUhzB,IAGdixD,EAAoB5pD,uBACxB,SAAChI,GACKA,GACF2zB,EAAS,QAAS3zB,EAAO,CAAE0xD,gBAAgB,EAAMC,aAAa,IAC1DZ,GAAoB/wD,EAAO0F,IAAiC,OAAhB,OAAL1F,QAAK,IAALA,OAAA,EAAAA,EAAOmyB,OAAO,KACvDg/B,EAAiBnxD,IACdqxD,EAAiB3rD,KAE1B,CAACA,EAASiuB,IAlCN,EAsCJzX,KAAKva,MAAMe,OAAO,CAChBzC,GAAImxD,IAvCF,IAqCE/hC,MArCF,gBAqCoD,GArCpD,GAqCWwiC,aAAcC,OArCzB,MAqC6C,GArC7C,IA0CJ51C,KAAK5Z,OAAOI,OAAO,CACjBzC,GAAIixD,IA3CF,IAyCEvtD,OAzCF,gBAyCqD,GAzCrD,GAyCY5D,aAAcgyD,OAzC1B,MAyC8C,GAzC9C,EA2EN,OA1BAh2C,qBAAU,WACHk1C,IACAjxD,GAAsB,OAAb8gD,EAKLsQ,GAAiBU,GACxBn+B,EAAS,QAASm+B,EAAmB,CAAEJ,gBAAgB,IACvDL,EAAiB,OACRH,GAAiBa,IAC1Bp+B,EAAS,UAAWo+B,EAAmB,CAAEL,gBAAgB,IACzDP,EAAiB,OATjBx9B,EAAS,QAASlW,EAAc,CAC9Bi0C,gBAAgB,EAChBC,aAAa,OAShB,CACDV,EACAa,EACAV,EACA3zC,EACAzd,EACA+xD,EACAb,EACAv9B,EACAmtB,IAGK,CAAEwQ,oBAAmBM,qBCrFf,SAASI,GAAT,GAAoD,IAAD,IAAvBnyD,aAAuB,WACfmxD,GAAoB,CACnErwD,MAF8D,EAATA,QAC/C2wD,EADwD,EACxDA,kBAAmBM,EADqC,EACrCA,kBAI3B,OACE,uCACE,eAACK,GAAD,CACEtyD,KAAK,UACLE,MAAOA,EACPiH,SAAU,SAACpD,GAAD,OAAW4tD,EAAkB5tD,MAEzC,eAACwuD,GAAD,CACEvyD,KAAK,QACLE,MAAOA,EAAQ,QAAU,KACzBiH,SAAU,SAACpD,GAAD,OAAWkuD,EAAkBluD,IACvCuW,aAAW,EACX1F,aAAW,OAMnB,SAAS09C,GAAT,GAA6C,IAA1BtyD,EAAyB,EAAzBA,KAAME,EAAmB,EAAnBA,MAAOiH,EAAY,EAAZA,SAAY,EAItC2Q,aAAc,CAAE9X,SAJsB,IAExC+X,MAAyBA,GAFe,EAE/B5Q,SAF+B,8BAG1BiG,EAH0B,EAGxC4K,WAAc5K,MAGExI,EACd1D,eADF+W,aAAgBrT,WAGlB,OACE,eAACxD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,eAAC,KAAKG,MAAMF,OAAZ,yBACE5B,MACEA,EACE,eAAC,KAAK8B,MAAMgG,MAAZ,CAAkBC,SAAUd,EAAUe,SAAUtD,IAC9C,KAENtE,GAAG,UACHN,KAAK,UACLmH,SAAUA,GACN4Q,GATN,IAUEG,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfzI,WAAYA,SAOtB,SAAS2tD,GAAT,GAAqD,IAApCvyD,EAAmC,EAAnCA,KAAME,EAA6B,EAA7BA,MAAOiH,EAAsB,EAAtBA,SAAa7D,EAAS,8CAI9CwU,aAAc,CAAE9X,SAJ8B,IAEhD+X,MAAyBA,GAFuB,EAEvC5Q,SAFuC,8BAGlCiG,EAHkC,EAGhD4K,WAAc5K,MAGExI,EACd1D,eADF+W,aAAgBrT,WAGlB,OACE,eAACxD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,eAAC,KAAKC,OAAN,yBACE5B,MAAOA,EAAQ,QAAU,KACzB8D,QAAQ,EACRmD,SAAUA,GACN4Q,GAJN,IAKEG,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfzI,WAAYA,GACRtB,Q,uCC7EZjE,aAAkB,CAChBC,OAAQgsC,GAAYhsC,OACpBE,QAAS8rC,GAAY9rC,UAHGgzD,G,GAAb9yD,YAAqC+yD,G,GAAX7yD,UCK1B8yD,GALWv8C,aAAkB,CAC1CnW,KAAM,gBACNJ,UAAW6yD,KCIEE,GANMh3C,aAAa,CAChC3b,KAAM,gBACNN,YAAa8yD,GACb3uD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCG1C6uD,GANW9kD,aAAkB,CAC1C9N,KAAM,gBACNN,YAAa8yD,GACb3uD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1C8uD,GAdA,CAEbjwD,IAAK0oC,GAAY1oC,IAEjBpD,QAAS8rC,GAAY9rC,QACrBsD,UAAWwoC,GAAYhsC,OAAOwD,UAE9BE,OAAQwvD,GACRzvD,OAAQ0vD,GAER3wD,OAAQ6wD,GACR5qD,YAAa2qD,GACb3pD,YAAa6pD,ICCA,SAASE,GAAT,GAAyD,IAAjCrkD,EAAgC,EAAhCA,SAAUjJ,EAAsB,EAAtBA,SAAalC,EAAS,wCAC/Dy7B,EAAY9pB,YAAYk7B,GAASrtC,UAAUqP,gBAC3C5O,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,UACRC,SAAU,KACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAwBy7B,EAA3B,EAAUv7B,IAAOC,SAAjB,OACJ8B,IAAEC,WAAWT,GACX,eAACpD,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,wBACVY,QAAS,kBAAMkD,EAAQ,OAACg6B,QAAD,IAACA,OAAD,EAACA,EAASl/B,KAHnC,SAKGyD,IAGH,eAAC,OAAD,CACErC,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,OAAeqB,IAF/B,SAIGA,MAIT,CACEzD,GAAI,QACJmD,OAAQ,QACRC,SAAU,QAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,YAA2C,IAAD,QAAvCq7B,UAAWg0B,OAA4B,MAAT,GAAS,EAClD,OAAOA,EACHA,EAAiBp0C,OAAS,EACxB,WADF,UC3DP,SAAsBpM,EAAUjS,GACrC,IAAM0yD,EAAQ5gC,aAAW9xB,GACzB,OAAc,IAAV0yD,EAAoB,KAEjBzgD,EAASygD,EAAMC,YDyDRC,CAAan0B,GAAW,UAAAg0B,EAAiB,UAAjB,eAAqB3jD,aAAc,WAF7D,aAEE,EACIpP,KACN,IAEN2D,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,UACJmD,OAAQ,UACRC,SAAU,YAA2C,IAAD,MAAvCq7B,UAAWg0B,OAA4B,MAAT,GAAS,EAClD,OAAOA,EACHA,EAAiBp0C,OAAS,EACxB,YACA,UAAAo0C,EAAiB,UAAjB,eAAqBI,cAAe,GACtC,IAENxvD,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WACVC,OAAQkvD,GAAO9pD,YACflF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAOgE,YAAR,CAAoBzH,GAAIyD,MAE/C,CACEN,OAAQ,UACRnD,GAAI,iBACJoD,SAAU,WACVC,OAAQkvD,GAAO9pD,YACflF,OAAQ,SACR8jB,UAAW,cACXyrC,cAAc,EAEdtvD,KAAM,gBAAGC,EAAH,EAAGA,MAAwBy7B,EAA3B,EAAUv7B,IAAOC,SAAjB,OACJ,gBAAC9C,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAOyG,YAAR,CAAoBzH,GAAIyD,MAE1B,gBAACzC,EAAA,EAAD,YACU,OAAPk+B,QAAO,IAAPA,OAAA,EAAAA,EAASuiB,qBAAsB,SAAM,IAC9B,OAAPviB,QAAO,IAAPA,OAAA,EAAAA,EAAS6zB,eAAgB,eAAO,WAKzC,CACE/yD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,OACJmD,OAAQ,OACRC,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,SAG7D,CACEh5C,OAAQ,WACRnD,GAAI,WACJoD,SAAU,aACVC,OAAQ8sD,GAAS1nD,YACjBlF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASgE,YAAV,CAAsBzH,GAAIyD,MAEjD,CACEN,OAAQ,QACRnD,GAAI,QACJoD,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,QAE3D90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,QAGrD,CACEN,OAAQ,cACRnD,GAAI,aACJoD,SAAU,qBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,QAGR90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,qBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EAAQy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,IAAU,SAInE,CACEN,OAAQ,iBACRnD,GAAI,gBACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAG2vD,cAAqC,eAAO,KACzD1vD,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACElkB,OAAQ,oBACRnD,GAAI,oBACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAG6vD,kBAA6C,SAAM,KAChE5vD,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACElkB,OAAQ,uBACRnD,GAAI,sBACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,sBACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,kBAGf,CAACoX,EAAWv5B,IAEd,OACE,eAACvC,GAAA,EAAD,yBACEoB,UAAQ,EACRnE,MAAM,WACNqD,QAASA,EACTe,KAAMmK,EACN0c,YAAa,SAAClnB,GACZ,IAAKA,EAAIC,SAAU,MAAO,GAC1B,IAAMxC,EAAYwuD,GAA4BjsD,EAAIC,UAClD,OAAKxC,EACE,CAAEA,UAAWA,GADG,KAGrB4B,GAXN,IAYE+nB,iBAAe,KE7ON,SAASmoC,GAAT,GAAsD,IAArBxzD,EAAoB,EAApBA,KAAM4E,EAAc,EAAdA,WAAc,EAM9D1D,eAJF6X,EAFgE,EAEhEA,MACAib,EAHgE,EAGhEA,SACAy/B,EAJgE,EAIhEA,WACW5xB,EALqD,EAKhE0f,QAAW1f,6BALqD,EAW9D/pB,aAAc,CAAE9X,SAX8C,IAShE+X,MAAsBA,GAT0C,EASvD5Q,SATuD,8BAUlDiG,EAVkD,EAUhE4K,WAAc5K,MAVkD,EAaxB3H,mBAAS,IAbe,mBAa3DiuD,EAb2D,KAa5CC,EAb4C,KAelDC,EAAgBzjB,GAASptC,SAAjCyM,OAf0D,EAiBhE2gC,GAASiO,UAAUp7C,SADJ6wD,EAhBiD,EAgB1D3lD,QAAwC4lD,EAhBkB,EAgB3BhkD,QAGjCikD,EAAiB1rD,uBACrB,SAAC+G,GAAD,OACEykD,EAAqB,CACnBzkD,WAAYA,IACXrC,MAAK,WAA+B,IAAD,yDAAP,GAAd42B,EAAqB,EAA3Br/B,KACT,UAAIq/B,QAAJ,IAAIA,OAAJ,EAAIA,EAAWhlB,OAAQ,CACrB,IAAMq1C,EAAgB,OAAGrwB,QAAH,IAAGA,OAAH,EAAGA,EAAW9/B,QAClC,SAACod,GAAD,OAAQA,EAAEzgB,UAAYygB,EAAEgzC,wBAGpBxlD,EAAQ,OAAGulD,QAAH,IAAGA,OAAH,EAAGA,EAAkBntD,KAAI,SAACoa,GAAD,cACrCA,QADqC,IACrCA,OADqC,EACrCA,EAAGxS,SAAS5H,KAAI,SAACC,GAAD,OAAOA,QACvB,GAEF6sD,GAAiB,SAACO,GAAD,OACfA,EAAO7mD,QAAP,2BACS6mD,GADT,IACiBzlD,cACG,OAAhBulD,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBr1C,QAClB,CAAEtR,QAAS,oCAAqCoB,YAChD,YAIZ,CAAColD,IAGG1D,EAAap3C,EAAM,cAEnBo7C,EAA0B9rD,uBAC9B,SAAC+G,GACCwkD,EAAY,CACVtzD,GAAI8O,EACJg7B,OAAO,IACNr9B,MAAK,WAA8B,IAAD,yDAAP,GAAbk2B,EAAoB,EAA1B3+B,KAMT,GALK6rD,GAA6B,OAAfA,GAAsC,OAAfA,IACd,OAAlB,OAARltB,QAAQ,IAARA,OAAA,EAAAA,EAAUmxB,aACNpgC,EAAS,aAAc,MACvBA,EAAS,aAAc,OAC7By/B,GAAW,SAACxyC,GAAD,mBAAC,eAAYA,GAAb,mBAAiBjhB,EAAOijC,OAC9BA,EAAL,CANmC,MAQJA,EAAvBoxB,oBAR2B,MAQZ,IARY,EASd,MAAjBA,GAEAV,GADmC,IAAjC9xB,EACe,CACfx0B,QAAS,yDAGM,CACfA,QACE,oEAIR0mD,EAAe3kD,GACf4kB,EAASh0B,EAAMoP,EAAY,CAAE2iD,gBAAgB,EAAMC,aAAa,UAGpE,CACEnwB,EACAkyB,EACAH,EACA5zD,EACAmwD,EACAsD,EACAz/B,IAIJ,OACE,gBAAC5yB,GAAA,EAAKY,MAAN,WACE,eAAC,GAASF,OAAV,aACE9B,KAAMA,EACNmH,SAAUgtD,EACVvvD,WAAYA,EACZsT,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,SACX0K,IAEN,gBAACtP,GAAA,EAAD,CACEN,QAAO,OAACurD,QAAD,IAACA,OAAD,EAACA,EAAermD,SACvB1E,OAAQ,kBAAMgrD,EAAiB,KAC/BjrD,KAAK,KACL+pB,kBAAgB,gCAJlB,UAME,eAAChqB,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,iCAIF,gBAACmI,GAAA,EAAMK,KAAP,WACE,eAACkR,GAAA,EAAD,CAAO3X,QAAS+K,EAAQ,SAAW,UAAnC,SACGsmD,EAAcrmD,UAEjB,eAACylD,GAAD,CACErkD,SAAUilD,EAAcjlD,UAAY,GACpCmH,UAAWk+C,EACXzwD,OAAQ,CAAC,KAAM,OAAQ,QAAS,QAAS,SAAU,uBClHhD,SAASixD,GAAT,GAMX,IALFt0D,EAKC,EALDA,KACAu0D,EAIC,EAJDA,SAIC,IAHDC,eAGC,SAFDC,EAEC,EAFDA,mBACAzzD,EACC,EADDA,MACC,EACqCyE,oBACnCgvD,IAAuBD,GAFzB,mBACME,EADN,KACmBC,EADnB,OAQGzzD,eAHF6X,EALD,EAKCA,MACaZ,EANd,EAMCy8C,UAAaz8C,OACGvT,EAPjB,EAOCqT,aAAgBrT,WAPjB,EAUe4N,aAAG2F,EAAQnY,GAApBoN,EAVN,oBAYKgC,EAAa2J,EAAM,GAAD,OAAI/Y,EAAJ,gBAClB+9C,EAAYhlC,EAAM,GAAD,OAAI/Y,EAAJ,eACvB,OACE,eAACoB,GAAA,EAAKC,IAAN,CAAUK,UAAU,qBAApB,SACE,gBAACJ,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAACkyD,GAAD,CACExzD,KAAI,UAAKA,EAAL,eACJ4E,WAAY6vD,GAAsB7vD,EAClC5D,MAAOA,MAGX,eAACM,EAAA,EAAD,UACE,eAAC,KAAWQ,OAAZ,CACE9B,KAAI,UAAKA,EAAL,cACJ+B,GAAI4wC,GAAQE,iBACZjuC,YAAawK,GAAcxK,EAC3BwK,WAAYA,EACZkL,aAAW,MAGf,eAAChZ,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEE,QAAS,kBAAMqyD,GAAgBD,IAC/BxsD,SAAUtD,EAFZ,iBAMC2vD,EACC,eAACnyD,EAAA,EAAD,CACEC,QAAQ,SACRC,QAASiyD,EACTrsD,SAAUusD,GAAsB7vD,EAHlC,eAOE,aAIV,eAACiwD,GAAA,EAAD,CAAUC,GAAKJ,IAAgB9vD,GAAewI,EAA9C,SACE,eAAChM,GAAA,EAAKC,IAAN,CAAUK,UAAU,kCAApB,SACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC,GAASkuC,YAAV,CACEuO,UAAWA,GAAa,GACxBz9C,GAAI8O,EACJlP,MAAM,wBAIZ,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CACEvB,KAAI,UAAKA,EAAL,cACJE,MAAM,OACN6B,GAAG,SACHmG,SAAUtD,EAJZ,UAME,yBAAQb,MAAM,IAAd,qBACA,yBAAQA,MAAM,IAAd,8BAIJ,eAACzC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAI,UAAKA,EAAL,gBACJE,MAAM,SACN0J,KAAK,SACL0sB,IAAI,IACJ/1B,IAAI,MACJ2H,SAAUtD,MAGd,eAACtD,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CACEvB,KAAI,UAAKA,EAAL,sBACJE,MAAM,UACN6B,GAAG,SACHmG,SAAUtD,EAJZ,UAME,yBAAQb,MAAM,QAAd,gBACA,yBAAQA,MAAM,OAAd,0CAIN,eAAC3C,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAI,UAAKA,EAAL,aACJE,MAAM,YACNgI,SAAUtD,oBCtH9B,IAuEemwD,GAvEej1D,eAC3BC,MAAM,CACLqP,WAAYwZ,eACT1oB,MAAM,YACNC,WACAmiD,WACA0S,UACAv6C,KACC,wBACA,oCACA,SAACzU,EAAD,GAA0D,IAApDivD,EAAmD,EAAnDA,KAAmD,IAA7Cn/C,QAAWyrC,eAAkC,MAAxB,GAAwB,EAAlB2T,EAAkB,EAAlBA,YAC7BrzB,EAAiC0f,EAAjC1f,6BACFoB,EAAWse,EAAQ0T,GAEzB,IAAKhyB,EAAU,OAAO,EAJiC,MAMxBA,EAAvBoxB,oBAN+C,MAMhC,IANgC,EAOvD,MAAqB,MAAjBA,EACKa,EAAY,CACjB7nD,QAAS,iDAGM,MAAjBgnD,IACiC,IAAjCxyB,GAEOqzB,EAAY,CACjB7nD,QAAS,6DAMnB0wC,UAAWn1B,eACR1oB,MAAM,WACNo2B,IAAI,GACJ0+B,UACAn+C,WAAU,SAACpB,GAAD,OAAQsT,MAAMtT,GAAK,EAAIA,KACpC0/C,SAAUl1D,eAASC,MAAM,aAAaK,IAAI,IAC1C60D,kBAAmBpT,eAAU9hD,MAAM,uBAAuBC,WAC1Dk1D,UAAWp1D,eAASC,MAAM,cAAcC,WAAWwW,MAAM,CAAC,IAAK,MAC/D2+C,YAAa1sC,eACV1oB,MAAM,gBACNC,WACAm2B,IAAI,GACJmrB,KAAK,YAAa,CACjBC,GAAI,IACJ30C,KAAM6b,eAASroB,IAAI,IAAK,uCAExBg1D,UAAW3sC,eAASroB,IAClB,OACA,8CAIPka,KAAK,CACJza,KAAM,+BACNya,KAAM,SAACzU,EAAD,GAAuC,IAAD,EAAhCivD,EAAgC,EAAhCA,KAAM3T,EAA0B,EAA1BA,OAAQ4T,EAAkB,EAAlBA,YAClBM,EAAQ,OAAGlU,QAAH,IAAGA,GAAH,UAAGA,EACbz9C,QAAO,SAACod,GAAD,MAAuB,MAAhBA,EAAEo0C,oBADN,aAAG,EAEbxuD,KAAI,SAACoa,GAAD,OAAOA,EAAEq0C,eACjB,OAAsB,MAAlBG,cAAID,IACCN,EAAY,CACjBD,KAAK,GAAD,OAAKA,EAAL,gBACJ5nD,QAAS,mDAKfA,QAAS,KAKAqoD,GAA2B,CACtCtmD,WAAY,EACZ2uC,UAAW,EACXqX,mBAAmB,EACnBC,UAAW,IACXC,YAAa,IACbH,SAAU,ICzEG,SAASQ,GAAT,GAAwD,IAAxB31D,EAAuB,EAAvBA,KAAuB,IAAjBgB,aAAiB,WAIhEE,eAFWiX,EAFqD,EAElEy8C,UAAaz8C,OACGvT,EAHkD,EAGlEqT,aAAgBrT,WAGZwI,EAAK,OAAG+K,QAAH,IAAGA,OAAH,EAAGA,EAASnY,GAN6C,EAQjC41D,aAAc,CAAE51D,SAA3C+wC,EAR4D,EAQ5DA,OAAQ8kB,EARoD,EAQpDA,OAAQ1hD,EAR4C,EAQ5CA,OAR4C,EAU1B6M,aAAehgB,GAVW,mBAU7D80D,EAV6D,KAU9CC,EAV8C,KAYpE,OACE,eAAC10D,EAAA,EAAD,CAAKK,UAAU,qBAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACE,eAACD,GAAA,EAAK4G,MAAN,0BAFJ,OAKG+oC,QALH,IAKGA,OALH,EAKGA,EAAQlqC,KAAI,SAACoa,EAAGgO,GAAJ,OACX,eAACqlC,GAAD,CACEt0D,KAAI,oBAAeivB,EAAf,KAEJulC,QAAiB,IAARvlC,EACTslC,SAAU,kBAAMpgD,EAAO8a,IACvBjuB,MAAOA,EACPyzD,oBAAqBqB,GANvB,oBAEoB7mC,EAFpB,SASF,gBAAC7tB,GAAA,EAAKC,IAAN,CAAUK,UAAU,OAApB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAI,OAAT,SACIu0D,EASA,eAAC1zD,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAMuzD,EAAOH,KACtBxtD,SAAUtD,EAHZ,0BARA,eAACxC,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMyzD,GAAiB,IAChC7tD,SAAUtD,EAHZ,8BAiBJ,eAACtD,EAAA,EAAD,UACG0E,IAAE6L,SAAF,OAAWzE,QAAX,IAAWA,OAAX,EAAWA,EAAOC,SACjB,wBAAO3L,UAAU,cAAjB,gBAAgC0L,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAOC,UACrC,eCzDhB,IAkEe2oD,GAlEOl2D,eAASC,MAAM,CACnCshD,SAAUphD,eAASC,MAAM,YAAYC,WAAWI,IAAI,KACpDwW,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,KAC1D4vD,WAAYlwD,eAASC,MAAM,YAAYC,WACvC4F,QAAS9F,eAASC,MAAM,SAASC,WACjC81D,SAAUh2D,eAASC,MAAM,UAAUC,WACnCghD,SAAUlhD,eAASC,MAAM,UAAUC,WACnC+/C,OAAQjgD,eAASC,MAAM,QAAQC,WAC/BE,MAAOJ,eACJC,MAAM,SACNC,WACAshD,KAAK,WAAY,CAChBC,GAAI,SAACjsC,GAAD,MAAa,OAANA,GACX1I,KAAM9M,eAASwa,KACb,gBACA,8CACA,SAAC1W,GAAD,MAAgC,OAAhB,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOyuB,OAAO,SAG/BuM,UAAWn+B,eAAQC,GAAGk0D,IACtBmB,SAAUj2D,eACPC,MAAM,aACNK,IAAI,KACJkhD,KAAK,WAAY,CAChBC,GAAI,SAACjsC,GAAD,MAAa,OAANA,GACX1I,KAAM9M,eAASE,SAAS,gDAE5Bg2D,kBAAmBnU,eAAU9hD,MAAM,qBACnCiiD,iBAAkBv5B,eACf1oB,MAAM,4BACNo2B,IAAI,GACJ/1B,IACCgF,aAAI,oBACJ,+DAEJ68C,iBAAkBx5B,eACf1oB,MAAM,4BACNo2B,IAAI,GACJA,IACC/wB,aAAI,oBACJ,kEAEJ6wD,gBAAiBxtC,eACd1oB,MAAM,2BACNo2B,IAAI,GACJ/1B,IACCgF,aAAI,mBACJ,8DAEJ8wD,gBAAiBztC,eACd1oB,MAAM,2BACNo2B,IAAI,GACJA,IACC/wB,aAAI,mBACJ,iEAEJ88C,aAAcz5B,eACX1oB,MAAM,iBACNuhD,KAAK,mBAAoB,CACxBC,GAAI,SAACjsC,GAAD,OAAOA,EAAI,GACf1I,KAAM6b,eAAS05B,aAEnBC,eAAgBtiD,eAASC,MAAM,wBAC/Bo2D,iBAAkBr2D,eAASC,MAAM,qB,GC/DjCb,aAAkB,CAChBC,OAAQ8/C,GAAY9/C,OACpBE,QAAS4/C,GAAY5/C,UAHG+2D,G,GAAb72D,YAAoC82D,G,GAAX52D,UCKzB62D,GALWtgD,aAAkB,CAC1CnW,KAAM,gBACNJ,UAAW42D,KCIEE,GANM/6C,aAAa,CAChC3b,KAAM,gBACNN,YAAa62D,GACb1yD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCG1C4yD,GANW7oD,aAAkB,CAC1C9N,KAAM,gBACNN,YAAa62D,GACb1yD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1C6yD,GAdA,CAEbh0D,IAAKw8C,GAAYx8C,IAEjBpD,QAAS4/C,GAAY5/C,QACrBsD,UAAWs8C,GAAY9/C,OAAOwD,UAE9BE,OAAQuzD,GACRxzD,OAAQyzD,GAER10D,OAAQ40D,GACR3uD,YAAa0uD,GACb1tD,YAAa4tD,I,UCEA,SAASE,GAAT,GAMX,IALFr3B,EAKC,EALDA,QAKC,IAJDx+B,aAIC,SAHD2D,EAGC,EAHDA,SAGC,IAFDyI,aAEC,MAFO,GAEP,EADD0pD,EACC,EADDA,SAEMnG,GACG,OAAPnxB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,oBAAoD,aAAxB,OAAPlgB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,mBACnCqX,EAA2B,WAAZ,OAAPv3B,QAAO,IAAPA,OAAA,EAAAA,EAASn/B,OAEjBwhC,EAA+B5sB,aACnC,SAACpS,GAAD,OAAWA,EAAMqS,KAAK2sB,gCAExB,OACE,eAAC,KAAD,CACEl9B,SAAUA,EACVE,cAAe26B,EACf16B,OAAQ,CAAEA,OAAQkxD,IAClBzU,QAAS,CAAE1f,gCACXj9B,WAAY+rD,EACZ3rD,aAAW,EANb,SAQE,uCACGoI,EACC,eAAC/L,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,SAAf,SAAyB+K,QAG3B,KACJ,eAACsjD,GAAD,CAAelxB,QAASA,IACxB,eAACw3B,GAAD,CAAch2D,MAAOA,EAAO+1D,MAAOA,EAAOD,SAAUA,SAM5D,SAASE,GAAT,GAAmD,IAA3Bh2D,EAA0B,EAA1BA,MAAO+1D,EAAmB,EAAnBA,MAAOD,EAAY,EAAZA,SAAY,EAM5C51D,eAJF+1D,EAF8C,EAE9CA,SACAh2D,EAH8C,EAG9CA,WAH8C,IAI9C2zD,UAAasC,EAJiC,EAIjCA,aAAcC,EAJmB,EAInBA,YACXvyD,EAL8B,EAK9CqT,aAAgBrT,WAEZwyD,GAAiBvsD,kBAAQssD,GAI/B,OAFAh2D,eAGE,gBAACC,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,eAAC,KAAD,CACEwgD,KAAM2V,IAAkBp2D,EACxBqM,QAAQ,4DAEV,eAACsoD,GAAD,CAAsB31D,KAAK,YAAYgB,MAAOA,IAC9C,gBAACK,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAG,IAAI31D,UAAU,eAAtB,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CAAYtB,KAAK,WAAWE,MAAM,iBAGtC,eAACmB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,cACLE,MAAM,cACN25C,QAAS,WAKjB,gBAACv4C,EAAA,EAAD,CAAK+1D,GAAG,IAAR,UACE,eAAChF,GAAD,CAAkBrxD,MAAO+1D,GAAS/1D,IAClC,eAAC,KAAWc,OAAZ,CAAmB9B,KAAK,SAASE,MAAM,OAAO6B,GAAIG,KAAKJ,SACvD,eAAC,KAAWA,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAI0uD,GAAS3uD,SAEf,eAAC,KAAWA,OAAZ,CACE9B,KAAK,WACLE,MAAM,SACN6B,GAAI60D,GAAO90D,SAEb,gBAACT,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,gBAACc,EAAA,EAAD,CACEwH,KAAK,SACLlI,UAAWw1D,EAAe,eAAiB,GAC3ChvD,SAAUgvD,GAAgBtyD,EAC1B0yD,OAAK,EAJP,UAMGt2D,EAAQ,SAAW,OANtB,gBASF,eAACM,EAAA,EAAD,UACGN,EACC,eAACI,GAAA,EAAKO,MAAN,aACErB,GAAG,WACHJ,MAAM,uBACF+2D,EAAS,cAEb,UAGPH,EACC,gBAACz1D,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEC,QAAQ,SACRC,QAASw0D,EACTp1D,UAAWw1D,EAAe,eAAiB,GAC3ChvD,SAAUgvD,GAAgBtyD,EAC1B0yD,OAAK,EALP,sBAUF,eAACh2D,EAAA,EAAD,OAEA,KACFN,EAgBE,KAfF,eAACK,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,WACLE,MAAM,cACN25C,QAAS,GACTllC,YAAY,iBAEd,eAACvT,GAAA,EAAKO,MAAN,aACErB,GAAG,oBACHJ,MAAM,qBACF+2D,EAAS,qC,aCrJhB,SAASM,GAAT,GAaX,IAZFj3D,EAYC,EAZDA,GAYC,IAXDyB,UAWC,MAXI,QAWJ,MAVD6H,YAUC,MAVM,OAUN,EATD7F,EASC,EATDA,MACA7D,EAQC,EARDA,MAQC,IAPDiH,gBAOC,MAPU,aAOV,MANDqwD,qBAMC,MANe,aAMf,EALDC,EAKC,EALDA,eACAvhC,EAIC,EAJDA,OACAl2B,EAGC,EAHDA,KACAmY,EAEC,EAFDA,OACG7U,EACF,0HACmC0d,aAAejd,GADlD,mBACM2zD,EADN,KACkBC,EADlB,OAEyBlyD,oBAAS,GAFlC,mBAEM8tC,EAFN,KAEaqkB,EAFb,KAIKC,EAAoB7xD,IAAEoN,YAAYqkD,GAC7B,WAAP11D,EACA01D,EAEEK,EACJ9xD,IAAEoN,YAAYskD,IAAe1xD,IAAEkxB,OAAOwgC,GAAc,GAAKA,EAE3D,SAASK,EAAWtiD,GAClB,OAAQ7L,GACN,IAAK,SAEL,IAAK,WACH,OAAOsrB,WAAWzf,GACpB,QACE,MAAM,GAAN,OAAUA,IAYhB,OACE,gBAACrU,GAAA,EAAKY,MAAN,WACG9B,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,CAAY8uB,QAASx2B,EAArB,SAA0BJ,IAAsB,KACzD,eAACkB,GAAA,EAAK8F,QAAN,2BACM5D,GADN,IAEEvB,GAAIA,EACJ6H,KAAMA,EACN7F,MAAO+zD,EACP3wD,SAAU,SAACC,GACTywD,EACIF,EAAcvwD,EAAEC,OAAOtD,OACvBoD,EAASC,EAAEC,OAAOtD,OACtByzD,EAAcpwD,IAEhBo0B,QAAS,kBAAMo8B,GAAS,IACxB1hC,OAvBN,SAAsB9uB,GAChB8uB,GAAQA,EAAO9uB,GACdywD,IACLD,GAAS,GACLrkB,GAASwkB,EAAWL,KAAgBK,EAAWh0D,IACjDoD,EAAS4wD,EAAWL,MAmBlBp3D,GAAIA,EACJN,KAAMA,GAAcM,KAErB6X,EACC,eAAC/W,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,SAAuCuO,IACrC,Q,cCjEK,SAAS6/C,GAAT,GAAiE,IAAlCxvD,EAAiC,EAAjCA,MAAOL,EAA0B,EAA1BA,KAAMQ,EAAoB,EAApBA,OAAWrF,EAAS,0CAC7E,OACE,gBAACmF,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAAQD,KAAK,KAAxC,UACE,eAACD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,UAAcL,MAEhB,eAACC,GAAA,EAAMK,KAAP,UACE,eAACiqB,GAAA,EAAD,aAAgB+jC,SAAUnuD,GAAYrF,S,OCJ1CjE,aAAkB,CACpBC,OAAQymD,GAAczmD,OACtBE,QAASumD,GAAcvmD,QACvB2wB,QAAS,SAAC7vB,GACR,IAAM8uC,EAAShd,aAAW9xB,GAC1B,OAAkB,IAAX8uC,OAAe/+B,EAAY++B,KARvB6oB,G,GAAbv4D,YACWw4D,G,GAAXt4D,UACqBu4D,G,GAArBtmC,oBCEa,SAASumC,GAAT,GAAwD,IAAzBjkC,EAAwB,EAAxBA,WAAe7wB,EAAS,+BAEpE,OADAoH,QAAQC,IAAI,8BAAgCwpB,GAE1C,qCACGA,EAAa,eAACkkC,GAAD,aAAclkC,WAAYA,GAAgB7wB,IAAY,OAM1E,SAAS+0D,GAAT,GAA0D,IAAlCC,EAAiC,EAAjCA,SAAUnkC,EAAuB,EAAvBA,WAAYk7B,EAAW,EAAXA,QAAW,EACH6I,GAAY,CAC9D53D,GAAI6zB,EACJlY,QAAQ,IAFF6pC,EAD+C,EAC/CA,SAAUn2C,EADqC,EACrCA,UAAWG,EAD0B,EAC1BA,QAASL,EADiB,EACjBA,UAKtC,OACE,eAACuoD,GAAD,CACExvD,MAAM,kBACN9D,OAAM,eAAOohD,GACbn9C,OAAQ0mD,EACRlnD,MAAM,EACN2H,QAASA,EACTnL,SAAU,SAACmhD,GACT,IAAMyS,EAAe,eAAQzS,GAC7ByS,EAAgBpiC,KAAOuC,KAAM0jB,MAAM0J,EAAS3vB,MAC5CxmB,EAAU4oD,GAAiBxrD,MAAK,WAC9BurD,IACAjJ,QAGJr8B,YAAa,SAAC8yB,GACZ,IAAMyS,EAAe,eAAQzS,GAC7ByS,EAAgBpiC,KAAOuC,KAAM0jB,MAAM0J,EAAS3vB,MAC5C1mB,EAAU8oD,GAAiBxrD,MAAK,WAC9BurD,IACAjJ,U,aCrCK,SAASmJ,GAAT,GAKX,IAAD,IAJDt4D,aAIC,MAJO,eAIP,EAHDu4D,EAGC,EAHDA,SACA/6C,EAEC,EAFDA,cAEC,IADDxV,gBACC,SACOuH,EAAcyoD,KAAdzoD,UADP,EAE6BhK,oBAAS,GAFtC,mBAEMizD,EAFN,KAEeC,EAFf,KAYD,OARAC,aACEF,EACI,GACA,CACE,WAAY,kBAAMC,GAAW,MAKnC,uCACE,eAACv2D,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAMq2D,GAAW,IAC1BzwD,SAAUA,EAHZ,SAKGhI,IAEH,eAAC83D,GAAD,CACExvD,MAAM,eACN9D,OAAQgZ,EACRvV,KAAMuwD,EACN/vD,OAAQ,kBAAMgwD,GAAW,IACzBh0D,SAAU,SAACmhD,GACT,IAAMyS,EAAe,eAAQzS,GAC7ByS,EAAgBpiC,KAAOuC,KAAM0jB,MAAM0J,EAAS3vB,MAC5C1mB,EAAU8oD,GAAiBxrD,MAAK,WAC9B0rD,IACAE,GAAW,Y,aCzChB,SAASE,GAAT,GAAoD,IAA1B90D,EAAyB,EAAzBA,MAAyB,IAAlB+0D,cAAkB,MAAT,MAAS,EACxD,OACE,eAAC,KAAD,CACE/0D,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,EACjBJ,OAAQA,IAKP,SAASK,GAAT,GAKH,IAJFp1D,EAIC,EAJDA,MAIC,IAHDilB,gBAGC,MAHU,EAGV,MAFDowC,iBAEC,SADE91D,EACF,iDACD,OAAI81D,GAAatkC,OAAO/wB,KAAW+wB,OAAO,GAAW,GAGjD,eAAC,KAAD,aACE/wB,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAcjwC,EACdkwC,mBAAiB,GACb51D,IAKL,SAAS+1D,GAAT,GAKH,IAJFt1D,EAIC,EAJDA,MAIC,IAHDilB,gBAGC,MAHU,EAGV,MAFDowC,iBAEC,SADE91D,EACF,iDACD,OAAI81D,GAAatkC,OAAO/wB,KAAW+wB,OAAO,GAAW,GAGjD,eAAC,KAAD,aACE/wB,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAcjwC,EACdkwC,mBAAiB,EACjBI,OAAQ,KACJh2D,IAKL,SAASi2D,GAAT,GAAuE,IAA3Cx1D,EAA0C,EAA1CA,MAA0C,IAAnCilB,gBAAmC,MAAxB,EAAwB,MAArBowC,UACtD,YAD2E,UAC1DtkC,OAAO/wB,KAAW+wB,OAAO,GAAW,GAEnD,eAAC,KAAD,CACE/wB,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAcjwC,EACdkwC,mBAAiB,EACjBJ,OAAQ,MClEP,IAAMU,GAA2B,CACtCC,EAAG,CACDn5D,GAAI,IACJyW,YAAa,SAEf+hC,EAAG,CACDx4C,GAAI,IACJyW,YAAa,aAEfqiC,EAAG,CACD94C,GAAI,IACJyW,YAAa,YAEf2iD,EAAG,CACDp5D,GAAI,IACJyW,YAAa,WCZF,SAAS4iD,GAAT,GAAwD,IAAhCr5D,EAA+B,EAA/BA,GAAIkC,EAA2B,EAA3BA,SAAUo3D,EAAiB,EAAjBA,cACnD,OACE,eAACx3D,EAAA,EAAD,CACEC,QAAQ,OACRC,QAAS,WACPs3D,EAAct5D,IAHlB,SAMGkC,GAAYlC,ICXZ,IAAMu5D,GAAiB,CAC5BC,EAAG,CACDx5D,GAAI,IACJyW,YAAa,YAEfqiC,EAAG,CACD94C,GAAI,IACJyW,YAAa,UAEfgjD,EAAG,CACDz5D,GAAI,IACJyW,YAAa,aCAF,SAASijD,GAAT,GAKX,IAJFnU,EAIC,EAJDA,UAIC,IAHDxiD,cAGC,MAHQ,CAAC,KAAM,OAAQ,eAAgB,QAAS,QAAS,QAGzD,EAFDu2D,EAEC,EAFDA,cACGt2D,EACF,uDACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,aACRC,SAAU,KACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,SAAC0R,GAAD,uBACJ,eAACmkD,GAAD,CACEr5D,GAAE,OAAEkV,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,iBAAE,EAAQC,gBAAV,aAAE,EAAkB5D,GACtB61B,KAAI,OAAE3gB,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,aAAE,EAAQC,SAASiyB,KACvByjC,cAAeA,EAHjB,UAKI,OAADpkD,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB5D,IACjB,MACAo4B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgB1/B,QAAhB,IAAgBA,GAAhB,UAAgBA,EAAGvR,WAAnB,aAAgB,EAAQC,SAASiyB,WAIvD,CACE71B,GAAI,OACJmD,OAAQ,OACRC,SAAU,SAACoiD,GAAD,aACR,UAAA+T,GAAc,OAAC/T,QAAD,IAACA,OAAD,EAACA,EAAUl8C,aAAzB,eAAgCmN,cAAe,IACjDpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,eACJmD,OAAQ,SACRC,SAAU,SAACoiD,GAAD,aACR,UAAA0T,GAAwB,OAAC1T,QAAD,IAACA,OAAD,EAACA,EAAU1vB,qBAAnC,eAAkDrf,cAAe,IACnEpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACEjY,GAAI,QACJmD,OAAQ,QACRC,SAAU,aACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,SACzBD,OAAQ,CACNI,SAAU,KAIhB,CACE1oB,GAAI,OACJmD,OAAQ,OACRC,SAAU,YACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,KAC/CojB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,cAI/B,CAAC+wC,IAEH,OACE,eAAC32D,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,YACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMuhD,GACFviD,ICjDV,SAAS4vB,GAAT,GAA2E,IAAnDsM,EAAkD,EAAlDA,QAASy6B,EAAyC,EAAzCA,OAAQtxD,EAAiC,EAAjCA,OAAQwhC,EAAyB,EAAzBA,OAAQ+vB,EAAiB,EAAjBA,cAAiB,EAC5Bz0D,mBAAS0kC,GADmB,mBACjEgwB,EADiE,KACjDC,EADiD,OAUpEC,aAAS,CACXv1D,OAAQ,CAAEA,OAAQkxD,IAClBnxD,cAAe26B,EACf76B,SAAU,SAAC21D,GACT,IAAIC,EAAW,GAEbA,EADqB,UAAnBJ,EACM,eAAQG,GAGR,2BACHA,GADG,IAENnY,iBAAkB,EAClBC,iBAAkB,IAGtB6X,EAAOM,GACP5xD,OAvBF1H,EAHsE,EAGtEA,WACAu5D,EAJsE,EAItEA,QACAzhD,EALsE,EAKtEA,MACA0hD,EANsE,EAMtEA,QACA1nD,EAPsE,EAOtEA,MACAihB,EARsE,EAQtEA,SACa7b,EATyD,EAStEy8C,UAAaz8C,OATyD,EA+BtE1S,mBAAS,MA/B6D,mBA8BjEi1D,EA9BiE,KA8BtCC,EA9BsC,KAgClE55B,EAAS9rB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAE3CgH,EAAYwjB,EAAQl/B,GACpB+hD,EAAetpC,EAAM,gBACrBwpC,EAAiBxpC,EAAM,kBACvBopC,EAAmBppC,EAAM,oBACzBqpC,EAAmBrpC,EAAM,oBAtCyC,EAwCzB+C,aAAY,CACzDxb,GAAIiiD,EACJtmC,OAAiC,IAAzB6Y,OAAOutB,IAAwC,KAAjBA,EACtCrmC,cAHe+Y,EAxCuD,EAwChEjlB,QAA0BoM,EAxCsC,EAwCtCA,SAMlCE,qBAAU,WACH2Y,IACHf,EAAS,eAAgB9X,GACzBu+C,OAED,CAACv+C,EAAU8X,EAAUe,EAAiB0lC,IAnD+B,MA2DpEtC,GAAqB,CACvBvxD,OAAQ,CAAEob,OAAQ,KAAMkS,UAAWlY,GACnCC,QAAQ,IALR4pC,EAxDsE,EAwDtEA,UACS+U,EAzD6D,EAyDtE9qD,QACO+qD,EA1D+D,EA0DtE9nD,MAMF,SAAS+nD,EAAa3zD,GACpB,OAAO,SAACpD,GACNoD,EAASpD,GACT02D,KAIJ,IAAMM,EAAqB,WACzBF,EAAe,CAAE74C,OAAQ,KAAMkS,UAAWlY,IAC1Ck+C,KAaIc,EAAsBx3D,mBAAQ,WAClC,MAAO,CACLwe,OAAQ,KACRkS,UAAWsL,EAAQl/B,GACnBD,MAAO0gC,EACP3K,aAAc,IACdxsB,KAAM,IACNysB,sBAAuB,SACvBla,KAAMqjB,EAAQ6iB,aACdjuB,WAAYmuB,EACZpsB,KAAM1E,SAEP,CAAC+N,EAAQl/B,GAAIk/B,EAAQ6iB,aAAcE,EAAgBxhB,IAElDk6B,EAAc,EACblyC,MAAMs5B,IAAkBt5B,MAAMo5B,KACjC8Y,EAAcj1D,IAAEk1D,SAAS7Y,EAAcF,GAAkBl5B,QAAQ,IAEnE,IAAIkyC,EAAc,EAKlB,OAJKpyC,MAAMs5B,IAAkBt5B,MAAMq5B,KACjC+Y,EAAcn1D,IAAEk1D,SAAS7Y,EAAcD,GAAkBn5B,QAAQ,IAIjE,gBAAC7nB,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,eAACG,GAAA,EAAKY,MAAN,UACE,gBAACX,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,8BACA,gBAAC5G,GAAA,EAAK8F,QAAN,CACEnF,GAAG,SACHgC,MAAOo2D,EACPhzD,SAAU,SAACC,GACTgzD,EAAkBhzD,EAAEC,OAAOtD,OAC3BgP,EAAMysB,IAERt3B,SAAUs3B,EAAQqmB,UAAUlnC,OAAS,EAPvC,UASE,yBAAQ5a,MAAM,QAAd,mBACA,yBAAQA,MAAM,UAAd,qBACA,yBAAQA,MAAM,QAAd,yBAGJ,eAACzC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,mBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAAep0B,OAAhB,CACE5B,MAAM,kBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOm+C,iBAClBn+C,OAAM,UAAEA,EAAOm+C,wBAAT,aAAE,EAAyBjpD,QACjCnF,SAAUs3B,EAAQqmB,UAAUlnC,OAAS,cAQ7B,UAAnBw7C,EACC,uCACE,gBAAC94D,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAACi2D,GAAD,CACEr3D,MAAM,QACN0J,KAAK,SACL7F,MAAOy7B,EAAQ4iB,iBACfl6C,UAAU,EACVuvD,gBAAgB,MAGpB,eAACn2D,EAAA,EAAD,UACE,eAACi2D,GAAD,CACEr3D,MAAM,OACN0J,KAAK,SACL7F,MAAOy7B,EAAQ62B,gBACfnuD,UAAU,EACVuvD,gBAAgB,SAItB,eAACp2D,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAAC82D,GAAD,CACEE,SAAUyC,EACV5mC,WAAYumC,EACZrL,QAhGc,WAC1BsL,EAA6B,SAiGnB,eAACX,GAAD,CACEnU,UAAWA,EACX/1C,QAAS8qD,EACThB,cAzGa,SAACt5D,GAC1Bq6D,EAA6Br6D,IAyGjBsrB,UAAW,kBACTivC,EAAe,CAAE74C,OAAQ,KAAMkS,UAAWlY,YAKlD,eAAC3a,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACk3D,GAAD,CACE96C,cAAes9C,EACfvC,SAAUsC,WAMlB,uCACE,eAAC15D,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,UACsB,UAAnB64D,EACC,uCACE,gBAAC/4D,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,mBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,YACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOgqC,iBAClBhqC,OAAM,UAAEA,EAAOgqC,wBAAT,aAAE,EAAyB90C,QACjCoqD,gBAAgB,SAKxB,eAACn2D,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,mBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,YACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOiqC,iBAClBjqC,OAAM,UAAEA,EAAOiqC,wBAAT,aAAE,EAAyB/0C,QACjCoqD,gBAAgB,YAM1B,gBAACr2D,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,iBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,KAAKp0B,OAAN,CACE5B,MAAM,cACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,GAAa,SAACrlD,GACtBtO,EAASsO,GACTue,EAAS,eAAgB,MAE3B9b,UAAWC,EAAOoqC,eAClBpqC,OAAM,UAAEA,EAAOoqC,sBAAT,aAAE,EAAuBl1C,QAC/BiN,aAAW,SAKnB,eAAChZ,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,eACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,cACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,GAAa,SAACrlD,GACtBtO,EAASsO,GACTue,EAAS,iBAAkB,OAE7B9b,UAAWC,EAAOkqC,aAClBlqC,OAAM,UAAEA,EAAOkqC,oBAAT,aAAE,EAAqBh1C,QAC7BnF,SAAU6sB,EACV0iC,gBAAgB,YAM1B,gBAACr2D,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAACi2D,GAAD,CACEr3D,MAAM,WACN6D,MAAOk3D,EACP/yD,UAAQ,MAGZ,eAAC5G,EAAA,EAAD,UACE,eAACi2D,GAAD,CACEr3D,MAAM,WACN6D,MAAOo3D,EACPjzD,UAAQ,YAMhB,gBAAC9G,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,kBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,WACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOi+C,gBAClBj+C,OAAM,UAAEA,EAAOi+C,uBAAT,aAAE,EAAwB/oD,QAChCoqD,gBAAgB,SAKxB,eAACn2D,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,kBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,WACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOk+C,gBAClBl+C,OAAM,UAAEA,EAAOk+C,uBAAT,aAAE,EAAwBhpD,QAChCoqD,gBAAgB,gBAShC,gBAAC9qB,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CAAQwH,KAAK,SAAb,kBACA,eAACxH,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,WACPqG,KAHJ,6BC3XG,SAASyyD,GAAT,GAAoD,IAAD,cAAzB12D,cAAyB,MAAhB,GAAgB,EAAZC,EAAY,EAAZA,SAAY,EACpCc,mBAASf,GAD2B,mBACzDb,EADyD,KACjDg9C,EADiD,KAOhE,SAASia,EAAa/iD,EAAOsjD,GAC3Bxa,EAAU,2BACLh9C,GADI,mBAENkU,EAAQsjD,KAQb,OAfAj/C,qBAAU,WACRykC,EAAUn8C,KACT,CAACA,IASJk0D,aAAY,CACV,aAAc,kBAAMj0D,EAASd,MAI7B,gBAACzC,GAAA,EAAD,CACEuD,SAAU,SAAC4C,GACTA,EAAM0c,iBACNtf,EAASd,IAHb,UAME,eAACxC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAOQ,OAAR,CACE5B,MAAM,SACNI,GAAG,wBACHyD,OAAa,OAANF,QAAM,IAANA,OAAA,EAAAA,EAAQ+kC,WAAY,UAC3BzhC,SAAU,SAACk0D,GAAD,OAAUP,EAAa,WAAYO,UAInD,eAACh6D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKQ,OAAN,CACE5B,MAAM,QACNI,GAAG,uBACHyD,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQy3D,OACfn0D,SAAU,SAACk0D,GAAD,OAAUP,EAAa,SAAUO,IAC3Cr3D,QAAQ,EACR2Q,YAAY,qBACZxS,SAAO,EACPo0B,QAAO,OAAE1yB,QAAF,IAAEA,GAAF,UAAEA,EAAQy3D,cAAV,aAAE,EAAgB38C,aAI/B,eAACtd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAOQ,OAAR,CACE5B,MAAM,SACNI,GAAG,wBACHyD,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQw7C,gBACfl4C,SAAU,SAACk0D,GAAD,OAAUP,EAAa,kBAAmBO,IACpDl5D,SAAO,EACPo0B,QAAO,OAAE1yB,QAAF,IAAEA,GAAF,UAAEA,EAAQw7C,uBAAV,aAAE,EAAyB1gC,aAIxC,eAACtd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKQ,OAAN,CACE5B,MAAM,WACNI,GAAG,0BACHyD,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQ03D,UACfp0D,SAAU,SAACk0D,GAAD,OAAUP,EAAa,YAAaO,IAC9Cr3D,QAAQ,EACRyQ,YAAY,EACZtS,SAAO,EACPo0B,QAAO,OAAE1yB,QAAF,IAAEA,GAAF,UAAEA,EAAQ03D,iBAAV,aAAE,EAAmB58C,aAIlC,eAACtd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKU,MAAMF,OAAZ,CACE5B,MAAM,QACNI,GAAG,uBACHyD,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQmL,OACf7H,SAAU,SAACk0D,GAAD,OAAUP,EAAa,SAAUO,IAC3Cl5D,SAAO,EACPo0B,QAAO,OAAE1yB,QAAF,IAAEA,GAAF,UAAEA,EAAQmL,cAAV,aAAE,EAAgB2P,aAI/B,eAACtd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAASQ,OAAV,CACE5B,MAAM,YACNI,GAAG,0BACHyD,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQk7B,UACf53B,SAAU,SAACk0D,GAAD,OAAUP,EAAa,YAAaO,IAC9Cl5D,SAAO,EACPo0B,QAAO,OAAE1yB,QAAF,IAAEA,GAAF,UAAEA,EAAQk7B,iBAAV,aAAE,EAAmBpgB,aAIlC,eAACtd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,6BACA,gBAAC5G,GAAA,EAAK8F,QAAN,CACEnF,GAAG,SACHoF,SAAU,SAACC,GAAD,OAAO0zD,EAAa,gBAAiB1zD,EAAEC,OAAOtD,QACxDA,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQwvD,cAHjB,UAKE,yBAAQtvD,MAAM,GAAd,iBACA,yBAAQA,MAAM,QAAd,gBACA,yBAAQA,MAAM,OAAd,4BAKR,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,gCACA,gBAAC5G,GAAA,EAAK8F,QAAN,CACEnF,GAAG,SACHoF,SAAU,SAACC,GAAD,OACR0zD,EAAa,oBAAqB1zD,EAAEC,OAAOtD,QAE7CA,MAAK,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAQ0vD,kBALjB,UAOE,yBAAQxvD,MAAM,GAAd,iBACA,yBAAQA,MAAM,QAAd,gBACA,yBAAQA,MAAM,OAAd,4BAKR,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CAAQC,QAAQ,UAAUuH,KAAK,SAA/B,oBAGA,eAACxH,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMu+C,EAAU,CAAEjY,SAAU,aAFvC,6BCjJG,SAAS4yB,GAAT,GAAwC,IAAjBl7D,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACxC,OAAIumB,MAAMzoB,GAAY,qCAAGA,IACd,IAAPA,EAAiB,KAEnB,eAAC,OAAD,CACEoB,UAAU,aACV2F,OAAO,SACP5E,GAAI,CAAEC,SAAS,aAAD,OAAepC,IAH/B,SAKGkC,GAAYlC,ICHJ,SAASm7D,KAMf,IAAD,yDAAJ,GALFn7D,EAKM,EALNA,GAKM,IAJNg/C,mBAIM,aAHNqP,gBAGM,aAFNpP,mBAEM,aADNtjC,cACM,SACAujB,EAAUvqB,aAAY,SAACpS,GAAD,OAC1Bk+C,GAAazhD,OAAOwD,UAAUiuB,WAAWluB,EAAOvC,MAG5CoJ,EAAW0O,cALX,EAM6Bs2C,KAN7B,mBAMCgN,EAND,KAMc9M,EANd,OAOoBnpD,mBAAS,MAP7B,mBAOC2H,EAPD,KAOQ4jB,EAPR,OAQsBvrB,oBAAS,GAR/B,mBAQCorB,EARD,KAQSC,EART,OAUsC6qC,GAAiB,CAC3Dr7D,KACAg/C,cACAC,gBAHMqc,EAVF,EAUEA,WAAYvpD,EAVd,EAUcA,WAAYvC,EAV1B,EAU0BA,QAM1BshB,GACHrI,MAAMzoB,MACK,IAAX2b,IAA+B,IAAXA,GAAoBjW,IAAEoN,YAAYosB,IASzD,OAPApjB,qBAAU,WACJgV,GACFwqC,IACGzuD,MAAM6jB,GACNK,SAAQ,kBAAMP,GAAU,QAC5B,CAAC8qC,EAAYxqC,IAET,CACLoO,UACA1vB,QAASshB,IAActhB,IAAY+gB,KAAY6qC,GAC/CtuD,QACAiF,aACAupD,aACAnsD,UAAW,SAAC+vB,GAAD,OACT91B,EAASq3C,GAAavhD,QAAQiQ,UAAU+vB,IACrCzyB,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KACD0X,EAAYqF,EAAO/gB,GAMzB,OALIquD,KACS,OAAPnvB,QAAO,IAAPA,OAAA,EAAAA,EAASqgB,YAAT,OAAqBx+B,QAArB,IAAqBA,OAArB,EAAqBA,EAAQqjB,IAAI,GAAGpkC,IACtCsuD,EAAY,gBAAUvtC,QAAV,IAAUA,OAAV,EAAUA,EAAQqjB,IAAI,GAAGpkC,KAClCsuD,EAAY,aAAe5yC,IAE3BqF,MAEb1R,UAAW,SAACO,EAAS6vC,GAAV,OACTr2C,EACEq3C,GAAavhD,QAAQmQ,UAAU,CAC7BrP,GAAIA,EACJgE,KAAM4L,EACN6vC,oBAGDhzC,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADIqqD,GAAUC,EAAY,aAAetuD,GAClC+gB,KAERlU,OAAM,SAAC0uD,GACN,GAAqB,gBAAd,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKxuD,SAKP,MAAMwuD,EAJND,IAAa7uD,MAAK,WAChB,MAAM,IAAIO,MAAM,2CAM1BihC,cAAe,gBAAG/lC,EAAH,EAAGA,MAAO+lB,EAAV,EAAUA,KAAV,OACb7kB,EACEq3C,GAAavhD,QAAQ+uC,cAAc,CACjC/O,QAAO,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAASl/B,GAClBkI,QACA+lB,WAGNkgB,cAAe,gBAAGnuC,EAAH,EAAGA,GAAIkI,EAAP,EAAOA,MAAO+lB,EAAd,EAAcA,KAAd,OACb7kB,EACEq3C,GAAavhD,QAAQivC,cAAc,CACjCjP,QAAO,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAASl/B,GAClBA,KACAkI,QACA+lB,WAGN0c,iBAAkB,SAAC57B,GAAD,OAChB3F,EACEq3C,GAAavhD,QAAQyrC,iBAArB,aACE3qC,MACG+O,KAELtC,KAAK4jB,MAETgwB,YAAa,SAACtxC,GAAD,OACX3F,EACEq3C,GAAavhD,QAAQmhD,YAArB,aAAmCrgD,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAASl/B,IAAO+O,KACvDtC,KAAK4jB,OAMb,SAASgrC,KAIA,IAAD,yDAAJ,GAHFr7D,EAGM,EAHNA,GAGM,IAFNg/C,mBAEM,aADNC,mBACM,SACAzvC,EAAUmF,aACd,SAACpS,GAAD,OAAWA,EAAM4L,SAASA,SAASmB,SAASE,WAExCpG,EAAW0O,cAJX,EAK8B3S,mBAAS,MALvC,mBAKC4M,EALD,KAKaypD,EALb,KAMAF,EAAavzD,uBACjB,SAACgH,GAAD,OACE3F,EACEq3C,GAAavhD,QAAQgQ,OAArB,aACElP,GAAIA,EACJg/C,cACAC,eACGlwC,KAGJtC,KAAK4jB,KACL5jB,MAAK,SAACsU,GAEL,OADAy6C,EAAcrqC,OACPpQ,OAEb,CAAC/gB,EAAIoJ,EAAU61C,EAAaD,IAG9B,MAAO,CAAEsc,aAAYvpD,aAAYvC,WCxIpB,SAASisD,GAAT,GAIX,IAAD,IAHD5iD,aAGC,MAHO,aAGP,EAFD29C,EAEC,EAFDA,SACSp5C,EACR,EADD8hB,QAEQ/vB,EAAcgsD,KAAdhsD,UADP,EAEyBhK,mBAAS,MAFlC,mBAEM2H,EAFN,KAEa4jB,EAFb,OAIwC/b,aACvC,SAACpS,GAAD,OAAWA,EAAM0c,SAASA,YADpB2yC,EAJP,EAIOA,aAAc8J,EAJrB,EAIqBA,eAIhBn3D,EAAa,aACjBk6B,UAAW,CAAC22B,IACZ3vD,QAASi2D,GAAkB,GAC3B/F,SAAU,KACV9U,SAAU,KACVjB,OAAQ,KACRiQ,WAAY,KACZ9vD,MAAO6xD,GAAgB,QACvBrS,UAAU,GAGP75C,IAAEi2D,OAAOv+C,GAAiB,IAAI,SAACjI,GAAD,OAAQzP,IAAEoN,YAAYqC,OAGzD,OACE,eAACohD,GAAD,CACEr3B,QAAS36B,EACTq3D,kBAAmBx+C,EACnB1c,OAAK,EACL2D,SAAU,SAAC66B,GACT/vB,EAAU+vB,GACPryB,OAAM,SAAC0uD,GAAD,OAAS7qC,EAAQ,OAAC6qC,QAAD,IAACA,OAAD,EAACA,EAAKxuD,YAC7BN,MAAK,SAACsU,GACL,OAAOlI,EAAMkI,OAGnBy1C,SAAUA,EACV1pD,MAAOA,IC7CE,SAAS+uD,GAAct4D,GACpC,IAAIwiB,EAAU,GAER+1C,EAAc,SAACC,GACnB,OAAgB,IAATA,GAAmBr2D,IAAE0iB,QAAQ2zC,IAASA,EAAK9qD,UAAS,GACvD,IACA,IAGDvL,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQy3D,UACQ,IAAzBz3D,EAAOy3D,OAAO38C,OAChB0H,EAAQjI,KAAR,kBACag+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQy4D,gBADjC,OACkDz4D,EAAOy3D,OAAO,GADhE,MAIAj1C,EAAQjI,KAAR,kBACag+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQy4D,gBADjC,OACkDz4D,EAAOy3D,OAAO38C,OADhE,OAIJ,IAAI49C,EAAc,EACbv2D,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQw7C,mBACrBkd,GAAW,OAAI14D,QAAJ,IAAIA,OAAJ,EAAIA,EAAQw7C,gBAAgB1gC,QACpC3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQyK,2BACrBiuD,GAAW,OAAI14D,QAAJ,IAAIA,OAAJ,EAAIA,EAAQyK,wBAAwBqQ,QAE5C3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQunC,cAAamxB,GAAe14D,EAAOunC,WAAWzsB,QAChE3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQ24D,cAAaD,GAAe14D,EAAO24D,WAAW79C,QACjE49C,GACFl2C,EAAQjI,KAAR,oBACeg+C,EAAY,QACvBv4D,QADuB,IACvBA,OADuB,EACvBA,EAAQ44D,kBADe,OAEvB54D,QAFuB,IAEvBA,OAFuB,EAEvBA,EAAQ64D,uBAFe,OAGvB74D,QAHuB,IAGvBA,OAHuB,EAGvBA,EAAQ84D,kCAJZ,OAKOJ,EALP,MAQGv2D,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQ03D,YACrBl1C,EAAQjI,KAAR,qBACgBg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQ+4D,mBADpC,OAEI/4D,EAAO03D,UAAU58C,OAFrB,MAOG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQmL,SACrBqX,EAAQjI,KAAR,kBACag+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQg5D,gBADjC,OACkDh5D,EAAOmL,OAAO2P,OADhE,MAKG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQk7B,YACrB1Y,EAAQjI,KAAR,qBACgBg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQi5D,mBADpC,OAEIj5D,EAAOk7B,UAAUpgB,OAFrB,MAOG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQkL,QACrBsX,EAAQjI,KAAR,iBACYg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQk5D,eADhC,OACgDl5D,EAAOkL,MAAM4P,OAD7D,MAKG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQk7C,oBACrB14B,EAAQjI,KAAR,sBACiBg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQm5D,2BADrC,OAEIn5D,EAAOk7C,kBAAkBpgC,OAF7B,MAOG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQq7C,iBACrB74B,EAAQjI,KAAR,mBACcg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQo5D,wBADlC,OAEIp5D,EAAOq7C,eAAevgC,OAF1B,MAMG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQ4gC,iBACrBpe,EAAQjI,KAAR,wBACmBg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQq5D,wBADvC,OAEIr5D,EAAO4gC,eAAe9lB,OAF1B,MAMG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQs5D,kBACrB92C,EAAQjI,KAAR,yBACoBg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQu5D,yBADxC,OAEIv5D,EAAOs5D,gBAAgBx+C,OAF3B,MAMG3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQslC,YACrB9iB,EAAQjI,KAAR,mBACcg+C,EAAW,OAACv4D,QAAD,IAACA,OAAD,EAACA,EAAQw5D,mBADlC,OAEIx5D,EAAOslC,UAAUxqB,OAFrB,MAOF,IAAI2+C,EAAY,EACXt3D,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQ05D,eAAcD,GAAS,OAAIz5D,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ05D,YAAY5+C,QACjE3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQ25D,eAAcF,GAAS,OAAIz5D,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ25D,YAAY7+C,QACjE3Y,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQ45D,eAAcH,GAAS,OAAIz5D,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ45D,YAAY9+C,QAClE2+C,GACFj3C,EAAQjI,KAAR,iBACYk/C,EADZ,YACyBlB,EAAY,QACjCv4D,QADiC,IACjCA,OADiC,EACjCA,EAAQ65D,mBADyB,OAEjC75D,QAFiC,IAEjCA,OAFiC,EAEjCA,EAAQ85D,mBAFyB,OAGjC95D,QAHiC,IAGjCA,OAHiC,EAGjCA,EAAQ+5D,uBAQd,IAAIC,EAAQ,EACR73D,IAAE8rD,UAAF,OAAYjuD,QAAZ,IAAYA,OAAZ,EAAYA,EAAQi6D,mBAAkBD,GAAS,GAC/C73D,IAAE8rD,UAAF,OAAYjuD,QAAZ,IAAYA,OAAZ,EAAYA,EAAQq+C,yBAAwB2b,GAAS,GACrD73D,IAAE8rD,UAAF,OAAYjuD,QAAZ,IAAYA,OAAZ,EAAYA,EAAQk+C,uBAAsB8b,GAAS,GACnD73D,IAAE8rD,UAAF,OAAYjuD,QAAZ,IAAYA,OAAZ,EAAYA,EAAQk6D,cAAaF,GAAS,GAC1CA,GAAOx3C,EAAQjI,KAAR,iBAAuBy/C,EAAvB,MAEX,IAAIG,EAAQ,EAeZ,QAdU,OAANn6D,QAAM,IAANA,OAAA,EAAAA,EAAQo6D,eAAR,OAAuBp6D,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQq6D,cAAWF,GAAS,KAC7C,OAANn6D,QAAM,IAANA,OAAA,EAAAA,EAAQs6D,eAAR,OAAuBt6D,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQu6D,cAAWJ,GAAS,KAC7C,OAANn6D,QAAM,IAANA,OAAA,EAAAA,EAAQw6D,eAAR,OAAuBx6D,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQy6D,cAAWN,GAAS,KAC7C,OAANn6D,QAAM,IAANA,OAAA,EAAAA,EAAQ06D,uBAAR,OAA+B16D,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAQ26D,sBAAmBR,GAAS,KAC7D,OAANn6D,QAAM,IAANA,OAAA,EAAAA,EAAQ46D,wBAAR,OAAgC56D,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAQ66D,uBAAoBV,GAAS,KAC/D,OAANn6D,QAAM,IAANA,OAAA,EAAAA,EAAQ86D,2BAAR,OAAmC96D,QAAnC,IAAmCA,OAAnC,EAAmCA,EAAQ+6D,0BAC7CZ,GAAS,GACPA,GAAO33C,EAAQjI,KAAR,iBAAuB4/C,EAAvB,MAOP33C,EAAQ1H,OAAS,EACZ3Y,IAAE64D,WAAWh7D,EAAO+kC,UAAY,KAAOviB,EAAQkB,KAAK,MACtD,GCvIM,SAASu3C,GAAT,GAAmD,IAApBj7D,EAAmB,EAAnBA,OAAQk7D,EAAW,EAAXA,QAE9CC,EAAyBvf,IAFgC,EAGnBh6C,mBAASu5D,GAHU,mBAGxDC,EAHwD,KAGxCC,EAHwC,KAKzDx1D,EAAW0O,cAL8C,EAMpBnD,aAAY,SAACpS,GAAD,OACrDk+C,GAAazhD,OAAOwD,UAAUmP,eAAepP,EAAOgB,MAPS,mBAMxD4K,EANwD,KAM9C4D,EAN8C,KAMlCC,EANkC,KASzDxC,EAAUmF,aACd,SAACpS,GAAD,OAAWA,EAAM4L,SAASA,SAASmB,SAASE,WAViB,EAYrCrK,mBAAS,MAZ4B,mBAYxD2H,EAZwD,KAYjD4jB,EAZiD,KAazDO,EAAY1R,IAAI2R,oBAEhB7F,EAAyB,KAAfrZ,GAA+B,OAAVlF,IAAmBpH,IAAE6E,QAAQhH,GAC5Ds7D,EAAgB1wD,EAASkQ,OAEzB+M,EAAUrjB,uBAAY,WAG1B,OAFI82D,GAAiBF,GACnBC,EAAkBD,EAAiBD,GAC9Bt1D,EACLq3C,GAAavhD,QAAQ0O,QAAQ,CAC3BrK,OAAQA,EACR47C,QAvBU,IAwBVntC,WAAYA,KAEdvF,KAAK4jB,OACN,CACDjnB,EACA7F,EA7Bc,IA+BdyO,EACA6sD,EACAF,EACAD,IAGIjsD,EAAQ1K,uBAAY,WACxBqB,EAASq3C,GAAavhD,QAAQuT,MAAMlP,IACpCmtB,EAAS,MACTkuC,EAAkBF,KACjB,CAACt1D,EAAU7F,EAAQm7D,IAoBtB,OAlBA5iD,qBAAU,WACJ2iD,GACAI,EAAgBF,GAAkBtzC,GACpCD,IAAUve,MAAM6jB,KAEjB,CAACmuC,EAAexzC,EAASD,EAASuzC,EAAgBF,IAErD3iD,qBAAU,WACJ2iD,GAEa,OAAf1sD,GACAof,MAASC,KAAKrf,EAAY,SAAW,GACrCkf,GAEAxe,MAED,CAACA,EAAOV,EAAY0sD,EAASxtC,IAEzB,CACL9iB,WACAqB,UACAuC,aACAsZ,UACAD,UACA3Y,QACA3F,SCrEW,SAASgyD,GAAT,GAIX,IAHFC,EAGC,EAHDA,kBACAC,EAEC,EAFDA,eACA95D,EACC,EADDA,SACC,EACsChC,mBAAQ,WAC7C,IAAI+7D,GAAgB,EAChBC,EAAgB,CAAE52B,SAAU,WAShC,OARIy2B,IACFG,EAAczgC,UAAY,CAACsgC,GAC3BE,GAAgB,GAEdD,IACFE,EAAclE,OAAS,CAACgE,GACxBC,GAAgB,GAEX,CAACC,EAAeD,KACtB,CAACF,EAAmBC,IAbtB,mBACME,EADN,KACqBD,EADrB,OAe2B95D,mBAAS+5D,GAfpC,mBAeM37D,EAfN,KAecg9C,EAfd,OAgB2Bp7C,mBAAS85D,GAhBpC,mBAgBM34D,EAhBN,KAgBc64D,EAhBd,OAkB+CX,GAAoB,CAClEj7D,SACAk7D,SAAUn4D,IAFJ6H,EAlBP,EAkBOA,SAAUqB,EAlBjB,EAkBiBA,QAAS6b,EAlB1B,EAkB0BA,QAASD,EAlBnC,EAkBmCA,QAK9B1W,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAKzCi+B,EAAYzvC,mBAAQ,WACxB,cAAOiL,QAAP,IAAOA,OAAP,EAAOA,EAAU6lC,MAAK,SAAC7qC,EAAG4b,GACxB,IAAMq6C,EAAOj2D,EAAEpJ,QAAU2U,EAAO,IAAMvL,EAAEpJ,MAClCs/D,EAAOt6C,EAAEhlB,QAAU2U,EAAO,IAAMqQ,EAAEhlB,MACxC,OAAIq/D,EAAOC,EAAa,EACpBD,EAAOC,GAAc,EAClB,OAER,CAAClxD,EAAUuG,IAEd,OACE,uCACE,eAAC3T,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACuzD,GAAA,EAAD,CAAUC,IAAKluD,EAAf,SACE,+BACE,eAACw0D,GAAD,CACE12D,OAAQb,EACRc,SAAU,SAAC2Q,GACTurC,EAAUvrC,GACVmqD,GAAU,UAKlB,eAAC5K,GAAA,EAAD,CAAUC,GAAIluD,EAAd,SACE,+BACE,gBAACvF,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,oBAAGG,UAAU,OAAb,SAAqBy6D,GAAct4D,OAErC,eAACvC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,OAAOC,QAAS,kBAAMm9D,GAAU,IAAhD,uCASZ,eAACp+D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACuzD,GAAA,EAAD,CAAUC,GAAIluD,EAAd,SACE,+BACE,eAACksD,GAAD,CACErkD,SAAUwkC,EACVr9B,UAAW9F,EACX6b,QAASA,EACTD,QAASA,EACTlmB,SAAUA,EACVnC,OAAQ,CACN,KACA,aACA,QACA,SACA,OACA,yBJgBlBo4D,GAAWjsD,OAASmsD,G,aK7FLiE,GAhB0BvgE,aAAkB,CACzDC,OAAQ,CACNU,KAAM,eACN8C,UAAW+8D,GACXrxD,SAN2B,SAAC3L,GAAD,OAAWA,EAAM05B,SAASuB,eAQvDt+B,QAAS,CACP0O,QAAS4xD,GAAoBjiC,gBAC7B9qB,MAAO+sD,GAAoB9hC,mBAE7B9N,OAAQ,CACN/mB,IAAK,UACLpF,MAAO,KAZHrE,YCAO,SAASqgE,GAAT,GAGX,IAFFjqD,EAEC,EAFDA,QAEC,IADDjS,cACC,MADQ,kBAAM,GACd,IACoD+7D,KAAnC9hC,EADjB,EACOvrB,SAAwBzC,EAD/B,EAC+BA,QAAS5B,EADxC,EACwCA,QAEnC8xD,EAAkBx8D,mBAAQ,WAC9B,OAAI,OAACs6B,QAAD,IAACA,OAAD,EAACA,EAAcnf,QAEZshD,iBACLC,kBAAQ9qD,iBAAO0oB,EAAc,cAC7B,SAACr0B,GAAD,OAAOA,EAAEuY,OAASvY,EAAEN,OAEnBtF,OAAOA,GACPgD,KAAI,SAAC4C,GACJ,IAAMnJ,EAAKgyC,SAAS7oC,EAAEN,KACtB,MAAiB,OAAbM,EAAEuY,OACG,CACL9hB,MAAO,OAASI,EAAK,IAAMmJ,EAAE02D,SAC7B33D,MAAO,OAASlI,EAChBg3B,KAAM7tB,EAAE02D,SACRp8D,MAAO,CAAEzD,GAAIA,EAAI8/D,OAAQ,OAEP,OAAb32D,EAAEuY,OACF,CACL9hB,MAAO,YAAcI,EAAK,IAAMmJ,EAAE02D,SAClC33D,MAAO,YAAclI,EACrBg3B,KAAM7tB,EAAE02D,SACRp8D,MAAO,CAAEzD,GAAIA,EAAI8/D,OAAQ,YAEtB,QAERv8D,OAAOuhB,SAzBwB,KA0BjC,CAACvhB,EAAQi6B,IAOZ,OALIpV,kBAAQ5S,IACVA,EAAQsI,KAAK,CACXle,MAAO,uBACP4V,QAASkqD,IAEN,CAAElqD,QAASkqD,EAAiBlwD,UAAS5B,WC3C/B,SAASmyD,GAAT,GAMX,IALF1iD,EAKC,EALDA,MACA7H,EAIC,EAJDA,QAIC,IAHDwqD,iBAGC,aAFDC,sBAEC,aADDtpC,gBACC,MADU,SAACtZ,EAAOyiD,GAAR,MAAoB,CAAEA,SAAQ9/D,GAAIqd,IAC5C,EACK6iD,EAAWluB,SAAS30B,GACrBoL,gBAAMy3C,KACLA,EAAW,KAAYF,GACzBxqD,EAAQsI,KAAK,CACXle,MAAO,kBACP4V,QAAS,CACP,CACE5V,MAAO,OAASyd,EAChB5Z,MAAOkzB,EAAStZ,EAAO,UAI3B6iD,GAAY,KAAYD,GAC1BzqD,EAAQsI,KAAK,CACXle,MAAO,UACP4V,QAAS,CACP,CACE5V,MAAO,YAAcyd,EACrB5Z,MAAOkzB,EAAStZ,EAAO,gBCdnC,IAAMkZ,GAAmB,CAAEQ,OAAQD,MAEnC,SAASqpC,GAAT,GAcI,IAbFngE,EAaC,EAbDA,GACAJ,EAYC,EAZDA,MACAiH,EAWC,EAXDA,SACAu5D,EAUC,EAVDA,MAUC,IATD/rD,mBASC,MATa+rD,EAAQ,gBAAkB,aASvC,EAROC,EAQP,EARDxoD,OACOsf,EAON,EAPD1zB,MACA6R,EAMC,EANDA,UACAhR,EAKC,EALDA,WACAg8D,EAIC,EAJDA,SAIC,IAHDC,6BAGC,aAFDC,2BAEC,SADEx9D,EACF,qKACyBmC,mBAAS,IADlC,mBACMkY,EADN,KACaC,EADb,OAE2BoD,aAAe2/C,GAF1C,mBAEMxoD,EAFN,KAEc4oD,EAFd,OAI+CtF,GAAWjsD,SAAnDosD,EAJP,EAIOA,WAAqBoF,EAJ5B,EAImBlxD,QAJnB,EAUGmxD,GAAS,CACXh6C,IAAK20C,EACLzjD,OAAQwoD,EACR58D,MAAO0zB,EACP2oC,OAAQ,UACRW,YACA32B,MAAOw2B,EACPE,wBAVaI,EAPd,EAOCC,YACAp9D,EARD,EAQCA,MACAiwB,EATD,EASCA,SATD,EAoBmCvuB,oBAAS,GApB5C,mBAoBM27D,EApBN,KAoBkBC,EApBlB,KAsBGvrD,EAAU,GAEduqD,GAAc,CAAE1iD,QAAO7H,UAASwqD,YAAaI,IAC7C,IAzBC,EA8BCX,GAAuB,CACrBjqD,UACAjS,OAPmBwE,uBACrB,SAACk0B,GAAD,QAAgBmkC,GAA6B,OAApBnkC,EAASva,SAClC,CAAC0+C,MAEcY,EA7BhB,EA6BOxxD,QAAmCyxD,EA7B1C,EA6BiCrzD,QAM5BszD,EAAWR,GAAkBprD,GAAa0rD,IAAmB,EAE7DxG,EAAezyD,sBAAW,sBAC9B,4CAAAoB,EAAA,uFAAwB,GAAf22D,EAAT,EAASA,OAAQ9/D,EAAjB,EAAiBA,GACA,YAAX8/D,EACFc,EAAc5gE,GACXyM,MAAK,SAACyyB,GAAD,OAAar4B,EAAS,eAAKq4B,OAChCryB,OAAM,SAAC/F,GAAD,OAAO25D,EAAU35D,EAAEiG,YACV,OAAX+yD,EACPM,EAAM,CAAEpgE,OACLyM,MAAK,gBAASyyC,EAAT,EAAGl7C,KAAH,OACJ48D,EAAc1hB,EAAGxjC,WAAWjP,MAAK,SAACyyB,GAAD,OAC/Br4B,EAAS,eAAKq4B,UAGjBryB,OAAM,SAAC/F,GAAD,OAAO25D,EAAU35D,EAAEiG,iBACdgD,IAAP/P,IACP6G,EAAS,MACT6sB,EAAS,OAfb,2CAkBA,CAAC0sC,EAAOQ,EAAe/5D,EAAU45D,EAAW/sC,IAG9C,OACE,eAAC5yB,GAAA,EAAKC,IAAN,CAAUK,UAAU,qBAApB,SACE,gBAACJ,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACGnB,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,CAAY8uB,QAASx2B,EAArB,SAA0BJ,IAAsB,OAE3D,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,eAAC4U,GAAA,EAAD,aACEigB,WAAYG,GACZliB,YAAaA,EACbiB,UAAW4rD,EACXt5D,SAAUs5D,EACVz9D,MAAOA,EACP+R,QAASA,EACT3O,SAAU2zD,EACV77C,cAAe,SAAC0pB,GAAD,OAAO/qB,EAAS+qB,IAC/B84B,mBAAiB,EACjBtpD,OAAQA,EACRD,UAAWC,EACXvT,WAAYA,GACRtB,MAGR,gBAAChC,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACa,EAAA,EAAD,CACEE,QAAS,kBAAM++D,GAAc,IAC7Bh/D,QAAQ,QACRmG,MAAM,qBACNN,SAAUtD,EAJZ,SAME,eAAC,KAAD,MAGF,gBAAC6D,GAAA,EAAD,CACEN,KAAMi5D,EACN14D,KAAK,KACLC,OAAQ,kBAAM04D,GAAc,IAC5B3/D,UAAU,SACVggE,kBAAkB,kBALpB,UAOE,eAACj5D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,+BAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAACs2D,GAAD,CACE55D,SAAU,SAAClF,GACT+gE,GAAc,GACdvG,EAAa,CAAEx6D,KAAI8/D,OAAQ,0BAOvC,eAACh/D,GAAA,EAAKC,IAAN,CAAUK,UAAU,iCAApB,SACE,eAACJ,EAAA,EAAD,CAAK+1D,GAAG,OAAR,SACGwJ,EACC,eAACz+D,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,uBACVgH,KAAK,KACLpG,QAAS,WACPi/D,KALJ,8BAUE,cAQhB,SAASN,GAAT,GAOI,IAAD,EANDh6C,EAMC,EANDA,IACOwQ,EAKN,EALD1zB,MACAg9D,EAIC,EAJDA,UACAX,EAGC,EAHDA,OACAU,EAEC,EAFDA,oBAEC,IADD12B,MAAOu3B,OACN,WACyBl8D,mBAAS,MADlC,mBACM1B,EADN,KACaiwB,EADb,KAEO4/B,EAAgBzjB,GAASptC,SAAzB6wD,YAFP,EAG6BnuD,oBAAS,GAHtC,mBAGMqK,EAHN,KAGeqjC,EAHf,KAKKguB,EAAc94D,uBAClB,SAAC/H,GAA8B,IAA1B8pC,EAAyB,uDAAjBu3B,EAEX,OADAxuB,GAAW,GACJlsB,EAAI,CAAE3mB,GAAIA,EAAI8pC,UAClBr9B,KADI,uCACC,iCAAAtD,EAAA,yDAASnF,EAAT,EAASA,MACT8O,sBAAY9O,GADZ,gBAEF0vB,EAAS,CACP9zB,MAAM,GAAD,OAAKI,GACVkI,MAAM,GAAD,OAAKlI,GACVyD,MAAO,CAAEzD,GAAIA,EAAI8/D,YALjB,6BASA,UAAA97D,EAAKy6B,iBAAL,eAAgBpgB,QAAS,GATzB,qBAUI,WAVJ,wCAWUi1C,EAAY,CAChBtzD,GAAIgE,EAAKy6B,UAAU,GAAG3vB,YAAc9K,EAAKy6B,UAAU,GAAGz+B,GACtD8pC,OAAO,IACNr9B,MAAK,qBAAGzI,KAA8BtE,QAd7C,+BAQIijC,EARJ,KAeFjP,EAAS,CACP9zB,MAAM,GAAD,OAAKoE,EAAKhE,GAAV,aAAiB2iC,EAAjB,YAA6B3+B,EAAK+8C,UACvC74C,MAAM,GAAD,OAAKlE,EAAKhE,IACfg3B,KAAK,GAAD,OAAK2L,EAAL,YAAiB3+B,EAAK+8C,UAC1Bt9C,MAAO,CAAEzD,GAAIgE,EAAKhE,GAAI8/D,YAEnBU,GAAkD,YAA3Bx8D,EAAKo7C,kBArB/B,uBAsBM,IAAIpyC,MAAJ,UAAahN,EAAb,+BAtBN,iCAwBKgE,GAxBL,4CADD,uDA4BJ+sB,SAAQ,kBAAM8hB,GAAW,QAE9B,CAACygB,EAAa3sC,EAAKm5C,EAAQuB,EAAcb,IAGrCc,IAAqBnqC,GAAgBA,KAAY,OAAK1zB,QAAL,IAAKA,GAAL,UAAKA,EAAOA,aAAZ,aAAK,EAAczD,IAM1E,OALA8b,qBAAU,WACJwlD,GACFT,EAAY1pC,GAActqB,OAAM,SAAC/F,GAAD,OAAO25D,EAAU35D,EAAEiG,cACpD,CAACoqB,EAAc0pC,EAAaS,EAAkBb,IAE1C,CAAEI,cAAap9D,QAAOiwB,WAAUlkB,WAGzC2wD,GAAcQ,SAAWA,GACVR,U,8FC9Mf,WAA+B3qD,GAA/B,eAAArM,EAAA,6DACQK,EADR,2BAEOgM,GAFP,IAGInJ,QAAS,iBAHb,SAKewB,IAAM7B,KAAKxC,GAL1B,oF,sBA4DA,SAAS+3D,GAAT,GAAuD,IAApBriC,EAAmB,EAAnBA,QAAS72B,EAAU,EAAVA,OACpC6R,EAAQvF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKsF,SADI,EAQhD6/C,aAAS,CACXx1D,cAAe,CAAEpC,GAAI+X,EAAOsnD,YAAa,MANzCC,EAHkD,EAGlDA,aACA9K,EAJkD,EAIlDA,SACAuD,EALkD,EAKlDA,QACAzhD,EANkD,EAMlDA,MACaZ,EAPqC,EAOlDy8C,UAAaz8C,OAKTsF,EAAS1E,EAAM,MACfipD,EAAQjpD,EAAM,eAEdkpD,EAAUz+D,mBAAQ,WAAO,IAAD,EACxByL,EAAQ,GAGZ,OAFW,OAAPuwB,QAAO,IAAPA,OAAA,EAAAA,EAASn/B,QAAuC,OAAvB,OAAPm/B,QAAO,IAAPA,GAAA,UAAAA,EAASn/B,aAAT,eAAgBmyB,OAAO,KAC3CvjB,EAAMmP,KAAK,CAAEle,MAAO,QAASI,GAAIk/B,EAAQn/B,QACpC4O,IACN,CAACuwB,IApBgD,EAsBlB/5B,oBAAS,GAtBS,mBAsB7Cy8D,EAtB6C,KAsBlCC,EAtBkC,KAwBpD,OACE,gBAAC/gE,GAAA,EAAD,WACE,eAAC,KAAD,CACEpB,KAAK,KACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAAC,KAAKqW,YAAN,CACEtd,MAAM,KACNyU,YAAY,gBACZ5Q,MAAOA,EAAMib,MAAM,KACnB7X,SAAU,SAACk0D,GAAD,OAAUl0D,EAASk0D,EAAK9zC,KAAK,OACvCrP,UAAWC,EAAO1V,GAClB0V,OAAQA,EAAO1V,IAAM,WACrBwM,MAAOgzD,OAIb,eAAC,KAAD,CACEjiE,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAACowD,GAAD,CACE3tD,KAAK,WACL7H,GAAG,WACH7B,MAAM,QACN6D,MAAOA,EACPyzD,cAAe,SAACpwD,GAAD,OAAOD,EAASC,EAAEC,OAAOtD,aAK9C,eAAC3C,GAAA,EAAKO,MAAN,CACErB,GAAG,cACH+hE,QAASH,EACThiE,MAAM,0BACNiH,SAAU,SAACC,GAAD,OAAO+6D,EAAa/6D,EAAEC,OAAOg7D,YAGzC,gBAAC11B,GAAA,EAAD,CAAajrC,UAAU,OAAOE,MAAO,CAAEC,SAAU,SAAjD,UACGqgE,EACC,eAAC5kD,GAAA,EAAD,CACEg6C,OAAK,EACLv1D,GAAIK,IACJoY,MAAOiD,EACPmV,QAAO,yBAAa4M,QAAb,IAAaA,OAAb,EAAaA,EAASl/B,GAAtB,oBAA6Bk/B,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAS6hB,UAC7CxuB,KAAMmvC,EACNM,MAAM,EACNhgE,QAASqG,EAPX,2BAYA,eAACvG,EAAA,EAAD,CACEE,QAASy/D,GAAa,SAACz9D,GACrBmN,IAAM6lB,KAAK,mBAAqBkI,EAAQl/B,GAAK,OAC7CqI,I,4CACA45D,CAAgB,aAAEjiE,GAAIk/B,EAAQl/B,IAAOgE,IAAQyI,MAAK,kBAChD0E,IAAM6lB,KAAK,WAAakI,EAAQl/B,GAAK,gBAGzCg3D,OAAK,EARP,kCAaF,eAACl1D,EAAA,EAAD,CAAQC,QAAQ,SAASC,QAASqG,EAAlC,uBAIAu5D,EAWE,KAVF,uCACE,eAAC9gE,GAAA,EAAKO,MAAN,aACEzB,MAAM,uBACF+2D,EAAS,wBAEf,eAAC71D,GAAA,EAAKO,MAAN,aACEzB,MAAM,wBACF+2D,EAAS,uB,IC9KGuL,GAAenjE,aAAkB,CAC3DC,OAAQ4+B,GAAW5+B,OACnBE,QAAS0+B,GAAW1+B,QACpB2wB,QAAS,SAAC7vB,GACR,IAAM8uC,EAAShd,aAAW9xB,GAC1B,OAAkB,IAAX8uC,OAAe/+B,EAAY++B,KALvB1vC,YCAf,IAae+iE,GAbD,CAEZ7/D,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBE,OAAQw/D,GAERpgE,OCTa,YAAuD,IAAhC2B,EAA+B,EAA/BA,MAAOoD,EAAwB,EAAxBA,SAAwB,IAAdjH,aAAc,MAAN,GAAM,EACnE,OACE,eAACkC,EAAA,EAAD,CACEC,QAAQ,QACRmG,MAAOzE,EAAK,mBAAe7D,GAAf,gBAAkCA,GAC9CoC,QAAS,WACP6E,GAAUpD,IAJd,SAOGA,EAAQ,eAAC,KAAD,IAAgB,eAAC,KAAD,QCXhB,SAAS2+D,GAAgBv5D,GACtC,IAAMvC,EAAS+7D,eAAc/7D,OACvB7C,EAAQ,IAAI6+D,gBAAgBh8D,GAAQqgB,IAAI9d,GAC9C,cAAOpF,QAAP,IAAOA,OAAP,EAAOA,EAAOkvD,WCoGhB,SAAS4P,GAAT,GAA0E,IAA/CC,EAA8C,EAA9CA,OAAkBC,EAA4B,EAAtC5hB,SAAyBvrC,EAAa,EAAbA,UAAa,EAMnE1U,eAJF8yB,EAFqE,EAErEA,SACAjb,EAHqE,EAGrEA,MACA9X,EAJqE,EAIrEA,WACgB2D,EALqD,EAKrEqT,aAAgBrT,WALqD,EAQ7CmU,EAAM,CAAC,WAAY,QAAS,WARiB,mBAQhEooC,EARgE,KAQtD9gD,EARsD,KAUjE2iE,EAAiB36D,uBACrB,SAACtE,EAAOk/D,GACNjvC,EAAS,WAAYivC,EAAW,CAC9BlR,gBAAgB,EAChBC,aAAa,IAEXiR,IAAcl/D,GAAuB,OAAdk/D,IACA,OAAhB,OAAL5iE,QAAK,IAALA,OAAA,EAAAA,EAAOmyB,OAAO,KAAYwB,EAAS,QAAS,IAChD8uC,EAAOG,MAGX,CAAC5iE,EAAOyiE,EAAQ9uC,IAUlB,OAPA5X,qBAAU,YACHxX,GAAcm+D,GAAiBA,GAClCC,EAAe7hB,EAAU4hB,KAG1B,CAACn+D,EAAYm+D,IAGd,eAACzhE,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,eAAC2hE,GAAD,CACEljE,KAAK,WACLmH,SAAU,SAAC87D,GACTD,EAAe7hB,EAAU8hB,GACrB9hB,IAAa8hB,GAA2B,OAAdA,GAC5BhiE,KAGJiX,WAAW,EACXtT,WAAYA,EACZgR,UAAWA,MAMnB,SAASutD,GAAT,GAA6E,IAA/CjP,EAA8C,EAA9CA,OAAQvrD,EAAsC,EAAtCA,OAAQiN,EAA8B,EAA9BA,UAAWwtD,EAAmB,EAAnBA,gBAAmB,EAMtEliE,eAJF6X,EAFwE,EAExEA,MACAhG,EAHwE,EAGxEA,MACAlO,EAJwE,EAIxEA,cACgBD,EALwD,EAKxEqT,aAAgBrT,WALwD,EAQ/CmU,EAAM,CAAC,WAAY,QAAS,WARmB,mBAQnEooC,EARmE,KAQzDjB,EARyD,KAUpEmjB,EAAa,WACjBtwD,IACApK,KAGF,OACE,gBAACF,GAAA,EAAD,CAAON,KAAM+rD,EAAQvrD,OAAQ06D,EAAY36D,KAAK,KAA9C,UACE,eAACD,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,6BAEF,gBAACJ,GAAA,EAAMK,KAAP,WACE,eAACw6D,GAAD,CACE36D,OAAQ06D,EACRztD,UAAWA,EACXhR,WAAYA,IAEbw+D,EACC,eAACA,EAAD,CACEjiB,SAAUA,EACV3hB,QAAO,2BAAO36B,GAAP,IAAsBs8C,WAAUjB,aAEvC,WAMZ,SAASgjB,GAAT,GAAuC,IAAnBljE,EAAkB,EAAlBA,KAASsD,EAAS,2BAIhCwU,aAAc,CAAE9X,SAFlB+X,EAFkC,EAElCA,MACc3K,EAHoB,EAGlC4K,WAAc5K,MAGhB,OACE,eAAC,GAAOtL,OAAR,yBACExB,GAAG,aACCyX,GAFN,IAGEpD,YAAY,YACZuD,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,SACX/J,IAKV,SAASggE,GAAT,GAAwD,IAAlC1tD,EAAiC,EAAjCA,UAAWhR,EAAsB,EAAtBA,WAAY+D,EAAU,EAAVA,OAAU,EAIjDzH,eAFFD,EAFmD,EAEnDA,WAFmD,IAGnD2zD,UAAasC,EAHsC,EAGtCA,aAAc3gC,EAHwB,EAGxBA,QAASpe,EAHe,EAGfA,OAKtC,OAFAhX,eAGE,gBAACC,GAAA,EAAD,WACE,eAAC8hE,GAAD,CACEljE,KAAK,WACLE,MAAM,SACN0V,UAAWA,EACXhR,WAAYA,IAEd,eAACytD,GAAD,IACA,eAAC,KAAWvwD,OAAZ,CAAmB9B,KAAK,SAASE,MAAM,OAAO6B,GAAIG,KAAKJ,SACvD,eAAC,KAAW83C,SAAZ,CACE55C,KAAK,WACLE,MAAM,YACN25C,QAAS,EACTllC,YAAY,iBAEd,gBAACvT,GAAA,EAAKC,IAAN,CAAUK,UAAU,0BAApB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEE,QAAS,YACS,IAAZi0B,GAAmB7rB,QAAQC,IAAI,kBAAmBwN,GACtDlX,KAEFiH,SAAUgvD,GAAgBtyD,EAL5B,kBASA,eAACxC,EAAA,EAAD,CACEC,QAAQ,SACRC,QAASqG,EACTT,SAAUgvD,GAAgBtyD,EAH5B,yBASJ,eAACtD,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CAAWG,UAAU,wBAO/B,SAAS6hE,GAAT,GAAiD,IAApB/jC,EAAmB,EAAnBA,QAASy6B,EAAU,EAAVA,OAC9BjlD,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACzCzP,EAAM2a,iBAAO,MAF2B,EAGtBza,oBAAS,GAHa,mBAGvC0C,EAHuC,KAGjCC,EAHiC,OAIJ3C,oBAAS,GAJL,mBAIvC+9D,EAJuC,KAIxBC,EAJwB,KAMxCC,EAAWf,eAMjB,OAJAvmD,qBAAU,WACRqnD,GAAiB,KAChB,CAACC,IAGF,uCACE,eAACthE,EAAA,EAAD,CACEmD,IAAKA,EACLjD,QAAS,kBAAM8F,GAAQ,IACvB/F,QAAQ,QACRmG,MAAM,UAJR,SAME,eAAC,KAAD,MAGF,eAACkY,GAAA,EAAD,CACElY,MAAO,kBACPnB,OAAM,OAAE9B,QAAF,IAAEA,OAAF,EAAEA,EAAK4K,QACbhI,KAAMA,EACNQ,OAAQ,kBAAMP,GAAQ,IACtBwY,UAAU,SALZ,SAOE,gBAAC+iD,GAAA,EAAD,CAAWrhE,QAAS,kBAAM8F,GAAQ,IAAlC,UACE,eAACu7D,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAM23D,EAAO,CAAE55D,MAAO2U,KAAtD,0BAGA,eAAC2uD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAMmhE,GAAiB,IAAvD,4BAKJ,eAACG,GAAD,CACEz7D,KAAMq7D,EACN76D,OAAQ,kBAAM86D,GAAiB,IAC/BjkC,QAASA,OAMjB,SAASokC,GAAT,GAAgE,IAA/Bz7D,EAA8B,EAA9BA,KAAMQ,EAAwB,EAAxBA,OAAwB,IAAhB62B,eAAgB,MAAN,GAAM,EAC7D,OACE,gBAAC/2B,GAAA,EAAD,CAAOC,KAAK,KAAKP,KAAMA,EAAMQ,OAAQA,EAAQk7D,SAAS,SAAtD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,oBAAhB,2BAEF,eAACmI,GAAA,EAAMK,KAAP,UACE,eAACizD,GAAD,CACE5iD,MAAOxQ,EACP62B,QAAO,2BACFA,GADE,IAELl/B,QAAI+P,EACJ8/C,gBAAY9/C,EACZ8wC,cAAU9wC,EACVqvC,uBAAmBrvC,W,ICzThByzD,GARsBzkE,aAAkB,CACrDC,OAAQyhD,GAAazhD,OACrBE,QAAS,CACP0O,QAAS6yC,GAAavhD,QAAQ0O,QAC9B6E,MAAOguC,GAAavhD,QAAQuT,SAJxBrT,YC6DOqkE,GArCC,CAEdnhE,IAAKm+C,GAAan+C,IAElBpD,QAASuhD,GAAavhD,QACtBsD,UAAWi+C,GAAazhD,OAAOwD,UAE/BE,OAAQ8gE,GACR/gE,OAAQ04D,GACRnuB,UAAWwxB,GACXuB,cAAeA,GAEf2D,aAAchjB,GACdl8C,OAAQkxD,GACRiO,qBAAsB/T,GAEtBh3C,IAAK6iD,GACLt3D,OAAQoyD,GACRqN,SlDrCa,YAKX,IAJF1kC,EAIC,EAJDA,QAIC,IAHD5pB,iBAGC,SAFD0c,EAEC,EAFDA,OACAljB,EACC,EADDA,WAEM+0D,EAAsBn+D,IAAE6E,QAAF,OAAU20B,QAAV,IAAUA,OAAV,EAAUA,EAAST,YAAcnpB,EACvDwuD,EAAYD,EACdn+D,IAAEmiD,MAAM,EAAGniD,IAAEq+D,YADoB,OAEjC7kC,QAFiC,IAEjCA,OAFiC,EAEjCA,EAAST,UAAUl7B,QACjB,SAACod,GAAD,OAAQ7R,GAAcA,IAAe6R,EAAE7R,cAG7C,OACE,qCACGpJ,IAAEa,IAAIu9D,GAAW,SAACnjD,EAAG7D,GAAJ,OAChB,gBAACpD,GAAA,EAAD,CAAO3X,QAAQ,UAAf,UACE,gBAAChB,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACF,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,OAAD,CACEkB,GAAE,4BAAgBwe,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAG7R,YACrB1N,UAAU,aACV4iE,UAAW,EAHb,SAKE,eAAC,GAASplD,KAAV,CAAe5e,GAAE,OAAE2gB,QAAF,IAAEA,OAAF,EAAEA,EAAG7R,iBAG1B,eAAC9N,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,GAASiuC,YAAV,CACEuO,UAAS,OAAE98B,QAAF,IAAEA,OAAF,EAAEA,EAAG88B,UACdz9C,GAAE,OAAE2gB,QAAF,IAAEA,OAAF,EAAEA,EAAG7R,WACPwG,UAAWuuD,EACX7xC,OAAQA,EACRrW,QAAM,WAKd,eAAC3a,EAAA,EAAD,CAAKC,GAAG,OAAR,SACmB,MAAf,OAAD0f,QAAC,IAADA,OAAA,EAAAA,EAAGk0C,WAAoBnvD,IAAEu+D,MAAF,OAAQtjD,QAAR,IAAQA,OAAR,EAAQA,EAAGk0C,UAI/B,KAHF,eAAC7zD,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,gCAAO,OAAS0f,EAAEk0C,eAIxB,eAACtE,GAAD,CAAgBvwD,GAAE,OAAE2gB,QAAF,IAAEA,OAAF,EAAEA,EAAG7R,gBAEzB,eAAC/N,EAAA,EAAD,MAjC4B,mBAAqB+b,SkDsBzDna,MAAO6vD,GACPhxD,OAAQ2+D,GACR+D,OAAQpF,GACR76D,KAAMi3D,GACNiJ,aFpBa,YAOX,IANFjlC,EAMC,EANDA,QACAy6B,EAKC,EALDA,OACArkD,EAIC,EAJDA,UACAhR,EAGC,EAHDA,WACA+7C,EAEC,EAFDA,YAEC,IADDyiB,uBACC,MADiB,KACjB,EACKM,EAAWf,eACX9T,EAAUC,eAFf,EAG+BrpD,mBAASi9D,GAAgB,WAHxD,mBAGMvhB,EAHN,KAGgBujB,EAHhB,OAIuCj/D,oBAAS,GAJhD,mBAIMk/D,EAJN,KAIoBC,EAJpB,KAKKC,EAAU,WACdhW,EAAQzwC,KAAKslD,EAAShhE,UACtBkiE,GAAgB,IAGlB,OACE,gBAACxjE,GAAA,EAAKC,IAAN,WACE,eAAC,KAAD,CACEsD,SAAU,SAAC66B,GAAD,OAAay6B,EAAOz6B,GAASzyB,KAAK83D,IAC5ChgE,cAAe26B,EACf16B,OAAQ,CAAEA,OAAQkxD,IAClBpxD,WAAYgR,GAAahR,EAJ3B,SAME,eAACi+D,GAAD,CACEC,OAAQ,SAACn6B,GACPi8B,GAAgB,GAChBF,EAAY/7B,IAEdwY,SAAUA,EACVvrC,UAAWA,MAGf,gBAACtU,EAAA,EAAD,WACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEE,QAAS,kBAAMsiE,GAAgB,IAC/BviE,QAAQ,QACRmG,MAAM,eAHR,SAKE,eAAC,KAAD,MAEF,eAAC+6D,GAAD,CAAmB/jC,QAASA,EAASy6B,OAAQA,IAC7C,eAAC,GAAM73D,OAAP,CACElC,MAAM,UACN6D,MAAK,OAAEy7B,QAAF,IAAEA,OAAF,EAAEA,EAASohB,WAChBz5C,SAAU,SAACsO,GAAD,OAAOkrC,EAAY,CAAEC,WAAYnrC,UAG/C,eAAC,KAAD,CACE9Q,SAAU,SAAC66B,GAAD,OACRy6B,EAAOz6B,GAASzyB,MAAK,SAACjG,GACpB+9D,IACAH,OAAYr0D,OAGhBxL,cAAa,2BAAO26B,GAAa2hB,GAAY,CAAEA,aAC/Cr8C,OAAQ,CAAEA,OAAQkxD,IAClBpxD,WAAYgR,GAAahR,EACzBI,aAAW,EACX8/D,kBAAgB,EAXlB,SAaE,eAAC3B,GAAD,CACEjP,OAAQyQ,EACRh8D,OAAQk8D,EACRjvD,UAAWA,EACXwtD,gBAAiBA,aE9C3B2B,YP3Ba,YAA0C,IAAZvlC,EAAW,EAAXA,QAAW,EAC9B/5B,oBAAS,GADqB,mBAC/C0C,EAD+C,KACzCC,EADyC,OAEhB3C,oBAAS,GAFO,mBAE/CivD,EAF+C,KAElCC,EAFkC,KAGhDpvD,EAAM2a,iBAAO,MAEnB,OACE,uCACE,gBAAC9d,EAAA,EAAD,CAAQmD,IAAKA,EAAKlD,QAAQ,QAAQC,QAAS,kBAAM8F,GAAQ,IAAzD,UACE,eAAC,KAAD,IADF,YAGA,eAACsY,GAAA,EAAD,CACElY,MACE,uCACE,eAAC,KAAD,IADF,oBAIFnB,OAAM,OAAE9B,QAAF,IAAEA,OAAF,EAAEA,EAAK4K,QACbhI,KAAMA,EACNQ,OAAQ,kBAAMP,GAAQ,IACtBwY,UAAU,MATZ,SAWE,gBAAC+iD,GAAA,EAAD,CAAWrhE,QAAS,kBAAM8F,GAAQ,IAAlC,UACE,gBAACu7D,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAMqyD,GAAe,IAArD,UACE,eAAC,KAAD,IADF,YAGA,eAAC,KAAD,CACEpmC,KAAI,OAAEiR,QAAF,IAAEA,OAAF,EAAEA,EAASl/B,GACf0kE,OAAQ,kBAAMvzD,IAAMiO,QAAQ,qBAF9B,SAIE,gBAACikD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,UACE,eAAC,KAAD,IADF,4BAMN,gBAAChC,GAAA,EAAD,CAAON,KAAMusD,EAAa/rD,OAAQ,kBAAMgsD,GAAe,IAAvD,UACE,eAAClsD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,wCACoBk/B,QADpB,IACoBA,OADpB,EACoBA,EAASl/B,QAG/B,eAACmI,GAAA,EAAMK,KAAP,UACE,eAAC+4D,GAAD,CACEriC,QAASA,EACT72B,OAAQ,kBAAMgsD,GAAe,eOhBvCsQ,QAAS7J,GACTroC,enBpCa,YAMX,IALFyM,EAKC,EALDA,QACAr3B,EAIC,EAJDA,KACAQ,EAGC,EAHDA,OACAsxD,EAEC,EAFDA,OACAC,EACC,EADDA,cAEA,OACE,gBAACzxD,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAAQD,KAAK,KAAxC,UACE,eAACD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,sCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAACoqB,GAAD,CACEsM,QAASA,EACT72B,OAAQA,EACRsxD,OAAQA,EACR9vB,OAAQ3K,EAAQ26B,eAChBD,cAAeA,UmBmBvBgL,OAAQxU,GAERD,SAAU0U,GACVvO,OAAQwO,GACRvS,OAAQwS,GACRnjE,KAAMojE,KACNrV,OAAQsV,GACR5V,eAAgBA,IC1DH,SAAS6V,GAAT,GAA2B,IAAPhmB,EAAM,EAANA,GAC3BmR,GACF,OAAFnR,QAAE,IAAFA,OAAA,EAAAA,EAAIE,oBAA+C,aAAxB,OAAFF,QAAE,IAAFA,OAAA,EAAAA,EAAIE,mBAC/B,OACE,wCACK,OAAFF,QAAE,IAAFA,OAAA,EAAAA,EAAIoR,UACH,eAACvvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,SAAf,SAAyBm9C,EAAGoR,eAG9B,KACHD,EACC,eAACtvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,UAAf,4DAKF,Q,aCjBK,SAASojE,GAAT,GAA2C,IAAft8D,EAAc,EAAdA,IAAKpF,EAAS,EAATA,MAC9C,IAAKoF,EAAK,MAAM,IAAImE,MAAM,eAE1B,IAAMsnD,EAAY3/C,aAAY,SAACpS,GAAD,OAAWA,EAAMgd,IAAIxV,MAAMlB,MACnD2G,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAMgd,IAAIjQ,SAASE,WACpDxF,EAAgB2K,aAAY,SAACpS,GAAD,OAAWA,EAAMgd,IAAIvV,iBAEjDZ,EAAW0O,cAEXstD,EAAa9Q,GAAa7wD,EATuB,EAU7B0B,mBAASigE,GAVoB,mBAUhD7iE,EAVgD,KAUzCiO,EAVyC,KAajD60D,EAAwBt9D,sBAC5B0zB,oBAAS,SAACh4B,GAAD,OAAW2F,EAAS6B,IAAWT,SAAS,CAAE3B,MAAKpF,aAAW,KACnE,CAAC2F,EAAUP,IAGbiT,qBAAU,kBAAMupD,EAAsB9iE,KAAQ,CAACA,EAAO8iE,IAlBC,MAoBzBlgE,mBAAS5C,GApBgB,mBAoBhD+iE,EApBgD,KAoBvCC,EApBuC,KAsBjDC,EAAYz9D,uBAAY,SAACtE,GAAwC,IAAjCgiE,EAAgC,wDACpEj1D,EAAS/M,GACLgiE,GAAqBF,EAAW9hE,KACnC,IAQH,OALAqY,qBAAU,WACR0pD,EAAUJ,GAAY,KAErB,CAACp7D,IAEG,CAAEzH,QAAOiO,SAAUg1D,EAAWh2D,UAAS81D,WC7BjC,SAASI,GAAT,GAOX,IANF50B,EAMC,EANDA,OACA5uC,EAKC,EALDA,SACAyjE,EAIC,EAJDA,aACArkE,EAGC,EAHDA,MACAskE,EAEC,EAFDA,YAEC,IADDtwD,iBACC,WACyBnQ,oBAAS,GADlC,mBACMuoB,EADN,KACam4C,EADb,KAGD,SAASC,EAAYC,GACdrgE,IAAEC,WAAWigE,KAAgBtwD,GACvBuwD,IAAPE,GAGN,OACE,eAAChlE,EAAA,EAAD,CACEilE,aAAc,kBAAMF,GAAY,IAChCG,aAAc,kBAAMH,GAAY,IAFlC,SAIE,gBAAC9kE,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gCACG8vC,EAAQ,IACRpjB,EACC,eAAC5rB,EAAA,EAAD,CACEV,UAAU,aACVgH,KAAK,KACLrG,QAAQ,OACRC,QAAS4jE,EACT5B,UAAW,EALb,kBAUA,UAKR,eAACjjE,EAAA,EAAD,CAAKkE,IAAK0gE,EAAcrkE,MAAOA,EAA/B,SACE,eAACN,EAAA,EAAD,UAAMkB,WAsGhB,SAASgkE,GAAT,GAA4E,IAA9ClmE,EAA6C,EAA7CA,GAAIyD,EAAyC,EAAzCA,MAAOoE,EAAkC,EAAlCA,KAAMipC,EAA4B,EAA5BA,OAAQzsC,EAAoB,EAApBA,SAAUgE,EAAU,EAAVA,OAAU,EAMrE88D,GAAiB,CACnBt8D,IAAK7I,EACLyD,MAAO,OANA0iE,EAFgE,EAEvE5jE,MACS6jE,EAH8D,EAGvEd,QACUe,EAJ6D,EAIvE71D,SACS81D,EAL8D,EAKvE92D,QAMI+2D,EAA2B,OAAfJ,EAAsB1iE,GAAS,GAAK0iE,EAEhD1E,EAAe,WACnBp9D,EAASkiE,GAAW95D,MAAK,kBAAM45D,EAAc,MAAM,OAG/CG,EAAuB,OAAfL,IAA4B,OAAL1iE,QAAK,IAALA,OAAA,EAAAA,EAAO2qB,WAAP,OAAkB+3C,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAY/3C,QAC7Dq4C,EAAW,UAAM31B,GAAN,OAAe01B,EAAQ,IAAM,IAM9C,OAJA1qD,qBAAU,WACH0qD,GAAOH,EAAc,MAAM,KAC/B,CAACG,EAAOH,IAGT,uCACE,eAAC,KAAD,CACEllB,KAAMqlB,GAASL,IAAeC,EAC9Br5D,QAAS,WAMP,OALA3C,QAAQC,IAAI,CACVq8D,UAAWF,EACXG,QAASljE,EACTmjE,MAAOT,IAEH,UAAN,OAAiBr1B,EAAjB,yDAGJ,gBAAC3oC,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAAQD,KAAK,KAAxC,UACE,eAACD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,gBAACH,GAAA,EAAMI,MAAP,mBAAmBk+D,OAErB,eAACt+D,GAAA,EAAMK,KAAP,UACE,gBAAC1H,GAAA,EAAD,WACE,eAACA,GAAA,EAAKY,MAAN,UACE,eAAC,KAAD,CACEhC,KAAK,OACL4J,KAAK,OACL+K,YAAay8B,EAAS,MACtBrvC,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GACTu/D,EAAcv/D,EAAEC,OAAOtD,QAEzBA,MAAO8iE,EACPrlE,SAAUolE,MAGd,eAACO,GAAD,CAAyBpF,aAAcA,IACvC,gBAACp1B,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASy/D,EAAnC,kBAGA,eAAC3/D,EAAA,EAAD,CAAQC,QAAQ,YAAYC,QAASqG,EAArC,oBAGA,eAACvG,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,WACPqkE,EAAc,OAHlB,iCAgBd,SAASQ,GAAT,GAAoD,IAAjBpF,EAAgB,EAAhBA,aAMjC,OALAnJ,aAAY,CACV,aAAc,WACZmJ,OAGG,KA1FTiE,GAAYx/D,KA7FZ,YAQI,IAPFlG,EAOC,EAPDA,GACA8wC,EAMC,EANDA,OACA7iB,EAKC,EALDA,KAKC,IAJD3Y,iBAIC,aAHDwxD,iBAGC,MAHW,EAGX,MAFDxiE,kBAEC,SADDyiE,EACC,EADDA,OAEMC,EAAWpnD,iBAAO,MADvB,EAE+Bza,oBAAS,GAFxC,mBAEM8hE,EAFN,KAEgBC,EAFhB,OAG6B/hE,oBAAS,GAHtC,mBAGMgiE,EAHN,KAGeC,EAHf,OAIiCjiE,oBAAS,GAJ1C,mBAIMkiE,EAJN,KAIiBC,EAJjB,KAMKzD,EAAsBn+D,IAAEoN,YAAYmb,IAAS3Y,EAE7CiyD,EAAiBx/D,uBAAY,WACjC,GAAI++D,IAAcjD,IAAd,OAAqCmD,QAArC,IAAqCA,OAArC,EAAqCA,EAAUn3D,SAAS,CAC1D,IAAM/I,EAAIkgE,EAASn3D,SACf/I,EAAE0gE,aAAe1gE,EAAE2gE,cAAgB3gE,EAAE4gE,YAAc5gE,EAAE6gE,cACvDT,GAAY,MAEf,CAACJ,EAAWjD,IAEf/nD,qBAAU,WACRqf,OAAOlB,iBAAiB,SAAUstC,KACjC,CAACA,IAEJzrD,qBAAU,WACRyrD,MACC,CAACt5C,EAAMs5C,IAEV,IAAMK,EAAiB,SAACv/B,GAClB4+B,GACFG,EAAW/+B,IAITu9B,EACJlgE,IAAEC,WAAWohE,KAAYziE,EAAa,kBAAMgjE,GAAa,IAAQ,KAE/DhmE,EAAQ,IACP6lE,GAAWL,IACdxlE,EAAQ,CAAEumE,OAAO,GAAD,OAAKf,EAAY,EAAjB,OAAyBG,SAAU,WAGrD,IAAIa,EAAcpiE,IAAE0oB,KAAKH,GACrB85C,EAAS,CAAEp8B,WAAY,YAK3B,OAJKw7B,IAAWF,GAAapD,IAC3BkE,EAAS,CAAEF,OAAO,GAAD,OAAKf,EAAY,EAAjB,OAAyBG,SAAU,WAIpD,gBAACvB,GAAD,CACE50B,OAAQA,EACR60B,aAAcqB,EACd1lE,MAAK,2BAAOA,GAAP,IAAcqqC,WAAY,aAC/Bi6B,YAAaA,EACbtwD,UAAWuuD,EALb,UAOE,oBACEziE,UAAU,kBACVY,QAAS,kBAAM4lE,GAAe,IAC9BtmE,MAAOymE,EAHT,SAKIlE,EAAoC,eAAC,KAAD,CAAUmE,MAAO,KAA/BF,IAEzBb,EACC,eAACnlE,EAAA,EAAD,CACEC,QAAQ,OACRC,QAAS,kBAAM4lE,GAAgBT,IAC/Bv/D,SAAUi8D,EACVziE,UAAU,MACVgH,KAAK,KALP,SAOG++D,EAAU,OAAS,aAEpB,KACJ,eAACjB,GAAD,CACElmE,GAAIA,EACJyD,MAAOwqB,EACPpmB,KAAMw/D,EACNv2B,OAAQA,EACRzsC,SAAU,SAACZ,GAET,OADA6jE,GAAa,GACNP,EAAOtjE,IAEhB4E,OAAQ,kBAAMi/D,GAAa,UClJnC,IAAMW,GAAuB,CAC3BC,EAAG,CACDloE,GAAI,IACJyW,YAAa,8BAEf0xD,EAAG,CACDnoE,GAAI,IACJyW,YAAa,yBAEf2xD,EAAG,CACDpoE,GAAI,IACJyW,YAAa,qCAEfwiC,EAAG,CACDj5C,GAAI,IACJyW,YAAa,sBAEf4xD,EAAG,CACDroE,GAAI,IACJyW,YAAa,wBAIV,SAAS6xD,GAAT,GAAsC,IAAPtoE,EAAM,EAANA,GACpC,OAAOioE,GAAqBjoE,GAGvB,SAASuoE,KAId,MAAO,CAAEC,oBAHmB90D,OAAOC,QAAQs0D,IAAsB1hE,KAC/D,2CCvBJ,IAAMkiE,GAAyB1jE,IAAMC,YACnC,WAOEC,GACI,IANFxB,EAMC,EANDA,MAMC,IALD5B,eAKC,aAJDwS,mBAIC,MAJa,iCAIb,EAHErR,EAGF,kDAGG6R,EAF0B0zD,KAAxBC,oBAE6BjiE,KAAI,SAACyO,GACxC,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEhV,OAGtCiV,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLxB,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OAMZylE,GAAuBhzD,YAAc,yBACtBgzD,IC/BAC,GATU,CAEvBhmE,OAAQ6lE,GACR9lE,OAAQ6lE,GAER9mE,ODmCainE,GClCbhhE,YCNa,YAA8C,IACnDkhE,EAAWL,GAAoB,CAAEtoE,GADiB,EAANA,KAC5C2oE,OACR,OAAKA,EAEE,qCAAGA,EAAOlyD,cAFG,O,GCFpB1X,aAAkB,CAChBC,OAAQslC,GAAgBtlC,OACxBE,QAASolC,GAAgBplC,UAHD0pE,G,GAAbxpE,YAAyCypE,G,GAAXvpE,UCK9BwpE,GALejzD,aAAkB,CAC9CnW,KAAM,eACNJ,UAAWupE,KCGEE,GALU1tD,aAAa,CACpC3b,KAAM,eACNN,YAAawpE,KCGAI,GALex7D,aAAkB,CAC9C9N,KAAM,eACNN,YAAawpE,KCeAK,GAdI,CAEjB3mE,IAAKgiC,GAAgBhiC,IAErBpD,QAASolC,GAAgBplC,QACzBsD,UAAW8hC,GAAgBtlC,OAAOwD,UAElCE,OAAQkmE,GACRnmE,OAAQomE,GAERrnE,OAAQunE,GACRthE,YAAaqhE,GACbrgE,YAAaugE,I,GCdbjqE,aAAkB,CAChBC,OAAQ+pC,GAAa/pC,OACrBE,QAAS6pC,GAAa7pC,UAHEq7C,G,GAAbn7C,YAAoCo7C,G,GAAXl7C,UCKzBm7C,GALW5kC,aAAkB,CAC1CnW,KAAM,WACNJ,UAAWk7C,KCEPnH,GAAeC,aAAa,CAChCC,YAAY,EACZC,eAAe,EACf01B,UAAW,MACXl4D,UAAW,YAAe,IAAZhN,EAAW,EAAXA,KACZ,MAAM,GAAN,OAAUA,EAAKpE,MAAf,YAAwBoE,EAAKmlE,mBAE/B/6C,MAAM,IAGFssB,GAAe31C,IAAMC,YACzB,WAEEC,GACI,IAFFxB,EAEC,EAFDA,MAEC,IAFM5B,eAEN,aAFuBwS,mBAEvB,MAFqC,sBAErC,EAF+DrR,EAE/D,oDAC0Bu3C,KAArBzR,EADL,EACKA,QAASt5B,EADd,EACcA,QAEb45D,EAAe,GACbv0D,EAAWi0B,EACdvlC,QAAO,SAAC8kC,GAAD,OAAsB,IAAfA,EAAEnoC,UAAsBmoC,EAAEroC,KAAOyD,KAC/C8C,KAAI,SAAC8iE,GAMJ,OALKD,EAAaC,EAAEC,iBAClBF,EAAaC,EAAEC,eAAiB,CAC9BtpE,GAAIqpE,EAAEC,cACN1pE,MAAOypE,EAAEE,yBAEN,CACL3pE,MAAOypE,EAAE5yD,YACThT,MAAO4lE,EAAErpE,GACTyF,QAAS4jE,EAAEC,cACXH,iBAAkBE,EAAEE,2BAItBt0D,EAAc,KACdxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAG7C,IAAM+a,EAAiBtb,mBACrB,kBACEwC,IAAEoP,OACApB,OAAOC,QAAQjO,IAAE+Y,QAAQ/Y,IAAEoP,OAAOD,EAAU,SAAU,YAAYtO,KAChE,YAAmB,IAAD,mBAAhBsC,EAAgB,KAAXpF,EAAW,KAChB,MAAO,CAAE7D,MAAOwpE,EAAavgE,GAAKjJ,MAAO4V,QAAS/R,MAGtD,WAGJ,CAACqlC,IAGH,OACE,eAAC3yB,GAAA,EAAD,aAEElR,IAAKA,EACLqQ,UAAW9F,EACX/L,MAAOwR,EACPO,QAASgJ,EACT3c,QAASA,EACTwS,YAAaA,EACbg/B,aAAcA,IACVrwC,OAKZ03C,GAAajlC,YAAc,eACZilC,UCtEAC,GANWntC,aAAkB,CAC1C9N,KAAM,WACNN,YAAam7C,GACbh3C,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1Cm3C,GAdA,CAEbt4C,IAAKymC,GAAazmC,IAElBpD,QAAS6pC,GAAa7pC,QACtBsD,UAAWumC,GAAa/pC,OAAOwD,UAE/BE,OAAQ63C,GACR93C,OAAQ+3C,GAERh5C,OAAQk5C,GACRjzC,YAAagzC,GACbhyC,YAAakyC,I,GCZX57C,aAAkB,CACpBC,OAAQkqC,GAAsBlqC,OAC9BE,QAASgqC,GAAsBhqC,UAJlBsqE,G,GAAbpqE,YACWqqE,G,GAAXnqE,UCGaoqE,GALqB7zD,aAAkB,CACpDnW,KAAM,qBACNJ,UAAWmqE,KCIEE,GANgBtuD,aAAa,CAC1C3b,KAAM,qBACNN,YAAaoqE,GACbjmE,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCHnDmmE,GAA8Bp8D,aAAkB,CACpD9N,KAAM,qBACNN,YAAaoqE,GACbjmE,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1ComE,GAdU,CAEvBvnE,IAAK4mC,GAAsB5mC,IAE3BpD,QAASgqC,GAAsBhqC,QAC/BsD,UAAW0mC,GAAsB1mC,UAEjCE,OAAQ8mE,GACR/mE,OAAQgnE,GAERjoE,OAAQmoE,GACRliE,YAAaiiE,GACbjhE,YDTamhE,IEWA,SAASE,GAAT,GAA4D,IAAxC5qB,EAAuC,EAAvCA,GAAIx+C,EAAmC,EAAnCA,MAAO2D,EAA4B,EAA5BA,SAAU66B,EAAkB,EAAlBA,QAASpyB,EAAS,EAATA,MACzDi9D,GACF,OAAF7qB,QAAE,IAAFA,OAAA,EAAAA,EAAIE,oBAA+C,aAAxB,OAAFF,QAAE,IAAFA,OAAA,EAAAA,EAAIE,mBAC/B,OACE,gBAAC,KAAD,CACE76C,cAAe26C,EACf16C,OAAQ,CAAEA,OAAQs8C,IAClBG,QAAS,CAAE/hB,WACX76B,SAAUA,EACVC,WAAYylE,EACZrlE,aAAW,EANb,UAQGoI,EACC,eAAC/L,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,SAAf,SAAyB+K,QAG3B,KACJ,eAACo4D,GAAD,CAAUhmB,GAAIA,IACd,eAACn+C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACgpE,GAAD,CAAQtpE,MAAOA,WAOzB,SAASspE,GAAT,GAA4B,IAAVtpE,EAAS,EAATA,MAAS,EASrBE,eAPSs+B,EAFY,EAEvB+hB,QAAW/hB,QACXi0B,EAHuB,EAGvBA,WACA16C,EAJuB,EAIvBA,MACA9X,EALuB,EAKvBA,WAC4BspE,EANL,EAMvB1lE,cAAiBmX,UACJk7C,EAPU,EAOvBtC,UAAasC,aACGtyD,EARO,EAQvBqT,aAAgBrT,WARO,EAWWmU,EAAM,CAAC,YAAa,mBAX/B,mBAWlBiD,EAXkB,KAYnBkkC,EAZmB,OAYI,OAAI1gB,QAAJ,IAAIA,OAAJ,EAAIA,EAAS0gB,QAE1C,OACE,gBAAC9+C,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,eAACI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACipE,GAAD,CACExqE,KAAK,YACL4E,WAAY2lE,IAAqBvpE,EACjCyyD,WAAYA,QAIjBz3C,EACC,gBAAC3a,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAG,IAAI31D,UAAU,eAAtB,UACE,eAAC+oE,GAAD,CAAYzqE,KAAK,qBAAqBw/B,QAASA,IAE/C,eAACn+B,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAAC,KAAD,CAAYtB,KAAK,WAAWE,MAAM,aAClC,eAAC,KAAW05C,SAAZ,CACE55C,KAAK,cACLE,MAAM,cACN25C,QAAS,YAKjB,gBAACv4C,EAAA,EAAD,CAAK+1D,GAAG,IAAR,UACE,eAAChF,GAAD,CAAkBrxD,MAAOA,IACzB,eAAC,KAAWc,OAAZ,CACE9B,KAAK,iBACLE,MAAM,gBACN6B,GAAIgiE,GAAQ7hE,KAAKJ,OACjBwY,aAAW,IAEb,eAAC,KAAWxY,OAAZ,CACE9B,KAAK,WACLE,MAAM,SACN6B,GAAIm5C,GAAOp5C,OACXwY,aAAW,IAEb,eAAC,KAAWxY,OAAZ,CACE9B,KAAK,eACLE,MAAM,aACN6B,GAAIwnE,GAAWznE,SAEjB,eAACT,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,gBAACU,EAAA,EAAD,CACEwH,KAAK,SACLlI,UAAWw1D,EAAe,eAAiB,GAC3ChvD,SAAUtD,GAAcsyD,EACxBI,OAAK,EAJP,UAMGt2D,EAAQ,SAAW,OANtB,aAUJ,eAACK,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAAC,KAAWQ,OAAZ,CACE9B,KAAK,qBACLE,MAAM,gBACN6B,GAAIooE,GAAiBroE,SAEX,OAAXo+C,EACC,eAAC,KAAWp+C,OAAZ,CACE9B,KAAK,qBACLE,MAAM,oBACN6B,GAAIinE,GAAiBlnE,OACrBwY,aAAW,IAEX,gBAKV,QAKV,SAASkwD,GAAT,GAAsD,IAAjCxqE,EAAgC,EAAhCA,KAAM4E,EAA0B,EAA1BA,WAAY6uD,EAAc,EAAdA,WAAc,EAI/C37C,aAAc,CAAE9X,SAJ+B,IAEjD+X,MAAS5Q,EAFwC,EAExCA,SAAUpD,EAF8B,EAE9BA,MAAOmyB,EAFuB,EAEvBA,OACZ9oB,EAHmC,EAGjD4K,WAAc5K,MAHmC,EAMH22D,GAAQhhE,OAAOyM,SAAvDosD,EAN2C,EAM3CA,WAAqB8O,EANsB,EAM/B56D,QAEpB,OACE,eAAC1O,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,eAAC,GAAQC,OAAT,CACE5B,MAAM,UACNiH,SAAU,YAAoB,IAAbpD,EAAY,EAAhBzD,GACXs7D,EAAW,CAAEt7D,GAAIyD,EAAOqmC,MAAO,SAAUr9B,MACvC,YAAwB,IAAfyyB,EAAc,EAApBl7B,KACDmvD,GAAW,SAACxyC,GAAD,mBAAC,eAAYA,GAAb,IAAgBue,eAC3Br4B,EAASpD,OAIfA,MAAOA,EACPmyB,OAAQA,EACRtxB,WAAYA,GAAc8lE,EAC1BxyD,UAAW9K,EACX+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfuzD,UAAUh8D,GAAqB,aAOzC,SAAS6lE,GAAT,GAAwC,IAAlBzqE,EAAiB,EAAjBA,KAAMw/B,EAAW,EAAXA,QAAW,EACmB/5B,oBAAS,GAD5B,mBAC9BklE,EAD8B,KACRC,EADQ,OAMjC9yD,aAAc,CAAE9X,SANiB,IAInC+X,MAAShU,EAJ0B,EAI1BA,MAAOoD,EAJmB,EAInBA,SAAa4Q,EAJM,qCAKrB3K,EALqB,EAKnC4K,WAAc5K,MAGExI,EACd1D,eADF+W,aAAgBrT,WAGZm6B,EAAYv7B,mBAChB,yBAAMg8B,QAAN,IAAMA,OAAN,EAAMA,EAAST,UAAUl4B,KAAI,SAACoa,GAAD,OAAOA,EAAE7R,gBACtC,CAACowB,IAGH,OACE,eAACn+B,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAAC0kE,GAAD,CACE50B,OAAM,mBAAcrtC,EAAQ,IAAM,IAClCmiE,YACGthE,OAEGyL,EADA,kBAAMu6D,GAAyBD,IAJvC,UAQGA,EACC,eAACtpE,EAAA,EAAD,CAAKK,UAAU,kCAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC,GAASQ,OAAV,2BACMiW,GADN,IAEEhU,MAAOA,EACPoD,SAAU,SAAC8Z,GAAD,OAAO9Z,EAAS8Z,GAAK,IAC/B/gB,MAAM,oBACNgY,UAAW9K,EACX+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfxJ,OAAQ,SAACod,GAAD,OAAO8d,EAAUxtB,SAAS0P,EAAE3gB,KACpCga,aAAW,SAIf,KACJ,eAACjZ,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQ4iE,SAAT,CAAkB1kC,QAASA,EAASpwB,WAAYrL,eCxM9D,SAASmvB,GAAT,GAA+C,IAAvBssB,EAAsB,EAAtBA,GAAIya,EAAkB,EAAlBA,OAAQtxD,EAAU,EAAVA,OAAU,EAQxC0xD,aAAS,CACXv1D,OAAQ,CAAEA,OAAQs8C,IAClBv8C,cAAe26C,EACf76C,SAAU,SAACkmE,GACT5Q,EAAO4Q,GACPliE,OAXF6xD,EAF0C,EAE1CA,QACAC,EAH0C,EAG1CA,QACAzmC,EAJ0C,EAI1CA,SACAjb,EAL0C,EAK1CA,MACA9X,EAN0C,EAM1CA,WACakX,EAP6B,EAO1Cy8C,UAAaz8C,OAUT4D,EAAOyjC,EAAGl/C,GACV0b,EAAYwjC,EAAGxjC,UAlBuB,EAmBnB+nD,GAAQhhE,OAAO,CAAEzC,GAAI0b,IAAtCwjB,QACcsrC,QApBsB,MAmB1B,GAnB0B,GAoBpCzoB,aAEFA,EAAetpC,EAAM,gBACrBwpC,EAAiBxpC,EAAM,kBACvBopC,EAAmBppC,EAAM,oBACzBqpC,EAAmBrpC,EAAM,oBAzBa,EA6BG+C,aAAY,CACzDxb,GAAIiiD,EACJtmC,OAAiC,IAAzB6Y,OAAOutB,IAAwC,KAAjBA,GAAuBE,EAC7DxmC,KAAMA,IAHSgZ,EA7B2B,EA6BpCjlB,QAA0BoM,EA7BU,EA6BVA,SA+BlC,SAAS4+C,EAAa3zD,GACpB,OAAO,SAACpD,GACNoD,EAASpD,GACT02D,KA5BJr+C,qBAAU,WACH2Y,IACHf,EAAS,eAAgB9X,GACzBu+C,OAED,CAACv+C,EAAU8X,EAAUe,EAAiB0lC,IAEzCr+C,qBAAU,WAEL2Y,GACkB,KAAnBwtB,GACyB,IAAzBztB,OAAOutB,IACU,KAAjBA,GAEAruB,EAAS,eAAgB82C,KAE1B,CACDA,EACAvoB,EACAxtB,EACAstB,EACAruB,EACA9X,IAUF,IAAI++C,EAAc,EACblyC,MAAMs5B,IAAkBt5B,MAAMo5B,KACjC8Y,EAAcj1D,IAAEk1D,SAAS7Y,EAAcF,GAAkBl5B,QAAQ,IAEnE,IAAIkyC,EAAc,EAKlB,OAJKpyC,MAAMs5B,IAAkBt5B,MAAMq5B,KACjC+Y,EAAcn1D,IAAEk1D,SAAS7Y,EAAcD,GAAkBn5B,QAAQ,IAIjE,gBAAC7nB,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,eAACI,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,mBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,YACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOgqC,iBAClBhqC,OAAM,UAAEA,EAAOgqC,wBAAT,aAAE,EAAyB90C,QACjCoqD,gBAAgB,SAKxB,eAACn2D,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,mBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,YACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,EAAa3zD,GACvB+Q,UAAWC,EAAOiqC,iBAClBjqC,OAAM,UAAEA,EAAOiqC,wBAAT,aAAE,EAAyB/0C,QACjCoqD,gBAAgB,YAM1B,gBAACr2D,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,iBACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,KAAKp0B,OAAN,CACE5B,MAAM,cACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,GAAa,SAACrlD,GACtBtO,EAASsO,GACTue,EAAS,eAAgB,MAE3B9b,UAAWC,EAAOoqC,eAClBpqC,OAAM,UAAEA,EAAOoqC,sBAAT,aAAE,EAAuBl1C,QAC/BiN,aAAW,SAKnB,eAAChZ,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,eACLw6D,QAASA,EACT/mB,aAAc,EACdtzB,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEr3D,MAAM,cACN0J,KAAK,SACL7F,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU2zD,GAAa,SAACrlD,GACtBtO,EAASsO,GACTue,EAAS,iBAAkB,OAE7B9b,UAAWC,EAAOkqC,aAClBlqC,OAAM,UAAEA,EAAOkqC,oBAAT,aAAE,EAAqBh1C,QAC7BnF,SAAU6sB,EACV0iC,gBAAgB,YAM1B,gBAACr2D,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAACi2D,GAAD,CAAYr3D,MAAM,WAAW6D,MAAOk3D,EAAa/yD,UAAQ,MAE3D,eAAC5G,EAAA,EAAD,UACE,eAACi2D,GAAD,CAAYr3D,MAAM,WAAW6D,MAAOo3D,EAAajzD,UAAQ,cAKjE,gBAACykC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CAAQwH,KAAK,SAAb,kBACA,eAACxH,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,WACPqG,KAHJ,0BCpLOoiE,OAdf,YAAmC,IAAjBzqE,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACpB,OAAIumB,gBAAMzoB,GAAY,qCAAGA,IACd,IAAPA,EAAiB,KAEnB,eAAC,OAAD,CACEoB,UAAU,aACV2F,OAAO,SACP5E,GAAI,CAAEC,SAAS,QAAD,OAAUpC,IAH1B,SAKGkC,GAAYlC,K,UCPJ,SAAS0qE,GAAT,GAOX,IANFxpD,EAMC,EANDA,KACAuvB,EAKC,EALDA,OAKC,IAJDk6B,eAIC,MAJS,KAIT,EAHDC,EAGC,EAHDA,KAGC,IAFDt1D,iBAEC,aADDsV,qBACC,MADe,GACf,EACG3J,EAAQ,GACZ,GAAIvb,IAAEoN,YAAYoO,IAAyB,IAAhBA,EAAK7C,OAAc,CAC5C,IAAI/I,EAQG,OAAO,KAPZ,IAAK,IAAIqM,EAAI,EAAGA,EAAIiJ,EAAejJ,IACjCV,EAAMnD,KACJ,eAACulD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,SACE,eAAC,KAAD,KAD0B,aAAewX,SAOjDV,EAAQC,EAAK3a,KAAI,SAACE,GAAD,OACf,eAAC,iBAAD,CAAetE,GAAIyoE,EAAOnkE,EAAKkkE,GAA/B,SACE,eAACtH,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,SACE,qCAAGsmC,EAAOlqC,KAAI,SAACkR,GAAD,OAAWhR,EAAKgR,MAAQwP,KAAK,UAF/C,eAAsDxgB,EAAKkkE,GAA3D,SAQJ,OAAO,eAACtH,GAAA,EAAD,UAAYpiD,IC5BrB,SAASuM,GAAT,GAA8D,IAArClC,EAAoC,EAApCA,UAAWhW,EAAyB,EAAzBA,UAAWvD,EAAc,EAAdA,WAC7C,IAAKuZ,EAAW,OAAO,KACvB,IAAM2C,EAAOlc,EAAU,uBAEjBuD,EAAY,MAAQ6b,IAAOpf,GAAY8U,OAAO,oBAEhD,UACJ,OACE,eAAC/kB,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,yBACVY,QAASspB,EAHX,SAKG2C,IAKQ,SAAS48C,GAAT,GAWX,IAVF7mE,EAUC,EAVDA,KACAtE,EASC,EATDA,KACA+wC,EAQC,EARDA,OAQC,IAPDk6B,eAOC,MAPS,KAOT,EANDC,EAMC,EANDA,KACAx/C,EAKC,EALDA,QAKC,IAJD9V,iBAIC,SAHD+V,EAGC,EAHDA,QACAtZ,EAEC,EAFDA,WACAuZ,EACC,EADDA,UAEMw/C,EAAa,oBAAG1pE,UAAU,yBAAb,0BACb2pE,EAAgB,oBAAG3pE,UAAU,yBAAb,wBAEtB,OACE,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,oBAAGI,UAAU,wBAAb,mBAAyC4C,EAAKqa,QAA9C,OACEgN,EAAU,IAAM,GADlB,YAEI3rB,KACJ,eAAC8tB,GAAD,CACElC,UAAWA,EACXhW,UAAWA,EACXvD,WAAYA,SAIlB,eAAChR,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEgqE,WAAYhnE,EAAKqa,OACjBw/B,KAAM,kBAAMzyB,EAAQpnB,IACpBqnB,QAASA,EACT4/C,OAAQF,EACRD,WAAYA,EALd,SAOE,eAACJ,GAAD,CACExpD,KAAMld,EACNysC,OAAQA,EACRk6B,QAASA,EACTC,KAAMA,EACNt1D,UAAWA,eC5DZ,SAAS41D,GAAT,GAAoD,IAA1B3nE,EAAyB,EAAzBA,OAAyB,IAAjBoY,cAAiB,SAE1DwvD,EAAoBhsB,IAFsC,EAG9Bh6C,mBAASgmE,GAHqB,mBAGzDC,EAHyD,KAG9CC,EAH8C,KAK1DjiE,EAAW0O,cAL+C,EAM1BnD,aAAY,SAACpS,GAAD,OAChDmhD,GAAQ1kD,OAAOwD,UAAUmP,eAAepP,EAAOgB,MAPe,mBAMzD6gC,EANyD,KAMpDryB,EANoD,KAMxCC,EANwC,KAS1DxC,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAM6hC,IAAIA,IAAI90B,SAASE,WATE,EAUtCrK,mBAAS,MAV6B,mBAUzD2H,EAVyD,KAUlD4jB,EAVkD,KAY1DO,EAAY1R,IAAI2R,oBAEhB7F,EAAyB,KAAfrZ,GAA+B,OAAVlF,IAAmBpH,IAAE6E,QAAQhH,GAC5D+nE,EAAWlnC,EAAI/lB,OAEf+M,EAAUrjB,uBAAY,WAE1B,OADIujE,GAAYF,GAAWC,EAAaD,EAAYD,GAC7C/hE,EACLs6C,GAAQxkD,QAAQ0O,QAAQ,CACtBrK,OAAQA,EACR47C,QArBU,IAsBVntC,WAAYA,KAEdvF,KAAK4jB,OACN,CAAC+6C,EAAWD,EAAmB/hE,EAAU7F,EAAQyO,EAAYs5D,IAE1D74D,EAAQ1K,uBAAY,WACxBqB,EAASs6C,GAAQxkD,QAAQuT,MAAMlP,IAC/BmtB,EAAS,MACT26C,EAAaF,KACZ,CAAC/hE,EAAU+hE,EAAmB5nE,IAE3BgoE,EACJp6C,MAASC,KAAKD,IAAOpf,GAAa,WAAa,IAAMkf,EACjDH,GACQ,IAAZthB,KACY,IAAXmM,IAA+B,IAAXA,GAAoBjW,IAAE6E,QAAQ65B,MACjDknC,EAAWF,GAAa//C,GAAYkgD,GAA4B,OAAfx5D,IACzC,OAAVjF,EASF,OAPAgP,qBAAU,WACHgV,IACDy6C,GAAW94D,IAEf2Y,IAAUve,MAAM6jB,MACf,CAACtF,EAASmgD,EAAW94D,EAAOqe,IAExB,CACLsT,MACA50B,UACAuC,aACAsZ,UACAD,UACA3Y,SCtDW,SAAS+4D,KAOf,IAAD,yDAAJ,GANFxrE,EAMM,EANNA,GAMM,IALNg/C,mBAKM,aAJNysB,wBAIM,MAJazsB,EAIb,MAHNqP,gBAGM,aAFNpP,mBAEM,aADNtjC,cACM,SACAujC,EAAKvqC,aAAY,SAACpS,GAAD,OACrBmhD,GAAQ1kD,OAAOwD,UAAUiuB,WAAWluB,EAAOvC,MAEvCoJ,EAAW0O,cAJX,EAK6Bs2C,KAL7B,mBAKCgN,EALD,KAKc9M,EALd,OAMoBnpD,mBAAS,MAN7B,mBAMC2H,EAND,KAMQ4jB,EANR,OAOsBvrB,oBAAS,GAP/B,mBAOCorB,EAPD,KAOSC,EAPT,OASiCN,GAAU,CAC/ClwB,KACAg/C,cACAC,gBAHMzvC,EATF,EASEA,QAASuC,EATX,EASWA,WAAYquD,EATvB,EASuBA,MAMvBtvC,IACF9wB,IACDyoB,MAAMzoB,MACK,IAAX2b,IAA+B,IAAXA,GAAoBjW,IAAEoN,YAAYosC,IAiBzD,OAfApjC,qBAAU,WACJgV,GACFsvC,IACGvzD,MAAM6jB,GACNK,SAAQ,kBAAMP,GAAU,QAC5B,CAAC4vC,EAAOtvC,IAEXhV,qBAAU,WACR,GAAK2vD,EAEL,OADAriE,EAASs6C,GAAQxkD,QAAQokD,aAAatjD,IAC/B,WACLoJ,EAASs6C,GAAQxkD,QAAQokD,aAAa,UAEvC,CAACtjD,EAAIyrE,EAAkBriE,IAEnB,CACL81C,KACA1vC,QAASshB,IAActhB,IAAY+gB,KAAY6qC,GAC/CtuD,QACAiF,aACAquD,QACAjxD,UAAW,SAAC+vC,GAAD,OACT91C,EAASs6C,GAAQxkD,QAAQiQ,UAAU+vC,IAChCzyC,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADIqqD,GAAUC,EAAY,QAAUvtC,EAAO/gB,IACpC+gB,MAEb1R,UAAW,SAACO,GAAD,OACTxG,EAASs6C,GAAQxkD,QAAQmQ,UAAU,CAAErP,GAAIA,EAAIgE,KAAM4L,KAChDnD,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADIqqD,GAAUC,EAAY,QAAUtuD,GAC7B+gB,KAERlU,OAAM,SAAC0uD,GACN,GAAqB,gBAAd,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKxuD,SAKP,MAAMwuD,EAJN6E,IAAQ3zD,MAAK,WACX,MAAM,IAAIO,MAAM,2CAO1BihC,cAAe,gBAAG/lC,EAAH,EAAGA,MAAO+lB,EAAV,EAAUA,KAAV,OACb7kB,EAASs6C,GAAQxkD,QAAQ+uC,cAAc,CAAEiR,GAAE,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,GAAIkI,QAAO+lB,WAC9DkgB,cAAe,gBAAGnuC,EAAH,EAAGA,GAAIkI,EAAP,EAAOA,MAAO+lB,EAAd,EAAcA,KAAd,OACb7kB,EAASs6C,GAAQxkD,QAAQivC,cAAc,CAAE+Q,GAAE,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,GAAIA,KAAIkI,QAAO+lB,WAClEk1B,gBAAiB,gBAAGj7C,EAAH,EAAGA,MAAO+lB,EAAV,EAAUA,KAAV,OACf7kB,EAASs6C,GAAQxkD,QAAQikD,gBAAgB,CAAEjE,GAAE,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,GAAIkI,QAAO+lB,WAChEm1B,gBAAiB,gBAAGpjD,EAAH,EAAGA,GAAIkI,EAAP,EAAOA,MAAO+lB,EAAd,EAAcA,KAAd,OACf7kB,EACEs6C,GAAQxkD,QAAQkkD,gBAAgB,CAAElE,GAAE,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,GAAIA,KAAIkI,QAAO+lB,WAE7D0c,iBAAkB,SAAC57B,GAAD,OAChB3F,EAASs6C,GAAQxkD,QAAQyrC,iBAAhB,aAAmC3qC,MAAO+O,KAAStC,KAC1D4jB,MAEJgwB,YAAa,SAACtxC,GAAD,OACX3F,EAASs6C,GAAQxkD,QAAQmhD,YAAhB,aAA8BrgD,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,IAAO+O,KAAStC,KAC7D4jB,OAQR,SAASH,KAAkE,IAAD,yDAAJ,GAAjDlwB,EAAqD,EAArDA,GAAqD,IAAjDg/C,mBAAiD,aAA5BC,mBAA4B,SAClE71C,EAAW0O,cAEXtI,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAM6hC,IAAIA,IAAI90B,SAASE,WAHU,EAIpCrK,mBAAS,MAJ2B,mBAIjE4M,EAJiE,KAIrDypD,EAJqD,KAMlE4E,EAAQr4D,uBACZ,SAACgH,GAAD,OACE3F,EACEs6C,GAAQxkD,QAAQgQ,OAAhB,aACElP,GAAIA,EACJg/C,YAAaA,EACbC,YAAaA,GACVlwC,KAGJtC,KAAK4jB,KACL5jB,MAAK,SAACsU,GAEL,OADAy6C,EAAcrqC,OACPpQ,OAEb,CAAC/gB,EAAIg/C,EAAaC,EAAa71C,IAEjC,MAAO,CAAEoG,UAASuC,aAAYquD,SCvHjB,SAASsL,GAAT,GAAyD,IAApCtuD,EAAmC,EAAvC8hC,GAAuC,IAApBrmC,aAAoB,MAAZ,aAAY,EAC7D1J,EAAcq8D,KAAdr8D,UAD6D,EAE3ChK,mBAAS,MAFkC,mBAE9D2H,EAF8D,KAEvD4jB,EAFuD,OAI5B/b,aACvC,SAACpS,GAAD,OAAWA,EAAM0c,SAASA,YADpB2yC,EAJ6D,EAI7DA,aAAc8J,EAJ+C,EAI/CA,eAIdhgD,EAAc0B,EAAd1B,UACAwjB,EAAYukC,GAAQhhE,OAAO,CACjCzC,GAAI0b,IADEwjB,QAT6D,EAanBh8B,mBAAQ,WAAO,IAAD,EAC1D69C,EAAW,GACbtqC,EAAc,IACZ,OAACyoB,QAAD,IAACA,GAAD,UAACA,EAASkF,WAAV,aAAC,EAAc/lB,UACjB0iC,EAAQ,OAAG7hB,QAAH,IAAGA,OAAH,EAAGA,EAAS6hB,SACpBtqC,EAAW,OAAGyoB,QAAH,IAAGA,OAAH,EAAGA,EAASzoB,aAGzB,IAAMhR,EAAUy5B,EAAUA,EAAQz5B,QAAUi2D,GAAkB,GAO9D,MAAO,CACL37D,MAPY6xD,IAEVzqD,aAAe1B,GACf,QACA,IAIFA,UACAs7C,WACAtqC,iBAED,CAACyoB,EAAS0yB,EAAc8J,IArBnBj2D,EAb6D,EAa7DA,QAAS1F,EAboD,EAapDA,MAAOghD,EAb6C,EAa7CA,SAAUtqC,EAbmC,EAanCA,YAuB5BlS,EAAgBi+C,GAAgB,aACpC9mC,YACAjW,UACA1F,QACAghD,WACAtqC,eAGG/Q,IAAEi2D,OAAOv+C,GAAiB,IAAI,SAACjI,GAAD,OAAQzP,IAAEoN,YAAYqC,QAGzD,OACE,eAAC20D,GAAD,CACE5qB,GAAI36C,EACJ7D,OAAK,EACL2D,SAAU,SAACsnE,GACTx8D,EAAUw8D,GACPl/D,KAAKoM,GACLhM,OAAM,SAACC,GAAD,OAAW4jB,EAAS5jB,EAAMC,aAErCD,MAAOA,EACPoyB,QAASA,IC/DA,SAAS0sC,GAAuB1sB,GAC7C,SAAS2sB,EAAUl3C,GACjB,IAAI5c,EAAIoZ,MAASyH,IAAIjE,EAAO,SACtBm3C,EAAW36C,MAASwD,MAAM,GAAGo3C,QAAQ,GACrCC,EAAS76C,MAASwD,MAAM,IAAIo3C,QAAQ,GAC1C,OAAIh0D,EAAI+zD,EAAiBA,EAChB/zD,EAAIi0D,EAAeF,EAASlzC,IAAI,EAAG,QAChC7gB,EAGd,IAAKmnC,EAAI,MAAO,GAViC,IAY/C2B,EAOE3B,EAPF2B,SACAorB,EAME/sB,EANF+sB,kBACA7pB,EAKElD,EALFkD,wBACAF,EAIEhD,EAJFgD,2BACAG,EAGEnD,EAHFmD,wBACAF,EAEEjD,EAFFiD,2BACA+pB,EACEhtB,EADFgtB,oBAGF,GAAiB,OAAbrrB,GAAkC,OAAbA,EAAmB,MAAO,GACnD,IAAMpmB,EAAMoxC,EAAU,GAChBM,EAAUN,EAAU,GAEpBO,EAAoBl0C,KAAU0c,UAAUwN,GACxCiqB,EAAuBn0C,KAAU0c,UAAUsN,GAEjD,MAA0B,OAAtB+pB,GAAoD,OAAtBA,EACzB,qBACsB,OAAtBA,EAAmC,uBACb,OAAtBA,GAAoD,OAAtBA,EAC9B,eACAC,EAA4B,iBAEjC7pB,GAA2B+pB,EAAoB3xC,IAC/C0nB,GAA8BkqB,EAAuB5xC,EAEhD,iBAEL4nB,GAA2B+pB,EAAoBD,IAC/ChqB,GAA8BkqB,EAAuBF,EAEhD,aACG,GFuDdX,GAAMt8D,OAASghB,GACfs7C,GAAMtoB,QA4BN,WACE,IAAM95C,EAAW0O,cACXtI,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAM6hC,IAAIA,IAAI90B,SAASE,WAExD0zC,EAAUn7C,uBACd,SAACgH,GAAD,OACE3F,EACEs6C,GAAQxkD,QAAQgkD,QAAhB,eACKn0C,KAGJtC,KAAK4jB,KACL5jB,MAAK,SAACsU,GAAY,IACHm+B,EAAOn+B,EAAb/c,KAER,OADAmN,IAAMiO,QAAN,aAAoB8/B,EAAGl/C,GAAvB,qBAAsCk/C,EAAGxjC,YAClCqF,OAEb,CAAC3X,IAEH,MAAO,CAAEoG,UAAS0zC,YGvJb,IAAMopB,GAAiB,CAC5BC,GAAI,CACFvsE,GAAI,KACJyW,YAAa,SACb+1D,OAAQ,UAEVC,GAAI,CACFzsE,GAAI,KACJyW,YAAa,SACb+1D,OAAQ,UAEVE,GAAI,CACF1sE,GAAI,KACJyW,YAAa,wBACb+1D,OAAQ,gBAEVG,GAAI,CACF3sE,GAAI,KACJyW,YAAa,kBACb+1D,OAAQ,WAIL,SAASI,GAAT,GAA8B,IAAP5sE,EAAM,EAANA,GAC5B,OAAO,eAAKssE,GAAetsE,IAGtB,SAAS6sE,KAEd,MAAO,CAAEC,aADYp5D,OAAOC,QAAQ24D,IAAgB/lE,KAAI,2CCtB3C,SAASwmE,GAAT,GAMX,IALFtpE,EAKC,EALDA,MAKC,IAJD5B,eAIC,aAHDwS,mBAGC,MAHa,sBAGb,MAFDiB,iBAEC,SADEtS,EACF,8DAGK6R,EAFmBg4D,KAAjBC,aAEsBvmE,KAAI,SAACyO,GACjC,MAAO,CAAEpV,MAAM,GAAD,OAAKoV,EAAEw3D,OAAP,YAAiBx3D,EAAEyB,aAAehT,MAAOuR,EAAEhV,OAGrDkhE,EAAW5rD,EAEbL,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACEb,UAAW4rD,EACXz9D,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,IChCV,IAUegqE,GAVE,CACf/6D,SAAUq6D,GAEV5pE,OAAQmqE,GACRpqE,OAAQmqE,GAERprE,OAAQyrE,GACRxlE,YCPa,YAAwC,IAC7CylE,EAAaN,GAAY,CAAE5sE,GADiB,EAANA,KACtCktE,SACR,OAAKA,EAEE,qCAAGA,EAASz2D,cAFG,O,GCFtB1X,aAAkB,CAChBC,OAAQgsC,GAAYhsC,OACpBE,QAAS8rC,GAAY9rC,UAHGgzD,G,GAAb9yD,YAAqC+yD,G,GAAX7yD,UCK1B8yD,GALWv8C,aAAkB,CAC1CnW,KAAM,WACNJ,UAAW6yD,KCIEE,GANMh3C,aAAa,CAChC3b,KAAM,WACNN,YAAa8yD,GACb3uD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCG1C6uD,GANW9kD,aAAkB,CAC1C9N,KAAM,WACNN,YAAa8yD,GACb3uD,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCc1C8uD,GAdA,CAEbjwD,IAAK0oC,GAAY1oC,IAEjBpD,QAAS8rC,GAAY9rC,QACrBsD,UAAWwoC,GAAYhsC,OAAOwD,UAE9BE,OAAQwvD,GACRzvD,OAAQ0vD,GAER3wD,OAAQ6wD,GACR5qD,YAAa2qD,GACb3pD,YAAa6pD,ICAT1iB,GAAqB,CACzB66B,OAAQA,IAGJ0C,GAAgB,CACpB,KACA,UACA,aACA,WACA,QACA,SACA,WACA,UACA,WACA,SAGa,SAASC,KAGf,IAAD,yDAAJ,GAAI,IAFNC,iBAEM,SADMp9B,EACN,EADNntC,WAEMA,EAAaI,mBACjB,8BAAC,eACI0sC,IACAK,KAEL,CAACA,IAGGhtC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,KACRnD,GAAI,KACJoD,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAoB07C,EAApB,EAAGv7C,IAAOC,SAAgBH,EAA1B,EAA0BA,MAA1B,OACJ4pE,EAAY5pE,EAAQ,eAACX,EAAW2nE,OAAZ,CAAmBzqE,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,OAEnD,CACEmD,OAAQ,UACRnD,GAAI,UACJoD,SAAU,YACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ4pE,EACE5pE,EAEA,eAAC,OAAD,CACErC,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,OAAeqB,IAF/B,SAIGA,KAGP4jB,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,QAE3D90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,QAGrD,CACEN,OAAQ,cACRnD,GAAI,aACJoD,SAAU,qBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,QAGR90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,qBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EAAQy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,IAAU,SAInE,CACEN,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAc,KAAVA,EAAqB,GAGrB,gCACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,SAM7D,CACEh5C,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAc,KAAVA,EAAqB,GAGrB,gCAAOy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,QAKzD,CACEN,OAAQ,uBACRnD,GAAI,qBACJiZ,gBAAgB,EAChB7V,SAAU,qBACV84C,SAAU,SAEV14C,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAc,KAAVA,EAAqB,GAEhB,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAIlD,CACEN,OAAQ,uBACRnD,GAAI,qBACJiZ,gBAAgB,EAChB7V,SAAU,6BACV84C,SAAU,SAEV14C,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAc,KAAVA,EAAqB,GAGrB,gCACGy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAMzD,CACEN,OAAQ,oBACRnD,GAAI,kBACJiZ,gBAAgB,EAChB7V,SAAU,0BACV84C,SAAU,SAEV14C,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAc,KAAVA,EAAqB,GAGrB,gCACGy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAMzD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,sBAAGq7B,iBAAH,MAAe,GAAf,SACRA,EACIA,EAAUpgB,OAAS,EACjB,YACA,UAAAogB,EAAU,UAAV,eAAc/+B,OAAQ,GACxB,IACN2D,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,WACJmD,OAAQ,WACRC,SAAU,SAAC87C,GAET,IADA,IAAIrL,EAAa,GACRlzB,EAAI,EAAGA,GAAC,OAAGu+B,QAAH,IAAGA,GAAH,UAAGA,EAAIzgB,iBAAP,aAAG,EAAepgB,QAAQsC,IAAK,CAAC,IAAD,EAE5CkzB,EADiB,KAAfA,GAAqBA,IAAeqL,EAAGzgB,UAAU9d,GAAGkzB,WACzCqL,EAAGzgB,UAAU9d,GAAGkzB,WACb,WAEpB,OAAOA,GAGTrwC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACElkB,OAAQ,QACRnD,GAAI,QACJoD,SAAU,QACVikB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,aACRnD,GAAI,YACJoD,SAAU,eAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,cACRnD,GAAI,aACJoD,SAAU,mBAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,YACRnD,GAAI,WACJoD,SAAU,eAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,SACRnD,GAAI,SACJoD,SAAU,WACVC,OAAQkvD,GAAO9pD,YACflF,OAAQ,SACR8jB,UAAW,cACXyrC,cAAc,EAEdtvD,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAOgE,YAAR,CAAoBzH,GAAIyD,MAE/C,CACEN,OAAQ,WACRnD,GAAI,WACJoD,SAAU,oBACVC,OAAQogE,GAAQtT,SAAS1nD,YACzBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ0sD,SAAS1oD,YAAlB,CAA8BzH,GAAIyD,MAEzD,CACEN,OAAQ,kBACRnD,GAAI,iBACJoD,SAAU,wBACVC,OAAQogE,GAAQpU,eAAe5mD,YAC/BlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ4rD,eAAe5nD,YAAxB,CAAoCzH,GAAIyD,MAE/D,CACEN,OAAQ,QACRnD,GAAI,QACJoD,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,gBACRnD,GAAI,gBACJoD,SAAU,qBACVC,OAAQwmE,GAAiBphE,YACzBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAiBgE,YAAlB,CAA8BzH,GAAIyD,MAEzD,CACEN,OAAQ,aACRnD,GAAI,aACJoD,SAAU,eACVC,OAAQ4lE,GAAWxgE,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAWgE,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,SACRnD,GAAI,SACJoD,SAAU,WACVC,OAAQu3C,GAAOnyC,YACflF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAOgE,YAAR,CAAoBzH,GAAIyD,MAE/C,CACEN,OAAQ,OACRnD,GAAI,OACJqD,OAAQogE,GAAQ7hE,KAAK6G,YACrBlF,OAAQ,SACR8jB,UAAW,cACXjkB,SAAU,gBAAGg9C,EAAH,EAAGA,eAAgBmtB,EAAnB,EAAmBA,cAAnB,MACW,KAAnBntB,EAAwBA,EAAiBmtB,GAC3C/pE,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAIyD,MAErD,CACEN,OAAQ,WACRnD,GAAI,WACJoD,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEJ,OAAQ,YACRnD,GAAI,kBACJoD,SAAU,kBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEJ,OAAQ,UACRnD,GAAI,UACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAGq+C,oBACW,SAAM,KAC9Bp+C,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACElkB,OAAQ,OACRnD,GAAI,OACJoD,SAAU,qBAAGw+C,sBACa,IAAM,KAChCv+C,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACElkB,OAAQ,iBACRnD,GAAI,gBACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAG2vD,cAAqC,eAAO,KACzD1vD,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACElkB,OAAQ,UACRnD,GAAI,iBACJoD,SAAU,WACVC,OAAQkvD,GAAO9pD,YACflF,OAAQ,SACR8jB,UAAW,cACXyrC,cAAc,EAEdtvD,KAAM,oBAAGC,EAAH,EAAGA,MAAwBy7C,EAA3B,EAAUv7C,IAAOC,SAAjB,OACJ,gBAAC9C,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAOyG,YAAR,CAAoBzH,GAAIyD,MAE1B,gBAACzC,EAAA,EAAD,YACK,OAAFk+C,QAAE,IAAFA,OAAA,EAAAA,EAAIuC,qBAAsB,SAAM,IAC9B,OAAFvC,QAAE,IAAFA,OAAA,EAAAA,EAAI6T,eAAgB,eAAO,IAC3B,UAAAia,GAAS/6D,gBAAT,0BAAoBitC,QAApB,IAAoBA,OAApB,EAAoBA,EAAIsuB,mBAAxB,eAAqChB,SAAU,WAKxD,CACErpE,OAAQ,YACRnD,GAAI,WACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,oBAAGoqE,EAAH,EAAGA,WAAH,OACR,UAAAR,GAAS/6D,gBAAT,mBAAoBu7D,UAApB,eAAiChB,SAAU,IAC7CnpE,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACElkB,OAAQ,WACRnD,GAAI,WACJoD,SAAU,UACVikB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,OACRnD,GAAI,OACJoD,SAAU,UACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,YAAuC,IAAD,EAAnCC,EAAmC,EAAnCA,MAAwBy7C,EAAW,EAA5Bv7C,IAAOC,SACjBiuC,EAAO,KACP47B,EAAa,GAGjB,IAAc,QAAV,EAFJA,EAAU,OAAGvuB,QAAH,IAAGA,OAAH,EAAGA,EAAIwuB,UAAUhvD,MAAM,qBAE7B,eAAYL,QAAS,EACvB,IAAK,IAAIsD,EAAI,EAAGA,EAAI8rD,EAAWpvD,OAAQsD,IACrC,GAAI8rD,EAAW9rD,GAAGgsD,WAAW,SAAU,CACrC97B,EAAO47B,EAAW9rD,GAClB,MAKN,OAAa,OAATkwB,EACK,qCAAGpuC,IAGV,oBAAGouC,KAAMA,EAAM9qC,OAAO,SAAS+oC,IAAI,sBAAnC,SACGrsC,SAMX,CAAC4pE,EAAWvqE,IAGd,MAAO,CAAEG,UAASkqE,kBC1dL,SAASS,GAAT,GAOX,IANFxpC,EAMC,EANDA,IACAipC,EAKC,EALDA,UAKC,IAJDQ,gBAIC,MAJU,aAIV,EAHD9qE,EAGC,EAHDA,OACAD,EAEC,EAFDA,WACGE,EACF,qEAKK4C,EAAuBynE,EACzB,CAAE9nE,iBALmB,SAACC,GACN,MAAdA,EAAQxF,IAAY6tE,EAASroE,EAAQxF,MAKvC,GAPH,EASkCotE,GAAkB,CACnDC,YACAvqE,eAFMG,EATP,EASOA,QAASkqE,EAThB,EASgBA,cAKjB,OACE,eAACxqE,GAAA,EAAD,qCACEoB,UAAQ,EACRnE,MAAM,MACNmD,OAAQA,GAAUoqE,EAClBlqE,QAASA,EACTe,KAAMogC,EACNvZ,YAAa,SAAClnB,GACZ,IAAKA,EAAIC,SAAU,MAAO,GAC1B,IAAMxC,EAAYwqE,GAAuBjoE,EAAIC,UAC7C,OAAKxC,EACE,CAAEA,UAAWA,GADG,KAGrBwE,GACA5C,GAbN,IAcE+nB,iBAAe,K,aCxBf+iD,GAAY,SAAC,GAAD,IAAGjnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OAChB,eAACyzB,GAAA,EAAD,CACEt3B,MAAO,KACP6D,MACEiC,IAAEkxB,OAAOnzB,IAEL0tB,IAAO48C,SAAStqE,GADhBA,EAGA20B,KAAMwc,UAAUnxC,GAEtBoD,SAAU,SAACglB,GAAD,OAAOhlB,EAASglB,EAAIuM,KAAM0jB,MAAMjwB,GAAKA,IAC/CiM,YAAY,EACZ9d,aAAW,KAITg0D,GAAc,SAAC,GAAD,IAAGnnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OAClB,eAACwzD,GAAD,CAAY3tD,KAAK,SAASzC,SAAUA,EAAUpD,MAAOA,EAAOuyB,IAAI,OAG5Di4C,GAAa,SAAC,GAAD,IAAGpnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAO/D,EAApB,EAAoBA,KAApB,OACjB,eAACoB,GAAA,EAAKO,MAAN,CACEzB,MAAOF,EACPwuE,QAAM,EACNnM,QAASt+D,EACToD,SAAU,SAACC,GAAD,OAAOD,EAASC,EAAEC,OAAOg7D,aAIjCtxB,GAAS,CACbuqB,OAAQ,CACNt7D,KAAM,QACNyuE,QAAS,gBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,KAAKjC,OAAN,CACEiC,MAAOA,EACPoD,SAAUA,EACVnD,QAAQ,EACR2Q,YAAY,qBACZxS,SAAO,MAIbipC,WAAY,CACVprC,KAAM,SACNyuE,QAAS,oBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAOjC,OAAR,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,uBACZxS,SAAO,MAIbo5D,UAAW,CACTv7D,KAAM,WACNyuE,QAAS,mBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,KAAKjC,OAAN,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,wBACZF,YAAU,EACVtS,SAAO,MAIb87D,YAAa,CACXj+D,KAAM,sBACN0uE,MAAON,IAETlQ,UAAW,CACTl+D,KAAM,oBACN0uE,MAAON,IAET3Q,YAAa,CACXz9D,KAAM,iBACNyuE,QAAS,qBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,KAAKjC,OAAN,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,oBACZxS,SAAO,MAIbsiC,eAAgB,CACdzkC,KAAM,aACNyuE,QAAS,wBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAWjC,OAAZ,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,4BACZxS,SAAO,MAIbg8D,YAAa,CACXn+D,KAAM,sBACN0uE,MAAON,IAEThQ,UAAW,CACTp+D,KAAM,oBACN0uE,MAAON,IAET7Q,YAAa,CACXv9D,KAAM,kBACNyuE,QAAS,qBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,KAAKjC,OAAN,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,oBACZxS,SAAO,MAIbk8D,YAAa,CACXr+D,KAAM,sBACN0uE,MAAON,IAET9P,UAAW,CACTt+D,KAAM,oBACN0uE,MAAON,IAET5Q,YAAa,CACXx9D,KAAM,iBACNyuE,QAAS,qBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,KAAKjC,OAAN,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,oBACZxS,SAAO,MAIbgnC,UAAW,CACTnpC,KAAM,SACNyuE,QAAS,mBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAOjC,OAAR,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,sBACZxS,SAAO,MAIbg7D,gBAAiB,CACfn9D,KAAM,oBACNyuE,QAAS,yBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAiBjC,OAAlB,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,iCACZxS,SAAO,MAIb48B,UAAW,CACT/+B,KAAM,WACNyuE,QAAS,mBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAASjC,OAAV,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,wBACZxS,SAAO,MAIbwsE,sBAAuB,CACrB3uE,KAAM,iCACN0uE,MAAOJ,IAETM,oBAAqB,CACnB5uE,KAAM,+BACN0uE,MAAOJ,IAETO,sBAAuB,CACrB7uE,KAAM,iCACN0uE,MAAOJ,IAETQ,oBAAqB,CACnB9uE,KAAM,+BACN0uE,MAAOJ,IAETt/D,OAAQ,CACNhP,KAAM,SACNyuE,QAAS,gBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,KAAK/B,MAAMF,OAAZ,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,qBACZxS,SAAO,MAIb47D,WAAY,CACV/9D,KAAM,YACNE,MAAO,KACPuzC,cAAc,EACdi7B,MAAOH,IAETzQ,gBAAiB,CACf99D,KAAM,sBACNE,MAAO,KACPuzC,cAAc,EACdi7B,MAAOH,IAETrsB,sBAAuB,CACrBliD,KAAM,2BACNE,MAAO,KACPuzC,cAAc,EACdi7B,MAAOH,IAETxsB,oBAAqB,CACnB/hD,KAAM,WACNE,MAAO,KACPuzC,cAAc,EACdi7B,MAAOH,IAETlb,cAAe,CACbrzD,KAAM,iBACNE,MAAO,KACPuzC,cAAc,EACdi7B,MAAOH,IAETjgE,wBAAyB,CACvBtO,KAAM,0BACNyuE,QAAS,iCACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAQ4rD,eAAe7tD,OAAxB,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,+BACZxS,SAAO,MAIb48C,kBAAmB,CACjB/+C,KAAM,mBACNyuE,QAAS,2BACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAQ0sD,SAAS3uD,OAAlB,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,wBACZxS,SAAO,MAIb+8C,eAAgB,CACdl/C,KAAM,kBACNyuE,QAAS,wBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAQ6yD,OAAO90D,OAAhB,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,sBACZxS,SAAO,MAIbk9C,gBAAiB,CACfr/C,KAAM,iBACNyuE,QAAS,yBACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAQ8uD,OAAO/wD,OAAhB,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,sBACZxS,SAAO,MAIbo8D,oBAAqB,CACnBv+D,KAAM,+BACN0uE,MAAON,IAET5P,kBAAmB,CACjBx+D,KAAM,6BACN0uE,MAAON,IAETzP,wBAAyB,CACvB3+D,KAAM,oCACN0uE,MAAON,IAETxP,sBAAuB,CACrB5+D,KAAM,kCACN0uE,MAAON,IAET3P,qBAAsB,CACpBz+D,KAAM,iCACN0uE,MAAON,IAET1P,mBAAoB,CAClB1+D,KAAM,+BACN0uE,MAAON,IAETr/D,MAAO,CACL/O,KAAM,OACNyuE,QAAS,eACTC,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAQ7B,KAAKJ,OAAd,CACEiC,MAAOA,EACPoD,SAAUA,EACVwN,YAAY,oBACZxS,SAAO,MAIbsM,SAAU,CACRzO,KAAM,UACN0uE,MAAO,gBAAGvnE,EAAH,EAAGA,SAAUpD,EAAb,EAAaA,MAAb,OACL,eAAC,GAAQjC,OAAT,CACEiC,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAQ,GACfoD,SAAU,SAACq4B,GAAD,OAAar4B,EAAS,QAACq4B,QAAD,IAACA,OAAD,EAACA,EAASl/B,MAC1CqU,YAAY,yBAgBdo6D,GAAgB/6D,OAAOC,QAAQ88B,IAAQlqC,KAAI,mCAAEsC,EAAF,KAAOpF,EAAP,WAAmB,CAClEA,MAAOoF,EACPjJ,OAAY,OAAL6D,QAAK,IAALA,OAAA,EAAAA,EAAO7D,SAAP,OAAgB6D,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO/D,OAAQmJ,MAGzB,SAAS6lE,GAAT,GAGX,IAFMtxD,EAEP,EAFDhZ,OACAyC,EACC,EADDA,SACC,EAC2B6Z,aAAetD,GAD1C,mBACMhZ,EADN,KACcuqE,EADd,OAE6BxpE,oBAAS,GAFtC,mBAEMypE,EAFN,KAEel5C,EAFf,KAGD,SAAS8kC,EAAa/iD,EAAOsjD,GAC3B4T,GAAU,SAACvqE,GAAD,mBAAC,eACNA,GADK,mBAEPqT,EAAQsjD,OAEXrlC,GAAW,GAUb,OAPA5Z,qBAAU,WACJ8yD,IACF/nE,EAASzC,GACTsxB,GAAW,MAEZ,CAACk5C,EAAS/nE,EAAUzC,IAGrB,eAACrD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,gBAACD,EAAA,EAAD,CAAKK,UAAU,OAAf,UACE,gBAACJ,EAAA,EAAD,CAAK6Y,GAAI,GAAIC,GAAI,EAAG1Y,UAAU,eAA9B,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQ2uD,OAAOnuD,OAAhB,CACE5B,MAAM,SACN6D,OAAa,OAANW,QAAM,IAANA,OAAA,EAAAA,EAAQkkC,WAAY,UAC3BzhC,SAAU,SAACk0D,GAAD,OAAUP,EAAa,WAAYO,UAInD,eAACh6D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,gCAGJ,eAAC5G,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAACmV,GAAA,EAAD,CACEX,QAASi5D,GACT5nE,SAAU,SAAC6vB,GAAS,IAAD,IACXm4C,EAAY,UAAGp+B,GAAO/Z,UAAV,aAAG,EAAay3C,QAC5Bh7B,EAAY,UAAG1C,GAAO/Z,UAAV,aAAG,EAAayc,aAClCqnB,EACE9jC,EACAhxB,IAAEoN,YAAYqgC,GAAgB,KAAOA,GAEnC07B,GAAcrU,EAAaqU,GAAc,oBAS7D,eAAC7tE,EAAA,EAAD,UACGoD,GACCsP,OAAOC,QAAQvP,GAAQmC,KAAI,YAAmB,IAAD,mBAAhBsC,EAAgB,KAAXpF,EAAW,KACrCgU,EAAK,OAAGg5B,SAAH,IAAGA,QAAH,EAAGA,GAAS5nC,GACvB,IAAK4O,EAEH,OAAO,KAET,IAAM22D,EAAQ32D,EAAM22D,MACdS,EAAep3D,EAAM02D,QAC3B,OACE,gBAACrtE,GAAA,EAAKY,MAAN,CAAsBN,UAAU,OAAhC,UACE,gBAACN,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACG0E,IAAEkxB,OAAOnf,EAAM7X,OAAS,KACvB,eAACkB,GAAA,EAAK4G,MAAN,UAAa+P,EAAM7X,OAAS6X,EAAM/X,SAGrCmvE,EACC,eAACC,GAAD,CACEpvE,KAAM+X,EAAM/X,KACZM,GAAE,UAAK6I,EAAL,YACFpF,MAAOW,EAAOyqE,GACdhoE,SAAU,SAACsO,GAAD,OAAOqlD,EAAaqU,EAAc15D,MAE5C,QAEN,gBAACrU,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAACotE,EAAD,CACEvnE,SAAU,SAACsO,GAAD,OAAOqlD,EAAa3xD,EAAKsM,IACnC1R,MAAOA,EACP/D,MAAW,OAAL+X,QAAK,IAALA,OAAA,EAAAA,EAAO/X,QAAP,OAAe+X,QAAf,IAAeA,OAAf,EAAeA,EAAO5O,SAGhC,eAAC7H,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,WACP,IAAI+sE,EAAS,eAAQ3qE,UACd2qE,EAAUlmE,GACbgmE,UAAqBE,EAAUF,GACnChoE,EAASkoE,IAEX7mE,MAAM,mBARR,sBAzBWW,WA4C3B,eAAC9H,EAAA,EAAD,CAAKK,UAAU,cAMvB,SAAS0tE,GAAT,GAAiD,IAA1BrrE,EAAyB,EAAzBA,MAAOoD,EAAkB,EAAlBA,SAAUnH,EAAQ,EAARA,KACtC,OACE,eAACsB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAKO,MAAN,CACErB,GAAE,UAAKN,EAAL,YACFwuE,QAAM,EACNtuE,MAAM,UACNmiE,SAAUt+D,EACVoD,SAAU,SAACC,GAAD,OAAOD,GAAUC,EAAEC,OAAOg7D,cCpe7B,SAASiN,GAAT,GAKX,IAJFjQ,EAIC,EAJDA,kBACAC,EAGC,EAHDA,eACAiL,EAEC,EAFDA,iBACA/kE,EACC,EADDA,SACC,EACsChC,mBAAQ,WAC7C,IAAI+7D,GAAgB,EAChBC,EAAgB,CAAE52B,SAAU,WAehC,OAdIy2B,IACFG,EAAczgC,UAAY,CAACsgC,GAC3BG,EAAc1C,kBAAmB,EACjCyC,GAAgB,GAEdD,IACFE,EAAclE,OAAS,CAACgE,GACxBE,EAAclD,eAAgB,EAC9BiD,GAAgB,GAEdgL,IACF/K,EAAc/wD,SAAW,CAAC87D,GAC1BhL,GAAgB,GAEX,CAACC,EAAeD,KACtB,CAACF,EAAmBC,EAAgBiL,IAnBtC,mBACM/K,EADN,KACqBD,EADrB,OAqB2B95D,mBAAS+5D,GArBpC,mBAqBM37D,EArBN,KAqBcg9C,EArBd,OAsB2Bp7C,mBAAS85D,GAtBpC,mBAsBM34D,EAtBN,KAsBc64D,EAtBd,OAwB6D+L,GAAe,CAC3E3nE,SACAk7D,SAAUn4D,IAFJ89B,EAxBP,EAwBOA,IAAK50B,EAxBZ,EAwBYA,QAAS6b,EAxBrB,EAwBqBA,QAASD,EAxB9B,EAwB8BA,QAAS3Y,EAxBvC,EAwBuCA,MAAOV,EAxB9C,EAwB8CA,WAKzC2C,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAKzCi+B,EAAYzvC,mBAAQ,WACxB,cAAOkhC,QAAP,IAAOA,OAAP,EAAOA,EAAK4P,MAAK,SAAC7qC,EAAG4b,GACnB,IAAMq6C,EAAOj2D,EAAEpJ,QAAU2U,EAAO,IAAMvL,EAAEpJ,MAClCs/D,EAAOt6C,EAAEhlB,QAAU2U,EAAO,IAAMqQ,EAAEhlB,MACxC,OAAIq/D,EAAOC,EAAa,EACpBD,EAAOC,GAAc,EAClB,OAER,CAACj7B,EAAK1vB,IAET,OACE,uCACE,eAAC3T,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACuzD,GAAA,EAAD,CAAUC,IAAKluD,EAAf,SACE,+BACE,eAAC2oE,GAAD,CACE1rE,OAAQA,EACR+R,UAAW9F,EACX0/D,SAAUhQ,EACV76D,SAAU,SAAC2Q,GACTurC,EAAUvrC,GACVmqD,GAAU,UAKlB,eAAC5K,GAAA,EAAD,CAAUC,GAAIluD,EAAd,SACE,+BACE,gBAACvF,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,oBAAGG,UAAU,OAAb,SAAqBy6D,GAAct4D,OAErC,eAACvC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,OAAOC,QAAS,kBAAMm9D,GAAU,IAAhD,uCASZ,eAACp+D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACuzD,GAAA,EAAD,CAAUC,GAAIluD,EAAd,SACE,+BACE,eAACsnE,GAAD,CACExpC,IAAKuO,EACLr9B,UAAW9F,EACX6b,QAASA,EACTD,QAASA,EACTiiD,WAAW,EACXQ,SAAU,SAACpyD,GAAD,OAAUvW,EAASuW,IAC7B1Y,OAAQ,CACN,UACA,KACA,aACA,QACA,SACA,OACA,YAEFuoB,UAAW7Y,EACX8Y,aACE,WAAa4F,IAAOpf,GAAYo9D,UAAY,uBAW9D,SAASF,GAAT,GAAkE,IAA1C5qE,EAAyC,EAAzCA,SAAUd,EAA+B,EAA/BA,OAAQ+R,EAAuB,EAAvBA,UAAW45D,EAAY,EAAZA,SACnD,OACE,eAAC,KAAD,CACE7qE,SAAU,gBAAGd,EAAH,EAAGA,OAAH,OAAgBc,EAASd,IACnCgB,cAAe,CACbhB,OAAO,2BACF2rE,GACA3rE,IALT,SASE,eAAC6rE,GAAD,CAAkB95D,UAAWA,MAKnC,SAAS85D,GAAT,GAA0C,IAAd95D,EAAa,EAAbA,UAClB3U,EAAeC,eAAfD,WAD+B,EAKnC6W,aAAc,CAAE9X,KAAM,WALa,IAGrC+X,MAAShU,EAH4B,EAG5BA,MAAOoD,EAHqB,EAGrBA,SACFiG,EAJuB,EAIrC4K,WAAc5K,MAJuB,EAQnClM,eADF+W,aAAgBrT,kBAPqB,SAUvC,OACE,eAACvD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0tE,GAAD,CACEtqE,OAAQX,EACRoD,SAAUA,EACVvC,WAAYA,EACZsT,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,cAIrB,eAAChM,EAAA,EAAD,CAAKK,UAAU,sBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAYiH,SAAU0N,EAAzD,6BC5JZ,IAAMihB,GAAmB,CAAEQ,OAAQD,M,8CCInC,WAA0BthB,GAA1B,eAAArM,EAAA,6DACQK,EADR,2BAEOgM,GAFP,IAGInJ,QAAS,YAHb,SAKewB,IAAM7B,KAAKxC,GAL1B,oF,sBAiEA,SAAS6lE,GAAT,GAA6C,IAAfnwB,EAAc,EAAdA,GAAI72C,EAAU,EAAVA,OAC1B6R,EAAQvF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKsF,SADN,EAQtC6/C,aAAS,CACXx1D,cAAe,CAAEpC,GAAI+X,EAAOsnD,YAAa,MANzCC,EAHwC,EAGxCA,aACA9K,EAJwC,EAIxCA,SACAuD,EALwC,EAKxCA,QACAzhD,EANwC,EAMxCA,MACaZ,EAP2B,EAOxCy8C,UAAaz8C,OAKTsF,EAAS1E,EAAM,MACfipD,EAAQjpD,EAAM,eAEdkpD,EAAUz+D,mBAAQ,WAAO,IAAD,EACxByL,EAAQ,GAGZ,OAFM,OAAFuwC,QAAE,IAAFA,OAAA,EAAAA,EAAIn/C,QAAkC,OAAvB,OAAFm/C,QAAE,IAAFA,GAAA,UAAAA,EAAIn/C,aAAJ,eAAWmyB,OAAO,KACjCvjB,EAAMmP,KAAK,CAAEle,MAAO,QAASI,GAAIk/C,EAAGn/C,QAC/B4O,IACN,CAACuwC,IApBsC,EAsBR/5C,oBAAS,GAtBD,mBAsBnCy8D,EAtBmC,KAsBxBC,EAtBwB,KAwB1C,OACE,gBAAC/gE,GAAA,EAAD,WACE,eAAC,KAAD,CACEpB,KAAK,KACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAAC,KAAKqW,YAAN,CACEtd,MAAM,KACNyU,YAAY,gBACZ5Q,MAAOA,EAAMib,MAAM,KACnB7X,SAAU,SAACk0D,GAAD,OAAUl0D,EAASk0D,EAAK9zC,KAAK,OACvCrP,UAAWC,EAAO1V,GAClB0V,OAAQA,EAAO1V,IAAM,WACrBwM,MAAOgzD,OAIb,eAAC,KAAD,CACEjiE,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAACowD,GAAD,CACE3tD,KAAK,WACL7H,GAAG,WACH7B,MAAM,QACN6D,MAAOA,EACPyzD,cAAe,SAACpwD,GAAD,OAAOD,EAASC,EAAEC,OAAOtD,aAK9C,eAAC3C,GAAA,EAAKO,MAAN,CACErB,GAAG,cACH+hE,QAASH,EACThiE,MAAM,0BACNiH,SAAU,SAACC,GAAD,OAAO+6D,EAAa/6D,EAAEC,OAAOg7D,YAGzC,gBAAC11B,GAAA,EAAD,CAAajrC,UAAU,OAAOE,MAAO,CAAEC,SAAU,SAAjD,UACGqgE,EACC,eAAC5kD,GAAA,EAAD,CACEg6C,OAAK,EACLv1D,GAAIK,IACJoY,MAAOiD,EACPmV,QAAO,oBAAQ4sB,QAAR,IAAQA,OAAR,EAAQA,EAAIl/C,GAAZ,cACH,OAAFk/C,QAAE,IAAFA,OAAA,EAAAA,EAAIzgB,UAAU,IAAd,OAAmBygB,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAIzgB,UAAU,GAAG/+B,KAAO,GADtC,qBAEDw/C,QAFC,IAEDA,OAFC,EAEDA,EAAI6B,UACVxuB,KAAMmvC,EACNM,MAAM,EACNhgE,QAASqG,EATX,2BAcA,eAACvG,EAAA,EAAD,CACEE,QAASy/D,GAAa,SAACz9D,GACrBmN,IAAM6lB,KAAK,cAAgBkoB,EAAGl/C,GAAK,OACnCqI,I,4CACAinE,CAAW,aAAEtvE,GAAIk/C,EAAGl/C,IAAOgE,IAAQyI,MAAK,kBACtC0E,IAAM6lB,KAAK,MAAQkoB,EAAGl/C,GAAK,gBAG/Bg3D,OAAK,EARP,kCAaF,eAACl1D,EAAA,EAAD,CAAQC,QAAQ,SAASC,QAASqG,EAAlC,uBAKAu5D,EAQE,KAPF,qCACE,eAAC9gE,GAAA,EAAKO,MAAN,aACEzB,MAAM,sBACNI,GAAG,sBACC22D,EAAS,6BClJzB,IAAM/V,GAAW,SAACC,GAAD,MAA2B,OAAbA,GAAkC,OAAbA,GAEpD,SAAS0uB,GAAT,GAUI,IATFrwB,EASC,EATDA,GACAhgB,EAQC,EARDA,QACAy6B,EAOC,EAPDA,OACArkD,EAMC,EANDA,UACAhR,EAKC,EALDA,WACA+7C,EAIC,EAJDA,YAIC,IAHDmvB,gCAGC,SAFD3uB,EAEC,EAFDA,SACA4uB,EACC,EADDA,WAEMlhB,EAAUC,eADf,EAEuCrpD,oBAAS,GAFhD,mBAEMk/D,EAFN,KAEoBC,EAFpB,KAID,OACE,gBAACxjE,GAAA,EAAKC,IAAN,WACE,eAAC,KAAD,CACEwD,cAAe26C,EACf16C,OAAQ,CAAEA,OAAQs8C,IAClBG,QAAS,CAAE/hB,WACX56B,WAAYgR,GAAahR,EACzBD,SAAU,SAACqrE,GACT/V,EAAO+V,GAAQjjE,MAAK,SAACsU,GACnBujD,GAAgB,GACZ1jB,GAAQ,OAAC7/B,QAAD,IAACA,OAAD,EAACA,EAAQ8/B,YAEK,QAAf,OAAP3hB,QAAO,IAAPA,OAAA,EAAAA,EAAS2hB,YACT,OAAC3hB,QAAD,IAACA,OAAD,EAACA,EAASkF,IAAI7gC,QACZ,SAACod,GAAD,OAAOA,EAAE3gB,KAAOk/C,EAAGl/C,KAAO4gD,GAASjgC,EAAEkgC,aACrCxiC,SAEFutB,GAAY,CACV7+B,QAAS,4BACTo/B,QAAS,gBACTC,OAAQ,SACRF,UAAW,WACTqiB,EAAQzwC,KAAR,oBAA0BiD,EAAOrF,UAAjC,uBAOZ8oD,kBAAgB,EA3BlB,SA6BE,eAACmL,GAAD,CACEr6D,UAAWA,EACXs+C,OAAQyQ,EACR7B,OAAQ,kBAAM8B,GAAgB,IAC9Bj8D,OAAQ,kBAAMi8D,GAAgB,IAC9BmL,WAAYA,EACZ5uB,SAAUA,MAGd,eAAC7/C,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEE,QAAS,kBAAMsiE,GAAgB,IAC/BviE,QAAQ,QACRmG,MAAM,UAHR,SAKE,eAAC,KAAD,MAEDsnE,EAA2B,KAC1B,uCACE,eAAC,GAAD,CAAmBtwB,GAAIA,EAAIya,OAAQA,IACnC,eAAC,GAAM73D,OAAP,CACElC,MAAM,KACN6D,MAAK,OAAEy7C,QAAF,IAAEA,OAAF,EAAEA,EAAIoB,WACXz5C,SAAU,SAACsO,GAAD,OAAOkrC,EAAY,CAAEC,WAAYnrC,kBAU3D,SAASw6D,GAAT,GAOI,IANFr6D,EAMC,EANDA,UACAs+C,EAKC,EALDA,OACA4O,EAIC,EAJDA,OACAn6D,EAGC,EAHDA,OACUo6D,EAET,EAFD5hB,SACA4uB,EACC,EADDA,WACC,EAQG7uE,eANF+1D,EAFD,EAECA,SACAjjC,EAHD,EAGCA,SACAjb,EAJD,EAICA,MACAhG,EALD,EAKCA,MACA9R,EAND,EAMCA,WACgB2D,EAPjB,EAOCqT,aAAgBrT,WAIlBqyD,EAAS,kBACTA,EAAS,sBACTA,EAAS,SACTA,EAAS,kBACTA,EAAS,WACTA,EAAS,gBACTA,EAAS,8BACTA,EAAS,2BACTA,EAAS,kBAnBR,MAqByBl+C,EAAM,CAAC,WAAY,UArB5C,mBAqBMooC,EArBN,KAqBgB9gD,EArBhB,KAuBK2iE,EAAiB36D,uBACrB,SAACtE,EAAOk/D,GACNjvC,EAAS,WAAYivC,EAAW,CAC9BlR,gBAAgB,EAChBC,aAAa,IAEXjuD,IAAUk/D,GAAa/hB,GAAS+hB,KAClCjvC,EAAS,uBAAuB,GAChCA,EAAS,qBAAqB,GAC9BA,EAAS,yBAAyB,GAClCA,EAAS,iBAAiB,GACD,OAAhB,OAAL3zB,QAAK,IAALA,OAAA,EAAAA,EAAOmyB,OAAO,KAAYwB,EAAS,QAAS,IAChD8uC,OAGJ,CAACA,EAAQ9uC,EAAU3zB,IAGrB+b,qBAAU,YACHxX,GAAcm+D,GAAiB5hB,IAAa4hB,GAC/CC,EAAe7hB,EAAU4hB,KAG1B,CAACn+D,EAAYm+D,IAEhB,IAAMM,EAAa,WACjBtwD,IACApK,KAGF,OACE,gBAACrH,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,eAAC,GAAD,CACEvB,KAAK,WACLmH,SAAU,SAAC87D,GACTD,EAAe7hB,EAAU8hB,GACrB9hB,IAAa8hB,GAAc/hB,GAAS+hB,IACtChiE,KAGJ2U,UAAWA,EACXhR,WAAYA,IAEd,gBAAC6D,GAAA,EAAD,yBAAON,KAAM+rD,EAAQvrD,OAAQ06D,GAAgB0M,GAA7C,cACE,eAACtnE,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,wBAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAAC,GAAD,CAAYH,OAAQ06D,aAO9B,SAASH,GAAT,GAAuC,IAAnBljE,EAAkB,EAAlBA,KAASsD,EAAS,yBAC5ByU,EAAUD,aAAc,CAAE9X,SAA1B+X,MAER,OACE,eAAC,GAAOjW,OAAR,yBACExB,GAAG,aACCyX,GAFN,IAGEpD,YAAY,aACRrR,IAKV,SAASggE,GAAT,GAA6C,IAAvB1+D,EAAsB,EAAtBA,WAAY+D,EAAU,EAAVA,OAAU,EAOtCzH,eALF8yB,EAFwC,EAExCA,SACAjb,EAHwC,EAGxCA,MACA9X,EAJwC,EAIxCA,WACWu+B,EAL6B,EAKxC+hB,QAAW/hB,QAL6B,IAMxCo1B,UAAasC,EAN2B,EAM3BA,aAAc3gC,EANa,EAMbA,QAASpe,EANI,EAMJA,OANI,EASaY,EAAM,CAC3D,iBACA,qBACA,aAZwC,mBASnC2nC,EATmC,KASnBoB,EATmB,KASCX,EATD,KAcpCjB,EAASQ,IAAc,OAAIlhB,QAAJ,IAAIA,OAAJ,EAAIA,EAAS0gB,QAmB1C,OAjBA9jC,qBAAU,YACH0lC,GAAsBZ,GAASC,IAEhCntB,EAAS,qBADI,OAAXksB,EAC6B,IAKA,IALK,CAClC6R,gBAAgB,EAChBC,aAAa,MAQlB,CAAClQ,EAAoB5B,EAAQiB,EAAUntB,IAE1C7yB,eAGE,gBAACC,GAAA,EAAD,WACE,eAACixD,GAAD,IACA,eAAC,KAAWvwD,OAAZ,CACE9B,KAAK,iBACLE,MAAM,gBACN6B,GAAIgiE,GAAQ7hE,KAAKJ,OACjBwY,aAAW,IAED,OAAX4lC,EACC,eAAC,KAAWp+C,OAAZ,CACE9B,KAAK,qBACLE,MAAM,oBACN6B,GAAIinE,GAAiBlnE,OACrBwY,aAAW,IAEX,KAEJ,eAAC,KAAWxY,OAAZ,CACE9B,KAAK,qBACLE,MAAM,gBACN6B,GAAIooE,GAAiBroE,SAEvB,eAAC,KAAWA,OAAZ,CACE9B,KAAK,WACLE,MAAM,SACN6B,GAAIm5C,GAAOp5C,OACXwY,aAAW,IAGb,eAAC41D,GAAD,CAAY1wC,QAASA,IAErB,gBAACn+B,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEE,QAAS,YACS,IAAZi0B,GAAmB7rB,QAAQC,IAAI,aAAcwN,GACjDlX,KAEFiH,SAAUgvD,GAAgBtyD,EAL5B,kBASA,eAACxC,EAAA,EAAD,CACEC,QAAQ,SACRC,QAASqG,EACTT,SAAUgvD,GAAgBtyD,EAH5B,uBASF,eAACxD,GAAA,EAAKoF,KAAN,CAAW9E,UAAU,aAArB,qEAIF,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CAAWG,UAAU,wBAO/B,SAASwuE,KAAc,IAAD,EAIhBhvE,eAFF6X,EAFkB,EAElBA,MACWymB,EAHO,EAGlB+hB,QAAW/hB,QAHO,EAahBzmB,EAAM,CACR,iBACA,UACA,eACA,6BACA,0BACA,mBAnBkB,mBAOlB2nC,EAPkB,KAQlByvB,EARkB,KASlBC,EATkB,KAUlB3tB,EAVkB,KAWlBE,EAXkB,KAYlB0tB,EAZkB,KAqBdnwB,EAASQ,IAAc,OAAIlhB,QAAJ,IAAIA,OAAJ,EAAIA,EAAS0gB,QAEpCowB,EAAqC,QAAf,OAAP9wC,QAAO,IAAPA,OAAA,EAAAA,EAAS2hB,YAAsBgvB,IAAYC,EAC1DG,EAAyBD,IAAiB7tB,EAC1C+tB,EAAsBF,IAAiB3tB,EAEvC8tB,EAAuC,OAAXvwB,KAAmB,OAACmwB,QAAD,IAACA,OAAD,EAACA,EAAgB1xD,QAChE+xD,GACQ,OAAXxwB,GAA8B,OAAXA,KAApB,OAAwCmwB,QAAxC,IAAwCA,OAAxC,EAAwCA,EAAgB1xD,QAC1D,OACE,eAACtd,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACGivE,GAA0BC,EACzB,gBAACx2D,GAAA,EAAD,CAAO3X,QAAQ,UAAf,UACE,eAAChB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,yCAGF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gCACGivE,EACC,+EACE,KACHC,EACC,yEACE,YAIV,eAACnvE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,yEAGF,KACHovE,GAAuBD,EACtB,eAACz2D,GAAA,EAAD,CAAO3X,QAAQ,UAAf,SACGquE,EACG,4CACAD,EACA,yDACA,KAEJ,UAMZ,SAASlN,GAAT,GAA4C,IAAf/jB,EAAc,EAAdA,GAAIya,EAAU,EAAVA,OACzBjlD,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACzCzP,EAAM2a,iBAAO,MAFsB,EAGjBza,oBAAS,GAHQ,mBAGlC0C,EAHkC,KAG5BC,EAH4B,OAIT3C,oBAAS,GAJA,mBAIlCkrE,EAJkC,KAIxBC,EAJwB,OAKCnrE,oBAAS,GALV,mBAKlC+9D,EALkC,KAKnBC,EALmB,KAOnCC,EAAWf,eAMjB,OAJAvmD,qBAAU,WACRw0D,GAAY,KACX,CAAClN,IAGF,uCACE,eAACthE,EAAA,EAAD,CACEmD,IAAKA,EACLjD,QAAS,kBAAM8F,GAAQ,IACvB/F,QAAQ,QACRmG,MAAM,UAJR,SAME,eAAC,KAAD,MAGF,eAACkY,GAAA,EAAD,CACElY,MAAO,aACPnB,OAAM,OAAE9B,QAAF,IAAEA,OAAF,EAAEA,EAAK4K,QACbhI,KAAMA,EACNQ,OAAQ,kBAAMP,GAAQ,IACtBwY,UAAU,SALZ,SAOE,gBAAC+iD,GAAA,EAAD,CAAWrhE,QAAS,kBAAM8F,GAAQ,IAAlC,UACE,eAACu7D,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAM23D,EAAO,CAAE55D,MAAO2U,KAAtD,0BAGA,eAAC2uD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAMsuE,GAAY,IAAlD,kBAGA,eAACjN,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAMmhE,GAAiB,IAAvD,4BAKJ,eAACoN,GAAD,CAAa1oE,KAAMwoE,EAAUhoE,OAAQ,kBAAMioE,GAAY,IAAQpxB,GAAIA,IACnE,eAACsxB,GAAD,CACE3oE,KAAMq7D,EACN76D,OAAQ,kBAAM86D,GAAiB,IAC/BjkB,GAAIA,OAMZ,SAASqxB,GAAT,GAA4C,IAArBrxB,EAAoB,EAApBA,GAAIr3C,EAAgB,EAAhBA,KAAMQ,EAAU,EAAVA,OAC/B,OACE,gBAACF,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAAQk7D,SAAS,SAA5C,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,mCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAACioE,GAAD,CAAYvxB,GAAIA,EAAI72C,OAAQA,SAMpC,SAASooE,GAAT,GAAqC,IAAfvxB,EAAc,EAAdA,GAAI72C,EAAU,EAAVA,OAAU,EACAlD,mBAAS+5C,EAAGxjC,WADZ,mBAC3BA,EAD2B,KAChBg1D,EADgB,KAE1BxxC,EAAYukC,GAAQhhE,OAAO,CAAEzC,GAAI0b,EAAWC,OAAQ,SAApDujB,QACAkhC,EAAUoL,GAAMt8D,SAAhBkxD,MAH0B,EAILoL,GAAMtoB,UAA3BA,EAJ0B,EAI1BA,QAAS1zC,EAJiB,EAIjBA,QAEXmuC,EAAkBuB,EAAGzgB,UAAU,GAAGz+B,GAClC2wE,EAAe,OAAGzxC,QAAH,IAAGA,OAAH,EAAGA,EAAST,UAAU,GAAG3vB,WAE9C,OACE,uCACE,eAAC/N,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAAC,GAAQQ,OAAT,CACE5B,MAAM,UACNiH,SAAU,gBAAG7G,EAAH,EAAGA,GAAH,OAAY0wE,EAAa1wE,IACnCyD,MAAOiY,EACP0kD,MAAOA,IAET,eAAC,GAAS1iB,aAAV,CACE7tC,QAAS8tC,EACTE,KAAM8yB,SAIZ,gBAACtkC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBACPkhD,EAAQ,CAAEznC,KAAMyjC,EAAGl/C,GAAI0b,UAAWA,IAAajP,KAAKpE,IAEtDT,SAAU4H,EALZ,SAOGA,EAAU,YAAc,SAE3B,eAAC1N,EAAA,EAAD,CAAQE,QAASqG,EAAQtG,QAAQ,SAAjC,0BAQR,SAASyuE,GAAT,GAAsD,IAA1B3oE,EAAyB,EAAzBA,KAAMQ,EAAmB,EAAnBA,OAAmB,IAAX62C,UAAW,MAAN,GAAM,EACnD,OACE,gBAAC/2C,GAAA,EAAD,CAAOC,KAAK,KAAKP,KAAMA,EAAMQ,OAAQA,EAAQk7D,SAAS,SAAtD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,eAAhB,sBAEF,eAACmI,GAAA,EAAMK,KAAP,UACE,eAACkjE,GAAD,CACE7yD,MAAOxQ,EACP62C,GAAE,2BACGA,GADH,IAEAl/C,QAAI+P,EACJ8/C,gBAAY9/C,EACZ8wC,cAAU9wC,WAStBw/D,GAAezuE,KAAOkiE,GACPuM,U,UC/fA,SAASqB,GAAT,GAMX,IALF3tE,EAKC,EALDA,QACApB,EAIC,EAJDA,QACA4B,EAGC,EAHDA,MAGC,IAFD8Q,mCAEC,SADEvR,EACF,4EACKwS,EAAUtS,mBACd,kBAAMD,EAAQsD,KAAI,SAACoa,GAAD,MAAQ,CAAEld,MAAOkd,EAAE3gB,GAAIJ,MAAO+gB,EAAExd,QAAUwd,EAAE3gB,SAC9D,CAACiD,IAECgS,EAAc,KASlB,OARIxR,IAEAwR,EADEpT,EACY0S,EACViB,EAAQjS,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UACvCA,EAAM8C,KAAI,SAAC4O,GAAD,OAAOzP,IAAE0P,KAAKI,GAAS,SAACN,GAAD,OAAOA,EAAEzR,QAAU0R,QAE1CzP,IAAE0P,KAAKI,EAAS,CAAC,QAAS/R,KAG1C,eAAC0S,GAAA,EAAD,aACE1S,MAAOwR,EACPO,QAASA,EACT3T,QAASA,GACLmB,I,OC1BRjE,aAAkB,CAChBC,OAAQusC,GAAiBvsC,OACzBE,QAASqsC,GAAiBrsC,UAHF2xE,G,GAAbzxE,YAAyC0xE,G,GAAXxxE,UCK9ByxE,GALuBl7D,aAAkB,CACtDnW,KAAM,gBACNJ,UAAWwxE,K,UCIE,SAASE,GAAT,GAKX,IAJOC,EAIR,EAJDhuE,QAIC,IAHDF,cAGC,MAHQ,GAGR,EAFD8D,EAEC,EAFDA,SAEC,IADDsmE,qBACC,MADe,GACf,IAC6BzsD,aAC5B3d,EACGwD,KAAI,SAACoa,GACJ,OAAOjb,IAAE0P,KAAK67D,EAAgB,CAAEjxE,GAAI2gB,OAErCpd,QAAO,SAACod,GAAD,OAAOjb,IAAEyN,SAASwN,OAN7B,mBACM1d,EADN,KACe2d,EADf,KAQKna,EAAOoa,GAAoB5d,EAAS4D,GAyB1C,OACE,eAAC9F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACD,EAAA,EAAD,CAAKK,UAAU,OAAf,UACE,gBAACJ,EAAA,EAAD,CAAK6Y,GAAI,GAAIC,GAAI,EAAG1Y,UAAU,eAA9B,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC4vE,GAAD,CACEhxE,MAAM,aACNqD,QAASguE,EAAe1tE,QAAO,SAACod,GAAD,OAAQ5d,EAAOkO,SAAS0P,EAAE3gB,OACzD6G,SAAU,SAACsO,GACT,OAAOtO,EAAS5D,EAAQsD,KAAI,SAACoa,GAAD,OAAOA,EAAE3gB,MAAIuT,OAAO,CAAC4B,YAKzD,eAACpU,EAAA,EAAD,CAAKK,UAAU,oBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEoG,MAAM,gBACNnG,QAAQ,UACRC,QAAS,kBAAM6E,EAAS,KAH1B,mBAOA,eAAC/E,EAAA,EAAD,CACEoG,MAAM,4BACNnG,QAAQ,OACRC,QAAS,kBAAM6E,EAASsmE,IAH1B,gCAWR,eAACnsE,EAAA,EAAD,UACE,eAACqiE,GAAA,EAAD,CAAWjiE,UAAU,OAArB,SACE,eAAC,KAAD,CAAiB0f,UAvD7B,SAAmBC,GAEjB,GAAKA,EAAOC,YAAZ,CAIA,IAAMC,EAdQ,SAACC,EAAMC,EAAYC,GACjC,IAAML,EAASM,MAAMC,KAAKJ,GADoB,EAE5BH,EAAOQ,OAAOJ,EAAY,GAArCK,EAFuC,oBAK9C,OAFAT,EAAOQ,OAAOH,EAAU,EAAGI,GAEpBT,EASOU,CACZxe,EACA8d,EAAOW,OAAO5E,MACdiE,EAAOC,YAAYlE,OAGrB8D,EAAWK,GACXpa,EAASoa,EAAM1a,KAAI,SAACob,GAAD,OAAOA,EAAE3hB,SA0ClB,SACE,eAAC,KAAD,CAAW4hB,YAAY,qBAAqBC,YAAapb,EAAzD,SACG,SAACqb,GAAD,OACC,+CAAK7c,IAAK6c,EAASC,UAAcD,EAASE,gBAA1C,cACG/e,EAAQsD,KAAI,SAAC0b,EAAQnF,GAAT,OACX,eAAC,KAAD,CAEEoF,YAAaD,EAAOjiB,GACpB8c,MAAOA,EAHT,SAKGrW,GAJIwb,EAAOjiB,OAOf8hB,EAASzN,gCAahC,IAAMwM,GAAsB,SAAC5d,EAAS4D,GAAV,OAC1B,SAAyBib,EAAUK,EAAUC,GAC3C,IAAMH,EAAShf,EAAQmf,EAAOV,OAAO5E,OACrC,OACE,0DACE7X,IAAK6c,EAASC,UACVD,EAASO,gBACTP,EAASQ,iBAHf,aAKE,eAAC+gD,GAAA,EAAU5pD,KAAX,CACEvR,MAAM,2BACN9G,UAAU,eAFZ,SAIE,gBAACL,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAAC,KAAD,IADF,IACoBihB,EAAO9e,QAAU8e,EAAOjiB,MAE5C,eAACgB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CACEoG,MAAM,gBACNE,KAAK,KACLrG,QAAQ,OACRX,UAAU,kBACVY,QAAS,kBACP6E,EACE5D,EAAQM,QAAO,SAACod,GAAD,OAAOA,EAAE3gB,KAAOiiB,EAAOjiB,MAAIuG,KAAI,SAACoa,GAAD,OAAOA,EAAE3gB,QAP7D,SAWE,eAAC,KAAD,kBCtIDkxE,GALa1xE,eAASC,MAAM,CACzCO,GAAIL,eAASC,MAAM,UAAUK,IAAI,IACjCwW,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,MCmC5D,SAASkxE,GAAT,GAAkE,IAAxCC,EAAuC,EAA3CpxE,GAAesV,EAA4B,EAA5BA,UAAW63D,EAAiB,EAAjBA,cAAiB,EAM3DvsE,eAJF6X,EAF6D,EAE7DA,MACAib,EAH6D,EAG7DA,SACA/yB,EAJ6D,EAI7DA,WACak2D,EALgD,EAK7DvC,UAAauC,YAGTC,GAAiBvsD,kBAAQssD,GARgC,EAU/B1xD,oBAAS,GAVsB,mBAUxDksE,EAVwD,KAU9CC,EAV8C,KAazD5wE,EADK+X,EAAM,QACI24D,EAErB,OACE,eAACrwE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAD,CACEuD,SAAU,SAACyC,GACT4sB,EAAS,iBAAkB,UAC3BA,EAAS,kBAAmBojC,GAC5Bn2D,EAAWmG,IAJf,UAOE,eAAC/F,EAAA,EAAD,CAAKK,UAAU,2BAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMsvE,GAAaD,IAC5BrN,UAAW,EAHb,kBAOA,eAACliE,EAAA,EAAD,CAAQC,QAAQ,UAAUuH,KAAK,SAA/B,2BAMN,eAACvI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACuwE,GAAD,CAAc7xE,KAAK,UAAUytE,cAAeA,QAGhD,gBAAChlE,GAAA,EAAD,CACEN,KAAMwpE,EACNhpE,OAAQ,kBAAMipE,GAAY,IAC1BlwE,UAAU,SACVggE,kBAAkB,kBAJpB,UAME,eAACj5D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,kCAGA,eAACH,GAAA,EAAMK,KAAP,UACE,eAACgpE,GAAD,CACEnpE,OAAQ,kBAAMipE,GAAY,IAC1B5wE,MAAOA,EACP4U,UAAWA,EACXwhD,cAAeA,gBAU/B,SAASya,GAAT,GAAiC,IAAT7xE,EAAQ,EAARA,KAAQ,EACK0tE,KAA3BnqE,EADsB,EACtBA,QAASkqE,EADa,EACbA,cADa,EAI1B31D,aAAc,CAAE9X,SADlB+X,MAAShU,EAHmB,EAGnBA,MAAOoD,EAHY,EAGZA,SAElB,OACE,eAACmqE,GAAD,CACE/tE,QAASA,EACTF,OAAM,OAAEU,QAAF,IAAEA,OAAF,EAAEA,EAAO8C,KAAI,SAACoa,GAAD,OAAOA,EAAEsB,UAC5Bpb,SAAU,SAAC9D,GAAD,OACR8D,EAAS9D,EAAOwD,KAAI,SAACoa,EAAGgO,GAAJ,MAAa,CAAE3uB,GAAI2uB,EAAK1M,OAAQtB,QAEtDwsD,cAAeA,IAKrB,SAASqE,GAAT,GAAiE,IAA5CnpE,EAA2C,EAA3CA,OAAQ3H,EAAmC,EAAnCA,MAAO4U,EAA4B,EAA5BA,UAAWwhD,EAAiB,EAAjBA,cAAiB,EAK1Dl2D,eAHFD,EAF4D,EAE5DA,WACA+yB,EAH4D,EAG5DA,SACakjC,EAJ+C,EAI5DtC,UAAasC,aAUf,OACE,eAAC71D,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAAC,KAAD,CACEtB,KAAK,KACLE,MAAM,SACNuB,aAAa,MACbkT,YAAY,iBAEd,eAAC,KAAD,CACEzU,MAAM,cACNF,KAAK,cACL2U,YAAY,0BAGd,eAACvS,EAAA,EAAD,CACEC,QAAQ,UACR6F,SAAU0N,GAAashD,IAAiBE,EACxC90D,QAAS,WACPqG,IACAqrB,EAAS,iBAAkBhzB,EAAQ,MAAQ,QAC3CgzB,EAAS,kBAAmBojC,GAC5Bn2D,KAPJ,SAUGD,EAAQ,UAAY,cClKxB,IAKQ+wE,GALkBp2D,aAAa,CAC5C3b,KAAM,gBACNN,YAAayxE,KCeArwD,GAdK,CAElBle,IAAKipC,GAAiBjpC,IAEtBpD,QAASqsC,GAAiBrsC,QAC1BsD,UAAW+oC,GAAiBvsC,OAAOwD,UAEnCE,OAAQmuE,GACRpuE,OAAQquE,GAERtvE,OAAQiwE,GACRhqE,YAAaspE,GACb5sE,OFJa,YAMX,IAAD,IALDinC,cAAiBprC,GAKhB,aALkC,GAKlC,GALgBA,GAAO+C,EAKvB,uBAJDsB,EAIC,EAJDA,SACAqtE,EAGC,EAHDA,SACAp8D,EAEC,EAFDA,UACA63D,EACC,EADDA,cAEA,OACE,eAAC,KAAD,CACE9oE,SAAU,YAAqD,IAAlDstE,EAAiD,EAAjDA,eAAgBC,EAAiC,EAAjCA,gBAAoBxtE,EAAa,qDAE5D,OADgC,WAAnButE,EAA8BD,EAAWrtE,GAC1CD,EAAQ,CAClB1D,MAA0B,QAAnBixE,EACPE,QAASD,KAGbrtE,cAAa,aAAIvE,MAAO+C,GACxByB,OAAQ,CAAEA,OAAQ0sE,IAClB5sE,WAAYgR,EAVd,SAYE,eAAC67D,GAAD,CAAYnxE,GAAIA,EAAIsV,UAAWA,EAAW63D,cAAeA,QG1BhD2E,GANQtyE,eAASC,MAAM,CACpCO,GAAIL,eAASC,MAAM,UAAUK,IAAI,IACjCwW,YAAa9W,eAASC,MAAM,eAAeK,IAAI,IAC/CmoC,OAAQsZ,eAAU9hD,MAAM,YCgD1B,SAASmyE,GAAT,GAA+D,IAAnCX,EAAkC,EAAtCpxE,GAAesV,EAAuB,EAAvBA,UAAW08D,EAAY,EAAZA,SAAY,EAMxDpxE,eAJF6X,EAF0D,EAE1DA,MACAib,EAH0D,EAG1DA,SACA/yB,EAJ0D,EAI1DA,WACak2D,EAL6C,EAK1DvC,UAAauC,YAETC,GAAiBvsD,kBAAQssD,GAP6B,EAS5B1xD,oBAAS,GATmB,mBASrDksE,EATqD,KAS3CC,EAT2C,KAUtDtxE,EAAKyY,EAAM,MACX/X,EAAQV,IAAOoxE,EAEJa,EAAmB7E,KAA5BnqE,QAER,OACE,eAAClC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAD,CACEuD,SAAU,SAACyC,GACT4sB,EAAS,kBAAmBojC,GAC5BpjC,EAAS,iBAAkB,UAC3B/yB,EAAWmG,IAJf,UAOE,eAAC/F,EAAA,EAAD,CAAKK,UAAU,2BAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMsvE,GAAaD,IAC5BrN,UAAW,EAHb,SAKGtjE,EAAQ,OAAS,WAEpB,eAACoB,EAAA,EAAD,CAAQC,QAAQ,UAAUuH,KAAK,SAA/B,2BAMN,eAACvI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK6Y,GAAI,GAAIC,GAAI,EAAjB,SACE,eAAChZ,GAAA,EAAK4G,MAAN,0BAGJ,gBAAC3G,EAAA,EAAD,CAAKK,UAAU,6CAAf,UACE,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,GAAIC,GAAI,EAAjB,SACE,eAAC,KAAWtY,OAAZ,CACE9B,KAAK,SACL+B,GAAImvE,GACJ3tE,QAASgvE,EACTpwE,SAAO,MAGX,eAACb,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACixE,GAAD,CAAgBlyE,GAAIA,SAGxB,eAACe,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACmxE,GAAD,CAAezyE,KAAK,eAGxB,gBAACyI,GAAA,EAAD,CACEN,KAAMwpE,EACNhpE,OAAQ,kBAAMipE,GAAY,IAC1BlwE,UAAU,SACVggE,kBAAkB,kBAJpB,UAME,eAACj5D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,kCAGA,eAACH,GAAA,EAAMK,KAAP,UACE,eAAC,GAAD,CACEX,KAAMwpE,EACNhpE,OAAQ,kBAAMipE,GAAY,IAC1B5wE,MAAOA,EACP4U,UAAWA,EACX08D,SAAU,WACJ7lC,QAAQ,4CACV6lC,IAAWvlE,MAAK,kBAAM6kE,GAAY,qBAYtD,SAASa,GAAT,GAA8D,IAArCzyE,EAAoC,EAApCA,KAAoC,IAA9BM,UAA8B,MAAzBN,EAAyB,EAAnBoiE,EAAmB,EAAnBA,MAAU9+D,EAAS,wCAIvDwU,aAAc,CAAE9X,OAAMoiE,UAJiC,IAEzDrqD,MAAShU,EAFgD,EAEhDA,MAAOoD,EAFyC,EAEzCA,SACFiG,EAH2C,EAGzD4K,WAAc5K,MAH2C,EAOvDlM,eADF+W,aAAgBrT,kBANyC,SAS3D,OACE,eAACoqE,GAAD,aACE1uE,GAAIA,EACJoE,OAAQX,EACRoD,SAAU,SAACo4B,GACT,OAAOp4B,EAASo4B,IAElB36B,WAAYA,EACZsT,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,SACX/J,IAKV,SAASwuE,GAAT,GAA4D,IAAD,IAAtCnpE,EAAsC,EAAtCA,OAAQ3H,EAA8B,EAA9BA,MAAO4U,EAAuB,EAAvBA,UAAW08D,EAAY,EAAZA,SAAY,EAOrDpxE,eALF6X,EAFuD,EAEvDA,MACAk+C,EAHuD,EAGvDA,SACAjjC,EAJuD,EAIvDA,SACA/yB,EALuD,EAKvDA,WALuD,IAMvD2zD,UAAawC,EAN0C,EAM1CA,cAAeF,EAN2B,EAM3BA,aAG9B/1D,aAAa,CACXuxE,aAAc,WACZ/pE,IACAqrB,EAAS,kBAAmBojC,GAC5BpjC,EAAS,iBAAkBhzB,EAAQ,MAAQ,WAI/C,IAAMunC,EAAWxvB,EAAM,YAEf45D,EAAgB7xD,GAAY/d,OAAO,CAAEzC,GAAIioC,IAAzCoqC,YACR,OACE,eAACtxE,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,uBAEF,eAAC1G,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAKO,MAAN,aAAYzB,MAAM,UAAa+2D,EAAS,iBAG5C,eAAC,KAAD,CAAYj3D,KAAK,KAAKyB,aAAa,MAAMkT,YAAY,iBACrD,eAAC,KAAD,CACE3U,KAAK,cACLyB,aAAa,MACbkT,YAAY,0BAEd,eAACvT,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAAC,GAAYQ,OAAb,CACEg0B,mBAAmB,YACnB51B,MAAM,mBACN6D,MAAOwkC,EACPphC,SAAU,SAACsO,GAAD,OAAOue,EAAS,WAAYve,IACtC6E,aAAW,IAEb,eAAClZ,GAAA,EAAKoF,KAAN,UACE,eAACosE,GAAA,EAAD,CACEnY,QAAQ,QACR75C,UAAU,OACViyD,WAAS,EACTC,QACE,gBAACC,GAAA,EAAD,CAASrxE,UAAU,WAAnB,UACE,eAACqxE,GAAA,EAAQlqE,MAAT,6BACA,eAACkqE,GAAA,EAAQC,QAAT,UACE,eAACrP,GAAA,EAAD,CAAWthE,QAAQ,QAAnB,UACc,OAAXswE,QAAW,IAAXA,GAAA,UAAAA,EAAapvE,eAAb,eAAsBob,QAAtB,OACGg0D,QADH,IACGA,GADH,UACGA,EAAapvE,eADhB,aACG,EAAsBsD,KAAI,SAACoa,EAAG7D,GAAJ,OACxB,eAACumD,GAAA,EAAU5pD,KAAX,UACG/T,IAAEqqB,WAAW,OAADpP,QAAC,IAADA,OAAA,EAAAA,EAAGsB,SAAUtB,IAD5B,gBAA8B7D,OAIhC,YAfd,SAqBE,eAAChb,EAAA,EAAD,CAAQC,QAAQ,OAAOX,UAAU,aAAjC,8BAQR,eAACL,EAAA,EAAD,CAAKK,UAAU,2BAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,UACR6F,SAAU0N,GAAashD,EACvB50D,QAAS,WACPqG,IACAqrB,EAAS,kBAAmBojC,GAC5BpjC,EAAS,iBAAkBhzB,EAAQ,MAAQ,QAC3CC,KAPJ,SAUGD,EAAQ,UAAY,SAEtBsxE,EACC,eAAClwE,EAAA,EAAD,CACEC,QAAQ,SACR6F,SAAUlH,GAAS4U,GAAashD,EAChC50D,QAASgwE,EAHX,oBAOE,iBASlB,SAASE,GAAT,GAAiC,IAAPlyE,EAAM,EAANA,GAAM,EACa8nC,GAASrlC,OAAO,CAAEzC,OAArD2yE,EADsB,EACtBA,SAAUxjE,EADY,EACZA,UAAWqD,EADC,EACDA,UACvBogE,IAAeD,EACrB,OACE,gBAAC7wE,EAAA,EAAD,CACEC,QAAS6wE,EAAa,UAAY,kBAClC5wE,QAAS,WACP,OAAO4wE,EAAapgE,EAAUxS,GAAMmP,EAAUnP,IAEhD4H,UAAW5H,EALb,UAOG4yE,EAAa,eAAC,KAAD,IAAiB,eAAC,KAAD,IAPjC,gB,OCtRF7zE,aAAkB,CAChBC,OAAQ+oC,GAAY/oC,OACpBE,QAAS6oC,GAAY7oC,UAHGitB,G,GAAb/sB,YAAoCyzE,G,GAAXvzE,UCMlC+zC,GAAeC,aAAa,CAChCC,YAAY,EACZC,eAAe,EACf01B,UAAW,MACXl4D,UAAW,YAAe,IAAZhN,EAAW,EAAXA,KACZ,MAAM,GAAN,OAAUA,EAAKpE,MAAf,YAAwBoE,EAAKmlE,mBAE/B/6C,MAAM,ICTR,IAAM0kD,GAAoBj9D,aAAkB,CAC1CnW,KAAM,SACNJ,UAAWuzE,KAmBExvE,GAhBA,CAEbf,IAAKylC,GAAYzlC,IAEjBpD,QAAS6oC,GAAY7oC,QACrBsD,UAAWulC,GAAY/oC,OAAOwD,UAE9BE,OAAQypB,GACR1pB,OAAQowE,GAERrxE,ODHa,YAIX,IAHFiC,EAGC,EAHDA,MAGC,IAFD4Q,mBAEC,MAFa,sBAEb,EADErR,EACF,0CACiCmpB,KADjC,IACOpG,eADP,MACiB,GADjB,EACqBvW,EADrB,EACqBA,QACdm1B,EAAcmD,GAASplC,SAAvBiiC,UACFjwB,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAH9C,EAKgCxR,mBAAQ,WACvC,IAAM6vE,EAAchtD,EAAQxiB,QAC1B,SAACyR,GAAD,OAAOA,EAAEozB,SAAWpzB,EAAEjV,OAASiV,EAAEjV,QAAU2U,KAFA,EAIV+J,kBAAQs0D,GAAa,SAAC/9D,GAAD,OACtDA,EAAEjV,QAAU2U,EAAO,UAAY,cALY,IAIrCs+D,eAJqC,MAI3B,GAJ2B,EAIvB7qC,EAJuB,EAIvBA,SAUhB8qC,EAAa,SAAC9pE,EAAGggE,GAAJ,OACjBhgE,EAAE5C,KAAI,SAACyO,GAAD,MAAQ,CACZpV,MAAOoV,EAAEhV,GAAK,KAAOgV,EAAEyB,YACvBhT,MAAOuR,EAAEhV,GACTmpE,wBAGE3zD,EAAU,CACd,CAAE5V,MAAO,YAAa4V,QAASy9D,GAdL,OAATtuC,QAAS,IAATA,OAAA,EAAAA,EAAWtmB,QAC1B00D,EAAYxvE,QAAO,SAACyR,GAAD,OACjB2vB,EAAUp+B,KAAI,SAACyO,GAAD,OAAOA,EAAEwvB,cAAYvzB,SAAS+D,EAAEhV,OAEhD,GAUoD,cACtD,CAAEJ,MAAO,QAAS4V,QAASy9D,EAAWD,EAAS,UAC/C,CAAEpzE,MAAO,SAAU4V,QAASy9D,EAAW9qC,EAAU,YAGnD,MAAO,CACL3yB,UACA09D,YAAa19D,EAAQyX,QAAO,SAACkmD,EAAM7uD,GAAP,OAAaA,EAAE9O,QAAQjC,OAAO4/D,KAAO,OAElE,CAACptD,EAASrR,EAAMiwB,IA/BXnvB,EALP,EAKOA,QAAS09D,EALhB,EAKgBA,YAgCXj+D,EAAcxR,EAAQ2R,eAAK89D,EAAa,CAAC,QAASzvE,IAAU,KAElE,OACE,eAAC0S,GAAA,EAAD,aACEb,UAAW9F,EACX/L,MAAOwR,EACPO,QAASA,EACTnB,YAAaA,EACbg/B,aAAcA,IACVrwC,KC9CRyE,YAAaqrE,GACb3uE,OHKa,YAMX,IAAD,IALDskC,SAAYzoC,EAKX,EALWA,GAAOuD,EAKlB,uBAJDc,EAIC,EAJDA,SACAqtE,EAGC,EAHDA,SACAM,EAEC,EAFDA,SACA18D,EACC,EADDA,UAEA,OACE,eAAC,KAAD,CACEjR,SAAU,YAA0D,IAAvDstE,EAAsD,EAAtDA,eAAgBC,EAAsC,EAAtCA,gBAAoBwB,EAAkB,qDAEjE,OADgC,WAAnBzB,EAA8BD,EAAWrtE,GAC1C+uE,EAAa,CACvB1yE,MAA0B,QAAnBixE,EACPE,QAASD,KAGbrtE,cAAa,aAAIvE,MAAOuD,GACxBiB,OAAQ,CAAEA,OAAQstE,IATpB,SAWE,qCAAG,eAACC,GAAD,CAAc/xE,GAAIA,EAAIsV,UAAWA,EAAW08D,SAAUA,SGtB7DlqC,SAAUA,IClBG,SAASurC,GAAT,GAKX,IAJF7uC,EAIC,EAJDA,WACA8uC,EAGC,EAHDA,gBAGC,IAFDC,cAEC,aADD53D,cACC,SACK4nC,EAAkB5uC,aACtB,SAACpS,GAAD,OAAWA,EAAM6hC,IAAIA,IAAImf,kBACzBiwB,KAHD,EA+CH,YAA8E,IAAhDhvC,EAA+C,EAA/CA,WAAY8uC,EAAmC,EAAnCA,gBAAmC,IAAlB33D,cAAkB,WAChCtY,GAAOZ,OAAO,CACvDzC,GAAIwkC,EACJ7oB,WAFMpY,EADmE,EACnEA,OAAiBkwE,EADkD,EAC3DjkE,QAKVkkE,EAAmBJ,IAAe,OAAI/vE,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ0kC,UANuB,EASzEznB,GAAY/d,OAAO,CACjBzC,GAAI0zE,IAFa3wE,EARsD,EAQnEsvE,YAA8BsB,EARqC,EAQ9CnkE,QAK7B,MAAO,CACLjM,SACAR,SACAyM,QAASikE,GAAiBE,IAAsB,GAzDdC,CAAmB,CACrDpvC,aACA8uC,kBACA33D,WAHMpY,EANP,EAMOA,OAAQR,EANf,EAMeA,OAAQyM,EANvB,EAMuBA,QAMlBpG,EAAW0O,cAEXurC,EAAqBt7C,uBACzB,SAACkX,GAAD,OAAc7V,EAASs6C,GAAQxkD,QAAQmkD,mBAAmBpkC,MAC1D,CAAC7V,IAGGyqE,EAAiBnuE,IAAE6E,QAAF,OAAUg5C,QAAV,IAAUA,OAAV,EAAUA,EAAiBhgD,QAC5CuwE,EAAsBpuE,IAAE6E,QAAF,OAAUg5C,QAAV,IAAUA,OAAV,EAAUA,EAAiBxgD,QAkBvD,OAjBA+Y,qBAAU,WACHy3D,IACDhwE,GAAUswE,GACZxwB,EAAmB,CAAE9/C,WAEnBR,GAAU+wE,GACZzwB,EAAmB,CAAEtgD,cAEtB,CACDwwE,EACAM,EACAC,EACAvwE,EACAR,EACAsgD,IAGK,CACL9/C,SACAR,SACAwgD,kBACA/zC,UACA6zC,sBC/CJ,IAAM6b,GAAgB,CACpB92B,QAAQ,EACR7kC,OAAQ,CACN+kC,SAAU,WAEZxzB,OAAQ,ICyHV,SAASi/D,GAAT,GAAqD,IAA1BtwE,EAAyB,EAAzBA,MAAO4E,EAAkB,EAAlBA,OAAQsxD,EAAU,EAAVA,OACxC,OACE,eAAC,KAAD,CACEp1D,cAAed,EACfY,SAAU,SAAC8Q,GACTwkD,EAAOxkD,GACP9M,KAEF7D,OAAQ,CAAEA,OAAQs8C,IANpB,SAQE,eAACkzB,GAAD,CAAiB3rE,OAAQA,MAK/B,SAAS2rE,GAAT,GAAsC,IAAX3rE,EAAU,EAAVA,OACjB1H,EAAeC,eAAfD,WACR,OACE,gBAACG,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,eAACI,EAAA,EAAD,CAAKK,UAAU,gBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,IAAIG,UAAU,aAAtB,SACE,oDAGJ,gBAACL,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,6BACLE,MAAM,SACNw3B,aAAW,EACXU,YAAY,MAGhB,eAAC92B,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,6BACLE,MAAM,SACNw3B,aAAW,EACXU,YAAY,SAIlB,eAAC/2B,EAAA,EAAD,CAAKK,UAAU,qBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,IAAIG,UAAU,aAAtB,SACE,iDAGJ,gBAACL,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,0BACLE,MAAM,SACNw3B,aAAW,EACXU,YAAY,MAGhB,eAAC92B,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,0BACLE,MAAM,SACNw3B,aAAW,EACXU,YAAY,SAIlB,eAAC/2B,EAAA,EAAD,CAAKK,UAAU,qBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,IAAIG,UAAU,aAAtB,SACE,+CAGJ,gBAACL,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,qBACLE,MAAM,SACNk4B,YAAY,MAGhB,eAAC92B,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,qBACLE,MAAM,SACNk4B,YAAY,SAIlB,eAAC/2B,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CAAQwH,KAAK,SAAb,kBACA,eAACxH,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,WACPqG,KAHJ,8B,ICtNG4rE,GARiBl1E,aAAkB,CAChDC,OAAQ0kD,GAAQ1kD,OAChBE,QAAS,CACP0O,QAAS81C,GAAQxkD,QAAQ0O,QACzB6E,MAAOixC,GAAQxkD,QAAQuT,SAJnBrT,YCsEO80E,GA1CJ,CAET5xE,IAAKohD,GAAQphD,IAEbpD,QAASwkD,GAAQxkD,QACjBsD,UAAWkhD,GAAQ1kD,OAAOwD,UAE1BE,OAAQuxE,GACRxxE,OAAQ+oE,GACRx+B,UAAWk+B,GACXiJ,iBAAkBd,GAClBe,gBAAiBhH,GAEjBiH,cAAe7xB,GACfh+C,OAAQs8C,GACR6iB,qBAAsBiI,GACtBlI,aC1Ca,WAEbj4B,GACC,IAFCzrC,EAEF,EAFEA,GAAI+M,EAEN,EAFMA,QAAS6C,EAEf,EAFeA,QAASxG,EAExB,EAFwBA,SAExB,IAFkC+Q,YAElC,MAFyC,kBAAM,GAE/C,EAFqDwlC,EAErD,EAFqDA,iBAGrDv2C,EAASs6C,GAAQxkD,QAAQgQ,OAAO,CAAElP,QAC/ByM,KAAK4jB,KACL5jB,MAAK,YAAmB,IAAVyyC,EAAS,EAAfl7C,KACHmW,EAAK+kC,IACPtT,GACE,CACE7+B,UACAo/B,QAAS,MACTC,OAAQ,KACRF,UAAW,WACT9iC,EACEs6C,GAAQxkD,QAAQmQ,UAAU,CACxBrP,KACAgE,KAAM4L,EACN+yC,6BAA6B,KAE/Bl2C,MAAK,WACDkzC,GAAkBv2C,EAASu2C,UAIrClU,ODmBR7yB,IAAK8yD,GACLvnE,OAAQ2lE,GACRnnE,SACA+nE,KE/Ca,YAA6B,IAAD,EACqBQ,GAAe,CAC3E3nE,OAFuC,EAAVA,SACvB6gC,EADiC,EACjCA,IAAK50B,EAD4B,EAC5BA,QAASuC,EADmB,EACnBA,WAAYsZ,EADO,EACPA,QAASD,EADF,EACEA,QAAS3Y,EADX,EACWA,MAI9C6hE,EAAmBvsE,uBAAY,WACnC0K,MACC,CAACA,IAEJ,OACE,eAACo4D,GAAD,CACEnrE,KAAK,MACL+wC,OAAQ,CAAC,KAAM,YACfzsC,KAAMogC,EACNwmC,KAAK,QACLt1D,UAAW9F,EACXuC,WAAYA,EACZqZ,QAASA,EACTC,QAASA,EACTC,UAAWgpD,KF6BfrwE,KAAMwmE,GACN7F,OAAQM,GACRf,aAAcoL,GACd/tE,OpB1Ca,YAcX,IAAD,EAbDxB,EAaC,EAbDA,GACAJ,EAYC,EAZDA,MACAiH,EAWC,EAXDA,SAWC,IAVDwN,mBAUC,MAVa,gBAUb,EATOgsD,EASP,EATDxoD,OACOsf,EAQN,EARD1zB,MACA6R,EAOC,EAPDA,UAOC,IANDi/D,oBAMC,aALD3Y,uBAKC,SAJD0E,EAIC,EAJDA,SAIC,IAHDC,6BAGC,SAFDiU,EAEC,EAFDA,eACGxxE,EACF,4KACyBmC,mBAAS,IADlC,mBACMkY,EADN,KACaC,EADb,OAE2BoD,aAAe2/C,GAF1C,mBAEMxoD,EAFN,KAEc4oD,EAFd,OAG+CgD,GAAQhhE,OAAOyM,SAAvDosD,EAHP,EAGOA,WAAqBoF,EAH5B,EAGmBlxD,QAHnB,EAIqCg8D,GAAMt8D,SAApCkxD,EAJP,EAIOA,MAAgBqU,EAJvB,EAIcjlE,QAJd,EAMqCrK,mBAAS,MAN9C,mBAMMuvE,EANN,KAMmBC,EANnB,KAOKC,EAAmC,OAAhBF,EAErBl/D,EAAU,GAEdiuD,GAAQ1D,cAAc,CAAE1iD,QAAO7H,YAC/B,IAZC,EAqBCiqD,GAAuB,CAAEjqD,UAASjS,OATb,SAAC04B,GACtB,MACqB,MAAnBA,EAASva,UACP8yD,KACA,OAACv4C,QAAD,IAACA,OAAD,EAACA,EAAUwC,aADZ,OAECxC,QAFD,IAECA,OAFD,EAECA,EAAUwC,UAAUxtB,SAASujE,QAGlBxT,EApBhB,EAoBOxxD,QAAmCyxD,EApB1C,EAoBiCrzD,QApBjC,EA2BG61D,GAAQjiE,OAAOm/D,SAAS,CAC1Bh6C,IAAKy5C,EACLvoD,OAAQwoD,EACRP,OAAQ,KACRW,YACA32B,MAAOw2B,IARMuU,EAxBd,EAwBChU,YACAp9D,EAzBD,EAyBCA,MACSqxE,EA1BV,EA0BCtlE,QASI0xD,GACJ5rD,GACAw/D,GACApU,GACA+T,GACAzT,IACA,EAEIxG,GAAezyD,sBAAW,sBAC9B,4CAAAoB,EAAA,0FAAwB,GAAf22D,EAAT,EAASA,OAAQ9/D,EAAjB,EAAiBA,GACA,YAAX8/D,EADN,yCAEWxE,EAAW,CAAEt7D,OACjByM,MAAK,kBAASyyB,EAAT,EAAGl7B,KAAH,OACG,OAAPk7B,QAAO,IAAPA,OAAA,EAAAA,EAASkF,IAAI/lB,QAAS,EAClBs2D,EAAe,CAAE1K,iBAAgB,OAAE/qC,QAAF,IAAEA,OAAF,EAAEA,EAASl/B,KAC5C60E,EAAQ,OAAC31C,QAAD,IAACA,GAAD,UAACA,EAASkF,IAAI,UAAd,aAAC,EAAiBpkC,IAAIyM,MAAK,SAACyyC,GAAD,OAAQr4C,EAAS,eAAKq4C,UAE9DryC,OAAM,SAAC/F,GAAD,OAAO25D,EAAU35D,EAAEiG,aARhC,UASsB,OAAX+yD,EATX,yCAUW+U,EAAS70E,GACbyM,MAAK,SAACyyC,GAAD,OAAQr4C,EAAS,eAAKq4C,OAC3BryC,OAAM,SAAC/F,GAAD,OAAO25D,EAAU35D,EAAEiG,aAZhC,YAakBgD,IAAP/P,GAAkB6G,EAAS,MAbtC,4CAeA,CAACy0D,EAAYuZ,EAAUhuE,EAAU45D,IA3DlC,GA8DqCt7D,mBAAS,MA9D9C,qBA8DM4vE,GA9DN,MA8DmBC,GA9DnB,MA+DK1T,IACH2C,gBAAM9sC,IACPA,KAAY,OAAK1zB,QAAL,IAAKA,GAAL,UAAKA,EAAOA,aAAZ,aAAK,EAAczD,MACd,OAAhB+0E,IAAwB59C,IAAiB49C,IAkB5C,OAhBAj5D,qBAAU,WACJwlD,KACE1F,GACFoZ,GAAe79C,GACfqjC,GAAa,CAAEsF,OAAQ,KAAM9/D,GAAIm3B,KAC5B09C,EAAS19C,GAActqB,OAAM,SAAC/F,GAAD,OAAO25D,EAAU35D,EAAEiG,eAExD,CACDoqB,EACAmqC,GACAb,EACA7E,EACApB,GACAqa,IAIA,eAAC/zE,GAAA,EAAKC,IAAN,CAAUK,UAAU,qBAApB,SACE,gBAACJ,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACGnB,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,CAAY8uB,QAASx2B,EAArB,SAA0BJ,IAAsB,OAE3D,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,eAAC4U,GAAA,EAAD,aACEigB,WAAYG,GACZliB,YAAaA,EACbiB,UAAW4rD,GACXt5D,SAAUs5D,GACVz9D,MAAOA,EACP+R,QAASA,EACT3O,SAAU2zD,GACV77C,cAAe,SAAC0pB,GAAD,OAAO/qB,EAAS+qB,IAC/B84B,mBAAiB,EACjBtpD,OAAQA,EACRD,UAAWC,GACP7U,MAGPuxE,EACC,eAACvzE,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CACEE,QAAS,kBAAM2yE,EAAe,KAC9B5yE,QAAQ,QACRmG,MAAM,gBAHR,SAKE,eAAC,KAAD,QAGF,KACJ,gBAACC,GAAA,EAAD,CACEN,KAAM+sE,EACNxsE,KAAK,KACLC,OAAQ,kBAAMssE,EAAe,OAC7BvzE,UAAU,SACVggE,kBAAkB,kBALpB,UAOE,eAACj5D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,0BAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAACwmE,GAAD,aACE9pE,SAAU,SAAClF,GACT20E,EAAe,MACfna,GAAa,CAAEx6D,KAAI8/D,OAAQ,SAEzB4U,YAKZ,eAAC5zE,GAAA,EAAKC,IAAN,CAAUK,UAAU,iCAApB,SACE,eAACJ,EAAA,EAAD,CAAK+1D,GAAG,OAAR,SACGwJ,EACC,eAACz+D,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,uBACVgH,KAAK,KACLpG,QAAS,WACPi/D,KALJ,8BAUE,eoB3HdiD,OAAQ8K,GACRiG,oBHzCa,YAGX,IAAD,IAFD7wE,OAAkB8wE,GAEjB,aAF8D,GAE9D,GAFS3xE,OAAiC4xE,EAE1C,EAFkCpyE,OACnCsB,EACC,EADDA,SACC,EAC+Bc,mBAAS,2BACpC+5D,IACAgW,IAHJ,mBACMzsC,EADN,KACgB2sC,EADhB,OAKyCjwE,mBAAS,eAC9CgwE,IANJ,mBAKM/pC,EALN,KAKqBiqC,EALrB,OAQ+BlwE,mBAAS,MARxC,mBAQMmwE,EARN,KAQgBC,EARhB,OAS+BpwE,qBAT/B,mBASM8iC,EATN,KASgButC,EAThB,KAWKh4D,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAXtD,EAkBG2+D,GAAmB,CACrBC,gBAAiBrrC,EACjBzD,WAAY8wC,EACZ35D,QAAQ,IAPA85D,EAdT,EAcClyE,OACQmyE,EAfT,EAeC3yE,OACA4yE,EAhBD,EAgBCA,qBACAnmE,EAjBD,EAiBCA,QAjBD,EA4BGnM,GAAOZ,OAAO,CAChBzC,GAAE,OAAEyoC,QAAF,IAAEA,OAAF,EAAEA,EAAUzoC,KAJH41E,EAzBZ,EAyBCzmE,UACW0mE,EA1BZ,EA0BCxmE,UACWymE,EA3BZ,EA2BCtjE,UA3BD,EAiCCgO,GAAY/d,OAAO,CACjBzC,GAAE,OAAEorC,QAAF,IAAEA,OAAF,EAAEA,EAAeprC,KAFJ+1E,EAhClB,EAgCO5mE,UAA2C6mE,EAhClD,EAgCuC3mE,UAexC,SAAS4mE,EAAT,GAA2C,IAAnB1yE,EAAkB,EAAlBA,OAAQR,EAAU,EAAVA,OAC1BmzE,EAAS,eAAQ3yE,EAAOA,QAE5BmQ,OAAOC,QAAQuiE,GAAWtiE,SAAQ,YAAmB,IAAD,mBAAhB/K,EAAgB,KAAXpF,EAAW,KAC9CiC,IAAEkxB,OAAOnzB,WAAeyyE,EAAUrtE,MAExCxE,EAAS,CACPd,OAAO,2BAAMA,GAAP,IAAeA,OAAQ2yE,IAC7BnzE,WAEFwyE,EAAY,MACZC,EAAY,MAGd,OAxBA15D,qBAAU,WACJ25D,GAAgBL,EAAY,eAAKK,MACpC,CAACA,IAEJ35D,qBAAU,WACJ45D,IAAwBhwE,IAAEkxB,OAAOqR,IACnCotC,EAAiB,eAAKK,MAEvB,CAACA,EAAqBztC,IAiBvB,gBAACkuC,GAAA,EAAD,CAAMC,iBAAiB,SAAvB,UACE,gBAACC,GAAA,EAAD,CAAKC,SAAS,SAASpuE,MAAM,SAA7B,UACE,eAACnH,EAAA,EAAD,CAAKK,UAAU,+CAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAD,CACEuD,SAAU,SAACyC,GACTA,EAAE6c,iBACFsyD,EAAa,CAAE1yE,OAAQklC,EAAU1lC,OAAQqoC,KAH7C,SAME,eAAC,GAAO5pC,OAAR,CACE5B,MAAM,eACN6D,MAAK,OAAEglC,QAAF,IAAEA,OAAF,EAAEA,EAAUzoC,GACjB6G,SAAU,SAACpD,GACT8xE,EAAY9xE,GACPA,GAAO2xE,GAAY,cAAGp1E,GAAH,IAAUgV,EAAV,6CAAwBA,OAElDwgB,mBAAmB,OACnBxb,aAAW,UAMnB,eAACjZ,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAOmD,OAAR,CACEskC,SAAUA,EACVnzB,UAAW9F,EACXkiE,SAAU,SAAC0B,EAAD,OAAgBvB,EAAhB,EAAgBA,QAAhB,OACRoE,EAAa,CACX1yE,OAAO,2BACF6vE,GADC,IAEJmD,YAAoB,OAAR9tC,QAAQ,IAARA,OAAA,EAAAA,EAAU8tC,aAAc1E,EAEpC7xE,IACU,OAARyoC,QAAQ,IAARA,OAAA,EAAAA,EAAUzoC,OAAV,OAAiBozE,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAapzE,KAA9B,OAEIozE,QAFJ,IAEIA,OADArjE,EACAqjE,EAAapzE,KAErB+C,OAAQqoC,KAGZ/mC,SAAU,cAGL,EAFDstE,eAEC,EAFeC,gBAEd,IAFkCwB,EAEnC,qDADD1yE,EACC,EADDA,MAGF,OADA00E,EAAY,2BAAKhC,GAAN,IAAmBmD,YAAY,KACnC71E,EACHk1E,EAAe,2BAAKxC,GAAN,IAAmBrzE,MAAOyd,KACxCq4D,EAAezC,IAErBpB,SAAU,kBACR8D,IAAiBrpE,MAAK,kBACpB2oE,GAAY,cAAGp1E,GAAH,IAAUgV,EAAV,6CAAwBA,mBAOhD,gBAACqhE,GAAA,EAAD,CAAKC,SAAS,SAASpuE,MAAM,SAA7B,UACE,eAACnH,EAAA,EAAD,CAAKK,UAAU,uBAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC,GAAYQ,OAAb,CACEg0B,mBAAmB,YACnB51B,MAAM,eACN6D,MAAK,OAAE2nC,QAAF,IAAEA,OAAF,EAAEA,EAAeprC,GACtB6G,SAAU,SAACpD,GACJA,EAIH+xE,EAAY/xE,IAHZ4xE,GAAiB,cAAGr1E,GAAH,IAAUw5C,EAAV,6CAAwBA,MACzCg8B,EAAY,QAKhBx7D,aAAW,QAIjB,eAACjZ,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAYmD,OAAb,CACEinC,cAAeA,EACf+hC,cAAewI,EACftxE,SAAU,SAACmyE,EAAD,GAAkC,IAAb91E,EAAY,EAAZA,MAE7B,OADA20E,EAAiBmB,GACV91E,EACHq1E,EAAoBS,GACpBR,EAAoBQ,IAE1B9E,SAAU,SAAC8E,GAAD,OACRP,EAAa,CACX1yE,OAAQklC,EACR1lC,OAAQyzE,kBGrHxB/R,YnBnCa,YAAgC,IAAPvlB,EAAM,EAANA,GAAM,EACpB/5C,oBAAS,GADW,mBACrC0C,EADqC,KAC/BC,EAD+B,OAEN3C,oBAAS,GAFH,mBAErCivD,EAFqC,KAExBC,EAFwB,KAGtCpvD,EAAM2a,iBAAO,MAEnB,OACE,uCACE,gBAAC9d,EAAA,EAAD,CAAQmD,IAAKA,EAAKlD,QAAQ,QAAQC,QAAS,kBAAM8F,GAAQ,IAAzD,UACE,eAAC,KAAD,IADF,YAGA,eAACsY,GAAA,EAAD,CACElY,MACE,uCACE,eAAC,KAAD,IADF,eAIFnB,OAAM,OAAE9B,QAAF,IAAEA,OAAF,EAAEA,EAAK4K,QACbhI,KAAMA,EACNQ,OAAQ,kBAAMP,GAAQ,IACtBwY,UAAU,MATZ,SAWE,gBAAC+iD,GAAA,EAAD,CAAWrhE,QAAS,kBAAM8F,GAAQ,IAAlC,UACE,gBAACu7D,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAACnI,QAAS,kBAAMqyD,GAAe,IAArD,UACE,eAAC,KAAD,IADF,YAGA,eAAC,KAAD,CACEpmC,KAAI,OAAEixB,QAAF,IAAEA,OAAF,EAAEA,EAAIxjC,UACVgpD,OAAQ,kBAAMvzD,IAAMiO,QAAQ,qBAF9B,SAIE,gBAACikD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,UACE,eAAC,KAAD,IADF,uBAIF,eAAC,KAAD,CACE8jB,KAAI,OAAEixB,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,GACV0kE,OAAQ,kBAAMvzD,IAAMiO,QAAQ,gBAF9B,SAIE,gBAACikD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,UACE,eAAC,KAAD,IADF,uBAMN,gBAAChC,GAAA,EAAD,CAAON,KAAMusD,EAAa/rD,OAAQ,kBAAMgsD,GAAe,IAAvD,UACE,eAAClsD,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,mCACek/C,QADf,IACeA,OADf,EACeA,EAAIl/C,QAGrB,eAACmI,GAAA,EAAMK,KAAP,UACE,eAAC6mE,GAAD,CAAoBnwB,GAAIA,EAAI72C,OAAQ,kBAAMgsD,GAAe,emBdjE5hC,ezClDa,YAAyD,IAA7BysB,EAA4B,EAA5BA,GAAIr3C,EAAwB,EAAxBA,KAAMQ,EAAkB,EAAlBA,OAAQsxD,EAAU,EAAVA,OAC3D,OACE,gBAACxxD,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAA3B,UACE,eAACF,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,iCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAAC,GAAD,CAAc02C,GAAIA,EAAI72C,OAAQA,EAAQsxD,OAAQA,UyC4CpD8c,iBF7Ca,YAIX,IAAD,IAHDv3B,UAGC,MAHI,GAGJ,MAFD5pC,iBAEC,SADDqkD,EACC,EADDA,OACC,EAC+Bx0D,oBAAS,GADxC,mBACMuxE,EADN,KACgBC,EADhB,KAEKC,EAAe,kBAAMD,GAAY,IAErCv0B,EAMElD,EANFkD,wBACAF,EAKEhD,EALFgD,2BACAI,EAIEpD,EAJFoD,mBACAD,EAGEnD,EAHFmD,wBACAF,EAEEjD,EAFFiD,2BACAI,EACErD,EADFqD,mBAGIs0B,EAAc,SAAChrD,GACnB,OAAKA,EACEqM,KAAU0c,UAAU/oB,GAAGhhB,cADf,IAGXisE,EAAU,SAACjrD,GACf,OAAKA,EACEuM,KAAMwc,UAAU/oB,GAAGhhB,cADX,IAIXzG,EAAS,CACbg+C,wBAAyBy0B,EAAYz0B,GACrCF,2BAA4B20B,EAAY30B,GACxCI,mBAAoBw0B,EAAQx0B,GAC5BD,wBAAyBw0B,EAAYx0B,GACrCF,2BAA4B00B,EAAY10B,GACxCI,mBAAoBu0B,EAAQv0B,IAG9B,SAAS+qB,EAAgBzhD,GAAmB,IAAhBkrD,EAAe,uDAAJ,GACrC,GAAIzhE,EAAW,OAAO,eAAC,KAAD,IACtB,IAAM0hE,EAAW9+C,KAAUo1C,gBAAgBzhD,GAC3C,OAAOmrD,GAAYD,EAErB,SAASE,EAAYprD,GAAmB,IAAhBkrD,EAAe,uDAAJ,GACjC,GAAIzhE,EAAW,OAAO,eAAC,KAAD,IACtB,IAAM0hE,EAAW9+C,KAAU4c,QAAQjpB,GACnC,OAAOmrD,GAAYD,EAErB,OACE,uCACE,gBAAC,KAAD,CAAO3uE,KAAK,KAAZ,UACE,mCACE,8BACE,qBAAI8uE,QAAS,EAAb,SACE,gBAACn2E,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKI,UAAU,cAAf,SACE,iDAEF,eAACJ,EAAA,EAAD,UACE,eAACD,EAAA,EAAD,CAAKK,UAAU,sBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACIqU,EAQE,KAPF,eAACxT,EAAA,EAAD,CACEC,QAAQ,OACRqG,KAAK,KACLpG,QAAS,kBAAM20E,GAAY,IAH7B,+BAed,gCACE,wBACA,yCACA,+CAGJ,mCACE,gCACE,qBAAI9lC,MAAM,MAAMzvC,UAAU,aAA1B,2BAGA,8BAAKksE,EAAgBlpE,EAAO89C,2BAA4B,SACxD,8BAAKorB,EAAgBlpE,EAAO+9C,iCAE9B,gCACE,qBAAItR,MAAM,MAAMzvC,UAAU,aAA1B,wBAGA,8BAAKksE,EAAgBlpE,EAAOg+C,wBAAyB,SACrD,8BAAKkrB,EAAgBlpE,EAAOi+C,8BAE9B,gCACE,qBAAIxR,MAAM,MAAMzvC,UAAU,aAA1B,sBAGA,8BAAK61E,EAAY7yE,EAAOk+C,mBAAoB,SAC5C,8BAAK20B,EAAY7yE,EAAOm+C,+BAI9B,gBAACp6C,GAAA,EAAD,CAAOC,KAAK,KAAKP,KAAM6uE,EAAUruE,OAAQuuE,EAAzC,UACE,eAACzuE,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,qCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAACurE,GAAD,CACE1rE,OAAQuuE,EACRnzE,MAAOW,EACPu1D,OAAQA,aEhElB/e,OAAQA,GACR2X,OAAQ4kB,GACRlO,WAAYA,GACZP,iBAAkBA,GAClBmB,iBAAkBA,GAClBmD,SAAUA,GACVxsD,YAAaA,GACbnd,OAAQ+zE,IG1DK,SAASC,KAAS,IAELC,EACtBxjC,eADF70B,SAAYulB,WAGNjhC,EAAWF,GAAOZ,OAAO,CAC/BzC,GAAIs3E,IADE/zE,OAIFg0E,GAAiB7xE,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQA,QATX,EAUO2wE,GAAGlnC,UAAU,CAChDzpC,OAAM,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAQA,OAChBoY,OAAQ47D,IAFFnzC,EAVsB,EAUtBA,IAAK50B,EAViB,EAUjBA,QAASuC,EAVQ,EAURA,WAKdtD,EAAUg1D,GAAQ7hE,KAAKc,SAAvB+L,MAfsB,EAiBiBvL,mBAAQ,WAyBrD,MAAO,CAxBQkhC,EAAI/lB,OACM+lB,EAAI7gC,QAAO,SAAC27C,GAAD,MAClC,CAAC,KAAM,KAAM,KAAM,MAAMjuC,SAAzB,OAAkCiuC,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAI+sB,sBACtC5tD,OACiB5P,EAChBlI,KAAI,SAACwR,GAAD,MAAQ,CACXzO,KAAMyO,EAAE/X,GACRyW,YAAasB,EAAEtB,YACfuxD,MAAO5jC,EACJ7gC,QAAO,SAAC27C,GAEP,QADiB,OAAFA,QAAE,IAAFA,OAAA,EAAAA,EAAIkB,kBAAJ,OAAsBlB,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAIquB,kBACvBx1D,EAAE/X,MAErBitB,QACC,SAACuqD,EAAQt4B,GAIP,OAHAs4B,EAAO,KACH,CAAC,KAAM,KAAM,KAAM,MAAMvmE,SAAzB,OAAkCiuC,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAI+sB,oBACxCuL,EAAO,KACFA,IAET,CAAC,EAAG,QAGTj0E,QAAO,SAACwU,GAAD,OAAOA,EAAEiwD,MAAM,SAExB,CAAC5jC,EAAK31B,IA3CqB,mBAiBvBgpE,EAjBuB,KAiBfC,EAjBe,KAiBGC,EAjBH,KAiD9Bn9C,EAA2B,KAC3B,IAAMv1B,EAAM2a,mBAEZ,OACE,eAAC9e,GAAA,EAAD,CAAMotE,QAAM,EAAZ,SACE,eAACoE,GAAA,EAAD,CACEvrE,OAAQ9B,EACRqb,UAAU,SACVs3D,MAAO,CAAE/vE,KAAM,IAAK8oC,KAAM,KAC1B6hC,QACE,gBAACC,GAAA,EAAD,CAASzyE,GAAG,aAAZ,UACE,gBAACyyE,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,gCACe8B,QADf,IACeA,OADf,EACeA,EAAQkT,eAEvB,gBAACg8D,GAAA,EAAQC,QAAT,WACE,mCACE,iCACE,gCACE,0CACA,yCACA,kDAGJ,iCACGiF,EAAWpxE,KAAI,SAACwR,GAAD,OACd,gCACE,8BAAKA,EAAEtB,cACP,sBAAIrV,UAAU,aAAd,UAA4B2W,EAAEiwD,MAAM,GAApC,OACA,qBAAI5mE,UAAU,aAAd,SAA4B2W,EAAEiwD,MAAM,OAH7BjwD,EAAEzO,cAQjB,wBAAOlI,UAAU,aAAjB,SACGoO,EACG,aACA,gBAAkB2hB,IAAOpf,GAAYo9D,kBA/BnD,SAqCE,eAAC,OAAD,CAAMhtE,GAAE,6BAAiBoB,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAQvD,IAAjC,SACE,eAACywD,GAAA,EAAD,CAAO1uD,QAAQ,YAAYT,MAAO,CAAEu2E,SAAU,QAAU5yE,IAAKA,EAA7D,SACIsyE,EAAD,UAAyBE,EAAzB,YAAmCC,GAAlB,WCjGf,SAASI,KAA0C,IAAD,yDAAJ,GAAI,IAAvBn8D,cAAuB,SACzDvS,EAAW0O,cACXigE,EAAgBpjE,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMU,aAAaE,SAChEj5C,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMU,aAAa/4C,WAC1DuC,EAAa4C,aACjB,SAACpS,GAAD,OAAWA,EAAMslD,MAAMU,aAAax2C,cAEhCkf,EAAY1R,IAAI2R,oBAEhBm3B,EAAkBtgD,uBAAY,WAClC,OAAOqB,EAASsiD,GAAoBrD,qBACnC,CAACj/C,IAEE0nB,GACO,IAAXnV,IACgB,OAAf5J,GACEof,MAASC,KAAKrf,EAAY,WAAa,IAAMkf,GAElDnV,qBAAU,WACJgV,GAAWu3B,MACd,CAACv3B,EAAWu3B,IAEf,IAAIE,EAAe,GAoBnB,YAlBsBx4C,IAAlBgoE,QAA2DhoE,IAA5BgoE,EAAc/uB,aAC/CT,EAAY,eAAQwvB,IACP/uB,UAAY9wB,KAAU0c,UAAU2T,EAAaS,WAE7B,KAAzBT,EAAaW,SACfX,EAAawjB,QAAU56C,IAAO,IAAIvmB,MAAQwmB,KACxCm3B,EAAaS,UACb,WAEFT,EAAarO,OAAS,YAEtBqO,EAAawjB,QAAU7zC,KACpB0c,UAAU2T,EAAaW,SACvB93B,KAAKm3B,EAAaS,UAAW,WAChCT,EAAarO,OAAS,UACtBqO,EAAaW,QAAUhxB,KAAU0c,UAAU2T,EAAaW,WAGrD,CAAEX,eAAc/4C,UAASuC,aAAYs2C,mBC9C/B,SAAS2vB,GAAT,GAKX,IAJF9sB,EAIC,EAJDA,OACAznD,EAGC,EAHDA,MACA61D,EAEC,EAFDA,cACAp0D,EACC,EADDA,SAEM+yE,EACJ,uCACE,oBACE72E,UAAU,OACVE,MAAO,CAAEC,SAAU,QAAS22E,SAAU,QAASvsC,WAAY,YAF7D,SAIGloC,KAEG,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAO2qB,OAAO/P,QAAS,EACtB,6BACE,gEAEE,wBAFF,mBAKA,QAIR,OAAI3Y,IAAEu+D,MAAM/Y,IAAsB,KAAXA,EACd,qCAAG+sB,IAGR,eAAC,OAAD,CACE72E,UAAU,kCACVe,GAAI,CAAEC,SAAS,SAAD,OAAW8oD,EAAX,UACdlpD,QAAS,SAAC8E,GACRA,EAAE6c,iBACF7c,EAAEmB,kBACEvC,IAAEC,WAAWT,GAAWA,EAASgmD,GAChCoO,EAAcpO,IAPvB,SAUG+sB,ICnCM,SAASE,GAAT,GAOX,IANF10E,EAMC,EANDA,MACAmE,EAKC,EALDA,SACAf,EAIC,EAJDA,SAIC,IAHDk4D,yBAGC,MAHmB,KAGnB,MAFDqZ,qBAEC,MAFe,KAEf,MADDxc,uBACC,WACmCz2D,oBAAS,GAD5C,mBACM27D,EADN,KACkBC,EADlB,OAEmC57D,mBAAS45D,GAF5C,mBAEMjwD,EAFN,KAEkBupE,EAFlB,OAG2BlzE,mBAASizE,GAHpC,mBAGM33C,EAHN,KAGc63C,EAHd,OAIqCpE,GAAGzxE,OAAOyM,SAAxCkxD,EAJP,EAIOA,MAAgBmY,EAJvB,EAIc/oE,QACf,OACE,gBAAC1O,GAAA,EAAKY,MAAN,WACE,eAAC,GAASg8C,aAAV,CAAuB7tC,QAASkvD,EAAmBlhB,KAAM/uC,IACzD,eAAChO,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,gBACA,eAAC,GAAGI,OAAJ,CACEoG,SAAU2wE,GAAa3wE,EACvBnE,MAAOA,EACPoD,SAAU,SAACsO,GAAO,IAAD,EACTqjE,EAAc,OAAGrjE,QAAH,IAAGA,GAAH,UAAGA,EAAGspB,iBAAN,aAAG,EAAe,GAAGz+B,GACrCw4E,GAAgBH,EAAcG,GAClC3xE,EAASsO,IAEX6E,aAAW,EACXu6D,cAAc,EACdj/D,UAAWijE,EACX3c,gBAAiBA,EACjB0E,UAAQ,EACRC,uBAAqB,EACrBiU,eAAgB1lE,SAItB,eAAChO,GAAA,EAAKC,IAAN,CAAUK,UAAU,oCAApB,SACE,gBAACJ,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,wBAGJ,gBAACN,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,GAASQ,OAAV,CACEiC,MAAOqL,EACP0mB,mBAAmB,OACnB3uB,SAAUwxE,EACVr+D,aAAW,EACX1V,WAAYi0E,GAAa3wE,MAG7B,eAAC5G,EAAA,EAAD,UACE,eAAC,KAAKQ,OAAN,CACEiC,MAAOg9B,EACPjL,mBAAmB,OACnB9xB,QAAQ,EACRmD,SAAUyxE,EACVt+D,aAAW,EACX1V,WAAYi0E,GAAa3wE,MAG7B,gBAAC5G,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACa,EAAA,EAAD,CACEC,QAAQ,QACRmG,MAAM,gBACNlG,QAAS,kBAAM++D,GAAc,IAC7Bn5D,SAAU2wE,GAAa3wE,EAJzB,SAME,eAAC,KAAD,MAEF,gBAACO,GAAA,EAAD,CACEN,KAAMi5D,EACN14D,KAAK,KACLC,OAAQ,kBAAM04D,GAAc,IAC5B3/D,UAAU,SACVggE,kBAAkB,kBALpB,UAOE,eAACj5D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,0BAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAAC,GAAG07D,OAAJ,CACEh/D,SAAU,SAAClF,GAAD,OACRogE,EAAM,CAAEpgE,KAAI8pC,MAAO,SAChBr9B,MAAK,gBAASyyC,EAAT,EAAGl7C,KAAH,OAAkB6C,EAASq4C,MAChCnuB,SAAQ,kBAAMgwC,GAAc,OAEjChC,kBAAmBjwD,EACnBkwD,eAAgBv+B,uBC3FpC,SAAS9X,GAAQllB,EAAOooB,GACtB,IAAM4sD,EAAa7jD,WAAWnxB,GAC9B,OAAKA,GAASiC,IAAE+iB,MAAMgwD,IAA8B,IAAfA,EAAyB,KACvD7jD,WAAWnxB,GAAOklB,QAAQkD,GAGnC,SAASgtC,GAAT,GAAmD,IAAD,EAAvBl1D,EAAuB,EAAvBA,IAAKF,EAAkB,EAAlBA,MAAO1B,EAAW,EAAXA,QACrC,OACE,eAAC,KAAD,CACE0B,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,EACjBI,OAAM,OAAEr1D,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAeo1D,OACvB0f,WAAY,SAACj1E,GAAD,OACV1B,EACE,sBAAKX,UAAW,SAAWW,EAAU,SAArC,SAAgD0B,IAEhD,sCAAQA,Q,4CCvBH,SAASk1E,GAAT,GASb,IAHE,IALFl1E,EAKC,EALDA,MACAoD,EAIC,EAJDA,SACA7G,EAGC,EAHDA,GAGC,IAFD4H,gBAEC,aADD3H,WACC,MADK,GACL,EACK4U,EAAW,GACb+jE,EAAc,KACTj3D,EAAI,EAAKA,GAAK1hB,EAAK0hB,GAAQ,IAAM,CACxC,IAAMk3D,EAAS,CACbp1E,MAAOke,EACP/hB,MAAO40B,OAAO7S,GAAGgH,QAAQ,GAAGgqC,YAE9B99C,EAASiJ,KAAK+6D,GACVl3D,IAAMle,IAAOm1E,EAAcC,GAGjC,OACE,eAAC,KAAD,CACEz3E,UAAW,eACXq1B,gBAAgB,SAChBnhB,WAAW,EACX0E,aAAa,EACbzE,cAAc,EACd89B,aAAc,SAACwlC,EAAQC,GACrB,QAAID,EAAO70E,KAAKpE,MAAM+tE,WAAWmL,IAGnC94E,GAAIA,EACJN,KAAMM,EACNyD,MAAOm1E,EACPpjE,QAASX,EACThO,SAAUA,EACVhF,SAAS,EACTyC,WAAYsD,IC/BX,SAASmxE,GAAiBC,EAAUC,GACzC,IAAIC,EAAe,EAEnB,GAAoB,OAAhBD,IAAyBvzE,IAAEoN,YAAYmmE,GACzC,IAAK,IAAIt3D,EAAI,EAAGA,EAAIs3D,EAAY56D,OAAQsD,IAAK,CAC3C,IAAMw3D,EAAQjhD,KAAUkhD,yBACtBJ,EACAC,EAAYt3D,GAAGqnC,WASjBkwB,IAN6B,KAA3BD,EAAYt3D,GAAGunC,QACX/3B,MACA+G,KAAUkhD,yBACRJ,EACAC,EAAYt3D,GAAGunC,UAEW93B,KAAK+nD,EAAO,WAIlD,OAAOE,GAAmBH,GAGrB,SAASG,GAAmBH,GACjC,IAAMI,EAAIC,KAAKC,MAAMN,EAAY,MAC3B7P,EAAIkQ,KAAKC,MAAMN,EAAe,IAAU,GAAJI,EACpCjxC,EAAI6wC,EAAmB,GAAJI,EAAS,GAAS,GAAJjQ,EAevC,MAAO,CACLoQ,aATApxC,GAAK,GACDkxC,KAAKG,KAAKR,EAAY,KAAgB,EACtCK,KAAKG,MAAMR,EAAe7wC,GAAhB,KAAkC,EAQhDsxC,OANW,CAACL,EAAGjQ,EAAI,EAAIA,EAAI,IAAMA,EAAGhhC,EAAI,EAAIA,EAAI,IAAMA,GAAGphB,KAAK,KAO9D2yD,KALS,CAACN,EAAGjQ,EAAI,EAAIA,EAAIiQ,EAAI,IAAMjQ,EAAIA,GAAK,KAAK9lE,OAAOuhB,SAASmC,KAAK,KAMtEiyD,aAAcA,GC/CH,SAASW,GAAT,GAOX,IAAD,IAND/qB,kBAMC,MANY,GAMZ,EALDE,EAKC,EALDA,WACAz8B,EAIC,EAJDA,KACA1qB,EAGC,EAHDA,KAGC,IAFDiyE,wBAEC,MAFkB,OAElB,MADDC,sBACC,MADgB,UAChB,EACD,OACE,gBAAC5xE,GAAA,EAAD,CACEN,KAAMA,EACNO,KAAK,KACL+pB,kBAAgB,gCAChB88B,UAAQ,EACRsU,SAAS,SACTyW,UAAU,EANZ,UAQkB,KAAflrB,EACC,eAAC3mD,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG8uD,MAIL,+BAEF,gBAAC3mD,GAAA,EAAMK,KAAP,WACE,8BAAKwmD,IACL,kCACE,eAACirB,GAAA,EAAD,CAASC,UAAWJ,EAAkBK,OAAQJ,MAEhD,6BAAIxnD,UC9BG,SAAS6nD,GAAT,GAKX,IAAD,IAJDtrB,kBAIC,MAJY,GAIZ,MAHDE,kBAGC,MAHY,WAGZ,EAFDz8B,EAEC,EAFDA,KACA1qB,EACC,EADDA,KAEA,OACE,eAACgyE,GAAD,CACEhyE,KAAMA,EACNinD,WAAYA,EACZE,WAAYA,EACZz8B,KAAMA,ICVG,SAAS8nD,GAAT,GASX,IARFvrB,EAQC,EARDA,WACA0H,EAOC,EAPDA,SACA8jB,EAMC,EANDA,KAMC,IALDC,qBAKC,MALe,GAKf,EAJD1yE,EAIC,EAJDA,KAIC,IAHD2yE,cAGC,MAHQ,KAGR,MAFDC,kBAEC,MAFY,SAEZ,MADDC,uBACC,MADiB,GACjB,IAC2Bv1E,mBAASo1E,GADpC,mBACMI,EADN,KACcC,EADd,KAEK74D,EAAWnC,mBAEjB9D,qBAAU,WACRiG,EAASlS,SAAWkS,EAASlS,QAAQojC,WAGvC,IAAM4nC,EAAa,WACK,KAAlBF,EAAOvsD,QAAiBvmB,GAAMyyE,EAAKK,IAazC,OAVA7+D,qBAAU,WACR,IAAIg/D,EAAcC,aAAS5/C,OAAQ,CACjC,SAAU0/C,EACV,aAAcA,IAEhB,OAAO,WACLC,QAKF,gBAAC3yE,GAAA,EAAD,CACEN,KAAMA,EACNO,KAAK,KACL+pB,kBAAgB,gCAChB88B,UAAQ,EACR5mD,OAAQmuD,EALV,UAOE,eAACruD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG8uD,MAGL,gBAAC3mD,GAAA,EAAMK,KAAP,WACGkyE,EACD,eAAC,KAAD,CACEpxE,KAAK,OACL7H,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GAAD,OAAO8zE,EAAU9zE,EAAEC,OAAOtD,QACpCA,MAAOk3E,EACPK,UAAW,IACXC,WAAS,EACTh2E,IAAK8c,EACLmZ,QAAS,SAACj0B,GAAD,OAAWA,EAAMF,OAAOqf,eAGrC,gBAACje,GAAA,EAAM+mD,OAAP,WACE,eAACptD,EAAA,EAAD,CACEE,QAAS,kBAAMs4E,EAAKK,IACpB54E,QAAQ,UACR6F,SAA4B,KAAlB+yE,EAAOvsD,OAHnB,SAKGosD,IAEH,eAAC14E,EAAA,EAAD,CAAQE,QAASw0D,EAAUz0D,QAAQ,YAAnC,SACG04E,UCtEI,SAASS,GAAT,GASX,IARFpsB,EAQC,EARDA,WACA0H,EAOC,EAPDA,SACA8jB,EAMC,EANDA,KACAtrB,EAKC,EALDA,WACAz8B,EAIC,EAJDA,KACA1qB,EAGC,EAHDA,KAGC,IAFD2yE,cAEC,MAFQ,KAER,MADDpyE,YACC,MADM,KACN,EACD,OACE,gBAACD,GAAA,EAAD,CACEN,KAAMA,EACNO,KAAMA,EACN+pB,kBAAgB,gCAChB88B,UAAQ,EACR5mD,OAAQmuD,EALV,UAOE,eAACruD,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG8uD,MAGL,gBAAC3mD,GAAA,EAAMK,KAAP,WACE,8BAAKwmD,IACL,6BAAIz8B,OAEN,gBAACpqB,GAAA,EAAM+mD,OAAP,WACE,eAACptD,EAAA,EAAD,CAAQE,QAASs4E,EAAMv4E,QAAQ,UAA/B,SACGy4E,IAEH,eAAC14E,EAAA,EAAD,CAAQE,QAASw0D,EAAUz0D,QAAQ,YAAnC,0BC9BO,SAASo5E,GAAT,GAKX,IAAD,IAJDrsB,kBAIC,MAJY,GAIZ,MAHDE,kBAGC,MAHY,SAGZ,EAFDz8B,EAEC,EAFDA,KACA1qB,EACC,EADDA,KAEA,OACE,eAACgyE,GAAD,CACEhyE,KAAMA,EACNinD,WAAYA,EACZE,WAAYA,EACZz8B,KAAMA,I,sECdG,SAAS6oD,GAAUC,GAChC,IAAItjE,EAAIsjE,EAAU3xC,QAAQ,KAAM,IAIhC,GAHA3xB,EAAIA,EAAEsC,cAGFihE,OAAO,2CAA2CnhE,KAAKpC,GACzD,OAAOA,EAAE2xB,QAAQ,KAAM,IAEzB,GAAI4xC,OAAO,yCAAyCnhE,KAAKpC,GAAI,OAAOA,EAEpE,GAAIujE,OAAO,+BAA+BnhE,KAAKpC,GAC7C,OAAOA,EAAE2xB,QAAQ,KAAM,IAAM,KAE/B,GAAI4xC,OAAO,+BAA+BnhE,KAAKpC,GAAI,OAAOA,EAAI,KAE9D,GAAIujE,OAAO,qBAAqBnhE,KAAKpC,GAAI,OAAOA,EAAI,OAEpD,GAAIujE,OAAO,2CAA2CnhE,KAAKpC,GACzD,OAAOA,EAAE2xB,QAAQ,KAAM,IAEzB,GAAI4xC,OAAO,yCAAyCnhE,KAAKpC,GAAI,OAAOA,EAEpE,GAAIujE,OAAO,iCAAiCnhE,KAAKpC,GAC/C,MAAO,IAAMA,EAAE2xB,QAAQ,KAAM,IAE/B,GAAI4xC,OAAO,+BAA+BnhE,KAAKpC,GAAI,MAAO,IAAMA,EAEhE,GAAIujE,OAAO,gCAAgCnhE,KAAKpC,GAC9C,OAAOA,EAAE2xB,QAAQ,KAAM,IAAM,KAE/B,GAAI4xC,OAAO,+BAA+BnhE,KAAKpC,GAAI,OAAOA,EAAI,KAE9D,GAAIujE,OAAO,sBAAsBnhE,KAAKpC,GACpC,MAAO,IAAMA,EAAE2xB,QAAQ,KAAM,IAAM,KAErC,GAAI4xC,OAAO,qBAAqBnhE,KAAKpC,GAAI,MAAO,IAAMA,EAAI,KAE1D,GAAIujE,OAAO,qBAAqBnhE,KAAKpC,GAAI,OAAOA,EAAI,OAEpD,GAAIujE,OAAO,WAAWnhE,KAAKpC,GAAI,MAAO,IAAMA,EAAI,OAEhD,IAAMwjE,EAAOD,OAAO,WAAWnhE,KAAKpC,GAChC,EACAujE,OAAO,WAAWnhE,KAAKpC,GACvB,GACA,KAEJ,GAAa,OAATwjE,EAAe,CACjB,IAAI5B,EAAS,GAuCb,GApCI2B,OAAO,sDAAsDnhE,KAAKpC,KACpE4hE,EAAS5hE,EAAE2xB,QAAQ,KAAM,KAGvB4xC,OAAO,oDAAoDnhE,KAAKpC,KAClE4hE,EAAS5hE,GAGPujE,OAAO,4CAA4CnhE,KAAKpC,KAC1D4hE,EAAS,IAAM5hE,EAAE2xB,QAAQ,KAAM,KAG7B4xC,OAAO,0CAA0CnhE,KAAKpC,KACxD4hE,EAAS,IAAM5hE,GAGbujE,OAAO,2CAA2CnhE,KAAKpC,KACzD4hE,EAAS5hE,EAAE2xB,QAAQ,KAAM,IAAM,MAG7B4xC,OAAO,0CAA0CnhE,KAAKpC,KACxD4hE,EAAS5hE,EAAI,MAGXujE,OAAO,iCAAiCnhE,KAAKpC,KAC/C4hE,EAAS,IAAM5hE,EAAE2xB,QAAQ,KAAM,IAAM,MAGnC4xC,OAAO,gCAAgCnhE,KAAKpC,KAAI4hE,EAAS,IAAM5hE,EAAI,MAGnEujE,OAAO,gCAAgCnhE,KAAKpC,KAAI4hE,EAAS5hE,EAAI,QAG7DujE,OAAO,sBAAsBnhE,KAAKpC,KAAI4hE,EAAS,IAAM5hE,EAAI,QAE9C,KAAX4hE,EAAe,CAIjBA,GADAA,GADAA,GADAA,EAASA,EAAOjwC,QAAQ,MAAO,KACfA,QAAQ,MAAO,KACfA,QAAQ,KAAM,KACdA,QAAQ,KAAM,IAC9B,IAAI/U,EAAQH,OAAOwd,SAAS2nC,EAAOx9B,UAAU,EAAG,IAGhD,OAFc,KAAVxnB,EAAcA,EAAQ,EAAI4mD,EACzB5mD,GAAgB4mD,EACjB5mD,GAAS,GAAWA,EAAMg+B,WAAagnB,EAAOx9B,UAAU,EAAG,GACnD,IAAMxnB,EAAMg+B,WAAagnB,EAAOx9B,UAAU,EAAG,IAI7D,MAAO,UCjET,SAASq/B,GAAT,GAoBE,IAXE,IAAD,IARD3zE,EAQC,EARDA,KACAyyE,EAOC,EAPDA,KACA9jB,EAMC,EANDA,SAMC,IALD1N,cAKC,MALQ,GAKR,MAJDjzB,YAIC,MAJM1E,MAIN,MAHD7b,iBAGC,aAFD1N,gBAEC,aADD6zE,iBACC,WACiCt2E,mBAAS2jD,GAD1C,mBACMnW,EADN,KACiBC,EADjB,OAEuCztC,mBAAS2jD,GAFhD,mBAEM4yB,EAFN,KAEoBC,EAFpB,OAGuDx2E,oBAAS,GAHhE,mBAGMy2E,EAHN,KAG4BC,EAH5B,OAI2C12E,oBAAS,GAJpD,mBAIM22E,EAJN,KAIsBC,EAJtB,OAKmC52E,mBAAS,MAL5C,mBAKM62E,EALN,KAKkBC,EALlB,OAMiC92E,mBAAS,MAN1C,mBAMM+2E,EANN,KAMiBC,EANjB,KAOKC,EAAmBx8D,mBAGrBy8D,EAAY,GACP16D,EAAI,EAAGA,EAAIgxB,EAAUt0B,OAAQsD,IAAK,CACzC,IAAI26D,EAAQ,eAAQ3pC,EAAUhxB,IACxBqd,EAAS+5C,GAAiBljD,EAAM,CACpC,CAAEmzB,UAAWszB,EAAStzB,UAAWE,QAASozB,EAASpzB,WAErDozB,EAAS3C,OAAS36C,EAAO26C,OACzB2C,EAASpD,aAAel6C,EAAOk6C,aAC/BmD,EAAUv+D,KAAKw+D,GAGjB,IAAIC,GAAgB,GAChBC,GAAe,GACfC,GAAa,GACjB,GAAkB,OAAdP,GAAqC,OAAfF,EAAqB,CAC7C,IAAMU,GAAmB3D,GAAiBljD,EAAM,CAC9C,CAAEmzB,UAAWqzB,EAAUL,GAAYhzB,UAAWE,QAASgzB,KAEnDS,GAAkB5D,GAAiBljD,EAAM,CAC7C,CAAEmzB,UAAWkzB,EAAWhzB,QAASmzB,EAAUL,GAAY9yB,WAEzDqzB,GAAgBG,GAAiB/C,OACjC6C,GAAeG,GAAgBhD,OACO,IAAlC+C,GAAiBxD,aACnBuD,GAAa,yCAC6B,IAAjCE,GAAgBzD,aACzBuD,GAAa,uCACJC,GAAiBxD,aAAe,EACzCuD,GAAa,6CACJE,GAAgBzD,aAAe,IACxCuD,GAAa,2CAYjB,IARA,IAAIG,IAAc,EACdC,IAAc,EACdC,IAAe,EACfC,IAAc,EACdC,GAAa,EAEXvoC,GAAQrc,KAAM0jB,UAAY1jB,KAAM0jB,MAAMjmB,GAEnC1sB,GAAI,EAAGA,GAAIwpC,EAAUt0B,OAAQlV,KAAK,CACzC,IAAM2vC,GAAInG,EAAUxpC,IACF,KAAd2vC,GAAEoQ,SAAgB8zB,KAEJ,KAAdlkC,GAAEoQ,SAAkBpQ,GAAEkQ,UAAYlQ,GAAEoQ,UAAS4zB,IAAe,GAG9D3rD,MAASC,KACP8G,KAAUkhD,yBAAyBvjD,EAAMijB,GAAEkQ,WAC3C,WACE,IAEJ4zB,IAAc,GAGA,KAAd9jC,GAAEoQ,SACF/3B,MAASC,KACP8G,KAAUkhD,yBAAyBvjD,EAAMijB,GAAEoQ,SAC3C,WACE,IAEJ0zB,IAAc,GAEE,KAAd9jC,GAAEoQ,SAAkBpQ,GAAEkQ,YAAclQ,GAAEoQ,UAAS6zB,IAAc,GACjE,IAAK,IAAIh4D,GAAI,EAAGA,GAAI4tB,EAAUt0B,SACxBw+D,GADgC93D,KAGpC,GAAI5b,KAAM4b,GAAG,CACX,IAAMy0C,GAAI7mB,EAAU5tB,IAElB+zB,GAAEkQ,WAAawQ,GAAExQ,YACF,KAAdwQ,GAAEtQ,SAAkBpQ,GAAEkQ,UAAYwQ,GAAEtQ,WAErC2zB,IAAc,IAMtB,IAAMI,GAAW,WACfrqC,EAAa8oC,GACbllB,KAGIt2B,GACJ88C,GAAa,EACT,2CACAJ,GACA,sCACAE,GACA,0CACAD,GACA,0BACAE,GACA,kCACA,GAKAG,GAAan1E,uBACjB,SAACo1E,EAAUz4D,EAAUjhB,GACnBmvC,GAAa,SAACwqC,GAAD,OACXA,EAAI72E,KAAI,SAAC5C,EAAKmZ,GACZ,OAAIA,IAAUqgE,EACL,2BACFC,EAAID,IADT,mBAEGz4D,EAAWjhB,IAGTE,UAIb,CAACivC,IAUGyqC,GAAYt1E,uBAChB,SAACo1E,GACCvqC,GAAa,SAACwqC,GAAD,OAASA,EAAI75E,QAAO,SAAC4R,EAAGwM,GAAJ,OAAUA,IAAMw7D,UAEnD,CAACvqC,IAGG0qC,GAAiB,WACrBvB,GAAkB,GAClBE,EAAc,MACdE,EAAa,OAGToB,GAAYx1E,uBAAY,WAE5B,IADA,IAAMy1E,EAAU,GACP77D,EAAI,EAAGA,EAAIgxB,EAAUt0B,OAAQsD,IAChCA,IAAMq6D,EACRwB,EAAQ1/D,KAAR,eAAkB60B,EAAUhxB,MAE5B67D,EAAQ1/D,KAAR,2BAAkB60B,EAAUhxB,IAA5B,IAAgCunC,QAASgzB,KACzCsB,EAAQ1/D,KAAR,2BAAkB60B,EAAUhxB,IAA5B,IAAgCqnC,UAAWkzB,MAG/CtpC,EAAa4qC,GACbzB,GAAkB,GAClBE,EAAc,MACdE,EAAa,QACZ,CAACH,EAAYE,EAAWvpC,IAErB8qC,GAAU11E,uBACd,SAACo1E,GACCvqC,GAAa,SAACwqC,GAAD,OACXA,EAAI72E,KAAI,SAAC5C,EAAKmZ,GACZ,OAAIA,IAAUqgE,EACL,2BACFC,EAAID,IADT,IAEEj0B,QAAShxB,KAAUwlD,kBAGhB/5E,UAIb,CAACivC,IAGG+qC,GAAiB51E,uBACrB,SAACo1E,GACCvqC,GAAa,SAACwqC,GAAD,OACXA,EAAI72E,KAAI,SAAC5C,EAAKmZ,GACZ,OAAIA,IAAUqgE,EACL,2BACFC,EAAID,IADT,IAEEj0B,QAAS,KAGNvlD,UAIb,CAACivC,IAGGgrC,GAAiB71E,uBACrB,SAACo1E,EAAUtkD,GACT+Z,GAAa,SAACwqC,GAAD,OACXA,EAAI72E,KAAI,SAAC5C,EAAKmZ,GACZ,OAAIA,IAAUqgE,EACL,2BACFC,EAAID,IADT,IAEEtkD,SAAUA,IAGPl1B,UAIb,CAACivC,IAgBG7vC,GAASG,mBAAQ,WACrB,OAAOu4E,EACH,CAAC,SAAU,YAAa,UAAW,YAAa,QAAS,YACzD,CAAC,YAAa,UAAW,YAAa,QAAS,SAAU,cAC5D,CAACA,IAEEx4E,GAAUC,mBAAQ,WACtB,IAAM26E,EAAe,GACjBpC,GACFoC,EAAa//D,KAAK,CAChB9d,GAAI,SACJmD,OAAQ,SACRC,SAAU,WACV6V,gBAAgB,EAChBf,eAAe,EAEf1U,KAAM,YAAgC,IAA7BC,EAA4B,EAA5BA,MAAcqZ,EAAc,EAArBnZ,IAAOmZ,MACrB,OAAIrZ,EAEA,eAAC3B,EAAA,EAAD,CACEE,QAAS,kBAAM47E,GAAe9gE,GAAO,IACrC1b,UAAU,UACVwG,SAAUA,EAHZ,SAKE,eAAC,KAAD,CAAgBxG,UAAU,MAAMgH,KAAK,WAKvC,eAACtG,EAAA,EAAD,CACEE,QAAS,kBAAM47E,GAAe9gE,GAAO,IACrC1b,UAAU,UACVwG,SAAUA,EAHZ,SAKE,eAAC,KAAD,CAAqBxG,UAAU,MAAMgH,KAAK,cAOtD,IAAM01E,EAAc,CAClB,CACE99E,GAAI,YACJmD,OAAQ,QACRC,SAAU,YACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAcqZ,EAAjB,EAAUnZ,IAAOmZ,MAAmB9c,EAApC,EAA0BiiB,OAAUjiB,GAApC,OACJ,eAAC+9E,GAAD,CACEloD,KAAMA,EACNsB,aAAc1zB,EACdmE,SAAUA,EACVkV,MAAOA,EACPogE,WAAYA,GACZl9E,GAAIA,EACJ67E,wBAAyBA,EACzBO,iBAAkBA,MAIxB,CACEp8E,GAAI,UACJmD,OAAQ,MACRC,SAAU,UACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAcqZ,EAAjB,EAAUnZ,IAAOmZ,MAAmB9c,EAApC,EAA0BiiB,OAAUjiB,GAApC,OACJ,eAAC+9E,GAAD,CACEloD,KAAMA,EACNsB,aAAc1zB,EACdmE,SAAUA,EACVkV,MAAOA,EACPogE,WAAYA,GACZl9E,GAAIA,EACJ67E,wBAAyBA,EACzBO,iBAAkBA,MAIxB,CACEp8E,GAAI,YACJmD,OAAQ,GACR8V,gBAAgB,EAChBf,eAAe,EACf9U,SAAU,UAEVI,KAAM,YAAgC,IAAtBsZ,EAAqB,EAA5BnZ,IAAOmZ,MACd,MAAc,KADqB,EAAZrZ,MAGnB,eAAC3B,EAAA,EAAD,CACEE,QAAS,kBAAMy7E,GAAQ3gE,IACvB1b,UAAU,UACVwG,SAAUA,EAHZ,SAKE,eAAC,KAAD,CAAYxG,UAAU,MAAMgH,KAAK,WAKnC,eAACtG,EAAA,EAAD,CACEE,QAAS,WACP27E,GAAe7gE,IAEjB1b,UAAU,UACVwG,SAAUA,IAAa6sC,GALzB,SAOE,eAAC,KAAD,CAAWrzC,UAAU,MAAMgH,KAAK,aAM1C,CACEpI,GAAI,QACJmD,OAAQ,GACR8V,gBAAgB,EAChB7V,SAAU,YAEVI,KAAM,gBAAUsZ,EAAV,EAAGnZ,IAAOmZ,MAAV,OACJ,eAAChb,EAAA,EAAD,CACEV,UAAU,UACVY,QAAS,WACP+5E,GAAkB,GAClBE,EAAcn/D,GACdq/D,EAAaE,EAAUv/D,GAAOksC,YAEhCphD,SAAUA,EAPZ,SASE,eAAC,KAAD,CAAaxG,UAAU,MAAMgH,KAAK,YAGtC8P,eAAe,GAEjB,CACElY,GAAI,SACJmD,OAAQ,GACR8V,gBAAgB,EAChB7V,SAAU,YAEVI,KAAM,gBAAUsZ,EAAV,EAAGnZ,IAAOmZ,MAAV,OACJ,eAAChb,EAAA,EAAD,CACEE,QAAS,kBAAMq7E,GAAUvgE,IACzB1b,UAAU,UACVwG,SAAUA,EAHZ,SAKE,eAAC,KAAD,CAAUxG,UAAU,MAAMgH,KAAK,YAGnC8P,eAAe,GAEjB,CACElY,GAAI,WACJmD,OAAQ,WACR8V,gBAAgB,EAChB7V,SAAU,eACVI,KAAM,mBAAe61E,GAAf,EAAG51E,OAAsCk2E,QAC/CzhE,eAAe,EACfg3C,OAAQ,SAACl4B,GAUP,OAAOqiD,GAROt0E,IAAM7B,SAClB,kBACE8zB,EAAKtK,KAAKO,QAAO,SAACkoC,EAAKxxD,GACrB,OAAOixB,WAAWjxB,EAAIS,OAAO45E,UAAY7oB,IACxC,KACL,CAACn+B,EAAKtK,QAGyBitD,UAIvC,OAAOkE,EAAatqE,OAAOuqE,KAC1B,CACDrC,EACA7zE,EACAg2E,GACA/nD,EACAqnD,GACAO,GACAhpC,GACAkpC,GACAtB,EACAgB,KAGIxyD,GAAc9lB,IAAMgD,aACxB,SAACpE,GAAS,IAAD,IACP,OAAO83E,IAAS,OAAI93E,QAAJ,IAAIA,GAAJ,UAAIA,EAAKC,gBAAT,aAAI,EAAei1B,UAC/B,CACEz3B,UACE,6EAEuB,MAAxB,OAAHuC,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAeslD,SACf,CACE9nD,UACE,6EAEJ,CACEA,UACE,iFAGV,CAACq6E,IAGH,OACE,uCACE,gBAACtzE,GAAA,EAAD,CACE81E,gBAAiB,kBAAMpC,GAAwB,IAC/CqC,cAAc,EACdr2E,KAAM+zE,EACNxzE,KAAK,KACL+pB,kBAAgB,gCALlB,UAOE,eAAChqB,GAAA,EAAMhF,OAAP,CACE/B,UAAU,aACVkH,aAAW,EACXD,OAAQ,kBAAMwzE,GAAwB,IAHxC,SAKE,wDAEF,eAAC1zE,GAAA,EAAMK,KAAP,CAAYpH,UAAU,iCAAtB,SACE,eAAC+8E,GAAD,SAIJ,gBAACh2E,GAAA,EAAD,CACE81E,gBAAiBX,GACjBj1E,OAAQi1E,GACRY,cAAc,EACdr2E,KAAMi0E,EACN1zE,KAAK,KACL+pB,kBAAgB,gCANlB,UAQE,eAAChqB,GAAA,EAAMhF,OAAP,CACE/B,UAAU,cACVkH,aAAW,EACXD,OAAQ,kBAAMwzE,GAAwB,IAHxC,SAKE,qDAEF,gBAAC1zE,GAAA,EAAMK,KAAP,CAAYpH,UAAU,cAAtB,UACE,gBAACL,EAAA,EAAD,CAAKK,UAAU,2CAAf,UACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC+8E,GAAD,CACEloD,KAAMA,EACNsB,aAAY,UAAEklD,EAAUL,UAAZ,aAAE,EAAuBhzB,UACrCphD,UAAU,EACVkV,MAAOk/D,EACPkB,WAAYA,GACZrB,wBAAyBA,EACzBO,iBAAkBA,QAIxB,eAACr7E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,cAAf,SACE,eAAC,KAAD,CAAWgH,KAAM,SAGrB,eAACrH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC+8E,GAAD,CACEloD,KAAMA,EACNsB,aAAc+kD,EACdp/D,MAAOk/D,EACPkB,WAAY,SAACj+C,EAAGgB,EAAGm+C,GACjBjC,EAAaiC,IAEfvC,wBAAyBA,EACzBO,iBAAkBA,EAClBiC,YAAY,cAIlB,eAACt9E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,cAAf,SACE,eAAC,KAAD,CAAWgH,KAAM,SAGrB,eAACrH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC+8E,GAAD,CACEloD,KAAMA,EACNsB,aAAY,UAAEklD,EAAUL,UAAZ,aAAE,EAAuB9yB,QACrCthD,UAAU,EACVkV,MAAOk/D,EACPkB,WAAYA,GACZrB,wBAAyBA,EACzBO,iBAAkBA,WAK1B,gBAACp7E,EAAA,EAAD,CAAKI,UAAU,GAAf,UACE,eAACL,EAAA,EAAD,CAAKK,UAAU,+BAAf,SACE,eAACJ,EAAA,EAAD,yBAEF,eAACD,EAAA,EAAD,CAAKK,UAAU,mBAAf,SACE,eAACJ,EAAA,EAAD,UAAMu7E,OAER,eAACx7E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,qBAEF,eAACD,EAAA,EAAD,CAAKK,UAAU,mBAAf,SACE,eAACJ,EAAA,EAAD,UAAMw7E,OAER,eAACz7E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,2BAIU,KAAfy7E,GACC,eAAC17E,EAAA,EAAD,CAAKK,UAAU,iBAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,SAASX,UAAU,OAAlC,SACGq7E,SAIL,QAEN,gBAACt0E,GAAA,EAAM+mD,OAAP,CAAc9tD,UAAU,sCAAxB,UACE,wCACA,+BACE,gBAACL,EAAA,EAAD,WACE,eAACe,EAAA,EAAD,CACEV,UAAU,OACVY,QAAS,WACPu7E,MAEFx7E,QAAQ,UACR6F,SAAyB,KAAf60E,GANZ,gBAUA,eAAC36E,EAAA,EAAD,CACEV,UAAU,OACVY,QAASs7E,GACTv7E,QAAQ,YAHV,+BAWR,gBAACoG,GAAA,EAAD,CACE81E,gBAAiBhB,GACjBiB,cAAc,EACdr2E,KAAMA,EACNO,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SANX,UAQE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAACD,OAAQ40E,GAAlC,SACE,eAAC90E,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACGy7E,EAAY,6BAA+B,aAGhD,eAACtzE,GAAA,EAAMK,KAAP,UACE,eAACzH,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACE8qB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLxI,MAAM,SACNqD,QAASA,GACTF,OAAQA,GACRiB,KAAMq4E,EACN7xD,YAAa,CAAExqB,GAAI,YAAamoB,MAAM,GACtC0C,YAAaA,GACbvV,UAAWA,EACXyV,iBAAe,EACfmyD,WAAYA,SAIlB,eAACn8E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACoB,KAAjBk/B,GACC,eAACxmB,GAAA,EAAD,CAAO3X,QAAQ,SAASi1D,OAAK,EAA7B,SACG92B,KAGH,0CAOZ,gBAAC/3B,GAAA,EAAM+mD,OAAP,CAAc9tD,UAAU,0BAAxB,UACE,iCACE,eAACU,EAAA,EAAD,CACEC,QAAQ,OACRC,QAAS,kBAAM4wC,EAAakW,IAC5BlhD,SAAUA,EAHZ,mBAMU,IACV,eAAC9F,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBA7fN,WACb,IAAMs8E,EAAY,YAAO3rC,GACnB4rC,EAAWrmD,KAAUwlD,gBAC3BY,EAAaxgE,KAAK,CAAEkrC,UAAWu1B,EAAUr1B,QAASq1B,IAClD3rC,EAAa0rC,GAyfYE,IACf52E,SAAUA,EAHZ,oBAQF,iCACE,eAAC9F,EAAA,EAAD,CACEV,UAAU,OACVY,QA/aM,WAQhB25E,EAAgBhpC,GAChB2nC,EAAK3nC,IAuaK5wC,QAAQ,UACR6F,SAA2B,KAAjBs4B,IAAuBt4B,EAJnC,SAMG6zE,EAAY,gBAAkB,OAEjC,eAAC35E,EAAA,EAAD,CAAQV,UAAU,OAAOY,QAASi7E,GAAUl7E,QAAQ,YAApD,gCAUZ,SAASkoB,GAAa4L,EAAM4oD,GAC1B,OAAOvmD,KAAUwmD,mBACfxmD,KAAUkhD,yBAAyBvjD,EAAM4oD,IAI7C,SAASE,GAAT,GAUI,IATFxnD,EASC,EATDA,aACAtB,EAQC,EARDA,KACAjuB,EAOC,EAPDA,SACAkV,EAMC,EANDA,MACA9c,EAKC,EALDA,GACAk9E,EAIC,EAJDA,WACArB,EAGC,EAHDA,wBACAO,EAEC,EAFDA,iBAEC,IADDiC,mBACC,MADa,QACb,IACyBl5E,mBAAS8kB,GAAa4L,EAAMsB,IADrD,mBACM1zB,EADN,KACaiwB,EADb,KAEK3sB,EAAS6Y,iBAAO,MAFrB,EAGqCza,oBAAS,GAH9C,mBAGMy5E,EAHN,KAGmBC,EAHnB,KAKD/iE,qBAAU,WACR4X,EAASzJ,GAAa4L,EAAMsB,MAC3B,CAACtB,EAAMsB,IAEV,IAkBM6gC,EAAWjwD,uBAAY,WAC3B82E,GAAe,GACf,IAAMC,EAAe1D,GAAU33E,GACV,YAAjBq7E,GACFprD,EAASzJ,GAAa4L,EAAMipD,IAC5B5B,EAAWpgE,EAAO9c,EAAI8+E,KAGtBprD,EAASzJ,GAAa4L,EAAMsB,IAC5BhmB,IAAMrE,MAAM,4BAEb,CAACowE,EAAYpgE,EAAO9c,EAAI0zB,EAAUjwB,EAAO0zB,EAActB,IAEtDkpD,EAAY3D,GAAU33E,GACpBu7E,EACU,YAAdD,EACIA,EACA7mD,KAAUwmD,mBACRxmD,KAAUkhD,yBAAyBvjD,EAAMkpD,IAE3CE,EAAwB,YAAdF,EAA0B,MAAQV,EASlD,OACE,qCACoB,KAAjBlnD,EACC,uCACE,eAACr2B,GAAA,EAAK8F,QAAN,CACE0C,KAAK,OACL1B,SAAUA,EACVf,SAAU,SAACo4B,GAAD,OAtDH,SAACA,GAChB4/C,GAAe,GACfnrD,EAASuL,GAoDgBp4B,CAASo4B,EAAEl4B,OAAOtD,QACnCmyB,OAhDK,SAAC9uB,GAEQ,OAApBA,EAAEo4E,eACFp4E,EAAEo4E,gBAAkB9C,EAAiBvsE,SAErCgsE,GAAwB,GAE1B7jB,KA0CQ3zD,SAAU2zD,EACVv0D,MAAOA,EACPuD,UAlBQ,SAACF,GACH,UAAVA,EAAE+B,KAGJmvD,KAeM12D,MAAO,CAAE+8E,YAAaY,GACtBh6E,IAAK8B,IAEP,eAACo4E,GAAA,EAAD,CACEl+E,GAAI,EACJ8F,OAAQA,EAAO8I,QACfhI,KAAM+2E,EACNt+D,UAAU,SAJZ,SAMiB,YAAdy+D,EACC,gBAACtM,GAAA,EAAD,CAASrxE,UAAU,qDAAnB,UACE,eAACsY,GAAA,EAAD,CACE3X,QAAQ,SACRX,UAAU,8CAFZ,0BAMA,eAACqxE,GAAA,EAAQC,QAAT,CAAiBtxE,UAAU,mCAA3B,SACE,eAACU,EAAA,EAAD,CACEmD,IAAKm3E,EACLh0E,KAAK,KACLpG,QAAS,WACP65E,GAAwB,GACxBgD,GAAe,IALnB,yCAaJ,eAACpM,GAAA,EAAD,UACE,eAACA,GAAA,EAAQC,QAAT,CAAiB3wE,QAAS,UAA1B,SACGi9E,WAOX,mDAMR,SAASb,KACP,OACE,gBAAC,KAAD,CAASiB,SAAO,EAAC3xD,UAAQ,EAACC,OAAK,EAAC3rB,QAAQ,OAAOqG,KAAK,KAApD,UACE,iCACE,gCACE,qBAAI9G,MAAO,CAAE+9E,UAAW,UAAxB,mBACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,UAAxB,yBAGJ,mCACE,gCACE,oCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,2BAEF,gCACE,qCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,4BAEF,gCACE,qBAAIp+E,GAAI,EAAR,iBACA,qBAAIA,GAAI,EAAGK,MAAO,CAAE+9E,UAAW,SAA/B,2BAIF,gCACE,qBAAIp+E,GAAI,EAAR,kBACA,qBAAIA,GAAI,EAAGK,MAAO,CAAE+9E,UAAW,SAA/B,4BAIF,gCACE,wCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,2BAEF,gCACE,yCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,4BAEF,gCACE,oCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,4BAEF,gCACE,wCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,4BAEF,gCACE,2CACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,4BAEF,gCACE,qCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,2BAEF,gCACE,wCACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,2BAEF,gCACE,6CACA,qBAAI/9E,MAAO,CAAE+9E,UAAW,SAAxB,iCAOV,IAAMtB,GAAgBh5E,IAAMsxB,KAAKsoD,IAElB55E,OAAMsxB,KAAKmlD,I,UCr2BX8D,GADG,CAAEpgC,GAPT,CACTz7C,MAAO,KACP7D,MAAO,KACP+yD,SAAU,WACR,OAAO,GAAKlvD,QAGQk/B,SAfP,CACfl/B,MAAO,WACP7D,MAAO,mBACP+yD,SAAU,WACR,OAAO,GAAKlvD,QAWkByQ,SAvBjB,CACfzQ,MAAO,WACP7D,MAAO,mBACP+yD,SAAU,WACR,OAAO,GAAKlvD,QAmB4B87E,OA/B7B,CACb97E,MAAO,UACP7D,MAAO,UACP+yD,SAAU,WACR,OAAO,GAAKlvD,QA2BoC+7E,OAvCrC,CACb/7E,MAAO,SACP7D,MAAO,SACP+yD,SAAU,WACR,OAAO,GAAKlvD,SCED,SAASg8E,GAAT,GAOX,IAuBEh8E,EA7BJ0vC,EAMC,EANDA,aACAtsC,EAKC,EALDA,SACA7G,EAIC,EAJDA,GAIC,IAHDga,mBAGC,aAFDnY,eAEC,aADD+F,gBACC,SACKiN,EAAW,GA8BjB,OA7BAA,EAASiJ,KAAK,CACZle,MAAO0/E,GAAUprE,SAAStU,MAC1B6D,MAAO67E,GAAUprE,SAASzQ,QAE5BoR,EAASiJ,KAAK,CACZle,MAAO0/E,GAAUpgC,GAAGt/C,MACpB6D,MAAO67E,GAAUpgC,GAAGz7C,QAEtBoR,EAASiJ,KAAK,CACZle,MAAO0/E,GAAUC,OAAO3/E,MACxB6D,MAAO67E,GAAUC,OAAO97E,QAE1BoR,EAASiJ,KAAK,CACZle,MAAO0/E,GAAUE,OAAO5/E,MACxB6D,MAAO67E,GAAUE,OAAO/7E,QAE1BoR,EAASiJ,KAAK,CACZle,MAAO0/E,GAAU38C,SAAS/iC,MAC1B6D,MAAO67E,GAAU38C,SAASl/B,QAIxB0vC,IAEA1vC,EADE5B,EACMgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOi+B,EAAaliC,SAASiE,EAAEzR,UAE/CiC,IAAE0P,KAAKP,EAAU,CAAC,QAASs+B,KAIrC,eAAC,KAAD,CACE/xC,UAAWS,EAAU,qBAAuB,eAC5C40B,gBAAgB,SAChBnhB,WAAW,EACX0E,YAAaA,EACbzE,cAAc,EACdvV,GAAIA,EACJN,KAAMM,EACNyD,MAAOA,EACP+R,QAASX,EACThO,SAAUA,EACVhF,QAASA,EACTyC,WAAYsD,ICflB,IAAM83E,GAAmB,mBACnBC,GAAa,aACbC,GAAa,aAKJ,SAASC,GAAT,GAUX,IATFC,EASC,EATDA,KACAC,EAQC,EARDA,cACAvpB,EAOC,EAPDA,SACAwb,EAMC,EANDA,SACAgO,EAKC,EALDA,KAKC,IAJDC,kBAIC,aAHDC,kBAGC,aAFDC,iBAEC,aADDC,eACC,MADS,aACT,EAC0B,OAAvBJ,EAAKK,gBAAwBL,EAAKK,eAAgB,GAKtD,IAAMC,EAs8CR,YAAsD,IAA3BN,EAA0B,EAA1BA,KAAMF,EAAoB,EAApBA,KAAMI,EAAc,EAAdA,WACrC,OAAOK,GAAgB,CAAEP,OAAMF,OAAMI,eAv8C1BM,CAAgB,CAAER,OAAMF,OAAMI,eAEnCO,EACmB,OAAvBT,EAAKU,eAAiD,KAAvBV,EAAKU,cAEhCC,EAAUC,aAAQ,CACtBr8E,cAAe,CACbX,SAAU08E,EACVO,mBAAmB,EACnBC,gBAAgB,EAChBC,mBAAmB,EACnBC,sBAAuBjwE,KAAKC,UAAU,IACtCiwE,mBAAoBlwE,KAAKC,UAAU,IACnC0N,MAAO4hE,KAGLO,EAAoBF,EAAQloE,MAAM,qBAClCqoE,EAAiBH,EAAQloE,MAAM,kBAC/BsoE,EAAoBJ,EAAQloE,MAAM,qBAClCuoE,EAAwBL,EAAQloE,MAAM,yBACtCwoE,EAAqBN,EAAQloE,MAAM,sBACnCyoE,EAAUP,EAAQloE,MAAM,YAE9B,OACE,qCACE,eAAC,KAAD,2BAAkBkoE,GAAlB,aACE,uBAAMt8E,SAAUs8E,EAAQlf,cAAa,eAArC,SACGof,EACC,eAACM,GAAA,EAAD,UACE,gBAACC,GAAA,EAAD,CAAMC,GAAG,QAAT,UACGN,EACC,uCACE,eAACK,GAAA,EAAKj+E,OAAN,UACE,eAACg+E,GAAA,EAAUG,OAAX,CAAkB7/E,GAAIK,IAAQC,QAAQ,OAAOu0E,SAAS,IAAtD,4CAIF,eAAC6K,GAAA,EAAU5sB,SAAX,CAAoB+hB,SAAS,IAA7B,SACE,eAACiL,GAAD,CACEC,cAAezwE,KAAKguB,MAAMiiD,GAC1BP,eAAgBA,EAChBN,UAAWA,EACXF,WAAYA,EACZH,KAAMA,EACN2B,mBAAoBnB,EAAGxxE,WACvB4yE,YAAa,WACb3B,cAAeA,EACf/N,SAAUA,EACVxb,SAAUA,SAId,KACHsqB,EACC,uCACE,eAACM,GAAA,EAAKj+E,OAAN,UACE,eAACg+E,GAAA,EAAUG,OAAX,CAAkB7/E,GAAIK,IAAQC,QAAQ,OAAOu0E,SAAS,IAAtD,SACG,0BAA4B4K,MAGjC,eAACC,GAAA,EAAU5sB,SAAX,CAAoB+hB,SAAS,IAA7B,SACE,eAACiL,GAAD,CACEC,cAAezwE,KAAKguB,MAAMkiD,GAC1BR,eAAgBA,EAChBN,UAAWA,EACXF,WAAYA,EACZH,KAAMA,EACN2B,mBAAoBnB,EAAGxxE,WACvB4yE,YAAa,QACb3B,cAAeA,EACf/N,SAAUA,EACVxb,SAAUA,SAId,UAIR,eAAC+qB,GAAD,CACEvB,KAAMA,EACNwB,cAAexB,EAAKl3B,OACpB23B,eAAgBA,EAChBN,UAAWA,EACXF,WAAYA,EACZH,KAAMA,EACN4B,YAAa,WACbD,mBAAoBnB,EAAGxxE,WACvBixE,cAAeA,EACf/N,SAAUA,EACVxb,SAAUA,EACV4pB,QAASA,WAYvB,SAASmB,GAAT,GAYI,IAAD,IAXDC,EAWC,EAXDA,cACAf,EAUC,EAVDA,eACAN,EASC,EATDA,UASC,IARDF,kBAQC,SAPDH,EAOC,EAPDA,KACA2B,EAMC,EANDA,mBACAC,EAKC,EALDA,YACA3B,EAIC,EAJDA,cACA/N,EAGC,EAHDA,SACAxb,EAEC,EAFDA,SACA4pB,EACC,EADDA,QAEMh3E,EAAW0O,cAET4b,EAAa9yB,eAAb8yB,SAEF1e,EA+uDR,YAA8E,IAAD,IAAhDyrE,EAAgD,EAAhDA,eAAgBX,EAAgC,EAAhCA,KAAMK,EAA0B,EAA1BA,UAAWuB,EAAe,EAAfA,YACpDjpE,EAAU7X,eAAV6X,MADmE,EAExDtT,mBAASgsB,OAAnBwwD,EAFkE,oBAGrEzsE,EAAI,GAEVA,EAAElV,GAAKyY,EAAMipE,EAAc,OAC3BxsE,EAAEgrE,WAAaznE,EAAMipE,EAAc,eACnCxsE,EAAEwrE,cAAgBjoE,EAAMipE,EAAc,kBACtCxsE,EAAElF,eAAiByI,EAAMipE,EAAc,mBACvCxsE,EAAEjF,eAAiBwI,EAAMipE,EAAc,mBACvCxsE,EAAE2rE,kBAAoBpoE,EAAM,qBAC5BvD,EAAE4rE,eAAiBroE,EAAM,kBACzBvD,EAAE6rE,kBAAoBtoE,EAAM,qBAC5BvD,EAAEi2C,SAAW1yC,EAAMipE,EAAc,aACjCxsE,EAAE0sE,eAAiB1pD,KAAU0c,UAAU1/B,EAAEi2C,UAEzCj2C,EAAEurB,OAAShoB,EAAMipE,EAAc,WAC/BxsE,EAAE2sE,eAAiBppE,EAAMipE,EAAc,mBACvCxsE,EAAEyf,MAAQlc,EAAMipE,EAAc,UAC9BxsE,EAAE4sE,YAAcrpE,EAAMipE,EAAc,gBACpCxsE,EAAE6sE,sBAAwBtpE,EAAMipE,EAAc,0BAC9CxsE,EAAE8sE,SAAWvpE,EAAMipE,EAAc,aACjCxsE,EAAEuG,KAAOhD,EAAMipE,EAAc,SAC7BxsE,EAAE+sE,aAAexpE,EAAMipE,EAAc,iBACrCxsE,EAAEgqC,GAAKzmC,EAAMipE,EAAc,OAC3BxsE,EAAEpG,WAAa2J,EAAMipE,EAAc,eACnCxsE,EAAEgtE,WAAazpE,EAAMipE,EAAc,eACnCxsE,EAAEitE,kBAAoB1pE,EAAMipE,EAAc,sBAC1CxsE,EAAEktE,gBAAkB3pE,EAAMipE,EAAc,oBACxCxsE,EAAEmtE,aAAe5pE,EAAMipE,EAAc,iBACrCxsE,EAAEotE,SAAW7pE,EAAMipE,EAAc,aACjCxsE,EAAEqtE,eACe,OAAfrtE,EAAEotE,UAAoC,KAAfptE,EAAEotE,SACrBlqD,KAAMwc,UAAU1/B,EAAEotE,UAClB,KACNptE,EAAEstE,iBAAmB/pE,EAAMipE,EAAc,qBACzCxsE,EAAEutE,yBAA2BhqE,EAAMipE,EAAc,6BACjDxsE,EAAEmrE,cAAgB5nE,EAAMipE,EAAc,kBACtCxsE,EAAEwtE,qBAAuBjqE,EAAMipE,EAAc,yBAC7C,IAAM54B,EAASrwC,EAAMipE,EAAc,WACnCxsE,EAAE4zC,OAASpjD,IAAEoN,YAAYg2C,GAAU,GAAK/3C,KAAKguB,MAAM+pB,GAEnD5zC,EAAEytE,oBAAsBlqE,EAAMipE,EAAc,wBAC5CxsE,EAAE0tE,gBAAkBnqE,EAAMipE,EAAc,oBACxCxsE,EAAE2tE,UAAYpqE,EAAMipE,EAAc,cAGlCxsE,EAAE4tE,mBAAqBrqE,EAAMipE,EAAc,uBAC3CxsE,EAAE6tE,UAAYpuE,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMD,2BACjD1yC,EAAE8tE,WAAa9tE,EAAE6tE,UAAU9wE,SAASiD,EAAEutE,0BACtCvtE,EAAE+tE,iBAAmBtuE,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMuB,eACxDl0C,EAAEguE,iBAAmBhuE,EAAE+tE,iBAAiBhxE,SAASiD,EAAEmtE,cAEnDntE,EAAEiuE,mBAAqB1C,EACvBvrE,EAAEkuE,aAAeluE,EAAE8sE,WAAa1C,GAAUE,OAAO/7E,MACjDyR,EAAEmuE,aAAenuE,EAAE8sE,WAAa1C,GAAUC,OAAO97E,MACjDyR,EAAEouE,SAAWpuE,EAAE8sE,WAAa1C,GAAUpgC,GAAGz7C,MACzCyR,EAAEquE,eAAiBruE,EAAE8sE,WAAa1C,GAAUprE,SAASzQ,MACrDyR,EAAEsuE,eAAiBtuE,EAAE8sE,WAAa1C,GAAU38C,SAASl/B,MACrDyR,EAAEuuE,eAAiBC,GAAkBxuE,EAAE8sE,UACvC9sE,EAAEyuE,cAAgB9zC,GAASptC,OAAO,CAAEzC,GAAIkV,EAAEpG,aAE1CoG,EAAE0uE,UAAYnrE,EAAMipE,EAAc,cAElCxsE,EAAE2uE,mBAAqBC,GAAsB5uE,EAAE4sE,YAAa5sE,EAAE8sE,UAE9D9sE,EAAE6uE,aAAe,GACb7uE,EAAEytE,qBAAqBztE,EAAE6uE,aAAajmE,KAAK,GAC3C5I,EAAE0tE,iBAAiB1tE,EAAE6uE,aAAajmE,KAAK,GACvC5I,EAAE2tE,WAAW3tE,EAAE6uE,aAAajmE,KAAK,GArEsC,MAwEzEi7D,GAAiB7jE,EAAE8uE,iBAAkB9uE,EAAE4zC,QADnBm7B,EAvEqD,EAuEnExK,aAAkCyK,EAvEiC,EAuEzCvK,OAGlCzkE,EAAEgvE,oBAAsBA,EACxBhvE,EAAE+uE,WAAaA,EACf/uE,EAAEwf,WAAaxf,EAAEyf,MAAQsvD,EAEzB/uE,EAAEivE,cAAe,EACjB,IAAIC,GAAY,EAChB,GAAiB,OAAblvE,EAAE4zC,OACJ,IAAK,IAAInnC,EAAI,EAAGA,EAAIzM,EAAE4zC,OAAOzqC,OAAQsD,IAEnC,GADAyiE,GAAY,EACgB,KAAxBlvE,EAAE4zC,OAAOnnC,GAAGunC,QAAgB,CAC9Bh0C,EAAEivE,cAAe,EACjB,MAINjvE,EAAEmvE,aACiB,IAAjBnvE,EAAEwf,aAAqC,IAAjBxf,EAAEgrE,aAA2C,IAAnBhrE,EAAEivE,aAIpDjvE,EAAEovE,WAAaphF,mBACb,wBAhiBJ,SAAuBwxB,EAAYiO,EAAUu/C,GAC3C,IAAIljD,EAAS,CAAEulD,iBAAiB,GAEhC,GAAI7+E,IAAE6E,QAAF,OAAUo4B,QAAV,IAAUA,OAAV,EAAUA,EAAU6hD,mBAItB,OAHAxlD,EAAOylD,cAAgB,EACvBzlD,EAAO0lD,kBAAoB,EAC3B1lD,EAAO2lD,UAAW,EACX3lD,EAOT,GAJAA,EAAOylD,cAAgB9hD,EAAS6hD,kBAAkBC,cAClDzlD,EAAO4lD,iBAAmBjiD,EAAS6hD,kBAAkBI,iBACrD5lD,EAAO2lD,SAAWhiD,EAAS6hD,kBAAkBG,UAExCj/E,IAAE6E,QAAQ23E,GAAa,CAC1B,IAAMlmC,EAAQrZ,EAAS0a,UAAUjoC,MAAK,SAACtO,GAAD,OAAOA,EAAEw2C,OAAS4kC,KACnDx8E,IAAE6E,QAAQyxC,KACiC,IAA1CA,EAAMwoC,kBAAkBC,gBAC1BzlD,EAAOylD,cAAgBzoC,EAAMwoC,kBAAkBC,eAEA,IAA7CzoC,EAAMwoC,kBAAkBI,mBAC1B5lD,EAAO4lD,iBAAmB5oC,EAAMwoC,kBAAkBI,mBAQxD,OAHA5lD,EAAOulD,gBACL7vD,EAAasK,EAAOylD,cAAgBzlD,EAAO4lD,iBAEtC5lD,EAmgBC6lD,CAAc3vE,EAAEwf,WAAH,UAAexf,EAAEgqC,UAAjB,aAAe,EAAMzgB,UAAU,GAAIvpB,EAAEgtE,cACxD,WAAChtE,EAAEgqC,UAAH,aAAC,EAAMzgB,UAAWvpB,EAAEgtE,WAAYhtE,EAAEwf,aAGpCxf,EAAE4vE,gBAAkB,IAChBV,GAAa3D,KACfvrE,EAAE4vE,gBAAgBxgF,YAAa,GAEjC4Q,EAAE6vE,iBAAmB7vE,EAAE4vE,gBAAgBxgF,WAGvCwX,qBAAU,WACR,GAAiB,OAAb5G,EAAE4zC,QAAmB5zC,EAAE4zC,OAAOzqC,OAAS,EAAG,CAC5C,IAAMre,EAAKu6B,aAAY,WACJ,OAAbrlB,EAAE4zC,QAAmB5zC,EAAE4zC,OAAOzqC,OAAS,GAAGsjE,EAAOxwD,SACpD,KACH,OAAO,kBAAMmJ,cAAct6B,OAE5B,CAACkV,EAAE4zC,SAEN5zC,EAAE8vE,yBAA2B9vE,EAAEwtE,qBAC3B,CAAE3gF,QAAS,UAAW6F,UAAU,GAChC,CACE7F,QAAS,kBACT6F,SAAU64E,GAKhBvrE,EAAE+vE,wBAA0B/vE,EAAEwtE,qBAC1B,CAAE3gF,QAAS,iBAAkB6F,SAAmB64E,GAChD,CAAE1+E,QAAS,SAAU6F,UAAU,GAEnCsN,EAAEgwE,sBAAwBhwE,EAAEmrE,cACxB,CAAEt+E,QAAS,UAAW6F,UAAU,GAChC,CAAE7F,QAAS,kBAAmB6F,SAAmB64E,GAErDvrE,EAAEiwE,qBAAuBjwE,EAAEmrE,cACvB,CAAEt+E,QAAS,iBAAkB6F,SAAmB64E,GAChD,CAAE1+E,QAAS,SAAU6F,UAAU,GAEnCsN,EAAEkwE,cACsB,MAAtBlwE,EAAEktE,gBACE,CAAErgF,QAAS,UAAW6F,UAAU,GAChC,CAAE7F,QAAS,YAAa6F,SAAmB64E,GAEjDvrE,EAAEmwE,gBACsB,MAAtBnwE,EAAEktE,gBACE,CAAErgF,QAAS,UAAW6F,UAAU,GAChC,CAAE7F,QAAS,YAAa6F,SAAmB64E,IAOP,OAAtC,UAAAvrE,EAAE8tE,kBAAF,eAAcsC,sBAA+B7E,KAC/CvrE,EAAE8vE,yBAAyBp9E,UAAW,EACtCsN,EAAE+vE,wBAAwBr9E,UAAW,GAKnCsN,EAAEwtE,uBACJxtE,EAAEgwE,sBAAsBt9E,UAAW,EACnCsN,EAAEiwE,qBAAqBv9E,UAAW,GAKpCsN,EAAEqwE,gBA1bJ,YAwBI,IAvBF9kD,EAuBC,EAvBDA,OACA4jD,EAsBC,EAtBDA,aACArC,EAqBC,EArBDA,SACAG,EAoBC,EApBDA,kBACAL,EAmBC,EAnBDA,YACA8B,EAkBC,EAlBDA,UACA1B,EAiBC,EAjBDA,WACAE,EAgBC,EAhBDA,gBACAK,EAeC,EAfDA,yBACAJ,EAcC,EAdDA,aACAC,EAaC,EAbDA,SACAE,EAYC,EAZDA,iBACAtjC,EAWC,EAXDA,GACAyjC,EAUC,EAVDA,oBACAC,EASC,EATDA,gBACAC,EAQC,EARDA,UACA/zE,EAOC,EAPDA,WACAuxE,EAMC,EANDA,cACAP,EAKC,EALDA,KACAI,EAIC,EAJDA,WACAyD,EAGC,EAHDA,cACAX,EAEC,EAFDA,WACAE,EACC,EADDA,iBAEMsC,GAAsB1B,GAAsBhC,GAE5C2D,EAyGR,SAA6BhlD,EAAQ4jD,EAAcqB,GACjD,OAAOhgF,IAAE6E,QAAQk2B,IAAW4jD,GAAgBqB,EACxChG,GACAE,GA5GqB+F,CACvBllD,EACA4jD,EACAmB,GAEII,EA0GR,SAA8B5D,GAC5B,OAAOt8E,IAAE6E,QAAQy3E,GAAYtC,GAAmBE,GA3GlBiG,CAAqB7D,GAE7C8D,EA4GR,SAAyC3D,GACvC,OAAOz8E,IAAE6E,QAAQ43E,GAAqBzC,GAAmBE,GA5GvDmG,CAAgC5D,GAE5B6D,EA6GR,SAA4BpC,GAC1B,OAAOA,EAAYhE,GAAaF,GA9GRuG,CAAmBrC,GAErCsC,EA+GR,YAKI,IAJFtC,EAIC,EAJDA,UACA5B,EAGC,EAHDA,SACAE,EAEC,EAFDA,WACAE,EACC,EADDA,gBAEIpjD,EAAS2gD,GAEPyD,EAAepB,IAAa1C,GAAUE,OAAO/7E,MAC7C4/E,EAAerB,IAAa1C,GAAUC,OAAO97E,MAE/CmgF,IAAcP,GAAgBD,KAE9BpkD,EADEt5B,IAAE6E,QAAQ23E,IAGZkB,GACoB,MAApBhB,GACoB,MAApBA,EAJS1C,GAQAE,IAGb,OAAO5gD,EAvIkBmnD,CAAyB,CAChDvC,YACA5B,WACAE,aACAE,oBAGIgE,EAmIR,YAAwE,IAAxCxC,EAAuC,EAAvCA,UAAW9T,EAA4B,EAA5BA,aAAckT,EAAc,EAAdA,WACvD,OAAOY,GAAa9T,GAEhBpqE,IAAE6E,QAAQy4E,GADVrD,GAGAC,GAxIsByG,CAAqB,CAC7CzC,YACA9T,aAAY,OAAE5wB,QAAF,IAAEA,OAAF,EAAEA,EAAI4wB,aAClBkT,eAGIsD,EAqIR,YAKI,IAJF1C,EAIC,EAJDA,UACA9T,EAGC,EAHDA,aACAwS,EAEC,EAFDA,SACAY,EACC,EADDA,iBAEA,OAAOU,GAAa9T,GAEhBpqE,IAAE6E,QAAQ24E,GADVvD,GAGAj6E,IAAE6E,QAAQ+3E,IACmB,oBAArBA,EAASrsD,UAA2BqsD,EAASrsD,UACrDypD,GACAE,GAlJsB2G,CAAqB,CAC7C3C,YACA9T,aAAY,OAAE5wB,QAAF,IAAEA,OAAF,EAAEA,EAAI4wB,aAClBwS,WACAY,qBAGIsD,EA8IR,YAMI,IALFhE,EAKC,EALDA,iBACAC,EAIC,EAJDA,yBACAJ,EAGC,EAHDA,aACAW,EAEC,EAFDA,WACAE,EACC,EADDA,iBAEA,OAAQx9E,IAAE6E,QAAQi4E,IAAiD,KAA5BA,EAAiBp0D,QAElD1oB,IAAE6E,QAAQy4E,IAA4C,SAA7BP,IACzB/8E,IAAE6E,QAAQ24E,IAAsC,SAAjBb,EACjC3C,GACAC,GAJAC,GAtJiC6G,CAAiC,CACpEjE,mBACAC,2BACAJ,eACAW,aACAE,qBAGIwD,EAqJR,YAYI,IAAD,IAXD/D,EAWC,EAXDA,oBACAC,EAUC,EAVDA,gBACAC,EASC,EATDA,UACAb,EAQC,EARDA,SACAlzE,EAOC,EAPDA,WACAuxE,EAMC,EANDA,cACAuD,EAKC,EALDA,UACA9D,EAIC,EAJDA,KACAI,EAGC,EAHDA,WACAyD,EAEC,EAFDA,cACAzkC,EACC,EADDA,GAEIwnC,EACF/D,GAAuBC,GAAmBC,EACtCjD,GACAF,GAGJsC,IAAa1C,GAAUpgC,GAAGz7C,OACV,OAAfqL,GACgB,KAAfA,KADD,UAEC60E,EAAchhD,gBAFf,aAEC,EAAwBgkD,cAE1BD,EAAuB/G,IAGvBqC,IAAa1C,GAAU38C,SAASl/B,QAAhC,OACAkgF,QADA,IACAA,GADA,UACAA,EAAehhD,gBADf,aACA,EAAyBgkD,cAEzBD,EAAuB/G,IAErBqC,IAAa1C,GAAUpgC,GAAGz7C,QACxBmgF,GAAa1kC,EAAG4wB,eAAc4W,EAAuB/G,KACnC,IAAlBU,IAAyBqG,EAAuB/G,KAGlDO,GAAuB,QAATJ,GAAkB4G,IAAyBhH,KAC3DgH,EAAuB/G,IAGvBqC,IAAa1C,GAAUC,OAAO97E,OAC9Bu+E,IAAa1C,GAAUE,OAAO/7E,QAE9BijF,EAAuB/G,IAEzB,OAAO+G,EAnMsBE,CAAwB,CACnDjE,sBACAC,kBACAC,YACAb,WACAlzE,aACAuxE,gBACAuD,YACA9D,OACAI,aACAyD,gBACAzkC,OAGI2nC,EAA4BnhF,IAAEu+D,MAAMn1D,GACtC4wE,GACAE,GAEAkH,GAAe,EACfrB,IAAqB7F,IAAcgG,IAA0BhG,KAC3DoC,IAAa1C,GAAUprE,SAASzQ,MAC9BqiF,IAAiCpG,KACnCoH,GAAe,GACR9E,IAAa1C,GAAU38C,SAASl/B,MAEvCojF,IAA8BnH,IAC9BgH,IAAyBhH,KAEzBoH,GAAe,GACRpD,GAAkB1B,IAEzB0E,IAAyBhH,IACzBwG,IAAqBxG,IACrB0G,IAAsB1G,IACtB4G,IAAsB5G,IACtB8G,IAAiC9G,IACjCsG,IAAoBtG,KAEpBoH,GAAe,IAIrB,MAAO,CACLv9D,IAAKk8D,EACLzD,SAAU4D,EACVmB,gBAAiBjB,EACjB5mC,GAAI8mC,EACJgB,WAAYd,EACZe,KAAMb,EACNc,KAAMZ,EACN9D,iBAAkBgE,EAClBW,QAAST,EACTU,aAAcP,EACdC,aAAcA,GAkUIO,CAAmB,CACrC5mD,OAAQvrB,EAAEurB,OACV4jD,aAAcnvE,EAAEmvE,aAChBrC,SAAU9sE,EAAE8sE,SACZG,kBAAmBjtE,EAAEitE,kBACrBL,YAAa5sE,EAAE4sE,YACf8B,UAAW1uE,EAAE0uE,UACb1B,WAAYhtE,EAAEgtE,WACdE,gBAAiBltE,EAAEktE,gBACnBK,yBAA0BvtE,EAAEutE,yBAC5BJ,aAAcntE,EAAEmtE,aAChBC,SAAUptE,EAAEotE,SACZE,iBAAkBttE,EAAEstE,iBACpBtjC,GAAIhqC,EAAEgqC,GACNyjC,oBAAqBztE,EAAEytE,oBACvBC,gBAAiB1tE,EAAE0tE,gBACnBC,UAAW3tE,EAAE2tE,UACb/zE,WAAYoG,EAAEpG,WACduxE,cAAenrE,EAAEmrE,cACjBP,OACAI,WAAYhrE,EAAEgrE,WACdyD,cAAezuE,EAAEyuE,cACjBX,WAAY9tE,EAAE8tE,WACdE,iBAAkBhuE,EAAEguE,mBAKtBhuE,EAAEoyE,oBAAsBpyE,EAAEkuE,cAAiC,UAAjBluE,EAAEgtE,WAC5ChtE,EAAEqyE,iBAlpBJ,SACElE,EACAD,EACAhB,EACAoF,GAEA,GAAIA,EAAkB,OAAO,EAE7B,IAAInE,GAAgBD,KACdC,GAAoC,MAApBjB,GAA+C,MAApBA,GAC7C,OAAO,EAEX,OAAO,EAsoBcqF,CACnBvyE,EAAEmuE,aACFnuE,EAAEkuE,aACFluE,EAAEktE,iBAGJltE,EAAEwyE,oBACAxyE,EAAEqwE,gBAAgB/C,mBAAqB9C,GACnC,iCACA,eAENxqE,EAAEyyE,oBAAqB,EAEvB,IAAIC,EAAc,GAClB,GAAoB,MAAhB1yE,EAAE8tE,WACJ9tE,EAAEyyE,mBAAqBzyE,EAAEwtE,qBACzBkF,EAAc1yE,EAAEyyE,mBACZ,8CACAzyE,EAAEmrE,cACF,kDACA,oEACC,CAAC,IAAD,OAEH,UAAAnrE,EAAEgqC,UAAF,eAAMl/C,MAAOkV,EAAE+sE,cACdv8E,IAAEoN,YAAF,UAAcoC,EAAEgqC,UAAhB,aAAc,EAAMl/C,KACZ,QAAT8/E,GAC+B,KAA/B5qE,EAAEutE,0BAMoC,KAA7B,UAAAvtE,EAAEgqC,UAAF,eAAM2oC,qBACf3yE,EAAEyyE,oBAAqB,EACvBC,EAAc,gCAEdA,EAAc,oCARd1yE,EAAEyyE,mBAAqBzyE,EAAE4tE,mBACzB8E,EAAc1yE,EAAE4tE,mBACZ,0BACA,+BAQR5tE,EAAE0yE,YAAcA,EAChB1yE,EAAE4yE,aAAe5yE,EAAE6yE,cACf,8EACA,KAEJ,IAAMC,EAAc9yE,EAAEpG,WAmDtB,OAlDAoG,EAAE+yE,kBAAoB,CAEpBjoF,GAAIkV,EAAElV,GACNygC,OAAQvrB,EAAEurB,OACV0qB,SAAUj2C,EAAEi2C,SACZx2B,MAAOzf,EAAEyf,MACTmtD,YAAa5sE,EAAE4sE,YAEfE,SAAU9sE,EAAE8sE,SAEZG,kBAAmBjtE,EAAEitE,kBAGrBrzE,WAAYpJ,IAAEu+D,MAAM+jB,GAAe,GAAKA,EAGxCvsE,KAAMvG,EAAEuG,KAERgnE,yBAA0B/8E,IAAE6E,QAAQ2K,EAAEutE,0BAClC,GACAvtE,EAAEutE,yBACNC,qBAAsBxtE,EAAEwtE,qBACxBrC,cAAenrE,EAAEmrE,cAGjBgC,aAAc38E,IAAE6E,QAAQ2K,EAAEmtE,cAAgB,GAAKntE,EAAEmtE,aACjDC,SAAUptE,EAAEotE,SAGZJ,WAAYhtE,EAAEgtE,WAEdE,gBAAiBltE,EAAEktE,gBACnB8F,gBAAiBhzE,EAAEgzE,gBAGnBvF,oBAAqBztE,EAAEytE,oBACvBC,gBAAiB1tE,EAAE0tE,gBACnBC,UAAW3tE,EAAE2tE,UAGbL,iBAAkBttE,EAAEstE,iBACpBtC,WAAYhrE,EAAEgrE,WACdC,UAAWA,EACXgI,cAAejwD,KAAU4jB,QACzBgN,OAAQ5zC,EAAE4zC,OACV94C,eAAgBkF,EAAElF,eAClBC,eAAgBiF,EAAEjF,eAClBm4E,eAAgBlzE,EAAEmzE,cAGbnzE,EAhhEGozE,CAAkB,CAC1BxI,OACAW,iBACAN,YACAuB,gBATD,EAYmCv8E,mBAAS86E,GAZ5C,mBAYMsI,EAZN,KAYkBC,EAZlB,OAayCrjF,oBAAS,GAblD,mBAaM4iF,EAbN,KAaqBU,EAbrB,OAcuDtjF,oBAAS,GAdhE,mBAcMujF,EAdN,KAc4BC,EAd5B,OAe2CxjF,oBAAS,GAfpD,mBAeM22E,EAfN,KAesBC,EAftB,OAgB6C52E,oBAAS,GAhBtD,mBAgBMyjF,EAhBN,KAgBuBC,EAhBvB,OAiB6B1jF,mBAAS,GAA9B2jF,EAjBR,sBAkByC3jF,mBAAS,GAlBlD,mBAkBM4jF,EAlBN,KAkBqBC,GAlBrB,QAmB2C7jF,mBAAS,IAnBpD,qBAmBM8jF,GAnBN,MAmBsBC,GAnBtB,SAsB6C/jF,oBAAS,GAtBtD,qBAsBMgkF,GAtBN,MAsBuBC,GAtBvB,SAuB6CjkF,oBAAS,GAvBtD,qBAuBMkkF,GAvBN,MAuBuBC,GAvBvB,SAwB6CnkF,mBAAS,IAxBtD,qBAwBMokF,GAxBN,MAwBuBC,GAxBvB,SAyB+CrkF,mBAAS,IAzBxD,qBAyBMskF,GAzBN,MAyBwBC,GAzBxB,SA0BuCvkF,mBAAS,IA1BhD,qBA0BMkjF,GA1BN,MA0BoBsB,GA1BpB,SA2B2BxkF,oBAAS,GA3BpC,qBA2BMykF,GA3BN,MA2BcC,GA3Bd,SA4BqC1kF,oBAAS,GA5B9C,qBA4BM2kF,GA5BN,MA4BmBC,GA5BnB,SA6B+B5kF,oBAAS,GA7BxC,qBA6BM6kF,GA7BN,MA6BgBC,GA7BhB,SA8B6C9kF,oBAAS,GA9BtD,qBA8BM+kF,GA9BN,MA8BuBC,GA9BvB,SA+BuDhlF,mBAAS,IA/BhE,qBA+BMilF,GA/BN,MA+B4BC,GA/B5B,SAgC6CllF,mBAAS,IAhCtD,qBAgCM+iF,GAhCN,MAgCuBoC,GAhCvB,MAiCK9sE,GAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAEjD61E,GAAkB/sE,GAAa4Q,SAAWpZ,EAAE6sE,eAAezzD,OAC3Do8D,GAAiBhtE,GAAa4Q,SAAWpZ,EAAEyrB,OAAOrS,OAExDtS,qBAAU,WACR,IAAIg/D,EAAcC,aAAS5/C,OAAQ,CACjC,SAAUsvD,GACV,aAAcA,KAEhB,OAAO,WACL3P,QAIJ,IAAI4P,IAAiB,EAChBjK,IACHiK,IAAiB,GAInB,IAAI5D,IAAe,EACdrG,IACHqG,GAAe9xE,EAAEuwE,gBAAgBuB,cAKnChrE,qBAAU,WACR,IAAe,IAAX8tE,GAAiB,CACnB,IAAMe,EAAQ,2BACT31E,EAAEizE,mBADO,IAEZC,gBAAiBA,GACjBE,eAAgBC,KAIZ7+E,EAAUsgF,GAAW,2BAElBa,GAFkB,IAGrBjsE,OAAO,EACPksE,WAAY7B,EACZ8B,YAAa5B,KALQ,2BAOlB0B,GAPkB,IAORjsE,OAAO,IAC1B,GAAIorE,GAAa,CACf,GACEtgF,EAAQs/C,OAAOzqC,SAAW7U,EAAQqhF,YAAYxsE,QAC9C7U,EAAQmrB,QAAUnrB,EAAQohF,WAK1B,OAHAz5E,IAAMrE,MAAM,qDACZ+8E,IAAU,QACVE,IAAe,GAEV,GAC0B,IAA/BvgF,EAAQqhF,YAAYxsE,QACG,IAAvB7U,EAAQohF,WAKR,OAHAz5E,IAAMrE,MAAM,wCACZ+8E,IAAU,QACVE,IAAe,GAOb3gF,EADK,QAAT02E,EACagL,GAAYr/B,WAAWjiD,GACvBshF,GAAYn/B,WAAWniD,IAEnCiD,KAAK4jB,KACL5jB,MAAK,SAACsU,GACL,GAAI/L,EAAE6rE,kBAEe,aAAhBa,IAA+B1sE,EAAE8rE,gBACjB,UAAhBY,IAA4B1sE,EAAE+rE,kBAE/BhB,IAEArsD,EAASguD,EAAc,aAAa,QAEjC,GAAIoI,GAAa,CACtB,IAAMiB,EAAKxK,GAAgB,CAAEP,KAAMj/D,EAAQ++D,KAAMA,IAC3CkL,EAAKzK,GAAgB,CACzBP,KAAMj/D,EAAOkqE,gBACbnL,KAAMA,IAYR,IAAK,IAAIoL,KATTx3D,EAAS,kBAAkB,GAC3BA,EAAS,qBAAqB,GAC9BA,EAAS,wBAAyB3iB,KAAKC,UAAU+P,EAAO+nC,SACxDp1B,EACE,qBACA3iB,KAAKC,UAAU+P,EAAOkqE,gBAAgBniC,SAItBiiC,EAEhBr3D,EAAS,YAAcw3D,EAAOH,EAAGG,IAEnC,IAAK,IAAIC,KAAUH,EAEjBt3D,EAAS,SAAWy3D,EAAQH,EAAGG,IAGjCz3D,EAAS,qBAAqB,GAC9B0sD,SAEAL,IAEF8J,IAAU,GACVE,IAAe,MAEhBl9E,OAAM,SAACkU,GACN3W,QAAQC,IAAI0W,GACZ8oE,IAAU,GACVE,IAAe,SAKpB,CAAC3gF,EAAUwgF,KAKd9tE,qBAAU,YACS,IAAbkuE,IACF5gF,EACE0hF,GAAYl/B,WAAW,CAAE5rD,GAAIgV,EAAEhV,GAAIooF,eAAgBC,MAElD57E,KAAK4jB,KACL5jB,MAAK,WACJw9E,IAAY,GAEO,aAAhBvI,IAA+B1sE,EAAE8rE,gBACjB,UAAhBY,IAA4B1sE,EAAE+rE,kBAE/B/O,EAAS,CAAEhyE,GAAIgV,EAAEhV,KAEjB0zB,EAASguD,EAAc,aAAa,MAIvC70E,OAAM,SAACkU,GACNkpE,IAAY,QAKjB,CAAC7gF,EAAU4gF,KAEd,IAeMoB,GAAYrjF,uBAAY,WAC5B,GAAI++E,GACF31E,IAAMrE,MAAM,oDAId,IAAMy9E,IAA4B,QAATzK,IAAoB0K,GAC3Cd,GAAoB,QAElBF,GADW,QAAT1J,EAEA,mEAIA,oEAGJwJ,IAAmB,QAEnB,GAAIt0E,EAAEouE,cAAgBpuE,EAAEsvE,WAAWC,gBAAiB,CAClD4F,IAAmB,GACnB,IAAIkB,EAAI,eAAQr2E,EAAEsvE,YAClB+G,EAAK32D,WAAa1f,EAAE0f,WACpB21D,GAAwBgB,QAExBxB,IAAU,KAGb,CACD70E,EAAEouE,aACFpuE,EAAE0f,WACF1f,EAAEsvE,WACFkG,GACA1K,EACAgH,GACAyD,KAGF,SAASE,GAAaxjF,GACpBA,EAAM0c,iBAGHwlE,IACArN,GACAyM,GACAc,IACAa,IAEDkB,KAKJ,IAqDME,GAAwB,SAACn2E,GAC7Bue,EAASguD,EAAc,mBAAoBvsE,GACtCzP,IAAE6E,QAAQyK,EAAE8sE,eACL,MAAN3sE,EACFue,EACEguD,EAAc,eACd1sE,EAAE8sE,YAAYp4C,QAAQ,KAAM,SAEf,MAANv0B,GACTue,EACEguD,EAAc,eACd1sE,EAAE8sE,YAAYp4C,QAAQ,OAAQ,SAMhC6hD,GAA6BxjF,uBACjC,SAACoN,IACyB,IAApBH,EAAEqrE,gBAAiC,IAANlrE,GAC/Bue,EAASguD,EAAc,kBAAkB,GAE3ChuD,EAASguD,EAAc,wBAAyBvsE,KAElD,CAACusE,EAAahuD,EAAU1e,EAAEqrE,gBAgHtBmL,GAAsBzjF,uBAC1B,kBAAMygF,GAAc,KACpB,CAACA,IAGGiD,GAAgB1jF,uBAAY,WAChC8gF,GAAmB,GACnBkB,IAAe,GACfqB,OACC,CAACA,KAEEM,GAAmB3jF,uBACvB,SAAC+gD,GAEC,GADA0/B,GAAc,GACVI,EAAiB,CACnB,IAAMiC,EAAc/hC,EACjBvlD,QAAO,SAACwU,GAAD,OAAsB,IAAfA,EAAE8gB,YAChBtyB,KAAI,SAACwR,GAAD,OAAOA,EAAEixC,aAEhBkgC,GAAkB2B,GAClBhC,GAAmB,GACnB4C,KAEF/3D,EAASguD,EAAc,UAAW3wE,KAAKC,UAAU83C,MAEnD,CAAC8/B,EAAiBl1D,EAAUguD,EAAa+J,KAIrCE,GACJ,eAACC,GAAD,CACE/kF,SApDmB,SAACglF,GAItB,IAHA,IAAIC,GAAe,EACfC,GAAe,EACfC,GAAa,EACRrqE,EAAI,EAAGA,EAAIkqE,EAAYxtE,OAAQsD,IACf,IAAnBkqE,EAAYlqE,KAAUmqE,GAAe,GAClB,IAAnBD,EAAYlqE,KAAUoqE,GAAe,GAClB,IAAnBF,EAAYlqE,KAAUqqE,GAAa,IAErB,IAAhBh3E,EAAE6tE,YAAsC,IAAfmJ,GAC3BF,GAAe,EACfC,GAAe,GACN/2E,EAAE6tE,YAAciJ,GAAgBC,KACzCC,GAAa,GAGft4D,EAASguD,EAAc,uBAAwBoK,GAC/Cp4D,EAASguD,EAAc,mBAAoBqK,GAC3Cr4D,EAASguD,EAAc,aAAcsK,IAmCnCvoF,MAAOuR,EAAE+uE,aACTkI,YAAa,kBAAMtD,GAAwB,IAC3CjC,qBAAsB1xE,EAAEuwE,gBAAgB4B,QACxC9G,cAAerrE,EAAEqrE,eAAiB36E,IAAE6E,QAAQyK,EAAEguE,YAC9CQ,eAAgBxuE,EAAEwuE,eAClB/C,eAAgBA,IAIdyL,IACHl3E,EAAE6rE,oBAAsBJ,GAA2B,QAATX,EAEvCqM,GAA4B,WAChC7C,IAAmB,GACnBS,IAAe,GACfX,IAAmB,IAGrB,OACE,uCAEE,eAACjO,GAAD,CAAatzE,KAAM+hF,KACnB,eAACxP,GAAD,CAAevyE,KAAMmiF,KACrB,eAAC3P,GAAD,CACExyE,KAAMwhF,GACNv6B,WAAYy6B,GACZ/yB,SAAU21B,GACV5R,cAAwB,QAATuF,EAAiB,iCAAmC,GACnExF,KAAM,SAACK,GACLgP,GAAgBhP,GAChB2O,IAAmB,GACM,SAArBG,GACFI,IAAU,GAEVI,IAAY,MAIlB,eAAC5P,GAAD,CACExyE,KAAMqiF,GACNp7B,WAAY,+BACZ4rB,gBACE,uCACE,eAAC35E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG,eAAiBopF,GAAqB11D,WAAa,cAGxD,eAAC3zB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG,sCACEopF,GAAqBxF,iBACpBwF,GAAqB3F,eACvB,6BAGN,eAAC1jF,EAAA,EAAD,CAAKK,UAAW,OAAhB,SACE,eAACJ,EAAA,EAAD,MAEF,eAACD,EAAA,EAAD,CAAKK,UAAW,OAAhB,SACE,eAACJ,EAAA,EAAD,UAEI,8GAMVw5E,OAAQ,mBACRC,WAAY,YACZjkB,SAAU,WACR2zB,IAAmB,GACnBN,IAAU,IAEZtP,cAAe,GACfD,KAAM,SAACK,GACL2P,GAAmB3P,GACnBwP,IAAmB,GACnBN,IAAU,MAId,eAAC3O,GAAD,CACErzE,KAAMshF,GACN3yB,SAAU21B,GACV7R,KAAM,WACJ8O,IAAmB,GACnBa,IAAY,IAEdn7B,WAAW,mBACXv8B,KAAK,sDAEP,eAACs8B,GAAD,CACEhnD,KAAM6gF,EACN35B,QAAS,kBAAM45B,GAAwB,IACvC75B,WAAW,gBACXv8B,KAAM,eAAC65D,GAAD,MAGPtQ,EACC,eAACuQ,GAAD,CACEC,aAAct3E,EAAE8zC,OAAOzqC,OAAS,EAAI,WAAa,gBACjDxW,KAAMi0E,EACNnnD,MAAO3f,EAAE2f,MACT2lD,KAAM,SAAC3lD,EAAOjW,GACZsqE,GAAiBtqE,GACjBoqE,EAAkBn0D,GAClBonD,GAAkB,GACd/mE,EAAE8zC,OAAOzqC,OAAS,GACpBmqE,GAAc,GACdK,GAAmB,KAEnBK,GAAkB,IAClBuC,OAGJj1B,SAAU,kBAAMulB,GAAkB,MAElC,KAEJ,eAAC,GAAD,CACEl0E,KAAM0gF,EACN/xB,SAAUg1B,GACVlR,KAAMoR,GACN5iC,OAAQ04B,EACR3rD,KAAM7gB,EAAE4sE,eACRh6E,SAAU64E,EACVhF,UAAWmN,IAEb,eAAC9nF,GAAA,EAAKY,MAAN,CAAYN,UAAU,OAAtB,SACE,gBAACiiE,GAAA,EAAD,CAAWthE,QAAQ,QAAnB,UACG0+E,EACC,eAACpd,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,SAASX,UAAU,OAA3C,SACE,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACG,8BACoB,WAApBgU,EAAE0rE,cACC,8BAAgC1rE,EAAE0rE,cAAgB,IAClD,YAKV,+BAGF,gBAACrd,GAAA,EAAU5pD,KAAX,CACE1X,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgBh8D,KAC9CnoB,UAAU,OAFZ,UAIE,gBAACL,EAAA,EAAD,CAAKK,UAAU,YAAf,UACE,gBAACJ,EAAA,EAAD,CAAK8Y,GAAI,EAAG7Y,GAAI,EAAGG,UAAU,YAA7B,UACE,eAACN,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,kBACA,eAAC,KAAKI,OAAN,aACEqF,SAjXK,SAACsO,GACpBue,EAASguD,EAAc,UAAWvsE,IAiXpB1R,MAAOuR,EAAEyrB,OACTjL,mBAAmB,QACfxgB,EAAE8vE,qBAGV,eAAC9jF,EAAA,EAAD,CAAK8Y,GAAI,EAAG7Y,GAAI,GAAIG,UAAU,OAA9B,SACE,eAAC81B,GAAA,EAAD,CACErwB,SA/XG,SAACkyB,GAClBrF,EAASguD,EAAc,YAAaxpD,KAAU4jB,MAAM/iB,KA+XtCt1B,MAAOuR,EAAE4sE,eACTxqD,aAAa,EACbxvB,SAAUoN,EAAE+vE,iBACZrtD,aAAc1iB,EAAEovE,UAAYpvE,EAAEkrE,WAC9BvoD,eAAe,cAIrB,gBAAC52B,EAAA,EAAD,CAAKK,UAAU,YAAf,UACE,gBAACJ,EAAA,EAAD,CAAK6Y,GAAIqyE,GAAmB,EAAI,EAAGjrF,GAAI,EAAvC,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,mBACA,eAACu3E,GAAD,CACE34E,GAAG,QACHyD,MAAOuR,EAAE2f,MACT9tB,SA3YI,SAACC,GACnB4sB,EAASguD,EAAc,SAAf,OAAyB56E,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAGrD,QA2YtBmE,SAAU64E,OAGd,gBAACz/E,EAAA,EAAD,CAAK6Y,GAAI,EAAG5Y,GAAI,EAAhB,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,yBACA,eAACU,EAAA,EAAD,CACEk1D,OAAK,EACLj1D,QAASiT,EAAEmvE,aAAe,UAAY,UACtCv8E,SAAUoN,EAAEkrE,WACZl+E,QAAS,WACE,QAAT89E,EACI0I,GAAc,GACd90D,EAASguD,EAAc,eAAe,IAP9C,SAUG1sE,EAAEkrE,WACD,cACsB,IAApBlrE,EAAE8zC,OAAOzqC,OACX,OAEA,uBAAKjd,UAAU,WAAf,UACE,uBAAMA,UAAU,aAAhB,SACG4T,EAAEkvE,sBAEL,uBAAM9iF,UAAU,cAAhB,SAA+B,cAC/B,wBAAMA,UAAU,cAAhB,UACG,IACAozB,OAAOxf,EAAEivE,YAAYt7D,QAAQ,IAC3B3T,EAAEmvE,aAAe,IAAM,eAMpC,gBAACnjF,EAAA,EAAD,CAAK6Y,GAAIqyE,GAAmB,EAAI,EAAGjrF,GAAI,EAAvC,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,yBACA,eAACN,GAAA,EAAK8F,QAAN,CACE0C,KAAK,UACL+K,YAAY,GACZnT,UAAQ,EACRuC,MAAO+wB,OAAOxf,EAAE0f,YAAY/L,QAAQ,QAGvCujE,GACC,gBAAClrF,EAAA,EAAD,CAAK6Y,GAAI,EAAG5Y,GAAI,EAAhB,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,mBACA,eAACU,EAAA,EAAD,CACEE,QAAS,WACHgT,EAAEuwE,gBAAgBuB,aACpB31E,IAAMrE,MACJ,qDAEOkI,EAAEouE,aACXjyE,IAAMrE,MAAM,qCACS,IAAZkI,EAAE2f,MAAeonD,GAAkB,GACrC/mE,EAAE8zC,OAAOzqC,OAAS,GACzBwqE,GAAmB,GACnBL,GAAc,IAEdr3E,IAAMrE,MAAM,yCAblB,SAgBE,eAAC,KAAD,CAAa1L,UAAU,YAAYgH,KAAK,cAG1C,QAEN,eAACrH,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,0BACA,eAAC,KAAD,CACE1B,KAAK,cACL4J,KAAK,OACL+K,YAAY,kBACZ5S,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GACT4sB,EAASguD,EAAc,eAAgB56E,EAAEC,OAAOtD,OAChDiwB,EACEguD,EAAc,yBACd56E,EAAEC,OAAOtD,QAGbA,MAAOuR,EAAE8sE,YACT5gF,SAAUu/E,GAAkBzrE,EAAEsyE,oBAC9BtM,UAAW,cAOnB,gBAAC3X,GAAA,EAAU5pD,KAAX,CACE1X,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgBvD,UAC9C5gF,UAAU,OAFZ,UAIE,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,uBACA,eAACq+E,GAAD,CACEz/E,GAAG,WACHmzC,aAAcn+B,EAAEgtE,SAChBn7E,SA1eO,SAACC,IACjB,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAGrD,SAAUuR,EAAEgtE,YAEd,OAADl7E,QAAC,IAADA,OAAA,EAAAA,EAAGrD,SAAU67E,GAAUC,OAAO97E,MAChCiwB,EAASguD,EAAc,eAAgB,YAC7B,OAAD56E,QAAC,IAADA,OAAA,EAAAA,EAAGrD,SAAU67E,GAAUE,OAAO/7E,OACvCiwB,EAASguD,EAAc,eAAgB,IACvChuD,EAASguD,EAAc,cAAe,MAElC1sE,EAAEouE,cAAgBpuE,EAAEquE,gBAClB39E,IAAEoN,YAAYkC,EAAE+sE,uBAClBruD,EAASguD,EAAc,eAAgB,IAEvChuD,EAASguD,EAAc,eAAgB1sE,EAAE+sE,wBAI/CruD,EAASguD,EAAc,YAAf,OAA4B56E,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAGrD,SA0dzBmE,SAAU64E,SAIfzrE,EAAEgtE,SAAW,KACZ,eAACjhF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,+CAOPsN,EAAEuuE,eACD,eAAClgB,GAAA,EAAU5pD,KAAX,CACErY,UAAU,OACVW,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgBwB,iBAFhD,SAIE,gBAAChmF,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,8BACA,eAAC,GAAoBI,OAArB,CACExB,GAAG,oBACHyD,MAAOuR,EAAEmtE,kBACTnoE,aAAa,EACbnT,SAhfY,SAACsO,GAC7Bue,EAASguD,EAAc,qBAAsBvsE,SAkfjC,eAACnU,EAAA,EAAD,SAGFgU,EAAEyuE,eACJ,uCAEGzuE,EAAE4uE,UACD,uCACE,eAACvgB,GAAA,EAAU5pD,KAAX,CACE1X,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgBrmC,IAC9C99C,UAAU,OAFZ,SAIE,eAACorF,GAAD,CACEttC,GAAIlqC,EAAEkqC,GACNt3C,SAAU64E,EACVgM,cAAe,WACb/4D,EAASguD,EAAc,cAAc,GACrChuD,EAASguD,EAAc,QAAS,OAElCD,mBAAoBA,MAGvBzsE,EAAEquE,cAAgBruE,EAAEouE,aACnB,eAAC/f,GAAA,EAAU5pD,KAAX,CACE1X,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgByB,YAC9C5lF,UAAU,OAFZ,SAIE,gBAACL,EAAA,EAAD,WACGiU,EAAEouE,aACD,gBAACpiF,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,YAAtB,SACG,YAEH,eAACU,EAAA,EAAD,yBACEV,UAAU,aACN4T,EAAEowE,eAFR,IAGEpjF,QAAS,kBAAMspF,GAAsB,MAHvC,iBAOA,eAACxpF,EAAA,EAAD,yBACEV,UAAU,aACN4T,EAAEqwE,iBAFR,IAGErjF,QAAS,kBAAMspF,GAAsB,MAHvC,sBAQA,KAEJ,gBAACtqF,EAAA,EAAD,WAEGgU,EAAEquE,aACD,eAACviF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,SACG,sBAED,KACJ,eAAC,GAAS87C,eAAV,CACE1nB,mBAAmB,OACnB1mB,WAAYkG,EAAEkqC,GAAGzgB,UAAU,GAAGz+B,GAC9ByD,MAAOuR,EAAEktE,WACTr7E,SA3iBD,SAACsO,GAGxB,GAFAue,EAASguD,EAAc,cAAf,OAA8BvsE,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAG1R,OAErCuR,EAAEouE,aAAc,CAClB,IAAMj7D,EAAoB,WAAZ,OAADhT,QAAC,IAADA,OAAA,EAAAA,EAAG1R,OAAoB,SAAvB,OAAkC0R,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAGvV,MAExB,MAAtBoV,EAAEotE,gBACJ1uD,EAASguD,EAAc,eAAgB,eAAiBv5D,GACzB,MAAtBnT,EAAEotE,iBACX1uD,EAASguD,EAAc,eAAgB,aAAev5D,QAEnDuL,EAASguD,EAAc,eAAgB,YAiiBtB95E,SAAU64E,GAAkBzrE,EAAEuyE,iBAC9BpqC,UAAU,YAKhB,QAGN,eAACkmB,GAAA,EAAU5pD,KAAX,CACE1X,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgBrmC,IAC9C99C,UAAU,OAFZ,SAIE,eAAC+2E,GAAD,CACE10E,MAAOuR,EAAEyG,KACT5U,SAAU,SAACq4C,GACLA,EA9fD,SAACwtC,GAAY,IAAD,IAC7BA,EAAOC,YAAcD,EAAOE,mBAC9Bz7E,IAAMg7C,QAAQ,6CACds8B,GAAiB,GAEjB/0D,EACEguD,EAAc,oBACdgL,EAAOG,wBAGLH,EAAOC,aACTj5D,EAASguD,EAAc,YAAagL,EAAOI,gBAC3Cp5D,EAASguD,EAAc,gBAAiBgL,EAAOK,qBAE7CL,EAAOE,oBACTl5D,EACEguD,EAAc,4BACdgL,EAAOM,gCAETt5D,EACEguD,EAAc,wBACdgL,EAAOO,4BAGLP,EAAOQ,kBACTx5D,EAASguD,EAAc,iBAAkBgL,EAAOS,sBAEhD5B,IAA2B,GAEiB,SAA1CmB,EAAOM,gCACmC,SAA1CN,EAAOM,gCACmC,OAA1CN,EAAOM,gCAEPt5D,EAASguD,EAAc,kBAAkB,OAK3CqG,IACFr0D,EAASguD,EAAc,4BAA6B,MACpDhuD,EAASguD,EAAc,kBAAkB,GACzChuD,EAASguD,EAAc,gBAAiB,MACxChuD,EAASguD,EAAc,YAAa,MACpChuD,EAASguD,EAAc,oBAAqB,IAC5CvwE,IAAMg7C,QAAQ,sCAEhBs8B,GAAiB,IAEgB,OAA/BzzE,EAAEytE,0BACF/8E,IAAE6E,QAAQyK,EAAEytE,4BAEZ/uD,EAASguD,EAAc,kBAAkB,IAE7ChuD,EAASguD,EAAc,cAAe,IACtChuD,EAASguD,EAAc,QAASgL,EAAO1sF,IACvC0zB,EAASguD,EAAc,cAAf,OAA8BgL,QAA9B,IAA8BA,GAA9B,UAA8BA,EAAQjuD,iBAAtC,iBAA8B,EAAoB,UAAlD,aAA8B,EAAwBz+B,IAC9D0zB,EAASguD,EAAc,MAAf,eAA2BgL,IACnCh5D,EAASguD,EAAc,cAAc,GAqcX0L,CAAeluC,IAErBxrB,EAASguD,EAAc,cAAc,GACrChuD,EAASguD,EAAc,QAAS,MAChChuD,EAASguD,EAAc,MAAO,QAGlC95E,SAAU64E,EACV1hB,kBAAmB/pD,EAAElG,WACrB8sD,gBAAiB5mD,EAAEyG,OAASzG,EAAE4uE,cAMnC5uE,EAAE4uE,UACD,wCACsB,IAAnB5uE,EAAEquE,eACgB,IAAnBruE,EAAEouE,eACF,UAACpuE,EAAEkqC,UAAH,aAAC,EAAM4wB,cAEH,KADA6b,GAGJ,gBAACtoB,GAAA,EAAU5pD,KAAX,CACErY,UAAU,OACVW,QAASiT,EAAE2yE,mBAAqB,UAAY,SAF9C,UAIE,eAAC5mF,EAAA,EAAD,UAAMiU,EAAE4yE,cACY,OAAnB5yE,EAAE8yE,aACD,eAAC/mF,EAAA,EAAD,UAAMiU,EAAE8yE,eAER,kCAGJ,eAACzkB,GAAA,EAAU5pD,KAAX,CACErY,UAAU,OACVW,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgB0B,MAFhD,SAIE,gBAAClmF,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,sCAGA,eAAC,GAA2BI,OAA5B,CACEiC,MAAOuR,EAAEytE,yBACT57E,SA/jBe,SAACpD,GAAW,IAAD,EAChD,GAAIuR,EAAEytE,2BAA6Bh/E,EAAnC,CAEA,IAAM4pF,EAAUr4E,EAAEytE,yBAElB/uD,EAASguD,EAAc,4BAA6Bj+E,GAEC,OAAjD,UAAAuR,EAAE+tE,UAAU9wE,SAASxO,UAArB,eAA6B6pF,kBAC/B/B,IAA2B,GACb,SAAV9nF,GAA8B,SAAVA,GAA8B,OAAVA,EAC1CiwB,EAASguD,EAAc,kBAAkB,GACtB,SAAZ2L,GAAkC,SAAZA,GAAkC,OAAZA,GACnD35D,EAASguD,EAAc,kBAAkB,KAE3C6J,IAA2B,IACH,IAApBv2E,EAAEqrE,eACJ3sD,EAASguD,EAAc,kBAAkB,MAgjBvB95E,SAAU64E,EACVzmE,aAAa,OAGjB,eAAChZ,EAAA,EAAD,UACmB,MAAhBgU,EAAEguE,WACD,uCACE,gBAACjiF,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,oCAIF,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,kCAKJ,gBAACL,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACc,EAAA,EAAD,yBACEV,UAAU,aACN4T,EAAEgwE,0BAFR,IAGEhjF,QAAS,kBACPupF,IAA2B,IAJ/B,mBASA,eAACzpF,EAAA,EAAD,yBACEV,UAAU,aACN4T,EAAEiwE,yBAFR,IAGEjjF,QAAS,kBACPupF,IAA2B,IAJ/B,SAOG,cAGL,gBAACvqF,EAAA,EAAD,WACE,eAACc,EAAA,EAAD,yBACEV,UAAU,aACN4T,EAAEkwE,uBAFR,IAGEljF,QAAS,kBACP0xB,EACEguD,EAAc,kBACd,IANN,mBAYA,eAAC5/E,EAAA,EAAD,yBACEV,UAAU,aACN4T,EAAEmwE,sBAFR,IAGEnjF,QAAS,kBACP0xB,EACEguD,EAAc,kBACd,IANN,4BAeJ,YAKT1sE,EAAE4uE,WAAa5uE,EAAEkqC,GAAG4wB,aAAe,KAClC,eAACzM,GAAA,EAAU5pD,KAAX,CACErY,UAAU,OACVW,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgB2B,MAFhD,SAIE,gBAACnmF,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,yBACA,eAAC,GAAeI,OAAhB,CACEiC,MAAOuR,EAAEqtE,aACTx7E,SAnkBC,SAACpD,GAC1BiwB,EAASguD,EAAc,gBAAiBj+E,IAmkBhBmE,SAAU64E,EACVzmE,aAAa,OAGjB,eAAChZ,EAAA,EAAD,UACyB,MAAtBgU,EAAEkuE,iBACD,uCACE,eAACniF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,4BAKJ,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAe4oD,WAAhB,CACEnmD,MAAOuR,EAAEutE,eACT17E,SAnlBX,SAACsO,GACtBue,EAASguD,EAAc,YAAatpD,KAAM0jB,MAAM3mC,EAAE1R,SAmlBlBoyB,KAAM7gB,EAAE4sE,eACR5nE,aAAa,WAKnB,YAMZ,eAACqpD,GAAA,EAAU5pD,KAAX,CACErY,UAAU,OACVW,QAASwqF,GACPv3E,EAAEuwE,gBAAgB/C,kBAHtB,SAME,eAACzhF,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,+BAGA,eAAC,KAAD,CACE1B,KAAK,UACL4J,KAAK,OACL+K,YAAaW,EAAE0yE,oBACfjmF,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SA5wBO,SAACC,GAC9B4sB,EAASguD,EAAc,oBAAqB56E,EAAEC,OAAOtD,QA4wB/BA,MAAOuR,EAAEwtE,iBACTthF,SAAUu/E,EACVzF,UAAW,gBAMnB,QAEJhmE,EAAEwuE,eACJ,uCAEE,gBAACngB,GAAA,EAAU5pD,KAAX,CACE1X,QAASwqF,GAAmBv3E,EAAEuwE,gBAAgB6B,cADhD,UAGE,eAACrmF,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,eAACH,GAAA,EAAK4G,MAAN,2BAGJ,gBAAC3G,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,eAAC,GAASO,OAAV,CACEg0B,mBAAmB,OACnB/xB,MAAOuR,EAAElG,WACTjI,SAAU,SAACsO,GAAD,OAAOue,EAASguD,EAAc,cAAevsE,QAG3D,eAACnU,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEE,QAAS,WACP0xB,EAASguD,EAAc,YAAapC,GAAUpgC,GAAGz7C,OACjDiwB,EAASguD,EAAc,cAAc,IAHzC,+BAWY,OAAjB1sE,EAAElG,YACc,KAAjBkG,EAAElG,aACF,UAACkG,EAAE2uE,cAAchhD,gBAAjB,aAAC,EAA0BgkD,YAEvB,KADAgF,MAGJ,KACFlL,EA0DE,KAzDF,eAACpd,GAAA,EAAU5pD,KAAX,CACErY,UAAU,iBACVW,QAAS+kF,GAAe,UAAY,UAFtC,SAIE,gBAAC/lF,EAAA,EAAD,CAAKK,UAAU,YAAf,UACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAACU,EAAA,EAAD,CACEC,QAAS+kF,GAAe,OAAS,UACjCl/E,SAAUk/E,GACV9vB,OAAK,EACL51D,UAAU,YACVkI,KAAK,SACLtH,QAAS,kBAAMopF,MANjB,oBAWF,eAACpqF,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAACU,EAAA,EAAD,CACEC,QAAS6nF,GAAS,OAAS,YAC3BhiF,SAAUgiF,IAAUI,GACpBhzB,OAAK,EACL51D,UAAU,YACVkI,KAAK,SACLtH,QAAS,WAl6BrBgT,EAAE6rE,kBAEe,aAAhBa,IAA+B1sE,EAAE8rE,gBACjB,UAAhBY,IAA4B1sE,EAAE+rE,kBAE/BhB,IAEArsD,EAASguD,EAAc,aAAa,GAGtClrB,KAk5BY,sBAWQ,QAATspB,EACC,eAAC9+E,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAACU,EAAA,EAAD,CACEC,QAAS6nF,GAAS,OAAS,SAC3BhiF,SAAUgiF,IAAUI,IAAYU,GAChC1zB,OAAK,EACL51D,UAAU,YACVkI,KAAK,SACLtH,QAAS,WACHuoF,GACFnB,IAAmB,IAEnBE,IAAmB,GACnBE,GACE,sEAEFE,GAAoB,YAd1B,sBAsBF,4CAWlB,SAASkC,GAAT,GAwBE,IAhBE,IAPF/kF,EAOC,EAPDA,SACAolF,EAMC,EANDA,YACAxoF,EAKC,EALDA,MACAijF,EAIC,EAJDA,qBACArG,EAGC,EAHDA,cACAmD,EAEC,EAFDA,eACA/C,EACC,EADDA,eAEM8M,EAAU,SAACp4E,GAGf,IAFA,IAAIq4E,EAAW,GACXxxC,GAAQ,EACHr6B,EAAI,EAAGA,EAAIle,EAAM4a,OAAQsD,IAC5Ble,EAAMke,KAAOxM,EAAG6mC,GAAQ,EACvBwxC,EAAS1vE,KAAKra,EAAMke,IAEtBq6B,GAAOwxC,EAAS1vE,KAAK3I,GAC1BtO,EAAS2mF,IAGPC,GAAY,EACZC,GAAY,EACZC,GAAU,EAELhsE,EAAI,EAAGA,EAAIle,EAAM4a,OAAQsD,IACf,IAAble,EAAMke,GAAU+rE,GAAY,EACV,IAAbjqF,EAAMke,GAAU8rE,GAAY,EACf,IAAbhqF,EAAMke,KAAUgsE,GAAU,GAGrC,OACE,eAACtqB,GAAA,EAAU5pD,KAAX,CAAgB1X,QAASwqF,GAAmB7F,GAA5C,UACqB,IAAlBrG,GAA0BmD,EACzB,gBAACziF,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,OAAO6F,UAAQ,EAACxG,UAAU,YAA1C,uBAIF,gBAACJ,EAAA,EAAD,CAAKC,GAAI,OAAQG,UAAU,YAA3B,UACE,eAACU,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMurF,EAAQ,IACvBxrF,QAAS6rF,GAAkBF,GAC3B9lF,SAAU64E,EAJZ,oCAQA,eAAC3+E,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMurF,EAAQ,IACvBxrF,QAAS6rF,GAAkBH,GAC3B7lF,SAAU64E,EAJZ,gCAQA,eAAC3+E,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMurF,EAAQ,IACvBxrF,QAAS6rF,GAAkBD,GAC3B/lF,SAAU64E,EAJZ,wBASF,eAACz/E,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACa,EAAA,EAAD,CACEV,UAAU,YACVW,QAAQ,UACRC,QAAS,SAAC8E,GACRA,EAAE6c,iBACFsoE,KALJ,wBAaJ,eAAClrF,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACc,EAAA,EAAD,CAAQC,QAAQ,OAAO6F,UAAQ,EAACxG,UAAU,YAA1C,qBAIE,2EASd,SAASwsF,GAAkBlsC,GACzB,OAAIA,EAAgB,UACR,kBAGd,SAAS0qC,KACP,OACE,gBAAC/oB,GAAA,EAAD,CAAWwqB,MAAM,YAAYvsF,MAAO,CAAE+9E,UAAW,UAAjD,UACE,eAAChc,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,OAAOX,UAAU,wBAAzC,oCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,OAA5C,wCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,OAA5C,uCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,OAA5C,oCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,SAASX,UAAU,OAA3C,uGAIA,eAACiiE,GAAA,EAAU5pD,KAAX,IACA,eAAC4pD,GAAA,EAAU5pD,KAAX,CACE1X,QAAQ,OACRT,MAAO,CAAE+9E,UAAW,UACpBj+E,UAAU,wBAHZ,gCAOA,gBAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,OAA5C,iEACsD,wBADtD,wFAKA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,SAASX,UAAU,OAA3C,0FAIA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,SAASX,UAAU,OAA3C,2FAIA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,SAAxB,qGAIA,eAACshE,GAAA,EAAU5pD,KAAX,IACA,eAAC4pD,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,OAAOX,UAAU,wBAAzC,wCAQN,SAASmrF,GAAmBryC,GAC1B,OAAIA,IAAWwlC,GAAyB,UAC/BxlC,IAAWylC,GAAmB,YAC9BzlC,IAAW0lC,GAAmB,UAC3B,SAsDd,SAASW,GAAT,GAAsD,IAAD,YAA1BP,EAA0B,EAA1BA,KAAMF,EAAoB,EAApBA,KAAMI,EAAc,EAAdA,WACjClhD,EAAS,GACbA,EAAOh/B,GAAP,OAAYggF,QAAZ,IAAYA,OAAZ,EAAYA,EAAMhgF,GAClBg/B,EAAOyB,OAAP,OAAgBu/C,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAMv/C,OACtBzB,EAAO6iD,eAAiB7iD,EAAOyB,OAC/BzB,EAAOmsB,SAAWzlD,IAAE6E,QAAF,OAAUy1E,QAAV,IAAUA,OAAV,EAAUA,EAAM70B,UAC9BjzB,KAAU4jB,MAAM3qB,OADF,OAEd6uD,QAFc,IAEdA,OAFc,EAEdA,EAAM70B,SACVnsB,EAAOrK,MACG,MAARqrD,GAA8B,MAAdA,EAAKrrD,MAAgBC,WAAWorD,EAAKrrD,OAAS,EAChEqK,EAAO8iD,YAAP,OAAqB9B,QAArB,IAAqBA,OAArB,EAAqBA,EAAM8B,YAC3B9iD,EAAO+iD,sBAAP,OAA+B/B,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAM8B,YACrC9iD,EAAOgjD,SACS,OAAV,OAAJhC,QAAI,IAAJA,OAAA,EAAAA,EAAMvkE,OAAyB,QAATqkE,EAAiBR,GAAUpgC,GAAGz7C,MAApD,OAA4Du8E,QAA5D,IAA4DA,OAA5D,EAA4DA,EAAMgC,SAEpEhjD,EAAOwjD,iBAAP,OAA0BxC,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAMwC,iBAEhCxjD,EAAOmjD,kBAAP,OAA2BnC,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAMmC,kBAEjCnjD,EAAOlwB,YACD,OAAJkxE,QAAI,IAAJA,GAAA,UAAAA,EAAMr9C,gBAAN,eAAgB3iC,MAAhB,OACAggF,QADA,IACAA,GADA,UACAA,EAAMvhD,iBADN,aACA,EAAkB,GAAGz+B,MADrB,OAEAggF,QAFA,IAEAA,GAFA,UAEAA,EAAM9gC,UAFN,iBAEA,EAAUzgB,iBAFV,aAEA,EAAsB,GAAGz+B,IAE3Bg/B,EAAOkjD,WAAP,OAAoBlC,QAApB,IAAoBA,OAApB,EAAoBA,EAAMkC,WAE1BljD,EAAOojD,gBAAP,OAAyBpC,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAMoC,gBAE/BpjD,EAAOyjD,yBAAP,OAAkCzC,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAMyC,yBACxCzjD,EAAO0jD,qBAAP,OAA8B1C,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAM0C,qBACpC1jD,EAAOqhD,cAAP,OAAuBL,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAMK,cAE7BrhD,EAAOqjD,aAAP,OAAsBrC,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAMqC,aAC5BrjD,EAAOsjD,SAA6B,KAAlBtC,EAAKsC,SAAkBtC,EAAKsC,SAAW,KASzDtjD,EAAO2jD,oBAAP,OAA6B3C,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAM2C,oBACnC3jD,EAAO4jD,gBAAP,OAAyB5C,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAM4C,gBAC/B5jD,EAAO6jD,UAAP,OAAmB7C,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAM6C,UAEzB7jD,EAAOvjB,KAAoB,QAAT,OAAJukE,QAAI,IAAJA,OAAA,EAAAA,EAAM9gC,IAAN,OAAoB8gC,QAApB,IAAoBA,GAApB,UAAoBA,EAAMvkE,YAA1B,aAAoB,EAAYk3C,WAAa,GAC3D3zB,EAAOijD,aAAejjD,EAAOvjB,KAE7BujB,EAAOkgB,GAAP,OAAY8gC,QAAZ,IAAYA,OAAZ,EAAYA,EAAM9gC,GAClBlgB,EAAO8pB,OAAS/3C,KAAKC,UAAL,OAAegvE,QAAf,IAAeA,OAAf,EAAeA,EAAMl3B,QAErC,IAAMglC,EAAiBpK,GAAkB1kD,EAAOgjD,UAUhD,OARAhjD,EAAO4kD,UAAYkK,IAA4B,WAAThO,IAAA,UAAqBE,EAAK9gC,UAA1B,aAAqB,EAASl/C,KAEpEg/B,EAAO8jD,mBAAP,OAA4B9C,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAM+N,WAElC/uD,EAAOhvB,eAAiBgwE,EAAKhwE,eAC7BgvB,EAAO/uB,eAAiB+vE,EAAK/vE,eAC7B+uB,EAAO0hD,cAAgBV,EAAKU,cAC5B1hD,EAAOkhD,WAAaA,EACblhD,EAqBT,SAASwtD,GAAT,GAAyE,IAApDttC,EAAmD,EAAnDA,GAAIutC,EAA+C,EAA/CA,cAAe7kF,EAAgC,EAAhCA,SAAU65E,EAAsB,EAAtBA,mBAChD,IAAKviC,EAAI,OAAO,KADsD,IAG9DzgB,EAAcygB,EAAdzgB,UAER,OACE,gBAAC39B,GAAA,EAAKY,MAAN,CAAYN,UAAU,OAAtB,UACE,eAAC,GAASs8C,aAAV,CACE7tC,QAAS4xE,EACT5jC,KAAI,OAAEpf,QAAF,IAAEA,OAAF,EAAEA,EAAY,GAAGz+B,KAEvB,gBAACe,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACH,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,sBAAII,UAAU,OAAd,gBAAyB89C,EAAGl/C,UAGhC,eAACc,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,sBAAck+C,EAAGxjC,kBAGrB,gBAAC1a,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,yBAAQM,MAAO,CAAEqqC,WAAY,YAA7B,SACGlN,EAAUl4B,KAAI,SAACoa,GAAD,OAAQ,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAGjhB,OAAQ,MAAIunB,KAAK,aAIhD,eAAClmB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,6BAAIk+C,EAAG6B,kBAIb,eAAC//C,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACa,EAAA,EAAD,CACEsG,KAAK,KACLrG,QAAQ,kBACRC,QAASyqF,EACT7kF,SAAUA,EACVM,MAAM,cALR,UAOG,UACD,eAAC,KAAD,eAoIZ,SAASw7E,GAAkB1B,GACzB,OACEA,IAAa1C,GAAUE,OAAO/7E,OAC9Bu+E,IAAa1C,GAAUC,OAAO97E,OAC9Bu+E,IAAa1C,GAAUpgC,GAAGz7C,MAyI9B,SAASqgF,GAAsBhC,EAAaE,GAK1C,QAHEt8E,IAAE6E,QAAQu3E,IACa,KAAvBA,EAAY1zD,QACX0zD,EAAY7wE,SAAS,WAAa+wE,IAAa1C,GAAUE,OAAO/7E,OA4SrE,SAAS4oF,GAAT,GAAoE,IAA9CC,EAA6C,EAA7CA,aAAczkF,EAA+B,EAA/BA,KAAM8sB,EAAyB,EAAzBA,MAAO2lD,EAAkB,EAAlBA,KAAM9jB,EAAY,EAAZA,SAAY,EAC/BrxD,mBAASwvB,GADsB,mBAC1Dq5D,EAD0D,KAC/CC,EAD+C,OAE7B9oF,mBAAS,GAFoB,mBAE1DylF,EAF0D,KAE9CsD,EAF8C,KAIjE,OACE,gBAAC/lF,GAAA,EAAD,CACE81E,gBAAiBznB,EACjB0nB,cAAc,EACdr2E,KAAMA,EACNO,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SANX,UAQE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAACD,OAAQmuD,EAAlC,SACE,eAACruD,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,2BAIF,eAACmI,GAAA,EAAMK,KAAP,UACE,gBAACzH,EAAA,EAAD,CAAKK,UAAU,YAAf,UACE,gBAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAG5Y,GAAI,EAAhB,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,2BACA,eAACu3E,GAAD,CACE34E,GAAG,YACHyD,MAAOuqF,EACP/tF,IAAK00B,EACL9tB,SAAU,SAACC,GACTmnF,EAAY,OAACnnF,QAAD,IAACA,OAAD,EAACA,EAAGrD,OAChByqF,EAAcv5D,GAAK,OAAG7tB,QAAH,IAAGA,OAAH,EAAGA,EAAGrD,cAI/B,gBAACzC,EAAA,EAAD,CAAK6Y,GAAI,EAAG5Y,GAAI,EAAhB,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,sBACA,eAACu3E,GAAD,CACE34E,GAAG,aACHyD,MAAOmnF,EACP3qF,IAAK00B,EACL9tB,SAAU,SAACC,GACTmnF,EAAat5D,GAAK,OAAG7tB,QAAH,IAAGA,OAAH,EAAGA,EAAGrD,QACxByqF,EAAa,OAACpnF,QAAD,IAACA,OAAD,EAACA,EAAGrD,aAIvB,gBAACzC,EAAA,EAAD,CAAK6Y,GAAI,EAAG5Y,GAAI,EAAhB,UACE,eAACH,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,sBACA,eAACu3E,GAAD,CAAY34E,GAAG,aAAayD,MAAOkxB,EAAO/sB,UAAU,YAI1D,gBAACO,GAAA,EAAM+mD,OAAP,CAAc9tD,UAAU,0BAAxB,UACE,yBACA,iCACE,eAACU,EAAA,EAAD,CACEV,UAAU,OACVY,QAAS,WACPs4E,EAAK0T,EAAWpD,IAElB7oF,QAAQ,UALV,SAOGuqF,IAEH,eAACxqF,EAAA,EAAD,CAAQV,UAAU,OAAOY,QAASw0D,EAAUz0D,QAAQ,YAApD,6BClwEK,SAASosF,GAAT,GAQX,IAPFjjC,EAOC,EAPDA,OACA60B,EAMC,EANDA,cACAvpB,EAKC,EALDA,SACAwb,EAIC,EAJDA,SAIC,IAHDiO,kBAGC,aAFDE,iBAEC,aADDC,eACC,MADS,aACT,IACuBj7E,qBADvB,mBACM66E,EADN,KACYtlD,EADZ,KAEKtxB,EAAW0O,cAejB,OAbAgE,qBAAU,WACM,MAAVovC,GACF9hD,EAAS0hF,GAAYt/B,QAAQ,CAAExrD,GAAIkrD,KAChCz+C,KAAK4jB,KACL5jB,MAAK,SAACsU,GACL2Z,EAAQ3Z,MAETlU,OAAM,WACL2pD,SAGL,CAACtL,EAAQ9hD,EAAUotD,IAGpB,qCACW,MAARwpB,EACC,eAACH,GAAD,CACEC,KAAK,SACLE,KAAMA,EACNxpB,SAAUA,EACVwb,SAAUA,EACV+N,cAAeA,EACfE,WAAYA,EACZE,UAAWA,EACXC,QAASA,IAGX,kCACE,gBAAC1mE,GAAA,EAAD,wBAEE,eAACugE,GAAA,EAAD,CAASC,UAAU,gBC7ChB,SAASkU,GAAT,GASX,IARFpuF,EAQC,EARDA,GACA6H,EAOC,EAPDA,KACAQ,EAMC,EANDA,OACAmuD,EAKC,EALDA,SACA63B,EAIC,EAJDA,OACArc,EAGC,EAHDA,SAGC,IAFDiO,kBAEC,aADDE,iBACC,WAC+Bh7E,oBAAS,GADxC,mBACMmpF,EADN,KACgBC,EADhB,KAKD,OACE,gBAACpmF,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQ,WACFimF,GACFD,IACAE,GAAY,IACPlmF,KAETD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SAVX,UAYE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,gBAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,UACG,gBAAkBA,EAClBmgF,EAAY,4BAA8B,UAG/C,eAACh4E,GAAA,EAAMK,KAAP,CAAYpH,UAAU,YAAtB,SACE,eAAC+sF,GAAD,CACEjjC,OAAQlrD,EACRmgF,UAAWA,EACXF,WAAYA,EACZF,cAAe,WACbwO,GAAY,GACZF,KAEF73B,SAAUA,EACVwb,SAAU,WACRuc,GAAY,GACZvc,KAEFoO,QAAS,kBAAMmO,GAAY,WC3CtB,SAASC,GAAT,GAOX,IANFC,EAMC,EANDA,YACAC,EAKC,EALDA,YACAC,EAIC,EAJDA,YACA5O,EAGC,EAHDA,cACAvpB,EAEC,EAFDA,SAEC,IADD0pB,kBACC,SACK8B,EACW,MAAf2M,EACIrP,GAAUpgC,GAAGz7C,MACby8E,EACAZ,GAAU38C,SAASl/B,MACnB,KACA+Z,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACjDk6E,EACJlpF,IAAE6E,QAAQkkF,IAAgBvO,EAAa1iE,EAAeixE,EAEpDI,GAAU,EACRC,EAAW39D,MAEE,MAAfu9D,GAAuC,KAAhBA,IAAqC,IAAfxO,IAC/C2O,EAAUC,EAAS71D,OAAOy1D,EAAa,QAEzC,IAAMK,EAAeF,EAAU19D,MAAWA,IAAOu9D,GAG3C1O,EAAO,CACXhgF,GAAI,KACJmrD,SAJajzB,KAAU4jB,MAAMizC,GAK7BtuD,OAAQmuD,EACR5M,SAAUA,EACVvmE,KAAMkzE,EACNtO,eAAe,EACfv3B,OAAQ,GACR43B,cAAe,GACfzwE,eAAgB,GAChBD,eAAgB,IAGlB,OACE,eAAC6vE,GAAD,CACEC,KAAK,MACLE,KAAMA,EACNxpB,SAAUA,EACVupB,cAAeA,EACfG,WAAYA,IClDH,SAAS8O,GAAT,GASX,IARFnnF,EAQC,EARDA,KACAQ,EAOC,EAPDA,OACAmuD,EAMC,EANDA,SACA63B,EAKC,EALDA,OACA5tD,EAIC,EAJDA,OACA5K,EAGC,EAHDA,KACApa,EAEC,EAFDA,KAEC,IADDykE,kBACC,SACD,OACE,gBAAC/3E,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQA,EACRD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SALX,UAOE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,+BAIF,eAACmI,GAAA,EAAMK,KAAP,CAAYpH,UAAU,YAAtB,SACE,eAACotF,GAAD,CACEC,YAAahuD,EACbiuD,YAAa74D,EACb84D,YAAalzE,EACbykE,WAAYA,EACZH,cAAesO,EACf73B,SAAUA,SC/Bb,IAAMy4B,GACD,WADCA,GAEN,MAFMA,GAGD,WAHCA,GAIS,eAJTA,GAKU,wBAGhB,SAASC,GAAYlP,GAC1B,OAAIt6E,IAAEoN,YAAYktE,IAASt6E,IAAEkxB,OAAOopD,GAAc,KAE9CA,EAAKgC,WAAa1C,GAAUprE,SAASzQ,MAChCwrF,GACEjP,EAAKgC,WAAa1C,GAAU38C,SAASl/B,MACvCwrF,GACEjP,EAAK+N,WACPkB,GACEjP,EAAKlQ,cAAgBkQ,EAAKK,cAC5B4O,GAEAA,GCpBX,IAAME,GAAgB,CAAEnvF,GAAI,KAAMmgF,WAAW,GAE9B,SAASiP,GAAT,GAGX,IAAD,IAFD50B,oBAEC,MAFc,aAEd,MADD+tB,kBACC,WACyBpjF,mBAASgqF,IADlC,mBACM5sF,EADN,KACaiO,EADb,KAEK0C,EAAcnL,uBAClB,SAAC/H,GAAD,IAAKmgF,EAAL,+DAA2B3vE,EAASxQ,EAAK,CAAEA,KAAImgF,aAAcgP,MAC7D,IAGIE,EAAatnF,uBAAY,WAC7BmL,MACC,CAACA,IAaJ,MAAO,CAACk7E,GAXW,CACjBpuF,GAAE,OAAEuC,QAAF,IAAEA,OAAF,EAAEA,EAAOvC,GACX6H,KAAMid,QAAO,OAACviB,QAAD,IAACA,OAAD,EAACA,EAAOvC,IACrBigF,WAAYsI,EACZpI,UAAS,OAAE59E,QAAF,IAAEA,OAAF,EAAEA,EAAO49E,UAClB93E,OAAQgnF,EACRhB,OAAQ7zB,EACRwX,SAAUxX,EACVhE,SAAU64B,GAGyBn8E,EAAa4R,QAAO,OAACviB,QAAD,IAACA,OAAD,EAACA,EAAOvC,KCVnE,SAASsvF,GAAT,GAqBE,IAdE,IAAD,IANDznC,aAMC,MANO,GAMP,EALD9kD,EAKC,EALDA,OACAuS,EAIC,EAJDA,UACApQ,EAGC,EAHDA,SACAslB,EAEC,EAFDA,YACAc,EACC,EADDA,UAEM9N,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAEjD+/B,EAAQvxC,mBAAQ,kBAAMiuB,QAAU,IAHrC,EAKsDi+D,GAAmB,CACxE7G,YAAY,EACZ/tB,aAAc,WACZlB,IACAhuC,OATH,mBAKMikE,EALN,KAKmBC,EALnB,KAKqCl2B,EALrC,KAaGxQ,EAAS,GACJnnC,EAAI,EAAGA,EAAIkmC,EAAMxpC,OAAQsD,IAChC,IAAK,IAAI7T,EAAI,EAAGA,EAAI+5C,EAAMlmC,GAAGmnC,OAAOzqC,OAAQvQ,IAAK,CAC/C,IAAM26C,EAAK,eAAQZ,EAAMlmC,IACzB8mC,EAAMO,UAAYnB,EAAMlmC,GAAGmnC,OAAOh7C,GAAGk7C,UACrCP,EAAMS,QAAUrB,EAAMlmC,GAAGmnC,OAAOh7C,GAAGo7C,QACnCT,EAAMgnC,KAAM,EACZ3mC,EAAOhrC,KAAK2qC,GAGhBK,EAASA,EAAO9U,MAAK,SAAC7qC,EAAG4b,GAAJ,OAAW5b,EAAE6/C,UAAYjkC,EAAEikC,UAAY,GAAK,KAMjE,IALA,IAAMrW,EAAY,GACd+8C,EAAc,GACdC,EAAW,GACXC,EAAa,KAERjuE,EAAI,EAAGA,EAAImnC,EAAOzqC,OAAQsD,IAAK,CACtC,GAAU,IAANA,EAAS,CACX,IAAMkuE,EAAc33D,KAAU0c,UAC5BkU,EAAOnnC,GAAGkU,KAAOizB,EAAOnnC,GAAGqnC,WAEvB8mC,EAAS3+D,IAAO0+D,GAAal3D,SAAS,EAAG,WAC/C,GAAoB,KAAhB+2D,EAGF,GAFAE,EAAa13D,KAAU0c,UAAU+6C,EAAWD,GACxBG,EAAYz+D,KAAKw+D,EAAY,YAC9B,GAAI,CACrB,IAAMG,EAAW5+D,IAAOy+D,GAAYh3D,IAAI,EAAG,WACrCo3D,EAAW,CACfhnC,UAAW9wB,KAAUwlD,cAAcqS,GACnC7mC,QAAShxB,KAAUwlD,cAAcoS,GACjCj6D,KAAMuC,KAAM0jB,MAAM8zC,GAClB5N,SAAU,MACVtmE,UAAW,GACXD,KAAM,GACNgjB,UAAW,GACXqjD,YAAa,wBAEfnvC,EAAU70B,KAAKkyE,GAGnBN,EAAc5mC,EAAOnnC,GAAGunC,QACxBymC,EAAW7mC,EAAOnnC,GAAGkU,KAEvB8c,EAAU70B,KAAKgrC,EAAOnnC,IAGxB,IAAK,IAAIkK,EAAI,EAAGA,EAAI8mB,EAAUt0B,OAAQwN,IAAK,CACzC,IAAMokE,EAAa73D,KAAMwc,UAAUjC,EAAU9mB,GAAGgK,MAC1Cq6D,EAAa,GACnBA,EAAWpyE,KAAK,CACdkrC,UAAWrW,EAAU9mB,GAAGm9B,UACxBE,QAASvW,EAAU9mB,GAAGq9B,UAExB,IAAMlqB,EAAS+5C,GAAiBkX,EAAYC,GAC5Cv9C,EAAU9mB,GAAGqtD,aAAel6C,EAAOk6C,aACnCvmC,EAAU9mB,GAAGskE,iBAAmBnxD,EAAO26C,OAGzC,IAAM12E,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACV6V,gBAAgB,GAElB,CACEjZ,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAGzC,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,SAAC2U,GACT,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,MAAO,MACT,KAAKA,GACH,MAAO,WACT,QACE,OAAOl3E,EAAE2D,YAGflY,KAAM,SAAC0R,GAAD,OACH,SAAUA,GAAI,IAAD,IACZ,MAAmC,QAA9B,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBo+E,UAElB,eAAC,OAAD,CACE5gF,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,cAAe8S,QAAf,IAAeA,OAAf,EAAeA,EAAGzR,QAFlC,gBAIGyR,QAJH,IAIGA,OAJH,EAIGA,EAAGzR,QAGI,4CAAGyR,QAAH,IAAGA,OAAH,EAAGA,EAAGzR,QAVrB,CAWEyR,IACL+D,gBAAgB,GAElB,CACEjZ,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAAC2U,GACT,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,MAAO,MACT,KAAKA,GACH,OAAOl3E,EAAEq4E,qBAAuBr4E,EAAEoqE,kBACpC,QACE,OAAOpqE,EAAE0D,OAGfpY,OAAQS,KACRP,OAAQ,SAERC,KAAM,YAAyC,IAArBw8E,EAAoB,EAArCr8E,IAAOC,SAAkBH,EAAY,EAAZA,MAChC,MACqB,QAAf,OAAJu8E,QAAI,IAAJA,OAAA,EAAAA,EAAMgC,WACa,YAAf,OAAJhC,QAAI,IAAJA,OAAA,EAAAA,EAAMgC,WACa,aAAf,OAAJhC,QAAI,IAAJA,OAAA,EAAAA,EAAMgC,UAEC,eAAC,GAAG/9E,KAAJ,CAASjE,GAAE,OAAEggF,QAAF,IAAEA,OAAF,EAAEA,EAAMvkE,OACd,qCAAGhY,KAEnB4jB,UAAW,SAEb,CACErnB,GAAI,WACJmD,OAAQ,WACRC,SAAU,SAAC2U,GAAO,IAAD,EACf,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,OAAOl3E,EAAE4qB,SAASjjC,KACpB,QAC6B,IAAD,EAA1B,UAAIqY,QAAJ,IAAIA,GAAJ,UAAIA,EAAG0mB,iBAAP,aAAI,EAAcpgB,OAChB,OAA2B,IAAvBtG,EAAE0mB,UAAUpgB,OAAc,UAAOtG,EAAE0mB,UAAU,UAAnB,aAAO,EAAgB/+B,KACzC,wBAKpB8D,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,sBAAKnC,MAAO,CAAEC,SAAU,SAAxB,SAAoCkC,KACzDJ,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,cACJmD,OAAQ,eACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,cAEVI,KAAM,YAAqB,IAAD,IAAjBG,EAAiB,EAAjBA,IAAKF,EAAY,EAAZA,MACN4sF,GACC,OAAL5sF,QAAK,IAALA,OAAA,EAAAA,EAAO2qB,OAAO/P,QAAS,EACnB5a,EACA,0DACAA,EACN,OACE,sBAAKnC,MAAO,CAAE42E,SAAU,QAASoY,SAAU,cAA3C,SAC+B,SAAzB,OAAH3sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAeo+E,UACd,gCAAOqO,IAEP,eAAC,OAAD,CACEjvF,UAAU,uBACVe,GAAI,CACFC,SAAS,SAAD,cAAWuB,QAAX,IAAWA,GAAX,UAAWA,EAAKC,gBAAhB,aAAW,EAAe5D,GAA1B,0BAEVgC,QAAS,SAAC8E,GAAO,IAAD,IACdA,EAAE6c,iBACEje,IAAEC,WAAWT,GAAWA,EAAQ,OAACvB,QAAD,IAACA,GAAD,UAACA,EAAKC,gBAAN,aAAC,EAAe5D,IAC/Cs5D,EAAa,OAAC31D,QAAD,IAACA,GAAD,UAACA,EAAKC,gBAAN,aAAC,EAAe5D,KARtC,SAWGqwF,QAOb,CACErwF,GAAI,YACJmD,OAAQ,QACRC,SAAU,YACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,sBAAKrC,UAAU,cAAf,SACG82B,KAAUwmD,mBACTxmD,KAAUkhD,yBAAyB3kC,EAAOhxC,QAKlD,CACEzD,GAAI,UACJmD,OAAQ,MACRC,SAAU,UACV6V,gBAAgB,EAEhBzV,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAiB,KAAVA,EACL,sBAAKrC,UAAU,cAAf,SAA8B,YAE9B,sBAAKA,UAAU,cAAf,SACG82B,KAAUwmD,mBACTxmD,KAAUkhD,yBAAyB3kC,EAAOhxC,QAMpD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,SAAC2U,GAAO,IAAD,EACf,OAAIyF,EAAa4Q,UAAb,OAAwBrW,QAAxB,IAAwBA,GAAxB,UAAwBA,EAAG0oB,cAA3B,aAAwB,EAAWrS,SAAUrW,EAAEw4E,gBAE/C,eAACzuF,EAAA,EAAD,CACEk1D,OAAK,EACL5uD,KAAK,KACLrG,QAAQ,SACRC,QAAS,kBAAMs3D,EAAcvhD,EAAE/X,IAAI,IAJrC,kBAUK,sBAAKoB,UAAU,cAAf,SAA8B2W,EAAEo4E,oBAG3Cj4E,eAAe,EACfe,gBAAgB,EAEhBi2C,OAAQ,SAACl4B,GAEP,IAAMw5D,EAAQzrF,IAAM7B,SAClB,kBACE8zB,EAAKtK,KAAKO,QAAO,SAACkoC,EAAKxxD,GACrB,MAA8B,QAA1BA,EAAIC,SAASo+E,SAA2B7sB,EAErCA,EAAMxxD,EAAIC,SAASs1E,eACzB,KACL,CAACliD,EAAKtK,OAER,OACE,sBAAKtrB,UAAU,cAAf,SACGi4E,GAAmBmX,GAAO7W,cAMrC,CAACn8D,EAActY,EAAUo0D,EAAe7kB,IAE1C,OACE,uCACE,eAAC9xC,GAAA,EAAD,CACEoB,UAAQ,EACR0pB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLxI,MAAM,SACNqD,QAASA,EACTunB,YAAaA,EACbznB,OAAQA,EACRiB,KAAM2uC,EACNrnB,UAAWA,EACXT,YAAa,SAAClnB,GAAS,IAAD,EACpB,OAAQurF,GAAW,OAACvrF,QAAD,IAACA,OAAD,EAACA,EAAKC,WACvB,KAAKqrF,GACH,MAAO,CACL7tF,UAAW,iBAEf,KAAK6tF,GACH,MAAO,CACL7tF,UAAW,iBAEf,KAAK6tF,GACH,MAAO,CACL7tF,UAAW,mBAEf,QACE,MAA+B,SAAxB,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASo+E,UACT,CACL5gF,UAAW,uBAER,OAAIuC,QAAJ,IAAIA,OAAJ,EAAIA,EAAKC,SAASksE,cAChB,CACL1uE,UAAW,eAER,OAAIuC,QAAJ,IAAIA,GAAJ,UAAIA,EAAKC,gBAAT,aAAI,EAAemoB,WAAkB,GAEnC,CACL3qB,UAAW,kBAIrBkU,UAAWA,EACXyV,iBAAe,IAEjB,eAACwkE,EAAD,eAAiBC,OAKRzqF,WAAMsxB,KAAKi5D,IC3VX,SAASmB,KAAY,IAC1BloC,EAAiBuvB,KAAjBvvB,aACFn/C,EAAW0O,cACXjI,EAAU3M,mBAAQ,WACtB,OAAOqlD,GAAgB,CAAErO,OAAQ,UAChC,CAACqO,IAEEuD,EAAe/jD,uBACnB,SAAC/H,GACCoJ,EAAS0hF,GAAYh/B,aAAa,CAAEZ,OAAQlrD,OAE9C,CAACoJ,IAGH,OAAOlG,mBAAQ,WACb,MAAO,CAAE2M,UAAS6gF,QAAS5kC,KAC1B,CAACj8C,EAASi8C,ICIf,IAAMlc,GAAqB,CACzB66B,OAAQyJ,GAAGjwE,KACX4rC,SAAUA,GAAS5rC,MA+lBrB,SAAS0sF,GAAgBC,EAAS9nC,GAEhC,OAAOiwB,GADY3gD,KAAMwc,UAAUg8C,GACC9nC,GAAQ2wB,aAQ9C,SAASoX,GAAWD,EAAS9nC,GAE3B,OAAOiwB,GADY3gD,KAAMwc,UAAUg8C,GACC9nC,GAAQowB,aAG9C,SAAS4X,GAAeC,GACtB,OAAqC,IAA9BrrF,IAAE4N,KAAKy9E,GAAY1yE,QAAe0yE,EAAW,IAAW,GCxnBjE,IA2BeC,GA3BF,CAIX9xF,QAAS4rF,GACTtoF,UAAWyuF,GAEXvuF,OCnBa,YAWX,IAAD,IAVDa,OACE6gC,GASD,aAFG,GAEH,GATCA,IACA1oB,EAQD,EARCA,UACAma,EAOD,EAPCA,KAOD,IANC4K,cAMD,MANU,GAMV,EALCspB,EAKD,EALCA,UACAsB,EAID,EAJCA,QAID,IAHC22B,gBAGD,MAHY,GAGZ,MADDvjB,eACC,SACKr1D,EAAW0O,cACX+vC,EAAQlzC,aAAY,SAACpS,GAAD,OAAW0uF,GAAcjgE,UAAUzuB,MACvDiN,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMA,MAAMv4C,SAASE,WAC5DuC,EAAa4C,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMA,MAAM91C,cAEtDw5C,EAAWxjD,uBAAY,WAC3BqB,EAAS0hF,GAAY5+B,cACrB,IAAMglC,EAAe,CAAEzwD,SAAQuhD,YACzBiO,EAAap6D,EAAO1E,IAAO0E,QAAQ9lB,EACnCohF,GAAqB,OAAVlB,QAAU,IAAVA,OAAA,EAAAA,EAAYh6D,WAAYg6D,EAAWppE,OAAO,YAAc,IACzE,OAAIud,QAAJ,IAAIA,OAAJ,EAAIA,EAAK/lB,QACP+lB,EAAI79B,KAAI,SAAC24C,GAAD,OACN91C,EACE0hF,GAAYv/B,SAAZ,aAAuB11B,KAAMs7D,EAAUjyC,GAAIA,GAAOgyC,QAG7Cx1E,EACTtS,EACE0hF,GAAYv/B,SAAZ,aACE11B,KAAMs7D,EACNjyD,QAASxjB,GACNw1E,KAGEzwD,KACT,OAAIwvD,QAAJ,IAAIA,OAAJ,EAAIA,EAAYh6D,WACd7sB,EAAS0hF,GAAYv/B,SAAZ,aAAuB11B,KAAMs7D,GAAaD,KAC1C7lC,GACTjiD,EACE0hF,GAAYv/B,SAAZ,aACExB,UAAW3xB,KAAM0jB,MAAMiO,GACvBsB,QAASjzB,KAAM0jB,MAAMuP,IAClB6lC,QAKV,CAAC9nF,EAAUq3B,EAAQuhD,EAAUnsD,EAAMuO,EAAK1oB,EAAW2vC,EAAStB,IAO/D,OALAjuC,qBAAU,WACJ2iD,GACJlT,MACC,CAACA,EAAUkT,IAEP,CAAE5W,QAAOr4C,UAASuC,aAAYw5C,aDpCrCklC,SAAUA,GACV3Y,gBAAiBA,GACjBsZ,eAAgBhC,GAChBiC,SEzBa,YAMX,IALFxoF,EAKC,EALDA,IAKC,IAJD41D,eAIC,SAHD1U,EAGC,EAHDA,UACAsB,EAEC,EAFDA,QACA5qB,EACC,EADDA,OAEMurB,EAAQr3C,aACZ,SAACpS,GAAD,OAAWA,EAAMslD,MAAMA,MAAMmE,MAAMnjD,KACnC2qE,KAEIhkE,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMA,MAAMv4C,SAASE,WAC5DpG,EAAW0O,cAOjB,OALAgE,qBAAU,WACJ2iD,GAAW1U,GAAasB,GAC5BjiD,EAAS0hF,GAAY/+B,SAAS,CAAEljD,MAAKkhD,YAAWsB,UAAS5qB,cACxD,CAACr3B,EAAUq1D,EAAS51D,EAAKkhD,EAAWsB,EAAS5qB,IAEzC,CAAEurB,QAAOx8C,YFQhB7M,MDDa,YAQX,IAPFklD,EAOC,EAPDA,MACA3iD,EAMC,EANDA,SACAomB,EAKC,EALDA,UACAE,EAIC,EAJDA,cACA8lE,EAGC,EAHDA,kBACYrhD,EAEX,EAFDntC,WACGE,EACF,kGACKwa,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAEjD68E,EAAaruF,mBAAQ,kBAAMk1B,KAAM0jB,UAAS,IAH/C,EAOG20C,KAFiBe,EALpB,EAKC3hF,QAAWqqC,OACF4R,EANV,EAMC4kC,QAND,EASsDtB,GAAmB,CACxE50B,aAAc,WACZlB,IACAhuC,OAZH,mBASMikE,EATN,KASmBC,EATnB,KASqCl2B,EATrC,KAgBKx2D,EAAaI,mBACjB,8BAAC,eAAW0sC,IAAuBK,KACnC,CAACA,IAGGhtC,EAAUC,mBACd,kBACE,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACEjY,GAAI,aACJmD,OAAQ,aACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACEjY,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVikB,UAAW,cACXpO,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAwBu8E,EAA3B,EAAUr8E,IAAOC,SAAjB,SAAmCymB,KACjCxG,UAUJ,gCAAOuU,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,MATrC,eAAC,OAAD,CACErC,UAAU,aACVe,GAAE,qBAAgB69E,EAAKv/C,OAArB,iBAAoCrI,KAAMq5D,UAC1Cr5D,KAAMwc,UAAUnxC,KAHpB,SAMG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAMvC,CACEzD,GAAI,aACJmD,OAAQ,QACR8V,gBAAgB,EAChB7V,SAAU,SAAC2U,GACT,OAAIA,EAAEw4E,gBACG37D,WAAW7c,EAAE4c,OAASg8D,GAAgB54E,EAAE8d,KAAM9d,EAAE+wC,QAC3Cl0B,WAAW7c,EAAE2c,aAG7B7N,OAAQ,CACNG,UAAW,CAAEuB,WAAY,SACzBD,OAAQ,CACNI,SAAU,IAGdhC,SAAU,SACVW,UAAW,MACX60B,SAAU,UAEVgT,OAAQ,YAAe,IAqBfshC,EArBc,EAAX9jE,KAqBUO,QApBH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAUnC,CACL77D,MAVYC,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,EAAM77D,MAWnD8kD,aATAkX,GAAgBhtF,EAAIC,SAASiyB,KAAMlyB,EAAIC,SAASklD,QAChD0nC,EAAM/W,aASNkY,QANAd,GAAWltF,EAAIC,SAASiyB,KAAMlyB,EAAIC,SAASklD,QAC3C0nC,EAAMmB,WASyB,CACjCh9D,MAAO,EACP8kD,aAAc,EACdkY,QAAS,IAGLzY,EAA6B,GAAdsX,EAAM77D,MAAa,GAAK67D,EAAMmB,QAC7CC,EACc,IAAlBpB,EAAMmB,QAAgBtY,GAAmBH,GAAcS,OAAS,GAClE,OACE,sBAAKv4E,UAAU,aAAf,SACGwwF,EACC,KACCpB,EAAM/W,aAAe+W,EAAM77D,OACzBhM,QAAQ,GACRgqC,WACAzoC,SAAS,OAKtB,CACElqB,GAAI,UACJmD,OAAQ,UACRC,SAAU,SAAC2U,GACT,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,MAAO,MACT,KAAKA,GACH,MAAO,WACT,QACE,OAAOl3E,EAAE2D,YAGflY,KAAM,SAAC0R,GAAD,OACH,SAAUA,GAAI,IAAD,IACZ,MAAmC,QAA9B,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBo+E,UAElB,eAAC,OAAD,CACE5gF,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,cAAe8S,QAAf,IAAeA,OAAf,EAAeA,EAAGzR,QAFlC,gBAIGyR,QAJH,IAIGA,OAJH,EAIGA,EAAGzR,QAGI,4CAAGyR,QAAH,IAAGA,OAAH,EAAGA,EAAGzR,QAVrB,CAWEyR,IACL+D,gBAAgB,GAElB,CACEjZ,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAAC2U,GACT,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,MAAO,MACT,KAAKA,GACH,OAAOl3E,EAAEq4E,qBAAuBr4E,EAAEoqE,kBACpC,QACE,OAAe,IAAXpqE,EAAE0D,KAAmB,MACb1D,EAAE0D,OAGpBpY,OAAQS,KACRP,OAAQ,SAERC,KAAM,YAAyC,IAArBw8E,EAAoB,EAArCr8E,IAAOC,SAAkBH,EAAY,EAAZA,MAChC,MACqB,QAAf,OAAJu8E,QAAI,IAAJA,OAAA,EAAAA,EAAMgC,WACa,YAAf,OAAJhC,QAAI,IAAJA,OAAA,EAAAA,EAAMgC,WACa,aAAf,OAAJhC,QAAI,IAAJA,OAAA,EAAAA,EAAMgC,UAGJ,eAACl/E,EAAW2nE,OAAZ,CACEzqE,GAAE,OAAEggF,QAAF,IAAEA,OAAF,EAAEA,EAAMvkE,KACVo2E,YAAa,CACXpzD,UAAS,OAAEuhD,QAAF,IAAEA,OAAF,EAAEA,EAAMvhD,UACjBsiB,SAAQ,OAAEi/B,QAAF,IAAEA,OAAF,EAAEA,EAAMj/B,UAElB+wC,UAAWxmE,IAGH,qCAAG7nB,KAEnB4jB,UAAW,SAEb,CACErnB,GAAI,WACJmD,OAAQ,WACRC,SAAU,SAAC2U,GAAO,IAAD,MACf,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,OAAO,UAAAl3E,EAAE4qB,gBAAF,eAAY3iC,MAAZ,UAAkB+X,EAAE4qB,gBAApB,aAAkB,EAAYjjC,MACvC,QAC6B,IAAD,IAA1B,UAAIqY,QAAJ,IAAIA,GAAJ,UAAIA,EAAG0mB,iBAAP,aAAI,EAAcpgB,OAChB,OAA2B,IAAvBtG,EAAE0mB,UAAUpgB,QACP,UAAAtG,EAAE0mB,UAAU,UAAZ,eAAgBz+B,MAAhB,UAAsB+X,EAAE0mB,UAAU,UAAlC,aAAsB,EAAgB/+B,MACnC,uBAKpB8D,KAAM,gBAAGC,EAAH,EAAGA,MAAH,MACa,kBAAVA,EACL,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,IAEnB,sBAAKnC,MAAO,CAAEC,SAAU,SAAxB,SAAoCkC,KAExCJ,OAAQwsC,GAASpnC,YACjBlF,OAAQ,SACR8jB,UAAWypE,IAEb,CACE9wF,GAAI,cACJmD,OAAQ,eACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,cAEVI,KAAM,YAAqB,IAAD,EAAjBC,EAAiB,EAAjBA,MAAOE,EAAU,EAAVA,IACd,OACE,eAACq0E,GAAD,CACE9sB,OAAM,OAAEvnD,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe5D,GACvByD,MAAOA,EACP61D,cAAeA,EACfp0D,SAAUA,KAIhBmiB,UAAW,QACXD,WAAY,YAAc,IAAD,EACvB,OAAO,UADgB,EAAVzjB,IACFouF,SAAS,GAAGnuF,gBAAhB,eAA0BouF,uBAAwB,KAG7D,CACEhyF,GAAI,aACJmD,OAAQ,OACRC,SAAU,SAAC2U,GACT,OAAQm3E,GAAYn3E,IAClB,KAAKk3E,GACH,OAAO70E,OAAO63E,cAAc,WAC9B,KAAKhD,GACH,MAAO,SACT,KAAKA,GACH,OAAO70E,OAAO63E,cAAc,WAC9B,KAAKhD,GACH,OAAO70E,OAAO63E,cAAc,WAC9B,QACE,OAAO73E,OAAO63E,cAAc,aAGlCprE,OAAQ,CACNG,UAAW,CAAEuB,WAAY,WAE3BllB,OAAQS,KACRP,OAAQ,SACR8jB,UAAWypE,IAEb,CACE9wF,GAAI,gBACJmD,OAAQ,YACRC,SAAU,QACVsjB,SAAU,SACVzN,gBAAgB,EAChB4N,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,IAEtBrB,UAAW,MACX60B,SAAU,UAEVgT,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,OACJmD,OAAQ,OACR8V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CACNI,SAAU,IAGdrB,UAAW,UACXjkB,SAAU,QAEZ,CACEpD,GAAI,SACJmD,OAAQ,SACR8V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CACNI,SAAU,IAGdrB,UAAW,MACXjkB,SAAU,SAAC2U,GACT,IAAM2c,EAAa3c,EAAEw4E,gBACjB37D,WAAW7c,EAAE4c,OAASg8D,GAAgB54E,EAAE8d,KAAM9d,EAAE+wC,QAChD/wC,EAAE2c,WAEN,GAAe,IAAX3c,EAAE8D,MAAc9D,EAAEg2E,WACpB,OAAOv5D,OAAOI,WAAW7c,EAAE8D,MAAQ6Y,KAGzC,CACE10B,GAAI,aACJmD,OAAQ,cACRC,SAAU,SAAC2U,GACT,IAAM0hE,EAAekX,GAAgB54E,EAAE8d,KAAM9d,EAAE+wC,QAC/C,GAAqB,IAAjB2wB,EAAoB,OAAOjlD,OAAOilD,IAExCvhE,eAAe,EACfe,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CACNI,SAAU,IAGdrB,UAAW,MAEX6nC,OAAQ,YAAe,IAYfshC,EAZc,EAAX9jE,KAYUO,QAXH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAExC57D,WACE+7D,GAAgBhtF,EAAIC,SAASiyB,KAAMlyB,EAAIC,SAASklD,SAC9C0nC,IAI2B,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,QAEJmD,OAAQ,kBACN,sBAAK/B,UAAU,cAAf,SACE,eAAC,KAAD,CAAiBA,UAAU,uBAAuBgH,KAAK,YAG3DhF,SAAU,SAAC2U,GAAO,IAAD,EAgPN64E,EAAS9nC,EA/Od6wB,GA+OKiX,EA/Oc74E,EAAE8d,KA+OPizB,EA/Oa/wC,EAAE+wC,OAiPlCiwB,GADY3gD,KAAMwc,UAAUg8C,GACC9nC,GAAQ6wB,QA/OpC,MADe,YAAXA,IAAsBA,EAAS,IAC/Bn8D,EAAa4Q,UAAb,OAAwBrW,QAAxB,IAAwBA,GAAxB,UAAwBA,EAAG0oB,cAA3B,aAAwB,EAAWrS,QACjCrW,EAAEw4E,gBAEF,eAACzuF,EAAA,EAAD,CACEk1D,OAAK,EACL5uD,KAAK,KACLrG,QAAQ,SACRC,QAAS,kBAAMs3D,EAAcvhD,EAAE/X,IAAI,IAJrC,kBASO+X,EAAE8d,OAAS07D,GAA8B,YAAhBC,EACnB,KAAX7X,EAEA,eAAC73E,EAAA,EAAD,CACEk1D,OAAK,EACL5uD,KAAK,KACLrG,QAAQ,UACRC,QAAS,kBAAM8pD,EAAa/zC,EAAE/X,KAJhC,SAMG25E,EAAS,aAKZ,eAAC73E,EAAA,EAAD,CACEk1D,OAAK,EACL5uD,KAAK,KACLrG,QAAQ,UACRC,QAAS,kBAAM8pD,EAAa/zC,EAAE/X,KAJhC,mBAUG,sBAAKoB,UAAU,cAAf,SAA8Bu4E,IAGnC5hE,EAAEw4E,gBAEF,sBAAKnvF,UAAU,2BAAf,SACGu4E,GAAU5hE,EAAEw4E,gBAAkB,IAAM,MAKvC,sBAAKnvF,UAAU,cAAf,SACGu4E,GAAU5hE,EAAEw4E,gBAAkB,IAAM,OAO/CrhC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnCK,GAAWltF,EAAIC,SAASiyB,KAAMlyB,EAAIC,SAASklD,QAAU0nC,IAG3B,GAEnC,OACE,sBAAKpvF,UAAU,cAAf,SACGi4E,GAAmBmX,GAAO7W,UAIjCzhE,eAAe,EACfe,gBAAgB,GAElB,CACEjZ,GAAI,gBACJmD,OAAQ,UACRC,SAAU,SAAC2U,GAAO,IAAD,IACf,MAAiC,MAA5B,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAG2oE,qBAAH,eAAkBtyD,QACpB,OAAOrW,QAAP,IAAOA,OAAP,EAAOA,EAAG2oE,cACuB,MAAvB,OAAD3oE,QAAC,IAADA,GAAA,UAAAA,EAAGuqE,gBAAH,eAAal0D,QACf,cAAgBgK,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgB78B,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAGuqE,WAEjD,KAGXj/E,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACXR,OAAQ,CACNG,UAAW,CAAEuB,WAAY,YAG7B,CACEplB,OAAQ,kBACRnD,GAAI,kBACJoD,SAAU,2BACVC,OAAQ+kD,GAA2B3/C,YACnClF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,GAA2BgE,YAA5B,CAAwCzH,GAAIyD,MAGhD,CACEzD,GAAI,oBACJmD,OAAQ,oBACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,mBAEVI,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,OAAO,sBAAKnC,MAAO,CAAEC,SAAU,SAAxB,SAAoCkC,KAE7C4jB,UAAW,QACXD,WAAY,YAAc,IAAD,EACvB,OAAO,UADgB,EAAVzjB,IACFouF,SAAS,GAAGnuF,gBAAhB,eAA0BsuF,4BAA6B,KAGlE,CACE/uF,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,QAE3D90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,QAGrD,CACEN,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,QAGR90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,aACJoD,SAAU,iBACV6V,gBAAgB,EAChBijC,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EAAQy0B,KAAU86B,YAAY96B,KAAU0c,UAAUnxC,IAAU,UA9frE,mBAkgBM6tF,GAAqB,OAE3B,CACEA,EACAhmE,EACAguC,EACAp0D,EACAsY,EACA+zE,EACAC,EACA1lC,EACAhpD,IAIJ,OACE,uCACE,eAACH,GAAA,EAAD,aACEoB,UAAQ,EACR0pB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACL1I,KAAK,QACLuD,QAASA,EACTe,KAAM6jD,EACNv8B,UAAWA,EACXE,cAAeA,EACfX,YAAa,SAAClnB,GAAS,IAAD,IACpB,GAAIA,EAAImrB,WAAY,MAAO,CAAE1tB,UAAW,iBACxC,GAAIuC,EAAIkgB,UAAW,MAAO,GAC1B,OAAQqrE,GAAW,OAACvrF,QAAD,IAACA,OAAD,EAACA,EAAKC,WACvB,KAAKqrF,GACH,MAAO,CACL7tF,UAAW,iBAEf,KAAK6tF,GACH,MAAO,CACL7tF,UAAW,iBAEf,KAAK6tF,GACH,MAAO,CACL7tF,UAAW,mBAEf,QACE,OAAO,OAAHuC,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAeksE,gBAAf,OAA+BnsE,QAA/B,IAA+BA,GAA/B,UAA+BA,EAAKC,gBAApC,aAA+B,EAAemoB,WACzC,GAEA,CACL3qB,UAAW,kBAIrB2pB,iBAAe,GACX/nB,IAEN,eAACusF,EAAD,eAAiBC,QCrlBrB2C,SAAUnD,GACVO,YAAanB,GACb10B,ctBFa,YAMX,IALFlU,EAKC,EALDA,SACA4sC,EAIC,EAJDA,OACAC,EAGC,EAHDA,iBACA/8E,EAEC,EAFDA,UACAyxD,EACC,EADDA,OAEMurB,GAAsB,OAAR9sC,QAAQ,IAARA,OAAA,EAAAA,EAAU+sC,WAAV,OAAqB/sC,QAArB,IAAqBA,OAArB,EAAqBA,EAAUgtC,SAC7CxuF,EAAOsR,EACT,GACA,CACE,CACE0jD,OAAQ,IACRloB,OAAQ,SACR6pB,YAAahyC,GAAO,OAAC68B,QAAD,IAACA,OAAD,EAACA,EAAU+sC,QAAS,GACxC13B,YAAalyC,GAAO,OAAC68B,QAAD,IAACA,OAAD,EAACA,EAAUgtC,QAAS,GACxCC,eAAgB9pE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQM,eAAgB,GAChDC,YAAahqE,GACXjjB,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQQ,aAAT,OAAuBR,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQM,iBACrC,GAEFG,WAAYlqE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQQ,aAAc,GAC1CE,cACEptF,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQQ,aAAT,OAAuBR,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQM,kBAArC,OACAltC,QADA,IACAA,OADA,EACAA,EAAUgtC,SACN,UACA,WAER,CACEx5B,OAAQ,IACRloB,OAAQ,QACR6pB,YAAahyC,GAAQ,EAAG,GACxBkyC,YAAalyC,GAAQ,EAAG,GACxB8pE,eAAgB9pE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQW,eAAgB,GAChDJ,YAAahqE,GACXjjB,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQY,YAAT,OAAsBZ,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAQW,iBACpC,GAEFF,WAAYlqE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQY,YAAa,GACzCF,cACEptF,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQQ,aAAT,OAAuBR,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQM,kBAArC,OACEltC,QADF,IACEA,OADF,EACEA,EAAUgtC,UACZ9sF,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQY,YAAT,OAAsBZ,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAQW,iBAAmB,EACnD,UACA,UAER,CACEjiD,OAAQ,aACR6pB,YAAahyC,GAAO,OAAC68B,QAAD,IAACA,OAAD,EAACA,EAAUytC,SAAU,GACzCp4B,YAAalyC,GAAO,OAAC68B,QAAD,IAACA,OAAD,EAACA,EAAU0tC,SAAU,GACzCT,eAAgB9pE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQe,gBAAiB,GACjDR,YAAahqE,GACXjjB,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQ3N,cAAT,OAAwB2N,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAQe,kBACtC,GAEFN,WAAYlqE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQ3N,cAAe,IAE7C,CACE3zC,OAAQ,YACR6pB,YAAahyC,GAAQ,EAAG,GACxBkyC,YAAalyC,GAAQ,EAAG,GACxB8pE,eAAgB9pE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQgB,gBAAiB,GACjDT,YAAahqE,GACXjjB,IAAEyvD,IAAI,QAACi9B,QAAD,IAACA,OAAD,EAACA,EAAQiB,aAAT,OAAuBjB,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQgB,kBACrC,GAEFP,WAAYlqE,GAAO,OAACypE,QAAD,IAACA,OAAD,EAACA,EAAQiB,aAAc,IAE5C,CACEviD,OAAQ,OACR6pB,YAAahyC,GAAO,OAAC68B,QAAD,IAACA,OAAD,EAACA,EAAU3pC,KAAM,GACrC82E,YAAahqE,GACXjjB,IAAEyvD,IAAI,QACJi9B,QADI,IACJA,OADI,EACJA,EAAQiB,aADJ,OAEJjB,QAFI,IAEJA,OAFI,EAEJA,EAAQgB,gBAFJ,OAGJhB,QAHI,IAGJA,OAHI,EAGJA,EAAQ3N,cAHJ,OAIJ2N,QAJI,IAIJA,OAJI,EAIJA,EAAQe,kBAEV,KAKJlwF,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OACE,gBAACpC,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,CAAKK,UAAU,+BAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,+CAGJ,eAACF,EAAA,EAAD,CAAKK,UAAU,oCAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,iCAAQoxF,WAId,eAACrxF,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACF,EAAA,EAAD,CAAKK,UAAU,sBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACG8lE,IAAWzxD,EACV,eAACxT,EAAA,EAAD,CAAQC,QAAQ,OAAOqG,KAAK,KAAKpG,QAAS+kE,EAA1C,SACGurB,EAAc,OAAS,QAExB,cAMdrvF,QAAS,CACP,CACEjD,GAAI,YACJmD,OAAQ,GACRC,SAAU,SACV6V,gBAAgB,EAChBf,eAAe,EACf2O,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WAErC,CACEvoB,GAAI,cACJmD,OAAQ,MACRC,SAAU,cACV6V,gBAAgB,EAChBf,eAAe,EACfwO,SAAU,SACVljB,KAAMq1D,IAER,CACE74D,GAAI,cACJmD,OAAQ,MACRC,SAAU,cACV6V,gBAAgB,EAChBf,eAAe,EACfwO,SAAU,SACVtlB,UAAW,eACXoC,KAAMq1D,MAIZ,CACE74D,GAAI,SACJmD,OAAQ,qBAAI/B,UAAU,cAAd,oBACRA,UAAW,cACX6B,QAAS,CACP,CACEjD,GAAI,cACJmD,OAAQ,QACRC,SAAU,cACV6V,gBAAgB,EAChBf,eAAe,EACfwO,SAAU,SACVljB,KAAM,SAACR,GAAD,eACJ,eAAC,GAAD,aACEjB,QAAO,OAAEiB,QAAF,IAAEA,GAAF,UAAEA,EAAOW,WAAT,iBAAE,EAAYC,gBAAd,aAAE,EAAsBkvF,eAC3B9vF,MAIV,CACEhD,GAAI,aACJmD,OAAQ,OACRC,SAAU,aACV6V,gBAAgB,EAChBf,eAAe,EACfwO,SAAU,SACVljB,KAAMq1D,IAER,CACE74D,GAAI,iBACJmD,OAAQ,WACRC,SAAU,iBACV6V,gBAAgB,EAChBf,eAAe,EACfwO,SAAU,SACVtlB,UAAW,2BACXoC,KAAMq1D,SAKd,CAACw5B,EAAkB/8E,EAAWyxD,EAAQurB,IAExC,OACE,eAAC3vF,GAAA,EAAD,CACE8qB,UAAU,EACVC,OAAO,EACPtlB,KAAK,KACL9G,MAAO,CAAE42E,SAAU,QACnB5iE,UAAWA,EACXsV,cAAe,EACf3nB,QAASA,EACTe,KAAMA,KsBjMV2gE,QG5Ba,YAA6D,IAAtCjwD,EAAqC,EAArCA,KAAMmhB,EAA+B,EAA/BA,KAAM0yD,EAAyB,EAAzBA,WAAYj9D,EAAa,EAAbA,UACtDijC,EAAUC,eAEV8kC,EAAYvrF,uBAChB,YAAqB,IAAlB2M,EAAiB,EAAjBA,KAAMmhB,EAAW,EAAXA,KACP04B,EAAQzwC,KACN,cACEpJ,EACA,SACA0jB,KAAMq5D,UAAU57D,GAChB,eACA0yD,KAGN,CAACh6B,EAASg6B,IAaZ,OACE,eAACznF,GAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAACk2B,GAAA,EAAD,CAAWrwB,SAdE,SAACkyB,GAChBX,KAAM0jB,MAAMjmB,KAAUuC,KAAM0jB,MAAM/iB,GAAUzN,IAE9CgoE,EAAU,CACR5+E,OACAmhB,KAAMkD,KAS+Bt1B,MAAOoyB,MAE5C,eAAC70B,EAAA,EAAD,UACE,eAAC,KAAKQ,OAAN,CACE5B,MAAM,OACNI,GAAG,YACHyD,MAAOiR,EACP7N,SAAU,SAACpD,GAAD,OAAW6vF,EAAU,CAAE5+E,KAAMjR,EAAOoyB,UAC9CvhB,aAAW,YHVrBg7E,YAAaA,GACbiE,OAAQpF,GACRrkB,SAAUqO,GAEVqb,uBAAwBprC,GACxBqrC,WAAY9pC,GACZ+pC,gBAAiBhpC,GACjBipC,gBAAiB3b,IIzBb4b,GAAoB,8BAEpBvgD,GAAeC,aAAa,CAChCC,YAAY,EACZC,eAAe,EACfC,gBAAgB,EAChBziC,UAAW,YAAe,IAAZhN,EAAW,EAAXA,KACZ,MAAO,UAAGA,EAAKpE,MAAR,aAAqB,OAAJoE,QAAI,IAAJA,OAAA,EAAAA,EAAMgzB,OAAQ,IAAK0S,QAAQ,QAAS,KAE9Dtb,MAAM,IAGFylE,GAAyB,CAC7BhkD,SAAU,gBAAGpsC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,MAGxCqwF,GAAmB,CAAE/8D,OAAQD,MAEpB,SAASi9D,GAAT,GAA0C,IAAD,EAApBz+E,EAAoB,EAApBA,UAAW0+E,EAAS,EAATA,MAAS,EAC5B7uF,mBAAS,IADmB,mBAC/CkY,EAD+C,KACxCC,EADwC,OAE5BnY,oBAAS,GAFmB,mBAE/C8tC,EAF+C,KAExCqkB,EAFwC,OAG5BnyD,mBAAS,MAHmB,mBAG/C1B,EAH+C,KAGxCiwB,EAHwC,OAKhBvuB,oBAAS,GALO,mBAK/C8uF,EAL+C,KAKlCC,EALkC,KAMhDC,EAAkB,kBAAMD,GAAe,IANS,EAOV/uF,oBAAS,GAPC,mBAO/CivF,EAP+C,KAO/BC,EAP+B,OAQJlvF,oBAAS,GARL,mBAQ/CmvF,EAR+C,KAQ5BC,EAR4B,OASRpvF,oBAAS,GATD,mBAS/CqvF,EAT+C,KAS9BC,EAT8B,KAWpCj3D,EAAiB8hC,KAA3BrtD,SAEFs8C,EAAUC,eAEZvpD,EAAM2a,iBAAO,MAEXlL,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACzCmhB,EAAO1E,MACPyxB,EAAYjuC,aAAY,SAACpS,GAAD,OAAWA,EAAM6hC,IAAIA,IAAIwe,aAEjD8xC,EAAW,SAAC5tF,GAChBA,EAAE6c,iBACF1e,EAAI4K,QAAQojC,QACZqkB,GAAS,IAGPq9B,EAAS,CACX,WAAY,kBAAMN,GAAkB,IACpC,WAAY,kBAAMH,GAAe,IACjC,WAAY,kBAAMK,GAAqB,IACvC,WAAY,WACAp5D,OAAO0nB,KAAK+wC,GAAmB,UACrC3gD,UAGJA,EACF0hD,EAAM,OAAa,WACZjvF,IAAEC,WAAWV,EAAI4K,QAAQ+kF,UAC9B3vF,EAAI4K,QAAQ+kF,OACZt9B,GAAS,KAEF5xD,IAAEC,WAAF,OAAaV,QAAb,IAAaA,GAAb,UAAaA,EAAK4K,eAAlB,aAAa,EAAcojC,SACpC0hD,EAAO,aAAeD,EACtBC,EAAO,UAAYD,GAErBp8B,aAAYq8B,GAEZ74E,qBAAU,WACR,GAAKrY,EAAL,CAEA,GADA6Z,EAAS,IACT,OAAI7Z,QAAJ,IAAIA,OAAJ,EAAIA,EAAO4qD,SACTE,EAAQzwC,KAAR,OAAara,QAAb,IAAaA,OAAb,EAAaA,EAAO4qD,eACf,UAAI5qD,QAAJ,IAAIA,OAAJ,EAAIA,EAAOoxF,aAAc,CACpB15D,OAAO0nB,KAAP,OAAYp/C,QAAZ,IAAYA,OAAZ,EAAYA,EAAOoxF,aAAc,UACvC5hD,aACKvtC,IAAEC,WAAF,OAAalC,QAAb,IAAaA,OAAb,EAAaA,EAAO0G,QAC7B1G,EAAM0G,UACD,OAAI1G,QAAJ,IAAIA,OAAJ,EAAIA,EAAO0N,QAChBA,IAAM6lB,KAAN,OAAWvzB,QAAX,IAAWA,OAAX,EAAWA,EAAO0N,OAEpBuiB,EAAS,SACR,CAACjwB,EAAO8qD,IAEX,IAAM6U,EAAWf,eACjBvmD,qBAAU,WACRu4E,GAAkB,GAClBH,GAAe,GACfK,GAAqB,GACrBE,GAAmB,KAClB,CAACrxB,IAEJ,IAAI5tD,EAAU,GAERtW,EAAU,CACd,CACEU,MACE,gBAACmB,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,2BACA,eAACA,EAAA,EAAD,CAAKI,UAAU,aAAf,SACE,iCACE,kDAKRqC,MAAO,CAAE0G,OAAQ,kBAAMkqF,GAAkB,MAE3C,CACEz0F,MACE,gBAACmB,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,8BACA,eAACA,EAAA,EAAD,CAAKI,UAAU,aAAf,SACE,iCACE,kDAKRqC,MAAO,CAAE0G,OAAQ,kBAAM+pF,GAAe,MAExC,CACEt0F,MACE,gBAACmB,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,8BACA,eAACA,EAAA,EAAD,CAAKI,UAAU,aAAf,SACE,iCACE,kDAKRqC,MAAO,CAAE0G,OAAQ,kBAAMoqF,GAAqB,MAE9C,CACE30F,MAAO,0BACP6D,MAAO,CAAE0G,OAAQ,kBAAMsqF,GAAmB,MAE5C,CACE70F,MACE,gBAACmB,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,qCACA,eAACA,EAAA,EAAD,CAAKI,UAAU,aAAf,SACE,iCACE,kDAKRqC,MAAO,CAAEoxF,aAAcjB,MAG3Bp+E,EAAQsI,KAAK,CAAEle,MAAO,oBAAqB4V,QAAStW,IAEpD,IAAM41F,EAAS5xF,mBACb,kBACE8wF,EACGzwF,QAAO,SAACi2C,GAAD,OAAOA,EAAEr3C,MAChBoE,KAAI,SAACizC,GAAD,MAAQ,CAAE55C,MAAO45C,EAAE55C,MAAO6D,MAAO,CAAE4qD,SAAU7U,EAAEr3C,UACxD,CAAC6xF,IAUH,GARAx+E,EAAQsI,KAAK,CAAEle,MAAO,iBAAkB4V,QAASs/E,IAEjDrxB,GAAQ1D,cAAc,CACpB1iD,QACA7H,UACAmhB,SAAU,SAACtZ,EAAOyiD,GAAR,MAAoB,CAAE+0B,aAAa,IAAD,OAAM/0B,EAAN,aAAiBziD,OAG/D,OAAImgB,QAAJ,IAAIA,OAAJ,EAAIA,EAAcnf,OAAQ,CACxB,IAAM02E,GAAgBrvF,IAAEi6D,OACtBj6D,IAAEk6D,QAAQl6D,IAAEoP,OAAO0oB,EAAc,cACjC,SAACr0B,GAAD,OAAOA,EAAEuY,OAASvY,EAAEN,OACpBtC,KAAI,SAAC4C,GACL,MAAiB,OAAbA,EAAEuY,OACG,CACL9hB,MAAO,OAASuJ,EAAEN,IAClBmuB,KAAM7tB,EAAE02D,SACRp8D,MAAO,CAAEoxF,aAAc,QAAU1rF,EAAEN,MAEjB,OAAbM,EAAEuY,OACF,CACL9hB,MAAO,YAAcuJ,EAAEN,IACvBmuB,KAAM7tB,EAAE02D,SACRp8D,MAAO,CAAEoxF,aAAc,aAAe1rF,EAAEN,MAErC,CACLjJ,MAAO,YAAcuJ,EAAEN,IACvBmuB,KAAM7tB,EAAE02D,SACRp8D,MAAO,CAAE0N,MAAO,6BAGpBqE,EAAQsI,KAAK,CACXle,MAAO,uBACP4V,QAASu/E,KA9KyC,IAkL9Ct2D,GAAcoR,GAASntC,SAAvB+7B,UAlL8C,GAmLVqV,eAApC70B,SAAY80B,IAnLkC,eAmLjB,GAnLiB,IAmLlCA,aAEdihD,GAAav2D,GAChBl7B,QAAO,SAACod,GAAD,OAAsB,IAAfA,EAAEzgB,YAChBqG,KAAI,SAACyO,GACJ,MAAO,CACLpV,MAAwB,MAAjBm0C,KAAwB,OAAC/+B,QAAD,IAACA,OAAD,EAACA,EAAG0+B,UAAoB1+B,EAAE0+B,SAAX1+B,EAAEtV,KAChDwI,MAAO8M,EAAEtV,KACTs3B,KAAMhiB,EAAEtV,KACR+D,MAAO,CAAEoxF,aAAc,cAAgB7/E,EAAEhV,QAG5Cg0C,MAAK,SAAC7qC,EAAG4b,GACR,IAAMmvB,EAAa/qC,EAAEvJ,MACfu0C,EAAapvB,EAAEnlB,MACrB,OAAOs0C,EAAW75B,cAAc+5B,cAAcD,EAAW95B,kBAQ7D,OALA7E,EAAQsI,KAAK,CACXle,MAAO,mBACP4V,QAASw/E,KAIT,gBAACl0F,GAAA,EAAD,CAAMotE,QAAM,EAAZ,UACE,eAAC,KAAD,CACEjpE,IAAKA,EACLmxB,WAAY09D,GACZzgD,aAAcA,GACdrzC,GAAG,aACHN,KAAK,aACL2U,YAAY,YACZ5Q,MAAO,KACPwxF,OAAQ,CACN53E,MAAO,SAAC/b,GAAD,mBAAC,eACHA,GADE,IAELC,SAAU,OAEZ2zF,UAAW,SAAC5zF,GAAD,mBAAC,eACPA,GADM,IAETiuC,MAAO,UAET4lD,KAAM,SAAC7zF,GAAD,mBAAC,eACFA,GADC,IAEJiuC,MAAO,WAGX/5B,QAASA,EACT3O,SAAU,SAAC6vB,GAAD,OAAY,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKjzB,QAASiwB,EAASgD,EAAIjzB,QAC9Ckb,cAAe,SAAC0pB,GAAD,OAAO/qB,EAAS+qB,IAC/BnN,QAAS,kBAAMo8B,GAAS,IACxB1hC,OAAQ,kBAAM0hC,GAAS,IACvB89B,cAAe,IACfj0B,mBAAiB,EACjB78D,WAAYgR,IAEd,eAAC,GAAK68E,SAAN,CACEtqF,KAAMosF,EACN5rF,OAAQ8rF,EACRz/E,KAAMA,EACNmhB,KAAMA,EACNpa,KAAMmnC,EACN4T,SAAU29B,EACV9F,OAAQ8F,IAEV,eAACkB,GAAD,CACExtF,KAAMusF,EACN/rF,OAAQ,kBAAMgsF,GAAkB,MAElC,eAAC,GAAQ5hD,YAAT,CACE5qC,KAAMysF,EACNjsF,OAAQ,kBAAMksF,GAAqB,IACnC7hD,gBAAiBmhD,KAEnB,eAACyB,GAAD,CACEztF,KAAM2sF,EACNnsF,OAAQ,kBAAMosF,GAAmB,SAMzC,SAASY,GAAT,GAA4C,IAAjBxtF,EAAgB,EAAhBA,KAAMQ,EAAU,EAAVA,OAC/B,OACE,gBAACF,GAAA,EAAD,CAAOC,KAAK,KAAKP,KAAMA,EAAMQ,OAAQA,EAAQk7D,SAAS,SAAtD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,CAAavI,GAAG,oBAAhB,2BAEF,eAACmI,GAAA,EAAMK,KAAP,UACE,eAAC,GAAQoQ,IAAT,CAAaC,MAAOxQ,EAAQmuD,SAAUnuD,SAM9C,SAASitF,GAAT,GAAsD,IAAjBztF,EAAgB,EAAhBA,KAAMQ,EAAU,EAAVA,OACnCpD,EAAM2a,mBAMZ,OAJA9D,qBAAU,WACJjU,GAAM5C,EAAI4K,QAAQojC,UACrB,CAACprC,IAGF,gBAACM,GAAA,EAAD,CAAOC,KAAK,KAAKP,KAAMA,EAAMQ,OAAQA,EAArC,UACE,eAACF,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,uCAKF,eAACmI,GAAA,EAAMK,KAAP,UACE,eAAC,KAAK9G,MAAMiH,gBAAZ,CAA4B1D,IAAKA,SC3TzC,IAAMswF,GAAe,SAACvsC,GACpB,IAAMn9B,EAAIsF,IAAO6sD,SAAS7sD,MAASC,KAAK43B,IAClCr0B,EAAQ,UAAG9I,EAAE8I,SAAUzK,SAAS,EAAG,KACnC6hD,EAAU,UAAGlgD,EAAEkgD,WAAY7hD,SAAS,EAAG,KACvCynE,EAAU,UAAG9lE,EAAE8lE,WAAYznE,SAAS,EAAG,KAC7C,MAAM,GAAN,OAAUyK,EAAV,YAAmBo3C,EAAnB,YAA8B4lB,IAGjB,SAAS6D,GAAT,GAAkC,IAAdlgF,EAAa,EAAbA,UAC3BmzC,EAAQgoC,KADgC,EAENtrF,oBAAS,GAFH,mBAEvCswF,EAFuC,KAEzBC,EAFyB,KAGxCC,EAAe5tF,uBAAY,kBAAM2tF,GAAgB,KAAQ,IAHjB,EAK5CtG,GAAmB,CACjB50B,aAAc,WACZlB,OAPwC,mBAIvCi2B,EAJuC,KAI1BC,EAJ0B,KAIRl2B,EAJQ,KAIOs8B,EAJP,KAWxChzC,EAAYjuC,aAAY,SAACpS,GAAD,OAAWA,EAAM6hC,IAAIA,IAAIwe,aAEjD39C,EAAM2a,mBAGCs6B,EACTuO,EADF54C,QAAWqqC,OAGb,OAAI5kC,EAAkB,KAEpB,eAACxU,GAAA,EAAD,CAAMotE,QAAM,EAAZ,SACE,eAACoE,GAAA,EAAD,CACEvrE,OAAQ9B,EACRqb,UAAU,SACVzY,OAAMyN,GAAamgF,GAAgBG,SAAqB7lF,EACxD6nE,MAAO,CAAE/vE,KAAM,IAAK8oC,KAAM,KAC1B6hC,QACE,gBAACC,GAAA,EAAD,CAASzyE,GAAG,gBAAZ,UACE,eAACyyE,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SACc,YAAXy4C,EAAA,qBACiBhiB,KAAU86B,YAAYvK,EAAM54C,QAAQm5C,YAClDP,EAAM54C,QAAQq5C,QAAd,mBACYhxB,KAAU86B,YAAYvK,EAAM54C,QAAQq5C,UAChD,sBAEN,eAACupB,GAAA,EAAQC,QAAT,UACGjqB,EAAM54C,QAAQk5C,kBAAoB,oCAf3C,SAoBE,gBAACjoD,GAAA,EAAKC,IAAN,CAAUK,UAAU,OAApB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,sBAAKgE,IAAKA,EAAV,SACE,eAAC4wF,GAAD,CAAW37C,OAAQA,EAAQi/B,MAAO1wB,EAAM54C,QAAQm5C,gBAGpD,gBAAChoD,EAAA,EAAD,CAAKC,GAAG,OAAR,UACc,YAAXi5C,EACC,eAACp4C,EAAA,EAAD,CACEV,UAAU,YACVgH,KAAK,KACLrG,QAAQ,SACRC,QAAS,kBAAMs3D,EAAc7Q,EAAM54C,QAAQ7P,IAAI,IAC/CkI,MAAM,aALR,SAOE,eAAC,KAAD,MAGF,uCACE,eAACpG,EAAA,EAAD,CACEV,UAAU,YACVgH,KAAK,KACLrG,QAAQ,UACRC,QAAS,WACP0zF,GAAgB,IAElBxtF,MAAM,kBAPR,SASE,eAAC,KAAD,MAEDugD,EAAM54C,QAAQ7P,GACb,eAAC8B,EAAA,EAAD,CACEV,UAAU,YACVgH,KAAK,KACLrG,QAAQ,UACRC,QAAS,kBAAMymD,EAAMioC,QAAQjoC,EAAM54C,QAAQ7P,KAC3CkI,MAAM,qBALR,SAOE,eAAC,KAAD,MAEA,QAGR,eAAC8mF,GAAD,CACEnnF,KAAM4tF,EACNptF,OAAQstF,EACRl6E,KAAMmnC,EAENs9B,YAAU,EACVmO,OAAQ,WACNsH,KAGFn/B,SAAUm/B,IAEZ,eAACpG,EAAD,eAAiBC,cAQ7B,SAASqG,GAAT,GAAuC,IAAlB1c,EAAiB,EAAjBA,MAAOj/B,EAAU,EAAVA,OAE1B,OADA1f,EAA2B,KAEzB,uBAAMp5B,UAAU,2CAAhB,SACc,YAAX84C,EAAuBq7C,GAAapc,GAAS,SChBrC,SAAS2c,GAAT,GAAsC,IAAdxgF,EAAa,EAAbA,UAAa,EACrBX,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAlDysB,EAD0C,EAC1CA,WAAY3hC,EAD8B,EAC9BA,KAEds0F,EA7FR,WAAwB,IACd1yD,EAAoB3sB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAjD0sB,gBAsFR,OApFcp+B,mBAAQ,WACpB,IAAI8wF,EAAQ,CACV,CAAEp0F,MAAO,OAAQuC,GAAI,SACrB,CAAEvC,MAAO,WAAYuC,GAAI,aACzB,CAAEvC,MAAO,MAAOuC,GAAI,QACpB,CAAEvC,MAAO,OAAQuC,GAAI,SACrB,CAAEvC,MAAO,YAAauC,GAAI,cAC1B,CAAEvC,MAAO,QAASuC,GAAI,SAAU4zF,KAAM,GACtC,CAAEn2F,MAAO,UAAWuC,GAAI,WAAY4zF,KAAM,GAC1C,CAAEn2F,MAAO,UAAWuC,GAAI,WAAY4zF,KAAM,GAC1C,CAAEn2F,MAAO,MAAOuC,GAAI,OAAQ4zF,KAAM,GAClC,CAAEn2F,MAAO,WAAYuC,GAAI,YAAa4zF,KAAM,GAC5C,CAAEn2F,MAAO,YAAauC,GAAI,aAAc4zF,KAAM,GAC9C,CAAEn2F,MAAO,eAAgBuC,GAAI,gBAAiB4zF,KAAM,GACpD,CACEn2F,MACE,uCACG,kBACD,eAAC,KAAD,OAGJiyC,KAAM,kCACNkkD,KAAM,GAER,CACEn2F,MACE,uCACG,kBACD,eAAC,KAAD,OAGJiyC,KAAM,4BACNkkD,KAAM,GAER,CACEn2F,MACE,uCACG,4BACD,eAAC,KAAD,OAGJiyC,KAAM,sFACNkkD,KAAM,GAER,CACEn2F,MACE,uCACG,iBACD,eAAC,KAAD,OAGJiyC,KAAM,yCACNkkD,KAAM,GAER,CACEn2F,MACE,uCACG,QACD,eAAC,KAAD,OAGJiyC,KAAM,2CACNkkD,KAAM,GAER,CACEn2F,MACE,uCACG,aACD,eAAC,KAAD,OAIJiyC,KAAM,sCACNkkD,KAAM,IASV,OANIz0D,GACF0yD,EAAMl2E,KAAK,CAAEle,MAAO,YAAauC,GAAI,aAAc4zF,KAAM,IAE3D/B,EAAMl2E,KAAK,CAAEle,MAAO,WAAYuC,GAAI,YAAa4zF,KAAM,IACvD/B,EAAMl2E,KAAK,CAAEle,MAAO,sBAAuBuC,GAAI,OAAQ4zF,KAAM,IAEtD/B,IACN,CAAC1yD,IAOU00D,GAHoC,EAIpB9yF,mBAAQ,WAuCpC,MAAO,CAAE+yF,SAtCQ,SAAC,GAAD,IAAG/zF,EAAH,EAAGA,SAAH,OACf,gBAACg0F,GAAA,EAAD,CAAK90F,UAAU,UAAf,UACG4yF,EACEzwF,QAAO,SAACi2C,GAAD,OAAO9zC,IAAEoN,YAAY0mC,EAAEu8C,SAC9BxvF,KAAI,SAACizC,EAAG7qB,GAAJ,OACH,eAAC,iBAAD,CAAexsB,GAAIq3C,EAAEr3C,GAArB,SACE,eAAC+zF,GAAA,EAAIjyF,KAAL,UAAWu1C,EAAE55C,SADf,kBAAyC+uB,OAI5CzsB,MA6Bci0F,QA1BH,WACd,IAAMC,EAAW,SAAC58C,EAAG7qB,GAAJ,OACf6qB,EAAEr3C,GACA,eAAC,iBAAD,CAAeA,GAAIq3C,EAAEr3C,GAArB,SACE,eAACk0F,GAAA,EAAY58E,KAAb,UAAmB+/B,EAAE55C,SADvB,iBAAwC45C,EAAEu8C,KAA1C,YAAkDpnE,IAIlD,eAAC0nE,GAAA,EAAY58E,KAAb,CACEsiC,QAAQ,EACRlK,KAAM2H,EAAE3H,KACR9qC,OAAO,SAHT,SAMGyyC,EAAE55C,OANL,iBAIiB45C,EAAEu8C,KAJnB,YAI2BpnE,KAK/B,OACE,gBAAC0nE,GAAA,EAAD,CAAanuF,MAAM,OAAOouF,SAAS,OAAnC,UACGtC,EAAMzwF,QAAO,SAACi2C,GAAD,OAAkB,IAAXA,EAAEu8C,QAAYxvF,IAAI6vF,GACvC,eAACC,GAAA,EAAY91E,QAAb,IACCyzE,EAAMzwF,QAAO,SAACi2C,GAAD,OAAkB,IAAXA,EAAEu8C,QAAYxvF,IAAI6vF,GACvC,eAACC,GAAA,EAAY91E,QAAb,IACCyzE,EAAMzwF,QAAO,SAACi2C,GAAD,OAAkB,IAAXA,EAAEu8C,QAAYxvF,IAAI6vF,UAK5C,CAACpC,IAxCIiC,EAJ0C,EAI1CA,SAAUE,EAJgC,EAIhCA,QAJgC,EA8CRhxF,oBAAS,GA9CD,mBA8C3CoxF,EA9C2C,KA8C5BC,EA9C4B,OA+CdrxF,oBAAS,GA/CK,mBA+C3CsxF,EA/C2C,KA+C/BC,EA/C+B,KAgDlD,OACE,uCACE,gBAACC,GAAA,EAAD,CAAQtV,GAAG,QAAQuV,OAAO,KAAKC,OAAO,MAAtC,UACE,eAAC,iBAAD,CAAe10F,GAAG,QAAlB,SACE,eAACw0F,GAAA,EAAOG,MAAR,CAAcjlD,KAAK,IAAnB,SACGxmC,IAAU4F,SAAS,cAAgB,iBAAmB,cAG3D,eAAC0lF,GAAA,EAAOrV,OAAR,IACEjgD,EAKA,gBAACs1D,GAAA,EAAOpiC,SAAR,CAAiBnzD,UAAU,sBAA3B,UACE,eAAC60F,EAAD,UACE,eAACE,EAAD,MAEF,eAAC9e,GAAD,IACA,eAACme,GAAD,CAAUlgF,UAAWA,IACrB,eAACy+E,GAAD,CAAWz+E,UAAWA,EAAW0+E,MAAOA,IACxC,eAAC+C,GAAD,CACEr3F,KAAMA,EACNs3F,iBAAkB,kBAAMR,GAAiB,IACzCS,cAAe,kBAAMP,GAAc,SAdvC,eAAC,iBAAD,CAAev0F,GAAG,cAAlB,SACE,eAAC+zF,GAAA,EAAIjyF,KAAL,CAAU4tC,KAAK,SAAf,wBAkBN,eAACgd,GAAD,CACEhnD,KAAM0uF,EACNxnC,QAAS,kBAAMynC,GAAiB,IAChC1nC,WAAW,kBACXv8B,KAAM,eAAC2kE,GAAD,MAER,eAACroC,GAAD,CACEhnD,KAAM4uF,EACN1nC,QAAS,kBAAM2nC,GAAc,IAC7B5nC,WAAW,eACXv8B,KAAM,eAAC4kE,GAAD,SAMd,SAASD,KACP,OACE,gBAAC7zB,GAAA,EAAD,CAAWjiE,UAAU,YAAYE,MAAO,CAAE+9E,UAAW,UAArD,UACE,eAAChc,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,wBAA5C,oBAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,CAAKO,MAAO,CAAE+9E,UAAW,UAAzB,SACE,eAACr+E,EAAA,EAAD,8BAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,iDAIN,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,CAAKO,MAAO,CAAE+9E,UAAW,UAAzB,SACE,eAACr+E,EAAA,EAAD,iCAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,iDAIN,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,wBAA5C,wBAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,CAAKO,MAAO,CAAE+9E,UAAW,UAAzB,SACE,eAACr+E,EAAA,EAAD,6BAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,+CADF,OAC4B,kDAIhC,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,sCAGJ,gBAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,wEAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,+DAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,sDAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,+CAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,wBAA5C,wCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,kCAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,+CADF,OAC4B,0DAIhC,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,iCAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,6CAIN,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,wBAA5C,oBAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,CAAKO,MAAO,CAAE+9E,UAAW,UAAzB,SACE,eAACr+E,EAAA,EAAD,0BAGJ,gBAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,sDAEF,eAACD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,mBACO,yCADP,+DAMJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,UAAUX,UAAU,wBAA5C,iCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,8BAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,iDAIN,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAQ,YAAYX,UAAU,OAA9C,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,kCAGJ,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,yDAIN,eAACqiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,SACG,gDAMT,SAASo1F,KACP,OACE,gBAAChhB,GAAA,EAAD,CAAMC,iBAAiB,aAAvB,UACE,eAACC,GAAA,EAAD,CAAKC,SAAS,aAAapuE,MAAM,aAAjC,SACE,gBAACm7D,GAAA,EAAD,CAAWjiE,UAAU,YAArB,UACE,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,kBAA1B,6BAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,iBAA1B,4BAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,SAAzC,yCAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,oCAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,sEAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,kBAA1B,sGAIA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,gCAGJ,eAACi1E,GAAA,EAAD,CAAKC,SAAS,eAAepuE,MAAM,eAAnC,SACE,gBAACm7D,GAAA,EAAD,CAAWjiE,UAAU,YAArB,UACE,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,2BAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,wDAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,YAAzC,2DAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,yCAGA,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,SAAzC,uCASV,SAASg1F,GAAT,GAAgE,IAA1Cr3F,EAAyC,EAAzCA,KAAMs3F,EAAmC,EAAnCA,iBAAkBC,EAAiB,EAAjBA,cACtCnuF,EAAUnK,aAAaG,QAAQ,WAC/ByhC,EAAe5hC,aAAaG,QAAQ,gBAC1C,OACE,gBAACu3F,GAAA,EAAD,CAAanuF,MAAOxI,EAAM4B,MAAO,CAAEC,SAAU,SAA7C,UACE,eAAC,iBAAD,CAAeY,GAAG,YAAlB,SACE,eAACk0F,GAAA,EAAY58E,KAAb,yBAEF,eAAC48E,GAAA,EAAY58E,KAAb,CAAkBzX,QAAS,kBAAMg1F,KAAjC,2BAGA,eAACX,GAAA,EAAY58E,KAAb,CAAkBzX,QAAS,kBAAMi1F,KAAjC,oBAGA,eAAC,iBAAD,CAAe90F,GAAG,eAAlB,SACE,eAACk0F,GAAA,EAAY58E,KAAb,uBAEF,eAACD,GAAA,EAAS+G,QAAV,IACA,eAAC/G,GAAA,EAASC,KAAV,CAAe7R,UAAQ,EAAvB,SACE,2CAAWkB,GAAX,OACEy3B,GAAiC,WAAjBA,EAA4B,IAAMA,EAAe,WC3Z5D,SAAS62D,KAKf,IAAD,yDAAJ,GAJFp3F,EAIM,EAJNA,GACA67B,EAGM,EAHNA,aAGM,IAFN4iC,eAEM,SADNpQ,EACM,EADNA,SAEMgpC,EAAM1iF,aAAY,SAACpS,GAAD,OAAW+0F,EAAc7mE,WAAWluB,EAAOvC,MAC7Du3F,EAAmB5iF,aACvB,SAACpS,GAAD,OAAWA,EAAM05B,SAASC,KAAK5sB,SAASE,WAEpCpG,EAAW0O,cALX,EAM0C3S,mBAAS,MANnD,mBAMCqyF,EAND,KAMmBC,EANnB,OAOuCtyF,mBAAS,MAPhD,mBAOCuyF,EAPD,KAOkBC,EAPlB,OAQ6BvpC,KAR7B,mBAQCgN,EARD,KAQc9M,EARd,OASoBnpD,mBAAS,MAT7B,mBASC2H,EATD,KASQ4jB,EATR,KAWAyL,EAASp0B,uBAAY,WAEzB,OADA0vF,EAAoB,MACbruF,EAASwuF,EAAYz7D,OAAO,CAAEn8B,GAAIA,KACtCyM,KAAK4jB,KACL5jB,MAAK,SAACsU,GAGL,OAFIA,EAAO82E,QAAQJ,EAAoBz3F,IACnC+gB,EAAO+2E,WAAa/2E,EAAOg3E,eAAcJ,EAAkB33F,GACxD+gB,OAEV,CAAC/gB,EAAIoJ,IAEFgzB,EAAYr0B,uBAChB,SAACyN,GAA+B,IAAtBiB,EAAqB,uDAAP,GAEtB,OADAghF,EAAoB,MACbruF,EACLwuF,EAAYx7D,UAAU,CACpBP,eACArmB,UACAiB,YAAaA,KAGdhK,KAAK4jB,KACL5jB,MAAK,SAACsU,GAEL,OADIstC,GAAUC,EAAYD,EAAW,IAAMttC,EAAO/gB,IAC3C+gB,OAGb,CAAC3X,EAAUyyB,EAAcwyB,EAAUC,IAG/BjyB,EAAct0B,uBAClB,kBACEqB,EAASwuF,EAAYv7D,YAAY,CAAEr8B,GAAIA,KACpCyM,KAAK4jB,KACL5jB,MAAK,SAACsU,GAGL,OAFIstC,GAAUC,EAAYD,EAAW,IAAMttC,EAAO/gB,IAE3C+gB,OAEb,CAAC/gB,EAAIoJ,EAAUilD,EAAUC,IAGrBx9B,GAAarI,gBAAMzoB,KAAQy+D,GAAqB,OAAV3xD,EACtCkrF,EAAoBlnE,KAAa,OAACumE,QAAD,IAACA,OAAD,EAACA,EAAKQ,WAAU,OAACR,QAAD,IAACA,OAAD,EAACA,EAAKY,WAE7D99D,GAAY,kBAAMgC,IAAStvB,MAAM6jB,KAAWsnE,EAAoB,IAAO,EAAG,CACxE77D,EACA67D,IAGF,IAAMxoF,EAAUtM,mBAAQ,WACtB,OAAOq0F,GAAoC,OAAhBn8B,IAC1B,CAACm8B,EAAkBn8B,IAEtB,OAAO,aACLi8B,MACA7nF,UACA1C,QACAqvB,SACAC,YACAC,gBACO,OAAHg7D,QAAG,IAAHA,OAAA,EAAAA,EAAKx7D,gBAAiBA,EACtB,CAAE27D,mBAAkBE,mBACpB,IC9ED,SAASQ,GAAT,GAUH,IATFC,EASC,EATDA,gBACAC,EAQC,EARDA,gBACAC,EAOC,EAPDA,mBACAC,EAMC,EANDA,oBACAC,EAKC,EALDA,gBACAC,EAIC,EAJDA,oBACAC,EAGC,EAHDA,oBACAp0F,EAEC,EAFDA,SAEC,IADDq0F,kBACC,WAC+BvzF,mBAASgzF,GADxC,mBACMvkD,EADN,KACgB+kD,EADhB,OAE+BxzF,mBAASizF,GAFxC,mBAEMz1D,EAFN,KAEgBi2D,EAFhB,OAGuBzzF,mBAASmzF,GAHhC,mBAGMziE,EAHN,KAGYihD,EAHZ,KAIK+hB,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI2iC,IAJ9C,EAM+Bx9B,wBACV4K,IAApBwoF,EAAgCA,EAAkB,KAPnD,mBAMMO,EANN,KAMgBC,EANhB,OASuC5zF,wBACd4K,IAAxByoF,EAAoCA,EAAsB,KAV3D,mBASMQ,EATN,KASoBC,EATpB,OAYqC9zF,wBACb4K,IAAvBsoF,EAAmCA,EAAqB,KAbzD,mBAYMa,EAZN,KAYmBC,EAZnB,OAeuCh0F,wBACd4K,IAAxB0oF,EAAoCA,EAAsB,MAhB3D,mBAeMW,EAfN,KAeoBC,EAfpB,KA0CKC,EAAqB,GAC3BA,EAAmBx7E,KAAK,CAAEle,MAAO,WAAY6D,MAAO,MACpD61F,EAAmBx7E,KAAK,CAAEle,MAAO,QAAS6D,MAAO,MACjD61F,EAAmBx7E,KAAK,CAAEle,MAAO,YAAa6D,MAAO,MAGrD,IADA,IAAI81F,EAA0B,KACrB53E,EAAI,EAAGA,EAAI23E,EAAmBj7E,OAAQsD,IAC7C,GAAI23E,EAAmB33E,GAAGle,QAAUy1F,EAAa,CAC/CK,EAA0BD,EAAmB33E,GAC7C,MAIJ,IAAM63E,EAAwB,GAC9BA,EAAsB17E,KAAK,CAAEle,MAAO,gBAAiB6D,MAAO,MAC5D+1F,EAAsB17E,KAAK,CAAEle,MAAO,kBAAmB6D,MAAO,MAC9D+1F,EAAsB17E,KAAK,CAAEle,MAAO,0BAA2B6D,MAAO,MAGtE,IADA,IAAIg2F,EAAsB,KACjB93E,EAAI,EAAGA,EAAI63E,EAAsBn7E,OAAQsD,IAChD,GAAI63E,EAAsB73E,GAAGle,QAAUu1F,EAAc,CACnDS,EAAsBD,EAAsB73E,GAC5C,MAIJ,IAAM+3E,EAAuB,GAC7BA,EAAqB57E,KAAK,CAAEle,MAAO,cAAe6D,MAAO,MACzDi2F,EAAqB57E,KAAK,CAAEle,MAAO,kBAAmB6D,MAAO,MAG7D,IADA,IAAIk2F,GAAkB,KACbh4E,GAAI,EAAGA,GAAI+3E,EAAqBr7E,OAAQsD,KAC/C,GAAI+3E,EAAqB/3E,IAAGle,QAAUq1F,EAAU,CAC9Ca,GAAkBD,EAAqB/3E,IACvC,MAKJ,IAAMi4E,IACHl0F,IAAEu+D,MAAMthC,IAA0B,KAAbA,KACrBj9B,IAAEu+D,MAAMrwB,IAA0B,KAAbA,KACrBluC,IAAEu+D,MAAMm1B,IAAkC,KAAjBA,IACV,MAAhBF,EA6BF,OACE,gBAACp4F,GAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,uBACA,eAAC,KAAKlG,OAAN,CACExB,GAAG,qBACHyD,MAAOmwC,EACPz/B,YAAY,EACZtN,SAAU,SAACpD,GAAD,OAjGlBk1F,EAiG8Cl1F,QAhG9Cm1F,EAAY,OAiGJ5+E,aAAW,EACX1V,WAAYo0F,EACZzD,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,cAG1D,gBAAC74F,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,uBACA,eAAC,GAASlG,OAAV,CACExB,GAAG,qBACH4zC,SAAUA,EACVnwC,MAAOk/B,EACP97B,SAAU,SAACpD,GAhHnBm1F,EAgH8Cn1F,IACtCuW,aAAW,EACXi7E,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,SACtDv1F,WAAYo0F,UAIlB,gBAAC33F,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,2BACA,eAAC,KAAD,CACEtG,UAAW,eACXq1B,gBAAgB,SAChBnhB,WAAW,EACX0E,aAAa,EACbzE,cAAc,EACdvV,GAAI,OACJN,KAAM,OACN+D,MAAO81F,EACP/jF,QAAS8jF,EACTzyF,SA9HkB,SAAC43E,GAC3B0a,EAAe1a,EAASh7E,QA8HhB5B,SAAS,EACTyC,WAAYo0F,OAGhB,gBAAC13F,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,4BACA,eAAC,KAAKlG,OAAN,CACExB,GAAG,yBACHyD,MAAO21F,EACPvyF,SAAU,SAACpD,GApInB41F,EAoIkD51F,IAC1CC,QAAQ,EACRsW,aAAW,EACXi7E,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,SACtDv1F,WAAYo0F,UAIlB,gBAAC33F,EAAA,EAAD,CAAKK,UAAU,OAAf,UACE,gBAACJ,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,gCACA,eAAC,KAAD,CACEtG,UAAW,eACXq1B,gBAAgB,SAChBnhB,WAAW,EACX0E,aAAa,EACbzE,cAAc,EACdvV,GAAI,OACJN,KAAM,OACN+D,MAAOg2F,EACPjkF,QAASgkF,EACT3yF,SAvJmB,SAAC43E,GAC5Bwa,EAAgBxa,EAASh7E,QAuJjB5B,SAAS,EACTyC,WAAYo0F,EACZzD,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,cAG1D,gBAAC74F,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,6BACA,eAAC,KAAD,CACEtG,UAAW,eACXq1B,gBAAgB,SAChBnhB,WAAW,EACX0E,aAAa,EACbzE,cAAc,EACdvV,GAAI,SACJN,KAAM,SACN+D,MAAOk2F,GACPnkF,QAASkkF,EACT7yF,SAtKe,SAAC43E,GACxBsa,EAAYta,EAASh7E,QAsKb5B,SAAS,EACTyC,WAAYo0F,UAIlB,eAAC33F,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACG,kBAAmB,IACpB,eAACk2B,GAAA,EAAD,CACErwB,SAnMW,SAACkyB,GACpB+9C,EAAQ1+C,KAAM0jB,MAAM/iB,KAmMZt1B,MAAOoyB,EACPjuB,SAAU8wF,SAIhB,eAAC33F,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEE,QAxIY,WACpB,IAAMwT,EAAU,GAEhBA,EAAQmtB,SAAWj9B,IAAEu+D,MAAMthC,GAAY,GAAKA,EAC5CntB,EAAQ0jF,YAAcA,EACtB1jF,EAAQ4jF,aAAe1zF,IAAEu+D,MAAMm1B,GAAgB,GAAKA,EACpD5jF,EAAQo+B,SAAWluC,IAAEu+D,MAAMrwB,GAAY,GAAKA,EAC5Cp+B,EAAQwjF,aAAeA,EACvBxjF,EAAQsjF,SAAWA,EACnBtjF,EAAQkpB,aAAe7I,EAEvB,IAAI1N,EAAO,GAEcA,EAAL,MAAhB+wE,EAA4B,YACP,MAAhBA,EAA4B,QACzB,YAERxzF,IAAEu+D,MAAMthC,IAA0B,KAAbA,EAClBj9B,IAAEu+D,MAAMrwB,IAA0B,KAAbA,IACxBzrB,EAAO,YAAcyrB,EAAW,IAAMzrB,GAGxCA,EAAO0wE,EAAiBl2D,SAASjjC,KAAO,IAAMyoB,EAEhD9jB,EAASmR,EAAS2S,IAiHVvgB,SAAU8wF,GAAckB,GAF1B,+BAYK70F,I,SCtPf,SAAS+0F,GAAT,GAA4D,IAAD,EAA/B91F,EAA+B,EAA/BA,KAAMwL,EAAyB,EAAzBA,QAAyB,IAAhB0vB,eAAgB,MAAN,GAAM,IACX/5B,oBAAS,GADE,mBAClD40F,EADkD,KACjCC,EADiC,OAErB70F,qBAFqB,mBAElD80F,EAFkD,KAEtCC,EAFsC,OAGvB/0F,oBAAS,GAAlCg1F,EAHgD,oBAYnDC,EAAiB,SAAClvC,GACtB8uC,GAAmB,GACnBE,EAAchvC,IAGVsP,EAAe,WACnBw/B,GAAmB,GACnBG,GAAsB,IAGpBE,EAAc,GACdC,GAAY,EACZC,GAAqB,EACzB,GAAgB,KAAZr7D,GAA8B,OAAZA,EACpB,IAAK,IAAIvd,EAAI,EAAGA,GAAC,OAAG3d,QAAH,IAAGA,OAAH,EAAGA,EAAMqa,QAAQsD,IACX,YAAjB3d,EAAK2d,GAAGrY,OACQ,IAAdgxF,IACFA,GAAY,GAEdC,EAAoB54E,GACM,YAAjB3d,EAAK2d,GAAGrY,OACb41B,IAAYl7B,EAAK2d,GAAGud,SACtBo7D,GAAY,GACe,IAAvBC,GACFF,EAAYv8E,KAAK9Z,EAAKu2F,KAExBD,GAAY,GAGZA,GAAWD,EAAYv8E,KAAK9Z,EAAK2d,SAEpC04E,EAAcr2F,EAEnB,OACE,uCACE,eAACoqF,GAAD,CACEpuF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjC3L,OAAQ7zB,EACRwX,SAAUxX,EACVhE,SAAU,kBAAMwjC,GAAmB,MAErC,gBAACj5F,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,mBAAtB,yBAGA,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,8BAAtB,mBAGA,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,8BAAtB,mBAGA,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,+BAAtB,kBAGA,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,+BAAtB,uBAIF,eAACL,EAAA,EAAD,CAAKK,UAAU,iCAAf,SACE,eAACJ,EAAA,EAAD,gCAEDwO,EACC,0CADM,UAGN6qF,SAHM,aAGN,EAAa9zF,KAAI,SAAC04B,EAAGtQ,GAAJ,OACf,eAAC6rE,GAAD,CAEEx2F,KAAMi7B,EACNm7D,eAAgBA,GAHlB,iBACiBzrE,UAU3B,SAAS6rE,GAAT,GAAmD,IAAtBv7D,EAAqB,EAA3Bj7B,KAASo2F,EAAkB,EAAlBA,eAC9B,OAAQn7D,EAAE31B,MACR,IAAK,UACH,OACE,uCACE,eAACvI,EAAA,EAAD,CAAKK,UAAU,mCAAf,SACE,gBAACJ,EAAA,EAAD,CAAKI,UAAU,iBAAf,UACG,WACD,eAAC,OAAD,CACEA,UAAU,uBACVe,GAAI,CAAEC,SAAS,aAAD,OAAe68B,EAAEC,UAC/Bn4B,OAAO,SACP+oC,IAAI,sBAJN,SAMG7Q,EAAEC,eAIT,eAACn+B,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,iBAAf,SAAiC69B,EAAE8hB,gBAI3C,IAAK,KACH,OACE,uCACE,eAAChgD,EAAA,EAAD,CAAKK,UAAU,mCAAf,SACE,gBAACJ,EAAA,EAAD,CAAKI,UAAU,YAAf,UACG,MACD,eAAC,OAAD,CACEA,UAAU,uBACVe,GAAI,CAAEC,SAAS,QAAD,OAAU68B,EAAEigB,KAC1Bn4C,OAAO,SACP+oC,IAAI,sBAJN,SAMG7Q,EAAEigB,UAIT,eAACn+C,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,YAAf,SAA4B69B,EAAE8hB,gBAItC,IAAK,OACH,OACE,qCACE,eAAChgD,EAAA,EAAD,CAAKK,UAAU,mCAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,YAAf,SACE,eAAC4W,GAAA,EAAD,CAAUhY,GAAIi/B,EAAEwB,eAK1B,IAAK,IACH,OACE,gBAAC1/B,EAAA,EAAD,CAAKK,UAAW,mBAAhB,UACE,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,OAAtB,SACE,eAAC,OAAD,CACEA,UAAU,uBACVe,GAAI,CAAEC,SAAS,SAAD,OAAW68B,EAAEw7D,SAAb,UACdz4F,QAAS,SAAC8E,GACRA,EAAE6c,iBACFy2E,EAAen7D,EAAEw7D,WALrB,SAQGx7D,EAAExoB,gBAGP,eAACzV,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,aAAtB,SACG69B,EAAEtK,QAEL,eAAC3zB,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,aAAtB,SACG69B,EAAEuxD,QAEL,eAACxvF,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,cAAtB,SACGg3B,KAAM0c,QAAQ1c,KAAMwc,UAAU3V,EAAEpJ,SAEnC,eAAC70B,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,cAAtB,SACG69B,EAAE07C,YAIX,IAAK,IACH,OACE,gBAAC55E,EAAA,EAAD,CAAKK,UAAW,mBAAhB,UACE,gBAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,OAAtB,UACG,WACA69B,EAAExoB,eAEL,eAACzV,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,eACtB,eAACJ,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,aAAtB,SACG69B,EAAEuxD,QAEL,eAACxvF,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,cAAtB,SACGg3B,KAAM0c,QAAQ1c,KAAMwc,UAAU3V,EAAEpJ,SAEnC,eAAC70B,EAAA,EAAD,CAAK6Y,GAAI,EAAGzY,UAAU,cAAtB,SACG69B,EAAE07C,YAMb,OAAO,+BAGM51E,WAAMsxB,KAAKyjE,ICvM1B,SAASY,GAAT,GAA8D,IAAD,EAA/B12F,EAA+B,EAA/BA,KAAMwL,EAAyB,EAAzBA,QAAyB,IAAhB0vB,eAAgB,MAAN,GAAM,IACb/5B,oBAAS,GADI,mBACpD40F,EADoD,KACnCC,EADmC,OAEvB70F,qBAFuB,mBAEpD80F,EAFoD,KAExCC,EAFwC,OAGzB/0F,oBAAS,GAAlCg1F,EAHkD,oBAYrDC,EAAiB,SAAClvC,GACtB8uC,GAAmB,GACnBE,EAAchvC,IAGVsP,EAAe,WACnBw/B,GAAmB,GACnBG,GAAsB,IAGpBE,EAAc,GAEdC,GAAY,EACZC,GAAqB,EACzB,GAAgB,KAAZr7D,GAA8B,OAAZA,EACpB,IAAK,IAAIvd,EAAI,EAAGA,GAAC,OAAG3d,QAAH,IAAGA,OAAH,EAAGA,EAAMqa,QAAQsD,IACX,YAAjB3d,EAAK2d,GAAGrY,OACQ,IAAdgxF,IACFA,GAAY,GAEdC,EAAoB54E,GACM,YAAjB3d,EAAK2d,GAAGrY,OACb41B,IAAYl7B,EAAK2d,GAAGud,SACtBo7D,GAAY,EACZD,EAAYv8E,KAAK9Z,EAAKu2F,KAEtBD,GAAY,GAGZA,GAAWD,EAAYv8E,KAAK9Z,EAAK2d,SAEpC04E,EAAcr2F,EAEnB,OACE,uCACE,eAACoqF,GAAD,CACEpuF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjC3L,OAAQ7zB,EACRwX,SAAUxX,EACVhE,SAAU,kBAAMwjC,GAAmB,MAErC,gBAACj5F,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,mBAAtB,yBAGA,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,8BAAtB,sBAGA,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,8BAAtB,mBAGA,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,8BAAtB,sBAIDoO,EACC,0CADM,UAGN6qF,SAHM,aAGN,EAAa9zF,KAAI,SAAC04B,EAAGtQ,GAAJ,OACf,eAACgsE,GAAD,CAAM32F,KAAMi7B,EAAsB/5B,SAAUk1F,GAA5C,cAA2BzrE,UAOrC,SAASgsE,GAAT,GAAsC,IAAhB17D,EAAe,EAArBj7B,KAASkB,EAAY,EAAZA,SACvB,OAAQ+5B,EAAE31B,MACR,IAAK,UACH,OACE,eAACvI,EAAA,EAAD,CAAKK,UAAU,iCAAf,SACE,eAACJ,EAAA,EAAD,UAAMi+B,EAAExoB,gBAGd,IAAK,UACH,OACE,uCACE,gBAAC1V,EAAA,EAAD,CAAKK,UAAU,mCAAf,UACE,gBAACJ,EAAA,EAAD,CAAKI,UAAU,iBAAf,UACG,WACD,eAAC,OAAD,CACEA,UAAU,uBACVe,GAAI,CAAEC,SAAS,aAAD,OAAe68B,EAAEC,UAC/Bn4B,OAAO,SACP+oC,IAAI,sBAJN,SAMG7Q,EAAEC,aAGP,eAACl+B,EAAA,EAAD,CAAKI,UAAU,cAAf,SAA8B69B,EAAE9iB,UAChC,eAACnb,EAAA,EAAD,CAAKI,UAAU,aAAf,SAA6B69B,EAAE27D,UAEjC,eAAC75F,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,iBAAf,SAAiC69B,EAAE8hB,aAErB,KAAf9hB,EAAE22B,SACD,eAAC70D,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,+CAAf,SACG,aAAe69B,EAAE22B,aAGpB,QAGV,IAAK,SACH,OACE,qCACE,eAAC70D,EAAA,EAAD,CAAKK,UAAU,mCAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,YAAf,SAA4B,eAIpC,IAAK,KACH,OACE,uCACE,eAACL,EAAA,EAAD,CAAKK,UAAU,mCAAf,SACE,gBAACJ,EAAA,EAAD,CAAKI,UAAU,YAAf,UACG,MACD,eAAC,OAAD,CACEA,UAAU,uBACVe,GAAI,CAAEC,SAAS,QAAD,OAAU68B,EAAEigB,KAC1Bn4C,OAAO,SACP+oC,IAAI,sBAJN,SAMG7Q,EAAEigB,UAIT,eAACn+C,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,YAAf,SAA4B69B,EAAE8hB,gBAItC,IAAK,WAEH,IAAM85C,EAA2B,aAAZ57D,EAAEuxD,MAAuB,cAAgB,GAE9D,OACE,gBAACzvF,EAAA,EAAD,CAAKK,UAAWy5F,EAAhB,UACE,eAAC75F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,GAAtB,SACE,gBAACL,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,UAAMi+B,EAAExoB,cACR,eAACzV,EAAA,EAAD,UAAMi+B,EAAE67D,iBAGZ,eAAC95F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAE87D,WAEL,eAAC/5F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAE+7D,QAEL,eAACh6F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAEuxD,WAIX,IAAK,aACL,IAAK,WAEH,IAAMyK,EAA4B,aAAZh8D,EAAEuxD,MAAuB,cAAgB,GAEzD0K,EAA2B,eAAXj8D,EAAE31B,KAAwB,cAAgB,GAChE,OACE,gBAACvI,EAAA,EAAD,CAAKK,UAAW,QAAU65F,EAAgB,IAAMC,EAAhD,UACE,eAACl6F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,OAAtB,SACc,eAAX69B,EAAE31B,KACD,eAAC,OAAD,CACElI,UAAW,wBAA0B65F,EACrC94F,GAAI,CAAEC,SAAS,SAAD,OAAW68B,EAAEisB,OAAb,UACdlpD,QAAS,SAAC8E,GACRA,EAAE6c,iBACFze,EAAS+5B,EAAEisB,SALf,SAQGjsB,EAAExoB,cAGLwoB,EAAExoB,cAGN,eAACzV,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAE87D,WAEL,eAAC/5F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAE+7D,QAEL,eAACh6F,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAEuxD,WAIX,IAAK,eACL,IAAK,kBACH,OACE,gBAACzvF,EAAA,EAAD,CAAKK,UAAW,wBAAhB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAT,SAAag+B,EAAExoB,cACf,eAACzV,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,eACtB,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,eACtB,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAGG,UAAU,aAAtB,SACG69B,EAAEuxD,WAIX,IAAK,6BACL,IAAK,uBACH,OACE,eAACzvF,EAAA,EAAD,CAAKK,UAAW,oCAAhB,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAI,GAAT,SAAcg+B,EAAExoB,gBAKxB,OAAO,+BC1NT,SAAS0kF,GAAT,GAWI,IAAD,IAVDhtF,gBAUC,MAVU,GAUV,EATDpL,EASC,EATDA,OACAuS,EAQC,EARDA,UACAkV,EAOC,EAPDA,YACAc,EAMC,EANDA,UAMC,IALD8vE,sBAKC,MALgB,aAKhB,MAJDx8D,sBAIC,MAJgB,aAIhB,EAHDy8D,EAGC,EAHDA,WACAvsF,EAEC,EAFDA,WACAwsF,EACC,EADDA,qBAEMC,EAAsB,gCACtBC,EAAiB,2CAEjBv4F,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACElD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UAEVI,KAAM,SAAC0R,GAAO,IAAD,4BACX,OACE,uCACE,eAACnU,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,OAAD,CACEI,UAAU,uBACVe,GAAI,CAAEC,SAAS,aAAD,cAAe8S,QAAf,IAAeA,OAAf,EAAeA,EAAGzR,QAChCsD,OAAO,SACP+oC,IAAI,sBACJ9tC,QAAS,SAAC8E,GACRA,EAAE6c,iBACFy3E,EAAc,OAAClmF,QAAD,IAACA,OAAD,EAACA,EAAGzR,QAPtB,gBAUGyR,QAVH,IAUGA,OAVH,EAUGA,EAAGzR,aAIR,OAADyR,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB63F,iBACjB,eAAC/hF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWm6F,EAApC,yBAGE,MACF,OAADrmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB83F,mBACjB,eAAChiF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWm6F,EAApC,wCAGE,MACF,OAADrmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB+3F,eACjB,eAACjiF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWm6F,EAApC,uBAGE,MACF,OAADrmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBg4F,mBACjB,eAACliF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWm6F,EAApC,yCAGE,MACF,OAADrmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBi4F,gBACjB,eAACniF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWm6F,EAApC,oCAGE,MACF,OAADrmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBk4F,sBACjB,eAACpiF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWm6F,EAApC,8BAGE,KACJ,eAACx6F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACkC,OAA9B,OAADkU,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBu7B,UACjB,eAACr9B,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,kBAAM48B,EAAc,OAAC1pB,QAAD,IAACA,OAAD,EAACA,EAAGzR,MAAOqL,EAAY,MACpDlH,SAAU0N,EAHZ,uBAQA,eAACxT,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAM48B,EAAc,OAAC1pB,QAAD,IAACA,OAAD,EAACA,EAAGzR,MAAOqL,EAAY,MACpDlH,SAAU0N,EAHZ,6BAaZ2D,gBAAgB,GAElB,CACEjZ,GAAI,QACJmD,OAAQ,QACRC,SAAU,QAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WACVC,OAAQogE,GAAQlR,OAAO9pD,YACvBlF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ8uD,OAAO9qD,YAAhB,CAA4BzH,GAAIyD,MAEvD,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,SAAC0R,GAAO,IAAD,QACX,OACE,qCACE,wCACGA,QADH,IACGA,GADH,UACGA,EAAGvR,WADN,iBACG,EAAQC,gBADX,aACG,EAAkBm4F,QACnB,wBACA,sBAAK36F,UAAU,QAAf,gBAAwB8T,QAAxB,IAAwBA,GAAxB,UAAwBA,EAAGvR,WAA3B,iBAAwB,EAAQC,gBAAhC,aAAwB,EAAkBs1F,qBAMpD,CACEl5F,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,YACJmD,OAAQ,aACRC,SAAU,YACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAE3BtP,gBAAgB,GAElB,CACEjZ,GAAI,eACJmD,OAAQ,iBACRC,SAAU,eACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAE3BtP,gBAAgB,GAElB,CACEjZ,GAAI,YACJmD,OAAQ,aACRC,SAAU,YACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAE3BtP,gBAAgB,GAElB,CACEjZ,GAAI,eACJmD,OAAQ,gBACRC,SAAU,eACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAGzC,CACEzD,GAAI,OACJmD,OAAQ,OACR8V,gBAAgB,EAChB7V,SAAU,SAAC2U,GAAD,OAAOA,EAAEikF,WACnBn1E,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAG3B/kB,KAAM,SAAC0R,GAAO,IAAD,wBACX,OACE,uCACmC,SAA/B,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBo4F,WACjB,eAACtiF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWo6F,EAApC,SACG,YAAMtmF,QAAN,IAAMA,GAAN,UAAMA,EAAGvR,WAAT,iBAAM,EAAQC,gBAAd,aAAM,EAAkBo4F,aAG3B,eAACtiF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,kBAEmC,SAAnC,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBq4F,eACjB,eAACviF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWo6F,EAApC,UACI,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBq4F,eAAgB,QAGrC,eAACviF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,kBAEsC,SAAtC,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBs4F,kBACjB,eAACxiF,GAAA,EAAD,CAAO3X,QAAQ,SAASX,UAAWo6F,EAAnC,UACI,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBs4F,kBAAmB,QAGxC,eAACxiF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,uBAMV,CACEx7F,GAAI,UACJmD,OAAQ,UACR8V,gBAAgB,EAChB7V,SAAU,SAAC2U,GAAD,OAAOA,EAAEokF,WACnBt1E,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAG3B/kB,KAAM,SAAC0R,GAAO,IAAD,oBACX,OACE,uCACE,eAACwE,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWo6F,EAApC,SACG,YAAMtmF,QAAN,IAAMA,GAAN,UAAMA,EAAGvR,WAAT,iBAAM,EAAQC,gBAAd,aAAM,EAAkBu4F,aAEM,SAA/B,OAADjnF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBw4F,WACjB,eAAC1iF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWo6F,EAApC,UACI,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBw4F,WAAY,QAGjC,eAAC1iF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,kBAEkC,SAAlC,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBy4F,cACjB,eAAC3iF,GAAA,EAAD,CAAO3X,QAAQ,SAASX,UAAWo6F,EAAnC,UACI,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkBy4F,cAAe,QAGpC,eAAC3iF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,uBAMV,CACEx7F,GAAI,UACJmD,OAAQ,UACR8V,gBAAgB,EAChB7V,SAAU,SAAC2U,GAAD,OAAOA,EAAEukF,aACnBz1E,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAG3B/kB,KAAM,SAAC0R,GAAO,IAAD,wBACX,OACE,uCACqC,SAAjC,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB04F,aACjB,eAAC5iF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWo6F,EAApC,SACE,eAACziC,GAAD,CAAmBt1D,MAAK,OAAEyR,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,iBAAE,EAAQC,gBAAV,aAAE,EAAkB04F,gBAG9C,eAAC5iF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,kBAEqC,SAArC,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB24F,iBACjB,eAAC7iF,GAAA,EAAD,CAAO3X,QAAQ,UAAUX,UAAWo6F,EAApC,SACE,eAACjjC,GAAD,CAAgB90D,MAAK,OAAEyR,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,iBAAE,EAAQC,gBAAV,aAAE,EAAkB24F,oBAG3C,eAAC7iF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,kBAEwC,SAAxC,OAADtmF,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB44F,oBACjB,eAAC9iF,GAAA,EAAD,CAAO3X,QAAQ,SAASX,UAAWo6F,EAAnC,SACE,eAACjjC,GAAD,CACE90D,MAAK,OAAEyR,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,iBAAE,EAAQC,gBAAV,aAAE,EAAkB44F,uBAI7B,eAAC9iF,GAAA,EAAD,CAAOtY,UAAWo6F,EAAlB,uBAMV,CACEx7F,GAAI,eACJmD,OAAQ,iBACRC,SAAU,eACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAG3B/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,KAC/CwV,gBAAgB,GAElB,CACEjZ,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,WAG3B/kB,KAAM,SAAC0R,GAAO,IAAD,IAiBJ,IAhBP,OAAyC,KAApC,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGvR,WAAH,mBAAQC,gBAAR,eAAkB07B,gBAElB,eAACx9B,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kCACPs5F,EAAoB,OAClBpmF,QADkB,IAClBA,GADkB,UAClBA,EAAGvR,WADe,iBAClB,EAAQC,gBADU,aAClB,EAAkBs7B,QADA,OAElBhqB,QAFkB,IAElBA,GAFkB,UAElBA,EAAGvR,WAFe,iBAElB,EAAQC,gBAFU,aAElB,EAAkB07B,eAFA,OAGlBpqB,QAHkB,IAGlBA,GAHkB,UAGlBA,EAAGvR,WAHe,iBAGlB,EAAQC,gBAHU,aAGlB,EAAkB27B,kBAGtB33B,SAAU0N,EATZ,kBAgBA,eAACxT,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kCACPs5F,EAAoB,OAClBpmF,QADkB,IAClBA,GADkB,UAClBA,EAAGvR,WADe,iBAClB,EAAQC,gBADU,aAClB,EAAkBs7B,QADA,OAElBhqB,QAFkB,IAElBA,GAFkB,UAElBA,EAAGvR,WAFe,iBAElB,EAAQC,gBAFU,aAElB,EAAkB07B,eAFA,OAGlBpqB,QAHkB,IAGlBA,GAHkB,UAGlBA,EAAGvR,WAHe,iBAGlB,EAAQC,gBAHU,aAGlB,EAAkB27B,kBAGtB33B,SAAU0N,EATZ,SAWE,eAACyjD,GAAD,CAAmBt1D,MAAK,OAAEyR,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,iBAAE,EAAQC,gBAAV,aAAE,EAAkB07B,oBAKpDrmB,gBAAgB,GAElB,CACEjZ,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVyjB,OAAQ,CACNG,UAAW,CAAEuB,WAAY,UAG3B/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,KAC/CwV,gBAAgB,MAGpB,CACE3D,EACA8lF,EACAx8D,EACA9vB,EACAwsF,EACAC,EACAC,IAIJ,OACE,uCACE,wBACA,gBAACz6F,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACa,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAMq5F,EAAWltF,EAAUW,EAAY,MAChDlH,SAAU0N,EAHZ,2BAQF,eAACtU,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACa,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,kBAAMq5F,EAAWltF,EAAUW,EAAY,MAChDlH,SAAU0N,EAHZ,gCASJ,wBACA,eAACvU,EAAA,EAAD,UACE,eAAC4B,GAAA,EAAD,CACEoB,UAAQ,EACR0pB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLxI,MAAM,YACNqD,QAASA,EACTunB,YAAaA,EACbznB,OAAQA,EACRiB,KAAMmK,EACNmd,UAAWA,EACXhW,UAAWA,EACXyV,iBAAe,EACfF,YAAa,SAAClnB,GACZ,GAAIA,EAAIkgB,UAAW,MAAO,GAC1B,cAAQlgB,QAAR,IAAQA,OAAR,EAAQA,EAAKC,SAASu7B,UACpB,IAAK,IACH,MAAO,CACL/9B,UAAW,iBAEf,IAAK,IACH,MAAO,CACLA,UAAW,iBAEf,QACE,GAA+B,QAAxB,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASi9C,UAChB,MAAO,CACLz/C,UAAW,4BA6DhB2D,IC7dA03F,GAVG,CAEhBv9F,QAASw9F,GAET/3B,QAASuzB,GACTyE,UF+Na53F,IAAMsxB,KAAKqkE,IE9NxBkC,QAAS9C,GACTn3F,MDgeaoC,IAAMsxB,KAAK8kE,KEveX,SAAS0B,GAAT,GAKX,IAAD,IAJD/tC,kBAIC,MAJY,GAIZ,MAHDE,kBAGC,MAHY,UAGZ,EAFDz8B,EAEC,EAFDA,KACA1qB,EACC,EADDA,KAEA,OACE,eAACgyE,GAAD,CACEhyE,KAAMA,EACNinD,WAAYA,EACZE,WAAYA,EACZz8B,KAAMA,ICaZ,IAAMxvB,GAAS,CACb,UACA,UACA,QACA,SACA,WACA,OACA,UACA,UACA,WACA,YAGa,SAAS+5F,KAAkB,IAAD,kBACC33F,oBAAS,GADV,mBAChC43F,EADgC,KAClBC,EADkB,OAED73F,mBAAS,IAFR,mBAEhC83F,EAFgC,KAEnBC,EAFmB,OAGa/3F,oBAAS,GAHtB,mBAGhCg4F,EAHgC,KAGZC,EAHY,OAIOj4F,oBAAS,GAJhB,mBAIhCk4F,EAJgC,KAIfC,EAJe,OAKSn4F,oBAAS,GALlB,mBAKhCo4F,EALgC,KAKdC,EALc,OAMSr4F,oBAAS,GANlB,mBAMhCs4F,EANgC,KAMdC,EANc,OAOWv4F,oBAAS,GAPpB,mBAOhCw4F,EAPgC,KAObC,EAPa,OAQKz4F,mBAAS,GARd,mBAQhCm6B,EARgC,KAQhBu+D,EARgB,OASO14F,mBAAS,KAThB,mBAShCo6B,EATgC,KASfu+D,EATe,OAUO34F,mBAAS,MAVhB,mBAUhCk6B,GAVgC,KAUf0+D,GAVe,QAWP54F,mBAAS,MAXF,qBAWhC64F,GAXgC,MAWtBC,GAXsB,SAYS94F,mBAAS,MAZlB,qBAYhC+4F,GAZgC,MAYdC,GAZc,MAajChgE,GAAQ6T,SAASC,eAAYjyC,IAC7BuuD,GAAUC,eACVplD,GAAW0O,cACXmnB,GAAItqB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAC9B8I,GAAiBvB,KAAKxZ,OAAO,CAAEzC,GAAIi/B,KAAzCvqB,KACU0pF,GAAmBvuD,GAASptC,OAAO,CACnDzC,GAAIk+F,KADEv7D,SAlB+B,GA6BnCy0D,GAAO,CACTp3F,GAAIm+B,GACJkwB,UAAU,EACVxyB,aAAc,cATdw7D,GAvBqC,GAuBrCA,IACA7nF,GAxBqC,GAwBrCA,QACAgoF,GAzBqC,GAyBrCA,iBACAE,GA1BqC,GA0BrCA,gBACAt7D,GA3BqC,GA2BrCA,UACAC,GA5BqC,GA4BrCA,YAOIgiE,GAAkBt2F,uBACtB,SAACm3B,EAASyD,EAAUx4B,GAClBmzF,GAAmB,GACnBl0F,GACEqzF,GAAUv9F,QAAQ0/B,eAAe,CAC/BT,MAAOA,GACPziB,UAAWwjB,EACX/0B,OAAQA,EACR0rB,KAAMwhE,GAAI7hF,QAAQkpB,aAClB5vB,WAAY6zB,KAGbl2B,MAAK,WACJ6wF,GAAmB,MAEpBzwF,OAAM,WACLywF,GAAmB,QAGzB,CAACl0F,GAAU+0B,GAAOk5D,KAGd73D,GAAkBz3B,uBACtB,SAACu2F,GAEC,IADA,IAAIC,EAAW,GACN59E,EAAI,EAAGA,GAAC,OAAG29E,QAAH,IAAGA,OAAH,EAAGA,EAAQt/D,OAAOP,UAAUpgB,QAAQsC,IAAK,CACxD,IAAM69E,EAAS,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAQt/D,OAAOP,UAAU9d,GAAGxS,SAAS5H,KACrD,SAACC,GAAD,OAAOA,EAAE04B,WAELu/D,EAAU,CACd3vF,WAAU,OAAEwvF,QAAF,IAAEA,OAAF,EAAEA,EAAQt/D,OAAOP,UAAU9d,GAAG7R,WACxCX,SAAUqwF,GAEZD,EAASzgF,KAAK2gF,GAEhBjB,GAAoB,GACpBp0F,GACEqzF,GAAUv9F,QAAQsgC,gBAAgB,CAChCrB,MAAOA,GACPM,UAAW8/D,EACX7/D,aAAc4/D,EAAO9oF,QAAQkpB,gBAG9BjyB,MAAK,WACJ+wF,GAAoB,MAErB3wF,OAAM,WACL2wF,GAAoB,QAG1B,CAACp0F,GAAU+0B,KAGbriB,qBAAU,WAELpW,IAAEu+D,MAAMuzB,KACTE,KAAoBF,IACpBwG,KAAaxG,KAEbyG,GAAYzG,IACZh4D,GAAgB63D,OAEjB,CAACG,GAAkBE,GAAiBL,GAAK73D,GAAiBw+D,KAE7DliF,qBAAU,WACJtM,IAAW9J,IAAEu+D,MAAM+5B,IAAWN,GAAoB,GACjDA,GAAoB,KACxB,CAACluF,GAASwuF,KAEb,IAAMU,GAAgB32F,uBACpB,SAACgZ,GACCi8E,GAAgB,GAChBiB,GAAYl9E,EAAO/gB,IACnBk9F,EAAe,IACfI,GAAmB,GACnBI,GAAoB,GACpBE,GAAqB,GACrBC,EAAkB,GAClBC,EAAmB,KACnBK,GAAoB,MACpB5vC,GAAQzwC,KAAK,cAAgBiD,EAAO/gB,MAEtC,CAACuuD,KAGGowC,GAAa52F,uBAAY,WAC7Bi1F,GAAgB,KACf,IAEG4B,GAAqB72F,uBACzB,SAACoG,EAAUw0B,EAAUx4B,GACnBmzF,GAAmB,GAEnB,IAAMuB,EAAO1wF,EAAS5H,KAAI,SAAC4O,GAAD,OAAOA,EAAE+pB,WAEnC91B,GACEqzF,GAAUv9F,QAAQ8gC,gBAAgB,CAChC7B,MAAOA,GACPhwB,SAAU0wF,EACV10F,OAAQA,EACR0rB,KAAMwhE,GAAI7hF,QAAQkpB,aAClB5vB,WAAY6zB,KAGbl2B,MAAK,WACJ6wF,GAAmB,MAEpBzwF,OAAM,WACLywF,GAAmB,QAGzB,CAACl0F,GAAU+0B,GAAOk5D,KAGdiE,GAAuBvzF,uBAAY,SAAC2T,EAAW4iB,EAAQC,GAC3Du/D,EAAmBv/D,GACnBs/D,EAAkBv/D,GAClBy/D,GAAmBriF,GACnBkiF,GAAqB,KACpB,IAEGkB,GAAe/2F,uBAAY,WAC/Bu1F,GAAmB,GAEnBl0F,GACEqzF,GAAUv9F,QAAQmgC,gBAAgB,CAChC3jB,UAAW2jB,GACXf,OAAQgB,EACRf,QAASgB,EACTpB,MAAOA,MAGR1xB,MAAK,WACJ6wF,GAAmB,GACnBM,GAAqB,MAEtB/wF,OAAM,WACLywF,GAAmB,QAEtB,CAACl0F,GAAUi2B,GAAiBC,EAAgBC,EAAiBpB,KAE1Di9D,GAAiBrzF,uBAAY,SAACm3B,GAClCg+D,EAAeh+D,GACfk+D,GAAsB,KACrB,IAuBG2B,GAAkB,OAAV5gE,SAA4BpuB,IAAVouB,KAAwB1V,MAAM0V,IACxD6gE,GACJD,IAAiB,OAAR1H,SAAwBtnF,IAARsnF,IAAqBl5D,KAAUk5D,GAAIr3F,GACxDi/F,GAAaD,IAAc3H,GAAIn9C,OAAS,IAE1Ci+C,IAA8B,OAAZ36E,SAAY,IAAZA,QAAA,EAAAA,GAAcrJ,YAAaqJ,GAAaxd,GAAK,KAC/Do4F,GAAkB,KAClBG,GAAkB,IAClBC,GAAsB,IACtBH,GAAqB,IACrBI,GAAsB,KACtByG,GAAsB9mE,KAAM0jB,MAAM3qB,MAASguE,MAAM,WACrDD,GAAsB,WAElBF,KACF7G,GAAkBd,GAAI7hF,QAAQo+B,SAC9BwkD,GAAkBf,GAAI7hF,QAAQmtB,SAC9B41D,GAAkBlB,GAAI7hF,QAAQsjF,SAC9BN,GAAsBnB,GAAI7hF,QAAQwjF,aAClCX,GAAqBhB,GAAI7hF,QAAQ0jF,YACjCT,GAAsBpB,GAAI7hF,QAAQ4jF,aAClC8F,GAAsB7H,GAAI7hF,QAAQkpB,cAGpC,IAAM0gE,GACJ,eAAC,GAAUz6B,QAAX,CACEwzB,gBAAiBA,GACjBC,gBAAiBA,GACjBC,mBAAoBA,GACpBI,oBAAqBA,GACrBF,gBAAiBA,GACjBC,oBAAqBA,GACrBF,oBAAqB4G,GACrB76F,SApDiB,SAACmR,EAASiB,GAC7B0nF,GAAoB,MACpBnB,GAAgB,GAChBiB,GAAY,WACZ7hE,GAAU5mB,EAASiB,GAAahK,KAAKiyF,IAAe7xF,MAAM8xF,KAiDxDnvF,QAASA,GACTkpF,WAAYuG,IAAclC,IA7OS,GAihBzC,SAA4B1F,EAAK6G,GAAmB,IAAD,IAC7CmB,GAA8B,EAC9B5gE,EAAY,GAChB,GAAsC,KAA/B,OAAH44D,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,UAAUpgB,QAAc,CAAC,IAAD,IACvCogB,EAAU3gB,KAAK,CACbra,MAAK,OAAE4zF,QAAF,IAAEA,GAAF,UAAEA,EAAKr4D,cAAP,aAAE,EAAaP,UAAU,GAAG3vB,WACjClP,MAAK,OAAEy3F,QAAF,IAAEA,GAAF,UAAEA,EAAKr4D,cAAP,aAAE,EAAaP,UAAU,GAAG6gE,eAEnCD,EAA6B,OACxB,IAAO,OAAHhI,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,UAAUpgB,QAAS,EACzC,IAAK,IAAIsD,EAAI,EAAGA,GAAC,OAAG01E,QAAH,IAAGA,GAAH,UAAGA,EAAKr4D,cAAR,aAAG,EAAaP,UAAUpgB,QAAQsD,IAAnD,WAII,QAHF,IACK,OAAH01E,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,UAAU9c,GAAG49E,MAAMlhF,QAAS,IACtC,OAAHg5E,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,UAAU9c,GAAG69E,cAAcnhF,QAAS,EAEjDogB,EAAU3gB,KAAK,CACbra,MAAK,OAAE4zF,QAAF,IAAEA,GAAF,UAAEA,EAAKr4D,cAAP,aAAE,EAAaP,UAAU9c,GAAG7S,WACjClP,OACK,OAAHy3F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,UAAU9c,GAAG29E,cAC1B,MADA,OAEAjI,QAFA,IAEAA,GAFA,UAEAA,EAAKr4D,cAFL,aAEA,EAAaP,UAAU9c,GAAGxT,SAASkQ,QACnC,OAEG,OAAHg5E,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,UAAU9c,GAAG7S,cAAeovF,IAC3CmB,EAA6B19E,GAKrC,IADA,IAAI89E,EAAwB,KACnB99E,EAAI,EAAGA,EAAI8c,EAAUpgB,OAAQsD,IACpC,GAAI8c,EAAU9c,GAAGle,QAAUy6F,EAAkB,CAC3CuB,EAAwBhhE,EAAU9c,GAClC,MAIJ,MAAO,CACL09E,2BAA4BA,EAC5BI,sBAAuBA,EACvBhhE,UAAWA,GAtUXihE,CAAmBrI,GAAK6G,IADlBz/D,GAjP+B,GAiP/BA,UAAW4gE,GAjPoB,GAiPpBA,2BAA4BI,GAjPR,GAiPQA,sBAMxB,IAArBhhE,GAAUpgB,QACV6/E,KAAqBz/D,GAAU,GAAGh7B,QACjB,IAAjBs5F,GACc,OAAbiB,IAAqBA,KAAa7/D,IAEnCggE,GAAoB1/D,GAAU,GAAGh7B,OAGnC,IAAM0K,GAAWjL,mBAAQ,WAAO,IAAD,IACvB27F,EAAO,GACP76F,EAAI,OAAGqzF,SAAH,IAAGA,IAAH,UAAGA,GAAKr4D,cAAR,iBAAG,EAAaP,UAAU4gE,WAA1B,aAAG,EAAoDlxF,SACjE,QAAa4B,IAAT/L,EACF,IAAK,IAAI2d,EAAI,EAAGA,EAAI3d,EAAKqa,OAAQsD,IAC/Bk9E,EAAK/gF,KAAK9Z,EAAK2d,IAGnB,OAAOk9E,IACN,CAACQ,GAA4BhI,KAEhC,OACE,gBAACrmD,GAAD,CAAM9oC,MAAM,YAAYipC,YAAY,EAAOC,iBAAiB,EAA5D,UACE,eAAC+pC,GAAD,CAAatzE,KAAMw1F,IACnB,eAACR,GAAD,CAAch1F,KAAM41F,IACpB,eAACZ,GAAD,CACEh1F,KAAM01F,EACNvuC,WAAY,wBAEd,gBAAC7mD,GAAA,EAAD,CACE+qC,gBAAgB,mBAChBrrC,KAAMs1F,EACN90F,OAAQ,kBAAM+0F,GAAsB,IACpC75B,SAAS,SAJX,UAME,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,gBAACH,GAAA,EAAMI,MAAP,oCAAoC00F,OAEtC,gBAAC90F,GAAA,EAAMK,KAAP,WACE,eAAC,GAAUm0F,UAAX,CACE34F,KAAI,OAAEqzF,SAAF,IAAEA,IAAF,UAAEA,GAAKr4D,cAAP,iBAAE,EAAaP,UAAU4gE,WAAzB,aAAE,EAAoDE,MAC1D/vF,QAASA,GACT0vB,QAAS+9D,IAEX,eAAC,GAAUL,QAAX,CACE54F,KAAI,OACFqzF,SADE,IACFA,IADE,UACFA,GAAKr4D,cADH,iBACF,EAAaP,UAAU4gE,WADrB,aACF,EAAoDG,cAEtDhwF,QAASA,GACT0vB,QAAS+9D,UAIf,gBAAC90F,GAAA,EAAD,CACEC,KAAK,KACLP,KAAM81F,EACNt1F,OAAQ,kBAAMu1F,GAAqB,IACnCr6B,SAAS,SAJX,UAME,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,gBAACH,GAAA,EAAMI,MAAP,mCAAmC82B,QAErC,gBAACl3B,GAAA,EAAMK,KAAP,WACE,gBAACzH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,oBACA,eAACD,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAACg2D,GAAD,CACE3tD,KAAK,SACL7F,MAAO67B,EACPz4B,SAAU,SAACsO,GAAD,OAAO0oF,EAAkB1oF,IACnCgiD,gBAAgB,SAItB,eAACp2D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,kCAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEsI,KAAK,OACL7H,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GAAD,OAAOg3F,EAAmBh3F,EAAEC,OAAOtD,QAC7CA,MAAO87B,EACPy7C,UAAW,aAKnB,gBAAC7yE,GAAA,EAAM+mD,OAAP,WACE,eAACptD,EAAA,EAAD,CACEE,QAAS88F,GACT/8F,QAAQ,UACR6F,SAAqC,KAA3B23B,EAAgBnR,OAH5B,kBAOA,eAACtsB,EAAA,EAAD,CACEE,QAAS,kBAAM47F,GAAqB,IACpC77F,QAAQ,YAFV,0BASHg9F,GACCC,GACE,gBAAC37B,GAAA,EAAD,CAAWthE,QAAQ,QAAnB,UACE,gBAACshE,GAAA,EAAU5pD,KAAX,WACE,gBAAC1Y,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACGo2F,GAAIY,WAAaZ,GAAIQ,OACpB,eAAC/1F,EAAA,EAAD,CACEC,QAAQ,UACRC,QA5KG,WACrBg7F,GAAgB,GAChB3gE,KACG5vB,MAAK,SAACsU,GACLi8E,GAAgB,GAChBzuC,GAAQzwC,KAAK,cAAgBiD,EAAO/gB,OAErC6M,OAAM,WACLmwF,GAAgB,OAqKFp1F,SAAUq3F,IAAclC,EAH1B,qBAOE,OAEN,eAAC/7F,EAAA,EAAD,UACE,8BAAKq2F,GAAI5gF,gBAEVynF,GACC,eAACl9F,EAAA,EAAD,UACE,eAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,OAAf,SACG,0BACkC,OAAlB,OAAdq8F,SAAc,IAAdA,QAAA,EAAAA,GAAgBtqC,aACb,UACA,gBAGR,QAGLujC,GAAIS,UACH,gBAAC/2F,EAAA,EAAD,WACE,oDACA,eAACk5E,GAAA,EAAD,CAASC,UAAW,OAAQC,OAAQ,eAEpCkd,GAAIU,aACN,gBAACh3F,EAAA,EAAD,WACE,wDACA,eAACk5E,GAAA,EAAD,CAASC,UAAW,OAAQC,OAAQ,eAEpCkd,GAAIY,UACN,eAACl3F,EAAA,EAAD,UACE,iEAEA,QAELs2F,GAAIQ,QAAmC,KAAzBR,GAAI7hF,QAAQmtB,SACzB,uCACE,eAAC0gC,GAAA,EAAU5pD,KAAX,UACE,eAAC,KAAD,CACErY,UAAW,eACXq1B,gBAAgB,SAChBnhB,WAAW,EACX0E,aAAa,EACbzE,cAAc,EACdvV,GAAI,iBACJN,KAAM,iBACN+D,MAAOg8F,GACPjqF,QAASipB,GACT53B,SAAU,SAAC43E,GAAD,OAAc0f,GAAoB1f,EAASh7E,QACrD5B,SAAS,EACTwS,YAAY,sBAGM,OAArB6pF,IAA6Bz/D,GAAUpgB,OAAS,EAC/C,eAAC3E,GAAA,EAAD,CAAO3X,QAAQ,UAAf,qCACuB,OAArBm8F,IAAkD,IAArBz/D,GAAUpgB,OACzC,eAAC3E,GAAA,EAAD,CAAO3X,QAAQ,SAAf,gCACE,QAEJ,KACHs1F,GAAIQ,QAA+B,OAArBqG,GACb,eAAC76B,GAAA,EAAU5pD,KAAX,UACE,gBAAC48D,GAAA,EAAI3kC,UAAL,CAAe0kC,iBAAkB,WAAjC,UACE,eAACr1E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,gBAACi1F,GAAA,EAAD,CAAKn0F,QAAQ,QAAQX,UAAU,WAA/B,UACE,eAAC80F,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,WAAnB,wBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,YAAnB,yBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,UAAnB,uBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,UAAnB,uBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,SAAnB,6BAKR,eAACv1E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACq1E,GAAA,EAAI3D,QAAL,WACE,eAAC2D,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,WAAnB,SACE,eAAC,GAAU3zE,MAAX,CACEwL,SAAUA,GACVpL,OAAQA,GACR+L,WAAYovF,GACZ5oF,UAAW9F,GACX6rF,WAAYuD,GACZxD,eAAgBA,GAChBx8D,eAAgBy/D,GAChB/C,qBAAsBA,OAG1B,eAACjlB,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,YAAnB,SACE,eAAC,GAAUqmB,UAAX,CACE34F,KAAI,OACFqzF,SADE,IACFA,IADE,UACFA,GAAKr4D,cADH,iBACF,EAAaP,UAAU4gE,WADrB,aACF,EACIE,MAEN/vF,QAASA,OAGb,eAAC6mE,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,UAAnB,SACE,eAAC,GAAUsmB,QAAX,CACE54F,KAAI,OACFqzF,SADE,IACFA,IADE,UACFA,GAAKr4D,cADH,iBACF,EAAaP,UAAU4gE,WADrB,aACF,EACIG,cAENhwF,QAASA,OAGb,eAAC6mE,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,UAAnB,SACG8oB,KAEH,eAAC/oB,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,SAAnB,SACE,gBAACjT,GAAA,EAAD,CAAWjiE,UAAU,YAArB,UACE,eAACiiE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,8BAGA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAAOW,QAAQ,UAAzC,gCAGA,eAACshE,GAAA,EAAU5pD,KAAX,CACErY,UAAU,OACVW,QAAQ,YAFV,gDAMA,eAACshE,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,OAA1B,+DAUZi2F,GAAIQ,QAA+B,IAArBp5D,GAAUpgB,OAC1B,2CAAI+gF,GAAJ,OACE,QAGN,kDAGF,eAAC/7B,GAAA,EAAD,CAAWthE,QAAQ,QAAnB,SACE,eAACshE,GAAA,EAAU5pD,KAAX,UACE,eAAC1Y,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMo+F,cC9iBL,SAASQ,KAAoB,IACpCjrC,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAACmoC,GAAD,MAEF,eAAC,KAAD,CAAOgD,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACmoC,GAAD,S,cCEO,SAASiD,KAAoC,IAAD,yDAAJ,GAAI,IAAxBthC,eAAwB,WAC3Bt5D,oBAAS,GADkB,mBAClD48D,EADkD,KACzCi+B,EADyC,KAEnDxzF,EAAY3N,eACZuK,EAAW0O,cACXtI,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKpF,WAC5C6xB,EAAa1sB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKysB,cAC/Cv0B,EAAQ6H,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAK9H,SAC1Ci1B,EAAuBptB,aAC3B,SAACpS,GAAD,OAAWA,EAAMqS,KAAKmtB,wBA4BxB,OAxBAjmB,qBAAU,WACJ2iD,IAED/4D,IAAE6E,QAAQiC,IACV9G,IAAEoN,YAAYtG,IACD,cAAdA,EAeAwzF,GAAW,GAbX52F,EAAS8kD,GAAYltB,WAAWx0B,IAAYC,MAAK,WAC/C,IAAM8zB,EAAe5hC,aAAaG,QAAQ,gBAC1C,IAAK0zB,gBAAyB,0CAAdnnB,KACe,MAAzB02B,GAAiD,SAAjBxB,EAAyB,CAC3D,IAAI0/D,EAAM,IAAIC,IAAI/kE,OAAOioC,SAASvxB,MAClCouD,EAAIE,SAAJ,yBACAhlE,OAAOioC,SAAS15B,QAAQu2D,EAAIpuD,MAGhCmuD,GAAW,GACXnyC,GAAUt/C,gBAKb,CAACnF,EAAUoD,EAAWiyD,EAAS18B,IAE3B,CAAEvyB,QAASA,IAAYuyD,EAAS1gC,aAAYv0B,SC/CrD,IAMeszF,GANF,CACXpyC,UAAWA,GACX+xC,SAAUA,GACVM,SCFa,WACb,IAAMj3F,EAAW0O,cAcjB,MAAO,CAAEtI,QAbOmF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKpF,WAahCsxB,MAZJ/4B,uBACZ,SAACgH,GAAD,OAAU3F,EAAS8kD,GAAYptB,MAAM/xB,MACrC,CAAC3F,IAUsB83B,cARHn5B,uBACpB,SAACgH,GAAD,OAAU3F,EAAS8kD,GAAYhtB,cAAcnyB,MAC7C,CAAC3F,IAMqCk3F,eAJjBv4F,uBACrB,SAACgH,GAAD,OAAU3F,EAAS8kD,GAAYoyC,eAAevxF,MAC9C,CAAC3F,OCPU,SAASm3F,KAAS,IAAD,EACYH,GAAKC,WAAvC7wF,EADsB,EACtBA,QAASsxB,EADa,EACbA,MAAOI,EADM,EACNA,cAClBG,EAAa1sB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKysB,cAE/CgtB,EAAW+T,GAAgB,YAC3B7T,EAAUC,eAEhB,OAAIh/C,EAAgB,eAACwhC,GAAD,CAAM9oC,MAAM,aAAagpC,KAAK,eAC9C7P,EAAmB,eAAC,KAAD,CAAUl/B,GAAG,UAElC,eAAC6uC,GAAD,CAAM9oC,MAAM,aAAZ,SACE,eAACnH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEuD,cAAe,CACbk8B,OAAQ,GACRr0B,SAAU,IAEZ/H,SAAU,SAACD,GACT08B,EAAM18B,GAAQqI,MAAK,WACjB8hD,EAAQzwC,KAAKuwC,GAAY,SAP/B,SAWE,eAACmyC,GAAD,CAAWlrF,UAAW9F,EAAS0xB,cAAeA,YAQ1D,SAASs/D,GAAT,GAAmC,IAAdlrF,EAAa,EAAbA,UAAa,EACF1U,eAAtBD,EADwB,EACxBA,WAEF8/B,GAAShoB,EAHiB,EACZA,OAEC,UAErB,OACE,eAAC1X,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,wBAAMqD,SAAU1D,EAAhB,UACE,eAAC,KAAD,CACEjB,KAAK,SACLE,MAAM,OACNuB,aAAa,WACbkT,YAAY,eAEd,eAAC,KAAD,CACE3U,KAAK,WACLE,MAAM,WACN0J,KAAK,WACLnI,aAAa,mBACbkT,YAAY,aAEd,eAACvS,EAAA,EAAD,CAAQC,QAAQ,UAAUuH,KAAK,SAAS1B,SAAU0N,EAAlD,oBAGA,eAAC,iBAAD,CAAenT,GAAE,oCAA+Bs+B,GAAhD,SACE,eAAC3+B,EAAA,EAAD,CAAQC,QAAQ,OAAhB,qCC9DG,SAAS0+F,KACtB,IAAMx/D,EAASm/D,GAAKpyC,UAAU,CAAEC,eAAe,IACzC5sB,EAAa1sB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKysB,cAMrD,OAJAvlB,qBAAU,WACRmlB,MACC,CAACA,IAEAI,EAAmB,eAAC,KAAD,CAAUl/B,GAAG,UAC7B,eAAC6uC,GAAD,CAAM9oC,MAAM,mBAAmBgpC,KAAK,mBCN9B,SAASwvD,KAAiB,IAAD,EACHN,GAAKC,WAAhC7wF,EAD8B,EAC9BA,QAAS0xB,EADqB,EACrBA,cACXG,EAAa1sB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKysB,cAE/CktB,EAAUC,eACV/tB,EAAS2hC,GAAgB,QAE/B,OAAI5yD,EAAgB,eAACwhC,GAAD,CAAM9oC,MAAM,aAAagpC,KAAK,eAC9C7P,EAAmB,eAAC,KAAD,CAAUl/B,GAAG,UAElC,eAAC6uC,GAAD,CAAM9oC,MAAM,iBAAZ,SACE,eAACnH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEuD,cAAe,CACbk8B,SACAr0B,SAAU,IAEZ/H,SAAU,SAACD,GACT88B,EAAc98B,GAAQqI,MAAK,WACzB8hD,EAAQzwC,KAAK,cAPnB,SAWE,eAAC6iF,GAAD,YAQZ,SAASA,KAAqB,IACpBhgG,EAAeC,eAAfD,WAER,OACE,eAACI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,wBAAMqD,SAAU1D,EAAhB,UACE,eAAC,KAAD,CACEjB,KAAK,SACLE,MAAM,OACNuB,aAAa,WACbkT,YAAY,eAEd,eAACvS,EAAA,EAAD,CAAQC,QAAQ,UAAUuH,KAAK,SAA/B,mCChDK,SAASs3F,KACtB,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOjsC,KAAI,eAAX,SACE,eAAC8rC,GAAD,MAEF,eAAC,KAAD,CAAO9rC,KAAI,cAAX,SACE,eAAC4rC,GAAD,MAEF,eAAC,KAAD,CAAO5rC,KAAI,uBAAX,SACE,eAAC+rC,GAAD,SCjBR,IAAMG,GAAe,CACnBroD,EAAG,CACDx4C,GAAI,IACJyW,YAAa,iBAEfgjD,EAAG,CACDz5D,GAAI,IACJyW,YAAa,kBAEf2iD,EAAG,CACDp5D,GAAI,IACJyW,YAAa,aAEfqiC,EAAG,CACD94C,GAAI,IACJyW,YAAa,cAIV,SAASqqF,GAAT,GAAgC,IAAP9gG,EAAM,EAANA,GAC9B,OAAO6gG,GAAa7gG,GAGf,SAAS+gG,KAEd,MAAO,CAAEC,aADYttF,OAAOC,QAAQktF,IAAct6F,KAAI,2CClBxD,IAAM06F,GAAmBl8F,IAAMC,YAC7B,WAEEC,GACI,IAFFxB,EAEC,EAFDA,MAEC,IAFM5B,eAEN,aAFuBwS,mBAEvB,MAFqC,uBAErC,EAFgErR,EAEhE,kDAGG6R,EAFmBksF,KAAjBC,aAEsBz6F,KAAI,SAACyO,GACjC,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEhV,OAGtCiV,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLxB,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OAMZi+F,GAAiBxrF,YAAc,mBAChBwrF,IC1BAC,GATI,CAEjBx+F,OAAQq+F,GACRt+F,OAAQq+F,GAERt/F,OD8Bay/F,GC7Bbx5F,YCNa,YAAwC,IAC7C05F,EAAeL,GAAc,CAAE9gG,GADa,EAANA,KACtCmhG,WACR,OAAKA,EAEE,qCAAGA,EAAW1qF,cAFG,OCUX,SAAS2qF,GAAT,GAUX,IAAD,IATDr3C,UAAWs3C,OASV,MATelwE,MAASuH,QAAQ,SAAS7tB,cASzC,MARDwgD,QAASi2C,OAQR,MARanwE,MAASguE,MAAM,SAASt0F,cAQrC,MAPDukB,aAOC,MAPO,GAOP,MANDmyE,iBAMC,MANW,GAMX,MALDC,cAKC,MALQ,GAKR,MAJDC,kBAIC,MAJY,GAIZ,MAHDC,wBAGC,aAFDP,kBAEC,MAFY,GAEZ,MADD98F,gBACC,MADU,aACV,IACuB+pD,KAAfE,EADR,oBAEK9wC,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACvD,OACE,eAAC,KAAD,CACEnQ,cAAe,CACbg9F,UAAWA,EACXC,OAAQA,EACRC,WAAYA,EACZh8F,QAAS2pB,EACT26B,UAAWs3C,EACXh2C,QAASi2C,EACTI,iBAAkBA,EAClBP,WAAYA,GAEdlgD,QAAS,CAAEzjC,gBACXnZ,SAAU,SAACmR,GACTnR,IACAiqD,EACE,gCACEl2B,KAAM0jB,MAAMtmC,EAAQu0C,WACpB,YACA3xB,KAAM0jB,MAAMtmC,EAAQ61C,SACpB,qBACA71C,EAAQksF,iBACR,UACAlsF,EAAQ/P,QACR,cACA+P,EAAQ+rF,UACR,WACA/rF,EAAQgsF,OACR,eACAhsF,EAAQisF,WACR,eACAjsF,EAAQ2rF,aAGdz8F,aAAW,EAjCb,SAmCE,eAACi9F,GAAD,MAKN,SAASA,KAAyB,IACxBhhG,EAAeC,eAAfD,WAEF0qD,EAAUu2C,aAAS,CAAEliG,KAAM,YAC3BqqD,EAAY63C,aAAS,CAAEliG,KAAM,cACnC,OACE,gBAACoB,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,gBAACG,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAW2J,KAAZ,CACElL,KAAK,YACLE,MAAM,aACNk4B,YAAY,EACZD,QAASwzB,MAGb,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,UACLE,MAAM,WACNk4B,YAAY,EACZF,QAASmyB,SAIf,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWrY,OAAZ,CACE9B,KAAK,aACLE,MAAM,aACN6B,GAAIy/F,GAAW1/F,OACfwY,aAAW,QAIjB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWrY,OAAZ,CACE9B,KAAK,UACLE,MAAM,QACN6B,GAAIwa,KAAKva,MAAMF,OACfwY,aAAW,QAIjB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWrY,OAAZ,CACE9B,KAAK,YACLE,MAAM,aACN6B,GAAIwa,KAAKza,OACTwY,aAAW,QAIjB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWrY,OAAZ,CACE9B,KAAK,SACLE,MAAM,SACN6B,GAAIwa,KAAKza,OACTwY,aAAW,QAIjB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWrY,OAAZ,CACE9B,KAAK,aACLE,MAAM,gBACN6B,GAAIwa,KAAKxO,KAAKjM,OACdwY,aAAW,QAIjB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWxY,MAAZ,CACE3B,KAAK,mBACLE,MAAM,uCAIZ,eAACmB,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBCrJK,SAASu4F,KAAiB,IAAD,EACeltF,aACnD,SAACpS,GAAD,OAAWA,EAAMqS,QADXqB,EAD8B,EAC9BA,qBAAsB6C,EADQ,EACRA,UAAWC,EADH,EACGA,QAIzC,OAAMD,GAAa7C,GAAwB8C,EASzC,eAACi4B,GAAD,CAAM9oC,MAAM,eAAZ,SACE,eAACk5F,GAAD,MARA,eAACpwD,GAAD,CACE9oC,MAAM,eACNgpC,KAAK,2C,cCVE,SAAS4wD,GAAT,GAAgD,IAA3BC,EAA0B,EAA1BA,aAAcC,EAAY,EAAZA,SAChD,OACE,eAAClgG,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,YACVY,QAAS,WACP,IAAIi+F,ECTG,SAAkBgC,EAASD,GACxC,IAAI/B,EAAM,kDAMV,OAJqBA,GAAL,MAAZgC,EAA6B,0CACZ,MAAZA,EAA6B,qCACjB,MAAZA,EAA6B,2BACrB,6BACJ,eAAiBD,EAAW,0BDEzBE,CAASH,EAAcC,GACjC7mE,OAAO0nB,KAAKo9C,EAAK,WALrB,SAQG+B,I,OERHjjG,aAAkB,CACpBC,OAAQujC,GAAgBvjC,OACxBE,QAASqjC,GAAgBrjC,UALZijG,G,GAAb/iG,YACWgjG,G,GAAX9iG,UACqB+iG,G,GAArB9wE,oBCNW+wE,GAAW,CACtB9pD,EAAG,CACDx4C,GAAI,IACJyW,YAAa,SACb1U,QAAS,iBAEX62C,EAAG,CACD54C,GAAI,IACJyW,YAAa,SACb1U,QAAS,iBAEXi3C,EAAG,CACDh5C,GAAI,IACJyW,YAAa,SACb1U,QAAS,gBAEXk3C,EAAG,CACDj5C,GAAI,IACJyW,YAAa,OACb1U,QAAS,gBCkBPwgG,GAAqB,CAAEviG,GAAI,KAAMmoB,MAAM,GACvCglD,GAAgB,CACpB,UACA,mBACA,cACA,KACA,WACA,eACA,eACA,WACA,gBACA,OACA,mBACA,SACA,UACA,aAGIq1B,GAAqBz9F,IAAMsxB,KAAKosE,IAChCC,GAAiB39F,IAAMsxB,KAAKssE,IAC5BC,GAAwB79F,IAAMsxB,KAAKwsE,IACnCC,GAA0B/9F,IAAMsxB,KAAK0sE,IACrCC,GAAqBj+F,IAAMsxB,KAAK4sE,IAChCC,GAA6Bn+F,IAAMsxB,KAAK8sE,IACxCC,GAAer+F,IAAMsxB,KAAKgtE,IAC1BC,GAAoBv+F,IAAMsxB,KAAKktE,IAC/BC,GAAez+F,IAAMsxB,KAAKpa,KAAKhY,MAC/Bw/F,GAAY1+F,IAAMsxB,KAAK1zB,MAEd,SAAS+gG,GAAT,GAQX,IAPF1/F,EAOC,EAPDA,KAOC,IANDjB,cAMC,MANQoqE,GAMR,EALD7hD,EAKC,EALDA,UAKC,IAJDd,mBAIC,MAJa+3E,GAIb,MAHD36F,gBAGC,aAFD4H,eAEC,aADDm0F,mBACC,MADa,OACb,EACKljE,EAAS9rB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADhD,EAEiDvP,oBAAS,GAF1D,mBAEMy+F,EAFN,KAEyBC,EAFzB,OAGmD1+F,mBAAS,MAH5D,mBAGM2+F,EAHN,KAG0BC,EAH1B,OAI6C5+F,oBAAS,GAJtD,mBAIM6+F,EAJN,KAIuBC,EAJvB,OAK+C9+F,mBAAS,MALxD,mBAKM++F,EALN,KAKwBC,EALxB,OAMyCh/F,oBAAS,GANlD,mBAMMi/F,EANN,KAMqBC,EANrB,OAOiDl/F,mBAAS,MAP1D,mBAOMm/F,EAPN,KAOyBC,EAPzB,OAQqDp/F,oBAAS,GAR9D,mBAQMq/F,EARN,KAQ2BC,EAR3B,OASuDt/F,mBAAS,MAThE,mBASMu/F,EATN,KAS4BC,EAT5B,KAWOt1F,EAAc+yF,GAAc,CAClCzmF,QAAQ,IADFtM,UAIFu1F,EAAgB78F,uBACpB,SAAC88F,GACCx1F,EAAU,2BAAKw1F,GAAN,IAAkBC,iBAAkB,SAE/C,CAACz1F,IAGG01F,EAAiBh9F,uBACrB,SAACi9F,GACC31F,EAAU,2BACLq1F,GADI,IAEPO,WAAYD,KAEdP,GAAuB,KAEzB,CAACC,EAAsBr1F,IAGnB61F,EAA0Bn9F,uBAC9B,SAACo9F,EAAUC,GACT/1F,EAAU,2BACL60F,GADI,IAEPmB,YAAaF,EACbG,YAAaF,KAEfnB,GAAmB,KAErB,CAACC,EAAkB70F,IAGfk2F,GAA2Bx9F,uBAC/B,SAACy9F,GACCn2F,EAAU,2BAAKy0F,GAAN,IAA0B2B,kBAAmBD,KACtD3B,GAAqB,KAEvB,CAACC,EAAoBz0F,IAGjBq2F,GAAc39F,uBAClB,SAAC88F,GACCx1F,EAAU,2BACLw1F,GADI,IAEPC,iBAAkB,IAClBW,kBAAmB,QAGvB,CAACp2F,IAEGs2F,GAAa59F,uBAAY,SAAC88F,GAC9BhB,GAAqB,GACrBE,EAAsB,2BAAKc,GAAN,IAAkBC,iBAAkB,SACxD,IAEGc,GAAa79F,uBAAY,SAAC88F,GAC9BhB,GAAqB,GACrBE,EAAsB,2BAAKc,GAAN,IAAkBC,iBAAkB,SACxD,IAEGe,GAAiB99F,uBAAY,SAAC88F,GAClChB,GAAqB,GACrBE,EAAsB,eAAKc,MAC1B,IAEGiB,GAAW/9F,uBAAY,SAAC82B,GAC5BwlE,GAAiB,GACjBE,EAAqB1lE,KACpB,IAEGknE,GAAmBh+F,uBAAY,SAAC88F,GACpCJ,GAAuB,GACvBE,EAAwB,eAAKE,MAC5B,IAEGmB,GAA4Bj+F,uBAAY,SAAC88F,GAC7CZ,GAAmB,GACnBE,EAAoB,eAAKU,MACxB,IAEG5hG,GAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,UACJmD,OAAQ,UACRK,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAAC2/F,GAAD,CACEuB,WAAU,OAAElhG,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACjBghG,cAAeA,EACfgB,WAAYA,GACZD,WAAYA,GACZD,YAAaA,GACbG,eAAgBA,GAChBC,SAAUA,GACVl+F,SAAUA,EACV64B,OAAQA,MAId,CACEzgC,GAAI,UACJmD,OAAQ,UACRE,OAAQS,KACRP,OAAQ,SACRH,SAAU,SACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAIyD,MAErD,CACEzD,GAAI,YACJmD,OAAQ,YACRE,OAAQS,KACRP,OAAQ,SACRH,SAAU,WACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAG8uD,OAAO9qD,YAAX,CAAuBzH,GAAIyD,MAElD,CACEzD,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAACO,GAAD,OAAuB,IAAbA,EAAI8X,KAAa,IAAM9X,EAAI8X,MAC/CpY,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGG,EAAH,EAAGA,IAAKF,EAAR,EAAQA,MAAR,OACJ,eAAC2/F,GAAD,CACElkD,GAAIz7C,EACJ2rB,MAAK,OAAEzrB,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAASqiG,QACrB38F,KAAI,OAAE3F,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAASsiG,OACpBhsD,OAAM,OAAEv2C,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAASuiG,SACtBplD,SAAQ,OAAEp9C,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAASwiG,kBAI9B,CACEpmG,GAAI,UACJmD,OAAQ,UACRC,SAAU,SAACO,GAAD,OAA4B,IAAlBA,EAAI+X,UAAkB,MAAQ/X,EAAI+X,WACtDrY,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQQ,KAAT,CAAcyX,UAAWjY,MAEhD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,kBAAGC,EAAH,EAAGA,MAAOE,EAAV,EAAUA,IAAV,OACJ,eAAC6+F,GAAD,CACE3sE,KAAI,OAAElyB,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAASyiG,aACpB9nE,QAAO,OAAE56B,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAAS0iG,gBACvBC,WAAU,OAAE5iG,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SAAS2iG,WAC1BxE,aAAY,OAAEp+F,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAem+F,aAC7BC,SAAUv+F,MAIhB,CACEzD,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,eACVG,OAAQ+4C,KACRj5C,OAAQk5C,KACRL,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACi/F,GAAD,CAAgB7sE,KAAMpyB,MAE7C,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC+/F,GAAD,CAAcxjG,GAAIyD,EAAOwU,QAAQ,MAExD,CACEjY,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,kBACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACu/F,GAAD,CAAoBzkE,QAAS96B,MAEpD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,gBACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACu/F,GAAD,CAAoBzkE,QAAS96B,MAEpD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEzD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGG,EAAH,EAAGA,IAAKF,EAAR,EAAQA,MAAR,OACJ,eAACm/F,GAAD,CACEiC,WAAU,OAAElhG,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACjBwrB,MAAO3rB,EACPzB,QAASgkG,GACTp+F,SAAUA,MAIhB,CACE5H,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGG,EAAH,EAAGA,IAAKF,EAAR,EAAQA,MAAR,OACJ,eAACq/F,GAAD,CACE+B,WAAU,OAAElhG,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACjB7D,MAAO0D,EACPzB,QAASgkG,GACTp+F,SAAUA,MAIhB,CACE5H,GAAI,OACJmD,OAAQ,OACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGG,EAAH,EAAGA,IAAKF,EAAR,EAAQA,MAAR,OACJ,eAACq/F,GAAD,CACE+B,WAAU,OAAElhG,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACjB7D,MAAO0D,EACPzB,QAAS+jG,GACTn+F,SAAUA,MAIhB,CACE5H,GAAI,oBACJmD,OAAQ,oBACRE,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACu/F,GAAD,CACE2B,WAAU,OAAElhG,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACjB68B,OAAQA,MAId,CACEzgC,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC+/F,GAAD,CAAcxjG,GAAIyD,EAAOwU,QAAQ,MAExD,CACEjY,GAAI,qBACJmD,OAAQ,qBACRC,SAAU,eACVG,OAAQ+4C,KACRj5C,OAAQk5C,KACRL,SAAU,SACV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACi/F,GAAD,CAAgB7sE,KAAMpyB,MAE7C,CACEzD,GAAI,qBACJmD,OAAQ,qBACRC,SAAU,SAACojG,GAAD,aACR,UAAAlE,GAAQ,OAACkE,QAAD,IAACA,OAAD,EAACA,EAAQC,2BAAjB,eAAsChwF,cAAe,IACvDpT,OAAQS,KACRP,OAAQ,aAGZ,CACEqhG,EACAgB,GACAD,GACAD,GACAG,GACAC,GACAl+F,EACA64B,EACAulE,GACAD,KAsBEW,GAAe3+F,uBACnB,SAACpE,GACC,GAAIA,EAAIkgB,UAAW,MAAO,GAM1B,OAJkB,SAAhB8/E,EAAA,OACIhgG,QADJ,IACIA,OADJ,EACIA,EAAKC,SAAS6iG,mBADlB,OAEI9iG,QAFJ,IAEIA,OAFJ,EAEIA,EAAKC,SAASkhG,kBAGlB,IAAK,IACH,OAAuC,KAA7B,OAAHnhG,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAAS+iG,eACjB,CAAEvlG,UAAW,+CACb,CAAEA,UAAW,iBACnB,IAAK,IACH,OAAuC,KAA7B,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAAS+iG,eACjB,CAAEvlG,UAAW,+CACb,CAAEA,UAAW,iBACnB,IAAK,IACH,OAAuC,KAA7B,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAAS+iG,eACjB,CAAEvlG,UAAW,8CACb,CAAEA,UAAW,gBACnB,QACE,OAAuC,KAA7B,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAAS+iG,eACjB,CAAEvlG,UAAW,iCACb,MAGV,CAACuiG,IAGH,OACE,uCACGS,EACC,eAACwC,GAAD,CAAW/nE,UAAWylE,EAAmB9tC,SAnD7B,WAChB6tC,GAAiB,GACjBE,EAAqB,SAkDf,KACHX,EACC,eAACiD,GAAD,CACEL,OAAQ1C,EACRttC,SAnDe,WACrBqtC,GAAqB,GACrBE,EAAsB,OAkDhB1V,OAAQkX,KAER,KACHvB,EACC,eAAC8C,GAAD,CACEN,OAAQtC,EACR1tC,SAtDa,WACnBytC,GAAmB,GACnBE,EAAoB,OAqDd9V,OAAQ6W,IAER,KACHV,EACC,eAACuC,GAAD,CACEP,OAAQ9B,EACRluC,SAzDiB,WACvBiuC,GAAuB,GACvBN,EAAoB,OAwDd9V,OAAQ0W,IAER,KACJ,eAACtB,GAAD,CACE1/F,UAAQ,EACRnE,MAAM,eACNqD,QAASA,GACTF,OAAQA,EACRiB,KAAMA,EACN6mB,YAAa67E,GACbp7E,UAAWA,EACXd,YAAaA,EACblV,UAAW9F,OAMnB,SAASqzF,GAAT,GAAsE,IAAzCzzE,EAAwC,EAAxCA,MAAOy1E,EAAiC,EAAjCA,WAAY7iG,EAAqB,EAArBA,QAAS4F,EAAY,EAAZA,SACvD,OACE,uBAAKtG,MAAO,CAAEC,SAAU,SAAxB,UACE,eAAC,KAAKG,MAAM+F,YAAZ,CAAwBzH,GAAIovB,IAC1BxnB,EAQE,KAPF,eAAC9F,EAAA,EAAD,CACEC,QAAQ,OACRC,QAAS,kBAAMA,EAAQ6iG,IACvBzjG,UAAU,OAHZ,SAKE,eAAC,KAAD,CAAQA,UAAU,MAAMgH,KAAK,cAOvC,SAAS26F,GAAT,GAAwE,IAAzChjG,EAAwC,EAAxCA,MAAO8kG,EAAiC,EAAjCA,WAAY7iG,EAAqB,EAArBA,QAAS4F,EAAY,EAAZA,SACzD,OACE,uBAAKtG,MAAO,CAAEC,SAAU,QAAxB,UACE,eAAC,KAAK0C,KAAN,CAAWjE,GAAID,EAAOkY,QAAQ,IAC5BrQ,EAQE,KAPF,eAAC9F,EAAA,EAAD,CACEC,QAAQ,OACRC,QAAS,kBAAMA,EAAQ6iG,IACvBzjG,UAAU,OAHZ,SAKE,eAAC,KAAD,CAAQA,UAAU,MAAMgH,KAAK,cAOvC,SAAS66F,GAAT,GAAsC,IAAZ1kE,EAAW,EAAXA,QACxB,OAAO,sBAAKj9B,MAAO,CAAEC,SAAU,SAAxB,SAAoCg9B,IAG7C,SAAS4kE,GAAuB0B,EAAYpkE,GAC1C,IAAI5B,EAAYmoE,GAAgBnC,EAAYpkE,GACxCwmE,EAAW,GAQf,OANApoE,EAAUjrB,SAAQ,SAAC9M,GACQ,KAArBA,EAAEy3B,QAAQnQ,SACZ64E,EAAWA,EAAW,KAAOngG,EAAEogG,SAAW,KAAOpgG,EAAEy3B,QAAQnQ,WAIxD,sBAAK9sB,MAAO,CAAEC,SAAU,SAAxB,SAAoC0lG,IAG7C,SAAS5D,GAAT,GAA0D,IAAtCnkD,EAAqC,EAArCA,GAAI9vB,EAAiC,EAAjCA,MAAO9lB,EAA0B,EAA1BA,KAAMy3C,EAAoB,EAApBA,SAAU7G,EAAU,EAAVA,OAC7C,OACE,eAACo4B,GAAA,EAAD,CACEhyD,UAAU,QACVs3D,MAAO,CAAE/vE,KAAM,IAAK8oC,KAAM,KAC1B6hC,QACE,gBAACC,GAAA,EAAD,CAASzyE,GAAG,0BAA0BsB,MAAO,CAAEC,SAAU,SAAzD,UACE,eAACkxE,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SACE,gBAACV,EAAA,EAAD,CAAKK,UAAU,+BAAf,UACE,iCACG,MACA89C,KAEH,+BACE,eAAC,KAAKx9C,MAAM+F,YAAZ,CAAwBzH,GAAIovB,WAIlC,eAACqjD,GAAA,EAAQC,QAAT,UAAkB3xB,IAClB,eAAC0xB,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SACE,gBAACV,EAAA,EAAD,CAAKK,UAAU,+BAAf,UACE,+BACE,eAAC,GAAQQ,KAAK6F,YAAd,CAA0BzH,GAAIsJ,MAEhC,+BACE,eAAC,GAAGipD,OAAO9qD,YAAX,CAAuBzH,GAAIk6C,cAvBvC,SA8BE,eAACp4C,EAAA,EAAD,CAAQC,QAAQ,OAAhB,SACE,eAAC,GAAGkC,KAAJ,CAASjE,GAAIk/C,QAMrB,SAASyjD,GAAT,GAA8B,IAAT9sE,EAAQ,EAARA,KACnB,OAAO,qCAAGuC,KAAM0c,QAAQ1c,KAAMwc,UAAU/e,MAG1C,SAAS4sE,GAAT,GAAgF,IAAtDT,EAAqD,EAArDA,SAAUD,EAA2C,EAA3CA,aAAcxjE,EAA6B,EAA7BA,QAAS1I,EAAoB,EAApBA,KAAM0wE,EAAc,EAAdA,WAC/D,OACE,eAACj0B,GAAA,EAAD,CACEhyD,UAAU,QACVs3D,MAAO,CAAE/vE,KAAM,IAAK8oC,KAAM,KAC1B6hC,QACE,gBAACC,GAAA,EAAD,CAASzyE,GAAG,gBAAgBsB,MAAO,CAAEC,SAAU,SAA/C,UACE,eAACkxE,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SACE,gBAACV,EAAA,EAAD,CAAKK,UAAU,+BAAf,UACE,+BAAM,aAAe4gG,IACrB,+BACE,eAACU,GAAD,CAAgB7sE,KAAMA,WAI5B,eAAC48C,GAAA,EAAQC,QAAT,UAAkBn0C,IAClB,eAACk0C,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SAAwB8kG,OAd9B,SAkBE,eAACzE,GAAD,CAAWC,aAAcA,EAAcC,SAAUA,MAKvD,SAASgF,GAAgBnC,EAAYsC,GACnC,IAAItoE,EAAY,GACmB,MAArB,OAAVgmE,QAAU,IAAVA,OAAA,EAAAA,EAAYuC,iBACdvoE,EAAU/gB,KAAK,CACbopF,SAAUC,EACVtxE,KAAMgvE,EAAWuC,eACjBltD,OAAQ2qD,EAAWC,iBACnBvmE,QAASsmE,EAAWY,oBAGxB,IAAI4B,EAAiBxC,EAAU,YAAOA,EAAWwC,gBAAkB,GAGnE,OAFAA,EAAerzD,MAAK,SAAC7qC,EAAG4b,GAAJ,OAAY,OAAD5b,QAAC,IAADA,OAAA,EAAAA,EAAG0sB,OAAH,OAAU9Q,QAAV,IAAUA,OAAV,EAAUA,EAAG8Q,MAAO,GAAK,KAEjDgJ,EAAUtrB,OAAO8zF,GAG1B,SAAS9D,GAAT,GAUI,IATFsB,EASC,EATDA,WACAD,EAQC,EARDA,cACAc,EAOC,EAPDA,YACAG,EAMC,EANDA,eACAC,EAKC,EALDA,SACAH,EAIC,EAJDA,WACAC,EAGC,EAHDA,WACAh+F,EAEC,EAFDA,SACA64B,EACC,EADDA,OAEM6mE,EAAyD,MAA/B,OAAVzC,QAAU,IAAVA,OAAA,EAAAA,EAAYY,kBAAkBr3E,QAC9CyQ,EAAYmoE,GAAgBnC,EAAYpkE,GAE9C,OACE,uCACE,gBAAC4L,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAM4iG,EAAcC,IAC7BzjG,UAAU,OACVwG,SAAUA,EAJZ,SAME,eAAC,KAAD,CAAexG,UAAU,MAAMgH,KAAK,WAGtC,eAACtG,EAAA,EAAD,CACEC,QAAQ,QACRC,QAAS,kBAAM0jG,EAAYb,IAC3BzjG,UAAU,OACVwG,SAAUA,EAJZ,SAME,eAAC,KAAD,CAAUxG,UAAU,MAAMgH,KAAK,WAEjC,eAACtG,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAM6jG,EAAehB,IAC9BzjG,UAAU,OACVwG,SAAUA,EAJZ,SAMI0/F,EAGA,eAAC,KAAD,CAAelmG,UAAU,MAAMgH,KAAK,SAFpC,eAAC,KAAD,CAAchH,UAAU,MAAMgH,KAAK,cAMzC,gBAACikC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAM2jG,EAAWd,IAC1BzjG,UAAU,OACVwG,SAAUA,EAJZ,SAME,eAAC,KAAD,CAAWxG,UAAU,MAAMgH,KAAK,WAGlC,eAACtG,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,kBAAM4jG,EAAWf,IAC1BzjG,UAAU,OACVwG,SAAUA,EAJZ,SAME,eAAC,KAAD,CAAexG,UAAU,MAAMgH,KAAK,WAErCy2B,EAAUxgB,OAAS,EAClB,eAACi0D,GAAA,EAAD,CACEhyD,UAAU,QACVs3D,MAAO,CAAE/vE,KAAM,IAAK8oC,KAAM,KAC1B6hC,QACE,gBAACC,GAAA,EAAD,CAASzyE,GAAG,gBAAgBsB,MAAO,CAAEC,SAAU,SAA/C,UACE,eAACkxE,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SACE,eAACV,EAAA,EAAD,CAAKK,UAAU,+BAAf,SACE,+BAAM,wBAGTy9B,EAAUt4B,KAAI,SAAC04B,GAAD,aACb,gBAAC,IAAMsoE,SAAP,WACE,eAAC90B,GAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SACE,gBAACV,EAAA,EAAD,CACEK,UAAU,+BADZ,UAIE,+BACE,eAAC,KAAK6C,KAAN,CAAWjE,GAAE,OAAEi/B,QAAF,IAAEA,OAAF,EAAEA,EAAGioE,SAAUjvF,QAAQ,MAEtC,+BACE,eAACyqF,GAAD,CAAgB7sE,KAAMoJ,EAAEpJ,SAE1B,gCAAM,UAAAysE,GAASrjE,EAAEib,eAAX,eAAoBzjC,cAAe,OARpCwoB,EAAEioE,YAWX,eAACz0B,GAAA,EAAQC,QAAT,UAAkBzzC,EAAEV,YAfDU,EAAEioE,gBAX/B,SAgCE,eAACplG,EAAA,EAAD,CACEC,QACE8iG,EAAWwC,eAAehpF,OAAS,EAAI,UAAY,YAErDrc,QAAS,WACP8jG,EAASjnE,IAEXz9B,UAAU,OAPZ,SASGyjG,EAAWwC,eAAehpF,OAAS,EAClC,IAAMwgB,EAAUxgB,OAAS,IAEzB,eAAC,KAAD,CAAQjd,UAAU,MAAMgH,KAAK,aAIjC,WAWZ,SAASw+F,GAAT,GAA6C,IAAxB/nE,EAAuB,EAAvBA,UAAW23B,EAAY,EAAZA,SAC9B,OACE,gBAACruD,GAAA,EAAD,CAAOC,KAAK,KAAKP,MAAM,EAAMQ,OAAQmuD,EAAU+M,SAAS,SAAxD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,6BAEF,eAACJ,GAAA,EAAMK,KAAP,UACGq2B,EAAUt4B,KAAI,SAAC04B,EAAGniB,GAAJ,eACb,uCACGA,EAAQ,EAAI,wBAAY,KACzB,eAAC/b,EAAA,EAAD,CAAKK,WAAW,UAAAkhG,GAASrjE,EAAEib,eAAX,eAAoBn4C,SAAU,QAA9C,SACE,gBAACf,EAAA,EAAD,WACE,gBAACD,EAAA,EAAD,CAAKK,UAAU,+BAAf,UACE,+BACE,eAAC,KAAK6C,KAAN,CAAWjE,GAAE,OAAEi/B,QAAF,IAAEA,OAAF,EAAEA,EAAGioE,SAAUjvF,QAAQ,MAEtC,+BACE,eAACyqF,GAAD,CAAgB7sE,KAAMoJ,EAAEpJ,SAE1B,gCAAM,UAAAysE,GAASrjE,EAAEib,eAAX,eAAoBzjC,cAAe,KACzC,0BARiDwoB,EAAEioE,UAUhC,IAApBjoE,EAAEV,QAAQnQ,OACT,qCACE,eAACrtB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEsI,KAAK,OACL7H,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT91C,MAAOw7B,EAAEV,QACTy8C,UAAW,IACXpzE,UAAU,OATNq3B,EAAEioE,YAcZ,qBAepB,SAASL,GAAT,GAAsD,IAA7BL,EAA4B,EAA5BA,OAAQhwC,EAAoB,EAApBA,SAAU63B,EAAU,EAAVA,OAAU,EACXlpF,mBAASqhG,EAAOf,mBADL,mBAC5C+B,EAD4C,KAC9BC,EAD8B,KAG7C1lG,EAAUugG,GAAQ,OAACkE,QAAD,IAACA,OAAD,EAACA,EAAQ1B,kBAAkB/iG,QAEnD,OACE,gBAACoG,GAAA,EAAD,CAAOC,KAAK,KAAKP,MAAM,EAAMQ,OAAQmuD,EAAU+M,SAAS,SAAxD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAClH,UAAWW,EAArC,SACE,gBAACoG,GAAA,EAAMI,MAAP,iCAEE,wBACA,8BAAKi+F,EAAOkB,gBAGhB,eAACv/F,GAAA,EAAMK,KAAP,CAAYpH,UAAWW,EAAvB,SACE,eAAChB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEsI,KAAK,OACL7H,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GAAD,OAAO2gG,EAAgB3gG,EAAEC,OAAOtD,QAC1CA,MAAO+jG,EACPxsB,UAAW,YAKnB,gBAAC7yE,GAAA,EAAM+mD,OAAP,CAAc9tD,UAAWW,EAAzB,UACE,eAACD,EAAA,EAAD,CAAQE,QAAS,kBAAMqsF,EAAOmZ,IAAezlG,QAAQ,UAArD,kBAGA,eAACD,EAAA,EAAD,CAAQE,QAASw0D,EAAUz0D,QAAQ,YAAnC,0BAaR,SAAS+kG,GAAT,GAAoD,IAA7BN,EAA4B,EAA5BA,OAAQhwC,EAAoB,EAApBA,SAAU63B,EAAU,EAAVA,OAAU,EACblpF,mBAASqhG,EAAOnB,aADH,mBAC1CsC,EAD0C,KAC9BC,EAD8B,OAEbziG,mBAASqhG,EAAOlB,aAFH,mBAE1CuC,EAF0C,KAE9BC,EAF8B,KAI3C/lG,EAAUugG,GAAQ,OAACkE,QAAD,IAACA,OAAD,EAACA,EAAQ1B,kBAAkB/iG,QAEnD,OACE,gBAACoG,GAAA,EAAD,CAAOC,KAAK,KAAKP,MAAM,EAAMQ,OAAQmuD,EAAU+M,SAAS,SAAxD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAClH,UAAWW,EAArC,SACE,gBAACoG,GAAA,EAAMI,MAAP,mCAEE,wBACA,8BAAKi+F,EAAOkB,gBAGhB,gBAACv/F,GAAA,EAAMK,KAAP,CAAYpH,UAAWW,EAAvB,UACE,eAAChB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKU,MAAMF,OAAZ,CACExB,GAAG,UACHyD,MAAOkkG,EACP9gG,SAAU,SAACpD,GAAD,OAAWmkG,EAAcnkG,IACnCC,QAAQ,EACRsW,aAAW,EACXi7E,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,eAI5D,eAAC94F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKQ,OAAN,CACExB,GAAG,UACHyD,MAAOokG,EACPhhG,SAAU,SAACpD,GAAD,OAAWqkG,EAAcrkG,IACnCC,QAAQ,EACRsW,aAAW,EACXi7E,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,kBAK9D,gBAAC1xF,GAAA,EAAM+mD,OAAP,CAAc9tD,UAAWW,EAAzB,UACE,eAACD,EAAA,EAAD,CACEE,QAAS,kBAAMqsF,EAAOsZ,EAAYE,IAClC9lG,QAAQ,UAFV,kBAMA,eAACD,EAAA,EAAD,CAAQE,QAASw0D,EAAUz0D,QAAQ,YAAnC,0BAaR,SAASglG,GAAT,GAAwD,IAA7BP,EAA4B,EAA5BA,OAAQhwC,EAAoB,EAApBA,SAAU63B,EAAU,EAAVA,OAAU,EACPlpF,mBAASqhG,EAAOvB,YADT,mBAC9C8C,EAD8C,KAC7BC,EAD6B,KAGrD,OACE,gBAAC7/F,GAAA,EAAD,CAAOC,KAAK,KAAKP,MAAM,EAAMQ,OAAQmuD,EAAU+M,SAAS,SAAxD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,gBAACH,GAAA,EAAMI,MAAP,kCAEE,wBACA,8BAAKi+F,EAAOkB,gBAGhB,eAACv/F,GAAA,EAAMK,KAAP,UACE,eAACzH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKQ,OAAN,CACExB,GAAG,aACHyD,MAAOskG,EACPlhG,SAAUmhG,EACVtkG,QAAQ,EACRuS,sBAAsB,EACtB+D,aAAW,EACXi7E,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,iBAK9D,gBAAC1xF,GAAA,EAAM+mD,OAAP,WACE,eAACptD,EAAA,EAAD,CAAQE,QAAS,kBAAMqsF,EAAO0Z,IAAkBhmG,QAAQ,UAAxD,kBAGA,eAACD,EAAA,EAAD,CAAQE,QAASw0D,EAAUz0D,QAAQ,YAAnC,0BCt6BR,IAcekmG,GAdI,CAEjB3lG,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQ2/F,GACR1/F,OAAQy/F,GACRn1D,UAAWq1D,GAEX1/F,MAAO+gG,GACPxC,eCPIgH,GAAwBnjG,IAAMsxB,KAAK+qE,IACnC+G,GAAsBpjG,IAAMsxB,KAAKqtE,IAExB,SAAS0E,KACtB,IAAMr+C,EAAYqY,GAAgB,aAC5B/W,EAAU+W,GAAgB,WAC1BhzC,EAAQgzC,GAAgB,SACxBm/B,EAAYn/B,GAAgB,aAC5Bs/B,EAAmBt/B,GAAgB,oBACnCo/B,EAASp/B,GAAgB,UACzBq/B,EAAar/B,GAAgB,cAC7B++B,EAAa/+B,GAAgB,cAC7Bl6D,EAAQ,cATyB,EAWcyM,aACnD,SAACpS,GAAD,OAAWA,EAAMqS,QADXqB,EAX+B,EAW/BA,qBAAsB6C,EAXS,EAWTA,UAAWC,EAXF,EAWEA,QAIzC,OAAM9C,GAAwB6C,GAAaC,EASlB,KAAdgxC,GAAqBA,EAW9B,eAACs+C,GAAD,CACEt+C,UAAWA,EACXsB,QAASA,EACTj8B,MAAOA,EACPmyE,UAAWA,EACXG,iBAAkBA,EAClBx5F,MAAOA,EACPs5F,OAAQA,EACRC,WAAYA,EACZN,WAAYA,IAlBZ,eAACnwD,GAAD,CACE9oC,MAAOA,EACPgpC,KAAK,yBACLC,YAAY,EACZC,iBAAiB,IAbnB,eAACJ,GAAD,CACE9oC,MAAOA,EACPgpC,KAAK,yCACLC,YAAY,EACZC,iBAAiB,IA4BzB,SAASi3D,GAAT,GAUI,IATFt+C,EASC,EATDA,UACAsB,EAQC,EARDA,QACAk2C,EAOC,EAPDA,UACAC,EAMC,EANDA,OACAC,EAKC,EALDA,WACAC,EAIC,EAJDA,iBACAtyE,EAGC,EAHDA,MACAlnB,EAEC,EAFDA,MACAi5F,EACC,EADDA,WACC,EACqBh8F,mBAAS,WAD9B,mBACM0D,EADN,KACWy/F,EADX,OAEqCnjG,mBAAS,QAF9C,mBAEMw+F,EAFN,KAEmB4E,EAFnB,OAGgDN,GAAWj7D,UAAU,CACpErxB,OAAQ,OACRrV,OAAQ,CACNyjD,UAAWA,EACXsB,QAASA,EACTj8B,MAAOA,EACPk2E,YAAa/D,EACbiH,wBAAyB9G,EACzB+G,aAAcjH,EACdC,WAAYA,EACZM,aAAcZ,KAVV9+D,EAHP,EAGOA,YAAa5vB,EAHpB,EAGoBA,MAAO7E,EAH3B,EAG2BA,QAAS4B,EAHpC,EAGoCA,QAc/Bk5F,EAAgB3gG,uBAAY,kBAAMugG,EAAO,aAAY,IACrDh9E,EAAYvjB,uBAAY,WAC5B0K,IACA7E,MACC,CAACA,EAAS6E,IACPk2F,EAAc5gG,uBAAY,SAAC4gC,GAAD,OAAO2/D,EAAO3/D,KAAI,IAElD,OACE,eAACqI,GAAD,CACE9oC,MAAOA,EACPgpC,KACE1hC,EAAU,aAAgB6yB,EAAwC,GAA1B,wBAE1C8O,YAAY,EACZC,iBAAiB,EANnB,SAQE,eAACiyB,GAAA,EAAD,CAAWthE,QAAQ,QAAnB,SACE,eAACshE,GAAA,EAAU5pD,KAAX,UACE,gBAAC48D,GAAA,EAAI3kC,UAAL,CAAek3D,UAAW//F,EAAK3D,SAAUyjG,EAAzC,UACE,gBAAC5nG,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,gBAACi1F,GAAA,EAAD,CAAKn0F,QAAQ,QAAQX,UAAU,WAA/B,UACE,eAAC80F,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,UAAnB,uBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,UAAnB,4BAIN,gBAACt1E,EAAA,EAAD,CAAKC,GAAI,OAAT,UACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,QAAQ6F,UAAQ,EAACxG,UAAU,YAA3C,6BAGA,eAACU,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMumG,EAAe,SAC9BxmG,QAAyB,SAAhB4hG,EAAyB,UAAY,YAHhD,yBAOA,eAAC7hG,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMumG,EAAe,OAC9BxmG,QAAyB,OAAhB4hG,EAAuB,UAAY,YAH9C,6BASJ,eAAC5iG,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACq1E,GAAA,EAAI3D,QAAL,WACE,eAAC2D,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,UAAnB,SACE,eAAC6xB,GAAD,CACEnkG,KAAMq+B,EACN/W,UAAWA,EACXq4E,YAAaA,MAGjB,eAACttB,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,UAAnB,SACE,eAAC4xB,GAAD,CACEn+C,UAAWA,EACXsB,QAASA,EACTk2C,UAAWA,EACXnyE,MAAOA,EACPsyE,iBAAkBA,EAClBD,WAAYA,EACZN,WAAYA,EACZ98F,SAAUqkG,sBCxJjB,SAASG,KAAsB,IACtCl0C,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,SAAX,SACE,eAACyzC,GAAD,MAEF,eAAC,KAAD,CAAOzzC,KAAI,UAAKA,GAAhB,SACE,eAACktC,GAAD,SCiCOiH,OA1Cf,YAA0D,IAAlCtC,EAAiC,EAAjCA,OAAiC,IAAzBzkG,eAAyB,MAAf,YAAe,EACvD,OACE,eAAChB,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CAAOysB,OAAK,EAAC3rB,QAASA,EAAtB,UACE,iCACE,gCACE,wCACA,uCACA,4CAGJ,mCACE,gCACE,0CACA,8BACGm2B,KAAUo1C,gBACTp1C,KAAU0c,WAAgB,OAAN4xD,QAAM,IAANA,OAAA,EAAAA,EAAQuC,YAAavC,EAAO/6C,eAGpD,qCAAK+6C,QAAL,IAAKA,OAAL,EAAKA,EAAQwC,oBAEf,gCACE,gDACA,8BAC8B,MAArB,OAANxC,QAAM,IAANA,OAAA,EAAAA,EAAQyC,gBACL,QACA/wE,KAAUo1C,gBACRp1C,KAAU0c,WACF,OAAN4xD,QAAM,IAANA,OAAA,EAAAA,EAAQ0C,YAAa1C,EAAO2C,eAItC,qCAAK3C,QAAL,IAAKA,OAAL,EAAKA,EAAQyC,+B,oBCxBZG,GAZM5pG,eAASC,MAAM,CAClCgX,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,IAC1D6O,WAAYwZ,eAAS1oB,MAAM,YAAYC,WACvCib,WAAY3a,eAAON,WAAWO,SAAQ,GACtCipG,aAAclpG,eAAON,WAAWO,SAAQ,GACxCuzD,qBAAsBxzD,eAAON,WAAWO,SAAQ,GAChDkpG,YAAa3pG,eAASC,MAAM,eAC5B2pG,oBAAqBjhF,eAAS1oB,MAAM,yBAAyBK,IAAI,aACjEupG,YAAalhF,eAAS1oB,MAAM,gBAAgBK,IAAI,SAChDwpG,kBAAmBnhF,eAAS1oB,MAAM,uBAAuBK,IAAI,WCuB/D,SAASypG,GAAT,GAA0C,IAAlBhpG,EAAiB,EAAjBA,MAAO0D,EAAU,EAAVA,OAE7B,OADAvD,eAEE,gBAACC,GAAA,EAAD,WACE,gBAACA,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CAAYvB,KAAK,KAAKE,MAAM,KAAKsB,UAAU,EAAMC,aAAa,UAEhE,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAI9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,QAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAIouC,GAASruC,OACbwY,aAAa,EACb1V,YAAa5D,IAAU0D,EAAOulG,wBAIpC,eAAC7oG,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAW,cAAvB,UACE,eAAC3X,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACH,GAAA,EAAK4G,MAAN,UAAa,oBAGjB,eAAC4P,GAAA,EAAD,UACE,eAAC,KAAW1Q,QAAZ,CAAoBlH,KAAK,yBAKjC,eAACoB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW3kC,KAAZ,CACElL,KAAK,aACLE,MAAM,eACNu5B,WAAW,aACXhE,eAAe,QAIrB,gBAACr0B,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,QAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,iBACLE,MAAM,kBACN6B,GAAIE,KACJqY,aAAa,MAGjB,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,QAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,cACLE,MAAM,cACN6B,GAAIE,KACJqY,aAAa,SAKnB,gBAAClZ,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAW,cAAvB,UACE,eAAC3X,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACH,GAAA,EAAK4G,MAAN,UAAa,qBAGjB,eAAC4P,GAAA,EAAD,UACE,eAAC,KAAW1Q,QAAZ,CAAoBlH,KAAK,uBAI/B,eAACsB,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAW,oBAAvB,UACE,eAAC3X,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAACH,GAAA,EAAK4G,MAAN,UAAa,4BAGjB,eAAC4P,GAAA,EAAD,UACE,eAAC,KAAW1Q,QAAZ,CAAoBlH,KAAK,gCAKjC,gBAACoB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,sBACLE,MAAM,wBACNuB,aAAa,MACbmI,KAAK,aAGT,eAACtI,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oCACA,eAACqxD,GAAD,CACEt1D,MAAOW,EAAOwlG,oBACdnxC,YAAY,QACZr3D,UAAW,eACXwG,UAAU,SAIhB,eAAC5G,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oCACA,eAACqxD,GAAD,CACEt1D,MAAOW,EAAOylG,oBACdpxC,YAAY,QACZr3D,UAAW,eACXwG,UAAU,YAKlB,gBAAC9G,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,2BACA,eAACqxD,GAAD,CACEt1D,MAAOW,EAAO0lG,YACdrxC,YAAY,QACZr3D,UAAW,eACXwG,UAAU,SAIhB,eAAC5G,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,wBACA,eAACqxD,GAAD,CACEt1D,MAAOW,EAAO2lG,SACdtxC,YAAY,QACZr3D,UAAW,eACXwG,UAAU,SAIhB,eAAC5G,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,2BACA,eAACqxD,GAAD,CACEt1D,MACEW,EAAO4lG,oBAAsB5lG,EAAO6lG,wBAEtCxxC,YAAY,QACZr3D,UAAW,eACXwG,UAAU,eC5LT,SAASsiG,GAAT,GAAyC,IAAjBlqG,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACzC,OACE,eAAC,OAAD,CAAMd,UAAU,aAAae,GAAI,CAAEC,SAAS,cAAD,OAAgBpC,IAA3D,SACGkC,GAAYlC,ICJnB,IAMemqG,GANuB3qG,eAASC,MAAM,CACnDO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,GACxCwW,YAAa9W,eAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnDib,WAAY3a,eAAON,WAAWO,SAAQ,KCgCxC,SAASgqG,GAAT,GAAiD,IAAV1pG,EAAS,EAATA,MAC7BC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAD,CACEvB,KAAK,cACLE,MAAM,cACNwB,UAAU,iBACVD,aAAa,YAInB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAWq4C,SAAZ,CACE55C,KAAK,kBACLE,MAAM,mBACNwB,UAAU,iBACVD,aAAa,MACbo4C,QAAS,aAMnB,eAACz3C,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBC9ES,SAAS0pG,GAAT,GAAwD,IAAjBrqG,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACxD,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,0CAAD,OAA4CpC,IAF5D,SAIGkC,GAAYlC,I,OCHfjB,aAAkB,CACpBC,OAAQskC,GAA6BtkC,OACrCE,QAASokC,GAA6BpkC,UAJzBorG,G,GAAblrG,YACWmrG,G,GAAXjrG,UCKakrG,GAPuBnvF,aAAa,CACjD3b,KAAM,0BACNN,YAAakrG,GACb/mG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE2P,YAAc,IAAM3P,EAAE9G,GAAK,OCF9B,SAASyqG,GAAT,GAAyD,IAAXxoF,EAAU,EAAVA,OACnD0tB,EAAgB1tB,EAAhB0tB,YAEF96B,EADgCy1F,KAA9BnnE,0BAEL5/B,QAAO,SAAC8kC,GAAD,OAAwB,IAAjBA,EAAEvtB,YAAwButB,EAAEroC,KAAO2vC,KACjDppC,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEhV,OAE5C,OAAO,eAAC,KAAD,CAA+BiiB,OAAQA,EAAQzM,QAASX,ICFjE,IAkBe61F,GAlBiB,CAE9BpoG,IAAKghC,GAA6BhhC,IAElCpD,QAASokC,GAA6BpkC,QACtCsD,UAAW8gC,GAA6BtkC,OAAOwD,UAE/CC,OAAQ8nG,GACR7nG,OAAQ4nG,GAER7hG,YAAagiG,GACb9nG,MChBa,YAMX,IALFwgC,EAKC,EALDA,0BAKC,IAJDwnE,mCAIC,cAHD7nG,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,eAEf,EADEC,EACF,kGACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB2/B,EAA3B,EAAUz/B,IAAOC,SAAjB,OACJ+mG,EACE,eAACN,GAAD,CAA6BrqG,GAAE,OAAEojC,QAAF,IAAEA,OAAF,EAAEA,EAAyBpjC,GAA1D,SACGyD,IAAK,OAAI2/B,QAAJ,IAAIA,OAAJ,EAAIA,EAAyBpjC,MAGrCyD,IAGN,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,WAGZ,CAAConG,IAEH,OACE,eAAChoG,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,8BACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMm/B,GACFngC,KDxBRiB,KAAMomG,GACNlmG,OLba,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ2lG,IAClB7lG,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAAC0lG,GAAD,CAA6B1pG,MAAOA,OKPxCc,OAAQgpG,I,GEnBNzrG,aAAkB,CACpBC,OAAQ6mD,GAAc7mD,OACtBE,QAAS2mD,GAAc3mD,UAJV0rG,G,GAAbxrG,YACWyrG,G,GAAXvrG,UCIawrG,GANezvF,aAAa,CACzC3b,KAAM,kBACNN,YAAawrG,GACbrnG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,K,GCFvD1E,aAAkB,CAChBC,OAAQgoD,GAAgBhoD,OACxBE,QAAS8nD,GAAgB9nD,UAHD6rG,G,GAAb3rG,YAAwC4rG,G,GAAX1rG,U,GCGxCP,aAAkB,CACpBC,OAAQ6nD,GAAwB7nD,OAChCE,QAAS2nD,GAAwB3nD,UAJpB+rG,G,GAAb7rG,YACW8rG,G,GAAX5rG,UCWa6rG,GAdkB3rG,eAASC,MAAM,CAC9CO,GAAIL,eACDC,MAAM,MACNC,WACAI,IAAI,IACJsW,WAAU,SAACpB,GAAD,MAAO,UAAGA,GAAIqB,iBAC3BC,YAAa9W,eAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnDib,WAAY3a,eAAON,WAAWO,SAAQ,GACtCgrG,6BAA8BzrG,eAC3BC,MAAM,4CACNK,IAAI,GACPorG,eAAgB1rG,eAASC,MAAM,oBAAoBK,IAAI,KCwBzD,SAASqrG,GAAT,GAA4C,IAAV5qG,EAAS,EAATA,MACxBC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAD,CACEvB,KAAK,cACLE,MAAM,cACNwB,UAAU,iBACVD,aAAa,YAInB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,iBACLE,MAAM,mBACNwB,UAAU,uBAIhB,eAACN,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,+BACLE,MAAM,uCACNwB,UAAU,4BAMpB,eAACU,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBCrFS,SAAS4qG,GAAT,GAAmD,IAAjBvrG,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACnD,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,oCAAD,OAAsCpC,IAFtD,SAIGkC,GAAYlC,ICNnB,IAOewrG,GAPkBnwF,aAAa,CAC5C3b,KAAM,qBACNN,YAAa6rG,GACb1nG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE2P,YAAc,IAAM3P,EAAE9G,GAAK,OCJ7C,IAMeyrG,GANuBj+F,aAAkB,CACtD9N,KAAM,qBACNN,YAAa6rG,GACb1nG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,KCoB5CioG,GAlBY,CAEzBppG,IAAKukD,GAAwBvkD,IAE7BpD,QAAS2nD,GAAwB3nD,QACjCsD,UAAWqkD,GAAwB7nD,OAAOwD,UAE1CC,OAAQyoG,GACRxoG,OAAQuoG,GAERtoG,MCTa,YAMX,IALF+jD,EAKC,EALDA,qBAKC,IAJDilD,8BAIC,cAHD7oG,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,cAAe,mBAAoB,wBAElD,EADEC,EACF,wFACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBkjD,EAA3B,EAAUhjD,IAAOC,SAAjB,OACJ+nG,EACE,eAACJ,GAAD,CAAwBvrG,GAAE,OAAE2mD,QAAF,IAAEA,OAAF,EAAEA,EAAoB3mD,GAAhD,SACGyD,IAAK,OAAIkjD,QAAJ,IAAIA,OAAJ,EAAIA,EAAoB3mD,MAGhCyD,IAGN,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,iBACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,uBACJmD,OAAQ,uBACRC,SAAU,+BACVC,OAAQS,KACRP,OAAQ,WAGZ,CAACooG,IAEH,OACE,eAAChpG,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,yBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAM0iD,GACF1jD,KD7CRyF,YAAagjG,GACbxnG,KAAMsnG,GACNpnG,OJVa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ2mG,IAClB7mG,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAAC4mG,GAAD,CAAwB5qG,MAAOA,OIVnCc,OAAQgqG,IERKI,GAZUpsG,eAASC,MAAM,CACtCO,GAAIL,eACDC,MAAM,MACNC,WACAI,IAAI,IACJsW,WAAU,SAACpB,GAAD,MAAO,UAAGA,GAAIqB,iBAC3BC,YAAa9W,eAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnDgsG,gBAAiBlsG,eAASC,MAAM,eAAeK,IAAI,KACnD6a,WAAY3a,eAAON,WAAWO,SAAQ,GACtC0rG,mBAAoBnsG,eAASC,MAAM,wBAAwBK,IAAI,IAAIJ,aC+BrE,SAASksG,GAAT,GAAoC,IAAVrrG,EAAS,EAATA,MAChBC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAD,CACEvB,KAAK,cACLE,MAAM,cACNwB,UAAU,iBACVD,aAAa,YAInB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAWq4C,SAAZ,CACE55C,KAAK,kBACLE,MAAM,mBACNwB,UAAU,iBACVD,aAAa,MACbo4C,QAAS,QAIf,eAACz4C,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,qBACLE,MAAM,uBACN6B,GAAIiqG,GAAmBlqG,kBAMjC,eAACM,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBC1FS,SAASqrG,GAAT,GAA2C,IAAjBhsG,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACnC6kD,EAAeikD,GAAc,CAAEhrG,OAA/B+mD,WAER,OAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAY/mD,IAGf,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,SAIE,eAAC,OAAD,CACE7G,UAAU,aACVe,GAAI,CAAEC,SAAS,0BAAD,OAA4BpC,IAF5C,SAIGkC,IAAQ,OAAI6kD,QAAJ,IAAIA,OAAJ,EAAIA,EAAYtwC,iBAXH,sCCL9B,IAOew1F,GAPU5wF,aAAa,CACpC3b,KAAM,aACNN,YAAa2rG,GACbxnG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE2P,YAAc,IAAM3P,EAAE9G,GAAK,OCC7C,IAkBeksG,GAlBI,CAEjB5pG,IAAK0kD,GAAgB1kD,IAErBpD,QAAS8nD,GAAgB9nD,QACzBsD,UAAWwkD,GAAgBhoD,OAAOwD,UAElCC,OAAQuoG,GACRtoG,OAAQqoG,GAERpoG,MCXa,YAMX,IALFmkD,EAKC,EALDA,YAKC,IAJDqlD,sBAIC,cAHDrpG,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,cAAe,eAAgB,oBAE9C,EADEC,EACF,uEACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBsjD,EAA3B,EAAUpjD,IAAOC,SAAjB,OACJuoG,EACE,eAACH,GAAD,CAAgBhsG,GAAE,OAAE+mD,QAAF,IAAEA,OAAF,EAAEA,EAAY/mD,GAAhC,SACGyD,IAAK,OAAIsjD,QAAJ,IAAIA,OAAJ,EAAIA,EAAY/mD,MAGxByD,IAGN,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,kBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,eACJmD,OAAQ,eACRC,SAAU,qBACVC,OAAQqoG,GAAmBjjG,YAC3BlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAmBQ,KAApB,CAAyBjE,GAAIyD,SAGtD,CAAC0oG,IAEH,OACE,eAACxpG,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,eACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAM8iD,GACF9jD,KD5CRyF,YEda,YAA4C,IAAXwZ,EAAU,EAAVA,OACtC0tB,EAAgB1tB,EAAhB0tB,YAEF96B,EADkBk2F,KAAhBjkD,YAELvjD,QAAO,SAAC8kC,GAAD,OAAwB,IAAjBA,EAAEvtB,YAAwButB,EAAEroC,KAAO2vC,KACjDppC,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEhV,OAE5C,OAAO,eAAC,KAAD,CAA+BiiB,OAAQA,EAAQzM,QAASX,KFO/D5Q,KAAM+nG,GACN7nG,OHTa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SAKD,OAJAonG,GAAmBhpG,OAAO,CACxBiZ,QAAQ,IAIR,eAAC,KAAD,CACEpX,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQonG,IAClBtnG,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAACqnG,GAAD,CAAgBrrG,MAAOA,OGf3Bc,OAAQyqG,I,oBGHKG,GAjBe5sG,eAASC,MAAM,CAC3CO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,GACxCwW,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,IAC1D6a,WAAY3a,eAAON,WAAWO,SAAQ,GACtCisG,gBAAiBlsG,eAAON,WAAWO,SAAQ,GAC3CksG,yBAA0BnsG,eAAON,WAAWO,SAAQ,GACpDmsG,8BAA+BpsG,eAAON,WAAWO,SAAQ,GACzDosG,sBAAuBrsG,eAAON,WAAWO,SAAQ,GACjDqsG,kBAAmBtsG,eAAON,WAAWO,SAAQ,GAC7CssG,sBAAuBvsG,eAAON,WAAWO,SAAQ,GACjD2mD,WAAYpnD,eAASC,MAAM,eAAeC,WAAWI,IAAI,IACzD0sG,aAAchtG,eAASC,MAAM,iBAAiBK,IAAI,GAClD2xD,aAAcjyD,eAASC,MAAM,iBAAiBK,IAAI,GAClDi5F,YAAav5F,eAASC,MAAM,gBAAgBK,IAAI,GAChD2sG,UAAWjtG,eAASC,MAAM,cAAcK,IAAI,KC2B9C,SAAS4sG,GAAT,GAAyC,IAAVnsG,EAAS,EAATA,MAAS,EACRE,eAAtBD,EAD8B,EAC9BA,WAAY8X,EADkB,EAClBA,MAEdg0F,EAAoBh0F,EAAM,qBAC1Bi0F,EAAwBj0F,EAAM,yBAGpC,OADA5X,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLE,MAAM,aACNuB,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAI9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,cACLE,MAAM,cACNuB,aAAa,YAKnB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,QAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,0BACLE,MAAM,4BACN6B,GAAIipG,GAAwBlpG,OAC5BwY,aAAa,QAKnB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,QAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,cACN6B,GAAIyqG,GAAW1qG,OACfwY,aAAa,QAInB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,4BACLE,MAAM,mCAKZ,eAACkB,GAAA,EAAKC,IAAN,UACI0rG,EAQA,gBAACrrB,GAAA,EAAD,CAAMhgF,UAAW,OAAjB,UACE,eAACggF,GAAA,EAAKj+E,OAAN,UACE,eAAC,KAAW9B,MAAZ,CACE3B,KAAK,oBACLE,MAAM,sBAGV,gBAACwhF,GAAA,EAAK54E,KAAN,WACE,gBAAC1H,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,eACLE,MAAM,gBACN6B,GAAI+F,SAGR,eAACxG,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,uBACLE,MAAM,iBACN6B,GAAIE,KACJqY,aAAa,MAGjB,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,cACLE,MAAM,eACN6B,GAAIqS,YAKV,eAAChT,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,gCACLE,MAAM,2CAKZ,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,kBACLE,MAAM,8BArDhB,eAACoB,EAAA,EAAD,UACE,eAAC,KAAWK,MAAZ,CACE3B,KAAK,oBACLE,MAAM,wBA2Dd,eAACkB,GAAA,EAAKC,IAAN,UACI2rG,EAQA,gBAACtrB,GAAA,EAAD,CAAMhgF,UAAW,OAAjB,UACE,eAACggF,GAAA,EAAKj+E,OAAN,UACE,eAAC,KAAW9B,MAAZ,CACE3B,KAAK,wBACLE,MAAM,2BAGV,gBAACwhF,GAAA,EAAK54E,KAAN,WACE,eAAC1H,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,wBACLE,MAAM,qBAIZ,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,wBACLE,MAAM,cACN6B,GAAIqpG,eA5Bd,eAAC9pG,EAAA,EAAD,UACE,eAAC,KAAWK,MAAZ,CACE3B,KAAK,wBACLE,MAAM,kCAmClB,eAACkC,EAAA,EAAD,CACEV,UAAW,OACXW,QAAQ,UACRC,QAAS,WACPrB,KAJJ,uB,OCrNF5B,aAAkB,CACpBC,OAAQykC,GAAqBzkC,OAC7BE,QAASukC,GAAqBvkC,UAJjB4tG,G,GAAb1tG,YACW2tG,G,GAAXztG,UCAa,SAAS0tG,GAAT,GAAgD,IAAjBhtG,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACxCshC,EAAoBupE,GAAmB,CAAE/sG,OAAzCwjC,gBAER,OAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAiBxjC,IAGpB,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,SAIE,eAAC,OAAD,CACE7G,UAAU,aACVe,GAAI,CAAEC,SAAS,gCAAD,OAAkCpC,IAFlD,SAIGkC,IAAQ,OAAIshC,QAAJ,IAAIA,OAAJ,EAAIA,EAAiB/sB,iBAXH,sCCLnC,IAOew2F,GAPe5xF,aAAa,CACzC3b,KAAM,kBACNN,YAAa0tG,GACbvpG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE2P,YAAc,IAAM3P,EAAE9G,GAAK,OCF9B,SAASktG,GAAT,GAAiD,IAAXjrF,EAAU,EAAVA,OAC3C0tB,EAAgB1tB,EAAhB0tB,YAEF96B,EADuBi4F,KAArBvpE,iBAELhgC,QAAO,SAAC8kC,GAAD,OAAwB,IAAjBA,EAAEvtB,YAAwButB,EAAEroC,KAAO2vC,KACjDppC,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEhV,OAE5C,OAAO,eAAC,KAAD,CAA+BiiB,OAAQA,EAAQzM,QAASX,ICLjE,IAkBes4F,GAlBS,CAEtB7qG,IAAKmhC,GAAqBnhC,IAE1BpD,QAASukC,GAAqBvkC,QAC9BsD,UAAWihC,GAAqBzkC,OAAOwD,UAEvCC,OAAQsqG,GACRrqG,OAAQoqG,GAERnqG,MCPa,YAYX,IAXF4gC,EAWC,EAXDA,iBAWC,IAVD6pE,2BAUC,cATDtqG,WASC,EARDC,eAQC,MARQ,CACP,KACA,cACA,aACA,4BACA,eAGD,EADEC,EACF,iFACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB+/B,EAA3B,EAAU7/B,IAAOC,SAAjB,OACJwpG,EACE,eAACJ,GAAD,CAAqBhtG,GAAE,OAAEwjC,QAAF,IAAEA,OAAF,EAAEA,EAAiBxjC,GAA1C,SACGyD,IAAK,OAAI+/B,QAAJ,IAAIA,OAAJ,EAAIA,EAAiBxjC,MAG7ByD,IAGN,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,aACJmD,OAAQ,aACRC,SAAU,aAEZ,CACEpD,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQ6oG,GAAWzjG,YACnBlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAWQ,KAAZ,CAAiBjE,GAAIyD,MAE5C,CACEzD,GAAI,4BACJmD,OAAQ,4BACRC,SAAU,0BACVC,OAAQqnG,GAAwBjiG,YAChClF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAwBQ,KAAzB,CAA8BjE,GAAIyD,SAG3D,CAAC2pG,IAEH,OACE,eAACzqG,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,oBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMu/B,GACFvgC,KD5DRyF,YAAaykG,GACbjpG,KAAM+oG,GACN7oG,OLJa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ4nG,IAClB9nG,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAACmoG,GAAD,CAAqBnsG,MAAOA,OKhBhCc,OAAQyrG,IETKI,GAXwB7tG,eAASC,MAAM,CACpDshD,SAAUphD,eAASC,MAAM,YAAYC,WAAWI,IAAI,IACpDwW,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,KAC1D6a,WAAY3a,eAAON,WAAWO,SAAQ,GACtCktG,yBAA0BntG,eAAON,WAAWO,SAAQ,GACpDmtG,mBAAoBjlF,eAAS1oB,MAAM,wBACnCwvB,MAAOzvB,eAASC,MAAM,SAASK,IAAI,GACnCqJ,KAAM3J,eAASC,MAAM,gBAAgBK,IAAI,GACzCutG,OAAQ7tG,eAASC,MAAM,UAAUK,IAAI,MC8BvC,SAASwtG,GAAT,GAAkD,IAAV/sG,EAAS,EAATA,MAC9BC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACIP,EAOE,KANF,eAAC,KAAD,CACEhB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAInB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAI9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CAAY7B,KAAK,WAAWE,MAAM,WAAWuB,aAAa,YAI9D,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAW+3C,SAAZ,CACE55C,KAAK,cACLE,MAAM,cACNwB,UAAU,iBACVD,aAAa,MACbo4C,QAAS,QAKf,gBAACz4C,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,QACLE,MAAM,gBACN6B,GAAI+F,SAGR,eAACxG,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,OACLE,MAAM,eACN6B,GAAIqS,SAGR,eAAC9S,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,SACLE,MAAM,SACN6B,GAAIi5C,GACJ1gC,aAAa,SAKnB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,qBACLE,MAAM,wCACNwB,UAAU,iBACVD,aAAa,MACbkT,YAAY,4CAIlB,eAACvT,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,2BACLE,MAAM,sDAMhB,eAACkC,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,WACPrB,KAHJ,uBC5HS,SAAS+sG,GAAT,GAIX,IAHF1tG,EAGC,EAHDA,GACAkC,EAEC,EAFDA,SACAF,EACC,EADDA,QAEA,OAAKhC,EAGH,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,SAIGjG,EACC,eAACF,EAAA,EAAD,CAAQC,QAAQ,OAAOC,QAAS,kBAAMA,EAAQhC,IAA9C,SACGkC,GAAYlC,IAGf,eAAC,OAAD,CACEoB,UAAU,aACVe,GAAI,CAAEC,SAAS,2CAAD,OAA6CpC,IAF7D,SAIGkC,GAAYlC,MAhBL,sC,4CCIH,SAAS2tG,GAAT,GAOX,IANFhqE,EAMC,EANDA,0BAMC,IALDiqE,oCAKC,SAJD5rG,EAIC,EAJDA,QAIC,KAHDc,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,WAAY,cAAe,QAAS,QAEnD,EADEC,EACF,6GACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBmgC,EAA3B,EAAUjgC,IAAOC,SAAjB,OACJgqG,EACE,eAACF,GAAD,CACE1tG,GAAE,OAAE4jC,QAAF,IAAEA,OAAF,EAAEA,EAA0B5jC,GAC9BgC,QAASA,EAFX,SAIGyB,IAAK,OAAImgC,QAAJ,IAAIA,OAAJ,EAAIA,EAA0B5jC,MAGtCyD,IAGN,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,YACJmD,OAAQ,YACRC,SAAU,qBAAG0X,WAA+B,SAAM,MAEpD,CACE9a,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVC,OAAQqF,KACRnF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACwC,GAAA,EAAD,CAAkBjG,GAAIyD,MAE7C,CACEzD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQ2Q,KACRzQ,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACsQ,GAAA,EAAD,CAAiB/T,GAAIyD,SAG9C,CAACmqG,EAA8B5rG,IAEjC,OACE,eAACW,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,cACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAM2/B,EACN9Y,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,IAC1B,OAAIlgB,QAAJ,IAAIA,OAAJ,EAAIA,EAAKC,SAASkX,YACT,CACL1Z,UAAW,gBAEH,KAEV4B,I,OCxFNjE,aAAkB,CACpBC,OAAQ6kC,GAA8B7kC,OACtCE,QAAS2kC,GAA8B3kC,UAJ1B2uG,G,GAAbzuG,YACW0uG,G,GAAXxuG,UCoBayuG,GAhBkB,CAE/BzrG,IAAKuhC,GAA8BvhC,IAEnCpD,QAAS2kC,GAA8B3kC,QACvCsD,UAAWqhC,GAA8B7kC,OAAOwD,UAEhDC,OAAQqrG,GACRprG,OAAQmrG,GAERlrG,SACAsB,KAAMypG,GACNvpG,OJPa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ6oG,IAClB/oG,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAAC+oG,GAAD,CAA8B/sG,MAAOA,QKtBrCkvC,GAAqB,CACzBC,SAAU,gBAAGpsC,EAAH,EAAGA,MAAH,OACR,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,cAAD,OAAgBqB,IAC9BsD,OAAO,SACP+oC,IAAI,sBAJN,SAMGrsC,M,OCbH1E,aAAkB,CACpBC,OAAQ+kC,GAAc/kC,OACtBE,QAAS6kC,GAAc7kC,QACvB2wB,QAAS,SAAC7vB,GACR,IAAM8uC,EAAShd,aAAW9xB,GAC1B,OAAkB,IAAX8uC,OAAe/+B,EAAY++B,GAEpClf,OAAQ,CACN/mB,IAAK,QACLpF,MAAO,MAZIuqG,G,GAAb5uG,YACW6uG,G,GAAX3uG,UACqB4uG,G,GAArB38E,oBCsBa48E,GApBE,CAEf7rG,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQwrG,GACRvrG,OAAQsrG,GACRhhE,UAAWkhE,GAEXvrG,MFMa,YAaX,IAZF0gC,EAYC,EAZDA,UAYC,IAXD+qE,oBAWC,SAVWn+D,EAUX,EAVDntC,WAUC,IATDC,cASC,MATQ,CACP,WACA,cACA,eACA,eACA,kBACA,4BAGD,EADEC,EACF,mEACKF,EAAaI,mBACjB,8BAAC,eAAW0sC,IAAuBK,KACnC,CAACA,IAGGhtC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBqgC,EAA3B,EAAUngC,IAAOC,SAAjB,OACJwqG,EACE,eAAClE,GAAD,CAAcp7F,WAAU,OAAEg1B,QAAF,IAAEA,OAAF,EAAEA,EAAUh1B,WAAY9O,GAAE,OAAE8jC,QAAF,IAAEA,OAAF,EAAEA,EAAU9jC,GAA9D,SACGyD,IAAK,OAAIqgC,QAAJ,IAAIA,OAAJ,EAAIA,EAAUq8D,YAAnB,OAA+Br8D,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAU9jC,MAG5CyD,IAGN,CACEzD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,OACRC,KAAMV,EAAW+sC,UAEnB,CACE7vC,GAAI,eACJmD,OAAQ,eACRC,SAAU,aACV6V,gBAAgB,EAChBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAGzC,CACEzD,GAAI,eACJmD,OAAQ,eACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAGimG,aAAmC,SAAM,KACtDhmG,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACuU,GAAA,EAAD,CAAUhY,GAAIyD,EAAOwU,QAAQ,KAClD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,iBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACuU,GAAA,EAAD,CAAUhY,GAAIyD,EAAOwU,QAAQ,KAClD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,2BACJmD,OAAQ,wBACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnC/kB,KAAM,gBAAoBsgC,EAApB,EAAGngC,IAAOC,SAAV,OACI,OAARkgC,QAAQ,IAARA,OAAA,EAAAA,EAAUuqE,cACV,QACS,OAARvqE,QAAQ,IAARA,OAAA,EAAAA,EAAUwqE,iBAAV,OAA2BxqE,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAUuqE,oBAG5C,CAACvrG,EAAYsrG,IAEf,OACE,eAACzrG,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,YACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMq/B,GACFrgC,KErGRiB,KAAMimG,GACN/lG,O5Cba,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,gBAAMD,EAAN,2BACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ+pG,IAClBjqG,WAAYA,EACZI,aAAW,EAXb,SAaE,eAACglG,GAAD,CAAchpG,MAAOA,EAAO0D,OAAQA,O4CLxC+oG,gBAAiBA,GACjBY,yBAA0BA,GAC1BrD,wBAAyBA,ICZZ,SAAS8D,GAAT,GAgBX,IAfFxqG,EAeC,EAfDA,KAeC,IAdDjB,cAcC,MAdQ,CACP,cACA,UACA,YACA,SACA,SACA,WACA,OACA,WACA,oBACA,yBACA,WAGD,EADEC,EACF,kCACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,kBACVC,OAAQ6pG,GACR3pG,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACupG,GAAD,CAAqBhtG,GAAIyD,EAAzB,SAAiCA,MAGrC,CACEzD,GAAI,4BACJmD,OAAQ,4BACRC,SAAU,0BACVC,OAAQonG,GACRlnG,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC4mG,GAAD,CAA6BrqG,GAAIyD,EAAjC,SACGA,MAIP,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACy3D,GAAD,CAAal7D,GAAIyD,EAAjB,SAAyBA,MAEhD,CACEzD,GAAI,YACJmD,OAAQ,YACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,kBAA8B,KAA9B,EAAGqrG,QAAgC,SAAM,KACnDprG,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,UACJmD,OAAQ,UACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAGsrG,UAA6B,SAAM,KAChDrrG,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,SACJmD,OAAQ,SACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,qBAAGurG,QAAyB,SAAM,KAC5CtrG,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,SACJmD,OAAQ,SACRC,SAAU,iBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASgrG,gBAAkBpe,IAGhB,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASirG,cAAgBre,IAGd,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,mBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASkrG,kBAAoBte,IAGlB,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,OACJmD,OAAQ,OACRC,SAAU,aACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASmrG,YAAcve,IAGZ,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,WACJmD,OAAQ,WACRC,SAAU,gBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASorG,eAAiBxe,IAGf,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,yBACJmD,OAAQ,yBACRC,SAAU,qBAAG6rG,mBAAH,EAAuBC,eAEjCroF,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAYfshC,EAZc,EAAX9jE,KAYUO,QAXH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAExC57D,WAAWjxB,EAAIC,SAASqrG,oBACxBr6E,WAAWjxB,EAAIC,SAASsrG,eACxB1e,IAI+B,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,cACJmD,OAAQ,cACRC,SAAU,qBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAE9C5J,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASqrG,oBAAsBze,IAGpB,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,uBACJmD,OAAQ,uBACRC,SAAU,wBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASurG,uBAAyB3e,IAGvB,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,MAIlE,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,KAE9DwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASsrG,eAAiB1e,IAGf,GAEnC,OACE,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO13B,WAAW,EAAMpwC,SAAU,SAKpE,IAEF,OACE,eAAC/lB,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,oBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMA,EACN+mB,iBAAe,EACfF,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,IAE1B,OAAIlgB,QAAJ,IAAIA,OAAJ,EAAIA,EAAKC,UACqB,OAArB,OAAHD,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAewrG,MACV,CAAEhuG,UAAW,cAES,KAA1B,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASmrG,aACiB,KAA5B,OAAHprG,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASirG,eACkB,KAA7B,OAAHlrG,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASorG,eAEP,IAEJ,OAAHrrG,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASgrG,iBACX,OAAHjrG,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASmrG,aAAd,OAA2BprG,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAKC,SAASirG,cAElC,CAAEztG,UAAW,kBAEjB,OAAHuC,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASgrG,mBACX,OAAHjrG,QAAG,IAAHA,OAAA,EAAAA,EAAKC,SAASmrG,aAAd,OAA2BprG,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAKC,SAASirG,cAElC,CAAEztG,UAAW,iBAEb,CACLA,UAAW,qBArBjB,EAAoB,IAAD,IA0BjB4B,ICtVK,SAASqsG,GAAT,GAAgE,IAAtCntG,EAAqC,EAArCA,SAAUC,EAA2B,EAA3BA,GAAIf,EAAuB,EAAvBA,UAAc4B,EAAS,8CACtE2mB,EAAU,8CAA0CvoB,GAEpDqY,EAAO,SAAC,GAAgC,IAA9BtX,EAA6B,EAA7BA,GAAID,EAAyB,EAAzBA,SAAac,EAAY,kCAC3C,OAAIb,EAEA,eAAC,OAAD,yBAAMA,GAAIA,GAAQa,GAAlB,aACGd,KAGIwD,IAAE6L,SAASrP,GACb,8CAAOc,GAAP,aAAed,UADjB,GAKT,OACE,qBAAId,UAAU,OAAd,SACE,eAACqY,EAAD,yBAAMtX,GAAIA,EAAIf,UAAWuoB,GAAgB3mB,GAAzC,aACGd,OCjBM,SAASotG,GAAT,GAA2C,IAAbptG,EAAY,EAAZA,SAC3C,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,aAAnB,uBACA,eAACktG,GAAD,CAAgBltG,GAAG,iBAAnB,0BACA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,+BAAnB,+BAGA,eAACktG,GAAD,CAAgBltG,GAAG,mCAAnB,kCAGA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,yCAAnB,yCAGA,eAACktG,GAAD,CAAgBltG,GAAG,6CAAnB,2CAGA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,wBAAnB,wBACCD,KChBQ,SAASqtG,KACtB,IAAMvvG,EAAKgyC,SAASC,eAAYjyC,IADK,EAEImuG,GAAS1rG,OAAO,CACvDzC,KACA2b,QAAQ,IAFFmoB,EAF6B,EAE7BA,SAAUz0B,EAFmB,EAEnBA,UAAWG,EAFQ,EAERA,QAIvBtH,EAAK,mBACD,OAAR47B,QAAQ,IAARA,OAAA,EAAAA,EAAUrtB,aAAc,KAAOqtB,EAAS9jC,GAAK,IAAM8jC,EAASrtB,YAAc,IAPvC,EAUK9B,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DmE,EAV6B,EAU7BA,QAAS+oB,EAVoB,EAUpBA,qBAEX6Q,EAAYzvC,mBAAQ,WACxB,IAAI87B,EAAS,GAGb,OAFA,OAAI8E,QAAJ,IAAIA,OAAJ,EAAIA,EAAU0rE,WAASxwE,EAASA,EAAOzrB,OAAP,OAAcuwB,QAAd,IAAcA,OAAd,EAAcA,EAAU0rE,WACxD,OAAI1rE,QAAJ,IAAIA,OAAJ,EAAIA,EAAU2rE,eAAazwE,EAASA,EAAOzrB,OAAP,OAAcuwB,QAAd,IAAcA,OAAd,EAAcA,EAAU2rE,cACrDzwE,IACN,QAAC8E,QAAD,IAACA,OAAD,EAACA,EAAU0rE,QAAX,OAAoB1rE,QAApB,IAAoBA,OAApB,EAAoBA,EAAU2rE,cAEjC,OAAM3tE,GAAwB/oB,EAW5B,eAACi4B,GAAD,CACE9oC,MAAOA,EACPgpC,KAAM1hC,EAAU,aAAgBs0B,EAAkC,KAAvB,qBAC3CqN,WAAY,eAACm+D,GAAD,IAHd,SAKGxrE,EACC,uCACE,eAAC,GAAS3/B,OAAV,CACEC,OAAQ0/B,EACRz/B,SAAU,SAACy/B,GAAD,OAAcz0B,EAAUy0B,IAClCx/B,WAAYkL,KAAasyB,GAAwB/oB,KAEnD,eAAC,GAAD,CAAcytF,OAAQ1iE,IAEtB,eAAC0qE,GAAD,CAAqBxqG,KAAM2uC,EAAWnjC,QAASA,OAE/C,OAzBJ,eAACwhC,GAAD,CACE9oC,MAAM,gBACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CCpBb,IAAMw+D,GAAmB,CACvB7/D,SAAU,gBAAGpsC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,EAAnB,SAA2BA,MAGhDksG,GAAqB,GAC3BA,GAAmB7xF,KAAK,CAAEle,MAAO,OAAU6D,MAAO,KAClDksG,GAAmB7xF,KAAK,CAAEle,MAAO,oBAAqB6D,MAAO,MAC7DksG,GAAmB7xF,KAAK,CAAEle,MAAO,0BAA2B6D,MAAO,MAEnE,IAAMmsG,GAAwB,GAKf,SAASC,KAAiB,IAAD,EACJ1qG,mBAAS,aADL,mBAC/B2qG,EAD+B,KACpBC,EADoB,OAER5qG,oBAAS,GAFD,mBAE/BqK,EAF+B,KAEtBqjC,EAFsB,KAGhCm9D,EAAkBh+D,SAASowB,GAAgB,aAC3C6tC,EAAyB7tC,GAAgB,mBACzC8tC,EAAoB9tC,GAAgB,gBACpC+tC,EAAc/tC,GAAgB,UANE,EAOJj9D,mBAAS,GAPL,mBAO/BirG,EAP+B,KAOpBC,EAPoB,OAQJlrG,mBAAS,IARL,mBAQ/Bk+B,EAR+B,KAQpBitE,EARoB,OAUcnrG,mBAClDO,IAAEoN,YAAYo9F,GAAqB,GAAKA,GAXJ,mBAU/BK,EAV+B,KAUXC,EAVW,OAawBrrG,mBAC5D8qG,GAdoC,mBAa/BQ,EAb+B,KAaNC,EAbM,OAgBUvrG,mBAAS6qG,GAhBnB,mBAgB/BW,EAhB+B,KAgBbC,EAhBa,OAiBEzrG,mBACtCO,IAAEoN,YAAYq9F,GAAe,IAAMA,GAlBC,mBAiB/BU,EAjB+B,KAiBjBC,EAjBiB,KAqBhCviD,EAAUC,eACVplD,EAAW0O,cAEjBq2F,GAAShB,gBAAgBzqG,OAAO,CAC9BiZ,QAAQ,IAEVwyF,GAASzD,wBAAwBhoG,OAAO,CACtCiZ,QAAQ,IAGV,IAEMo1F,EAAe7tG,mBAAQ,WAC3B,IAAM8tG,EAAM,GAMZ,OALKtrG,IAAE+iB,MAAMunF,KAAkBgB,EAAIliG,WAAakhG,GAC3CtqG,IAAE6E,QAAQ0lG,KACbe,EAAIttE,kBAAoBusE,GACrBvqG,IAAE6E,QAAQ2lG,KAAoBc,EAAIC,aAAef,GACjDxqG,IAAE6E,QAAQ4lG,KAAca,EAAIl2F,WAAaq1F,GACvCa,IACN,CAACf,EAAwBD,EAAiBE,EAAmBC,IAM1De,EAAYnpG,uBAAY,WAC5B8qC,GAAW,GACXzpC,EAAS+kG,GAASjvG,QAAQ0O,QAAQmjG,IAC/BtkG,KAAK4jB,KACL5jB,MAAK,SAACsU,GACLuvF,EAAavvF,EAAO/c,MACpB6uC,GAAW,MAEZhmC,OAAM,WACLgmC,GAAW,MAEZhmC,MAAMgmC,GAAW,MACnB,CAACzpC,EAAU2nG,IAEdj1F,qBAAU,WACRo1F,MACC,CAACA,EAAWd,IAoBf,OACE,eAACp/D,GAAD,CAAM9oC,MArDI,kBAqDUipC,WAAY,eAACm+D,GAAD,IAAhC,SACE,gBAACn5B,GAAA,EAAD,CACEn2E,GAAG,gBACH4oG,UAAWkH,EACX5qG,SAAU,SAACyjC,GAAD,OAAOonE,EAAapnE,IAHhC,UAKE,eAAC0tC,GAAA,EAAD,CAAKC,SAAS,YAAYpuE,MAAM,YAAhC,SACE,eAAC,GAASvF,MAAV,CACE0gC,UAAWA,EACX/tB,UAAW9F,EACX1M,WAAY4sG,GACZpkF,UAAW,WACT+kF,EAAaD,EAAY,QAI/B,gBAAC/5B,GAAA,EAAD,CAAKC,SAAS,SAASpuE,MAAM,SAA7B,UACE,eAACnH,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,+BACA,eAAC,GAASylG,gBAAgB3rG,OAA1B,CACExB,GAAG,oBACHyD,MAAOgtG,EACP5pG,SAAU,SAACpD,GAAD,OAAWitG,EAA2BjtG,IAChDuW,aAAW,EACXi7E,OAAQ,CACNE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,gBAKpD,eAAC94F,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,uBACA,eAAC,GAASlG,OAAV,CACExB,GAAG,mBACHyD,MAAOktG,EACP9pG,SAAU,SAACpD,GAAD,OAAWmtG,EAAoBntG,IACzCuW,aAAW,EACXi7E,OAAQ,CACNE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,gBAKpD,gBAAC94F,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,8BACA,eAAC,KAAD,CACEhI,KAAK,SACLE,MAAM,kBACN6B,GAAG,SACHgC,MAAOmsG,GAAsBx6F,MAC3B,SAAC6pB,GAAD,OAAOA,EAAEx7B,QAAUotG,KAErBr7F,QAASo6F,GACT/oG,SAAU,SAACo4B,GAAD,OAAO6xE,EAAgB7xE,EAAEx7B,aAGvC,gBAACzC,EAAA,EAAD,CAAK+1D,GAAI,EAAT,UACE,eAACj2D,GAAA,EAAK4G,MAAN,+BACA,eAAC,KAAD,CACEhI,KAAK,cACLE,MAAM,sBACN6B,GAAG,SACHgC,MAAOksG,GAAmBv6F,MACxB,SAAC6pB,GAAD,OAAOA,EAAEx7B,QAAU8sG,KAErB/6F,QAASm6F,GACT9oG,SAAU,SAACo4B,GAAD,OAAOuxE,EAAsBvxE,EAAEx7B,gBAI/C,eAAC1C,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQE,QA9FE,WACpB,IAAImvG,EAAe,2BAA6BZ,EAC3C7qG,IAAEoN,YAAY69F,IAA0C,KAArBA,IACtCQ,EAAeA,EAAe,aAAeR,GAE5CjrG,IAAEoN,YAAY29F,IACa,KAA5BA,IAEAU,EACEA,EAAe,oBAAsBV,GACpC/qG,IAAE6E,QAAQsmG,IAAkC,KAAjBA,IAC9BM,EAAeA,EAAe,WAAaN,GAE7Cd,EAAa,aACbM,EAAaD,EAAY,GACzB7hD,EAAQzwC,KAAKqzF,IA+EH,gCCnLC,SAASC,KACAjD,GAAS1rG,SAAvB0M,UAD6B,IAAD,EAEZi/C,KAFY,uBAIMz5C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,SAA/DktB,EAJ4B,EAI5BA,qBAAsB/oB,EAJM,EAINA,QAE9B,OAAM+oB,GAAwB/oB,EAW1B,eAACi4B,GAAD,CACE9oC,MAAM,eACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,8BAZP,eAACF,GAAD,CACE9oC,MAAM,eACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CCVE,SAASmgE,KACtB,IAAMrxG,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cADkB,EAGlD23F,GAASzD,wBAAwBjoG,OAAO,CACtCzC,KACA2b,QAAQ,IAHJynB,EAF4C,EAE5CA,wBAAyB5zB,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAOVsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EAP4C,EAO5CA,qBAAsB/oB,EAPsB,EAOtBA,QAE9B,OAAM+oB,GAAwB/oB,EAW5B,eAACi4B,GAAD,CAAM9oC,MAAM,4BAA4BipC,WAAY,eAACm+D,GAAD,IAApD,SACGlsE,EACC,uCACE,eAAC,GAASsnE,wBAAwBvmG,OAAlC,CACEzD,OAAO,EACP0D,OAAQg/B,EACR9tB,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQpjE,OAGxB,yEAvBF,eAAC4N,GAAD,CACE9oC,MAAM,4BACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CFCb0+D,GAAsB9xF,KAAK,CAAEle,MAAO,OAAU6D,MAAO,KACrDmsG,GAAsB9xF,KAAK,CAAEle,MAAO,SAAU6D,MAAO,MACrDmsG,GAAsB9xF,KAAK,CAAEle,MAAO,WAAY6D,MAAO,M,cGnBxC,SAAS6tG,KAAgC,IAAD,EACzBnsG,oBAAS,GADgB,mBAC9C42C,EAD8C,KACtCjhB,EADsC,OAGnDqzE,GAASzD,wBAAwBhoG,OAAO,CACtCiZ,QAAQ,IAFJwnB,EAF6C,EAE7CA,0BAA2B3zB,EAFkB,EAElBA,QAASiD,EAFS,EAETA,MAItCzO,EAAOd,mBAAQ,WACnB,OAAOigC,EAA0B5/B,QAAO,SAACuD,GACvC,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQ5Y,IACZ,OACE,gBAAC6N,GAAD,CACE9oC,MAAM,8BACNipC,WAAY,eAACm+D,GAAD,IAFd,UAIE,gBAACjjE,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAASinG,wBAAwB/nG,MAAlC,CACEwgC,0BAA2Bn/B,EAC3BsR,UAAW9F,EACX8b,UAAW7Y,OC1CJ,SAASi/F,KAA8B,IAC5CviG,EAAcu7F,GAAwBjoG,SAAtC0M,UAD2C,EAE3Bi/C,KAAfE,EAF0C,oBAGnD,OACE,eAACtd,GAAD,CACE9oC,MAAM,8BACNipC,WAAY,eAACm+D,GAAD,IAFd,SAIE,eAAC,GAAwBnrG,OAAzB,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAAC++B,GAAD,OACRj0B,EAAUi0B,GAAyB32B,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACtCsuD,EAAY,0CAAD,OAA2CtuD,YCVnD,SAAS2xG,KAAkC,IAClDh9C,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC+8C,GAAD,MAEF,eAAC,KAAD,CAAO/8C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC08C,GAAD,MAEF,eAAC,KAAD,CAAOvR,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC28C,GAAD,SAhBF,eAACtgE,GAAD,CACE9oC,MAAM,8BACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CCfE,SAAS0gE,GAAT,GAIX,IAHFpiG,EAGC,EAHDA,QACAnL,EAEC,EAFDA,SACAu/B,EACC,EADDA,yBAEA,OACE,qCACGA,EACC,uCACE,eAAC,GAASmqE,yBAAyB5pG,OAAnC,CACEzD,OAAO,EACP0D,OAAQw/B,EACRtuB,UAAW9F,EACXnL,SAAUA,IAGZ,eAAC,GAAD,CAAcmiG,OAAQ5iE,OAGxB,2ECfO,SAASiuE,KACtB,IAAM7xG,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cADuB,EAGvD23F,GAASJ,yBAAyBtrG,OAAO,CACvCzC,KACA2b,QAAQ,IAHJioB,EAFiD,EAEjDA,yBAA0Bp0B,EAFuB,EAEvBA,QAASH,EAFc,EAEdA,UAFc,EAOfsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EAPiD,EAOjDA,qBAAsB/oB,EAP2B,EAO3BA,QAE9B,OAAM+oB,GAAwB/oB,EAW5B,eAACi4B,GAAD,CACE9oC,MAAM,8BACNipC,WAAY,eAACm+D,GAAD,IAFd,SAIE,eAACsC,GAAD,CACEhuE,yBAA0BA,EAC1Bp0B,QAASA,EACTnL,SAAU,SAACD,GACTiL,EAAUjL,QAjBd,eAAC4sC,GAAD,CACE9oC,MAAM,8BACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CChBE,SAAS4gE,KAAiC,IAAD,EAC1B3sG,oBAAS,GADiB,mBAC/C42C,EAD+C,KACvCjhB,EADuC,OAEjBqzE,GAASJ,yBAAyBrrG,OACrE,CACEiZ,QAAQ,IAFJ1J,EAF8C,EAE9CA,SAAUzC,EAFoC,EAEpCA,QAASiD,EAF2B,EAE3BA,MAMrBzO,EAAOd,mBAAQ,WACnB,OAAO+O,EAAS1O,QAAO,SAACuD,GACtB,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQ9pC,IAEZ,OACE,gBAAC++B,GAAD,CACE9oC,MAAM,+BACNipC,WAAY,eAACm+D,GAAD,IAFd,UAIE,gBAACjjE,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAASsqG,yBAAyBprG,MAAnC,CACEghC,0BAA2B3/B,EAC3BsR,UAAW9F,EACX8b,UAAW7Y,OChDJ,SAASs/F,GAAT,GAIX,IAHFviG,EAGC,EAHDA,QACAnL,EAEC,EAFDA,SACAD,EACC,EADDA,OAEA,OACE,qCACE,eAAC,GAAS2pG,yBAAyB5pG,OAAnC,CACEzD,OAAO,EACP0D,OAAQA,EACRkR,UAAW9F,EACXnL,SAAUA,MCLH,SAAS2tG,KACtB,IAAMtuE,EAAoBtpB,OAAO63B,eAAYjyC,IAAIwW,cACzCgtB,EAAoB2qE,GAAShB,gBAAgB1qG,OAAO,CAC1DzC,GAAI0jC,EACJ/nB,QAAQ,IAFF6nB,gBAFgD,EAOzB2qE,GAASJ,yBAAyBtrG,OAAO,CACtEkZ,QAAQ,IADFnM,EAPgD,EAOhDA,QAASL,EAPuC,EAOvCA,UAPuC,EAUhCi/C,KAAfE,EAV+C,sBAWd35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EAXgD,EAWhDA,qBAAsB/oB,EAX0B,EAW1BA,QAE9B,OAAM+oB,GAAwB/oB,EAW5B,eAACi4B,GAAD,CACE9oC,MAAM,8BACNipC,WAAY,eAACm+D,GAAD,IAFd,SAIG9rE,EACC,eAACuuE,GAAD,CACE3tG,OAAQ,CAAEs/B,kBAAmBA,GAC7Bl0B,QAASA,EACTnL,SAAU,SAACm/B,GAAD,OACRr0B,EAAUq0B,GAAiB/2B,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAC9BsuD,EAAY,2CAAD,OAA4CtuD,UAK7D,gEAxBF,eAACgxC,GAAD,CACE9oC,MAAM,kCACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CClBE,SAAS+gE,KAAkC,IAClDt9C,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,YAAX,SACE,eAACq9C,GAAD,MAEF,eAAC,KAAD,CAAOr9C,KAAI,UAAKA,EAAL,QAAX,SACE,eAACk9C,GAAD,MAEF,eAAC,KAAD,CAAO/R,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACm9C,GAAD,SAhBF,eAAC9gE,GAAD,CACE9oC,MAAM,mBACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CCbE,SAASghE,GAAT,GAKX,IAJFlyG,EAIC,EAJDA,GACA6H,EAGC,EAHDA,KACAQ,EAEC,EAFDA,OACAgmF,EACC,EADDA,OACC,EAEC8f,GAASJ,yBAAyBtrG,OAAO,CACvCzC,KACA2b,QAAQ,IAHJioB,EADP,EACOA,yBAA0Bp0B,EADjC,EACiCA,QAASH,EAD1C,EAC0CA,UAD1C,EAMyCsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EANP,EAMOA,qBAAsB/oB,EAN7B,EAM6BA,QAE9B,OAAM+oB,GAAwB/oB,EAmB5B,gBAAC5Q,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQA,EACRD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SALX,UAOE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG,sBAAwBA,MAG7B,eAACmI,GAAA,EAAMK,KAAP,UACE,eAACopG,GAAD,CACEhuE,yBAA0BA,EAC1Bp0B,QAASA,EACTnL,SAAU,SAACD,GAAD,OAAYiL,EAAUjL,GAAQqI,MAAK,kBAAM4hF,eAjCvD,eAAClmF,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQA,EACRD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SALX,SAOE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG,+CCxBE,SAASmyG,GAAT,GAKX,IAJFzuE,EAIC,EAJDA,kBACA77B,EAGC,EAHDA,KACAQ,EAEC,EAFDA,OACAgmF,EACC,EADDA,OAEQl/E,EAAcg/F,GAASJ,yBAAyBtrG,OAAO,IAAvD0M,UADP,EAEyCwF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EAFP,EAEOA,qBAAsB/oB,EAF7B,EAE6BA,QAE9B,OAAM+oB,GAAwB/oB,EAmB5B,gBAAC5Q,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQA,EACRD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SALX,UAOE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG,6BAA+B0jC,MAGpC,eAACv7B,GAAA,EAAMK,KAAP,UACE,eAACupG,GAAD,CACE3tG,OAAQ,CAAEs/B,kBAAmBA,GAC7Br/B,SAAU,SAACD,GAAD,OAAY+K,EAAU/K,GAAQqI,MAAK,kBAAM4hF,eAhCvD,eAAClmF,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQA,EACRD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SALX,SAOE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,SACG,+CCbE,SAASoyG,KAAuB,IAAD,EACEjtG,oBAAS,GADX,mBACrC40F,EADqC,KACpBC,EADoB,OAEJ70F,oBAAS,GAFL,mBAErCswF,EAFqC,KAEvBC,EAFuB,OAGFvwF,qBAHE,mBAGrCktG,EAHqC,KAGtBC,EAHsB,KAKtCtyG,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cALU,EAO1C23F,GAAShB,gBAAgB1qG,OAAO,CAC9BzC,KACA2b,QAAQ,IAHJ6nB,EANoC,EAMpCA,gBAAiBh0B,EANmB,EAMnBA,QAASH,EANU,EAMVA,UAAWoD,EAND,EAMCA,MAM7Ci4F,GAAwBhoG,OAAO,CAC7BiZ,QAAQ,IAbkC,MAgBFhH,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EAhBoC,EAgBpCA,qBAAsB/oB,EAhBc,EAgBdA,QAE9B,OAAM+oB,GAAwB/oB,EAW5B,eAACi4B,GAAD,CAAM9oC,MAAM,mBAAmBipC,WAAY,eAACm+D,GAAD,IAA3C,SACG9rE,EACC,uCACE,eAAC,GAAS2pE,gBAAgBhpG,OAA1B,CACEzD,OAAO,EACP0D,OAAQo/B,EACRluB,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC+8E,GAAA,EAAD,CAAW/K,iBAAiB,IAA5B,SACE,gBAACgL,GAAA,EAAD,CAAMhgF,UAAW,OAAjB,UACE,eAAC+/E,GAAA,EAAUG,OAAX,CACE7/E,GAAIK,IACJC,QAAQ,OACRu0E,SAAS,IACTl1E,UAAW,YAJb,yBAQA,eAAC+/E,GAAA,EAAU5sB,SAAX,CAAoB+hB,SAAS,IAA7B,SACE,gBAAC8K,GAAA,EAAK54E,KAAN,WACE,eAACmlG,GAAD,CACE3pG,KAAMw/B,EAAgB+uE,WACtB/iG,QAASA,EACTxN,QAAS,SAAC2sF,GACRqL,GAAmB,GACnBsY,EAAiB3jB,MAGrB,eAAC7sF,EAAA,EAAD,CACEV,UAAW,OACXW,QAAQ,UACRC,QAAS,kBAAM0zF,GAAgB,IAHjC,sCAYR,eAAC,GAAD,CAAc8Q,OAAQhjE,IAErBu2D,EACC,eAACmY,GAAD,CACElyG,GAAIqyG,EACJhqG,OAAQ,kBAAM2xF,GAAmB,IACjC3L,OAAQ,WACN2L,GAAmB,GACnBvnF,KAEF5K,MAAM,IAEN,KAEH4tF,EACC,eAAC0c,GAAD,CACE9pG,OAAQ,kBAAMqtF,GAAgB,IAC9BrH,OAAQ,WACNqH,GAAgB,GAChBjjF,KAEF5K,MAAM,EACN67B,kBAAmB1jC,IAEnB,QAGN,gEA/EF,eAACgxC,GAAD,CACE9oC,MAAM,mBACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CC9BE,SAASshE,KAAwB,IAAD,EACjBrtG,oBAAS,GADQ,mBACtC42C,EADsC,KAC9BjhB,EAD8B,OAERqzE,GAAShB,gBAAgBzqG,OAAO,CACnEiZ,QAAQ,IADF1J,EAFqC,EAErCA,SAAUzC,EAF2B,EAE3BA,QAASiD,EAFkB,EAElBA,MAI3B07F,GAASzD,wBAAwBhoG,OAAO,CACtCiZ,QAAQ,IAGV,IAAM3X,EAAOd,mBAAQ,WACnB,OAAO+O,EAAS1O,QAAO,SAACuD,GACtB,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQ9pC,IAEZ,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,oBAAoBipC,WAAY,eAACm+D,GAAD,IAA5C,UACE,gBAACjjE,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAS0pG,gBAAgBxqG,MAA1B,CACE4gC,iBAAkBv/B,EAClBsR,UAAW9F,EACX8b,UAAW7Y,OC3CJ,SAASggG,KAAsB,IACpCtjG,EAAcg+F,GAAgB1qG,SAA9B0M,UADmC,EAEnBi/C,KAAfE,EAFkC,sBAID35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/DktB,EAJmC,EAInCA,qBAAsB/oB,EAJa,EAIbA,QAE9B,OAAM+oB,GAAwB/oB,EAW5B,eAACi4B,GAAD,CAAM9oC,MAAM,kBAAkBipC,WAAY,eAACm+D,GAAD,IAA1C,SACE,eAAC,GAAgBnrG,OAAjB,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACm/B,GAAD,OACRr0B,EAAUq0B,GAAiB/2B,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAC9BsuD,EAAY,gCAAD,OAAiCtuD,YAflD,eAACgxC,GAAD,CACE9oC,MAAM,mBACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CCTE,SAASwhE,KAAyB,IACzC/9C,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC89C,GAAD,MAEF,eAAC,KAAD,CAAO99C,KAAI,UAAKA,EAAL,QAAX,SACE,eAACy9C,GAAD,MAEF,eAAC,KAAD,CAAOtS,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC69C,GAAD,SAhBF,eAACxhE,GAAD,CACE9oC,MAAM,mBACNipC,WAAY,eAACm+D,GAAD,IACZp+D,KAAK,2CCHN,SAASyhE,GAAT,GAKH,IAAD,IAJDC,gBAIC,MAJU,QAIV,MAHDC,iBAGC,MAHW,GAGX,MAFDhrC,cAEC,MAFQ,IAER,MADDirC,kBACC,WACiC3tG,mBAASgsB,OAD1C,mBACM44B,EADN,KACiBgpD,EADjB,OAE6B5tG,mBAASgsB,OAFtC,mBAEMk6B,EAFN,KAEe2nD,EAFf,OAGiC7tG,mBAASytG,GAH1C,mBAGMK,EAHN,KAGiBC,EAHjB,OAIiD/tG,mBAAS,IAJ1D,mBAIMguG,EAJN,KAIyBC,EAJzB,OAK2CjuG,mBAAS,IALpD,mBAKMkuG,EALN,KAKsBC,EALtB,OAMyCnuG,mBAAS0iE,GANlD,mBAMM0rC,EANN,KAMqBC,EANrB,KAQKC,EAAS,CACb,CAAEp2F,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,WAC5B,CAAE/0E,MAAO,UAAW+0E,OAAQ,YAGxBshB,EAAa,WAAiB,IAAhBC,EAAe,uDAAN,EACvB9qG,EAAM,QACQ,SAAdoqG,IAAsBpqG,EAAM,QACd,QAAdoqG,IAAqBpqG,EAAM,OAC/BkqG,GAAa,SAAClnF,GACZ,OAAOsF,IAAOtF,GAAG8M,SAASg7E,EAAQ9qG,MAEpCmqG,GAAW,SAACnnF,GACV,OAAOsF,IAAOtF,GAAG8M,SAASg7E,EAAQ9qG,OAItC,IAAKnD,IAAEqa,QAAQozF,EAAmBN,GAAY,CAC5C,IAAIe,EAAqB,GAIzBP,EAAez/F,SAAQ,SAACigG,GACJ,MAAdA,EAAGtC,OACLqC,EAAmB91F,KAAnB,eAA6B+1F,IAE7BhB,EAAUiB,MAAK,SAACrwG,GACd,OAAIowG,EAAG7zG,KAAOyD,EAAMzD,KAClB4zG,EAAmB91F,KAAnB,eAA6B+1F,KACtB,SASf,IAAK,IAAIlzF,EAAI,EAAGA,EAAIkyF,EAAUx0F,OAAQsC,IAAK,CAEzC,IADA,IAAIq7B,GAAQ,EACHrc,EAAI,EAAGA,EAAIi0E,EAAmBv1F,OAAQshB,IAC7C,GAAIi0E,EAAmBj0E,GAAG3/B,KAAO6yG,EAAUlyF,GAAG3gB,GAAI,CAChDg8C,GAAQ,EACR,MAGCA,GACH43D,EAAmB91F,KAAnB,2BAA6B+0F,EAAUlyF,IAAvC,IAA2C4wF,OAAQ,OAOvD,IADA,IAAIwC,EAAgB,GACXjmG,EAAI,EAAGA,EAAI2lG,EAAOp1F,OAAQvQ,IAAK,CAEtC,IADA,IAAIkmG,EAAU,EACLr0E,EAAI,EAAGA,EAAIi0E,EAAmBv1F,OAAQshB,IAAK,CAAC,IAAD,KAC9C,UAAAi0E,EAAmBj0E,UAAnB,mBAAuBs0E,aAAvB,eAA8B52F,SAAUo2F,EAAO3lG,GAAGuP,OACpD22F,IAGJD,EAAcj2F,KAAKk2F,GAIrB,IAAK,IAAIr0E,EAAI,EAAGA,EAAIi0E,EAAmBv1F,OAAQshB,IAC7C,IAAKi0E,EAAmBj0E,GAAGs0E,MACzB,IAAK,IAAIC,GAAO,EAAGA,GAAO,GAAIA,KAAQ,CAEpC,IADA,IAAIl4D,IAAQ,EACHluC,GAAI,EAAGA,GAAI2lG,EAAOp1F,OAAQvQ,KACjC,GAAIimG,EAAcjmG,MAAOomG,GAAM,CAC7BH,EAAcjmG,MACd8lG,EAAmBj0E,GAAGs0E,MAAtB,eAAmCR,EAAO3lG,KAC1CkuC,IAAQ,EACR,MAGJ,GAAIA,GAAO,MAKjBo3D,EAAqBP,GACrBS,EAAkBM,GAGpB,IAgBIO,GAAkBd,EAAe9vG,QAAO,SAAC6wG,GAC3C,MAAsB,MAAfA,EAAI7C,UAGb,OACE,uCACE,gBAACxwG,EAAA,EAAD,CAAKK,UAAU,0BAAf,UACE,eAACJ,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,kBACRX,UAAU,OACVY,QAAS,kBAAM0xG,EAAW,IAH5B,SAKE,eAAC,KAAD,CAAkBtyG,UAAU,MAAMgH,KAAK,WAEzC,eAACtG,EAAA,EAAD,CACEC,QAAQ,kBACRX,UAAU,OACVY,QAAS,kBAAM0xG,GAAY,IAH7B,SAKE,eAAC,KAAD,CAAmBtyG,UAAU,MAAMgH,KAAK,WAE1C,eAACtG,EAAA,EAAD,CACEC,QAAQ,UACRX,UAAU,OACVY,QAAS,kBAAM+wG,EAAa5hF,QAH9B,wBASJ,eAACnwB,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAAuB,UAAdkxC,EACTpsG,SAAU,kBAAMqsG,EAAa,UAN/B,kBACM,aASN,eAAC1B,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAAuB,SAAdkxC,EACTpsG,SAAU,kBAAMqsG,EAAa,SAN/B,iBACM,YASN,eAAC1B,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAAuB,QAAdkxC,EACTpsG,SAAU,kBAAMqsG,EAAa,QAN/B,gBACM,WASN,eAAC1B,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAAuB,WAAdkxC,EACTpsG,SAAU,kBAAMqsG,EAAa,WAN/B,mBACM,mBAWV,eAAClyG,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CACEC,QAAQ,SACRC,QAAS,WACHuxG,EAAgB,KAAKC,EAAiBD,EAAgB,MAH9D,SAME,eAAC,KAAD,CAAkBnyG,UAAU,MAAMgH,KAAK,WAEzC,eAACtG,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,WACPwxG,EAAiBD,EAAgB,MAHrC,SAME,eAAC,KAAD,CAAgBnyG,UAAU,MAAMgH,KAAK,mBAK7C,gBAACrH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAACqzG,GAAD,CACEC,QAAS,EACTC,SAAU,EACVC,cAAe,EACfC,UAAW,EACX30B,KAAMmzB,EACNJ,UAAWsB,GACXpqD,UAAWA,EACXsB,QAASA,EACTwc,OAAQ0rC,EAAgB,SAG5B,gBAACvyG,EAAA,EAAD,CAAKC,GAAI,OAAT,UACE,eAACF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEozG,gBAAiB,QAAST,MAAO,SAA/C,SACG,gBAGJZ,EAAe9sG,KAAI,SAACoa,GAAO,IAAD,EACzB,OACE,gBAAC5f,EAAA,EAAD,CAEEK,UAAU,0BACVE,MAAO,CACLozG,gBAAe,UAAE/zF,EAAEszF,aAAJ,aAAE,EAAS7hB,OAC1B6hB,MAAO,SAETjyG,QAAS,kBA9IA,SAAChC,EAAI20G,GAC1B,IAAIl2B,EAAW,IACM,MAAjBk2B,EAAsBl2B,EAAW,IACX,MAAjBk2B,IAAsBl2B,EAAWq0B,EAAa,IAAM,KAG7D,IADA,IAAI8B,EAAU,GACLj0F,EAAI,EAAGA,EAAI0yF,EAAeh1F,OAAQsC,IACrC0yF,EAAe1yF,GAAG3gB,KAAOA,EAC3B40G,EAAQ92F,KAAR,2BAAkBu1F,EAAe1yF,IAAjC,IAAqC4wF,OAAQ9yB,KAE7Cm2B,EAAQ92F,KAAR,eAAkBu1F,EAAe1yF,KAGrC2yF,EAAkBsB,GAiISC,CAAel0F,EAAE3gB,GAAI2gB,EAAE4wF,SAPxC,UASE,eAACvwG,EAAA,EAAD,CAAKI,UAAU,gBAAf,SACGuf,EAAEjhB,KAAOihB,EAAEjhB,KAAOihB,EAAE3gB,IADa2gB,EAAE3gB,IAGtC,eAACgB,EAAA,EAAD,CAAKC,GAAI,OAAQG,UAAU,YAA3B,SACgB,MAAbuf,EAAE4wF,OACD,eAAC,KAAD,IACe,MAAb5wF,EAAE4wF,OACJ,eAAC,KAAD,IAEA,eAAC,KAAD,QAjBC5wF,EAAE3gB,gBA6BhB,SAASq0G,GAAT,GAWH,IAAD,IAVDxB,iBAUC,MAVW,GAUX,MATD/yB,YASC,MATM,QASN,MARDg1B,iBAQC,MARW,EAQX,MAPDR,eAOC,MAPS,EAOT,MANDC,gBAMC,MANU,EAMV,MALDE,iBAKC,MALW,EAKX,MAJDD,qBAIC,MAJe,EAIf,MAHDzqD,iBAGC,MAHW,KAGX,MAFDsB,eAEC,MAFS,KAET,MADDwc,cACC,MADQ,QACR,EAGGnK,EAAQ,KACM,OAAd3T,GAAkC,OAAZsB,IAGxBqS,EAFStlC,KAAM0jB,MAAMiO,GAER,IADJ3xB,KAAM0jB,MAAMuP,IANtB,IAWG0pD,EAFiBjhE,aAAY,CAAEn4B,QAAQ,IAAnCsD,SAEgB+1F,uBACP,KAAbD,GAAgC,OAAbA,IACrBA,EAAW,mBAERA,IAAUA,EAAW,mBAG1B,IACIE,EADY,mDAFhBF,EAAWA,EAAS5mF,WAAW,IAAK,QAGX,GAMzB8mF,GADAA,GADAA,GADAA,GADAA,GADAA,EAAWA,EAAW,cAAgBH,GAChB,cAAgBL,GAChB,SAAW30B,GACX,kBAAoB00B,GACpB,YAAcF,GACd,aAAeC,EACvB,OAAV72C,IACFu3C,EAAWA,EAAW,UAAYv3C,GAGpC,IAAK,IAAI/8C,EAAI,EAAGA,EAAIkyF,EAAUx0F,OAAQsC,IAAK,CACzC,IAAIu0F,EAAMC,KAAKtC,EAAUlyF,GAAG3gB,IAE5Bi1G,EAAWA,EAAW,SADtBC,EAAMA,EAAI/mF,WAAW,IAAK,KAEtB0kF,EAAUlyF,GAAGszF,QACfgB,EACEA,EAAW,UAAYpC,EAAUlyF,GAAGszF,MAAM52F,MAAM8Q,WAAW,IAAK,QAItE,OACE,qCACE,sBACE7sB,MAAO,CACLyqC,SAAU,WACV5iB,KAAM,EACNomB,MAAO,OACPs4B,OAAQ,QALZ,SAQE,yBACEqtC,IAAKD,EACLG,YAAa,IACbC,UAAW,KACX/zG,MAAO,CACLyqC,SAAU,WACVxiB,IAAK,EACLJ,KAAM,EACNomB,MAAO,OACPs4B,OAAQA,SC5WL,SAASytC,KActB,IAd4C,IAAD,EACWnwG,mBAAS,IADpB,mBACpCowG,EADoC,KACfC,EADe,OAELrwG,mBAAS,IAFJ,mBAEpCswG,EAFoC,KAEvBC,EAFuB,OAGbvwG,oBAAS,GAHI,mBAGpCwwG,EAHoC,KAG3BC,EAH2B,KAKnCr6F,EAAkBU,KAAKX,aAAa5Y,OAAO,CACjDiZ,QAAQ,IADFJ,cAGA5M,EAAUsN,KAAKvZ,OAAO,CAC5BiZ,QAAQ,IADFhN,MAIJkkG,EAAY,GAZ2B,WAclCvuF,GACP,IAAIuxF,EAAoB,GACxBt6F,EAAc3H,SAAQ,SAACuH,GAC4B,IAAD,EAA5CA,EAAanb,KAAOu1G,EAAoBjxF,KAC1C,UAAAnJ,EAAahE,eAAb,SAAsBvD,SAAQ,SAACuE,GAC7BxJ,EAAMiF,SAAQ,SAACc,IAEVA,EAAKxU,WACJwU,EAAK1U,KAAOmY,EAAO29F,UAA4B,MAAhB39F,EAAO7O,MACrCoL,EAAK0d,SAAWja,EAAO29F,UAA4B,MAAhB39F,EAAO7O,OAE7CusG,EAAkB/3F,KAAK,CAAE9d,GAAI0U,EAAKwF,MAAOxa,KAAMgV,EAAKhV,iBAM5DmzG,GADc,IAAZ8C,GAAoBrxF,EAAI,EACduxF,EAAkBtyG,QAAO,SAACE,GAAD,OACnCovG,EAAUiB,MAAK,SAACiC,GAAD,OAAUtyG,EAAMzD,KAAO+1G,EAAK/1G,SAGjC6yG,EAAUt/F,OAAOsiG,IArBxBvxF,EAAI,EAAGA,EAAIixF,EAAoBl3F,OAAQiG,IAAM,EAA7CA,GAyBTmxF,EAAY7hG,SAAQ,SAACoiG,GACnBrnG,EAAMmlG,MAAK,SAACp/F,GACV,OAAIshG,IAAOthG,EAAK1U,KACd6yG,EAAU/0F,KAAK,CAAE9d,GAAI0U,EAAKwF,MAAOxa,KAAMgV,EAAKhV,QACrC,SAiEb,OAVAmzG,EAAU/0F,KAJc,CACtB9d,GAAI,sEACJN,KAAM,qBAIRmzG,GADAA,EAAYntG,IAAE4N,KAAKu/F,IACG7+D,MAAK,SAAC7qC,EAAG4b,GAC7B,MAAe,qBAAX5b,EAAEzJ,MAAqC,EACvB,qBAAXqlB,EAAErlB,MAEPyJ,EAAEzJ,KAAOqlB,EAAErlB,KAFgC,GAGvC,KAIR,gBAACsxC,GAAD,CACE9oC,MAAO,aACPipC,WAAY,eAACm+D,GAAD,IACZl+D,iBAAiB,EAHnB,UAKE,gBAACrwC,EAAA,EAAD,WACGw0G,EAAoBhvG,KAAI,SAAC4U,EAAc2B,GACtC,OACE,uCACE,eAAC9b,EAAA,EAAD,CAAiBM,MAAO,CAAE42E,SAAU,OAAQ32E,SAAU,QAAtD,SACE,eAAC,KAAK+Z,aAAa9Z,OAAnB,CACEiC,MAAO0X,EACPtU,SAAU,SAACo4B,GAAD,OAtEC,SAACx7B,EAAOqZ,GAEjC,IADA,IAAIm5F,EAAgB,GACXC,EAAK,EAAGA,EAAKX,EAAoBl3F,OAAQ63F,IAC5CA,IAAOp5F,EACK,KAAVrZ,GAAcwyG,EAAcn4F,KAAKra,GAErCwyG,EAAcn4F,KAAKy3F,EAAoBW,IAG3CV,EAAuBS,GA6DQE,CAAmBl3E,EAAGniB,IACvC9C,aAAa,KAJP8C,GAOC,IAAVA,EACC,eAAC9b,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,gBAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAqB,IAAZ4zC,EACT9uG,SAAU,kBAAM+uG,GAAW,IAC3Bx0G,UAAW,YAPb,UASG,IATH,MAUM,MATA,WAWN,gBAACowG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAqB,IAAZ4zC,EACT9uG,SAAU,kBAAM+uG,GAAW,IAC3Bx0G,UAAW,YAPb,UASG,IATH,KAUK,MATC,eAaR,WAIV,eAACJ,EAAA,EAAD,CAAKM,MAAO,CAAE42E,SAAU,OAAQ32E,SAAU,QAA1C,SACE,eAAC,KAAK+Z,aAAa9Z,OAAnB,CAA0BqF,SAAU,SAACuvG,GAAD,OAhGpB,SAAC3yG,GAEvB,IADA,IAAIwyG,EAAgB,GACXC,EAAK,EAAGA,EAAKX,EAAoBl3F,OAAQ63F,IAChDD,EAAcn4F,KAAKy3F,EAAoBW,IAEzCD,EAAcn4F,KAAKra,GACnB+xG,EAAuBS,GA0F4BI,CAAgBD,WAGjE,gBAACr1G,EAAA,EAAD,WACG00G,EAAYlvG,KAAI,SAACmO,EAAMoI,GACtB,OACE,eAAC9b,EAAA,EAAD,CAAiBM,MAAO,CAAE42E,SAAU,OAAQ32E,SAAU,QAAtD,SACE,eAAC,KAAKC,OAAN,CACEiC,MAAOiR,EACP7N,SAAU,SAACo4B,GAAD,OA/FL,SAACx7B,EAAOqZ,GAEzB,IADA,IAAIw5F,EAAW,GACNvgG,EAAI,EAAGA,EAAI0/F,EAAYp3F,OAAQtI,IAClCA,IAAM+G,EACM,KAAVrZ,GAAc6yG,EAASx4F,KAAKra,GAEhC6yG,EAASx4F,KAAK23F,EAAY1/F,IAG9B2/F,EAAeY,GAsFcC,CAAWt3E,EAAGniB,IAC/B9C,aAAa,KAJP8C,MASd,eAAC9b,EAAA,EAAD,CAAKM,MAAO,CAAE42E,SAAU,OAAQ32E,SAAU,QAA1C,SACE,eAAC,KAAKC,OAAN,CAAaqF,SAAU,SAACuvG,GAAD,OA1Ff,SAAC3yG,GAEf,IADA,IAAI6yG,EAAW,GACNvgG,EAAI,EAAGA,EAAI0/F,EAAYp3F,OAAQtI,IACtCugG,EAASx4F,KAAK23F,EAAY1/F,IAE5BugG,EAASx4F,KAAKra,GACdiyG,EAAeY,GAoFuBE,CAAQJ,WAI5C,eAACzD,GAAD,CAAoBE,UAAWA,EAAWC,YAAY,OCjL7C,SAAS2D,KAAoB,IACpC9hD,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,sBAAX,SACE,eAAC+9C,GAAD,MAEF,eAAC,KAAD,CAAO/9C,KAAI,UAAKA,EAAL,gCAAX,SACE,eAACg9C,GAAD,MAEF,eAAC,KAAD,CAAOh9C,KAAI,UAAKA,EAAL,iCAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,eAAX,SACE,eAAC2gD,GAAD,MAEF,eAAC,KAAD,CAAO3gD,KAAI,UAAKA,EAAL,QAAX,SACE,eAACy8C,GAAD,MAEF,eAAC,KAAD,CAAOz8C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC46C,GAAD,MAEF,eAAC,KAAD,CAAOzP,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACk7C,GAAD,SC7BO,SAAS6G,GAAT,GAQX,IAPFx3D,EAOC,EAPDA,GACAjO,EAMC,EANDA,QACAC,EAKC,EALDA,KACA57B,EAIC,EAJDA,UACApT,EAGC,EAHDA,SACAivC,EAEC,EAFDA,WACAC,EACC,EADDA,gBAEMlpC,EAAQg3C,EAAE,UACTjO,EADS,aACGiO,EAAGzgB,UAAU,GAAKygB,EAAGzgB,UAAU,GAAG/+B,KAAO,GAD5C,cAEVw/C,EAAG6B,UAEL9P,EAEE0lE,EAAQzlE,KAER,OAAFgO,QAAE,IAAFA,OAAA,EAAAA,EAAI6B,UAAJ,OACF7B,QADE,IACFA,OADE,EACFA,EAAI6B,SACFzrC,EACF,eAAC,KAAD,IAEA,IAEF,OACE,eAAC07B,GAAD,CACE9oC,MAAOA,EACP+oC,QAASA,EACTC,KAAMylE,EACNxlE,WAAYA,EACZC,gBAAiBA,EALnB,SAOGlvC,IChCQ,SAAS00G,GAAT,GAAqC,IAAb10G,EAAY,EAAZA,SACrC,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,OAAnB,iBACA,eAACktG,GAAD,CAAgBltG,GAAG,gBAAnB,yBACA,sBAAKf,UAAU,qBACdc,KCJQ,SAAS20G,GAAT,GAAmC,IAAD,EAAN72G,EAAM,EAANA,GACjCk/C,EAAOg1B,GAAGzxE,OAAO,CAAEzC,KAAI2b,QAAQ,IAA/BujC,GACF43D,GAAuB,OAAF53D,QAAE,IAAFA,GAAA,UAAAA,EAAI6wB,sBAAJ,eAAoB1xD,QAAS,GAAK,cAEvD04F,EACJ5hD,cAAI,QACFjW,QADE,IACFA,OADE,EACFA,EAAI83D,oBADF,OAEF93D,QAFE,IAEFA,OAFE,EAEFA,EAAI+3D,sBAFF,OAGF/3D,QAHE,IAGFA,OAHE,EAGFA,EAAIg4D,oBAHF,OAIFh4D,QAJE,IAIFA,OAJE,EAIFA,EAAIi4D,yBACD,EACD,GACA,cACN,OACE,gBAACP,GAAD,WACE,eAACvH,GAAD,CACEjuG,UAAU,mBACVe,GAAE,eAAUnC,GAFd,sBAGQA,KACR,eAACqvG,GAAD,CAAgBltG,GAAE,eAAUnC,EAAV,SAAlB,kBACA,eAACqvG,GAAD,CAAgBltG,GAAE,eAAUnC,EAAV,YAAlB,qBACA,eAACqvG,GAAD,CAAgBltG,GAAE,eAAUnC,EAAV,SAAqBoB,UAAW21G,EAAlD,kBAGA,eAAC1H,GAAD,CACEltG,GAAE,eAAUnC,EAAV,cACFoB,UAAW01G,EAFb,uBAMA,eAACzH,GAAD,CAAgBltG,GAAE,eAAUnC,EAAV,QAAlB,iBACA,eAACqvG,GAAD,CAAgBltG,GAAE,eAAUnC,EAAV,OAAlB,mBC9BS,SAASo3G,KACtB,IAAMp3G,EAAKgyC,SAASC,eAAYjyC,IADD,EAEIk0E,GAAGzxE,OAAO,CAAEzC,OAAvCk/C,EAFuB,EAEvBA,GAAI1vC,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAGLlK,mBAAS,MAHJ,mBAGxB2H,EAHwB,KAGjB4jB,EAHiB,KAIvBwO,EAAYukC,GAAQhhE,OAAO,CACjCzC,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIxjC,UACRsjC,aAAa,IAFP9f,QAKR,OACE,eAACw3E,GAAD,CACEx3D,GAAIA,EACJjO,QAAO,kBAAajxC,GACpBkxC,KAAM1hC,EAAU,aAAe,KAC/B8F,UAAW9F,EACX2hC,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,IALpC,SAOGk/C,IAAO1vC,EACN,eAAC,GAAGrL,OAAJ,CACE+6C,GAAIA,EACJ76C,SAAU,SAACo+C,GAAD,OACRpzC,EAAUozC,GAAQ51C,OAAM,SAACC,GAAD,OAAW4jB,EAAQ,OAAC5jB,QAAD,IAACA,OAAD,EAACA,EAAOC,aAErDD,MAAOA,EACPoyB,QAASA,IAET,O,wBCpBK,SAASm4E,GAAT,GAMX,IAAD,IALDr3G,EAKC,EALDA,GACA8xF,EAIC,EAJDA,UACAlyF,EAGC,EAHDA,MACAsB,EAEC,EAFDA,SACao2G,EACZ,EADDzlB,YAEM5sF,EAAM2a,iBAAO,MADlB,EAEuBza,oBAAS,GAFhC,mBAEM0C,EAFN,KAEYC,EAFZ,OAG2B3C,mBAAS,MAHpC,mBAGM4B,EAHN,KAGcsc,EAHd,OAQG6wD,GAAGzxE,OAAO,CACZzC,GAAIA,EACJ2b,QAAQ,EACR0yC,UAAU,IANVnP,EALD,EAKCA,GACWq4D,EANZ,EAMCloG,UACA+wD,EAPD,EAOCA,MAOIyxB,EAAW,2BAAQylB,GAAoBp4D,GAEvCs4D,KAAkB,OAAC3lB,QAAD,IAACA,OAAD,EAACA,EAAapzD,eAAc,OAACozD,QAAD,IAACA,OAAD,EAACA,EAAa9wC,UAE5Dz2C,EAAoBgV,KAAqBE,IAArB,6BACFxf,IAGxB,OACE,uCACE,eAACsyE,GAAA,EAAD,CACEhyD,UAAU,OACVs3D,MAAO,CAAE/vE,KAAM,IAAK8oC,KAAM,KAC1B9oC,OAAM2vG,QAAiBznG,EACvByiE,QACE,gBAACilC,GAAA,EAAD,CAASz3G,GAAE,cAASA,EAAT,aAAX,WACc,OAAX6xF,QAAW,IAAXA,OAAA,EAAAA,EAAapzD,WACZ,sBAAKr9B,UAAU,gBAAf,SACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,iBAAM6wF,QAAN,IAAMA,GAAN,UAAMA,EAAapzD,iBAAnB,iBAAM,EAAyB,UAA/B,aAAM,EAA6B/+B,WAGrC,KACJ,eAACqB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,iBAAM6wF,QAAN,IAAMA,OAAN,EAAMA,EAAa9wC,gBAd3B,SAmBE,eAAC,OAAD,CACE97C,IAAKA,EACL7D,UAAU,aACVe,GAAI,CAAEC,SAAS,QAAD,OAAUpC,IACxB0jB,cAAe,SAAC5c,GACdA,EAAE6c,iBACFN,EAAUvc,EAAEC,QACZe,GAAQ,GACRwC,GAAkB,IARtB,SAWG1K,GAASI,MAGd,eAAC03G,GAAD,CACE13G,GAAIA,EACJk/C,GAAIA,EACJn4C,OAAQA,EACRc,KAAMA,EACNQ,OAAQ,WACNP,GAAQ,GACRwC,GAAkB,IAEpBwnF,UAAWA,EACXn4B,OAAQ49C,EACR5wF,IAAKy5C,EACLl/D,SAAUA,OAMlB,SAASw2G,GAAT,GAUI,IATF13G,EASC,EATDA,GACAk/C,EAQC,EARDA,GACAn4C,EAOC,EAPDA,OACAc,EAMC,EANDA,KACAQ,EAKC,EALDA,OAKC,IAJDypF,iBAIC,MAJW,aAIX,EAHDnrE,EAGC,EAHDA,IACAgzC,EAEC,EAFDA,OAEC,IADDz4D,gBACC,WACqCiE,oBAAS,GAD9C,mBACM8uF,EADN,KACmBC,EADnB,KAGKx/E,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACzCmhB,EAAO3yB,mBAAQ,kBAAMiuB,QAAU,IAE/B7mB,EAAoBgV,KAAqBE,IAArB,yBAA2Cxf,IAE/Dm0F,EAAkB,WACtBD,GAAe,GACf5pF,GAAkB,IAEpB,OACE,uCACE,eAAC8V,GAAA,EAAD,CACElY,MAAM,aACNnB,OAAQA,EACRc,KAAMA,EACNQ,OAAQ,WACNA,KAEFiY,UAAU,QAPZ,SASE,gBAAC+iD,GAAA,EAAD,WACE,eAACA,GAAA,EAAU5pD,KAAX,CACEtP,QAAM,EACNpD,OAAO,SACP+oC,IAAI,sBACJ+B,KAAI,eAAU7xC,GAJhB,6BAQA,eAAC,KAAD,CACEiuB,KAAMjuB,EACN0kE,OAAQ,kBAAMvzD,IAAMiO,QAAQ,gBAF9B,SAIE,gBAACikD,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,UACE,eAAC,KAAD,IADF,mBAIAjJ,GACA,uCACE,eAACmiE,GAAA,EAAU5pD,KAAX,CACEtP,QAAM,EACNnI,QAAS,WACPkyF,GAAe,GACf5pF,GAAkB,IAEpB1C,SAAQ,OAAE1G,QAAF,IAAEA,KANZ,sBAUA,eAACmiE,GAAA,EAAU5pD,KAAX,CACEtP,QAAM,EACNnI,QAAS,kBACP2kB,IAAMla,MAAK,YAA0B,IAAjBkrG,EAAgB,EAAtB3zG,MACN,OAAFk7C,QAAE,IAAFA,OAAA,EAAAA,EAAIn/C,SAAW,OAAFm/C,QAAE,IAAFA,OAAA,EAAAA,EAAIn/C,UAAJ,OAAc43G,QAAd,IAAcA,OAAd,EAAcA,EAAW53G,OACxCoR,IAAMrE,MACJ,qBACE1L,UAAU,aACVE,MAAO,CAAEqqC,WAAY,YAFvB,UAIE,gDAJF,8CAKmCuT,QALnC,IAKmCA,OALnC,EAKmCA,EAAIn/C,MALvC,sBAKmD43G,QALnD,IAKmDA,OALnD,EAKmDA,EAAW53G,WAG3D45D,EAAO,CAAE55D,MAAO2U,QAG3B9M,SAAQ,OAAE1G,QAAF,IAAEA,KAjBZ,kCAyBR,eAAC,GAAKixF,SAAN,CACEtqF,KAAMosF,EACN5rF,OAAQ8rF,EACRz/E,KAAMA,EACNmhB,KAAMA,EACNpa,KAAMzb,EACNw2D,SAAU29B,EACV9F,OAAQ,WACN8F,IACArC,UC/KV,IAAM8lB,GAAoB,CACxBntC,OAAQ4sC,IAGK,SAASQ,KAAW,IAAD,EAENvgC,EACtBxjC,eADF70B,SAAYulB,WAGRszE,EAAc11C,GAAgB,UALJ,EAS5B8R,GAAGC,iBAAiB,CACtB3vC,WAAYszE,EACZvkC,QAAQ,IAXsB,IAO9BhwB,gBAAmBhgD,EAPW,EAOXA,OAAQR,EAPG,EAOHA,OAC3BsgD,EAR8B,EAQ9BA,mBAR8B,EAcR+K,KAAfE,EAduB,oBAiBhCxyC,qBAAU,YACE,OAANvY,QAAM,IAANA,OAAA,EAAAA,EAAQvD,KAAM83G,KAAW,OAAKv0G,QAAL,IAAKA,OAAL,EAAKA,EAAQvD,KACxCqjD,EAAmB,CAAE9/C,OAAQ,KAAMR,OAAQ,OAEzC+0G,KACJ,OAAIv0G,QAAJ,IAAIA,OAAJ,EAAIA,EAAQvD,IACVsuD,EAAY,eAAD,OAAgB/qD,EAAOvD,KACzBs3E,GACThpB,EAAY,eAAD,OAAgBgpB,OAE5B,CACDA,EADC,OAED/zE,QAFC,IAEDA,OAFC,EAEDA,EAAQvD,GACRqjD,EACAiL,EACAwpD,IAGF,IAAMvgC,GAAiB7xE,IAAE6E,QAAF,OAAUhH,QAAV,IAAUA,OAAV,EAAUA,EAAQA,QAnCT,EAoC8B2wE,GAAGlnC,UAAU,CACzEzpC,OAAM,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAQA,OAChBoY,OAAQ47D,IAFFnzC,EApCwB,EAoCxBA,IAAK50B,EApCmB,EAoCnBA,QAAS6b,EApCU,EAoCVA,QAASD,EApCC,EAoCDA,QAAS3Y,EApCR,EAoCQA,MAAOV,EApCf,EAoCeA,WAK/CyoB,EAA2B,MAE3B,IAAM0mC,EAAW1xD,EAEXuoG,EAAa,OAAGh1G,QAAH,IAAGA,GAAH,UAAGA,EAAQE,eAAX,aAAG,EAAiBsD,KAAI,SAACoa,GAAD,OAAOA,EAAEsB,UAEpD,OACE,eAAC+uB,GAAD,CACE9oC,MAAK,cACG,OAAN3E,QAAM,IAANA,OAAA,EAAAA,EAAQvD,IAAK,OAAc,OAANuD,QAAM,IAANA,OAAA,EAAAA,EAAQkT,eAAR,OAAuBlT,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAQvD,KAAM,IADvD,QAEqB,KAAjB,OAANuD,QAAM,IAANA,OAAA,EAAAA,EAAQgzE,YAAsB,IAAM,IACvCrlC,KACEqmC,EAAa,UACN1b,GAAct4D,EAAOA,SACxB,yBAEN4tC,WACE,eAAC6mE,GAAD,CACEz0G,OAAQA,EACRR,OAAQA,EACRk1G,kBAAmB3gC,EACnBj0B,mBAAoBA,EACpBiL,YAAaA,IAGjBld,iBAAiB,EAlBnB,SAoBGmmC,EACC,eAAC,GAAG50E,MAAJ,CACEyhC,IAAKA,EACL9uB,UAAW4rD,EACX71C,QAASA,EACTD,QAASA,EACTE,UAAW7Y,EACX8Y,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,UAC1DpsE,OAAQg1G,EACRvtF,YAAajnB,EAAOuR,OACpBhS,WAAY80G,KAEZ,OAKV,SAASI,GAAT,GAA+E,IAApDz0G,EAAmD,EAAnDA,OAAQR,EAA2C,EAA3CA,OAAQsgD,EAAmC,EAAnCA,mBAAoBiL,EAAe,EAAfA,YAAe,MAOpDnpD,oBAAS,GAP2C,mBAOrE0C,EAPqE,KAO/DC,EAP+D,KAQ5E,OACE,gBAAC8uG,GAAD,WACE,eAAC90G,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,2CACVY,QAAS,kBAAM8F,GAAQ,IACvBI,MAAM,mBAJR,qBAQA,gBAACC,GAAA,EAAD,CACEN,KAAMA,EACNO,KAAK,KACLC,OAAQ,kBAAMP,GAAQ,IACtBqqB,kBAAgB,gCAJlB,UAME,eAAChqB,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,gCAIF,eAACmI,GAAA,EAAMK,KAAP,UACE,eAAC,GAAGysE,oBAAJ,CACE7wE,OAAQ,CAAEb,SAAQR,UAClBsB,SA/BV,SAAuBk/C,GAAkB,IAAD,EACtCz7C,GAAQ,GACRu7C,EAAmBE,GACnB,IAAM/e,EAAU,OAAG+e,QAAH,IAAGA,GAAH,UAAGA,EAAiBhgD,cAApB,aAAG,EAAyBvD,GAC5CsuD,EAAY,OAAD,OAAQ9pB,EAAU,kBAAcA,GAAe,aA+BxD,eAAC0zE,GAAD,CACEl2G,QAAS,kBAAMqhD,EAAmB,CAAE9/C,OAAQ,KAAMR,OAAQ,aAMlE,SAASm1G,GAAT,GAAyC,IAAZl2G,EAAW,EAAXA,QACnB2iC,EAAcuvC,GAAG7wE,OAAOykC,SAASplC,SAAjCiiC,UACR,OAA0B,KAAb,OAATA,QAAS,IAATA,OAAA,EAAAA,EAAWtmB,QAAqB,KAElC,uCACE,sBAAKjd,UAAU,qBACdujC,EAAUp+B,KAAI,gBAAGi+B,EAAH,EAAGA,WAAH,OACb,eAAC6qE,GAAD,CAEEltG,GAAE,sBAAiBqiC,GACnBxiC,QAASA,EAHX,SAKGwiC,GALH,qBACqBA,UCrJd,SAASknC,KACtB,IAAMhwD,EAAY0mD,GAAgB,WAClC,OACE,eAACpxB,GAAD,CAAM9oC,MAAK,SAAYipC,WAAY,eAACylE,GAAD,IAAnC,SACE,eAAC,GAAGh+F,IAAJ,CAAQsmC,GAAI,CAAExjC,iB,mCCSL,SAASy8F,GAAT,GAMX,IALW7yC,EAKZ,EALD8yC,YACA12F,EAIC,EAJDA,OACAjW,EAGC,EAHDA,OACAnH,EAEC,EAFDA,WACA0tE,EACC,EADDA,SACC,EACqCtxD,aAAe4kD,GADpD,mBACM8yC,EADN,KACmBC,EADnB,OCpBY,WAA0B,IAAD,EACRlzG,oBAAS,GADD,mBAC/BqK,EAD+B,KACtBqjC,EADsB,KAEhC1Q,EAAUviB,iBAAO,MAoCvB,MAAO,CAAEpQ,UAAS8oG,cAlCIvwG,sBAAW,uCAAC,WAAO/H,EAAI0nG,GAAX,SAAAv+F,EAAA,sDAChC0pC,GAAW,GAEX1Q,EAAQtyB,QAAUsB,IAAM6lB,KAAK,eAAiB0wE,EAAW,MAAO,CAC9DroF,WAAW,IAEbuqB,GAAiB,CAAE5pC,OAChByM,MAAK,SAAC28B,GACL5a,KAAUC,OAAO2a,EAAMs+D,GACvB70D,GAAW,GACX1hC,IAAMwoD,OAAOx3B,EAAQtyB,QAAS,CAC5BgQ,OAAQ,eAAiB6nF,EAAW,IACpCp+F,KAAM6H,IAAM20B,KAAKyyE,QACjBl5F,UAAW,SAGdxS,OAAM,SAACC,GAON,OANAqE,IAAMwoD,OAAOx3B,EAAQtyB,QAAS,CAC5BgQ,OAAO,oBAAD,OAAsB6nF,EAAtB,cAAoC56F,GAC1CxD,KAAM6H,IAAM20B,KAAK0yE,MACjBn5F,UAAW,MAEbjV,QAAQC,IAAIyC,GACLR,QAAQC,OAAOO,MAvBM,2CAAD,wDAyB9B,IAS8B2rG,iBAPR1wG,sBAAW,uCAAC,WAAO/H,GAAP,SAAAmJ,EAAA,+EAC5B8gC,GAAoB,CAAEjqC,OAC1ByM,MAAK,SAACisG,GAAD,OAAUA,KACf7rG,OAAM,SAACC,GACN,OAAOR,QAAQC,OAAOO,OAJS,2CAAD,sDAMjC,KDfyC6rG,GAApCL,EAFP,EAEOA,cAAeG,EAFtB,EAEsBA,iBAEjBG,EAAa7wG,sBAAW,uCAC5B,WAAO/H,EAAI0nG,GAAX,eAAAv+F,EAAA,6DACQg5B,EAAUhxB,IAAM6lB,KAAN,mBAAuB0wE,EAAvB,OAAsC,CACpDroF,WAAW,EACXw5F,iBAAiB,EACjBC,SAAU,KAJd,SAMQL,EAAiBz4G,GACpByM,MAAK,WACJ4rG,GAAe,SAAC52G,GAAD,OAAQA,EAAG8B,QAAO,SAAC4F,GAAD,OAAQ,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAGnJ,MAAOA,QAClDgyE,IACA7gE,IAAMwoD,OAAOx3B,EAAS,CACpBtiB,OAAO,UAAD,OAAY6nF,EAAZ,aACNp+F,KAAM6H,IAAM20B,KAAKyyE,QACjBO,cAAU/oG,EACV8oG,iBAAiB,EACjBx5F,UAAW,SAGdxS,OAAM,SAACC,GAAD,OACLqE,IAAMwoD,OAAOx3B,EAAS,CACpBtiB,OAAO,UAAD,OAAY6nF,EAAZ,oBAAgC56F,GACtCxD,KAAM6H,IAAM20B,KAAK0yE,MACjBn5F,UAAW,SAtBnB,2CAD4B,wDA2B5B,CAACo5F,EAAkBzmC,EAAUqmC,IAGzBp1G,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,OACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,gBAAGG,EAAH,EAAGA,IAAKF,EAAR,EAAQA,MAAR,OACJ,eAAC6uE,GAAA,EAAD,CAAgBE,QAAS,gBAACilC,GAAA,EAAD,uBAAmBh0G,KAA5C,SACE,eAAC3B,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,uBACVY,QAAS,wBAAMs2G,EAAa,UAAC30G,EAAIC,gBAAL,aAAC,EAAc5D,GAAIyD,IAHjD,SAKGA,QAKT,CACEzD,GAAI,SACJmD,OAAQ,aACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,YAA2B,IAAxBse,EAAuB,EAAvBA,OAAQi0C,EAAe,EAAfA,SACnB,OAAQj0C,GACN,IAAK,KACH,MAAO,WAAai0C,EACtB,IAAK,KACH,MAAO,MAAQA,EACjB,QACE,OAAOA,GAAY,OAGzBtuC,UAAW,cACX7jB,KAAM,YAA8D,IAAD,IAA1DG,IAAOC,SAAY8d,GAAuC,aAAlB,GAAkB,GAAvCA,OAAQi0C,EAA+B,EAA/BA,SAAmBlyD,EAAY,EAAZA,MACrD,MAAe,OAAXie,EAEA,eAAC,OAAD,CACEtgB,UAAU,aACVe,GAAI,CAAEC,SAAS,QAAD,OAAUuzD,IAF1B,SAIGlyD,GAAS,OAGI,OAAXie,EAEL,eAAC,OAAD,CACEtgB,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,OAAeuzD,IAF/B,SAIGlyD,GAAS,OAIP,gCAAOA,GAAS,SAI7B,CACEzD,GAAI,WACJmD,OAAQ,OACRC,SAAU,WAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAGzD,CACEzD,GAAI,SACJmD,OAAQ,OACRC,SAAU,SAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACEjY,GAAI,SACJmD,OAAQ,SACRC,SAAU,KAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,IAAUE,IAAOC,SAAY8jG,GAA7B,aAA0C,GAA1C,GAA6BA,SAA7B,OACJ,eAACp1B,GAAA,EAAD,CAAgBE,QAAS,eAACilC,GAAA,EAAD,gCAAzB,SACE,eAAC31G,EAAA,EAAD,CACEsG,KAAK,KACLrG,QAAQ,SAERC,QAAS,kBAAM42G,EAAWn1G,EAAOikG,IACjC9/F,SAAUtD,EALZ,2BAaR,CAACg0G,EAAeM,EAAYt0G,IAnI7B,4CAsID,WAA2BwC,GAA3B,yBAAAqC,EAAA,iEACQghC,EAAQrjC,EAAEC,OAAOojC,aADzB,IAEOA,OAFP,EAEOA,EAAO9rB,OAFd,iDAGQ8jB,EAAUhxB,IAAM6lB,KAAK,aAAemT,EAAM9rB,OAAS,YAAa,CACpEgB,WAAW,EACXw5F,iBAAiB,EACjBC,SAAU,KAERC,EAAkB,EAChB35F,EAAU,kBAAM25F,KATxB,IAAA5vG,EAAA,iBAWWwY,GAXX,iBAAAxY,EAAA,6DAYUigC,EAAOe,EAAMxoB,GACbq3F,EAAc,kBAClB7nG,IAAMwoD,OAAOx3B,EAAS,CACpB22E,UAAWn3F,EAAI,GAAKwoB,EAAM9rB,UAflC,SAkBU5S,EAAO,CAAE0+B,MAAO,CAACf,KACpB38B,KAAK2S,GACLvS,OAAM,eACNkkB,QAAQioF,GArBf,0CAWWr3F,EAAI,EAXf,YAWkBA,EAAIwoB,EAAM9rB,QAX5B,0CAWWsD,GAXX,iBAWoCA,IAXpC,uBAwBExQ,IAAMwoD,OAAOx3B,EAAS,CACpBtiB,OAAO,oBAAD,OAAsBk5F,EAAtB,eAA4C5uE,EAAM9rB,OAAlD,KACN/U,KAAM6H,IAAM20B,KAAKyyE,QACjBO,cAAU/oG,EACV8oG,iBAAiB,EACjBx5F,UAAW,MA7Bf,6CAtIC,sBAsKD,OACE,uCACG/a,EAAa,KACZ,eAACvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAKm4G,KAAN,CACEj5G,GAAG,oBACHJ,MAAM,oBACNiH,SA9KX,4CA+KWqyG,UAAQ,QAKhB,eAACn4G,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEoB,UAAQ,EACRnE,MAAM,cACNoE,KAAMo0G,EACNn1G,QAASA,EACTF,OAAQ,CAAC,WAAY,SAAU,WAAY,UAAUwQ,OAClDjP,EAA0B,GAAb,CAAC,WAEjBumB,YAAa,SAAClnB,GACZ,GAAIA,EAAIkgB,UAAW,MAAO,GAC1B,IAAM1a,EAAC,OAAGxF,QAAH,IAAGA,OAAH,EAAGA,EAAKC,SACf,OAAI8B,IAAEqa,QAAQ,CAAE2B,OAAQvY,EAAEuY,OAAQi0C,SAAUxsD,EAAEwsD,UAAYj0C,GACjD,CACLtgB,UAAW,iBAEH,aEzNX,SAAS+3G,GAAT,GAUX,IATFf,EASC,EATDA,YACA12F,EAQC,EARDA,OACAjW,EAOC,EAPDA,OACAnH,EAMC,EANDA,WACAuC,EAKC,EALDA,SAKC,IAJD9E,eAIC,MAJS,UAIT,MAHDnC,aAGC,MAHO,cAGP,MAFD6B,GAAI23G,OAEH,MAFet3G,IAEf,EADEkB,EACF,mGAC6CmC,oBAAS,GADtD,mBACMk0G,EADN,KACuBC,EADvB,OAE6Bn0G,oBAAS,GAFtC,mBAEMyK,EAFN,KAEe2pG,EAFf,KAID,OACE,uCACE,gBAACH,EAAD,yBACEr3G,QAASA,EACTC,QAAS,kBAAMs3G,GAAmB,KAC9Bt2G,GAHN,cAKE,eAAC,KAAD,IALF,IAKkBpD,EAAO,IACvB,eAAC6wD,GAAA,EAAD,CAAO1uD,QAAQ,QAAf,gBAAwBq2G,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAa/5F,aAEvC,gBAAClW,GAAA,EAAD,CACEC,KAAK,KACLP,KAAMwxG,EACNhxG,OAAQ,WACNixG,GAAmB,GACf1pG,GAAW/I,GAAUA,KAL7B,UAQE,eAACsB,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,UAAc3I,GAAS,kBAEzB,eAACuI,GAAA,EAAMK,KAAP,UACE,eAAC2vG,GAAD,CACEC,YAAaA,EACb3sG,OAAQA,EACRnH,WAAYA,EACZ0tE,SAAU,kBAAMunC,GAAW,IAC3B73F,OAAQA,YCxBpB,IAAM83F,GAAkB,CACtBvrF,KAAM,GACN/lB,MAAO,IAGM,SAASuxG,GAAT,GAOX,IANFxS,EAMC,EANDA,SAMC,IALD3xF,iBAKC,aAJDhR,kBAIC,SAHDmH,EAGC,EAHDA,OACAzL,EAEC,EAFDA,GACA25D,EACC,EADDA,OACC,EACmCx0D,oBAAS,GAD5C,mBACMu0G,EADN,KACkBC,EADlB,KAGD,GAAI7mG,sBAAYm0F,KAAc3xF,EAAW,OAAO,KAChD,IAAMuuD,EAAsB/wD,sBAAYm0F,IAAa3xF,EAE/CskG,EAAY/1C,EACdhc,gBAAM,EAAGkc,cACTjvD,iBAAOmyF,GAAU,SAACtmF,GAAD,OACf+4F,EAAa,KAAO1nE,SAASrxB,EAAE3gB,IAAMgyC,SAASrxB,EAAE3gB,OAGtD,OACE,uCACGyL,EACC,eAACouG,GAAD,CACEvkG,UAAWuuD,EACXp4D,OAAQA,EACRzL,GAAIA,EAAE,UAAMA,EAAN,aAAiB+P,EACvBzL,WAAYA,IAEZ,KACJ,eAACvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEsG,KAAK,KACLrG,QAAQ,OACRmG,MAAM,uBACNlG,QAAS,kBAAM23G,GAAeD,IAJhC,SAMGA,EACC,uCACG,gBACD,eAAC,KAAD,OAGF,uCACG,gBACD,eAAC,KAAD,IAAa,aAMtBnzG,cAAIqzG,GAAW,SAACj5F,EAAGgB,GAAJ,OACd,eAACm4F,GAAD,CAEEv7E,QAAS5d,EACTrL,UAAWuuD,EACXv/D,WAAYA,EACZq1D,OAAQA,GALV,iBACiBh4C,UAWzB,SAASm4F,GAAT,GAA8D,IAA3Cv7E,EAA0C,EAA1CA,QAASjpB,EAAiC,EAAjCA,UAAWqkD,EAAsB,EAAtBA,OAAQr1D,EAAc,EAAdA,WAAc,EAC/Ba,oBAAS,GADsB,mBACpD40G,EADoD,KAC5CC,EAD4C,KAG3D,GAAIlnG,sBAAYyrB,GAAU,OAAO,KAEjC,IAAIwoC,EAAS,KACb,OAAIpN,IAAWr1D,IACbyiE,EAAS,kBAAMizC,GAAU,IACrBD,GAEA,eAACE,GAAD,CACE17E,QAASA,EACTjpB,UAAWA,EACXjR,SAAU,SAACD,GACTu1D,EAAO,2BAAKv1D,GAAN,IAAcpE,GAAIu+B,EAAQv+B,MAChCg6G,GAAU,IAEZxjD,SAAU,kBAAMwjD,GAAU,MAMhC,eAACE,GAAD,CACE37E,QAASA,EACTjpB,UAAWA,EACXyxD,OAAQA,EACRziE,WAAYA,IAKlB,SAAS41G,GAAT,GAAkE,IAA3C37E,EAA0C,EAA1CA,QAASjpB,EAAiC,EAAjCA,UAAWyxD,EAAsB,EAAtBA,OAAQziE,EAAc,EAAdA,WACzC4D,EACNq2B,EADMr2B,MAAOs5F,EACbjjE,EADaijE,OAAQxxF,EACrBuuB,EADqBvuB,eAAgBie,EACrCsQ,EADqCtQ,KAAMksF,EAC3C57E,EAD2C47E,eAAgBC,EAC3D77E,EAD2D67E,WAEvDC,EAAeniF,KAAUo1C,gBAC7Bp1C,KAAU0c,UAAU5kC,IAEhBsqG,EAAapiF,KAAUo1C,gBAC3Bp1C,KAAU0c,UAAUulE,IAGhBn6G,EAAE,yBAAcu+B,QAAd,IAAcA,OAAd,EAAcA,EAASv+B,IAE/B,OACE,uBAAKoB,UAAU,aAAapB,GAAIA,EAAhC,UACE,gBAACe,EAAA,EAAD,CAAKK,UAAU,OAAf,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,yBAAOG,UAAU,cAAjB,UACIkU,EAAwC,eAAC,KAAD,IAA5B,eAAC,KAAKrR,KAAN,CAAWjE,GAAIwhG,IAC5B,IAAM6Y,EAAe,IACtB,oBAAGxoE,KAAI,WAAM7xC,GAAMkI,MAAM,kBAAzB,SACE,eAAC,KAAD,WAIN,gBAAClH,EAAA,EAAD,WACGs5G,IAAehlG,EACd,yBAAOlU,UAAU,yBAAjB,uBACY,eAAC,KAAK6C,KAAN,CAAWjE,GAAIo6G,IAD3B,IAC2CE,KAEzC,KACFhlG,GAAchR,IAAcyiE,EAS1B,KARF,eAACjlE,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,yBACVgH,KAAK,KACLpG,QAAS+kE,EAJX,wBAWN,eAAChmE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,qBAAII,UAAU,OAAd,SAAuBkU,EAAoB,eAAC,KAAD,IAARpN,QAGvC,eAACnH,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,oBAAGI,UAAU,aAAaE,MAAO,CAAEqqC,WAAY,YAA/C,SACIr2B,EAAmB,eAAC,KAAD,CAAU0yD,MAAO,IAAxB/5C,WAQ1B,SAAS4rF,GAAT,GAAuE,IAAD,IAA7CvkG,iBAA6C,SAA1B7J,EAA0B,EAA1BA,OAAQzL,EAAkB,EAAlBA,GAAIsE,EAAc,EAAdA,WAAc,EAC1Ca,oBAAS,GADiC,mBAC7D8tC,EAD6D,KACtDqkB,EADsD,OAOhE6N,GAAiB,CACnBt8D,IAAK7I,IALEu6G,EAH2D,EAGlEh4G,MACSi4G,EAJyD,EAIlEl1C,QACUm1C,EALwD,EAKlEjqG,SACS81D,EANyD,EAMlE92D,QAIIkF,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAEzCgmG,MAAmC,OAAZH,QAAY,IAAZA,OAAA,EAAAA,EAAcryG,UAAd,OAAuBqyG,QAAvB,IAAuBA,OAAvB,EAAuBA,EAActsF,OAE5DsQ,EAAUr7B,mBACd,8BAAC,2BAAWs2G,IAAoBgB,GAAhC,IAAqDhZ,OAAQ9sF,MAC7D,CAAC8lG,EAAqB9lG,IAGxB,OACE,uCACE,eAAC,KAAD,CACEysC,KAAMu5D,EACN3tG,QAAQ,kEAGTkmC,EACC,eAACgnE,GAAD,CACE17E,QAASA,EACTjpB,UAAWA,GAAagxD,EACxBrzB,MAAOA,EACP5uC,SAAQ,uCAAE,iCAAA8E,EAAA,yDAASjB,EAAT,EAASA,MAAO+lB,EAAhB,EAAgBA,KAAS7pB,EAAzB,iCACRkzD,GAAS,IACLpvD,IAAS+lB,EAFL,yCAGCxiB,EAAO,aAAEvD,QAAO+lB,QAAS7pB,IAAUqI,MAAK,WAC7CguG,EAAgB,MAAM,OAJlB,2CAAF,sDAORjkD,SAAU,WACRc,GAAS,IAEXzwD,SAAU,SAACzC,GACTq2G,GAAsB,OAANr2G,QAAM,IAANA,OAAA,EAAAA,EAAQ6pB,QAAR,OAAgB7pB,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAQ8D,OAAQ9D,EAAS,OAE3D1D,OAAK,IAGP,gBAACI,GAAA,EAAD,CAAMM,UAAU,aAAhB,UACE,eAACL,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,UACE,iCACIsU,EAAsC,eAAC,KAAD,IAA1B,eAAC,KAAKrR,KAAN,CAAWjE,GAAI0U,UAInC,eAAC3T,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAU,6BAAtB,SACE,eAAC5X,GAAA,EAAK8F,QAAN,CACE0C,KAAK,OACL+K,YAAY,mBACZ6mB,QAAS,WACD52B,GAAcgR,IAClBgiD,GAAS,GACTmjD,EAAgBF,GAAc,KAGlC3yG,SAAU0N,GAAahR,gBAWzC,IAAMq2G,GAAgBn7G,eAASC,MAAM,CACnCyI,MAAOvI,eAASC,MAAM,SAASK,IAAI,OAGrC,SAASg6G,GAAT,GASI,IARF17E,EAQC,EARDA,QAQC,IAPDj6B,kBAOC,aANDgR,iBAMC,aALD29B,aAKC,SAJD5uC,EAIC,EAJDA,SACAmyD,EAGC,EAHDA,SACA3vD,EAEC,EAFDA,SAEC,IADDnG,aACC,SACD,OACE,eAAC,KAAD,CACE2D,SAAUA,EACVE,cAAa,2BACRi1G,IACAj7E,GAELj6B,WAAYA,EACZE,OAAQ,CAAEA,OAAQm2G,IAPpB,SASE,eAACC,GAAD,CACEtlG,UAAWA,EACX29B,MAAOA,EACPpsC,SAAUA,EACV2vD,SAAUA,EACV91D,MAAOA,MAMf,SAASk6G,GAAT,GAA4E,IAAhD3nE,EAA+C,EAA/CA,MAAOujB,EAAwC,EAAxCA,SAAU3vD,EAA8B,EAA9BA,SAAUnG,EAAoB,EAApBA,MAAO4U,EAAa,EAAbA,UAAa,EAOrE1U,eALF6R,EAFuE,EAEvEA,MACAgG,EAHuE,EAGvEA,MACA9X,EAJuE,EAIvEA,WACA22D,EALuE,EAKvEA,SACgBhzD,EANuD,EAMvEqT,aAAgBrT,WAGZF,EAASqU,IAEfoiG,aAAmB,CACjBp8C,SAAU53D,EACVxC,SAAU,SAACD,GACJE,GAAegR,GAAWzO,EAASzC,MAd6B,MAkBvCe,oBAAS,GAlB8B,mBAkBlE21G,EAlBkE,KAkBvDC,EAlBuD,KAkCzE,OAdAziD,aAAY,CACV0iD,OAAQ,WACFF,GAAatkD,GAAUA,EAASpyD,IAEtC,aAAc,WACR02G,GAAWn6G,OAInBmb,qBAAU,WACHm3B,GACLqkB,EAAS,UACR,CAACA,EAAUrkB,IAGZ,gBAACnyC,GAAA,EAAD,CAAMM,UAAU,aAAaiD,SAAU1D,EAAvC,UACE,eAACI,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,UACE,iCACIsU,EAAgD,eAAC,KAAD,IAApC,eAAC,KAAKrR,KAAN,CAAWjE,GAAE,OAAEoE,QAAF,IAAEA,OAAF,EAAEA,EAAQo9F,eAI3C,eAACzgG,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAU,oBAAtB,SACE,eAAC,KAAD,CACEhZ,KAAK,QACL2U,YAAY,WACZnT,SAAUoU,EACVsgB,OAAQ,kBAAMmlF,GAAa,IAC3B7/E,QAAS,kBAAM6/E,GAAa,IAC5B55G,aAAa,cAKrB,eAACJ,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAU,mBAAtB,SACE,eAACuiG,GAAD,CACEv7G,KAAK,OACL2U,YAAY,aACZklC,QAAS,EACT+d,SAAUyjD,EACV75G,SAAUoU,UAKlB,eAACvU,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,gBAACqrC,GAAA,EAAD,CAAa6uE,aAAW,wBAAxB,UACE,eAACp5G,EAAA,EAAD,CAAQC,QAAQ,UAAUuH,KAAK,SAAS1B,SAAUtD,EAAlD,oBAGA,eAACxC,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMw0D,EAASpyD,IACxBwD,SAAUtD,EAHZ,oBAOA,eAACxC,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,WACP,IAAMuiE,EAAU,SAACngE,GACfqO,EAAMrO,GACNyC,GAAYA,EAAS,OAEvBnG,EACI6jE,EAAQ,2BAAKi1C,IAAN,IAAuBhY,OAAM,OAAEp9F,QAAF,IAAEA,OAAF,EAAEA,EAAQo9F,UAC9Cj9B,KAEN38D,SAAUtD,EAXZ,6BAsBZ,SAAS22G,GAAT,GAAoE,IAAxCv7G,EAAuC,EAAvCA,KAAuC,IAAjCM,UAAiC,MAA5BN,EAA4B,EAAtB43D,EAAsB,EAAtBA,SAAat0D,EAAS,2CAI7DwU,aAAc,CAAE9X,SAJ6C,IAE/D+X,MAASme,EAFsD,EAEtDA,OAAWne,EAF2C,2BAGjD3K,EAHiD,EAG/D4K,WAAc5K,MAHiD,EAO7DlM,eADF+W,aAAgBrT,kBAN+C,SASjE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACE,eAAC,KAAD,2BACMyX,GADN,IAEEme,OAAQ,SAAC9uB,GACP8uB,EAAO9uB,GACPwwD,GAAS,IAEXp8B,QAAS,kBAAMo8B,GAAS,IACxBl2D,UAAU,eACVF,SAAUoD,GACNtB,IAEN,eAAClC,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aC/ZD,SAASouG,GAAT,GAAoD,IAAzB72G,EAAwB,EAAxBA,WAAYpC,EAAY,EAAZA,SACpD,OACE,eAAC,KAAD,CAAOwrB,OAAQppB,EAAY8D,KAAK,KAAKhH,UAAU,OAA/C,SACGc,IAIP,SAAS0sB,GAAT,GASI,IARFlvB,EAQC,EARDA,KACAE,EAOC,EAPDA,MACA6D,EAMC,EANDA,MACA6R,EAKC,EALDA,UAKC,IAJDhR,kBAIC,aAHDumB,mBAGC,MAHa,aAGb,EAFDppB,EAEC,EAFDA,GACGuB,EACF,uFACuBmC,oBAAS,GADhC,mBACMi2G,EADN,KACYC,EADZ,KAGDv/F,qBAAU,YACJxG,GAAahR,IAAY+2G,GAAQ,KACpC,CAAC/lG,EAAWhR,IALd,OAQC7C,GAAO6C,GAAegR,EAElB,CAAC,QAAIvF,GADL,CAAC,gBAAiB,kBAAMsrG,GAAQ,KATrC,mBAOMnzG,EAPN,KAOaozG,EAPb,KAYD,OACE,8CAAIt5G,QAASs5G,EAAiBpzG,MAAOA,GAAW2iB,KAAhD,cACE,qBAAIgmB,MAAM,MAAV,SACGv7B,EAAY,eAAC,KAAD,IAAe1V,GADV,SAGnB6B,EACC,eAAC8yD,GAAA,EAAD,CAAUC,GAAI4mD,EAAd,SACE,qBAAIlkC,QAAS,EAAb,SACE,eAAC,GAAD,aACEx3E,KAAMA,EACNk2B,OAAQ,kBAAMylF,GAAQ,IACtBpoE,MAAOmoE,EACP35G,GAAIA,GACAuB,QAIR,KACJ,eAACuxD,GAAA,EAAD,CAAUC,IAAK4mD,EAAf,SACE,8BAAiB9lG,EAAY,eAAC,KAAD,IAAe7R,GAApC,eAMhB,SAAS2qE,GAAT,GAAuE,IAAtD1uE,EAAqD,EAArDA,KAAc67G,EAAuC,EAA/C3lF,OAAoBqd,EAA2B,EAA3BA,MAAWuoE,EAAgB,EAApB/5G,GAAWuB,EAAS,iDAIhEwU,aAAc,CAAE9X,SAJgD,IAElE+X,MAAiBgkG,EAFiD,EAEzD7lF,OAAwBne,EAFiC,2BAGpD3K,EAHoD,EAGlE4K,WAAc5K,MAGV8oB,EAAS,SAAC9uB,GACdy0G,EAAWz0G,GACX20G,EAAY30G,IAGNwwD,EAAa12D,eAAb02D,SAMR,OAJAx7C,qBAAU,WACJm3B,GAAO2b,YAAW,kBAAM0I,EAAS53D,QACpC,CAACA,EAAMuzC,EAAOqkB,IAGf,eAACkkD,EAAD,2BACM/jG,GADN,IAEEme,OAAQA,EACR8lF,YAAa9lF,EACbhe,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfyoB,mBAAmB,YACnB2rC,mBAAiB,EACjBw6C,iBAAe,GACX34G,IChFK,SAAS44G,GAAT,GAMX,IALF18D,EAKC,EALDA,GACAhgB,EAIC,EAJDA,QACAy6B,EAGC,EAHDA,OACArkD,EAEC,EAFDA,UACAhR,EACC,EADDA,WAEA,OACE,eAAC62G,GAAD,CAAiB72G,WAAYA,GAAcgR,EAA3C,SACE,eAAC,KAAD,CACEjR,SAAU,SAACyC,GACT,OAAO6yD,EAAO7yD,IAEhBvC,cAAe26C,EACf16C,OAAQ,CAAEA,OAAQ0vE,GAAG1vE,QALvB,SAOE,eAACq3G,GAAD,CACE38D,GAAIA,EACJhgB,QAASA,EACT5pB,UAAWA,EACXhR,WAAYA,QAOtB,SAASu3G,GAAT,GAA4D,IAAvC38D,EAAsC,EAAtCA,GAAIhgB,EAAkC,EAAlCA,QAAS5pB,EAAyB,EAAzBA,UAAWhR,EAAc,EAAdA,WAE3C,OADAu2G,aAAmB,CAAEiB,WAAY,IAAKC,oBAAoB,IAExD,mCACE,eAACZ,GAAgBp6G,IAAIi7G,WAArB,CACEh9G,OAAQkgD,EACR5pC,UAAWA,EACXhR,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACEnB,MAAM,UACN6D,MACE,eAAC,OAAD,CACErC,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,cAAe88C,QAAf,IAAeA,OAAf,EAAeA,EAAIxjC,YAFnC,gBAIGwjC,QAJH,IAIGA,OAJH,EAIGA,EAAIxjC,YAGTpG,UAAWA,EACXhR,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACEnB,MAAM,WACN6D,MAAO,eAAC,GAAQ0sD,SAAS1oD,YAAlB,CAA8BzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAS2wB,aAClDv6C,UAAWA,EACXhR,WAAYA,EACZumB,YAAa,iBAAO,CAAEzpB,UAAW8yE,GAAGvQ,qBAAqBzkB,OAE3D,eAACi8D,GAAgBp6G,IAAjB,CACEnB,MAAM,OACNF,KAAK,iBACL+D,MACE,eAAC,GAAQ7B,KAAK6F,YAAd,CACEzH,IAAM,OAAFk/C,QAAE,IAAFA,OAAA,EAAAA,EAAIkB,kBAAJ,OAAsBlhB,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAS0gB,UAGvCn+C,GAAIgiE,GAAQ7hE,KAAKJ,OACjB8T,UAAWA,EACXjB,YAAY,0BACZ2F,aAAW,EACX1V,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACEnB,MAAM,SACNF,KAAK,WACL+D,MAAO,eAAC,GAAGm3C,OAAOnzC,YAAX,CAAuBzH,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIqC,WACtC9/C,GAAIyyE,GAAGt5B,OAAOp5C,OACd8T,UAAWA,EACXhR,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACEnB,MAAM,aACNF,KAAK,eACL+D,MAAO,eAAC,GAAGwlE,WAAWxhE,YAAf,CAA2BzH,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIgC,eAC1Cz/C,GAAIyyE,GAAGjL,WAAWznE,OAClB8T,UAAWA,EACXhR,WAAYA,OCvFL,SAAS23G,GAAT,GAA+D,IAAtC/8D,EAAqC,EAArCA,GAAI5pC,EAAiC,EAAjCA,UAAWqkD,EAAsB,EAAtBA,OAAQr1D,EAAc,EAAdA,WAAc,EAChCqQ,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAhEkE,EADmE,EACnEA,UAAW3E,EADwD,EACxDA,WAAY4E,EAD4C,EAC5CA,QAC/B,OACE,eAAChY,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CAAOoH,KAAK,KAAKhH,UAAU,OAA3B,SACE,iCACE,8BACE,qBAAI81E,QAAS,EAAb,SACG5hE,EACC,eAAC,KAAD,IAEA,uCACE,eAACxU,GAAA,EAAKO,MAAN,CACErB,GAAG,sBACHkuE,QAAM,EACNtuE,MAAM,UACNmiE,SAAW,OAAF7iB,QAAE,IAAFA,OAAA,EAAAA,EAAIuC,uBAAuB,EACpC56C,SAAU,SAACC,GAAD,OACR6yD,EAAO,CAAElY,oBAAqB36C,EAAEC,OAAOg7D,WAEzCn6D,SAAUtD,IAEZ,eAACxD,GAAA,EAAKO,MAAN,CACErB,GAAG,wBACHkuE,QAAM,EACNtuE,MAAM,OACNmiE,SAAW,OAAF7iB,QAAE,IAAFA,OAAA,EAAAA,EAAI0C,yBAAyB,EACtC/6C,SAAU,SAACC,GAAD,OACR6yD,EAAO,CAAE/X,sBAAuB96C,EAAEC,OAAOg7D,WAE3Cn6D,SAAUtD,IAEZ,eAACxD,GAAA,EAAKO,MAAN,CACErB,GAAG,oBACHkuE,QAAM,EACNtuE,MAAM,mBACNmiE,SAAW,OAAF7iB,QAAE,IAAFA,OAAA,EAAAA,EAAIyC,qBAAqB,EAClC96C,SAAU,SAACC,GAAD,OACR6yD,EAAO,CAAEhY,kBAAmB76C,EAAEC,OAAOg7D,WAEvCn6D,SAAUtD,IAEZ,eAACxD,GAAA,EAAKO,MAAN,CACErB,GAAG,gBACHkuE,QAAM,EACNtuE,MAAM,gBACNmiE,SAAW,OAAF7iB,QAAE,IAAFA,OAAA,EAAAA,EAAI6T,iBAAiB,EAC9BlsD,SAAU,SAACC,GAAD,OACR6yD,EAAO,CAAE5G,cAAejsD,EAAEC,OAAOg7D,WAEnCn6D,SACEtD,KAAgBwU,GAAa3E,GAAc4E,oBCnCpD,SAASmjG,KAAU,IAAD,EACzBl8G,EAAKgyC,SAASC,eAAYjyC,IADD,EAY3Bk0E,GAAGzxE,OAAO,CACZzC,GAAIA,EACJg/C,aAAa,EACbqP,UAAU,IAZVnP,EAH6B,EAG7BA,GACA1vC,EAJ6B,EAI7BA,QACAH,EAL6B,EAK7BA,UACA+wD,EAN6B,EAM7BA,MACAnyB,EAP6B,EAO7BA,cACAE,EAR6B,EAQ7BA,cACAxD,EAT6B,EAS7BA,iBACA54B,EAV6B,EAU7BA,WACAsuC,EAX6B,EAW7BA,YAOIwjB,EAAsBr0D,GAAW9J,IAAE6E,QAAQ20C,GAE3CmR,GACF,OAAFnR,QAAE,IAAFA,OAAA,EAAAA,EAAIE,oBAA+C,aAAxB,OAAFF,QAAE,IAAFA,OAAA,EAAAA,EAAIE,mBAI/B,OAFA5kB,EAA2B,OAEX,IAAZhrB,GAAsB0vC,EAUxB,gBAACw3D,GAAD,CACEx3D,GAAIA,EACJjO,QAAO,aAAQjxC,EAAR,aAAgB,OAAFk/C,QAAE,IAAFA,OAAA,EAAAA,EAAI2wB,SAAU,SAAW3wB,EAAG2wB,QAAU,IAC3D1+B,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,IAClCsV,UAAW9F,EAJb,UAME,eAAC,GAAD,CACE0vC,GAAIA,EACJ5pC,UAAW9F,EACX6gD,YAAaA,EACbt+C,WAAYA,EACZquD,MAAOA,EACPzG,OAAQtqD,EACRs7B,iBAAkBA,EAClB0V,YAAaA,IAEf,eAAC,GAASxD,sBAAV,CACEpe,UAAS,OAAEygB,QAAF,IAAEA,GAAF,UAAEA,EAAIzgB,iBAAN,aAAE,EAAel4B,KAAI,SAACoa,GAC7B,OAAOA,EAAE3gB,MAEXsV,UAAWuuD,IAEb,eAACs4C,GAAD,CAAWtsC,QAAO,OAAE3wB,QAAF,IAAEA,OAAF,EAAEA,EAAI2wB,QAASnO,MAAK,OAAExiB,QAAF,IAAEA,OAAF,EAAEA,EAAIwuB,YAC5C,gBAACn9B,GAAD,CAAeroC,MAAM,WAArB,UACE,eAACnH,EAAA,EAAD,CAAKK,UAAU,2CAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC0kE,GAAYx/D,KAAb,CACElG,GAAE,oBAAQk/C,QAAR,IAAQA,OAAR,EAAQA,EAAIl/C,GAAZ,mBACF+mE,OACE1W,EACI,KACA,SAAC5sD,GAAD,OAAW4L,EAAU,CAAE+sG,cAAe34G,KAE5C6R,UAAW9F,EACXshC,OAAO,iBACP7iB,KAAI,OAAEixB,QAAF,IAAEA,OAAF,EAAEA,EAAIk9D,cACVt1C,UAAW,QAIjB,eAAC/lE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACy4G,GAAD,CACEz5G,GAAE,aAAQA,EAAR,aACFinG,SAAQ,OAAE/nD,QAAF,IAAEA,OAAF,EAAEA,EAAI+nD,SACd3xF,UAAW9F,EACXlL,WAAY+rD,EACZ5kD,OAAQwiC,EACR0rB,OAAQxrB,UAzBoB,uBA/BpC,eAACuoE,GAAD,CACEzlE,QAAO,aAAQjxC,GAAU,IACzBkxC,KAAK,aACLC,WAAY,eAACylE,GAAD,MA8DpB,SAAS9kE,GAAT,GASI,IARFoN,EAQC,EARDA,GACWm9D,EAOV,EAPD/mG,UACA+6C,EAMC,EANDA,YACAsJ,EAKC,EALDA,OACAhvB,EAIC,EAJDA,iBACAy1B,EAGC,EAHDA,MACAruD,EAEC,EAFDA,WACAsuC,EACC,EADDA,YACC,EAKGojB,GAAQhhE,OAAO,CACjBzC,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIxjC,YAJRwjB,EAFD,EAECA,QACAo8B,EAHD,EAGCA,WACSoF,EAJV,EAIClxD,QAII8F,EAAY+mG,GAAe37C,EAC3BmD,EACJvuD,IAAc5P,IAAE6E,QAAQ20C,IAAOx5C,IAAE6E,QAAQ20B,IAErC56B,EAAagR,GAAa+6C,EAC1BisD,EACJh4G,GAA+B,QAAf,OAAF46C,QAAE,IAAFA,OAAA,EAAAA,EAAI2B,WAAsC,QAAf,OAAF3B,QAAE,IAAFA,OAAA,EAAAA,EAAI2B,UAEvCu3D,EAAcl1G,mBAClB,wBAAQ,OAAFg8C,QAAE,IAAFA,GAAA,UAAAA,EAAIk5D,mBAAJ,eAAiB7kG,QAAc,OAAP2rB,QAAO,IAAPA,OAAA,EAAAA,EAASk5E,cAAe,MAAO,KAC7D,CAACl5D,EAAIhgB,IAGP,OACE,gBAACn+B,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK6Y,GAAI,EAAGk9C,GAAI,GAAI31D,UAAU,eAA9B,UACE,eAAC,GAAGwjE,OAAJ,CAAW1lB,GAAIA,IACf,eAACn+C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0kE,GAAD,CACE50B,OAAM,oBAAgB,OAAFoO,QAAE,IAAFA,OAAA,EAAAA,EAAImC,oBAAqB,IAAM,IADrD,SAGE,eAAC,GAAQuiB,SAAT,CACE1kC,QAASA,EACTpwB,WAAU,OAAEowC,QAAF,IAAEA,OAAF,EAAEA,EAAImC,mBAChB/rC,UAAWuuD,EACX7xC,OACE0uC,EACI,GACA,CACEpuC,QAAQ,WAAD,cAAa4M,QAAb,IAAaA,OAAb,EAAaA,EAASl/B,GAAtB,oBAA6Bk/C,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAI6B,mBAOxD,eAAChgD,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC0kE,GAAYx/D,KAAb,CACElG,GAAE,oBAAQk/C,QAAR,IAAQA,OAAR,EAAQA,EAAIl/C,GAAZ,gBACF+mE,OACEziE,EAAa,KAAO,SAACb,GAAD,OAAWk2D,EAAO,CAAEljD,YAAahT,KAEvD6R,UAAWA,EACXw7B,OAAO,cACP7iB,KAAI,OAAEixB,QAAF,IAAEA,OAAF,EAAEA,EAAIzoC,YACVqwD,UAAW,YAKnB,gBAAC9lE,EAAA,EAAD,CAAK6Y,GAAI,EAAT,UACE,eAAC9Y,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,uBAAMI,UAAU,wBAAhB,SACE,eAACU,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,aACVgH,KAAK,KACLpG,QAAS,kBAAMo+D,KACfl4D,MAAM,kBALR,SAOGoN,EACG,aACA,WAAa6b,IAAOpf,GAAYo9D,UAAY,kBAKxD,eAACpuE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAAC,GAAG+iE,aAAJ,CACEjlB,GAAIA,EACJhgB,QAASA,EACTy6B,OAAQA,EACRrkD,UAAWuuD,EACXv/D,WAAYA,EACZ+7C,YAAaA,QAInB,eAACt/C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC46G,GAAD,CACE18D,GAAIA,EACJhgB,QAASA,EACT5pB,UAAWuuD,EACXlK,OAAQA,EACRr1D,WAAYA,QAIlB,eAACvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACi7G,GAAD,CACE/8D,GAAIA,EACJ5pC,UAAWuuD,EACXlK,OAAQA,EACRr1D,WAAYg4G,QAIlB,eAACv7G,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,uBAAf,SACGyiE,EAAsB,KACrB,wDACiB3rC,KAAUo1C,gBACvBp1C,KAAU0c,UAAV,OAAoBsK,QAApB,IAAoBA,OAApB,EAAoBA,EAAIlvC,iBAF5B,SAIE,eAAC,KAAK/L,KAAN,CAAWjE,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIq9D,sBAK3B,eAACx7G,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG6iE,EAAsB,KACrB,gBAACx3B,GAAA,EAAD,CAAaziB,UAAQ,EAArB,UACE,eAAC,GAAG66C,YAAJ,CAAgBvlB,GAAIA,IACpB,eAACi6D,GAAD,CACEv5G,MAAO,cACPw4G,YAAaA,EACb12F,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAQ,OAAEzW,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,IACtCyL,OAAQk/B,EACRrmC,WAAY+rD,EACZxpD,SAAU,WACRu5D,IACA9E,oBAYpB,SAAS6gD,GAAT,GAAwC,IAAnBtsC,EAAkB,EAAlBA,QAASnO,EAAS,EAATA,MAC5B,OAAKA,EAEH,eAAC3gE,EAAA,EAAD,CAAKK,UAAU,kDAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,iDAGJ,eAACD,EAAA,EAAD,CAAKK,UAAU,yBAAf,SACE,gBAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACF,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACG,eADH,IACoB6uE,OAGrBnO,EAAMhjD,MAAM,cAAcnY,KAAI,SAAC04B,GAC9B,OAAIA,EAAE0uC,WAAW,SAEb,eAAC5sE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,oBAAG6wC,KAAM5S,EAAGl4B,OAAO,SAAS+oC,IAAI,sBAAhC,SACG7Q,OAHGA,GAUV,eAACl+B,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMi+B,KADEA,gBA7BP,KCpQN,SAASu9E,GAAT,GAKX,IAJFh/E,EAIC,EAJDA,aAIC,IAHDz6B,cAGC,MAHQ,CAAC,WAAY,SAAU,OAAQ,eAGvC,MAFDynB,mBAEC,MAFa,CAAExqB,GAAI,WAAYmoB,MAAM,GAErC,EADEnlB,EACF,wDACKC,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,OACRC,SAAU,WACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAGzD,CACEzD,GAAI,SACJmD,OAAQ,aACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,SAAC2U,GACT,OAAQA,EAAE2J,QACR,IAAK,KACH,MAAO,WAAa3J,EAAElP,IACxB,IAAK,KACH,MAAO,MAAQkP,EAAElP,IACnB,QACE,OAAOkP,EAAElP,KAAO,OAGtBwe,UAAW,cACX7jB,KAAM,YAA6D,IAAD,IAAzDG,IAAOC,SAAiB5D,GAAiC,aAAlB,GAAkB,GAAtC6I,IAAS6Y,EAA6B,EAA7BA,OAAiBje,EAAY,EAAZA,MACpD,MAAe,OAAXie,EAEA,eAAC,OAAD,CAAMtgB,UAAU,aAAae,GAAI,CAAEC,SAAS,QAAD,OAAUpC,IAArD,SACGyD,GAAS,OAGI,OAAXie,EAEL,eAAC,OAAD,CAAMtgB,UAAU,aAAae,GAAI,CAAEC,SAAS,aAAD,OAAepC,IAA1D,SACGyD,GAAS,OAIP,gCAAOA,GAAS,SAI7B,CACEzD,GAAI,OACJmD,OAAQ,cACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,WAEVI,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,OACE,sBAAKnC,MAAO,CAAE42E,SAAU,QAASoY,SAAU,cAA3C,SACG7sF,GAAS,SAKlB,CACEzD,GAAI,cACJmD,OAAQ,kBACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,OACJmD,OAAQ,WACRC,SAAU,SAACo2C,GAAD,OAAOA,EAAElwC,MAAQ,MAC3BjG,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,SAEb,CACErnB,GAAI,SACJmD,OAAQ,OACRC,SAAU,SAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACV6V,gBAAgB,MAGpB,IAGF,OACE,eAAClY,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,aACEoB,UAAQ,EACR0pB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLxI,MAAM,gBACNqD,QAASA,EACTunB,YAAaA,EACbznB,OAAQA,EACRiB,KAAMw5B,EACNzS,iBAAe,EACfF,YAAa,SAAClnB,GAAS,IAAD,EACpB,UAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAKC,gBAAT,aAAI,EAAe64G,KACjB,MAAO,CAAEr7G,UAAW,qBAGpB4B,YC9HH,SAAS05G,KACtB,IAAM18G,EAAKgyC,SAASC,eAAYjyC,IADE,EAEVk0E,GAAGzxE,OAAO,CAChCzC,KACAg/C,aAAa,EACbC,aAAa,EACbwsB,kBAAkB,IAJZvsB,EAF0B,EAE1BA,GAAI1vC,EAFsB,EAEtBA,QAOZ,OACE,eAACknG,GAAD,CACEx3D,GAAIA,EACJjO,QAAO,aAAQjxC,EAAR,QACPmxC,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,IAClCsV,UAAW9F,EAJb,SAME,eAACgtG,GAAD,CACEh/E,aAAY,OAAE0hB,QAAF,IAAEA,OAAF,EAAEA,EAAIy9D,KAClBrnG,UAAW9F,EACXzM,OAAQ,CAAC,WAAY,SAAU,cAAe,QAC9C4nB,eAAgB,CAAE3qB,GAAI,OAAQyD,MAAO,qBCrB9B,SAASm5G,KACtB,IAAM58G,EAAKgyC,SAASC,eAAYjyC,IADM,EAEdk0E,GAAGzxE,OAAO,CAAEzC,GAAIA,IAAhCk/C,EAF8B,EAE9BA,GAAI1vC,EAF0B,EAE1BA,QACZ,OAAIA,KAAW,OAAC0vC,QAAD,IAACA,OAAD,EAACA,EAAIxjC,WAEhB,eAACg7F,GAAD,CACEzlE,QAAO,aAAQjxC,EAAR,YACPkxC,KAAM1hC,EAAU,aAAe,oBAC/B2hC,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,MAIjC,eAAC,KAAD,CAAUmC,GAAE,2BAAe+8C,QAAf,IAAeA,OAAf,EAAeA,EAAIxjC,aN4GxCy/F,GAAgBp6G,IAAM6tB,GACtBusF,GAAgBp6G,IAAIi7G,WAnCpB,YAAwD,IAAlCh9G,EAAiC,EAAjCA,OAAQsW,EAAyB,EAAzBA,UAAWhR,EAAc,EAAdA,WAAc,EACJysD,KAAzCM,EAD6C,EAC7CA,kBAAmBM,EAD0B,EAC1BA,kBAC3B,OACE,uCACE,eAAC/iC,GAAD,CACElvB,KAAK,QACLE,MAAM,QACN6D,MAAO,eAAC,KAAKQ,KAAN,CAAWjE,GAAE,OAAEhB,QAAF,IAAEA,OAAF,EAAEA,EAAQe,QAC9B0B,GAAIwa,KAAKza,OACT8T,UAAWA,EACXzO,SAAU8qD,EACVjuD,QAAM,EACNsW,aAAW,EACX1V,WAAYA,IAEd,eAACsqB,GAAD,CACElvB,KAAK,UACLE,MACE,eAAC,KAAK8B,MAAMgG,MAAZ,CACEC,SAAU,SAAClE,GACT4tD,EAAkB5tD,MAIxBA,MAAO,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAE,OAAEhB,QAAF,IAAEA,OAAF,EAAEA,EAAQyG,UAC3ChE,GAAIwa,KAAKva,MAAMF,OACf8T,UAAWA,EACXzO,SAAUwqD,EACV/sD,WAAYA,Q,OO9GhBvF,aAAkB,CACpBC,OAAQuD,GAAMvD,OACdE,QAASqD,GAAMrD,UALF29G,G,GAAbz9G,YACAE,G,GAAAA,UACqBw9G,G,GAArBvrF,oBAMIwrF,GAAc,WAA2B,IAAD,yDAAP,GAAhB/8G,EAAuB,EAAvBA,GAAO+O,EAAgB,uBACtC3F,EAAW0O,cACjB,OAAO,aACL6yB,iBAAkB5iC,uBAChB,SAACgH,GAAD,OACE3F,EAAS7G,GAAMrD,QAAQyrC,iBAAd,aAAiC3qC,MAAO+O,KAAStC,KACxD4jB,OAEJ,CAACjnB,EAAUpJ,KAEVV,GAAU,aAAEU,MAAO+O,MCvBX,SAASiuG,GAAT,GAAwD,IAAhCh9G,EAA+B,EAA/BA,GAAIkC,EAA2B,EAA3BA,SAAUo3D,EAAiB,EAAjBA,cACnD,OACE,eAACx3D,EAAA,EAAD,CACEC,QAAQ,OACRC,QAAS,WACPs3D,EAAct5D,IAHlB,SAMGkC,GAAYlC,ICAJ,SAASi9G,GAAT,GAaX,IAZFzyE,EAYC,EAZDA,UAYC,IAXDznC,cAWC,MAXQ,CACP,cACA,KACA,YACA,WACA,OACA,eAKD,EAHDu2D,EAGC,EAHDA,cAGC,IAFDhkD,iBAEC,SADEtS,EACF,mEACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,cACJmD,OAAQ,cACRC,SAAU,KACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,SAAC0R,GAAD,qBACJ,eAAC8nG,GAAD,CACEh9G,GAAE,OAAEkV,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,iBAAE,EAAQC,gBAAV,aAAE,EAAkB5D,GACtB61B,KAAI,OAAE3gB,QAAF,IAAEA,GAAF,UAAEA,EAAGvR,WAAL,aAAE,EAAQC,SAASs5G,WACvB5jD,cAAeA,EAHjB,SAKG,cAAQpkD,QAAR,IAAQA,GAAR,UAAQA,EAAGvR,WAAX,iBAAQ,EAAQC,gBAAhB,aAAQ,EAAkB5D,QAIjC,CACEA,GAAI,KACJmD,OAAQ,KACRC,SAAU,QAEZ,CACED,OAAQ,YACRnD,GAAI,YACJ6mB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnCnlB,SAAU,oBAAG8pE,EAAH,EAAGA,SAAH,OAAkB,UAAAF,GAAS/6D,gBAAT,mBAAoBi7D,UAApB,eAA+BV,SAAU,IACrEnpE,OAAQS,KACRP,OAAQ,OACR8jB,UAAW,eAEb,CACErnB,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACEjY,GAAI,OACJmD,OAAQ,OACRC,SAAU,aACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,SAIV,CACEn8C,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVI,KAAM,kBAAGC,EAAH,EAAGA,MAAOE,EAAV,EAAUA,IAAV,OACJ,eAACw5G,GAAD,CACE/E,YAAa30G,EACbzD,GAAE,OAAE2D,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe5D,UAK3B,CAACs5D,IAEH,OACE,eAAC32D,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,aACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMwmC,EACNl1B,UAAWA,GACPtS,IAKV,SAASm6G,GAAT,GAAyD,IAApB/E,EAAmB,EAAnBA,YAAap4G,EAAM,EAANA,GACxC2qC,EAAqBoyE,GAAY,CACvC/8G,KACA2b,QAAQ,IAFFgvB,iBAIR,OACE,eAACwuE,GAAD,CACEf,YAAaA,EACb12F,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAU31D,GAClCyL,OAAQk/B,IC7Gd,IAaeyyE,GAbE,CAEf96G,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQs6G,GACRr6G,OAAQm6G,GACR7vE,UAAW8vE,GAEXn6G,MAAOs6G,ICPMI,GANQ79G,eAASC,MAAM,CACpC69G,SAAU39G,eAASC,MAAM,YAAYC,WACrCg2B,KAAMl2B,eAASC,MAAM,QAAQC,WAC7BqtE,SAAUvtE,eAASC,MAAM,aAAaC,aCYzB,SAAS09G,GAAT,GAKX,IAJFn5G,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFDC,kBAEC,aADD5D,aACC,SACD,OACE,eAAC,KAAD,CACE6D,cAAeH,EACfC,SAAU,gBAAMD,EAAN,2BACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ64G,IAClB/4G,WAAYA,EACZI,aAAW,EATb,SAWE,eAAC84G,GAAD,CAAcp5G,OAAQA,EAAQ1D,MAAOA,EAAO4D,WAAYA,MAK9D,SAASk5G,KAAgB,IAAD,EACkB58G,eAAhCD,EADc,EACdA,WAAY+yB,EADE,EACFA,SAAUjb,EADR,EACQA,MADR,EAEI9D,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA/CmE,EAFc,EAEdA,QAASrE,EAFK,EAELA,KAEX6pB,EAAU9lB,EAAM,WAChB6kG,EAAW7kG,EAAM,YAEvB,OADA5X,eAEE,gBAACC,GAAA,EAAD,WACE,gBAACA,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,KAAR,SACE,eAACi0B,GAAD,CACEx1B,KAAK,WACLE,MAAM,WACN0E,WAAYoQ,IAAS4oG,IAAavkG,MAGtC,eAAC/X,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAW2J,KAAZ,CACElL,KAAK,aACLE,MAAM,cACNu1B,eAAe,EACfvtB,SAAU8M,IAAS4oG,IAAavkG,EAChCqc,YAAa,wBAAOhtB,KAAM,SAG9B,eAACpH,EAAA,EAAD,CAAKI,UAAU,cAAf,SACE,eAACq8G,GAAD,CAAsB/9G,KAAK,WAAWE,MAAM,uBAGhD,gBAACkB,GAAA,EAAKC,IAAN,CAAUK,UAAW,0BAArB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,mBACLE,MAAM,mBACNgI,SAAU8M,IAAS4oG,IAAavkG,MAGpC,eAAC/X,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,2BACLE,MAAM,0BACNgI,SAAU8M,IAAS4oG,IAAavkG,MAGpC,eAAC/X,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,iBACLE,MAAM,gBACNgI,SAAU8M,IAAS4oG,IAAavkG,SAItC,eAACjY,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEsI,KAAK,OACL7H,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GACT4sB,EAAS,UAAW5sB,EAAEC,OAAOtD,QAE/BA,MAAO86B,EACPy8C,UAAW,UAIjB,eAACl6E,GAAA,EAAKC,IAAN,CAAUK,UAAW,0CAArB,SACE,eAACU,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBAQR,SAASu0B,GAAT,GAA4D,IAArCx1B,EAAoC,EAApCA,KAAoC,IAA9BM,UAA8B,MAAzBN,EAAyB,EAAnBE,EAAmB,EAAnBA,MAAUoD,EAAS,wCAIrDwU,aAAc,CAAE9X,SAJqC,IAEvD+X,MAAS5Q,EAF8C,EAE9CA,SAAa4Q,EAFiC,6BAGzC3K,EAHyC,EAGvD4K,WAAc5K,MAHyC,EAOrDlM,eADF+W,aAAgBrT,kBANuC,SASzD,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,eAAC,KAAK4B,OAAN,2BACMiW,GADN,IAEE7P,SAAUtD,EACVuC,SAAU,SAACsO,GACTtO,EAASsO,KAEPnS,IAEN,eAAClC,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAAS0wG,GAAT,GAAsE,IAAtC/9G,EAAqC,EAArCA,KAAqC,IAA/BM,UAA+B,MAA1BN,EAA0B,EAApBE,EAAoB,EAApBA,MAAOgY,EAAa,EAAbA,UAAa,EAI/DJ,aAAc,CAAE9X,SAJ+C,IAEjE+X,MAAS5Q,EAFwD,EAExDA,SAAU+uB,EAF8C,EAE9CA,OAAQnyB,EAFsC,EAEtCA,MACbqJ,EAHmD,EAGjE4K,WAAc5K,MAHmD,EAO/DlM,eADF+W,aAAgBrT,kBANiD,SAQnE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,eAACmtE,GAAD,CACEtpE,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVe,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,EAC9CC,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,aC1JR,SAAS2wG,GAAT,GAUX,IATFx1G,EASC,EATDA,MACAL,EAQC,EARDA,KACAQ,EAOC,EAPDA,OACA3H,EAMC,EANDA,MACA0D,EAKC,EALDA,OAIGpB,GACF,EAJD2nC,iBAIC,EAHDgzE,cAGC,EAFD39G,GAEC,oGACD,OACE,gBAACmI,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAAQD,KAAK,KAAKm7D,SAAS,SAAtD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,UAAcL,MAEhB,gBAACC,GAAA,EAAMK,KAAP,WACE,eAAC+0G,GAAD,aACE/mD,SAAUnuD,EACV3H,MAAOA,EACP0D,OAAQA,GACJpB,IAEN,wBACEtC,EAUE,KATF,uCACE,eAACgZ,GAAA,EAAD,CAAO3X,QAAS,OAAhB,SACE,eAACo2G,GAAD,CACEC,YAAah0G,EAAOg0G,YACpB9zG,YAAY,MAGhB,eAAC,GAAD,CAAckiG,OAAQpiG,aC9BnB,SAASw5G,GAAT,GAAwD,IAAzBC,EAAwB,EAAxBA,WAAe76G,EAAS,+BACpE,OACE,qCACG66G,EAAa,eAAC,GAAD,aAAcA,WAAYA,GAAgB76G,IAAY,OAM1E,SAAS+0D,GAAT,GAA0D,IAAlCC,EAAiC,EAAjCA,SAAU6lD,EAAuB,EAAvBA,WAAY9uD,EAAW,EAAXA,QAAW,EACNguD,GAAY,CAC3D/8G,GAAI69G,EACJliG,QAAQ,IAFF8uB,EAD+C,EAC/CA,SAAUp7B,EADqC,EACrCA,UAAWH,EAD0B,EAC1BA,OAAQM,EADkB,EAClBA,QAKrC,OACE,eAACkuG,GAAD,CACEx1G,MAAO,sBAAgBuiC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUzqC,IACjCoE,OAAM,eAAOqmC,GACbpiC,OAAQ0mD,EACRlnD,MAAM,EACN2H,QAASA,EACT9O,OAAO,EACP4qB,UAAWpc,EACX7K,SAAU,SAAComC,GACT,IAAMqzE,EAAe,eAAQrzE,GAC7BqzE,EAAgBZ,WAAa9kF,KAAM0jB,MAAMrR,EAASyyE,YAClD7tG,EAAUyuG,GAAiBrxG,MAAK,WAC9BurD,IACAjJ,UC9BK,SAASgvD,GAAT,GAKX,IAAD,IAJDn+G,aAIC,MAJO,oBAIP,EAHDu4D,EAGC,EAHDA,SACA/6C,EAEC,EAFDA,cAEC,IADDxV,gBACC,SACOuH,EAAc4tG,KAAd5tG,UADP,EAE6BhK,oBAAS,GAFtC,mBAEMizD,EAFN,KAEeC,EAFf,KAYD,OARAC,aACEF,EACI,GACA,CACE,WAAY,kBAAMC,GAAW,MAKnC,uCACE,eAACv2D,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAMq2D,GAAW,IAC1BzwD,SAAUA,EAHZ,SAKGhI,IAEH,eAAC89G,GAAD,CACEx1G,MAAM,gBACN9D,OAAQgZ,EACRvV,KAAMuwD,EACN/vD,OAAQ,kBAAMgwD,GAAW,IACzB33D,OAAO,EACP2D,SAAU,SAAComC,GACT,IAAMqzE,EAAe,eAAQrzE,GAC7BqzE,EAAgBZ,WAAa9kF,KAAM0jB,MAAMrR,EAASyyE,YAClD/tG,EAAU2uG,GAAiBrxG,MAAK,WAC9B0rD,IACAE,GAAW,YCtBR,SAAS2lD,KACtB,IAAMh+G,EAAKgyC,SAASC,eAAYjyC,IAC1BygC,EAAS9rB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAFhB,EAa7Bw/D,GAAGzxE,OAAO,CACZzC,KACAg/C,aAAa,EACbysB,kBAAkB,EAClBxsB,aAAa,EACboP,UAAU,IAbVnP,EAL+B,EAK/BA,GACA1vC,EAN+B,EAM/BA,QACAH,EAP+B,EAO/BA,UACAgxC,EAR+B,EAQ/BA,YACA+f,EAT+B,EAS/BA,MACAruD,EAV+B,EAU/BA,WACAoxC,EAX+B,EAW/BA,gBACAC,EAZ+B,EAY/BA,gBASMlkB,EAAYukC,GAAQhhE,OAAO,CACjCzC,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIxjC,YADFwjB,QArByB,EAyBevqB,aAC9C,SAACpS,GAAD,OAAWA,EAAMqS,QADXmE,EAzByB,EAyBzBA,QAASrE,EAzBgB,EAyBhBA,KAAMuB,EAzBU,EAyBVA,qBAIjB4tD,EAAsBr0D,GAAW9J,IAAE6E,QAAQ20C,GAE3CmR,GACF,OAAFnR,QAAE,IAAFA,OAAA,EAAAA,EAAIE,oBAA+C,aAAxB,OAAFF,QAAE,IAAFA,OAAA,EAAAA,EAAIE,mBAEzB6+D,EAAallG,GAAW9C,EAlCG,EAqC/B9Q,mBAAS,MArCsB,mBAoC1B+4G,EApC0B,KAoCCC,EApCD,OA4C7Bf,GAASpwE,UAAU,CACrBrxB,OAAQ,OACRrV,OAAQ,CACNmV,KAAMzb,KAPRwqC,EAxC+B,EAwC/BA,UACO4zE,EAzCwB,EAyC/B3rG,MACS4rG,EA1CsB,EA0C/BzwG,QACS0wG,EA3CsB,EA2C/B9uG,QAQIirD,EAAqB,WACzB2jD,EAAe,CAAEl/D,GAAIl/C,IACrBq+G,IACAj+C,KAWIm+C,EAAqBx2G,uBAAY,WACrCq2G,IACAC,MACC,CAACA,EAAkBD,IAIhBI,EAAsBt7G,mBAAQ,WAClC,MAAO,CACLuY,KAAMzb,EACNs9G,SAAU78E,EACVy8E,WAAY/rF,SAEb,CAACnxB,EAAIygC,IAER,OACE,gBAACi2E,GAAD,CACEx3D,GAAIA,EACJjO,QAAO,aAAQjxC,EAAR,OACPmxC,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,IAClCsV,UAAW9F,EACX4hC,iBAAiB,EALnB,UAOE,eAAC,GAAGwzB,OAAJ,CAAW1lB,GAAIA,IACf,gBAACp+C,GAAA,EAAKC,IAAN,WACE,gBAACC,EAAA,EAAD,CAAK6Y,GAAI,EAAGk9C,GAAI,GAAI31D,UAAU,eAA9B,UACE,gBAACL,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAKC,OAAN,CACE5B,MAAM,WACN6D,MAAK,OAAEy7C,QAAF,IAAEA,OAAF,EAAEA,EAAIu/D,QACX53G,SAAU,SAAC7G,GAAD,OACRqP,EAAU,aACRovG,QAASz+G,GACc,MAAjB,OAAFk/C,QAAE,IAAFA,OAAA,EAAAA,EAAIsuB,YAAoB,CAAEA,WAAY,MAAS,MAGvDxzD,aAAW,EACX1V,WAAY+rD,IAAgB4tD,EAC5B3oG,UAAWuuD,MAGf,eAAC7iE,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,GAAGyrE,SAASxrE,OAAb,CACE5B,MAAM,SACN6D,MAAK,OAAEy7C,QAAF,IAAEA,OAAF,EAAEA,EAAIsuB,WACX3mE,SAAU,SAAC7G,GACT,IAAI2rE,EAAQ,CAAE6B,WAAYxtE,GAW1B,OAVKA,EACW,OAAPA,GAAsB,OAAPA,EAAa2rE,EAAM9qB,SAAW,KACtC,OAAP7gD,IAAa2rE,EAAM9qB,SAAW,MAF9B8qB,EAAM8yC,QAAU,GAIrBz+G,KACE,OAACk/C,QAAD,IAACA,OAAD,EAACA,EAAIu/D,WACP9yC,EAAM8yC,QAAU/pG,IAIbrF,EAAUs8D,IAEnB3xD,aAAW,EACX1V,WAAY+rD,IAAgB4tD,EAC5B3oG,UAAWuuD,SAIjB,eAAC9iE,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAAC48G,GAAD,CACE5lD,SAAUyC,EACVojD,WAAYK,EACZnvD,QA3Ec,WAC1BovD,EAA6B,SA4EnB,eAAClB,GAAD,CACEzyE,UAAWA,EACX8uB,cAnFa,SAACt5D,GAC1Bm+G,EAA6Bn+G,IAmFjBsV,UAAWgpG,EACXhzF,UAAW,kBAAMizF,KACjBx7G,OAAQ,CACN,cACA,YACA,WACA,OACA,sBAKR,eAAChC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC+8G,GAAD,CACE3gG,cAAeohG,EACfrmD,SAAUsC,WAKlB,gBAACz5D,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,uBAAMI,UAAU,wBAAhB,SACE,eAACU,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,aACVgH,KAAK,KACLpG,QAAS,kBAAMo+D,KACfl4D,MAAM,kBALR,SAOGsH,EACG,aACA,WAAa2hB,IAAOpf,GAAYo9D,UAAY,kBAKxD,gBAACnuE,EAAA,EAAD,CAAKI,UAAU,OAAf,UACE,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAGmjE,aAAJ,CACEjlB,GAAIA,EACJhgB,QAASA,EACTy6B,OAAQtqD,EACRiG,UAAWuuD,EACXv/D,WAAY+rD,EACZhQ,YAAaA,QAInB,eAACt/C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC46G,GAAD,CACE18D,GAAIA,EACJhgB,QAASA,EACT5pB,UAAWuuD,EACXlK,OAAQtqD,EACR/K,WAAY+rD,QAIlB,eAACtvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACi7G,GAAD,CACE/8D,GAAIA,EACJ5pC,UAAWuuD,EACXlK,OAAQtqD,EACR/K,WAAY+rD,iBAOxB,eAAC9f,GAAD,CAAeroC,MAAM,cAArB,SACE,eAACnH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACy4G,GAAD,CACEz5G,GAAE,aAAQA,EAAR,gBACFinG,SAAQ,OAAE/nD,QAAF,IAAEA,OAAF,EAAEA,EAAIw/D,WACdppG,UAAW9F,EACXlL,WAAY+rD,EACZ5kD,OAAQ03C,EACRwW,OAAQvW,SATuB,oBAcvC,eAAC7S,GAAD,CAAeroC,MAAM,YAArB,SACE,eAACnH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC29G,GAAD,CACE3+G,GAAE,aAAQA,EAAR,mBACFyb,KAAMzb,EACNiW,qBAAsBA,SANO,0BAe3C,IAAMk3D,GAAgB,CACpB,UACA,mBACA,OACA,gBACA,WACA,SACA,mBACA,eACA,gBAGIo1B,GAAqB,CAAEviG,GAAI,gBAAiBmoB,MAAM,GAExD,SAASw2F,GAAT,GAA6D,IAA/BljG,EAA8B,EAA9BA,KAAMxF,EAAwB,EAAxBA,qBAAwB,EACpB9Q,mBAAS,QADW,mBACnDw+F,EADmD,KACtC4E,EADsC,OAETN,GAAWj7D,UAAU,CACpErxB,OAAQ,OACRrV,OAAQ,CACNmV,KAAMA,KAHF4mB,EAFkD,EAElDA,YAAa5vB,EAFqC,EAErCA,MAAO7E,EAF8B,EAE9BA,QAAS4B,EAFqB,EAErBA,QAO/B8b,EAAYvjB,uBAAY,WAC5B0K,IACA7E,MACC,CAACA,EAAS6E,IAEb,OACE,uCACE,eAAC1R,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,UACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,QAAQ6F,UAAQ,EAACxG,UAAU,YAA3C,6BAGA,eAACU,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMumG,EAAe,SAC9BxmG,QAAyB,SAAhB4hG,EAAyB,UAAY,YAHhD,yBAOA,eAAC7hG,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBAAMumG,EAAe,OAC9BxmG,QAAyB,OAAhB4hG,EAAuB,UAAY,YAH9C,4BASJ,eAACD,GAAD,CACE1/F,KAAMq+B,EACN/W,UAAWA,EACXvoB,OAAQoqE,GACR3iD,YAAa+3E,GACb36F,UAAWqO,EACXzG,QAASA,EACTm0F,YAAaA,OC3TN,SAASib,KACtB,IAAM5+G,EAAKgyC,SAASC,eAAYjyC,IADQ,EAEhBk0E,GAAGzxE,OAAO,CAAEzC,KAAIg/C,aAAa,IAA7CE,EAFgC,EAEhCA,GAAI1vC,EAF4B,EAE5BA,QAENxL,EAAI,OAAGk7C,QAAH,IAAGA,OAAH,EAAGA,EAAI6wB,eAAe9iD,QAAO,SAAC4xF,EAAK/wG,GAC3C,IAAMgxG,EAAI,OAAGhxG,QAAH,IAAGA,OAAH,EAAGA,EAAGq8B,MAAM5jC,KAAI,SAACw4G,GACzB,MAAO,CACL/c,SAAUl0F,EAAEk0F,SACZ14F,KAAMwE,EAAExE,KACRi1B,QAASzwB,EAAEywB,QACXygF,SAAUlxG,EAAEkxG,SACZtX,SAAUqX,EAAGrX,SACbv8C,SAAUr9C,EAAEq9C,aAGhB,OAAO0zD,EAAItrG,OAAOurG,KACjB,IAEG77G,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,YACRC,SAAU,WACVI,KAAM,kBAAGC,EAAH,EAAGA,MAAOE,EAAV,EAAUA,IAAV,OACJ,eAACm+F,GAAD,CAAWC,aAAY,OAAEp+F,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe0F,KAAM04F,SAAUv+F,MAG5D,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,KAAKQ,KAAN,CAAWjE,GAAE,OAAEyD,QAAF,IAAEA,OAAF,EAAEA,EAAO+S,cAAeyB,QAAQ,MAGjD,CACEjY,GAAI,OACJmD,OAAQ,OACRC,SAAU,WAEVI,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,OAAKA,EAEH,gCAAOy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,MAFpC,KAMvB,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,WAEZ,CACEpD,GAAI,WACJmD,OAAQ,OACRC,SAAU,eAGd,IAEF,OACE,eAACszG,GAAD,CACEx3D,GAAIA,EACJjO,QAAO,aAAQjxC,EAAR,cACPmxC,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,IAClCsV,UAAW9F,EAJb,SAME,eAACzO,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEoB,UAAQ,EACRnE,MAAM,UACNoE,KAAMA,EACNf,QAASA,EACTqS,UAAW9F,UC1ER,SAASyvG,GAAT,GAKX,IAJF//D,EAIC,EAJDA,GACAr3C,EAGC,EAHDA,KACAQ,EAEC,EAFDA,OAEC,IADD03E,qBACC,MADe,aACf,EACK32E,EAAW0O,cADhB,EAE2B3S,oBAAS,GAFpC,mBAEMykF,EAFN,KAEcC,EAFd,OAG+C1kF,mBAAQ,OACtD+5C,QADsD,IACtDA,OADsD,EACtDA,EAAIggE,wBAJL,mBAGM18B,EAHN,KAGwB28B,EAHxB,OAMuBh6G,mBAAQ,OAAC+5C,QAAD,IAACA,OAAD,EAACA,EAAIytC,YANpC,mBAMMzF,EANN,KAMYk4B,EANZ,OAOuCj6G,mBAAQ,OAAC+5C,QAAD,IAACA,OAAD,EAACA,EAAI6tC,oBAPpD,mBAOM1K,EAPN,KAOoBg9B,EAPpB,KASKn8B,EADmBvuE,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMuB,eAClBn3C,SAASowE,GATlD,EAU+Bl9E,mBAAS,MAVxC,mBAUMm9E,EAVN,KAUgBg9B,EAVhB,OAYqCn6G,mBAAQ,OAAC+5C,QAAD,IAACA,OAAD,EAACA,EAAI0tC,mBAZlD,mBAYM2yB,EAZN,KAYmBC,EAZnB,OAaqCr6G,mBAAQ,OAAC+5C,QAAD,IAACA,OAAD,EAACA,EAAIguC,mBAblD,mBAaMuyB,EAbN,KAamBC,EAbnB,OAcyCv6G,mBAAQ,OAAC+5C,QAAD,IAACA,OAAD,EAACA,EAAIiuC,qBAdtD,mBAcM9M,EAdN,KAcqBs/B,EAdrB,OAeuDx6G,mBAAQ,OAC9D+5C,QAD8D,IAC9DA,OAD8D,EAC9DA,EAAI+tC,4BAhBL,mBAeMvK,EAfN,KAe4Bk9B,GAf5B,QAkB+Dz6G,mBAAQ,OACtE+5C,QADsE,IACtEA,OADsE,EACtEA,EAAI8tC,gCAnBL,qBAkBMvK,GAlBN,MAkBgCo9B,GAlBhC,MAsBK98B,GAAYpuE,aAAY,SAACpS,GAAD,OAAWA,EAAMslD,MAAMD,2BAC/Co7B,GAAaD,GAAU9wE,SAASwwE,IAkBhC8I,GAA6B,SAACp2E,IACZ,IAAlBkrE,IAAgC,IAANlrE,GAAYwqG,GAAiB,GAC3DC,GAAwBzqG,IAUpB2qG,GAA0BP,EAA4B,UAAd,YACxCQ,GAAsB74B,EAAqB,UAAd,YAE7B84B,GAA8BP,EAChC,UACA,kBACEQ,GAA6BR,EAC/B,kBACA,UAEES,GAAuBh5B,EAAO,UAAY,kBAC1Ci5B,GAAsBj5B,EAAO,kBAAoB,UAEjDk5B,GAA8Bb,EAChC,UACA,kBACEc,GAA6Bd,EAC/B,kBACA,UAEEv6B,GAA2BtC,EAC7B,CAAE3gF,QAAS,UAAW6F,UAAU,GAChC,CACE7F,QAAS,kBACT6F,UACG23G,GAC6B,SAA7B98B,IAC8B,SAA7BA,IAGJwC,GAA0BvC,EAC5B,CAAE3gF,QAAS,iBAAkB6F,UAAoB23G,GACjD,CAAEx9G,QAAS,SAAU6F,UAAU,GAE7Bs9E,GAAwB7E,EAC1B,CAAEt+E,QAAS,UAAW6F,UAAU,GAChC,CAAE7F,QAAS,kBAAmB6F,UAAoB23G,GAEhDp6B,GAAuB9E,EACzB,CACEt+E,QAAS,iBACT6F,UAAoB23G,GAAe78B,GAErC,CAAE3gF,QAAS,SAAU6F,UAAU,GAE7B04G,GACJ56G,IAAE6E,QAAQi4E,IAAiD,KAA5BA,EAAiBp0D,OAC5C,UACA,UAENtS,qBAAU,WACRqjG,EAAmB,OAACjgE,QAAD,IAACA,OAAD,EAACA,EAAI2tC,wBACxBuyB,EAAO,OAAClgE,QAAD,IAACA,OAAD,EAACA,EAAIytC,YACZ0yB,EAAe,OAACngE,QAAD,IAACA,OAAD,EAACA,EAAI6tC,oBAEpB,IAAMwzB,EAAYpvF,MAASuH,QAAQ,SAASE,IAAI,EAAG,UAE7C4nF,EACH96G,IAAE6E,QAAF,OAAU20C,QAAV,IAAUA,OAAV,EAAUA,EAAI4tC,iBAA0C,MAArB,OAAF5tC,QAAE,IAAFA,OAAA,EAAAA,EAAI4tC,gBAElCyzB,EADAnoF,KAAMwc,UAAN,OAAgBsK,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAI4tC,gBAE1BwyB,EAAYkB,GAEZhB,EAAc,OAACtgE,QAAD,IAACA,OAAD,EAACA,EAAI0tC,mBACnB8yB,EAAc,OAACxgE,QAAD,IAACA,OAAD,EAACA,EAAIguC,mBACnByyB,EAAgB,OAACzgE,QAAD,IAACA,OAAD,EAACA,EAAIiuC,qBACrByyB,GAAuB,OAAC1gE,QAAD,IAACA,OAAD,EAACA,EAAI+tC,4BAC5B4yB,GAA2B,OAAC3gE,QAAD,IAACA,OAAD,EAACA,EAAI8tC,kCAC/B,CAAC9tC,IAEJ,IAAMuhE,GAAgB,CACpB5zB,uBAAwBrK,EACxBmK,WAAYzF,EACZ6F,mBAAoB1K,EACpByK,eAAgB10D,KAAM0jB,MAAMwmC,GAC5BsK,kBAAmB2yB,EACnBryB,kBAAmBuyB,EACnBtyB,oBAAqB9M,EACrB2M,+BAAgCvK,GAChCwK,2BAA4BvK,GAG9B5mE,qBAAU,YACO,IAAX8tE,GACFxgF,EACE8qE,GAAGh1E,QAAQ8jD,aAAa,CACtBhjD,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIl/C,GACRijD,OAAQw9D,MAGTh0G,KAAK4jB,KACL5jB,MAAK,YAAuB,IAAdsU,EAAa,EAAnB/c,KACP6lF,GAAU,GACV9J,EAAch/D,MAEflU,OAAM,WACLg9E,GAAU,QAKf,CAACzgF,EAAUwgF,IAEd,IAAM9C,IACHy4B,GAAer4B,IAAqC,YAA5Bo5B,GAU3B,OACE,gBAACn4G,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQA,EACRD,KAAK,KACL+pB,kBAAgB,gCAChBoxC,SAAS,SALX,UAOE,eAACp7D,GAAA,EAAMhF,OAAP,CAAc/B,UAAU,OAAOkH,aAAW,EAA1C,SACE,eAACH,GAAA,EAAMI,MAAP,CAAavI,GAAG,gCAAhB,qCAIF,gBAACmI,GAAA,EAAMK,KAAP,CAAYpH,UAAU,YAAtB,UACE,eAAC+5E,GAAD,CAAatzE,KAAM+hF,IACnB,gBAACvmB,GAAA,EAAD,CAAWthE,QAAQ,QAAnB,UACE,gBAACshE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAS+9G,GAAzB,UACE,eAAC/+G,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,UACG,uCAEH,eAAC5F,EAAA,EAAD,CACEC,QAASq+G,GACTh/G,UAAW,YACXY,QAAS,kBAAMw9G,GAAe,IAHhC,iBAOA,eAAC19G,EAAA,EAAD,CACEC,QAASs+G,GACTj/G,UAAW,YACXY,QAAS,kBAAMw9G,GAAe,IAHhC,qBASHD,EACC,uCACE,gBAACx+G,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,sCAGA,eAAC,GAAKoyF,uBAAuBhyF,OAA7B,CACEiC,MAAOg/E,GACP57E,SA7LmB,SAACpD,GAAW,IAAD,EAChD,GAAIg/E,KAA6Bh/E,EAAjC,CAEA,IAAM4pF,EAAU5K,GAChBo9B,GAA4Bp8G,GACuB,OAA/C,UAAAs/E,GAAU9wE,SAASxO,UAAnB,eAA2B6pF,kBAC7B/B,IAA2B,GACb,SAAV9nF,GAA8B,SAAVA,GAA8B,OAAVA,EAC1Ck8G,GAAiB,GACE,SAAZtyB,GAAkC,SAAZA,GAAkC,OAAZA,GACnDsyB,GAAiB,KAEnBp0B,IAA2B,IACL,IAAlBlL,GAAwBs/B,GAAiB,MAiL7B/3G,UAAW23G,EACXvlG,aAAa,OAGjB,eAAChZ,EAAA,EAAD,UACiB,MAAdgiF,GACC,uCACE,eAACjiF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,sCAKJ,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACc,EAAA,EAAD,yBACEV,UAAU,aACN4jF,IAFN,IAGEhjF,QAAS,kBAAMupF,IAA2B,IAH5C,mBAOA,eAACzpF,EAAA,EAAD,yBACEV,UAAU,aACN6jF,IAFN,IAGEjjF,QAAS,kBAAMupF,IAA2B,IAH5C,SAKG,mBAKPg0B,EACF,uCACE,eAACx+G,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,YAER,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAEI,uFAKN,UAGO,MAAdgiF,GACC,uCACE,gBAACjiF,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,WAER,eAACD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,UACG,kCAEH,eAAC5F,EAAA,EAAD,CACEC,QAASi+G,GACT5+G,UAAW,YACXY,QAAS,kBAAM09G,GAAe,IAHhC,iBAOA,eAAC59G,EAAA,EAAD,CACEC,QAASk+G,GACT7+G,UAAW,YACXY,QAAS,kBAAM09G,GAAe,IAHhC,wBAULD,EACC,gBAACz+G,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,iCAKJ,eAACL,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACc,EAAA,EAAD,yBACEV,UAAU,aACN8jF,IAFN,IAGEljF,QAAS,kBAAM29G,GAAiB,IAHlC,mBAOA,eAAC79G,EAAA,EAAD,yBACEV,UAAU,aACN+jF,IAFN,IAGEnjF,QAAS,kBAAM29G,GAAiB,IAHlC,2BAUJ,QAEN,eAAC5+G,EAAA,EAAD,IAAY,OAEZ,QAEJ,QAGN,gBAACsiE,GAAA,EAAU5pD,KAAX,CAAgB1X,QAASg+G,GAAzB,UACE,eAACh/G,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,UAAa,gCACb,eAAC5F,EAAA,EAAD,CACEC,QAASm+G,GACT9+G,UAAW,YACXY,QAAS,kBAAMo9G,GAAQ,IAHzB,iBAOA,eAACt9G,EAAA,EAAD,CACEC,QAASo+G,GACT/+G,UAAW,YACXY,QAAS,kBAAMo9G,GAAQ,IAHzB,qBASHl4B,EACC,gBAACnmF,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,yBACA,eAAC,GAAKqyF,WAAWjyF,OAAjB,CACEiC,MAAO4+E,EACPx7E,SAtTS,SAACpD,GAC1B47G,EAAgB57G,IAsTAmE,UAAWs/E,EACXltE,aAAa,OAGjB,eAAChZ,EAAA,EAAD,UACuB,MAApBkiF,EACC,uCACE,eAACniF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,OAAtB,4BAGJ,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAKyyF,WAAW7pC,WAAjB,CACEnmD,MAAO6+E,EACPz7E,SApUH,SAACsO,GACtBmqG,EAAYnqG,EAAE1R,QAoUUoyB,KAAM,KACNg0B,mBAAmB,EACnB7vC,aAAa,WAKnB,UAGN,QAELulG,GAAer4B,EACd,eAAC7jB,GAAA,EAAU5pD,KAAX,CAAgB1X,QAASu+G,GAAzB,SACE,eAACv/G,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,gCACA,eAAC,KAAD,CACE4B,KAAK,OACL7H,GAAG,WACHL,UAAU,eACVm4C,QAAS,EACT1yC,SAAU,SAACC,GAAD,OAAOq4G,EAAoBr4G,EAAEC,OAAOtD,QAC9CA,MAAO++E,EACPxH,UAAW,IACXC,WAAS,WAKf,KACJ,eAAC5X,GAAA,EAAU5pD,KAAX,CAAgBrY,UAAU,iBAA1B,SACE,gBAACL,EAAA,EAAD,CAAKK,UAAU,YAAf,UACE,eAACJ,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAACU,EAAA,EAAD,CACEC,QAAS+kF,GAAe,OAAS,UACjCl/E,SAAUk/E,GACV9vB,OAAK,EACL51D,UAAU,YACVkI,KAAK,SACLtH,QAAS,WA9PnB8kF,GACF31E,IAAMrE,MAAM,+CAGd+8E,GAAU,IAoPE,oBAWF,eAAC7oF,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAACU,EAAA,EAAD,CACEC,QAAS6nF,EAAS,OAAS,YAC3BhiF,SAAUgiF,EACV5yB,OAAK,EACL51D,UAAU,YACVkI,KAAK,SACLtH,QAAS,kBAAMqG,KANjB,oCCpaD,SAASq4G,KACtB,IAAM1gH,EAAKgyC,SAASC,eAAYjyC,IADG,EAEOk0E,GAAGzxE,OAAO,CAClDzC,KACAquD,UAAU,EACVrP,aAAa,IAHPE,EAF2B,EAE3BA,GAAI1vC,EAFuB,EAEvBA,QAASH,EAFc,EAEdA,UAAW+wD,EAFG,EAEHA,MAK1Bh8B,EAAMlhC,mBAAQ,WAClB,MAAO,CAAClD,KACP,CAACA,IAT+B,EAc/BgxF,GAAKtuF,OAAO,CACda,OAAQ,CAAE6gC,SAJVyjB,EAXiC,EAWjCA,MACA0D,EAZiC,EAYjCA,SACSo1D,EAbwB,EAajCnxG,QAIM0vB,EAAYukC,GAAQhhE,OAAO,CACjCzC,GAAE,OAAEk/C,QAAF,IAAEA,OAAF,EAAEA,EAAIxjC,YADFwjB,QAjB2B,EAoBK/5B,oBAAS,GApBd,mBAoB5By7G,EApB4B,KAoBdC,EApBc,OAqBK17G,mBAAS,IArBd,mBAqB5B27G,EArB4B,KAqBdC,EArBc,OAsBO57G,oBAAS,GAtBhB,mBAsB5BqmB,EAtB4B,KAsBbw1F,EAtBa,KAwB7B11F,EAAYvjB,uBAAY,WAC5Bq4D,IACA7U,MACC,CAAC6U,EAAO7U,IAEL9/B,EAAuB1jB,uBAC3B,SAACk3B,GACC,GAAIA,IAAM6hF,EAEV,GAAS,MAAL7hF,GAA6B,MAAhB6hF,EAGV,GAAI7hF,EAAE5gB,SAAWyiG,EAAaziG,QAInC,IAAK,IAAIlV,EAAI,EAAGA,EAAI81B,EAAE5gB,OAAQlV,IAC5B,GAAI81B,EAAE91B,GAAGnJ,KAAO8gH,EAAa33G,GAAGnJ,GAE9B,YADA+gH,EAAgB9hF,QALpB8hF,EAAgB9hF,QAHhB8hF,EAAgB9hF,KAcpB,CAAC6hF,IAGGzwD,GACF,OAAFnR,QAAE,IAAFA,OAAA,EAAAA,EAAIE,oBAA+C,aAAxB,OAAFF,QAAE,IAAFA,OAAA,EAAAA,EAAIE,mBACzBoG,EAAW,CACf+sC,QAAS7sF,IAAEk1D,SAAF,OAAW1b,QAAX,IAAWA,OAAX,EAAWA,EAAI6C,aAAf,OAA6B7C,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAI2C,kBAC1C2wC,QAAS9sF,IAAEk1D,SAAF,OAAW1b,QAAX,IAAWA,OAAX,EAAWA,EAAI6C,aAAf,OAA6B7C,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAI4C,kBAC1CmxC,SAAQ,OAAE/zC,QAAF,IAAEA,OAAF,EAAEA,EAAI2C,iBACdqxC,SAAQ,OAAEh0C,QAAF,IAAEA,OAAF,EAAEA,EAAI4C,iBACdjmC,KAAI,OAAEqjC,QAAF,IAAEA,OAAF,EAAEA,EAAI6C,cAENqwC,EAAS,CACbe,gBAAe,OAAEj0C,QAAF,IAAEA,OAAF,EAAEA,EAAI83D,oBACrB5jB,gBAAe,OAAEl0C,QAAF,IAAEA,OAAF,EAAEA,EAAI+3D,sBACrBxyB,cAAa,OAAEvlC,QAAF,IAAEA,OAAF,EAAEA,EAAIg4D,oBACnB7jB,aAAY,OAAEn0C,QAAF,IAAEA,OAAF,EAAEA,EAAIi4D,uBAClBziF,WAAYhvB,IAAEyvD,IAAI,QAChBjW,QADgB,IAChBA,OADgB,EAChBA,EAAI83D,oBADY,OAEhB93D,QAFgB,IAEhBA,OAFgB,EAEhBA,EAAIg4D,oBAFY,OAGhBh4D,QAHgB,IAGhBA,OAHgB,EAGhBA,EAAIi4D,yBAENzkB,eAAc,OAAExzC,QAAF,IAAEA,OAAF,EAAEA,EAAI+hE,mBACpBluB,eAAc,OAAE7zC,QAAF,IAAEA,OAAF,EAAEA,EAAIgiE,qBACpBtuB,aAAY,OAAE1zC,QAAF,IAAEA,OAAF,EAAEA,EAAIiiE,mBAClBnuB,YAAW,OAAE9zC,QAAF,IAAEA,OAAF,EAAEA,EAAIkiE,sBACjBrsF,UAAWrvB,IAAEyvD,IAAI,QACfjW,QADe,IACfA,OADe,EACfA,EAAI+hE,mBADW,OAEf/hE,QAFe,IAEfA,OAFe,EAEfA,EAAIiiE,mBAFW,OAGfjiE,QAHe,IAGfA,OAHe,EAGfA,EAAIkiE,yBAIR,OACE,gBAAC1K,GAAD,CACEx3D,GAAIA,EACJjO,QAAO,aAAQjxC,EAAR,SACPmxC,WAAY,eAAC0lE,GAAD,CAAkB72G,GAAIA,IAClCsV,UAAW9F,EAJb,UAME,eAACzO,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAG4jE,OAAJ,CAAW1lB,GAAIA,QAGnB,gBAACn+C,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK8Y,GAAI,GAAIC,GAAI,EAAjB,UACE,eAAC,GAAK2/C,cAAN,CACElU,SAAUA,EACV4sC,OAAQA,EACRC,iBACE,eAAC,GAAQhjC,eAAe5nD,YAAxB,CACEzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAS82B,mBAGjB1gD,UAAW9F,EACXu3D,OAAQ1W,OAActgD,EAAY,kBAAM8wG,GAAgB,MAE1D,eAAC,GAAGpuF,eAAJ,CACEysB,GAAIA,EACJr3C,KAAM+4G,EACNv4G,OAAQ,kBAAMw4G,GAAgB,IAC9BlnD,OAAQtqD,OAGZ,eAACrO,EAAA,EAAD,UACE,eAAC,GAAGy1E,iBAAJ,CAAqBv3B,GAAIA,EAAI5pC,UAAW9F,EAASmqD,OAAQtqD,SAG7D,eAACgyG,GAAD,CACEniE,GAAIA,EACJl/C,GAAIA,EACJurD,SAAUA,EACV1kD,SAAUykB,EACVg2F,eAAgBN,EAChBF,aAAcA,EACdxrG,UAAW9F,IAEb,eAACzO,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAK2B,MAAN,CACEklD,MAAOA,EACPvyC,UAAWqrG,EACX59G,OAAQ,CACN,OACA,OACA,cACA,aACA,QACA,aACA,OACA,SACA,iBAEFuoB,UAAWA,EACXd,YAAa,CAAExqB,GAAI,OAAQmoB,MAAM,GACjCqD,cAAeA,EACfC,qBAAsBA,WAQlC,SAAS41F,GAAT,GAQI,IAPFniE,EAOC,EAPDA,GACAl/C,EAMC,EANDA,GACA6G,EAKC,EALDA,SACA0kD,EAIC,EAJDA,SACA+1D,EAGC,EAHDA,eACAR,EAEC,EAFDA,aAEC,IADDxrG,iBACC,SACKlM,EAAW0O,cACX2wC,EAAQuoC,GAAKP,WAFlB,EAGmCtrF,oBAAS,GAH5C,mBAGMo8G,EAHN,KAGkBC,EAHlB,OAIyCr8G,oBAAS,GAJlD,mBAIMs8G,EAJN,KAIqBC,EAJrB,OAK2Cv8G,oBAAS,GALpD,mBAKMw8G,EALN,KAKsBC,EALtB,OAMqCz8G,oBAAS,GAN9C,mBAMM08G,EANN,KAMmBC,EANnB,OAO2B38G,mBAAS,MAPpC,mBAOM48G,EAPN,KAOcC,EAPd,OAQ2C78G,oBAAS,GARpD,mBAQM88G,EARN,KAQsBC,EARtB,OAUsDlxB,GAAKI,eAAe,CACzE52B,aAAc,WACZlB,IACAzyD,OAbH,mBAUM0oF,EAVN,KAUmBC,EAVnB,KAUqCl2B,EAVrC,KAmCDx9C,qBAAU,WACR,IAAuB,IAAnBmmG,EAAyB,CAC3B,IAAMp6D,EAAQi5D,EAAav6G,KAAI,SAAC47G,GAAD,OAAYA,EAAOniH,MAClDoJ,EAAS4nF,GAAK9xF,QAAQ2sD,SAAS,CAAEpwC,KAAMsmG,EAAO/hH,GAAI6nD,MAAOA,KACtDp7C,KAAK4jB,KACL5jB,MAAK,WACJy1G,GAAkB,GAClBJ,GAAe,GACfR,GAAe,GACfz6G,OAEDgG,OAAM,SAACkU,GACN3W,QAAQC,IAAI0W,GACZmhG,GAAkB,SAGvB,CACD94G,EACA24G,EACAE,EACAp7G,EACAi6G,EACAQ,IAGF,IAAMc,EACJtB,EAAaziG,OAAS,EAClB,uCACAyiG,EAAaziG,OACb,YACA,kDAEN,OACE,uCACE,eAAC4gG,GAAD,CACE//D,GAAIA,EACJr3C,KAAM05G,EACNl5G,OAAQ,kBAAMm5G,GAAc,IAC5BzhC,cAAe,WACbyhC,GAAc,GACdj2D,OAGHrM,EACC,eAACmjE,GAAD,CACEnjE,GAAIA,EACJr3C,KAAM45G,EACNp5G,OAAQ,kBAAMq5G,GAAiB,IAC/BpnC,KAAM,SAACr7C,GACLyiF,GAAiB,GACjBI,GAAe,GACfE,EAAU/iF,GACVqiF,GAAe,MAGjB,KACJ,eAACnmC,GAAD,CAAatzE,KAAMo6G,IACnB,eAAC/mC,GAAD,CACE9yE,KAAM,KACNP,KAAM85G,EACNnrD,SAAU,WACRorD,GAAkB,IAEpBtnC,KAAM,WACJsnC,GAAkB,GAClBM,GAAkB,IAEpB1nC,OAAQ,MACR1rB,WAAY,oBACZv8B,KACE,uCACE,eAACxxB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,sBAAgB+gH,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAQ/hH,QAEhC,eAACe,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,iBAAM+gH,QAAN,IAAMA,OAAN,EAAMA,EAAQtjF,UAAU,GAAG/+B,SAE7B,eAACqB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,iBAAM+gH,QAAN,IAAMA,OAAN,EAAMA,EAAQhhE,aAEhB,eAAChgD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,qBAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMohH,WAKd,eAACrhH,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,CAAKI,UAAU,iCAAf,UACE,+BACE,eAACkhH,GAAD,CACE7mG,KAAMzb,EACNkgF,YAAY,EACZ4R,UAAWjrF,EACXe,SAAU0N,MAGd,iCACE,eAACxT,EAAA,EAAD,CACEC,QAAQ,YACRC,QAxHkB,WAC5B,IAAoB,IAAhB6/G,EAAuBH,GAAiB,QACvC,GAA4B,IAAxBZ,EAAaziG,OACpByjG,GAAe,GACfR,GAAe,OACV,CAEL,IADA,IAAIphF,EAAe,GACVve,EAAI,EAAGA,EAAIm/F,EAAaziG,OAAQsD,IACvC,GAAsC,KAAlCm/F,EAAan/F,GAAG++D,cAAsB,CACxCxgD,EAAe,sDACf,MAGiB,KAAjBA,EAAqB0hF,GAAkB,GACtCzwG,IAAMrE,MAAMozB,KA2GTt4B,SAAU0N,EAHZ,SAKGusG,GAAef,EAAaziG,OAAS,EAClC,cACAwjG,EACA,cACA,cACI,IACV,eAAC//G,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMw/G,GAAc,IAC7B55G,SAAU0N,EAHZ,wBAQF,+BAC4B,YAAzBmzC,EAAM54C,QAAQqqC,OACb,eAACooE,GAAD,CACE7mG,KAAMzb,EACNkgF,YAAY,EACZ4R,UAAWjrF,EACXe,SAAU0N,IAGZ,gBAACxT,EAAA,EAAD,CACEV,UAAU,mCACVY,QAAS,kBAAMs3D,EAAc7Q,EAAM54C,QAAQ7P,IAAI,IAC/C+B,QAAQ,SACR6F,SAAU0N,EAJZ,UAME,eAACvU,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,iBAER,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG,eACCk3B,KAAU86B,YAAYvK,EAAM54C,QAAQm5C,eAG1C,eAACjoD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMynD,EAAM54C,QAAQ0yG,qBAK5B,eAAChzB,EAAD,eAAiBC,YAO3B,SAAS8yB,GAAT,GAAiE,IAAxC7mG,EAAuC,EAAvCA,KAAMq2E,EAAiC,EAAjCA,UAAiC,IAAtB5R,kBAAsB,WACtB/6E,oBAAS,GADa,mBACvDswF,EADuD,KACzCC,EADyC,KAExD8sB,EAAiBz6G,uBAAY,kBAAM2tF,GAAgB,KAAQ,IAE3DhhF,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACzCmhB,EAAO3yB,mBAAQ,kBAAMiuB,QAAU,IAE/BhJ,GAAsB,IAAf+3D,EAAsB,kBAAoB,iBACjDn+E,GAAyB,IAAfm+E,EAAsB,UAAY,UAClD,OACE,uCACE,eAACp+E,EAAA,EAAD,CAAQC,QAASA,EAASC,QAAS,kBAAM0zF,GAAgB,IAAzD,SACGvtE,IAEH,eAAC,GAAKgqE,SAAN,CACEtqF,KAAM4tF,EACNptF,OAAQm6G,EACR9tG,KAAMA,EACNmhB,KAAMA,EACNpa,KAAMA,EACNykE,WAAYA,EACZmO,OAAQ,WACNm0B,IACA1wB,KAEFt7B,SAAUgsD,OAMlB,SAASH,GAAT,GAAsD,IAAD,EAA1BnjE,EAA0B,EAA1BA,GAAI72C,EAAsB,EAAtBA,OAAQiyE,EAAc,EAAdA,KAAMzyE,EAAQ,EAARA,KAAQ,EACzB1C,mBAAS,MADgB,mBAC5CwmE,EAD4C,KACrC82C,EADqC,OAE5Bt9G,mBAAS,IAAvBu9G,EAF0C,sBAGjBv9G,oBAAS,GAHQ,mBAG5Cy+E,EAH4C,KAGjC++B,EAHiC,KAcnD,OACE,gBAACx6G,GAAA,EAAD,CAAOC,KAAK,KAAKP,KAAMA,EAAMQ,OAAQ,kBAAMA,KAAUk7D,SAAS,SAA9D,UACE,eAACp7D,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,wCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAAC66D,GAAA,EAAD,UACE,eAACA,GAAA,EAAU5pD,KAAX,CAAgB1X,QAAS6hF,EAAY,UAAY,UAAjD,SACE,eAAC,GAAK9Z,SAAN,CACE/K,kBAAiB,OAAE7f,QAAF,IAAEA,GAAF,UAAEA,EAAIzgB,UAAU,UAAhB,aAAE,EAAkBz+B,GACrC6G,SAAU,SAACq4C,GAnBA,IAAC14C,EAoBN04C,KApBM14C,EAoBa04C,GAnB7BytC,YAAcnmF,EAAEomF,oBACpBz7E,IAAMg7C,QAAQ,sDAEhBu2D,EAAWl8G,EAAExG,IACbyiH,EAASj8G,GACTm8G,GAAa,KAgBCA,GAAa,GACbF,EAAS,MACTC,EAAW,gBAOvB,gBAACv6G,GAAA,EAAM+mD,OAAP,WACE,eAACptD,EAAA,EAAD,CACEE,QAAS,kBAAMs4E,EAAK3O,IACpB/jE,UAAWg8E,EACX7hF,QAAQ,UAHV,gBAOA,eAACD,EAAA,EAAD,CAAQE,QAAS,kBAAMqG,KAAUtG,QAAQ,YAAzC,0BCjbO,SAAS6gH,KAAc,IAC9BjuD,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,aAAX,SACE,eAACyiD,GAAD,MAEF,eAAC,KAAD,CAAOziD,KAAI,UAAKA,EAAL,gBAAX,SACE,eAACioD,GAAD,MAEF,eAAC,KAAD,CAAOjoD,KAAI,UAAKA,EAAL,aAAX,SACE,eAAC+rD,GAAD,MAEF,eAAC,KAAD,CAAO/rD,KAAI,UAAKA,EAAL,kBAAX,SACE,eAACiqD,GAAD,MAEF,eAAC,KAAD,CAAOjqD,KAAI,UAAKA,EAAL,YAAX,SACE,eAAC+nD,GAAD,MAEF,eAAC,KAAD,CAAO/nD,KAAI,UAAKA,EAAL,WAAX,SACE,eAACqpD,GAAD,MAEF,eAAC,KAAD,CAAOrpD,KAAI,UAAKA,EAAL,QAAX,SACE,eAACunD,GAAD,MAEF,eAAC,KAAD,CAAOpc,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACkjD,GAAD,SCtCO,SAASgL,GAAT,GAA2C,IAAb3gH,EAAY,EAAZA,SAC3C,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,aAAnB,uBACA,sBAAKf,UAAU,qBACdc,KCLQ,SAAS4gH,GAAT,GAAgD,IAAb5gH,EAAY,EAAZA,SAChD,OACE,gBAAC2gH,GAAD,WACE,eAACxT,GAAD,CAAgBltG,GAAE,kCAAlB,kCAGA,eAACktG,GAAD,CAAgBltG,GAAE,2BAAlB,2BAGA,eAACktG,GAAD,CAAgBltG,GAAE,gCAAlB,gCAGCD,KCVQ,SAAS6gH,KAAiB,IAAD,EACV59G,oBAAS,GADC,mBAC/B42C,EAD+B,KACvBjhB,EADuB,OAER31B,mBAAS,IAFD,mBAE/B2jC,EAF+B,KAEtBk6E,EAFsB,OAGI79G,mBAAS,IAHb,mBAG/B2oC,EAH+B,KAGhBm1E,EAHgB,KAIhC1/G,EAAS,CACbw4C,OAAQA,EACRjT,QAASA,EACTgF,cAAeA,GAGjB,OACE,gBAACkD,GAAD,CACE9oC,MAAM,YACNkpC,iBAAiB,EACjBD,WAAY,eAAC2xE,GAAD,IAHd,UAKE,gBAAC/hH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,gBAACorC,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,mBAWV,gBAACzC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,QAAS22E,SAAU,SAAWj3E,GAAI,OAA1D,UACG,UACD,eAAC,GAAS88C,QAAQv8C,OAAlB,CACEiC,MAAOqlC,EACPjiC,SAAUm8G,EACVnhH,SAAS,OAGb,gBAACb,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,QAAS22E,SAAU,SAAWj3E,GAAI,OAA1D,UACG,gBACD,eAAC,GAASg9C,cAAcz8C,OAAxB,CACEiC,MAAOqqC,EACPjnC,SAAUo8G,EACVphH,SAAS,UAIf,eAAC,GAASc,MAAV,CAAgBY,OAAQA,EAAQinB,YAAa,CAAExqB,GAAI,aC3D1C,SAASkjH,GAAT,GAA+C,IAAnBC,EAAkB,EAA3BC,QAAchiH,EAAa,EAAbA,UAAa,EAC/B8B,mBAAQ,WAClC,IAAMmgH,EAAS,UAAMF,EAAIC,QAAV,YACbD,EAAIG,SAAWH,EAAIG,SAAW,IAAM,IADvB,OAEZH,EAAII,KAFQ,aAECJ,EAAI5gH,MAFL,YAEc4gH,EAAIK,SAEjC,MAAO,CAAE3xE,KADC,qCAAiC4xE,mBAAmBJ,IAC/CA,eACd,CAACF,IANItxE,EADmD,EACnDA,KAAMwxE,EAD6C,EAC7CA,UAOd,OACE,gBAACtiH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,oBACE6wC,KAAMA,EACNvwC,MAAO,CAAEqqC,WAAY,YACrBvqC,UAAWA,EACX2F,OAAO,SACP+oC,IAAI,sBALN,mBAOMqzE,EAAIC,QAPV,aAOsBD,EAAIG,SAAWH,EAAIG,SAAW,KAAO,IAP3D,OAQIH,EAAII,KARR,aASOJ,EAAI5gH,MATX,YASoB4gH,EAAIK,aAG1B,eAACxiH,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEgtB,KAAMo1F,EACN3+C,OAAQ,kBAAMvzD,IAAMiO,QAAQ,mBAF9B,SAIE,eAACqxC,GAAA,EAAD,CAAOhvD,GAAG,IAAIM,QAAQ,QAAQmG,MAAM,gBAApC,SACE,eAAC,KAAD,aC9BG,SAASw7G,GAAT,GAAyC,IAAP1jH,EAAM,EAANA,GAC/C,OACE,gBAAC6iH,GAAD,WACE,eAACxT,GAAD,CACEjuG,UAAU,mBACVe,GAAE,qBAAgBnC,GAFpB,4BAGcA,KACd,eAACqvG,GAAD,CAAgBltG,GAAE,qBAAgBnC,EAAhB,aAAlB,sBACA,eAACqvG,GAAD,CAAgBltG,GAAE,qBAAgBnC,EAAhB,QAAlB,iBACA,eAACqvG,GAAD,CAAgBltG,GAAE,4BAAuBnC,GAAzC,qBACA,eAACqvG,GAAD,CAAgBltG,GAAE,uCAAkCnC,GAApD,wBAGA,eAACqvG,GAAD,CAAgBltG,GAAE,mDAA8CnC,GAAhE,kCAGA,eAACqvG,GAAD,CAAgBltG,GAAE,4CAAuCnC,GAAzD,2BAGA,eAACqvG,GAAD,CAAgBltG,GAAE,iDAA4CnC,GAA9D,mCCLS,SAAS2jH,KAAgB,IAAD,EAC/B3jH,EAAKgyC,SAASC,eAAYjyC,IADK,EAEP6vC,GAASptC,OAAO,CAAEzC,KAAI2b,QAAQ,IAApDgnB,EAF6B,EAE7BA,SACFu+B,EAH+B,EAEnB1xD,SACU9J,IAAE6E,QAAQo4B,GAEhCihF,EAAW,CACf,eAACrzE,GAAD,CAAeroC,MAAM,WAArB,SACE,eAAC,GAAD,CAASy6B,SAAUA,EAAUrtB,UAAW4rD,KADN,oBAGpC,gBAAC3wB,GAAD,CAAeroC,MAAM,WAArB,UACE,eAAC,GAAS20C,sBAAV,CAAgCpe,UAAW,CAACz+B,GAAKsV,UAAW4rD,IAC5D,oCAAIv+B,QAAJ,IAAIA,OAAJ,EAAIA,EAAUpE,YAFoB,2BAIpC,eAACgS,GAAD,CAAeroC,MAAM,WAArB,SACE,eAAC,GAAQsqC,gBAAT,CAAyB1jC,WAAY9O,KADH,oBAGpC,eAACuwC,GAAD,CAAeroC,MAAM,YAArB,SACE,eAAC27G,GAAD,CACExmE,UAAS,OAAE1a,QAAF,IAAEA,OAAF,EAAEA,EAAU0a,UACrBymE,cAAa,OAAEnhF,QAAF,IAAEA,OAAF,EAAEA,EAAUmhF,cACzBxuG,UAAW4rD,KAJsB,oBAOrC,eAAC3wB,GAAD,CAAeroC,MAAM,eAArB,SACE,eAAC67G,GAAD,CAAiB72E,QAAO,OAAEvK,QAAF,IAAEA,OAAF,EAAEA,EAAUuK,QAAS53B,UAAW4rD,KADlB,wBAGxC,eAAC3wB,GAAD,CAAeroC,MAAM,iBAArB,SACE,gBAACnH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAK8Y,GAAI,GAAIC,GAAI,EAAjB,SACE,eAAC2rD,GAAD,CAAa50B,OAAO,eAApB,SACE,eAACkN,GAAD,CAAiBlV,QAAO,OAAEnG,QAAF,IAAEA,OAAF,EAAEA,EAAUmG,QAASxzB,UAAW4rD,QAG5D,eAAClgE,EAAA,EAAD,CAAK8Y,GAAI,GAAIC,GAAI,EAAjB,SACE,eAAC2rD,GAAD,CAAa50B,OAAO,mBAApB,SACE,eAACuyB,GAAA,EAAD,iBACG1gC,QADH,IACGA,GADH,UACGA,EAAUqhF,sBADb,aACG,EAA0Bz9G,KAAI,SAAC4C,EAAGwlB,GAAJ,OAC7B,eAAC00C,GAAA,EAAU5pD,KAAX,UACGtQ,EAAEsN,aADL,oBAAkCkY,iBAXJ,mBAoB1C,eAAC4hB,GAAD,CAAeroC,MAAM,qBAArB,SACE,gBAACnH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAK8Y,GAAI,GAAIC,GAAI,EAAjB,SACE,eAAC2rD,GAAD,CAAa50B,OAAO,gBAApB,SACE,eAACmzE,GAAD,CACEC,aAAY,OAAEvhF,QAAF,IAAEA,OAAF,EAAEA,EAAUuhF,aACxB5uG,UAAW4rD,QAIjB,eAAClgE,EAAA,EAAD,CAAK8Y,GAAI,GAAIC,GAAI,EAAjB,SACE,eAAC2rD,GAAD,CAAa50B,OAAO,aAApB,SACE,eAACqzE,GAAD,CACEC,UAAS,OAAEzhF,QAAF,IAAEA,OAAF,EAAEA,EAAUyhF,UACrB9uG,UAAW4rD,YAdyB,iBAoB9C,eAAC3wB,GAAD,CAAeroC,MAAM,SAArB,SACE,eAACm8G,GAAD,CAAgBC,OAAM,OAAE3hF,QAAF,IAAEA,OAAF,EAAEA,EAAU2hF,OAAQhvG,UAAW4rD,KADrB,kBAGlC,eAAC3wB,GAAD,CAAeroC,MAAM,aAArB,SACE,eAACq8G,GAAD,CACE//B,kBAAiB,OAAE7hD,QAAF,IAAEA,OAAF,EAAEA,EAAU6hD,kBAC7B9vC,aAAY,OAAE/R,QAAF,IAAEA,OAAF,EAAEA,EAAU+R,gBAHU,uBAQxC,OACE,eAAC1D,GAAD,CACE9oC,OAAe,OAARy6B,QAAQ,IAARA,OAAA,EAAAA,EAAUjjC,MAAOijC,EAASjjC,KAAO,WACxCyxC,WAAY,eAACuyE,GAAD,CAAwB1jH,GAAIA,IAF1C,SAIG4jH,IAKP,SAASY,GAAW7kH,GAClB,IACE,IAAIugG,IAAIvgG,GACR,MAAO+F,GACP,OAAO,EAGT,OAAO,EAGT,SAASosC,GAAT,GAA2C,IAAD,MAAvBnP,EAAuB,EAAvBA,SAAUrtB,EAAa,EAAbA,UACrBm/B,EAAQvxC,mBAAQ,kBAAMiuB,QAAU,IAChCojB,EAAWnc,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUsa,wBAC3C,OACE,gBAACl8C,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAK+1D,GAAI,EAAGj9C,GAAG,OAAf,SACE,eAAC4rD,GAAD,CAAa50B,OAAO,sBAApB,SACE,eAACN,GAAD,CACEC,OAAQ,CACN,CACEK,OAAQ,QACRrtC,MAAO,eAACsZ,GAAA,EAAD,CAAKX,MAAK,OAAEumB,QAAF,IAAEA,OAAF,EAAEA,EAAUvmB,SAE/B,CACE3Y,MAAO,eAACsZ,GAAA,EAAD,CAAKX,MAAK,OAAEumB,QAAF,IAAEA,OAAF,EAAEA,EAAU8hF,SAC7B9zE,OAAM,OAAChO,QAAD,IAACA,OAAD,EAACA,EAAU8hF,SAEnB,CACE3zE,OAAQ,MACRrtC,MAAK,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAU+hF,KAEnB,CACE5zE,OAAQ,UACRrtC,MAAO+gH,GAAU,OAAC7hF,QAAD,IAACA,OAAD,EAACA,EAAUgiF,SAC1B,oBACE9yE,KAAM,IAAIquD,IAAJ,OAAQv9D,QAAR,IAAQA,OAAR,EAAQA,EAAUgiF,SACxB59G,OAAO,SACP+oC,IAAI,aAHN,gBAKGnN,QALH,IAKGA,OALH,EAKGA,EAAUgiF,UANR,OASLhiF,QATK,IASLA,OATK,EASLA,EAAUgiF,SAGd,CACE7zE,OAAQ,aACRrtC,MAAK,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAUiiF,YAGrBtvG,UAAWA,QAIjB,gBAACtU,EAAA,EAAD,CAAK+1D,GAAI,EAAGj9C,GAAI,EAAhB,UACE,eAAC4rD,GAAD,CAAa50B,OAAO,iBAApB,SACE,qBAAI1vC,UAAU,gBAAd,gBACGuhC,QADH,IACGA,GADH,UACGA,EAAUkiF,qBADb,aACG,EAAyBt+G,KAAI,SAACwR,EAAG4W,GAAJ,OAC5B,qBAAgCvtB,UAAU,OAA1C,SACG2W,EAAEtB,aADL,uBAAyBkY,WAM/B,eAAC+2C,GAAD,CAAa50B,OAAO,wBAApB,SACE,qBAAI1vC,UAAU,gBAAd,gBACGuhC,QADH,IACGA,GADH,UACGA,EAAUsZ,4BADb,aACG,EAAgC11C,KAAI,SAACwR,EAAG4W,GAAJ,OACnC,qBAAuCvtB,UAAU,OAAjD,SACG2W,EAAEtB,aADL,8BAAgCkY,cAOxC,gBAAC3tB,EAAA,EAAD,CAAK+1D,GAAI,EAAGj9C,GAAI,EAAG1Y,UAAU,OAA7B,UACE,eAACskE,GAAD,CAAa50B,OAAO,QAAQx7B,UAAWA,EAAvC,SACE,eAACk7B,GAAD,CACEpvC,UAAU,OACVqvC,OAAQ,CACN,CACEK,OAAQ,OACRrtC,MAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAU+Z,YAEjD,CACE5L,OAAQ,WACRF,SAAU,CACRxvC,WACU,OAARuhC,QAAQ,IAARA,OAAA,EAAAA,EAAUsa,yBAA0B1I,EAAWE,EAC3C,eACA,IAERhxC,MAAO20B,KAAM0c,QACX1c,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUsa,0BAG9B,CACEnM,OAAQ,UACRrtC,MAAO20B,KAAM0c,QACX1c,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAU8Z,kBAE5B9L,OAAM,OAAChO,QAAD,IAACA,OAAD,EAACA,EAAU8Z,kBAEnB,CACE3L,OAAQ,OACRrtC,MAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAU0Z,gBAEjD,CACEvL,OAAQ,WACRrtC,MAAO20B,KAAM0c,QACX1c,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAU6Z,oBAE5B5L,SAAU,CAAExvC,UAAW,cACvBuvC,OAAM,OAAChO,QAAD,IAACA,OAAD,EAACA,EAAU6Z,oBAEnB,CACE1L,OAAQ,QACRrtC,MAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBjS,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUyZ,iBAC/CxL,SAAU,CAAExvC,UAAW,cACvBuvC,OAAM,OAAChO,QAAD,IAACA,OAAD,EAACA,EAAU6Z,qBAGrBlnC,UAAWA,OAGN,OAARqtB,QAAQ,IAARA,OAAA,EAAAA,EAAU6Z,mBACT,eAAC17C,GAAA,EAAKoF,KAAN,CAAW9E,UAAU,aAArB,8BACE,QAEN,eAACJ,EAAA,EAAD,CAAK+1D,GAAI,EAAGj9C,GAAI,EAAhB,SACE,eAAC02B,GAAD,CACEC,OAAQ,CACN,CACEK,OAAQ,SACRrtC,OAAe,OAARk/B,QAAQ,IAARA,OAAA,EAAAA,EAAUziC,UAAW,WAAa,UAE3C,CACE4wC,OAAQ,cACRrtC,MACE,uCACE,oBAAGrC,UAAU,OAAb,SACE,eAAC,KAAK6C,KAAN,CAAWjE,GAAE,OAAE2iC,QAAF,IAAEA,OAAF,EAAEA,EAAUkR,eAF7B,OAIGlR,QAJH,IAIGA,GAJH,UAIGA,EAAUguB,sBAJb,aAIG,EAA0BpqD,KAAI,SAACoa,EAAGgO,GAAJ,OAC7B,oBAA2BvtB,UAAU,OAArC,SACE,eAAC,KAAK6C,KAAN,CAAWjE,GAAE,OAAE2gB,QAAF,IAAEA,OAAF,EAAEA,EAAG8f,UADpB,mBAAoB9R,WAO5B,CACEmiB,OAAQ,cACRrtC,MAAK,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAUkuB,0BAEnB,CACE/f,OAAQ,UACRrtC,MAAiC,OAAlB,OAARk/B,QAAQ,IAARA,OAAA,EAAAA,EAAUmxB,aAAsB,UAAY,YAErD,CACEhjB,OAAQ,kBACRrtC,MAAO,eAAC,GAASQ,KAAV,CAAejE,GAAE,OAAE2iC,QAAF,IAAEA,OAAF,EAAEA,EAAUmiF,mBACpCn0E,OAAM,OAAChO,QAAD,IAACA,OAAD,EAACA,EAAUmiF,mBAEnB,CACEh0E,OAAQ,kBACRrtC,MAAO,eAAC,GAASQ,KAAV,CAAejE,GAAE,OAAE2iC,QAAF,IAAEA,OAAF,EAAEA,EAAUoiF,mBACpCp0E,OAAM,OAAChO,QAAD,IAACA,OAAD,EAACA,EAAUoiF,mBAEnB,CACEj0E,OAAQ,QACRrtC,MAAK,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAU+tB,QAGrBp7C,UAAWA,SAOrB,SAAS0vG,GAAT,GAAsD,IAAtB3nE,EAAqB,EAArBA,UAAWvM,EAAU,EAAVA,OACzC,OAAI,OAACuM,QAAD,IAACA,OAAD,EAACA,EAAWh/B,QAGd,eAACqnD,GAAD,CAAa50B,OAAQA,EAArB,SACE,eAACuyB,GAAA,EAAD,iBACGhmB,QADH,IACGA,OADH,EACGA,EAAW92C,KAAI,SAACwR,EAAG4W,GAAJ,OACd,eAAC00C,GAAA,EAAU5pD,KAAX,UACE,eAACypG,GAAD,CACEE,QAASrrG,EACT3W,UAAS,qBACK,aAAX,OAAD2W,QAAC,IAADA,OAAA,EAAAA,EAAGzO,MAAqB,mBAAqB,OAJnD,oBAAkCyO,EAAEzO,KAApC,YAA4CqlB,WANrB,KAoBjC,SAASk1F,GAAT,GAA0D,IAA7BxmE,EAA4B,EAA5BA,UAAWymE,EAAiB,EAAjBA,cAAiB,EACJ5gH,mBACjD,kBAAMub,kBAAQ4+B,EAAW,UACzB,CAACA,IAFK4nE,EAD+C,EAC/CA,QAASC,EADsC,EACtCA,UAAWC,EAD2B,EAC3BA,QAAYC,EADe,kDAMvD,OACE,uCACGtB,GAAmC,KAAlBA,EAChB,eAAC/iH,EAAA,EAAD,CAAKK,UAAU,kDAAf,SACE,gBAACJ,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,4DAGJ,eAACD,EAAA,EAAD,CAAKK,UAAU,yBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,gBACG6iH,QADH,IACGA,OADH,EACGA,EAAeplG,MAAM,cAAcnY,KAAI,SAAC04B,GACvC,OACE,eAACl+B,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMi+B,KADEA,eASpB,KACJ,gBAACl+B,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,WACE,eAACgkH,GAAD,CAAsBl0E,OAAO,UAAUuM,UAAW4nE,IAClD,eAACD,GAAD,CAAsBl0E,OAAO,UAAUuM,UAAW8nE,OAEpD,gBAACnkH,EAAA,EAAD,WACE,eAACgkH,GAAD,CAAsBl0E,OAAO,YAAYuM,UAAW6nE,IACpD,eAACF,GAAD,CAAsBl0E,OAAO,QAAQuM,UAAW+nE,aAO1D,SAASpnE,GAAT,GAAkD,IAAvBlV,EAAsB,EAAtBA,QACnBo4B,EADyC,EAAb5rD,WACJ5P,IAAE6E,QAAQu+B,GAClC7lC,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACEC,OAAQ,cACRC,SAAU,eAEZ,CACED,OAAQ,SACRC,SAAU,UAEZ,CACED,OAAQ,OACRC,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAeA,GAAS20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,MAE9D,CACEN,OAAQ,WACRC,SAAU,WACVsjB,SAAU,aAGd,IAEF,OACE,eAAC3lB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK+1D,GAAG,OAAR,SACE,eAACp0D,GAAA,EAAD,CACEM,QAASA,EACTe,KAAM8kC,EACNxzB,UAAW4rD,EACX12C,YAAa,CAAExqB,GAAI,qBAO7B,SAASikH,GAAT,GAA4D,IAA5BC,EAA2B,EAA3BA,aACxBhjD,EADmD,EAAb5rD,WACd5P,IAAE6E,QAAQ25G,GAClCjhH,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACEC,OAAQ,OACRC,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAeA,GAAS20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,MAE9D,CACEN,OAAQ,YACRC,SAAU,aACVI,KAAM,qBAAGC,MAAqB,MAAQ,OAExC,CACEN,OAAQ,YACRC,SAAU,WACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACHA,GAAS20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,KAAY,UAG1D,IAEF,YAAqBsM,IAAjBm0G,EAAmC,KAGrC,eAACnjH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK+1D,GAAG,OAAR,SACE,eAACp0D,GAAA,EAAD,CAAOM,QAASA,EAASe,KAAMkgH,EAAc5uG,UAAW4rD,QAMhE,SAASijD,GAAT,GAAsD,IAAzBC,EAAwB,EAAxBA,UACrBljD,EAD6C,EAAb5rD,WACR5P,IAAE6E,QAAQ65G,GAClCnhH,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACEC,OAAQ,SACRC,SAAU,UAEZ,CACED,OAAQ,OACRC,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAeA,GAAS20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,SAGhE,IAEF,OACE,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK+1D,GAAG,OAAR,SACE,eAACp0D,GAAA,EAAD,CAAOM,QAASA,EAASe,KAAMogH,EAAW9uG,UAAW4rD,QAM7D,SAAS6iD,GAAT,GAAuC,IAAZ72E,EAAW,EAAXA,QACzB,OACE,eAACnsC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CAASm+E,SAAO,EAAhB,UACE,iCACE,gCACE,uCACA,wCACA,+CAGJ,mCACE,gCACE,uCACA,qCAAKlyC,QAAL,IAAKA,OAAL,EAAKA,EAASm4E,YACd,2BAEF,gCACE,uDACA,qCAAKn4E,QAAL,IAAKA,OAAL,EAAKA,EAASo4E,sBACd,2BAEF,gCACE,sDACA,+BACU,OAAPp4E,QAAO,IAAPA,OAAA,EAAAA,EAASq4E,uBACN,YADH,OAEGr4E,QAFH,IAEGA,OAFH,EAEGA,EAASs4E,qBAEf,2BAEF,gCACE,yCACA,qCAAKt4E,QAAL,IAAKA,OAAL,EAAKA,EAASu4E,aACd,qCAAKv4E,QAAL,IAAKA,OAAL,EAAKA,EAASw4E,WAEhB,gCACE,yCACA,qCAAKx4E,QAAL,IAAKA,OAAL,EAAKA,EAASy4E,aACd,qCAAKz4E,QAAL,IAAKA,OAAL,EAAKA,EAAS04E,qBAS5B,SAASvB,GAAT,GAAgD,IAAtBC,EAAqB,EAArBA,OAClBpjD,EADuC,EAAb5rD,WACF5P,IAAE6E,QAAQ+5G,GAClCrhH,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACEC,OAAQ,cACRC,SAAU,eAEZ,CACED,OAAQ,WACRC,SAAU,eAGd,IAEF,OACE,eAACrC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK+1D,GAAG,OAAR,SACE,eAACp0D,GAAA,EAAD,CAAOM,QAASA,EAASe,KAAMsgH,EAAQhvG,UAAW4rD,QAM1D,SAASqjD,GAAT,GAAkE,IAApC//B,EAAmC,EAAnCA,kBAAmB9vC,EAAgB,EAAhBA,aAC/C,OACE,eAAC3zC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK6Y,GAAI,GAAIE,GAAI,EAAjB,SACE,eAACy2B,GAAD,CACEC,OAAQ,CACN,CACEK,OAAQ,cACRrtC,MAAO,eAAC3C,GAAA,EAAKO,MAAN,CAAYwkH,eAAgBnxE,EAAc9sC,UAAQ,KAE3D,CACEkpC,OAAQ,kBACRrtC,MACE,eAAC3C,GAAA,EAAKO,MAAN,CACEwkH,eAAc,OAAErhC,QAAF,IAAEA,OAAF,EAAEA,EAAmBG,SACnC/8E,UAAQ,KAId,CACEkpC,OAAQ,wBACRrtC,MAAK,OAAE+gF,QAAF,IAAEA,OAAF,EAAEA,EAAmBC,eAE5B,CACE3zC,OAAQ,4BACRrtC,MAAK,OAAE+gF,QAAF,IAAEA,OAAF,EAAEA,EAAmBI,yBC1hBxC,IAAMgzB,GAAoB,CACxBntC,OAAQ4sC,IAGJyO,GAAY,CAChB,aACA,KACA,UACA,QACA,QACA,SACA,YAGIC,GAAU,CAAC,CAAE/lH,GAAI,aAAcmoB,MAAM,GAAQ,CAAEnoB,GAAI,OAE1C,SAASgmH,KACtB,IAAMhmH,EAAKgyC,SAASC,eAAYjyC,IAClB2iC,EAAakN,GAASptC,OAAO,CAAEzC,OAArCgE,KAFgC,EAGUkwE,GAAGlnC,UAAU,CAC7DzpC,OAAQ,CACN+kC,SAAU,UACV7J,UAAW,CAACz+B,GACZw8D,kBAAkB,KAJdp4B,EAHgC,EAGhCA,IAAK50B,EAH2B,EAG3BA,QAAS6b,EAHkB,EAGlBA,QAASD,EAHS,EAGTA,QAAS3Y,EAHA,EAGAA,MAQxC,OACE,eAACu+B,GAAD,CACE9oC,MAAM,eACNipC,WAAY,eAACuyE,GAAD,CAAwB1jH,GAAIA,IACxCkxC,KAAI,OAAEvO,QAAF,IAAEA,OAAF,EAAEA,EAAUjjC,KAHlB,SAKE,eAAC,GAAGiD,MAAJ,CACEyhC,IAAKA,EACL9uB,UAAW9F,EACX6b,QAASA,EACTD,QAASA,EACTE,UAAW7Y,EACX1P,OAAQ+iH,GACRt7F,YAAau7F,GACbjjH,WAAY80G,OCzCL,SAASqO,KACtB,IAAMjmH,EAAKgyC,SAASC,eAAYjyC,IACxB2iC,EAAakN,GAASptC,OAAO,CAAEzC,OAA/B2iC,SAFqC,EAI3C8gC,GAAQz2B,UAAU,CAChBzpC,OAAQ,CACN+kC,SAAU,UACV7J,UAAW,CAACz+B,EAAG2yD,WAAWzoC,SAAS,EAAG,SAJpC/b,EAHqC,EAGrCA,SAAUqB,EAH2B,EAG3BA,QAAS6b,EAHkB,EAGlBA,QAASD,EAHS,EAGTA,QAASrZ,EAHA,EAGAA,WAAYU,EAHZ,EAGYA,MAQzD,OACE,eAACu+B,GAAD,CACE9oC,MAAM,oBACNipC,WAAY,eAACuyE,GAAD,CAAwB1jH,GAAIA,IACxCkxC,KAAI,OAAEvO,QAAF,IAAEA,OAAF,EAAEA,EAAUjjC,KAHlB,SAKE,eAAC,GAAQiD,MAAT,CACEwL,SAAUA,EACVmH,UAAW9F,EACX6b,QAASA,EACTD,QAASA,EACTE,UAAW7Y,EACX1P,OAAQ,CAAC,OAAQ,KAAM,QAAS,SAAU,WAAY,SACtDynB,YAAa,CAAC,CAAExqB,GAAI,OAAQmoB,MAAM,GAAQ,CAAEnoB,GAAI,OAChDurB,aAAc,WAAa4F,IAAOpf,GAAYo9D,cC7BvC,SAAS+2C,GAAT,GAA+D,IAAzBhkH,EAAwB,EAAxBA,SAAU4M,EAAc,EAAdA,WAC7D,OACE,gBAAC+zG,GAAD,WACE,eAACxT,GAAD,CAAgBltG,GAAE,gCAAlB,gCAGA,eAACktG,GAAD,CACEltG,GAAE,2CACA2M,EAAU,sBAAkBA,GAAe,IAF/C,2BAOA,eAACugG,GAAD,CAAgBltG,GAAE,sCAAlB,yBAGA,sBAAKf,UAAU,qBACdc,KCdQ,SAASikH,KACtB,IAAMr3G,EAAaszD,GAAgB,YADW,EAGFztD,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADX8sB,EAHsC,EAGtCA,uBAAwB3oB,EAHc,EAGdA,QAGhC,MAE+B,MAA3B2oB,GAC2B,MAA3BA,GACA3oB,EAWG,eAACqtG,GAAD,IAPH,eAACp1E,GAAD,CACE9oC,MAAM,6BACNipC,WAAY,eAAC+0E,GAAD,CAA4Bp3G,WAAYA,IACpDoiC,KAAK,2CAOb,SAASk1E,KACP,IAAMt3G,EAAaszD,GAAgB,YAC3Bz/B,EAAakN,GAASptC,OAAO,CAAEzC,GAAI8O,EAAY6M,QAAQ,IAAvDgnB,SAF8B,EAKpCkN,GAASuO,kBAAkB17C,OAAO,CAChCiZ,QAAQ,IAFJ1J,EAJ8B,EAI9BA,SAAUQ,EAJoB,EAIpBA,MAAO7E,EAJa,EAIbA,QAAS4B,EAJI,EAIJA,QAK5BtH,GAAgB,OAARy6B,QAAQ,IAARA,OAAA,EAAAA,EAAUjjC,MAAV,iBACPijC,QADO,IACPA,OADO,EACPA,EAAUjjC,KADH,uBAEV,8BAMJ,OAJAoc,qBAAU,WACRrJ,IACA7E,EAAQ,CAAEkB,iBACT,CAACA,EAAYlB,EAAS6E,IAEvB,eAACu+B,GAAD,CACE9oC,MAAOA,EACPipC,WAAY,eAAC+0E,GAAD,CAA4Bp3G,WAAYA,IAFtD,SAIE,eAAC,GAASsvC,kBAAkBz7C,MAA5B,CACEqB,KAAMiO,EACNqD,UAAW9F,EACX8b,UAAW,WACT7Y,IACA7E,EAAQ,CAAEkB,oB,yBChDL,SAASu3G,KACtB,IAAMv3G,EAAaszD,GAAgB,cADc,EAEzBhU,KAAfE,EAFwC,oBAG7CrvB,EAAI,IAAIr0B,KACZq0B,EAAE63C,QAAQ,GACV73C,EAAEqnF,SAASrnF,EAAEsnF,YALoC,MAMzBphH,mBAAS85B,GANgB,mBAM1CpJ,EAN0C,KAMpCihD,EANoC,OAQLniE,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADX8sB,EARyC,EAQzCA,uBAAwB3oB,EARiB,EAQjBA,QAIhC,MAE+B,MAA3B2oB,GAC2B,MAA3BA,GACA3oB,EAYF,eAACi4B,GAAD,CACE9oC,MAAM,gCACNipC,WAAY,eAAC+0E,GAAD,IAFd,SAIE,gBAACnlH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SAAgB,UAChB,eAACD,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,eAAC,KAAD,CACE43B,SAAUhD,EACVhvB,SAAU,SAACo4B,GAAD,OAAO63C,EAAQ73C,IACzB9F,WAAW,UACXkgB,qBAAmB,MAGvB,eAACr4C,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CACEE,QAAS,kBACPssD,EAAY,uCAAD,OAC8Bl2B,KAAMuhB,WAAW9jB,MAH9D,uBAvBJ,eAACmb,GAAD,CACE9oC,MAAM,yCACNipC,WAAY,eAAC+0E,GAAD,CAA4Bp3G,WAAYA,IACpDoiC,KAAK,2CCzBE,SAASs1E,KACtB,IAAMxmH,EAAKgyC,SAASC,eAAYjyC,IAC1BkI,EAAQ,0BAFoC,EAINyM,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADX8sB,EAJ0C,EAI1CA,uBAAwB3oB,EAJkB,EAIlBA,QAIhC,GAE+B,MAA3B2oB,GAC2B,MAA3BA,IACA3oB,EAGF,OACE,eAACi4B,GAAD,CACE9oC,MAAOA,EACPipC,WAAY,eAAC+0E,GAAD,IACZh1E,KAAK,2CAKX,IAAMu1E,EAAsD,MAA3B/kF,GAAkC3oB,EAEnE,OACE,eAAC2tG,GAAD,CACE1mH,GAAIA,EACJkI,MAAOA,EACPy+G,UAAWF,IAKjB,SAASC,GAAT,GAAgE,IAAzB1mH,EAAwB,EAAxBA,GAAIkI,EAAoB,EAApBA,MAAOy+G,EAAa,EAAbA,UAAa,EAE3D92E,GAASwO,uBAAuB57C,OAAO,CACrCzC,KACA2b,QAAQ,IAHJ3c,EADqD,EACrDA,OAAQkQ,EAD6C,EAC7CA,OAAQG,EADqC,EACrCA,UAAWG,EAD0B,EAC1BA,QAM7Bo3G,EAAc1jH,mBAAQ,WAC1B,UAAIlE,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ6nH,QAAS,CAEnB,IADA,IAAMA,EAAU,GACPllG,EAAI,EAAGA,GAAC,OAAG3iB,QAAH,IAAGA,OAAH,EAAGA,EAAQ6nH,QAAQxoG,QAAQsD,IAAK,CAC/CklG,EAAQ/oG,KAAR,kCAAkB9e,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAQ6nH,QAAQllG,IAAlC,IAAsCw4B,iBAAiB,KACvD,IAAK,IAAIlb,EAAI,EAAGA,GAAC,OAAGjgC,QAAH,IAAGA,OAAH,EAAGA,EAAQ8nH,WAAWzoG,QAAQ4gB,IAC7C,IACQ,OAANjgC,QAAM,IAANA,OAAA,EAAAA,EAAQ8nH,WAAW7nF,GAAGnwB,eAAtB,OAAqC9P,QAArC,IAAqCA,OAArC,EAAqCA,EAAQ6nH,QAAQllG,GAAG7S,YACxD,CACA+3G,EAAQllG,GAAGw4B,iBAAkB,EAC7B,OAIN,OAAO0sE,EACF,OAAO,OACb,CAAC7nH,IAEJ,OACE,gBAACgyC,GAAD,CACE9oC,MAAOA,EACPgpC,KAAM1hC,EAAU,aAAgBxQ,EAA6B,GAApB,kBACzCmyC,WAAY,eAAC+0E,GAAD,IAHd,UAKE,gBAAC/vC,GAAA,EAAD,CAAMC,iBAAiB,UAAUp2E,GAAG,OAAOoB,UAAU,OAArD,UACE,eAACi1E,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAA9B,SACE,eAAC,GAASm2C,uBAAuB17C,MAAjC,CACEqB,KAAM4iH,EACNtxG,UAAW9F,EACX8b,UAAW,WACTpc,EAAO,CAAElP,YAIf,eAACq2E,GAAA,EAAD,CAAKC,SAAS,aAAapuE,MAAM,aAAjC,SACE,eAAC,GAASm2C,uBAAuBjE,gBAAjC,CACEp2C,KAAI,OAAEhF,QAAF,IAAEA,OAAF,EAAEA,EAAQ8nH,WACdxxG,UAAW9F,EACX8b,UAAW,WACTpc,EAAO,CAAElP,eAKjB,eAAC8B,EAAA,EAAD,CACEE,QAAS,kBAAMqN,EAAU,CAAErP,GAAIA,KAC/B4H,SAAU4H,IAAYm3G,EAFxB,yCCtFS,SAASI,KAAwB,IACtC53G,EAAc0gC,GAASuO,kBAAkB37C,SAAzC0M,UACFL,EAAaszD,GAAgB,cAFU,EAGrBhU,KAAfE,EAHoC,sBAKD35C,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADX8sB,EALqC,EAKrCA,uBAAwB3oB,EALa,EAKbA,QAIhC,MAAiC,MAA3B2oB,GAAkC3oB,EAUtC,eAACi4B,GAAD,CACE9oC,MAAM,iCACNipC,WAAY,eAAC+0E,GAAD,CAA4Bp3G,WAAYA,IAFtD,SAIE,eAAC,GAASsvC,kBAAkBj6C,OAA5B,CACEzD,OAAK,EACL0D,OAAQ,CAAE0K,WAAYA,EAAakjC,SAASljC,GAAc,IAC1DzK,SAAU,SAACD,GACT+K,EAAU/K,GAAQqI,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAEjBsuD,EADJx/C,EACgB,0CAAD,OACiCA,GAEhC,iCAAD,OAAkC9O,YArBvD,eAACgxC,GAAD,CACE9oC,MAAM,6BACNipC,WAAY,eAAC+0E,GAAD,CAA4Bp3G,WAAYA,IACpDoiC,KAAK,2CCXE,SAAS61E,KACtB,IAAM/mH,EAAKgyC,SAASC,eAAYjyC,IADa,EAG3C6vC,GAASuO,kBAAkB37C,OAAO,CAChCzC,KACA2b,QAAQ,IAHJ3c,EAFqC,EAErCA,OAAQqQ,EAF6B,EAE7BA,UAAWH,EAFkB,EAElBA,OAAQM,EAFU,EAEVA,QAASm7B,EAFC,EAEDA,iBAFC,EASDh2B,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADX8sB,EATqC,EASrCA,uBAAwB3oB,EATa,EASbA,QAI1B0tG,EAAsD,MAA3B/kF,GAAkC3oB,EAEnE,GAE+B,MAA3B2oB,GAC2B,MAA3BA,IACA3oB,EAGF,OACE,eAACi4B,GAAD,CACE9oC,MAAM,6BACNipC,WACE,eAAC+0E,GAAD,CAA4Bp3G,WAAU,OAAE9P,QAAF,IAAEA,OAAF,EAAEA,EAAQ8P,aAElDoiC,KAAK,2CAIX,IAAMtpC,EAAW4H,IAAYi3G,EAE7B,OACE,eAACz1E,GAAD,CACE9oC,MA7BU,oBA8BVgpC,KACE1hC,EACI,aACCxQ,EAED,GADA,uCAGNmyC,WACE,eAAC+0E,GAAD,CAA4Bp3G,WAAU,OAAE9P,QAAF,IAAEA,OAAF,EAAEA,EAAQ8P,aAVpD,SAaG9P,EACC,uCACE,eAAC,GAASo/C,kBAAkBj6C,OAA5B,CACEC,OAAQpF,EACRqF,SAAU,SAAC2iH,GAAD,OAAe33G,EAAU23G,IACnC1iH,WAAYsD,IAEd,wBACA,eAAC8R,GAAA,EAAD,CAAO3X,QAAS,OAAhB,SACE,eAACo2G,GAAD,CACEC,YAAap5G,EAAOo5G,YACpB3sG,OAAQk/B,EACRjpB,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAU32D,EAAOgB,IACzCgyE,SAAU9iE,EACV5K,WAAYsD,MAGhB,eAAC,GAAD,CAAc4+F,OAAQxnG,IACtB,eAAC0a,GAAA,EAAD,CAAO3X,QAAS,UAAhB,SACE,eAACy6G,GAAD,CACEh/E,aAAcx+B,EAAO29G,KACrBrnG,UAAW9F,EACXzM,OAAQ,CAAC,WAAY,SAAU,cAAe,eAIlD,OC5EK,SAASkkH,GAAT,GAAiD,IAAfl2E,EAAc,EAAdA,WACzC4jB,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,cAAX,SACE,eAAC6xD,GAAD,CACEr1E,WAAY,eAAC,GAAD,CAA4BJ,WAAYA,QAGxD,eAAC,KAAD,CAAO4jB,KAAI,UAAKA,EAAL,UAAX,SACE,eAAC0xD,GAAD,CACEl1E,WAAY,eAAC,GAAD,CAA4BJ,WAAYA,QAGxD,eAAC,KAAD,CAAO4jB,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,CACExjB,WAAY,eAAC,GAAD,CAA4BJ,WAAYA,QAGxD,eAAC,KAAD,CAAO4jB,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,CACExjB,WAAY,eAAC,GAAD,CAA4BJ,WAAYA,QAGxD,eAAC,KAAD,CAAO+uD,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACwxD,GAAD,CACEh1E,WAAY,eAAC,GAAD,CAA4BJ,WAAYA,WAO9D,SAASm1E,GAAT,GAAqD,IAAfn1E,EAAc,EAAdA,WACpC,OACE,gBAACA,EAAD,WACE,sBAAK3vC,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,oCAAnB,4B,OCzCFpD,aAAkB,CACpBC,OAAQkoH,GAAUloH,OAClBE,QAASgoH,GAAUhoH,UALNioH,G,GAAb/nH,YACWgoH,G,GAAX9nH,UACqB+nH,G,GAArB91F,oBCIa+1F,GARW9nH,eAASC,MAAM,CACvCO,GAAIL,eAASC,MAAM,mBAAmBC,WAAWI,IAAI,GACrD4vE,QAASlwE,eAASC,MAAM,eAAeC,WAAWI,IAAI,GACtDwW,YAAa9W,eAASC,MAAM,eAAeC,WAC3CiP,WAAYwZ,eAAS1oB,MAAM,YAAYC,WACvCq5F,YAAav5F,eAASC,MAAM,QAAQC,WAAWI,IAAI,KCiFrD,SAASsnH,GAAT,GAA8B,IAAV7mH,EAAS,EAATA,MACVC,EAAeC,eAAfD,WAER,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,gBAACA,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CAAYvB,KAAK,UAAUE,MAAM,kBAEnC,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CAAYvB,KAAK,KAAKE,MAAM,sBAAsBsB,UAAWR,SAGjE,eAACI,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW/tC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAIkyC,SAIV,eAAC7yC,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAD,CAAY7vC,KAAK,cAAcE,MAAM,oBAGzC,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAW2J,KAAZ,CACElL,KAAK,YACLE,MAAM,aACNk4B,YAAY,EACZ3C,eAAe,EACfh0B,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAW2J,KAAZ,CACElL,KAAK,UACLE,MAAM,WACNk4B,YAAY,EACZ3C,eAAe,EACfh0B,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW/tC,OAAZ,CACEC,GAAIwa,KAAKza,OACT9B,KAAK,WACLE,MAAM,mBAIZ,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,GAAD,CACEvB,KAAK,iBACLE,MAAM,sCAGV,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,GAAD,CAAWvB,KAAK,gBAAgBE,MAAM,wBAG1C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,OAAzB,SACE,eAAComH,GAAD,CAAgB9nH,KAAK,cAAcE,MAAM,aAG7C,eAACkB,GAAA,EAAKC,IAAN,CAAUK,UAAU,OAApB,SACE,eAACU,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,yBAQR,SAASupE,GAAT,GAAiD,IAA5BxqE,EAA2B,EAA3BA,KAAME,EAAqB,EAArBA,MAAO0E,EAAc,EAAdA,WAAc,EAI1CkT,aAAc,CAAE9X,SAJ0B,IAE5C+X,MAAS5Q,EAFmC,EAEnCA,SAAUpD,EAFyB,EAEzBA,MAAOmyB,EAFkB,EAElBA,OACZ9oB,EAH8B,EAG5C4K,WAAc5K,MAGhB,OACE,eAAChM,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKM,MAAO,CAAEC,SAAU,SAAxB,SACE,eAAC,GAAQC,OAAT,CACE5B,MAAOA,EACPiH,SAAU,SAACsO,GACT,IAAM1R,EAAc,OAAN0R,EAAa,GAAb,OAAkBA,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAGnV,GACnC6G,EAASpD,IAEXA,MAAOA,GAAS,KAChBmyB,OAAQA,EACRhe,UAAW9K,EACXxI,WAAYA,EACZuT,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,QACfuzD,SAAU,OACVtmD,aAAW,EACXwmD,qBAAmB,QAO7B,SAASgnD,GAAT,GAA0E,IAAhD9nH,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,oDAInEwU,aAAc,CAAE9X,SAJmD,IAErE+X,MAAS5Q,EAF4D,EAE5DA,SAAa4Q,EAF+C,6BAGvD3K,EAHuD,EAGrE4K,WAAc5K,MAHuD,EAOnElM,eADF+W,aAAgBrT,kBANqD,SASvE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,gBAACkB,GAAA,EAAK8F,QAAN,qCACElH,KAAMA,EACNE,MAAM,OACN6B,GAAG,SACHoF,SAAU,SAACsO,GACTtO,EAASsO,IAEXvN,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAVN,cAYE,yBAAQS,MAAM,KACd,yBAAQA,MAAM,IAAd,qBACA,yBAAQA,MAAM,IAAd,iBACA,yBAAQA,MAAM,IAAd,qBACA,yBAAQA,MAAM,IAAd,oBACA,yBAAQA,MAAM,IAAd,gBACA,yBAAQA,MAAM,IAAd,iCAEF,eAAC3C,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aClOD,SAAS06G,GAAT,GAA4C,IAAjBznH,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SAC5C,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,4BAAD,OAA8BpC,IAF9C,SAIGkC,GAAYlC,ICFnB,IA+Ce0nH,GA/CqB3iH,IAAMC,YACxC,WAQEC,GACI,IAPFxB,EAOC,EAPDA,MAOC,IAND5B,eAMC,SALDiN,EAKC,EALDA,WAKC,IAJDuF,mBAIC,MAJa,yBAIb,EAHErR,EAGF,iEAC+BqkH,GAA0B,CAC1D/gH,OAAQ,CAAEwI,cACV6M,SAAU7M,IAFJ0+B,EADL,EACKA,aAAch+B,EADnB,EACmBA,QAKhBqF,EAAWnP,IAAEoP,OACjB04B,EACGjqC,QAAO,SAACod,GAAD,OAAsB,IAAfA,EAAEzgB,UAAsBygB,EAAE3gB,KAAOyD,KAC/C8C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEtV,KAAM+D,MAAOquB,aAAW9c,EAAEhV,QAEhD,SAGEiV,EAAc,KAOlB,OANIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAG3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAW9F,EACX+F,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OChDC2kH,GAAqB,CAChC/uE,EAAG,CACD54C,GAAI,IACJyW,YAAa,OAEfmxG,EAAG,CACD5nH,GAAI,IACJyW,YAAa,WAEfoxG,EAAG,CACD7nH,GAAI,IACJyW,YAAa,WAEfiiC,EAAG,CACD14C,GAAI,IACJyW,YAAa,UAEfqxG,EAAG,CACD9nH,GAAI,IACJyW,YAAa,MAEf2xD,EAAG,CACDpoE,GAAI,IACJyW,YAAa,oBCVXm5B,GAAqB,CACzBC,SAAU,gBAAGpsC,EAAH,EAAGA,MAAH,OACR,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,cAAD,OAAgBqB,IAC9BsD,OAAO,SACP+oC,IAAI,sBAJN,SAMGrsC,MAKQ,SAASskH,GAAT,GAeX,IAdFv6E,EAcC,EAdDA,aAcC,IAbDw6E,gBAaC,SAZW/3E,EAYX,EAZDntC,WAYC,IAXDC,cAWC,MAXQ,CACP,cACA,WACA,UACA,kBACA,kBACA,oBACA,qBAID,MAFDynB,mBAEC,MAFa,CAAExqB,GAAI,WAEnB,EADEgD,EACF,gFACKF,EAAaI,mBACjB,8BAAC,eAAW0sC,IAAuBK,KACnC,CAACA,IAGGhtC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBgqC,EAA3B,EAAU9pC,IAAOC,SAAjB,OACJokH,EACE,eAAC,GAAD,CAAUhoH,GAAE,OAAEytC,QAAF,IAAEA,OAAF,EAAEA,EAAMztC,GAApB,SACGyD,IAAK,OAAIgqC,QAAJ,IAAIA,OAAJ,EAAIA,EAAMh3B,eAAf,OAA8Bg3B,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAMztC,MAGvCyD,IAGN,CACEzD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAMV,EAAW+sC,UAGnB,CACE7vC,GAAI,UACJmD,OAAQ,cACRC,SAAU,UACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,kBACJmD,OAAQ,eACRC,SAAU,kBACV6V,gBAAgB,GAElB,CACEjZ,GAAI,kBACJmD,OAAQ,cACRC,SAAU,kBACV6V,gBAAgB,GAElB,CACEjZ,GAAI,oBACJmD,OAAQ,iBACRC,SAAU,oBACV6V,gBAAgB,GAElB,CACEjZ,GAAI,oBACJmD,OAAQ,gBACRC,SAAU,oBACV6V,gBAAgB,GAElB,CACEjZ,GAAI,WACJmD,OAAQ,YACRC,SAAU,WACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,cACJmD,OAAQ,OACRC,SAAU,SAAC6kH,GAAD,aACR,UAAAN,GAAkB,OAACM,QAAD,IAACA,OAAD,EAACA,EAAa/uB,oBAAhC,eAA8CziF,cAAe,IAC/DpT,OAAQS,KACRP,OAAQ,aAGZ,CAACT,EAAYklH,IAEf,OACE,eAACrlH,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,gBACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMwpC,EACNhjB,YAAaA,GACTxnB,IC9HV,IAAMD,GAAS,CAAC,aAAc,UAAW,eCOzC,IAmBemlH,GAnBK,CAElB5lH,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQ2kH,GACR1kH,OAAQykH,GACRn6E,UAAWq6E,GAEX1kH,MAAOolH,GACP9jH,KAAMwjH,GACNl1E,iBAAkBm1E,GAClBl1E,gBDnBa,YAAqD,IAAf1jC,EAAc,EAAdA,WAAc,EACxBu4G,GAA0B,CACjE/gH,OAAQ,CAAEwI,cACV6M,QAAQ,IAFF6xB,EADyD,EACzDA,aAAch+B,EAD2C,EAC3CA,QAASiD,EADkC,EAClCA,MAI/B,OACE,eAAC,GAAD,CACE+6B,aAAcA,EACdzqC,OAAQA,GACRuS,UAAW9F,EACX8b,UAAW,kBAAM7Y,EAAM,CAAE3D,gBACzB8b,cAAe,KCSnBzmB,ONLa,YAKX,IAAD,IAJDC,OAAU2lD,GAIT,aAJ2C,GAI3C,GAJSA,UAAWsB,EAIpB,EAJoBA,QAAYjnD,EAIhC,wCAHDC,EAGC,EAHDA,SAGC,IAFDC,kBAEC,aADD5D,aACC,SACD,OACE,gBAACI,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEuD,cAAa,aACXwlD,UAAWA,EACP3xB,KAAMwc,UAAUmV,GAAWl/C,cAC3B,GACJwgD,QAASA,EAAUjzB,KAAMwc,UAAUyW,GAASxgD,cAAgB,IACzDzG,GAELC,SAAU,gBAAG0lD,EAAH,EAAGA,UAAWsB,EAAd,EAAcA,QAAYjnD,EAA1B,+CACRC,EAAS,aACP0lD,UAAWA,EAAY3xB,KAAM0jB,MAAMiO,GAAa,GAChDsB,QAASA,EAAUjzB,KAAM0jB,MAAMuP,GAAW,IACvCjnD,KAGPI,OAAQ,CAAEA,OAAQ2jH,IAClB7jH,WAAYA,EACZI,aAAW,EAjBb,SAmBE,eAAC6iH,GAAD,CAAU7mH,MAAOA,QAGrB,eAACM,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,KAA/B,SACE,eAACiB,GAAD,CACEC,OAAQ,CACN,CACEK,OAAQ,aACRrtC,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQgkH,UACfhnH,UAAW,cAEb,CACE0vC,OAAQ,eACRrtC,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQikH,gBACfjnH,UAAW,cAEb,CACE0vC,OAAQ,iBACRrtC,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQkkH,kBACflnH,UAAW,cAEb,CACE0vC,OAAQ,cACRrtC,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQmkH,gBACfnnH,UAAW,cAEb,CACE0vC,OAAQ,gBACRrtC,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQokH,kBACfpnH,UAAW,wBO1EV,SAASqnH,GAAT,GAA8C,IAAbvmH,EAAY,EAAZA,SAC9C,OACE,gBAAC2gH,GAAD,WACE,eAACxT,GAAD,CAAgBltG,GAAE,2BAAlB,2BAGA,eAACktG,GAAD,CAAgBltG,GAAG,+BAAnB,8BAGA,sBAAKf,UAAU,qBACdc,KCPP,IAAMwtG,GAAmB,CACvB7/D,SAAU,gBAAGpsC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,EAAnB,SAA2BA,MAGvC,SAASilH,KACtB,IAAM55G,EAAaszD,GAAgB,YAC3Bz/B,EAAakN,GAASptC,OAAO,CAAEzC,GAAI8O,EAAY6M,QAAQ,IAAvDgnB,SAFiC,EAGSulF,GAAYl7E,UAAU,CACtErxB,QAAQ,EACRrV,OAAQwI,EAAa,CAAEA,cAAe,KAFhC0+B,EAHiC,EAGjCA,aAAc/6B,EAHmB,EAGnBA,MAAO7E,EAHY,EAGZA,QAAS4B,EAHG,EAGHA,QAKhCtH,GAAgB,OAARy6B,QAAQ,IAARA,OAAA,EAAAA,EAAUjjC,MAAV,gCACQijC,QADR,IACQA,OADR,EACQA,EAAUjjC,MAC5B,gBAEJ,OACE,eAACsxC,GAAD,CAAM9oC,MAAOA,EAAOipC,WAAY,eAACs3E,GAAD,IAAhC,SACE,eAAC,GAAY9lH,MAAb,CACE6qC,aAAcA,EACd1qC,WAAY4sG,GACZp6F,UAAW9F,EACX8b,UAAW,WACT7Y,IACA7E,SCzBK,SAAS+6G,KAAkB,IAChCx5G,EAAc+4G,GAAYzlH,SAA1B0M,UAD+B,EAEfi/C,KAAfE,EAF8B,oBAGvC,OACE,eAACtd,GAAD,CAAM9oC,MAAO,mBAAoBipC,WAAY,eAACs3E,GAAD,IAA7C,SACE,eAAC,GAAYtkH,OAAb,CACEzD,OAAK,EACL0D,OAAQ,CAAEyF,UAAU,GACpBxF,SAAU,SAAC4jH,GAAD,OACR94G,EAAU84G,GAAax7G,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAC1BsuD,EAAY,kBAAD,OAAmBtuD,YCV3B,SAAS4oH,KACtB,IAAM5oH,EAAKgyC,SAASC,eAAYjyC,IADQ,EAEIkoH,GAAYzlH,OAAO,CAC7DzC,KACA2b,QAAQ,IAFFssG,EAFgC,EAEhCA,YAAa54G,EAFmB,EAEnBA,UAAWG,EAFQ,EAERA,QAK1BtH,EAAK,eACE,OAAX+/G,QAAW,IAAXA,OAAA,EAAAA,EAAaxxG,aAAc,KAAOwxG,EAAYxxG,YAAc,IAE9D,OACE,eAACu6B,GAAD,CACE9oC,MAAOA,EACPgpC,KACE1hC,EACI,aACCy4G,EAAD,OAEAA,QAFA,IAEAA,OAFA,EAEAA,EAAap4C,QADb,iBAGN1+B,WAAY,eAACs3E,GAAD,IATd,SAWGR,EACC,eAAC,GAAY9jH,OAAb,CACEC,OAAQ6jH,EACR5jH,SAAU,SAAC4jH,GAAD,OAAiB54G,EAAU44G,IACrC3jH,WAAYkL,IAEZ,OC5BK,SAASq5G,KAAuB,IACvCl0D,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAACg0D,GAAD,MAEF,eAAC,KAAD,CAAO7oB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC+zD,GAAD,MAEF,eAAC,KAAD,CAAO5oB,OAAK,EAACnrC,KAAI,UAAKA,EAAL,QAAjB,SACE,eAACi0D,GAAD,SCbO,SAASE,GAAT,GAAgE,IAAzB5mH,EAAwB,EAAxBA,SAAU4M,EAAc,EAAdA,WAC9D,OACE,gBAAC+zG,GAAD,WACE,eAACxT,GAAD,CAAgBltG,GAAE,kCAAlB,kCAGA,eAACktG,GAAD,CACEltG,GAAE,6CACA2M,EAAU,sBAAkBA,GAAe,IAF/C,yBAOA,sBAAK1N,UAAU,qBACdc,KCZQ,SAAS6mH,KACtB,IAAMj6G,EAAaszD,GAAgB,YAC3Bz/B,EAAakN,GAASptC,OAAO,CAAEzC,GAAI8O,EAAY6M,QAAQ,IAAvDgnB,SAFuC,EAK7CkN,GAASsO,mBAAmBz7C,OAAO,CACjCiZ,QAAQ,IAFJ1J,EAJuC,EAIvCA,SAAUQ,EAJ6B,EAI7BA,MAAO7E,EAJsB,EAItBA,QAAS4B,EAJa,EAIbA,QAK5BtH,GAAgB,OAARy6B,QAAQ,IAARA,OAAA,EAAAA,EAAUjjC,MAAV,iBACPijC,QADO,IACPA,OADO,EACPA,EAAUjjC,KADH,yBAEV,gCAMJ,OAJAoc,qBAAU,WACRrJ,IACA7E,EAAQ,CAAEkB,iBACT,CAACA,EAAYlB,EAAS6E,IAEvB,eAACu+B,GAAD,CACE9oC,MAAOA,EACPipC,WAAY,eAAC23E,GAAD,CAA6Bh6G,WAAYA,IAFvD,SAIE,eAAC,GAASqvC,mBAAmBx7C,MAA7B,CACEqB,KAAMiO,EACNqD,UAAW9F,EACX8b,UAAW,WACT7Y,IACA7E,EAAQ,CAAEkB,oBC1BL,SAASk6G,KAAyB,IACvC75G,EAAc0gC,GAASsO,mBAAmB17C,SAA1C0M,UACFL,EAAaszD,GAAgB,cAFW,EAGtBhU,KAAfE,EAHqC,oBAI9C,OACE,eAACtd,GAAD,CACE9oC,MAAM,mCACNipC,WAAY,eAAC23E,GAAD,CAA6Bh6G,WAAYA,IAFvD,SAIE,eAAC,GAASqvC,mBAAmBh6C,OAA7B,CACEzD,OAAK,EACL0D,OAAQ,CAAE0K,WAAYA,EAAakjC,SAASljC,GAAc,IAC1DzK,SAAU,SAAC6oC,GAAD,OACR/9B,EAAU+9B,GAASzgC,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAElBsuD,EADJx/C,EACgB,4CAAD,OACmCA,GAElC,mCAAD,OAAoC9O,YChBhD,SAASgpH,KAAyB,IAAD,EACxChpH,EAAKgyC,SAASC,eAAYjyC,IADc,EAG5C6vC,GAASsO,mBAAmB17C,OAAO,CACjCzC,KACA2b,QAAQ,IAHJ3c,EAFsC,EAEtCA,OAAQqQ,EAF8B,EAE9BA,UAAWG,EAFmB,EAEnBA,QAASy+B,EAFU,EAEVA,cAAeE,EAFL,EAEKA,cAK3CxL,EAAakN,GAASptC,OAAO,CAAEzC,GAAE,OAAEhB,QAAF,IAAEA,OAAF,EAAEA,EAAQ8P,aAA3C6zB,SACFz6B,EAAQy6B,EAAQ,iBACfA,QADe,IACfA,OADe,EACfA,EAAUjjC,KADK,qBACK27C,SADL,IACKA,IADL,UACKA,GAAa,OAAGr8C,QAAH,IAAGA,OAAH,EAAGA,EAAQsK,aAD7B,aACK,EAA+BmN,aADpC,uCAEmB,OAANzX,QAAM,IAANA,OAAA,EAAAA,EAAQgB,IAAK,KAAOhB,EAAOgB,GAAK,IACnE,OACE,gBAACgxC,GAAD,CACE9oC,MAAOA,EACPgpC,KACE1hC,EACI,aACCxQ,EAED,GADA,yCAGNmyC,WACE,eAAC23E,GAAD,CAA6Bh6G,WAAU,OAAE9P,QAAF,IAAEA,OAAF,EAAEA,EAAQ8P,aAVrD,UAaG9P,EACC,eAAC,GAASm/C,mBAAmBh6C,OAA7B,CACEC,OAAQpF,EACRqF,SAAU,SAAC6oC,GAAD,OAAa79B,EAAU69B,IACjC5oC,WAAYkL,IAEZ,KACJ,eAAC+gC,GAAD,CAAeroC,MAAM,WAArB,SACE,eAACuxG,GAAD,CACEz5G,GAAE,kBAAaA,EAAb,aACFinG,SAAQ,OAAEjoG,QAAF,IAAEA,OAAF,EAAEA,EAAQioG,SAClB3xF,UAAW9F,EACX/D,OAAQwiC,EACR0rB,OAAQxrB,KANwB,uBClC3B,SAAS86E,GAAT,GAAkD,IAAfl4E,EAAc,EAAdA,WAC1C4jB,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,CACExjB,WAAY,eAAC,GAAD,CAA6BJ,WAAYA,QAGzD,eAAC,KAAD,CAAO4jB,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,CACExjB,WAAY,eAAC,GAAD,CAA6BJ,WAAYA,QAGzD,eAAC,KAAD,CAAO+uD,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACo0D,GAAD,CACE53E,WAAY,eAAC,GAAD,CAA6BJ,WAAYA,WAO/D,SAAS+3E,GAAT,GAAsD,IAAf/3E,EAAc,EAAdA,WACrC,OACE,gBAACA,EAAD,WACE,sBAAK3vC,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,sCAAnB,4BCzBS,SAAS+mH,KAAoB,IACpCv0D,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,uBAAX,SACE,eAACsyD,GAAD,MAEF,eAAC,KAAD,CAAOtyD,KAAI,UAAKA,EAAL,yBAAX,SACE,eAACs0D,GAAD,MAEF,eAAC,KAAD,CAAOt0D,KAAI,UAAKA,EAAL,kBAAX,SACE,eAACk0D,GAAD,MAEF,eAAC,KAAD,CAAOl0D,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACsxD,GAAD,MAEF,eAAC,KAAD,CAAOtxD,KAAI,UAAKA,EAAL,YAAX,SACE,eAACqxD,GAAD,MAEF,eAAC,KAAD,CAAOrxD,KAAI,UAAKA,EAAL,QAAX,SACE,eAACgvD,GAAD,MAEF,eAAC,KAAD,CAAO7jB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACouD,GAAD,S,OC9BNhkH,aAAkB,CAChBC,OAAQ6kD,GAAY7kD,OACpBE,QAAS2kD,GAAY3kD,UAHGiqH,G,GAAb/pH,YAAqCgqH,G,GAAX9pH,UCK1B+pH,GALWxzG,aAAkB,CAC1CnW,KAAM,SACNJ,UAAW8pH,KCeEE,GAlBM9pH,eAASC,MAAM,CAClCO,GAAIL,eACDC,MAAM,MACNC,WACAI,IAAI,GACJsW,WAAU,SAACpB,GAAD,MAAO,UAAGA,GAAIkF,iBAC3B5D,YAAa9W,eAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnDiP,WAAYnP,eAASC,MAAM,YAC3Bi2B,KAAOl2B,eAASC,MAAQ,YACxB88C,SAAW/8C,eAASC,MAAQ,YAC5B2pH,WAAY5pH,eACT0W,MAAM,CAAC,IAAK,IAAK,MACjBjW,QAAQ,KACRP,WACAD,MAAM,eACTM,SAAUC,eAAON,WAAWO,SAAQ,KCMtC,SAASopH,KACP,OACE,eAAC1oH,GAAA,EAAD,UACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAAC0oH,GAAD,CAAiBzpH,GAAG,KAAKJ,MAAM,OAC/B,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,WAAWE,MAAM,kBAI5C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAAC0oH,GAAD,CAAiBzpH,GAAG,cAAcJ,MAAM,kBAG1C,eAACkB,GAAA,EAAKC,IAAN,CAAUK,UAAU,YAApB,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAY1B,GAAI,aAAcoB,UAAU,OAAxC,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,CAAoBnW,UAAU,OAA9B,SACE,eAACkW,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG,eAGL,eAACR,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAWO,OAAZ,CACE9B,KAAK,aACL+B,GAAIouC,GAASruC,OACbg0B,mBAAmB,OACnBy/D,OAAQ,CACN53E,MAAO,SAAC/b,GAAD,mBAAC,eACHA,GADE,IAELC,SAAU,OAEZ2zF,UAAW,SAAC5zF,GAAD,mBAAC,eACPA,GADM,IAETiuC,MAAO,UAET4lD,KAAM,SAAC7zF,GAAD,mBAAC,eACFA,GADC,IAEJiuC,MAAO,0BAUzB,eAACzuC,GAAA,EAAKC,IAAN,UACE,eAAC0oH,GAAD,CAAiBzpH,GAAG,SAASJ,MAAM,aAErC,eAACkB,GAAA,EAAKC,IAAN,UACE,eAAC0oH,GAAD,CAAiBzpH,GAAG,SAASJ,MAAM,aAErC,eAACkB,GAAA,EAAKC,IAAN,UACE,eAAC0oH,GAAD,CAAiBzpH,GAAG,SAASJ,MAAM,aAErC,eAACkB,GAAA,EAAKC,IAAN,UACE,eAAC0oH,GAAD,CAAiBzpH,GAAG,OAAOJ,MAAM,4BAQ7C,SAAS6pH,GAAT,GAAyC,IAAdzpH,EAAa,EAAbA,GAAIJ,EAAS,EAATA,MAC7B,OACE,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAKY,MAAN,CAAY1B,GAAIA,EAAIoB,UAAU,OAA9B,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,UACE,eAACD,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG3B,MAGL,eAAC,KAAWgH,QAAZ,CACElH,KAAMM,EACNmB,aAAa,MACbG,MAAO,CAAEC,SAAU,kBC7G/B,IAMemoH,GANMruG,aAAa,CAChC3b,KAAM,SACNN,YAAa+pH,GACb5lH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCHzD,IAMekmH,GANWn8G,aAAkB,CAC1C9N,KAAM,SACNN,YAAa+pH,GACb5lH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCmB1CmmH,GAjBA,CAEbtnH,IAAKuhD,GAAYvhD,IAEjBpD,QAAS2kD,GAAY3kD,QACrBsD,UAAWqhD,GAAY7kD,OAAOwD,UAE9BE,OAAQymH,GACR1mH,OAAQ2mH,GAER5nH,OAAQkoH,GACRjhH,YAAakhH,GACbliH,YAAa4hH,GACb1mH,MCba,YAA8C,IAAvBghD,EAAsB,EAAtBA,SAAa3gD,EAAS,6BACpDC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,SACRC,SAAU,KACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,iBAAD,OAAmBqB,IAFnC,SAIGA,MAIP,CACEN,OAAQ,WACRC,SAAU,aACV6V,gBAAgB,EAChBzV,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,OAAO,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,MAG9B,CACEN,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,QAEV,CACEJ,OAAQ,YACRC,SAAU,OACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEN,OAAQ,YACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,WAG1D,IAGF,OACE,eAACd,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,WACNqD,QAASA,EACTe,KAAM2/C,GACF3gD,KDzCRmB,OHfa,YAA6D,IAAD,IAApCC,cAAoC,MAA3B,GAA2B,EAAvBC,EAAuB,EAAvBA,SAAUiR,EAAa,EAAbA,UAC5D,OACE,qCACE,eAAC,KAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQ8kH,IAClB5kH,aAAW,EACXJ,YAAY,EALd,SAOE,eAACklH,GAAD,CAAYl0G,UAAWA,UKXhBu0G,GAJQrqH,eAASC,MAAM,CACpCO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,KCmB1C,SAAS6pH,KACP,OACE,eAAChpH,GAAA,EAAD,UACE,eAACA,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAACF,GAAA,EAAKC,IAAN,UACE,eAACgpH,GAAD,CAAmB/pH,GAAG,KAAKJ,MAAM,iBAwD7C,SAASmqH,GAAT,GAA2C,IAAd/pH,EAAa,EAAbA,GAAIJ,EAAS,EAATA,MAC/B,OACE,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAKY,MAAN,CAAY1B,GAAIA,EAAIoB,UAAU,OAA9B,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,UACE,eAACD,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG3B,MAGL,eAAC,KAAWgH,QAAZ,CACElH,KAAMM,EACNmB,aAAa,MACbG,MAAO,CAAEC,SAAU,kB,OChG7BxC,aAAkB,CAChBC,OAAQ+kD,GAAc/kD,OACtBE,QAAS6kD,GAAc7kD,UAHC8qH,G,GAAb5qH,YAAsC6qH,G,GAAX3qH,UCK3B4qH,GALQ7uG,aAAa,CAClC3b,KAAM,WACNN,YAAa4qH,KCEf,IAgBeG,GAhBE,CAEf7nH,IAAKyhD,GAAczhD,IAEnBpD,QAAS6kD,GAAc7kD,QACvBsD,UAAWuhD,GAAc/kD,OAAOwD,UAEhCE,OAAQsnH,GACRvnH,OAAQwnH,GAERzoH,OAAQ0oH,GACRvnH,MCXa,YAAiD,IAAxBmhD,EAAuB,EAAvBA,UAAc9gD,EAAS,8BACvDC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,OACRC,SAAU,KACVpD,GAAI,OACJqD,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,kBAAD,OAAoBqB,IAFpC,SAIG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAIrC,CAEEN,OAAQ,eACRnD,GAAI,eACJoD,SAAU,SAAC0K,GACT,OACEA,EAAEs8G,KACFt8G,EAAEu8G,KACFv8G,EAAEw8G,KACFx8G,EAAEy8G,KACFz8G,EAAE08G,KACF18G,EAAE28G,KACF38G,EAAE48G,KACF58G,EAAE68G,KACF78G,EAAE88G,KACF98G,EAAE+8G,KACF/8G,EAAEg9G,KACFh9G,EAAEi9G,KACFj9G,EAAEk9G,OAIR,CACE7nH,OAAQ,0BACRnD,GAAI,0BACJoD,SAAU,QAEZ,CACED,OAAQ,aACRnD,GAAI,aACJoD,SAAU,QAEZ,CACED,OAAQ,kBACRnD,GAAI,aACJoD,SAAU,QAEZ,CACED,OAAQ,cACRnD,GAAI,cACJoD,SAAU,QAEZ,CACED,OAAQ,aACRnD,GAAI,cACJoD,SAAU,QAEZ,CACED,OAAQ,iBACRnD,GAAI,iBACJoD,SAAU,QAEZ,CACED,OAAQ,YACRnD,GAAI,YACJoD,SAAU,QAEZ,CACED,OAAQ,iBACRnD,GAAI,iBACJoD,SAAU,QAEZ,CACED,OAAQ,eACRnD,GAAI,eACJoD,SAAU,QAEZ,CACED,OAAQ,cACRnD,GAAI,cACJoD,SAAU,QAEZ,CACED,OAAQ,eACRnD,GAAI,eACJoD,SAAU,QAEZ,CACED,OAAQ,kBACRnD,GAAI,kBACJoD,SAAU,QAEZ,CACED,OAAQ,gBACRnD,GAAI,gBACJoD,SAAU,QAEZ,CACED,OAAQ,gBACRnD,GAAI,gBACJoD,SAAU,WAGd,IAGF,OACE,eAACT,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,YACNqD,QAASA,EACTe,KAAM8/C,EACNt5B,YAAa,CAAExqB,GAAI,OAAQmoB,MAAM,IAC7BnlB,KD9GRioH,cERa,YAAsD,IAArB7mH,EAAoB,EAApBA,OAAWpB,EAAS,2BAC5DC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,OACRC,SAAU,OACVpD,GAAI,OACJqD,OAAQS,KACRP,OAAQ,SAERC,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACHwqB,EAAO,IAiBX,MAhBa,KAATxqB,EAAcwqB,EAAO,aACP,KAATxqB,EAAcwqB,EAAO,UACZ,KAATxqB,EAAcwqB,EAAO,WACZ,KAATxqB,EAAcwqB,EAAO,WACZ,KAATxqB,EAAcwqB,EAAO,MACZ,KAATxqB,EAAcwqB,EAAO,OACZ,KAATxqB,EAAcwqB,EAAO,OACZ,KAATxqB,EAAcwqB,EAAO,UACZ,KAATxqB,EAAcwqB,EAAO,QACZ,KAATxqB,EAAcwqB,EAAO,mBACZ,KAATxqB,EAAcwqB,EAAO,iBACZ,KAATxqB,EAAcwqB,EAAO,QACZ,KAATxqB,EAAcwqB,EAAO,UACZ,KAATxqB,EAAcwqB,EAAO,SACZ,KAATxqB,IAAcwqB,EAAO,kBAEvB,gCAAOA,MAGlB,CAEE9qB,OAAQ,WACRnD,GAAI,WACJoD,SAAU,OACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CACFC,SAAS,mBAAD,OAAqBqB,EAC1Bib,MAAM,MACNwsG,MACAxsG,MAAM,KACNwsG,QAPP,SAUGznH,MAIP,CACEN,OAAQ,OACRnD,GAAI,OACJoD,SAAU,OACVI,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,OAAc,IAAVA,EAAoB,GAEf,gCAAOA,MAIpB,CACEN,OAAQ,OACRnD,GAAI,OACJoD,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,oBACErC,UAAU,OACVE,MAAO,CACLC,SAAU,QACV22E,SAAU,QACVvsC,WAAY,YALhB,SAQGloC,MAIP,CACEN,OAAQ,cACRnD,GAAI,cACJoD,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACE9U,OAAQ,cACRnD,GAAI,cACJoD,SAAU,OACVI,KAAM,YAAgB,IAAbC,EAAY,EAAZA,MACP,MAAc,KAAVA,EAAqB,GAGrB,gCACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,SAM7D,CACEh5C,OAAQ,iBACRnD,GAAI,iBACJoD,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,oBACErC,UAAU,OACVE,MAAO,CACLC,SAAU,QACV22E,SAAU,QACVvsC,WAAY,YALhB,SAQGloC,SAKT,IAGF,OACE,eAACd,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,WACNqD,QAASA,EACTe,KAAMI,GACFpB,KFxHRmB,OHda,YAA+D,IAAD,IAApCC,cAAoC,MAA3B,GAA2B,EAAvBC,EAAuB,EAAvBA,SAAUiR,EAAa,EAAbA,UAC9D,OACE,qCACE,eAAC,KAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQqlH,IAClBnlH,aAAW,EACXJ,YAAY,EALd,SAOE,eAACwlH,GAAD,CAAcx0G,UAAWA,U,GMV7BvW,aAAkB,CACpBC,OAAQilD,GAAqBjlD,OAC7BE,QAAS+kD,GAAqB/kD,UAJjBisH,G,GAAb/rH,YACWgsH,G,GAAX9rH,UCIa+rH,GAPe7rH,eAASC,MAAM,CAC3CO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxCqrH,WAAY3rH,eAASC,MAAM,aAC3B2rH,WAAY5rH,eAASC,MAAM,eAC3B4rH,UAAW7rH,eAASC,MAAM,gBCqB5B,SAAS6rH,KACP,OACE,eAAC3qH,GAAA,EAAD,UACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACE,eAAC2qH,GAAD,CAA0B1rH,GAAG,KAAKJ,MAAM,eAG1C,eAACkB,GAAA,EAAKC,IAAN,CAAUK,UAAU,YAApB,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAY1B,GAAI,aAAcoB,UAAU,OAAxC,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,CAAoBnW,UAAU,OAA9B,SACE,eAACkW,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG,gBAGL,eAACP,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,0BAMjC,eAACoB,GAAA,EAAKC,IAAN,CAAUK,UAAU,YAApB,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAY1B,GAAI,UAAWoB,UAAU,OAArC,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,CAAoBnW,UAAU,OAA9B,SACE,eAACkW,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG,YAGL,eAACR,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAWO,OAAZ,CACE9B,KAAK,aACL+B,GAAIwa,KAAKza,OACTg0B,mBAAmB,OACnBy/D,OAAQ,CACN53E,MAAO,SAAC/b,GAAD,mBAAC,eACHA,GADE,IAELC,SAAU,OAEZ2zF,UAAW,SAAC5zF,GAAD,mBAAC,eACPA,GADM,IAETiuC,MAAO,UAET4lD,KAAM,SAAC7zF,GAAD,mBAAC,eACFA,GADC,IAEJiuC,MAAO,iCAgBnC,SAASm8E,GAAT,GAAkD,IAAd1rH,EAAa,EAAbA,GAAIJ,EAAS,EAATA,MACtC,OACE,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAKY,MAAN,CAAY1B,GAAIA,EAAIoB,UAAU,OAA9B,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,UACE,eAACD,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG3B,MAGL,eAAC,KAAWgH,QAAZ,CACElH,KAAMM,EACNmB,aAAa,MACbG,MAAO,CAAEC,SAAU,kBCjH/B,IAKeoqH,GALetwG,aAAa,CACzC3b,KAAM,SACNN,YAAa+rH,KCFf,IAKeS,GALoBp+G,aAAkB,CACnD9N,KAAM,kBACNN,YAAa+rH,KCkBAU,GAhBS,CAEtBvpH,IAAK2hD,GAAqB3hD,IAE1BpD,QAAS+kD,GAAqB/kD,QAC9BsD,UAAWyhD,GAAqBjlD,OAAOwD,UAEvCE,OAAQyoH,GACR1oH,OAAQ2oH,GAER5pH,OAAQmqH,GACRljH,YAAamjH,GACbjpH,MCTa,YAA+D,IAA/BqhD,EAA8B,EAA9BA,iBAAqBhhD,EAAS,qCACrEC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,UACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,yBAAD,OAA2BqB,IAF3C,SAIGA,MAIP,CACEN,OAAQ,YACRnD,GAAI,YACJoD,SAAU,qBAAGkoH,WACElxG,OAAO63E,cAAc,WAAa,KACjD5uF,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,cACRnD,GAAI,cACJoD,SAAU,aACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,SAGvD,IAGF,OACE,eAACtV,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,cACNqD,QAASA,EACTe,KAAMggD,GACFhhD,KDlCRmB,OHba,YAIX,IAAD,IAHDC,cAGC,MAHQ,GAGR,EAFDC,EAEC,EAFDA,SACAiR,EACC,EADDA,UAEA,OACE,qCACE,eAAC,KAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQ6mH,IAClB3mH,aAAW,EACXJ,YAAY,EALd,SAOE,eAACmnH,GAAD,CAAqBn2G,UAAWA,U,GKjBtCvW,aAAkB,CAChBC,OAAQmlD,GAAgBnlD,OACxBE,QAASilD,GAAgBjlD,UAHD4sH,G,GAAb1sH,YAAwC2sH,G,GAAXzsH,UCK7B0sH,GANUxsH,eAASC,MAAM,CACtCO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxCwF,QAAS9F,eAASC,MAAM,SACxBqsH,QAAStsH,eAASC,MAAM,WCkB1B,SAASssH,KACP,OACE,eAACprH,GAAA,EAAD,UACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACE,eAACorH,GAAD,CAAqBnsH,GAAG,KAAKJ,MAAM,eAGrC,eAACkB,GAAA,EAAKC,IAAN,CAAUK,UAAU,YAApB,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAY1B,GAAI,UAAWoB,UAAU,OAArC,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,CAAoBnW,UAAU,OAA9B,SACE,eAACkW,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG,YAGL,eAACR,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAWO,OAAZ,CACE9B,KAAK,UACL+B,GAAIwa,KAAKva,MAAMF,OACfg0B,mBAAmB,OACnBy/D,OAAQ,CACN53E,MAAO,SAAC/b,GAAD,mBAAC,eACHA,GADE,IAELC,SAAU,OAEZ2zF,UAAW,SAAC5zF,GAAD,mBAAC,eACPA,GADM,IAETiuC,MAAO,UAET4lD,KAAM,SAAC7zF,GAAD,mBAAC,eACFA,GADC,IAEJiuC,MAAO,0BAUzB,eAACzuC,GAAA,EAAKC,IAAN,CAAUK,UAAU,YAApB,SACE,eAACJ,EAAA,EAAD,UACE,eAACF,GAAA,EAAKY,MAAN,CAAY1B,GAAI,UAAWoB,UAAU,OAArC,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,CAAoBnW,UAAU,OAA9B,SACE,eAACkW,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG,YAGL,eAACR,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAWO,OAAZ,CACE9B,KAAK,UACL+B,GAAIwa,KAAKza,OACTg0B,mBAAmB,OACnBy/D,OAAQ,CACN53E,MAAO,SAAC/b,GAAD,mBAAC,eACHA,GADE,IAELC,SAAU,OAEZ2zF,UAAW,SAAC5zF,GAAD,mBAAC,eACPA,GADM,IAETiuC,MAAO,UAET4lD,KAAM,SAAC7zF,GAAD,mBAAC,eACFA,GADC,IAEJiuC,MAAO,iCAgBnC,SAAS48E,GAAT,GAA6C,IAAdnsH,EAAa,EAAbA,GAAIJ,EAAS,EAATA,MACjC,OACE,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAKY,MAAN,CAAY1B,GAAIA,EAAIoB,UAAU,OAA9B,SACE,gBAACkW,GAAA,EAAD,CAAYlW,UAAU,OAAtB,UACE,eAACkW,GAAA,EAAWC,QAAZ,UACE,eAACD,GAAA,EAAWpR,KAAZ,CACE9E,UAAU,0BACVE,MAAO,CAAEC,SAAU,SAFrB,SAIG3B,MAGL,eAAC,KAAWgH,QAAZ,CACElH,KAAMM,EACNmB,aAAa,MACbG,MAAO,CAAEC,SAAU,kBCjI/B,IAKe6qH,GALU/wG,aAAa,CACpC3b,KAAM,SACNN,YAAa0sH,KCFf,IAKeO,GALe7+G,aAAkB,CAC9C9N,KAAM,aACNN,YAAa0sH,KCeAQ,GAfH,CASV1C,OAAQA,GACR2C,WCRiB,CAEjBjqH,IAAK6hD,GAAgB7hD,IAErBpD,QAASilD,GAAgBjlD,QACzBsD,UAAW2hD,GAAgBnlD,OAAOwD,UAElCE,OAAQopH,GACRrpH,OAAQspH,GAERvqH,OAAQ4qH,GACR3jH,YAAa4jH,GACb1pH,MCTa,YAMX,IALF6pH,EAKC,EALDA,WAGAl3G,GAEC,EAJD+V,QAIC,EAHDD,QAGC,EAFD9V,WACGtS,EACF,+DACKC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,WACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,OAAD,CACErC,UAAU,uBACVe,GAAI,CAAEC,SAAS,mBAAD,OAAqBqB,IAFrC,SAIGA,MAIP,CACEN,OAAQ,QACRnD,GAAI,QACJoD,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,QACRnD,GAAI,QACJoD,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,SAGvD,IAGF,OACE,eAACtV,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,cACNqD,QAASA,EACTe,KAAMwoH,EACNl3G,UAAWA,GACPtS,KDzCRmB,OJba,YAAiE,IAAD,IAApCC,cAAoC,MAA3B,GAA2B,EAAvBC,EAAuB,EAAvBA,SAAUiR,EAAa,EAAbA,UAChE,OACE,qCACE,eAAC,KAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQwnH,IAClBtnH,aAAW,EACXJ,YAAY,EALd,SAOE,eAAC4nH,GAAD,CAAgB52G,UAAWA,UGDjCu2G,gBAAiBA,GACjB1B,SAAUA,IGZG,SAASsC,GAAT,GAAsC,IAAbvqH,EAAY,EAAZA,SACtC,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,OAAnB,sBACA,eAACktG,GAAD,CAAgBltG,GAAG,gBAAnB,sBACA,eAACktG,GAAD,CAAgBltG,GAAG,kBAAnB,yBACA,eAACktG,GAAD,CAAgBltG,GAAG,iBAAnB,wBACA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,+BAGA,sBAAKf,UAAU,qBACdc,KCTQ,SAASwqH,KAAe,IAAD,EACRvnH,oBAAS,GADD,mBAC7B42C,EAD6B,KACrBjhB,EADqB,OAECwxF,GAAI1C,OAAOlnH,OAAO,CACrDiZ,QAAQ,IADF1J,EAF4B,EAE5BA,SAAUzC,EAFkB,EAElBA,QAASiD,EAFS,EAETA,MAGrBzO,EAAOd,mBACX,kBAAM+O,EAAS1O,QAAO,SAACuD,GAAD,OAAOA,EAAE5G,YAAc67C,OAC7C,CAACA,EAAQ9pC,IAEX,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,WAAWipC,WAAY,eAACs7E,GAAD,IAAnC,UACE,gBAACpgF,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAImmH,OAAOjnH,MAAZ,CACEghD,SAAU3/C,EACVwmB,YAAa,CAAExqB,GAAI,QACnBsV,UAAW9F,EACX8b,UAAW7Y,OCtCJ,SAASk6G,KACtB,IAAM3sH,EACJoa,OAAO63B,eAAYpgB,MAAMxX,cACzB,IACAD,OAAO63B,eAAYjyC,IAAIqa,cAJU,EAKPiyG,GAAI1C,OAAOnnH,OAAO,CAC5CzC,GAAIA,EACJ2b,QAAQ,IAFFixG,EAL2B,EAK3BA,OAAQp9G,EALmB,EAKnBA,QAKhB,OACE,eAACwhC,GAAD,CAAM9oC,MAAM,SAASipC,WAAY,eAACs7E,GAAD,IAAjC,SACGG,EACC,eAAC,GAAIhD,OAAOzlH,OAAZ,CAAmBC,OAAQwoH,EAAQt3G,UAAW9F,IAE9C,sDChBO,SAASq9G,KAAiB,IACjCl4D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,cAAX,SACE,eAACg4D,GAAD,MAEF,eAAC,KAAD,CAAO7sB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC+3D,GAAD,SCTO,SAASI,KAAiB,IAAD,EACDR,GAAInC,SAASznH,OAAO,CACvDiZ,QAAQ,IADF1J,EAD8B,EAC9BA,SAAUzC,EADoB,EACpBA,QAASiD,EADW,EACXA,MAG3B,OACE,eAACu+B,GAAD,CAAM9oC,MAAM,iBAAiBipC,WAAY,eAACs7E,GAAD,IAAzC,SACE,eAAC,GAAItC,SAASxnH,MAAd,CACEmhD,UAAW7xC,EACXqD,UAAW9F,EACX8b,UAAW7Y,MCRJ,SAASs6G,KACtB,IAAM/sH,EAAKiyC,eAAYjyC,GADc,EAEPssH,GAAInC,SAAS1nH,OAAO,CAChDzC,GAAIA,EACJ2b,QAAQ,IAFFqxG,EAF6B,EAE7BA,SAAUx9G,EAFmB,EAEnBA,QAKlB,OACE,eAACwhC,GAAD,CAAM9oC,MAAM,gBAAgBipC,WAAY,eAACs7E,GAAD,IAAxC,SACGO,EACC,uCACE,eAAC,GAAI7C,SAAShmH,OAAd,CAAqBC,OAAQ4oH,EAAU13G,UAAW9F,IAClD,eAAC,GAAI26G,SAASc,cAAd,CACE7mH,OAAM,OAAE4oH,QAAF,IAAEA,OAAF,EAAEA,EAAUC,SAClB33G,UAAW9F,OAIf,yDCnBO,SAAS09G,KAAkB,IAClCv4D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAACo4D,GAAD,MAEF,eAAC,KAAD,CAAOjtB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACm4D,GAAD,SCVO,SAASK,KACtB,OACE,+BACE,eAACn8E,GAAD,CACE9oC,MAAM,6BACNipC,WAAY,eAACs7E,GAAD,QCJL,SAASW,KAAwB,IAAD,EACRd,GAAIT,gBAAgBnpH,OAAO,CAC9DiZ,QAAQ,IADF1J,EADqC,EACrCA,SAAUzC,EAD2B,EAC3BA,QAASiD,EADkB,EAClBA,MAG3B,OACE,eAACu+B,GAAD,CAAM9oC,MAAM,wBAAwBipC,WAAY,eAACs7E,GAAD,IAAhD,SACE,eAAC,GAAIZ,gBAAgBlpH,MAArB,CACEqhD,iBAAkB/xC,EAClBuY,YAAa,CAAExqB,GAAI,YACnBsV,UAAW9F,EACX8b,UAAW7Y,MCTJ,SAAS46G,KACtB,IAAMrtH,EAAKiyC,eAAYjyC,GADqB,EAEPssH,GAAIT,gBAAgBppH,OAAO,CAC9DzC,GAAIA,EACJ2b,QAAQ,IAFF2xG,EAFoC,EAEpCA,gBAAiB99G,EAFmB,EAEnBA,QAKzB,OACE,eAACwhC,GAAD,CAAM9oC,MAAM,uBAAuBipC,WAAY,eAACs7E,GAAD,IAA/C,SACGa,EACC,eAAC,GAAIzB,gBAAgB1nH,OAArB,CACEC,OAAQkpH,EACRh4G,UAAW9F,IAGb,gEChBO,SAAS+9G,KAAyB,IACzC54D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC04D,GAAD,MAEF,eAAC,KAAD,CAAOvtB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACy4D,GAAD,SCTO,SAASI,KAAmB,IAAD,EACHlB,GAAIC,WAAW7pH,OAAO,CACzDiZ,QAAQ,IADF1J,EADgC,EAChCA,SAAUzC,EADsB,EACtBA,QAASiD,EADa,EACbA,MAG3B,OACE,eAACu+B,GAAD,CAAM9oC,MAAM,kBAAkBipC,WAAY,eAACs7E,GAAD,IAA1C,SACE,eAAC,GAAIF,WAAW5pH,MAAhB,CACE6pH,WAAYv6G,EACZuY,YAAa,CAAExqB,GAAI,YACnBsV,UAAW9F,EACX8b,UAAW7Y,MCTJ,SAASg7G,KACtB,IAAMztH,EAAKiyC,eAAYjyC,GADgB,EAEPssH,GAAIC,WAAW9pH,OAAO,CACpDzC,GAAIA,EACJ2b,QAAQ,IAFF6wG,EAF+B,EAE/BA,WAAYh9G,EAFmB,EAEnBA,QAKpB,OACE,eAACwhC,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAACs7E,GAAD,IAAtC,SACGD,EACC,eAAC,GAAID,WAAWpoH,OAAhB,CAAuBC,OAAQooH,EAAYl3G,UAAW9F,IAEtD,2DCbO,SAASk+G,KAAoB,IACpC/4D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC84D,GAAD,MAEF,eAAC,KAAD,CAAO3tB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC64D,GAAD,SCNO,SAASG,KAAe,IAC/Bh5D,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,aAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,eAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,qBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,cAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACw4D,GAAD,S,OCtBNpuH,aAAkB,CAChBC,OAAQkmD,GAAoBlmD,OAC5BE,QAASgmD,GAAoBhmD,UAHL0uH,G,GAAbxuH,YAA4CyuH,G,GAAXvuH,UCKjCwuH,GALmBj4G,aAAkB,CAClDnW,KAAM,iBACNJ,UAAWuuH,KCGEE,GANcvuH,eAASC,MAAM,CAC1CgX,YAAa9W,eAASC,MAAM,eAAeK,IAAI,IAAIJ,WACnDib,WAAY3a,eAAON,WAAWO,SAAQ,GACtCshE,MAAO/hE,eAASC,MAAM,eAAeK,IAAI,OCoB3C,SAAS+tH,KAAsB,IACrBrtH,EAAeC,eAAfD,WACR,OACE,gBAACG,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,cACLE,MAAM,cACNuB,aAAa,YAKnB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,QACLE,MAAM,QACNwB,UAAU,iBACVm4C,QAAS,QAIf,eAACz4C,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBCnDN,IAMestH,GANc5yG,aAAa,CACxC3b,KAAM,iBACNN,YAAawuH,GACbrqH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,KCH3D,IAMeyqH,GANmB1gH,aAAkB,CAClD9N,KAAM,iBACNN,YAAawuH,GACbrqH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,KCmB5C0qH,GAjBQ,CAErB7rH,IAAK4iD,GAAoB5iD,IAEzBpD,QAASgmD,GAAoBhmD,QAC7BsD,UAAW0iD,GAAoBlmD,OAAOwD,UAEtCE,OAAQkrH,GACRnrH,OAAQorH,GAERrsH,OAAQysH,GACRxlH,YAAaylH,GACbzmH,YAAaqmH,GACbnrH,MCfa,YAA6D,IAA9BqiD,EAA6B,EAA7BA,gBAAoBhiD,EAAS,oCACnEC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,kBACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,SAACy7B,GAAO,IAAD,IACX,OACE,eAAC,OAAD,CACE79B,UAAU,uBACVe,GAAI,CAAEC,SAAS,wBAAD,cAA0B68B,QAA1B,IAA0BA,GAA1B,UAA0BA,EAAGt7B,WAA7B,iBAA0B,EAAQC,gBAAlC,aAA0B,EAAkB5D,KAF5D,gBAIGi/B,QAJH,IAIGA,OAJH,EAIGA,EAAGx7B,UAKZ,CACEN,OAAQ,QACRC,SAAU,QACVC,OAAQC,KACRC,OAAQ,WAGZ,IAGF,OACE,eAACZ,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,mBACNqD,QAASA,EACTe,KAAMghD,GACFhiD,KDnBRmB,OHhBa,YAIX,IAAD,IAHDC,cAGC,MAHQ,GAGR,EAFDC,EAEC,EAFDA,SACAiR,EACC,EADDA,UAEA,OACE,qCACE,eAAC,KAAD,CACE/Q,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQupH,IAClBrpH,aAAW,EAJb,SAME,eAACspH,GAAD,CAAoB14G,UAAWA,UKRxB84G,GATgB5uH,eAASC,MAAM,CAC5C4uH,WAAY1uH,eAASM,IAAI,GAAGL,MAAM,cAAcC,WAChDyuH,QAAS3uH,eAASM,IAAI,GAAGL,MAAM,WAAWC,WAC1C0uH,iBAAkBjmG,eAASzoB,WAC3BiP,WAAYwZ,eAASzoB,WACrB6hE,MAAO/hE,eAASM,IAAI,KAAKL,MAAM,SAC/Bkb,WAAY3a,eAAON,WAAWO,SAAQ,KCuBxC,SAASouH,KAAwB,IACvB7tH,EAAeC,eAAfD,WAER,OACE,gBAACG,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,mBACLE,MAAM,kBACN6B,GAAI0sH,GAAe3sH,aAIzB,eAACV,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAIouC,GAASruC,aAInB,gBAACV,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,aACLE,MAAM,aACNwB,UAAU,qBAGd,eAACJ,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,UACLE,MAAM,UACNwB,UAAU,wBAKhB,eAACN,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,QACLE,MAAM,QACNwB,UAAU,iBACVm4C,QAAS,QAIf,eAACz4C,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uB,OChFF5B,aAAkB,CACpBC,OAAQ4lD,GAAsB5lD,OAC9BE,QAAS0lD,GAAsB1lD,UAJlBuvH,G,GAAbrvH,YACWsvH,G,GAAXpvH,UCGaqvH,GALgBtzG,aAAa,CAC1C3b,KAAM,mBACNN,YAAaqvH,KCAA,SAASG,GAAT,GAAqC,IAAP5uH,EAAM,EAANA,GACnCilD,EAAmB4oE,GAAkB,CAAE7tH,OAAvCilD,eAER,OAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAgBjlD,IAGnB,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,SAIE,eAAC,OAAD,CACE7G,UAAU,aACVe,GAAI,CAAEC,SAAS,wBAAD,OAA0BpC,IAF1C,gBAIGilD,QAJH,IAIGA,OAJH,EAIGA,EAAgBxuC,gBAXS,sCCLlC,IAMeo4G,GANqBrhH,aAAkB,CACpD9N,KAAM,mBACNN,YAAaqvH,GACblrH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,KCiB5CqrH,GAhBU,CAEvBxsH,IAAKsiD,GAAsBtiD,IAE3BpD,QAAS0lD,GAAsB1lD,QAC/BsD,UAAWoiD,GAAsB5lD,OAAOwD,UAExCE,OAAQ+rH,GACRhsH,OAAQisH,GAERltH,OAAQmtH,GACRlmH,YAAaomH,GACblsH,MCTa,YAAiE,IAAhC8hD,EAA+B,EAA/BA,kBAAsBzhD,EAAS,sCACvEC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,aACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,SAACy7B,GAAD,mBACJ,eAAC,OAAD,CACE79B,UAAU,uBACVe,GAAI,CAAEC,SAAS,0BAAD,cAA4B68B,QAA5B,IAA4BA,OAA5B,EAA4BA,EAAGx7B,QAF/C,UAII,OAADw7B,QAAC,IAADA,GAAA,UAAAA,EAAGt7B,WAAH,mBAAQC,gBAAR,eAAkByqH,YAAa,OAA/B,OAAuCpvF,QAAvC,IAAuCA,GAAvC,UAAuCA,EAAGt7B,WAA1C,iBAAuC,EAAQC,gBAA/C,aAAuC,EAAkB0qH,aAIhE,CACEtuH,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC2vC,GAAD,CAAcpzC,GAAIyD,MAEzC,CACEzD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,mBACVC,OAAQ6qH,GACR3qH,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACmrH,GAAD,CAAoB5uH,GAAIyD,MAE/C,CACEN,OAAQ,QACRC,SAAU,QACVC,OAAQC,KACRC,OAAQ,WAGZ,IAGF,OACE,eAACZ,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,sBACNqD,QAASA,EACTe,KAAMygD,GACFzhD,KDvCRmB,OLZa,YAIX,IAAD,IAHDC,cAGC,MAHQ,GAGR,EAFDC,EAEC,EAFDA,SACAiR,EACC,EADDA,UAMA,OAJA64G,GAAezrH,OAAO,CACpBiZ,QAAQ,IAIR,qCACE,eAAC,KAAD,CACEpX,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQ4pH,IAClB1pH,aAAW,EAJb,SAME,eAAC8pH,GAAD,CAAsBl5G,UAAWA,UOf1By5G,GAROvvH,eAASC,MAAM,CACnCuvH,qBAAsBrvH,eAASM,IAAI,IAAIJ,WACvCovH,gBAAiBtvH,eAASM,IAAI,IAC9B6O,WAAYwZ,eAASzoB,WACrB6hE,MAAO/hE,eAASM,IAAI,KAAKL,MAAM,SAC/Bkb,WAAY3a,eAAON,WAAWO,SAAQ,KCqBxC,SAAS8uH,GAAT,GAAiC,IAAVxuH,EAAS,EAATA,MAAS,EACUE,eAAhCD,EADsB,EACtBA,WAAY8X,EADU,EACVA,MAAOib,EADG,EACHA,SACrB5kB,EAAa2J,EAAM,cACnBu2G,EAAuBv2G,EAAM,wBAC7Bw2G,EAAkBx2G,EAAM,mBAE1B02G,EAAWH,EAAuBlgH,EACN,MAAb,OAAfmgH,QAAe,IAAfA,OAAA,EAAAA,EAAiB7gG,UACnB+gG,EAAWH,EAAuBC,GAChCxmG,MAAM3Z,GAAaqgH,EAAW,sBACQ,MAAb,OAApBH,QAAoB,IAApBA,OAAA,EAAAA,EAAsB5gG,UAAe+gG,EAAW,sBAEzDrzG,qBAAU,WACR,GAAMkzG,GAAiD,KAAzBA,EAA6B,CACzD,IAAM/vF,EAAI+vF,EAAqBtlF,QAAQ,cAAe,IAClDzK,IAAM+vF,GAAsBt7F,EAAS,uBAAwBuL,MAElE,CAAC+vF,EAAsBt7F,IAE1B5X,qBAAU,WACR,GAAMmzG,GAAuC,KAApBA,EAAwB,CAC/C,IAAMhwF,EAAIgwF,EAAgBvlF,QAAQ,iBAAkB,IAChDzK,IAAMgwF,GAAiBv7F,EAAS,kBAAmBuL,MAExD,CAACgwF,EAAiBv7F,IAErB,IAAM07F,EAAkB32G,EAAM,YAE9B,OACE,gBAAC3X,GAAA,EAAD,WACE,gBAACA,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAIouC,GAASruC,OACb8C,YAAa5D,OAGfA,GACA,eAACM,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAD,CACE7vC,KAAK,KACLE,MAAM,KACNwB,UAAU,iBACVF,UAAQ,SAMhB,eAACJ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,cACLE,MAAM,cACNwB,UAAU,uBAKhB,gBAACN,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,uBACLE,MAAM,oCACNwB,UAAU,iBACVwG,UAAWlH,MAGf,eAACM,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,kBACLE,MAAM,mBACNwB,UAAU,iBACVwG,UAAWlH,MAGf,eAACM,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,kCAAtB,sBAGA,eAACN,GAAA,EAAK8F,QAAN,CACEnD,MAAO/C,EAAQyuH,EAAWC,EAC1BluH,UAAQ,EACRE,UAAU,2BAMlB,eAACN,GAAA,EAAKC,IAAN,IAEA,eAACD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,uBACLE,MAAM,yBACNwB,UAAU,iBACVm4C,QAAS,EACTllC,YACE,qHAMR,eAACvT,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,oBAIA,eAACG,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,wBACA,eAACF,GAAA,EAAKY,MAAN,CAAY1B,GAAI,WAAYoB,UAAU,OAAtC,SACE,eAACN,GAAA,EAAK4G,MAAN,CAAYpG,MAAO,CAAE2yG,MAAO,OAA5B,SACGvzG,EACC,oDAAayuH,KAEb,oDAAaC,iB,OCrJ3BrwH,aAAkB,CAChBC,OAAQ+lD,GAAa/lD,OACrBE,QAAS6lD,GAAa7lD,UAHEmwH,G,GAAbjwH,YAAqCkwH,G,GAAXhwH,UCK1BiwH,GALOl0G,aAAa,CACjC3b,KAAM,UACNN,YAAaiwH,KCCf,IAeeG,GAfC,CAEdltH,IAAKyiD,GAAaziD,IAElBpD,QAAS6lD,GAAa7lD,QACtBsD,UAAWuiD,GAAa/lD,OAAOwD,UAE/BE,OAAQ2sH,GACR5sH,OAAQ6sH,GAER9tH,OAAQ+tH,GACR5sH,MCTa,YAA+C,IAAvBkiD,EAAsB,EAAtBA,SAAa7hD,EAAS,6BACrDC,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,WACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,SAACy7B,GAAO,IAAD,IACX,OACE,eAAC,OAAD,CACE79B,UAAU,uBACVe,GAAI,CAAEC,SAAS,iBAAD,cAAmB68B,QAAnB,IAAmBA,GAAnB,UAAmBA,EAAGt7B,WAAtB,iBAAmB,EAAQC,gBAA3B,aAAmB,EAAkB5D,KAFrD,gBAIGi/B,QAJH,IAIGA,OAJH,EAIGA,EAAGx7B,UAKZ,CACEzD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQqsC,GACRnsC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC2vC,GAAD,CAAcpzC,GAAIyD,MAEzC,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEJ,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRmjB,SAAU,aAGd,IAGF,OACE,eAAC/jB,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,YACNqD,QAASA,EACTe,KAAM6gD,EACNr6B,YAAa,CAAExqB,GAAI,WAAYmoB,MAAM,IACjCnlB,KD1CRmB,OHXa,YAKX,IAAD,IAJDC,cAIC,MAJQ,GAIR,EAHDC,EAGC,EAHDA,SACAiR,EAEC,EAFDA,UACA5U,EACC,EADDA,MAEA,OACE,qCACE,eAAC,KAAD,CACE6D,cAAeH,EACfC,SAAUA,EACVG,OAAQ,CAAEA,OAAQuqH,IAClBU,SAAUn6G,EACV5Q,aAAW,EALb,SAOE,eAACwqH,GAAD,CAAaxuH,MAAOA,UKXbgvH,GAPH,CAEVvB,eAAgBA,GAChBW,iBAAkBA,GAClBU,QAASA,ICHI,SAAS/C,GAAT,GAAsC,IAAbvqH,EAAY,EAAZA,SACtC,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,OAAnB,sBACA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,uBAAnB,8BAGA,eAACktG,GAAD,CAAgBltG,GAAG,2BAAnB,iCAGA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,yBAAnB,iCAGA,eAACktG,GAAD,CAAgBltG,GAAG,6BAAnB,oCAGA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,gBAAnB,uBACA,eAACktG,GAAD,CAAgBltG,GAAG,oBAAnB,0BACA,sBAAKf,UAAU,qBACdc,KClBQ,SAASytH,KACtB,IAAM3vH,EAAKgyC,SAASC,eAAYjyC,IADa,EAEI0vH,GAAIZ,iBAAiBrsH,OAAO,CAC3EzC,GAAIA,EACJ2b,QAAQ,IAFF+oC,EAFqC,EAErCA,iBAAkBl1C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMTsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzDgtB,EANqC,EAMrCA,eAAgB7oB,EANqB,EAMrBA,QAExB,OAAM6oB,GAAkB7oB,EAUtB,eAACi4B,GAAD,CAAM9oC,MAAM,qBAAqBipC,WAAY,eAAC,GAAD,IAA7C,SACGuT,EACC,uCACE,eAAC,GAAIoqE,iBAAiB3qH,OAAtB,CACEC,OAAQsgD,EACRpvC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQ9hD,OAGxB,yEArBF,eAAC1T,GAAD,CACE9oC,MAAM,qBACNipC,WAAY,eAAC,GAAD,IACZD,KAAK,2CCfE,SAAS0+E,KAAyB,IAAD,EAClBzqH,oBAAS,GADS,mBACvC42C,EADuC,KAC/BjhB,EAD+B,OAET40F,GAAIZ,iBAAiBpsH,OAAO,CAC/DiZ,QAAQ,IADF1J,EAFsC,EAEtCA,SAAUzC,EAF4B,EAE5BA,QAASiD,EAFmB,EAEnBA,MAGrBzO,EAAOd,mBACX,kBAAM+O,EAAS1O,QAAO,SAACuD,GAAD,OAAOA,EAAEgU,cAAgBihC,OAC/C,CAACA,EAAQ9pC,IAEX,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,sBAAsBipC,WAAY,eAAC,GAAD,IAA9C,UACE,gBAAC9E,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAIqrH,iBAAiBnsH,MAAtB,CACE8hD,kBAAmBzgD,EACnBwmB,YAAa,CAAExqB,GAAI,mBACnBsV,UAAW9F,EACX8b,UAAW7Y,OCrCJ,SAASo9G,KAAuB,IACrC1gH,EAAc2/G,GAAiBrsH,SAA/B0M,UADoC,EAEpBi/C,KAAfE,EAFmC,sBAIR35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzDgtB,EAJoC,EAIpCA,eAAgB7oB,EAJoB,EAIpBA,QAExB,OAAM6oB,GAAkB7oB,EAUtB,eAACi4B,GAAD,CAAM9oC,MAAO,yBAA0BipC,WAAY,eAAC,GAAD,IAAnD,SACE,eAAC,GAAiBhtC,OAAlB,CACEC,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACqgD,GAAD,OACRv1C,EAAUu1C,GAAkBj4C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAC/BsuD,EAAY,0BAAD,OAA2BtuD,YAb5C,eAACgxC,GAAD,CACE9oC,MAAM,yBACNipC,WAAY,eAAC,GAAD,IACZD,KAAK,2CCZE,SAAS4+E,KAA0B,IAC1Cn7D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAACk7D,GAAD,MAEF,eAAC,KAAD,CAAOl7D,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACi7D,GAAD,SCdO,SAASG,KACtB,OACE,+BACE,eAAC/+E,GAAD,CAAM9oC,MAAM,iBAAiBipC,WAAY,eAAC,GAAD,QCFhC,SAAS6+E,GAAT,GAAoD,IAAnBrT,EAAkB,EAAlBA,KAAS35G,EAAS,yBAC1DC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,gBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,MAElD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,WAGZ,IAGF,OACE,eAACZ,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,cACNqD,QAASA,EACTe,KAAM24G,GACF35G,ICpBK,SAASitH,KACtB,IAAMjwH,EAAKgyC,SAASC,eAAYjyC,IADI,EAEI0vH,GAAIF,QAAQ/sH,OAAO,CACzDzC,GAAIA,EACJ2b,QAAQ,IAFFmpC,EAF4B,EAE5BA,QAASt1C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMAsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzDgtB,EAN4B,EAM5BA,eAAgB7oB,EANY,EAMZA,QAElBm3G,EAAiBnoH,sBAAW,uCAAC,WAAO/H,GAAP,eAAAmJ,EAAA,6DAC3Bg5B,EAAUhxB,IAAM6lB,KAAN,uBAAmC,CACjD3X,WAAW,EACXw5F,iBAAiB,EACjBC,SAAU,KAJqB,SAO3BjrG,IACH7B,KAAK,CAAEK,QAAS,iBAAkBrM,GAAIA,IACtCyM,MAAK,WACJ0E,IAAMwoD,OAAOx3B,EAAS,CACpBtiB,OAAO,aACPvW,KAAM6H,IAAM20B,KAAKyyE,QACjBO,cAAU/oG,EACV8oG,iBAAiB,EACjBx5F,UAAW,SAIdxS,OAAM,SAACC,GAAD,OACLqE,IAAMwoD,OAAOx3B,EAAS,CACpBtiB,OAAO,eACPvW,KAAM6H,IAAM20B,KAAK0yE,MACjBn5F,UAAW,SAvBgB,2CAAD,sDA0B/B,IAEH,OAAMuiB,GAAkB7oB,EAUtB,eAACi4B,GAAD,CAAM9oC,MAAM,WAAWipC,WAAY,eAAC,GAAD,IAAnC,SACG2T,EACC,uCACE,eAAC,GAAI0qE,QAAQrrH,OAAb,CACEC,OAAQ0gD,EACRxvC,UAAW9F,EACX9O,OAAO,EACP2D,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAACtC,EAAA,EAAD,CAAQE,QAAS,kBAAMkuH,EAAelwH,IAAtC,4BACA,eAAC,GAAD,CAAcwmG,OAAQ1hD,IACtB,eAACprC,GAAA,EAAD,CAAO3X,QAAS,UAAhB,SACE,eAACiuH,GAAD,CACErT,KAAM73D,EAAQqrE,WACd76G,UAAW9F,SAKjB,wDA7BF,eAACwhC,GAAD,CACE9oC,MAAM,WACNipC,WAAY,eAAC,GAAD,IACZD,KAAK,2CC/CE,SAASk/E,KAAgB,IAAD,EACTjrH,oBAAS,GADA,mBAC9B42C,EAD8B,KACtBjhB,EADsB,OAEA40F,GAAIF,QAAQ9sH,OAAO,CACtDiZ,QAAQ,IADF1J,EAF6B,EAE7BA,SAAUzC,EAFmB,EAEnBA,QAASiD,EAFU,EAEVA,MAGrBzO,EAAOd,mBACX,kBAAM+O,EAAS1O,QAAO,SAACuD,GAAD,OAAOA,EAAEgU,cAAgBihC,OAC/C,CAACA,EAAQ9pC,IAEX,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,YAAYipC,WAAY,eAAC,GAAD,IAApC,UACE,gBAAC9E,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAI+rH,QAAQ7sH,MAAb,CACEkiD,SAAU7gD,EACVsR,UAAW9F,EACX8b,UAAW7Y,OCpCJ,SAAS49G,KAAc,IAC5BlhH,EAAcqgH,GAAQ/sH,SAAtB0M,UAD2B,EAEXi/C,KAAfE,EAF0B,sBAIC35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzDgtB,EAJ2B,EAI3BA,eAAgB7oB,EAJW,EAIXA,QAExB,OAAM6oB,GAAkB7oB,EAUtB,eAACi4B,GAAD,CAAM9oC,MAAO,eAAgBipC,WAAY,eAAC,GAAD,IAAzC,SACE,eAAC,GAAQhtC,OAAT,CACEzD,OAAO,EACP4U,WAAW,EACXlR,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACygD,GAAD,OACR31C,EAAU21C,GAASr4C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACtBsuD,EAAY,iBAAD,OAAkBtuD,YAfnC,eAACgxC,GAAD,CACE9oC,MAAM,eACNgpC,KAAK,yCACLC,WAAY,eAAC,GAAD,MCZL,SAASm/E,KAAiB,IACjC37D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC07D,GAAD,MAEF,eAAC,KAAD,CAAO17D,KAAI,UAAKA,EAAL,QAAX,SACE,eAACs7D,GAAD,MAEF,eAAC,KAAD,CAAOnwB,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACy7D,GAAD,SCVO,SAASG,KACtB,IAAMvwH,EAAKgyC,SAASC,eAAYjyC,IADW,EAEI0vH,GAAIvB,eAAe1rH,OAAO,CACvEzC,GAAIA,EACJ2b,QAAQ,IAFFspC,EAFmC,EAEnCA,eAAgBz1C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMPsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzDgtB,EANmC,EAMnCA,eAAgB7oB,EANmB,EAMnBA,QAExB,OAAM6oB,GAAkB7oB,EAUtB,eAACi4B,GAAD,CAAM9oC,MAAM,iBAAiBipC,WAAY,eAAC,GAAD,IAAzC,SACG8T,EACC,uCACE,eAAC,GAAIkpE,eAAehqH,OAApB,CACEC,OAAQ6gD,EACR3vC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQvhD,OAGxB,+DArBF,eAACjU,GAAD,CACE9oC,MAAM,kBACNipC,WAAY,eAAC,GAAD,IACZD,KAAK,2CCfE,SAASs/E,KAAuB,IAAD,EAChBrrH,oBAAS,GADO,mBACrC42C,EADqC,KAC7BjhB,EAD6B,OAEP40F,GAAIvB,eAAezrH,OAAO,CAC7DiZ,QAAQ,IADF1J,EAFoC,EAEpCA,SAAUzC,EAF0B,EAE1BA,QAASiD,EAFiB,EAEjBA,MAGrBzO,EAAOd,mBACX,kBAAM+O,EAAS1O,QAAO,SAACuD,GAAD,OAAOA,EAAEgU,cAAgBihC,OAC/C,CAACA,EAAQ9pC,IAEX,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,mBAAmBipC,WAAY,eAAC,GAAD,IAA3C,UACE,gBAAC9E,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAI0qH,eAAexrH,MAApB,CACEqiD,gBAAiBhhD,EACjBwmB,YAAa,CAAExqB,GAAI,mBACnBsV,UAAW9F,EACX8b,UAAW7Y,OCrCJ,SAASg+G,KAAqB,IACnCthH,EAAcg/G,GAAe1rH,SAA7B0M,UADkC,EAElBi/C,KAAfE,EAFiC,sBAIN35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzDgtB,EAJkC,EAIlCA,eAAgB7oB,EAJkB,EAIlBA,QAExB,OAAM6oB,GAAkB7oB,EAUtB,eAACi4B,GAAD,CAAM9oC,MAAO,sBAAuBipC,WAAY,eAAC,GAAD,IAAhD,SACE,eAAC,GAAehtC,OAAhB,CACEC,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAAC4gD,GAAD,OACR91C,EAAU81C,GAAgBx4C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAC7BsuD,EAAY,wBAAD,OAAyBtuD,YAb1C,eAACgxC,GAAD,CACE9oC,MAAM,sBACNipC,WAAY,eAAC,GAAD,IACZD,KAAK,2CCZE,SAASw/E,KAAwB,IACxC/7D,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC87D,GAAD,MAEF,eAAC,KAAD,CAAO97D,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC67D,GAAD,SCXO,SAASG,KAAc,IAC9Bh8D,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,oBAAX,SACE,eAAC+7D,GAAD,MAEF,eAAC,KAAD,CAAO/7D,KAAI,UAAKA,EAAL,aAAX,SACE,eAAC27D,GAAD,MAEF,eAAC,KAAD,CAAO37D,KAAI,UAAKA,EAAL,sBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACo7D,GAAD,SCnBR,IAKea,GALoB/6G,aAAkB,CACnDnW,KAAM,kBACNJ,UAAWurG,KCIEgmB,GANoBrjH,aAAkB,CACnD9N,KAAM,kBACNN,YAAawrG,GACbrnG,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCe1CqtH,GAfE,CAEfxuH,IAAKujD,GAAcvjD,IAEnBpD,QAAS2mD,GAAc3mD,QACvBsD,UAAWqjD,GAAc7mD,OAAOwD,UAEhCE,OAAQkoG,GACRnoG,OAAQooG,GAERrpG,OAAQspG,GACRriG,YAAaooH,GACbppH,YAAampH,ICfA,SAASG,GAAT,GAOX,IANF7oH,EAMC,EANDA,MACA6E,EAKC,EALDA,QACAikH,EAIC,EAJDA,QACAnpH,EAGC,EAHDA,KACAQ,EAEC,EAFDA,OACGrF,EACF,8DACD,OACE,gBAACmF,GAAA,EAAD,yBACEN,KAAMA,EACNQ,OAAQA,EACRjH,UAAU,SACVggE,kBAAkB,mBACdp+D,GALN,cAOE,eAACmF,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,UAAcL,MAEhB,eAACC,GAAA,EAAMK,KAAP,UAAauE,IACb,eAAC5E,GAAA,EAAM+mD,OAAP,UACG8hE,EAAQzqH,KAAI,SAACwe,GAAD,OACX,eAACjjB,EAAA,EAAD,CACEE,QAAS,SAAC8E,GACRie,EAAE/iB,SAAW+iB,EAAE/iB,QAAQ8E,GACvBuB,KAEFtG,QAASgjB,EAAEhjB,QALb,SAQGgjB,EAAEnlB,OARL,kBAMkBmlB,EAAEnlB,MANpB,YAM6BmlB,EAAE4J,eC3B1B,SAASsiG,KAIf,IAAD,yDAAJ,GAAI,IAHN/oH,aAGM,MAHE,iBAGF,MAFN6E,eAEM,MAFI,GAEJ,MADNikH,eACM,MADI,GACJ,IACkC7rH,mBAAS,CAAE0C,MAAM,IADnD,mBACCqpH,EADD,KACeC,EADf,KAEA9oH,EAASN,uBAAY,kBAAMopH,EAAgB,CAAEtpH,MAAM,MAAU,IAE7DupH,EAAcrpH,uBAClB,SAACgzD,GAAD,OAAUo2D,EAAgB,aAAEtpH,MAAM,GAASkzD,MAC3C,IAEI/3D,EAAQE,mBAAQ,WAAO,IACXmuH,EAAwBH,EAAhC7oH,OAAuB0yD,EADL,aACcm2D,EADd,YAE1B,OAAO,aACLhpH,QACA6E,UACAikH,UACA3oH,OAAQ,WACNA,IACAgpH,GAAcA,MAEbt2D,KAEJ,CAAChuD,EAASmkH,EAAcF,EAAS9oH,EAAOG,IAC3C,MAAO,CAAC0oH,GAAc/tH,EAAOouH,GC1B/B,IAsCeE,GAtCO9xH,eAASC,MAAM,CACnCo2B,KAAMl2B,eAASC,MAAM,QAAQC,WAC7B0xH,oBAAqB5xH,eAASC,MAAM,eAAeK,IAAI,IACvDuxH,cAAe7xH,eACZC,MAAM,QACNuhD,KAAK,CAAC,gBAAiB,cAAe,CACrCC,GAAI,SAACrpC,EAAG4I,GAAJ,QAAY5I,KAAO4I,GACvBlU,KAAM9M,eAASE,aAEnB4xH,kBAAmB9xH,eAChBC,MAAM,YACNuhD,KAAK,CAAC,gBAAiB,cAAe,CACrCC,GAAI,SAACrpC,EAAG4I,GAAJ,OAAW5I,IAAM4I,GACrBlU,KAAM9M,eAASE,aAEnB6xH,cAAeppG,eAAS1oB,MAAM,gBAC9BkP,WAAYwZ,eAAS1oB,MAAM,YAC3B+xH,KAAMhyH,eACHC,MAAM,SACNua,KACC,oBACA,+DACA,SAACzU,EAAD,GAAiC,IAA3Bs7C,EAA0B,EAA1BA,OAAQ4T,EAAkB,EAAlBA,YACJt2B,EAAyC0iB,EAAzC1iB,OAAQszF,EAAiC5wE,EAAjC4wE,QAASJ,EAAwBxwE,EAAxBwwE,cAAeG,EAAS3wE,EAAT2wE,KACxC,QACoB,OAAlBH,GACAlzF,EAASszF,EAAQ3xH,KACjBsK,kBAAO,OAAConH,QAAD,IAACA,OAAD,EAACA,EAAMvjG,UAEPwmC,EAAY,CACjB7nD,QAAQ,2CAAD,OAA6C6kH,EAAQ3xH,IAArD,+BAKjBq+B,OAAQhW,eAAS1oB,MAAM,UAAUC,a,GC/B/Bd,aAAkB,CACpBC,OAAQmnD,GAAUnnD,OAClBE,QAASinD,GAAUjnD,UALN2yH,G,GAAbzyH,YACqB0yH,G,GAArBvgG,oBACWwgG,G,GAAXzyH,UCiBa0yH,GATgBn8G,aAAkB,CAC/CnW,KAAM,cACNJ,UAAWyyH,GACXnyH,MAVoB,SAACmY,GAAD,OACpB,uCACE,eAAC,GAAS6G,KAAV,CAAe5e,GAAI+X,EAAEjJ,aADvB,KACwC,IADxC,UAEMiJ,EAAEtB,YAFR,aAEwB2hB,KAAM0c,QAAQ1c,KAAMwc,UAAU78B,EAAE8d,OAFxD,SAUAgX,YAAa,YAA4B,IAAzB7sC,EAAwB,EAAxBA,GAAIyD,EAAoB,EAApBA,MAClB,MAAO,CAAEzD,GAAIA,GAAMyD,EAAOkY,OADY,EAAbA,WCMds2G,GAVW52G,aAAa,CACrC3b,KAAM,cACNN,YAAa0yH,GACbjlF,YAAa,gBAAGvmC,EAAH,EAAGA,OAAH,MAAiB,CAC5BqV,SAAUrV,EACVA,WAEF1G,MAdoB,SAACmY,GAAD,OACpB,uCACE,eAAC,GAAS6G,KAAV,CAAe5e,GAAI+X,EAAEjJ,aADvB,KACwC,IADxC,UAEMiJ,EAAEtB,YAFR,aAEwB2hB,KAAM0c,QAAQ1c,KAAMwc,UAAU78B,EAAE8d,OAFxD,W,GCDE92B,aAAkB,CACpBC,OAAQ+c,GAAU/c,OAClBE,QAAS6c,GAAU7c,QACnB4wB,gBAAiB,YAAuB,IAApB9wB,EAAmB,EAAnBA,OAAQsK,EAAW,EAAXA,KAC1B,MAAM,GAAN,OAAUtK,EAAOyhC,OAAjB,oBAAmCzhC,EAAO0yH,cAA1C,YAA2DpoH,MAPhD4oH,G,GAAb9yH,YACW+yH,G,GAAX7yH,UACiB8yH,G,GAAjB5gG,gBCEa6gG,GALoBx8G,aAAkB,CACnDnW,KAAM,kBACNJ,UAAW6yH,KCGEG,GALej3G,aAAa,CACzC3b,KAAM,kBACNN,YAAa8yH,KCGAK,GALoB/kH,aAAkB,CACnD9N,KAAM,kBACNN,YAAa8yH,KCoBAM,GAfS,CAEtBlwH,IAAK8jD,GAAqB9jD,IAE1BpD,QAASknD,GAAqBlnD,QAC9BsD,UAAW4jD,GAAqBpnD,OAAOwD,UAEvCE,OAAQwvH,GACRzvH,OAAQ0vH,GACRM,aAAcL,GAEd5wH,OAAQ8wH,GACR7qH,YAAa4qH,GACb5pH,YAAa8pH,ICKAG,GAhBK,CAElBpwH,IAAK6jD,GAAU7jD,IAEfpD,QAASinD,GAAUjnD,QACnBsD,UAAW2jD,GAAUnnD,OAAOwD,UAE5BE,OAAQmvH,GACR7kF,UAAW8kF,GACXrvH,OAAQsvH,GAERvwH,OAAQywH,GACRxqH,YAAauqH,GAEb/1G,KAAM02G,I,GCtBN5zH,aAAkB,CAChBC,OAAQiO,GAAUjO,OAClBE,QAAS+N,GAAU/N,UAHK0zH,G,GAAbxzH,YAAyCyzH,G,GAAXvzH,UCK9BwzH,GALgBj9G,aAAkB,CAC/CnW,KAAM,cACNJ,UAAWuzH,KCIEE,GANW13G,aAAa,CACrC3b,KAAM,cACNN,YAAawzH,GACbrvH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCG1CuvH,GANgBxlH,aAAkB,CAC/C9N,KAAM,cACNN,YAAawzH,GACbrvH,OAAQ,SAACuD,EAAGrD,GAAJ,OAA6B,IAAfqD,EAAE5G,UAAsB4G,EAAE9G,KAAOyD,KCe1CwvH,GAfK,CAElB3wH,IAAK4wH,GAAiB5wH,IAEtBpD,QAASg0H,GAAiBh0H,QAC1BsD,UAAW0wH,GAAiBl0H,OAAOwD,UAEnCE,OAAQkwH,GACRnwH,OAAQowH,GAERrxH,OAAQuxH,GACRtqH,YAAauqH,GACbvrH,YAAaqrH,ICYTK,GAAiB,CACrBC,YAAa,IACb90F,OAAQ,EACR+0F,MAAO,GACPC,YAAa,EACb1B,QAAS,CACP3xH,IAAK,EACLszH,UAAW,EACXC,MAAO,EACPC,OAAQ,GAEV/wC,qBAAsB,IAGT,SAASgxC,GAAT,GAKX,IAAD,IAJDptE,eAIC,MAJS,GAIT,EAHDjiD,EAGC,EAHDA,SACAmyD,EAEC,EAFDA,SACAwb,EACC,EADDA,SAEMv9B,EAAQvxC,mBAAQ,kBAAMk1B,KAAM0jB,UAAS,IAE3C,OACE,eAAC,KAAD,CACEz3C,SAAUA,EACVE,cAAa,2BAAO4uH,IAAP,IAAuBt9F,KAAM4e,GAAU6R,GACpD9hD,OAAQ,CAAEA,OAAQ8sH,IAClB5sH,aAAW,EAJb,SAME,eAACivH,GAAD,CAAcn9D,SAAUA,EAAUwb,SAAUA,MAKlD,SAAS2hD,GAAT,GAA+C,IAAvBn9D,EAAsB,EAAtBA,SAAUwb,EAAY,EAAZA,SAAY,EACGpxE,eAAvC6X,EADoC,EACpCA,MAAOib,EAD6B,EAC7BA,SAAUjhB,EADmB,EACnBA,MAAO9R,EADY,EACZA,WADY,EAaxC8X,EAAM,CACR,KACA,gBACA,oBACA,OACA,QACA,cACA,UACA,gBACA,eAtB0C,mBAI1CzY,EAJ0C,KAK1CwxH,EAL0C,KAM1CC,EAN0C,KAO1CmC,EAP0C,KAQ1CC,EAR0C,KAS1CC,EAT0C,KAU1ClC,EAV0C,KAW1CF,EAX0C,KAY1C5iH,EAZ0C,OAwBQmkH,GAAYxwH,OAAO,CACrEzC,GAAIwxH,IADEloH,KAAmByqH,GAxBiB,aAwBC,GAxBD,GAwB5BC,UAxB4B,EA4B1CC,GAAgBxxH,OAAO,CACrBzC,GAAIyxH,IAFAyC,SAAuBC,GA3Ba,aA2BS,GA3BT,GA2BxBH,UAKdI,EAAgB1C,GAAiB5iH,EACjCklH,EACHI,GAAiBL,IAAoBK,GAAiBD,EACnDE,EAAYD,GAAmC,OAAlB5C,EAEnC11G,qBAAU,WACR2qC,GAAankD,IAAIikD,gBAAgB,CAAE1wB,KAAM+9F,IAAennH,MAAK,SAACC,GAC5DgnB,EAAS,cAAehnB,EAAS4mH,aACjC5/F,EAAS,UAAW,CAClB6/F,UAAW7mH,EAAS6mH,UACpBC,MAAO9mH,EAAS8mH,MAChBC,OAAQ/mH,EAAS+mH,OACjBxzH,IAAKyM,EAAS4nH,kBAGjB,CAACV,EAAalgG,IAEjB5X,qBAAU,WACJk4G,GACFtgG,EAAS,UAAWogG,EAAqBD,GAAclrG,QAAQ,GAAI,CACjE+oC,aAAa,EACbD,gBAAgB,MAEnB,CAACoiE,EAAcG,EAAWF,EAAoBpgG,IAEjD7yB,eAzD4C,MA2DWowH,KA3DX,mBA2DrCF,EA3DqC,KA2DvBwD,EA3DuB,KA2DJnD,EA3DI,KA6D5C,OACE,gBAACtwH,GAAA,EAAD,WACE,eAACA,GAAA,EAAKY,MAAN,UACE,oBAAGN,UAAU,OAAb,SACGswH,EACC,+CACO,eAAC,GAAYjqH,YAAb,CAAyBzH,GAAI0xH,IADpC,cAGE5iH,EACF,mDACW,eAAC,GAAS8P,KAAV,CAAe5e,GAAI8O,IAD9B,cAIA,2DAIN,eAAChO,GAAA,EAAKY,MAAN,UACE,eAACZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,eAACwzH,GAAD,CAAa90H,KAAK,OAAO0xH,YAAaA,UAI5C,eAACtwH,GAAA,EAAKY,MAAN,UACE,gBAACZ,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACGuN,GAAc4iH,EACb,eAAC,KAAWlwH,OAAZ,CACE9B,KAAK,gBACLE,MAAM,OACN6B,GAAIwxH,GAAYzxH,SAGlB,eAAC,KAAWA,OAAZ,CACE9B,KAAK,oBACLE,MAAM,WACN6B,GAAIwyH,GAAgBzyH,WAI1B,eAACR,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,sBACLE,MAAM,cACNyU,YAAa,uBACblT,aAAa,eAKrB,eAACL,GAAA,EAAKY,MAAN,UACE,gBAACZ,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CAAYvB,KAAK,cAAcE,MAAM,eAAe6B,GAAG,SAAvD,UACE,yBAAQgC,MAAM,IAAd,iCACA,yBAAQA,MAAM,IAAd,gCAGJ,eAACzC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,QACLE,MAAM,QACN0J,KAAK,SACL0sB,IAAI,IACJ/1B,IAAI,OACJiB,UAAW8yH,EACX7yH,aAAa,UAGjB,eAACH,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,SACLE,MAAM,SACN0J,KAAK,SACL0sB,IAAI,IACJ/1B,IAAI,SACJiB,SAAU8yH,EACV7yH,aAAa,UAGjB,gBAACH,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACH,GAAA,EAAK4G,MAAN,uBACA,gBAAC,KAAD,CACEhI,KAAK,uBACLM,GAAG,uBACHyB,GAAG,SAHL,UAKE,yBAAQgC,MAAM,GAAd,qBACA,yBAAQA,MAAM,IAAd,iBACA,yBAAQA,MAAM,IAAd,2BAKR,eAAC3C,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAKY,MAAN,UACE,gBAACZ,GAAA,EAAKC,IAAN,CAAUK,UAAU,0BAApB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACorC,GAAA,EAAD,WACE,eAACvqC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,oBAGA,eAACmB,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,WACPyQ,IACA+jD,KAJJ,yBAYJ,eAACx1D,EAAA,EAAD,CAAKC,GAAG,OAAR,SACGjB,GAAMgyE,EACL,eAAClwE,EAAA,EAAD,CAAQC,QAAQ,SAASC,QAAS,kBAAMgwE,EAAS,CAAEhyE,GAAIA,KAAvD,oBAGE,YAIV,eAACc,GAAA,EAAKY,MAAN,UACE,gBAACZ,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,OACLE,MAAM,QACNyU,YAAY,WACZklC,QAAS,EACTp4C,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAR,SACG+yH,EACC,eAACS,GAAD,CAAc54G,KAAMi4G,IAClBO,EACF,uCACE,eAACK,GAAD,CAActwH,OAAQwtH,IACtB,eAAC+C,GAAD,CACE5qE,UAAW3xB,KAAMwc,UAAUg/E,GAC3BgB,eAAgBhD,EAChBl+F,SAAUA,OAGZ,iBAOd,eAACq9F,EAAD,eAAkBwD,OAKxB,SAASG,GAAT,GAAmC,IAAXtwH,EAAU,EAAVA,OACtB,OACE,eAACrD,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,cAAtB,6BACA,eAAC,KAAD,CAAOgH,KAAK,KAAKhH,UAAU,aAA3B,SACE,mCACE,gCACE,4CACA,8BACE,eAAC23D,GAAD,CAAmBt1D,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQmvH,iBAGtC,gCACE,wCACA,8BACE,eAACx6D,GAAD,CAAmBt1D,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQovH,aAGtC,gCACE,yCACA,8BACE,eAACz6D,GAAD,CAAmBt1D,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQqvH,cAGtC,gCACE,sCACA,8BACE,eAAC16D,GAAD,CAAmBt1D,MAAK,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAQnE,qBAUlD,SAASw0H,GAAT,GAAiC,IAAT54G,EAAQ,EAARA,KACtB,OACE,eAAC9a,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,cAAtB,4BACA,eAAC,KAAD,CAAOgH,KAAK,KAAKhH,UAAU,aAA3B,SACE,iCACE,gCACE,8CACA,8BACE,eAAC23D,GAAD,CAAmBt1D,MAAOoY,kBAU1C,SAAS24G,GAAT,GAA6C,IAAtB90H,EAAqB,EAArBA,KAAM0xH,EAAe,EAAfA,YAAe,EAItC55G,aAAc,CAAE9X,SAJsB,IAExC+X,MAAS5Q,EAF+B,EAE/BA,SAAU+uB,EAFqB,EAErBA,OAAQnyB,EAFa,EAEbA,MACbqJ,EAH0B,EAGxC4K,WAAc5K,MAGhB,OACE,eAACoqB,GAAA,EAAD,CACEx3B,KAAK,OACLE,MAAM,OACN6D,MAAOA,GAAS20B,KAAMwc,UAAUnxC,GAChCmyB,OAAQA,EACR/uB,SAAU,SAACsO,GACT,IAAM0/G,EAAc,kBAAMhuH,EAASuxB,KAAM0jB,MAAM3mC,KAC3Cgc,IAAOhc,GAAKgc,MAASwH,SAAS,GAAI,QACpCy4F,EAAY,CACVlpH,MAAO,6BACP6E,QAAS,0CACTikH,QAAS,CACP,CACEpxH,MAAO,UACPoC,QAAS6yH,EACT9yH,QAAS,WAEX,CACEnC,MAAO,SACPmC,QAAS,gBAIZ8yH,KAEP/8F,YAAY,EACZlgB,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,UAKrB,IAAMoqB,GAAe,CACnBo8F,WAAW,EACXC,OAAO,EACPC,QAAQ,GAEV,SAASkB,GAAT,GAAqE,IAAxC5qE,EAAuC,EAAvCA,UAAW6qE,EAA4B,EAA5BA,eAAgBlhG,EAAY,EAAZA,SAAY,EAC1CvuB,oBAAS,GADiC,mBAC3D0C,EAD2D,KACrDC,EADqD,OAE1C3C,mBAAS,GAFiC,mBAE3D2vH,EAF2D,KAErDC,EAFqD,OAGtC5vH,mBAAS,CAACgyB,KAH4B,mBAG3D/yB,EAH2D,KAGnDuqE,EAHmD,OAItCxpE,mBAAS,IAJ6B,mBAI3DsyE,EAJ2D,KAInDu9C,EAJmD,OAKhB7vH,oBAAS,GALO,mBAK3D8vH,EAL2D,KAKxCC,EALwC,KAiBlE,OAXAp5G,qBAAU,WACRk5G,EACE5wH,EAAOmC,KAAI,SAAC4O,GACV,IAAIq7E,EAAQ,EAIZ,OAHIr7E,EAAEo+G,YAAW/iC,GAASokC,EAAerB,WACrCp+G,EAAEq+G,QAAOhjC,GAASokC,EAAepB,OACjCr+G,EAAEs+G,SAAQjjC,GAASokC,EAAenB,QAC/BjjC,QAGV,CAACpsF,EAAQwwH,IAEV,gBAAC9zH,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEsG,KAAK,KACLpG,QAAS,kBAAM8F,GAAQ,IACvB/F,QAAQ,oBACRi1D,OAAK,EAJP,0BASF,gBAAC7uD,GAAA,EAAD,CACEN,KAAMA,EACNQ,OAAQ,kBAAMP,GAAQ,IACtB1G,UAAU,SACVggE,kBAAkB,kBAJpB,UAME,eAACj5D,GAAA,EAAMhF,OAAP,kCACA,gBAACgF,GAAA,EAAMK,KAAP,WACE,gBAAC1H,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oBAAgBotH,EAAhB,6BAAyC18F,KAAM0c,QAC7CiV,MAEF,eAACjpD,GAAA,EAAK8F,QAAN,CACEnD,MAAOqxH,EACPxrH,KAAK,QACL0sB,IAAK,EACL/1B,IAAK,GACL4G,SAAU,SAACC,GACT,IAAM+kB,EAAI/kB,EAAEC,OAAOtD,MACnBsxH,EAAQlpG,GACR8iD,GAAU,SAACyO,GACT,IAAM+3C,EAAS,YAAO/3C,GACtB,GAAIA,EAAI/+D,OAASwN,EACf,OAAOuxD,EAAIg4C,MAAM,EAAGvpG,GAEpB,IAAK,IAAIlK,EAAI,EAAGA,EAAIkK,EAAIuxD,EAAI/+D,OAAQsD,IAClCwzG,EAAUr3G,KAAKqZ,IACjB,OAAOg+F,WAMhB/wH,EAAOmC,KAAI,SAAC4O,EAAGwZ,GAAJ,OACV,eAAC7tB,GAAA,EAAKY,MAAN,UACE,gBAACZ,GAAA,EAAKC,IAAN,CAAUK,UAAU,0BAApB,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACH,GAAA,EAAK4G,MAAN,UACG0wB,KAAM0c,QAAQ3jB,IAAO44B,GAAWnxB,IAAIjK,EAAK,aAG9C,gBAAC3tB,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACH,GAAA,EAAKO,MAAN,CACErB,GAAE,oBAAe2uB,GACjBu/C,QAAM,EACNtuE,MAAM,YACNmiE,QAAS5sD,EAAEo+G,UACX1sH,SAAU,SAACC,GAAD,OACR6nE,GAAU,SAACyO,GAET,OADAA,EAAIzuD,GAAJ,2BAAgByuD,EAAIzuD,IAApB,IAA0B4kG,UAAWzsH,EAAEC,OAAOg7D,UACvC,YAAIqb,SAIjB,eAACt8E,GAAA,EAAKO,MAAN,CACErB,GAAE,gBAAW2uB,GACbu/C,QAAM,EACNtuE,MAAM,QACNmiE,QAAS5sD,EAAEq+G,MACX3sH,SAAU,SAACC,GAAD,OACR6nE,GAAU,SAACyO,GAET,OADAA,EAAIzuD,GAAJ,2BAAgByuD,EAAIzuD,IAApB,IAA0B6kG,MAAO1sH,EAAEC,OAAOg7D,UACnC,YAAIqb,SAIjB,eAACt8E,GAAA,EAAKO,MAAN,CACErB,GAAE,iBAAY2uB,GACdu/C,QAAM,EACNtuE,MAAM,SACNmiE,QAAS5sD,EAAEs+G,OACX5sH,SAAU,SAACC,GAAD,OACR6nE,GAAU,SAACyO,GAET,OADAA,EAAIzuD,GAAJ,2BAAgByuD,EAAIzuD,IAApB,IAA0B8kG,OAAQ3sH,EAAEC,OAAOg7D,UACpC,YAAIqb,YAKnB,eAACp8E,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC83D,GAAD,CACEt1D,MAAOg0E,EAAO9oD,GACdvtB,UAAU,2BAhDDutB,MAsDnB,eAAC7tB,GAAA,EAAKY,MAAN,UACE,gBAACZ,GAAA,EAAKC,IAAN,CAAUK,UAAU,0BAApB,UACE,eAACJ,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACa,EAAA,EAAD,CACEE,QAAS,WACP8F,GAAQ,GACR4rB,EACE,SACA+jD,EAAOxqD,QAAO,SAAC9jB,EAAG4b,GAAJ,OAAU5b,EAAI4b,IAAG,GAC/B,CACE2sC,aAAa,EACbD,gBAAgB,IAGhBwjE,GACFvhG,EACE,OACA+jD,EAAOxqD,QAAO,SAACy0C,EAAO8uB,EAAO7hE,GAC3B,OACE+yC,EAAK,UACFtpC,KAAM0c,QACP3jB,IAAO44B,GAAWnxB,IAAIjK,EAAK,SAFxB,eAGG6hE,EAAM7nE,QAAQ,GAHjB,QAKN,MArBX,0BA4BF,eAAC3nB,EAAA,EAAD,UACE,eAACF,GAAA,EAAKO,MAAN,CACErB,GAAG,eACHkuE,QAAM,EACNtuE,MAAM,eACNmiE,QAASkzD,EACTpuH,SAAU,SAACC,GAAD,OAAOouH,EAAqBpuH,EAAEC,OAAOg7D,mBAKvD,gBAAC/gE,EAAA,EAAD,CAAKI,UAAU,mBAAmBH,GAAG,OAArC,kBACQ,IACN,eAAC83D,GAAD,CACEt1D,MAAOg0E,EAAOxqD,QAAO,SAAC9jB,EAAG4b,GAAJ,OAAU5b,EAAI4b,IAAG,GACtC3jB,UAAU,sCCniBb,SAASi0H,GAAT,GAAgE,IAAlCntH,EAAiC,EAAjCA,MAAOL,EAA0B,EAA1BA,KAAMQ,EAAoB,EAApBA,OAAWrF,EAAS,0CAC5E,OACE,gBAACmF,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQA,EAAQD,KAAK,KAAKm7D,SAAS,SAAtD,UACE,eAACp7D,GAAA,EAAMhF,OAAP,UACE,eAACgF,GAAA,EAAMI,MAAP,UAAcL,MAEhB,eAACC,GAAA,EAAMK,KAAP,UACE,eAACkrH,GAAD,aAAel9D,SAAUnuD,GAAYrF,S,OCDzCjE,aAAkB,CACpBC,OAAQuD,GAAMvD,OACdE,QAASqD,GAAMrD,UALFo2H,G,GAAbl2H,YACqBm2H,G,GAArBhkG,oBACAjyB,G,GAAAA,UAMIk2H,GAAa,WAA2B,IAAD,yDAAP,GAAhBx1H,EAAuB,EAAvBA,GAAO+O,EAAgB,uBACrC3F,EAAW0O,cACjB,OAAO,aACL6yB,iBAAkB5iC,uBAChB,SAACgH,GAAD,OACE3F,EAAS7G,GAAMrD,QAAQyrC,iBAAd,aAAiC3qC,MAAO+O,KAAStC,KACxD4jB,OAEJ,CAACjnB,EAAUpJ,KAEVV,GAAU,aAAEU,MAAO+O,MC2O1B,SAAS0mH,GAAT,GAAkE,IAAtCz1H,EAAqC,EAArCA,GAAIqI,EAAiC,EAAjCA,OAAQ/D,EAAyB,EAAzBA,WAAYgnB,EAAa,EAAbA,UAAa,EAK3DkqG,GAAW,CACbx1H,OAJAsmD,EAF6D,EAE7DA,QACWovE,EAHkD,EAG7DrmH,UACWsmH,EAJkD,EAI7DnjH,UAIF,OACE,eAAC6iH,GAAD,CACEntH,MAAM,eACNo+C,QAASA,EACTz+C,OAAQy+C,EACRj+C,OAAQA,EACRhE,SAAU,SAACiiD,GACTovE,EAAcpvE,GAAS75C,MAAK,WAC1BpE,IACAijB,QAGJ0mD,SAAU,WACR2jD,IAAgBlpH,MAAK,WACnBpE,IACAijB,QAGJhnB,WAAYA,IAKlB,SAASsxH,GAAT,GAA8D,IAA3B51H,EAA0B,EAA1BA,GAAIqI,EAAsB,EAAtBA,OAAQ/D,EAAc,EAAdA,WAAc,EACTkxH,GAAW,CAC3Dx1H,OADMsmD,EADmD,EACnDA,QAAS3b,EAD0C,EAC1CA,iBAAkBkrF,EADwB,EACxBA,WAGnC,OACE,gBAAC1tH,GAAA,EAAD,CAAOC,KAAK,KAAKP,OAAQy+C,EAASj+C,OAAQA,EAA1C,UACE,eAACF,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,oCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAAC2vG,GAAD,CACEC,YAAW,OAAE9xD,QAAF,IAAEA,OAAF,EAAEA,EAAS8xD,YACtB3sG,OAAQk/B,EACRjpB,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAQ,OAAErP,QAAF,IAAEA,OAAF,EAAEA,EAAStmD,IAC3CgyE,SAAU6jD,EACVvxH,WAAgC,OAAb,OAAPgiD,QAAO,IAAPA,OAAA,EAAAA,EAASpM,SAAkB51C,SC3SjD,IAkBewxH,GAlBC,CAEdxzH,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBE,OAAQ4yH,GACRtoF,UAAWuoF,GACX9yH,OAAQ+yH,GAER7yH,MDCa,YAKX,IAJFgjD,EAIC,EAJDA,SACArhD,EAGC,EAHDA,WAGC,IAFDgnB,iBAEC,MAFW,aAEX,EADEtoB,EACF,wDAC2BmC,mBAAS,MADpC,mBACM4wH,EADN,KACcC,EADd,OAEuC7wH,mBAAS,MAFhD,mBAEM8wH,EAFN,KAEoBC,EAFpB,KAIKjzH,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,GACRC,SAAU,SACV8U,eAAe,EACf1U,KAAM,YAA4C,IAAD,EAAxCC,EAAwC,EAAxCA,MAAwB6iD,EAAgB,EAAjC3iD,IAAOC,SACfgE,EAAqB,MAAVnE,GAAiBa,EAClC,OACE,gBAAC+nC,GAAA,EAAD,CAAa/qC,MAAO,CAAEC,SAAU,QAAhC,UACE,eAACO,EAAA,EAAD,CACEC,QAAQ,QACRqG,KAAK,KACLpG,QAAS,kBAAMg0H,EAAS,OAAC1vE,QAAD,IAACA,OAAD,EAACA,EAAStmD,KAClC4H,SAAUA,EAJZ,SAME,eAAC,KAAD,MAEF,gBAAC9F,EAAA,EAAD,CACEC,QAAQ,QACRqG,KAAK,KACLpG,QAAS,kBAAMk0H,EAAe,OAAC5vE,QAAD,IAACA,OAAD,EAACA,EAAStmD,KAH1C,UAKE,eAAC,KAAD,IAAe,IACf,eAACywD,GAAA,EAAD,CAAO1uD,QAAQ,QAAf,gBAAwBukD,QAAxB,IAAwBA,GAAxB,UAAwBA,EAAS8xD,mBAAjC,aAAwB,EAAsB/5F,iBAMxD,CACEre,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe20B,KAAMC,YAAYD,KAAMwc,UAAUnxC,MAEzD,CACEzD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,SACJmD,OAAQ,SACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,YAAqC,IAAjB8iD,EAAgB,EAAjC3iD,IAAOC,SACd,cAAI0iD,QAAJ,IAAIA,OAAJ,EAAIA,EAASorE,eACJ,eAAC,GAAYjqH,YAAb,CAAyBzH,GAAE,OAAEsmD,QAAF,IAAEA,OAAF,EAAEA,EAASorE,iBAC1C,OAAIprE,QAAJ,IAAIA,OAAJ,EAAIA,EAASx3C,YACT,eAAC,GAAS8P,KAAV,CAAe5e,GAAE,OAAEsmD,QAAF,IAAEA,OAAF,EAAEA,EAASx3C,aACzB,4CAGhB,CACE9O,GAAI,cACJmD,OAAQ,OACRC,SAAU,gBACVC,OAAQ4vH,GAAYxqH,YACpBlF,OAAQ,SACRC,KAAMyvH,GAAYxrH,aAEpB,CACEzH,GAAI,WACJmD,OAAQ,WACRC,SAAU,aACVI,KAAMqsC,GAASjxB,MAEjB,CACE5e,GAAI,kBACJmD,OAAQ,WACRC,SAAU,oBACVC,OAAQ4wH,GAAgBxrH,YACxBlF,OAAQ,SACRC,KAAMywH,GAAgBxsH,aAExB,CACEzH,GAAI,sBACJmD,OAAQ,cACRC,SAAU,uBAEZ,CACEpD,GAAI,OACJmD,OAAQ,QACRC,SAAU,OACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,oBACErC,UAAU,OACVE,MAAO,CACLC,SAAU,QACV22E,SAAU,QACVvsC,WAAY,YALhB,SAQGloC,MAIP,CACEzD,GAAI,cACJmD,OAAQ,eACRC,SAAU,SAAC0D,GAAD,MACU,MAAlBA,EAAEssH,YACE,gBACkB,MAAlBtsH,EAAEssH,YACF,sBACA,IACN/vH,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,uBACJmD,OAAQ,WACRC,SAAU,wBAEZ,CACEpD,GAAI,UACJmD,OAAQ,UACRC,SAAU,QACVsjB,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,KAGxB,CACE1oB,GAAI,SACJmD,OAAQ,SACRC,SAAU,SACVsjB,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,IAEtBrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS06B,QAAUkyD,IAGR,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,qBACJmD,OAAQ,uBACRC,SAAU,qBACVsjB,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,IAEtBrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASuyH,oBAAsB3lC,IAGpB,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,kBACJmD,OAAQ,mBACRC,SAAU,kBACVsjB,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,IAEtBrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASwyH,iBAAmB5lC,IAGjB,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,UAIxD,CAACrkB,IAEH,OACE,uCACE,eAAC3B,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,WACNqD,QAASA,EACTe,KAAM2hD,EACNr6B,UAAWA,GACPtoB,IAEN,eAACyyH,GAAD,CACEz1H,GAAI+1H,EACJzqG,UAAWA,EACXjjB,OAAQ,kBAAM2tH,EAAU,SAE1B,eAACJ,GAAD,CACE51H,GAAIi2H,EACJ5tH,OAAQ,kBAAM6tH,EAAgB,OAC9B5xH,WAAYA,QC3OlB+xH,UCba,YAKX,IAAD,IAJDz2H,aAIC,MAJO,cAIP,EAHDu4D,EAGC,EAHDA,SACA/6C,EAEC,EAFDA,cAEC,IADDxV,gBACC,SACOuH,EAAcqmH,KAAdrmH,UADP,EAE6BhK,oBAAS,GAFtC,mBAEMizD,EAFN,KAEeC,EAFf,KAWD,OAPAC,aACEF,EACI,GACA,CACE,WAAY,kBAAMC,GAAW,MAInC,uCACE,eAACv2D,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAMq2D,GAAW,IAC1BzwD,SAAUA,EAHZ,SAKGhI,IAEH,eAACy1H,GAAD,CACEntH,MAAM,cACNo+C,QAASlpC,EACTvV,KAAMuwD,EACN/vD,OAAQ,kBAAMgwD,GAAW,IACzBh0D,SAAU,SAACiiD,GAAD,OACRn3C,EAAUm3C,GAAS75C,MAAK,WACtB0rD,IACAE,GAAW,aDlBrBi+D,KAAM5D,GACN5B,SAAUA,GACVlvH,KAAMqxH,IEnBO,SAASsD,GAAT,GAA0C,IAAbr0H,EAAY,EAAZA,SAC1C,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,YAAnB,sBACA,sBAAKf,UAAU,qBACdc,KAKA,SAASs0H,KACd,OACE,gBAACD,GAAD,WACE,eAAClnB,GAAD,CAAgBltG,GAAG,kBAAnB,kBACA,eAACktG,GAAD,CAAgBltG,GAAG,sBAAnB,sBACA,eAACktG,GAAD,CAAgBltG,GAAG,uBAAnB,mBACA,eAACktG,GAAD,CAAgBltG,GAAG,mBAAnB,uBCTS,SAASs0H,KACtB,IAAM3nH,EAHiBkjC,SAASC,eAAYjyC,IAItC0U,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAFF,EAGIohH,GAAQ9oF,UAAU,CACjErxB,SAAU7M,EACVxI,OAAQ,CAAEm6B,OAAQ/rB,EAAM5F,WAAYA,EAAYorC,OAAQ,IAAK4lC,KAAM,OAF7Dn6B,EAHqC,EAGrCA,SAAUn2C,EAH2B,EAG3BA,QAASuC,EAHkB,EAGlBA,WAAYU,EAHM,EAGNA,MAKvC,OACE,gBAACu+B,GAAD,CAAM9oC,MAAK,oBAAuBipC,WAAY,eAACqlF,GAAD,IAA9C,UACE,eAACz1H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQq1H,UAAT,CACEl+D,SAAU1lD,EACV2K,cAAe,CAAEtO,WAAYA,SAInC,eAAC/N,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQ2B,MAAT,CACEgjD,SAAUA,EACVrwC,UAAW9F,EACXzM,OAAQ,CACN,OACA,OACA,cACA,sBACA,OACA,SACA,kBACA,qBACA,cACA,uBACA,WAEFuoB,UAAW7Y,EACX8Y,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,mBCzCvD,SAASunD,KAAwB,IAAD,EACTvxH,qBADS,mBACtC2J,EADsC,KAC1BupE,EAD0B,OAErBjqB,KAAfE,EAFoC,oBAG7C,OACE,gBAACtd,GAAD,CACE9oC,MAAK,4BACLipC,WAAY,eAACqlF,GAAD,IAFd,UAIE,eAAC98G,GAAA,EAAD,CAAO3X,QAAS,UAAhB,0GAIA,gBAACjB,GAAA,EAAD,WACE,eAAC,GAASU,OAAV,CACEiC,MAAOqL,EACPlP,MAAM,YACNiH,SAAU,SAAC7G,GAAD,OAAQq4E,EAAcr4E,MAElC,eAAC8B,EAAA,EAAD,CACEE,QAAS,kBACP8M,GAAcw/C,EAAY,uBAAD,OAAwBx/C,KAFrD,wBCnBO,SAAS6nH,KACtB,OACE,eAAC3lF,GAAD,CAAM9oC,MAAK,WAAcipC,WAAY,eAACqlF,GAAD,IAArC,SACE,eAACz1H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACoiE,GAAA,EAAD,WACE,eAAC,iBAAD,CAAelhE,GAAG,kBAAlB,SACE,eAACkhE,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,mCAEF,eAAC,iBAAD,CAAehI,GAAG,sBAAlB,SACE,eAACkhE,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,uCAEF,eAAC,iBAAD,CAAehI,GAAG,uBAAlB,SACE,eAACkhE,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,oCAEF,eAAC,iBAAD,CAAehI,GAAG,mBAAlB,SACE,eAACkhE,GAAA,EAAU5pD,KAAX,CAAgBtP,QAAM,EAAtB,+BCdC,SAASysH,KACtB,IAAMliH,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADL,EAEOohH,GAAQ9oF,UAAU,CACjErxB,QAAQ,EACRrV,OAAQ,CAAEm6B,OAAQ/rB,EAAMwlC,OAAQ,IAAK4lC,KAAM,OAFrCn6B,EAFkC,EAElCA,SAAUn2C,EAFwB,EAExBA,QAASuC,EAFe,EAEfA,WAAYU,EAFG,EAEHA,MAKvC,OACE,gBAACu+B,GAAD,CACE9oC,MAAK,iBACLipC,WAAY,eAACqlF,GAAD,IACZplF,iBAAiB,EAHnB,UAKE,eAACrwC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQq1H,UAAT,CAAmBl+D,SAAU1lD,QAGjC,eAAC1R,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQ2B,MAAT,CACEgjD,SAAUA,EACVrwC,UAAW9F,EACXzM,OAAQ,CACN,OACA,OACA,kBACA,sBACA,OACA,SACA,kBACA,cACA,mBACA,WAEFuoB,UAAW7Y,EACX8Y,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,mBCtBvD,SAAS0nD,KACtB,IAAM9sE,EAAYqY,GAAgB,aAC5B/W,EAAU+W,GAAgB,WAC1B3hC,EAAS2hC,GAAgB,UACzBtzD,EAAaszD,GAAgB,cAC7BsvD,EAAgBtvD,GAAgB,iBAChCloB,EAASkoB,GAAgB,UACzB0d,EAAO1d,GAAgB,QAPS,EAalCztD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAHzBkiH,EAV8B,EAUpCpiH,KACA+sB,EAXoC,EAWpCA,0BACA1oB,EAZoC,EAYpCA,QAGIg+G,EACJD,IAAkBr2F,IAAWgB,IAA8B1oB,EAEvDzS,EAASpD,mBAAQ,WACrB,IAAM8zH,EAAc,CAClBjtE,YACAsB,UACA5qB,SACA3xB,aACA4iH,gBACAx3E,SACA4lC,QAEIx5E,EAAM,eAAQZ,IAAEi2D,OAAOq7D,GAAe,GAAIlyG,UAEhD,OAAOpf,IAAE6E,QAAQjE,GAAU,KAAOA,IACjC,CAACwI,EAAY4iH,EAAermE,EAAStB,EAAW7P,EAAQzZ,EAAQq/C,IA/B7B,EAiCWg2C,GAAQ9oF,UAAU,CACjErxB,SAAUrV,IAAWywH,EACrBzwH,WAFMq/C,EAjC8B,EAiC9BA,SAAUn2C,EAjCoB,EAiCpBA,QAASiD,EAjCW,EAiCXA,MAAOV,EAjCI,EAiCJA,WAK5BklH,EAAW,CAAC,SACd,OAAC3wH,QAAD,IAACA,OAAD,EAACA,EAAQm6B,SAAQw2F,EAASn5G,KAAK,QAEnC,IA0BM/a,EAASk0H,EAAS1jH,OAAwB,OAAX,OAANjN,QAAM,IAANA,OAAA,EAAAA,EAAQw5E,MAZpB,CACjB,OACA,SACA,kBACA,sBACA,OACA,cACA,UACA,SACA,mBAvBc,CACd,OACA,SACA,cACA,sBACA,OACA,cACA,UACA,uBACA,SACA,kBACA,uBAiBF,OACE,gBAAC9uC,GAAD,CACE9oC,MAAK,kBACLipC,WAAY,eAACqlF,GAAD,IACZplF,iBAAiB,EAHnB,UAKG2lF,EACC,eAACr9G,GAAA,EAAD,CAAO3X,QAAQ,SAAf,+CACE,KACHuE,EACC,eAAC,GAAQ3D,MAAT,CACEgjD,SAAUA,EACVrwC,UAAW9F,EACXzM,OAAQA,EACRuoB,UAAW7Y,EACX8Y,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,YAG5D,eAAC+nD,GAAD,CACEz2F,OAAQq2F,EACRK,eAAgB11F,GAA6B1oB,QAOvD,IAAMq+G,GAAe53H,eAASC,MAAM,CAClCsqD,UAAWpqD,eAAS4W,UAAU6hB,KAAM0jB,OAAOl8C,MAAM,cACjDyrD,QAAS1rD,eAAS4W,UAAU6hB,KAAM0jB,OAAOl8C,MAAM,YAC/C6gC,OAAQ9gC,eAASC,MAAM,QAAQuhD,KAAK,gBAAiB,CACnDC,IAAI,EACJ30C,KAAM9M,eAASE,WACfo1D,UAAWt1D,mBAIf,SAASu3H,GAAT,GAAkD,IAAzBz2F,EAAwB,EAAxBA,OAAQ02F,EAAgB,EAAhBA,aAAgB,EACvB/oE,KAAfE,EADsC,oBAG/C,OACE,eAAC,KAAD,CACEjqD,SAAU,SAACiC,GACTgoD,EAAY,oBAAD,OACW,IAAIgU,gBAAJ,eACf58D,IAAEi2D,OAAOr1D,GAAU,GAAIwe,WACzB6tC,cAGPpuD,cAAe,CACbk8B,SACAyZ,OAAQ,IACR4lC,KAAM,IACN/1B,UAAW,GACXsB,QAAS,IAEX7mD,OAAQ,CAAEA,OAAQ4yH,IAClBn2E,QAAS,CAAEk2E,gBACXzyH,aAAW,EAjBb,SAmBE,eAAC2yH,GAAD,MAKN,SAASA,KAAsB,IAAD,EAMxBz2H,eAJF6X,EAF0B,EAE1BA,MACA9X,EAH0B,EAG1BA,WACA+yB,EAJ0B,EAI1BA,SACWyjG,EALe,EAK1Bl2E,QAAWk2E,aALe,EAQe1+G,EAAM,CAC/C,OACA,YACA,UACA,WAZ0B,mBAQrBqnE,EARqB,KAQf/1B,EARe,KAQJsB,EARI,KAQK5qB,EARL,KAe5B,OACE,gBAAC3/B,GAAA,EAAD,WACE,eAACA,GAAA,EAAKY,MAAN,UACE,eAACZ,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,eAACH,GAAA,EAAKY,MAAN,UACE,eAAC,KAAD,CACEhC,KAAK,YACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU,SAACsO,GAAD,OAAOtO,EAASsO,IAC1B2iB,YAAY,EACZD,QAASwzB,EACTlqD,aAAa,MACb6Y,aAAW,SAKnB,eAAClZ,GAAA,EAAKY,MAAN,UACE,eAAC,KAAD,CACEhC,KAAK,UACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU,SAACsO,GAAD,OAAOtO,EAASsO,IAC1B2iB,YAAY,EACZF,QAASmyB,EACT5oD,aAAa,MACb6Y,aAAW,gBAQzB,eAAClZ,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,CAAKC,GAAI,GAAI6Y,GAAI,EAAjB,UACE,eAAC,KAAWtY,OAAZ,CACE9B,KAAK,SACLE,MAAM,OACN6B,GAAIwa,KAAKza,OACTs2B,YAAY,EACZ9d,aAAcm9G,EACd7yH,WAAY6yH,IAEd,gBAAC,KAAD,CACEz3H,KAAK,OACLE,MAAM,OACN6B,GAAG,SACHoF,SAAU,SAACC,GACT,IAAM9G,EAAK8G,EAAEC,OAAOtD,MACpBiwB,EAAS,OAAQ1zB,GACN,MAAPA,EACF0zB,EAAS,aAAc,MACP,MAAP1zB,EACT0zB,EAAS,gBAAiB,MACV,MAAP1zB,IACT0zB,EAAS,gBAAiB,MAC1BA,EAAS,aAAc,QAb7B,UAiBE,yBAAQjwB,MAAM,IAAd,kBACA,yBAAQA,MAAM,IAAd,sBACA,yBAAQA,MAAM,IAAd,sBAEQ,MAATq8E,EACC,eAAC,KAAWt+E,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAIouC,GAASruC,OACbwY,aAAW,IAEF,MAAT8lE,EACF,eAAC,KAAWt+E,OAAZ,CACE9B,KAAK,gBACLE,MAAM,iBACN6B,GAAIq0H,GAAQQ,KAAK90H,OACjB8E,OAAQm6B,EAAS,CAAEA,OAAQA,GAAW,KACtCzmB,aAAW,IAEX,KACJ,gBAAC,KAAD,CAAYta,KAAK,SAASE,MAAM,SAAS6B,GAAG,SAA5C,UACE,yBAAQgC,MAAM,IAAd,kBACA,yBAAQA,MAAM,IAAd,4BAKN,eAAC3C,GAAA,EAAKY,MAAN,UACE,eAACI,EAAA,EAAD,CAAQE,QAASrB,EAAjB,yBChQO,SAAS22H,KACtB,IAAMxxE,EAAS9T,SAASC,eAAYjyC,IAC9B0U,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAFN,EAGQohH,GAAQ9oF,UAAU,CACjErxB,SAAUmqC,EACVx/C,OAAQ,CAAEm6B,OAAQ/rB,EAAMg9G,cAAe5rE,KAFjCH,EAHiC,EAGjCA,SAAUn2C,EAHuB,EAGvBA,QAASuC,EAHc,EAGdA,WAAYU,EAHE,EAGFA,MAHE,EAYrCqjH,GAAQQ,KAAKr6G,KAAKw2G,aAAa,CAAEr9G,KAAM,CAAE0wC,SAAQrlB,OAAQ/rB,KAHrD6iH,EATiC,EASvC7iH,KACW8iH,EAV4B,EAUvCnoH,UACSooH,EAX8B,EAWvCjoH,QAGIlL,GAA4B,OAAfizH,QAAe,IAAfA,OAAA,EAAAA,EAAiBG,qBAAsBloH,EAE1D,OACE,gBAACwhC,GAAD,CACEC,QAAO,uBACPC,KAAM,eAAC,GAAQolF,KAAK7uH,YAAd,CAA0BzH,GAAI8lD,EAAQnqC,QAAM,IAClDzT,MAAK,yBAAoB49C,GACzB3U,WAAY,eAACqlF,GAAD,IACZplF,iBAAiB,EALnB,UAOE,gBAACrwC,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQq1H,UAAT,CACEl+D,SAAU1lD,EACV2K,cAAe,CAAEs0G,cAAe5rE,GAChCl+C,SAAUtD,MAGd,eAACtD,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CACEE,QAAS,WACP8zH,GAAQQ,KAAKr6G,KAAK3Z,IACf0jD,UAAU,CAAEvlB,OAAQ/rB,EAAMoxC,OAAQA,IAClCr5C,MAAK,kBAAM0E,IAAM6lB,KAAK,gCAJ7B,uCAUF,eAACh2B,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC02H,GAAD,CACEhyE,SAAUA,EACV4xE,gBAAiBA,EACjBjiH,UAAWmiH,EACX99D,OAAQ69D,SAId,eAACz2H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQ2B,MAAT,CACEgjD,SAAUA,EACVrwC,UAAW9F,EACXzM,OAAQ,CACN,OACA,OACA,cACA,sBACA,OACA,SACA,kBACA,qBACA,cACA,uBACA,WAEFuoB,UAAW7Y,EACX8Y,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,UAC1D7qE,WAAYA,WAQxB,SAASqzH,GAAT,GAA6E,IAAtDJ,EAAqD,EAArDA,gBAAiBjiH,EAAoC,EAApCA,UAAWqkD,EAAyB,EAAzBA,OAAyB,IAAjBhU,gBAAiB,MAAN,GAAM,EAC3DU,EAAiByvE,GAAQl0H,KAAKc,SAArC+L,MACFmpH,EAAe10H,mBAAQ,WAC3B,IAAM20H,EAAgBxxE,EACnB9iD,QAAO,SAACwU,GAAD,OAAOA,EAAE+/G,sBAChBvxH,KAAI,SAACwR,GAAD,OAAOA,EAAE/X,MACV+3H,EAAeryH,IAAE4N,KAAKqyC,EAASp/C,KAAI,SAACO,GAAD,OAAOA,EAAE0qH,kBAElD,OADgB9rH,IAAEyK,WAAW0nH,EAAeE,KAE3C,CAAC1xE,EAAcV,IATwD,EAWnBsrE,KAXmB,mBAWnEF,EAXmE,KAWrDwD,EAXqD,KAWlCnD,EAXkC,KAa1E,OACE,uCACE,eAACtwH,GAAA,EAAKO,MAAN,CACErB,GAAG,qBACHJ,MAAM,yBACNmiE,SAAwB,OAAfw1D,QAAe,IAAfA,OAAA,EAAAA,EAAiBG,sBAAsB,EAChD9vH,SAAU0N,EACVzO,SAAU,SAACC,GACT,IAAMkxH,EAAsBlxH,EAAEC,OAAOg7D,QAC/Bk2D,EAAgB,kBACpBt+D,EAAO,2BACF49D,GADC,IAEJG,mBAAoBM,MAGpBA,EACF5G,EAAY,CACVlpH,MAAM,gBAAD,cAAkBqvH,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAiB92F,OAAnC,KACL1zB,QACE,eAAChM,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACG42H,EAAav5G,OAAS,EACrB,eAACtd,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAAC0Y,GAAA,EAAD,CAAO3X,QAAQ,UAAf,UACE,uEAEA,8BACG61H,EAAarxH,KAAI,SAACwR,EAAG4W,GAAJ,OAChB,qBACE5sB,QAAQ,UADV,SAIE,eAAC,GAAQH,KAAK6F,YAAd,CAA0BzH,GAAI+X,KAJhC,wBAEwB4W,gBAShC,KACJ,eAAC5tB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,2CAKdgwH,QAAS,CACP,CACEpxH,MAAO,WACPoC,QAASi2H,EACTl2H,QAAS,WAEX,CACEnC,MAAO,SACPmC,QAAS,gBAIZk2H,OAGT,eAAClH,EAAD,eAAkBwD,OC/JT,SAAS2D,KAAoB,IAAD,EACb/yH,qBADa,mBAClC2gD,EADkC,KAC1BqyE,EAD0B,KAEnCzjH,EAAOC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAC/C,OACE,eAACs8B,GAAD,CAAM9oC,MAAK,sBAAyBipC,WAAY,eAACqlF,GAAD,IAAhD,SACE,gBAAC11H,GAAA,EAAD,WACE,eAAC,GAAQw1H,KAAK90H,OAAd,CACEiC,MAAOqiD,EACPx/C,OAAQ,CAAEm6B,OAAQ/rB,EAAMwlC,OAAQ,QAChCt6C,MAAM,yBACNiH,SAAU,SAACi/C,GAAD,OAAYqyE,EAAUryE,MAElC,eAAC,iBAAD,CAAe3jD,GAAE,0BAAqB2jD,GAAtC,SACE,eAAChkD,EAAA,EAAD,CAAQ8F,UAAWk+C,EAAnB,yBCXK,SAASsyE,KAAmB,IACnCzjE,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,EAAL,cAAjB,SACE,eAAC2iE,GAAD,MAEF,eAAC,KAAD,CAAOx3B,OAAK,EAACnrC,KAAI,UAAKA,EAAL,UAAjB,SACE,eAACujE,GAAD,MAEF,eAAC,KAAD,CAAOp4B,OAAK,EAACnrC,KAAI,UAAKA,EAAL,kBAAjB,SACE,eAAC8hE,GAAD,MAEF,eAAC,KAAD,CAAO32B,OAAK,EAACnrC,KAAI,UAAKA,EAAL,cAAjB,SACE,eAAC+hE,GAAD,MAEF,eAAC,KAAD,CAAO52B,OAAK,EAACnrC,KAAI,UAAKA,EAAL,eAAjB,SACE,eAACiiE,GAAD,MAEF,eAAC,KAAD,CAAO92B,OAAK,EAACnrC,KAAI,UAAKA,EAAL,WAAjB,SACE,eAACkiE,GAAD,MAEF,eAAC,KAAD,CAAO/2B,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACgiE,GAAD,SC1BR,SAAS0B,GAAT,GAKI,IAAD,IAJDn8F,YAIC,MAJM,GAIN,MAHDn5B,cAGC,MAHQ,CAAC,WAAY,OAAQ,cAAe,UAG5C,MAFDynB,mBAEC,MAFa,CAAExqB,GAAI,WAAYmoB,MAAM,GAErC,EADEnlB,EACF,gDACKC,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,OACRC,SAAU,WACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAGzD,CACEzD,GAAI,MACJmD,OAAQ,MACRC,SAAU,KACV6V,gBAAgB,GAElB,CACEjZ,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACV6V,gBAAgB,GAElB,CACEjZ,GAAI,OACJmD,OAAQ,OACR8V,gBAAgB,EAChB5V,OAAQS,KACRP,OAAQ,SACRH,SAAU,SAACi0F,GAAD,OAAS3xF,IAAEqqB,UAAUsnE,EAAIx7D,eACnCr4B,KAAM,YAAwC,IAApB6zF,EAAmB,EAApC1zF,IAAOC,SAAiBH,EAAY,EAAZA,MAC/B,cAAQ4zF,QAAR,IAAQA,OAAR,EAAQA,EAAKx7D,cACX,IAAK,YACH,OACE,eAAC,OAAD,CACEz6B,UAAU,uBACVe,GAAI,CAAEC,SAAU,aAAei1F,EAAIr3F,IAFrC,wCAOJ,IAAK,eACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,0BAA4Bi1F,EAAIr3F,IAFlD,kCAOJ,IAAK,cACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,yBAA2Bi1F,EAAIr3F,IAFjD,0BAOJ,IAAK,iBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,4BAA8Bi1F,EAAIr3F,IAFpD,6BAOJ,IAAK,0BACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CACFC,SAAU,uCAAyCi1F,EAAIr3F,IAH3D,wCASJ,IAAK,cACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,yBAA2Bi1F,EAAIr3F,IAFjD,iCAOJ,IAAK,kBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CACFC,SAAU,uCAAyCi1F,EAAIr3F,IAH3D,+BASJ,IAAK,mBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,8BAAgCi1F,EAAIr3F,IAFtD,+BAOJ,IAAK,oBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,+BAAiCi1F,EAAIr3F,IAFvD,gCAOJ,IAAK,eACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,0BAA4Bi1F,EAAIr3F,IAFlD,kCAOJ,IAAK,iBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,4BAA8Bi1F,EAAIr3F,IAFpD,oCAOJ,IAAK,mBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,iCAAmCi1F,EAAIr3F,IAFzD,yCAOJ,IAAK,uBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CACFC,SAAU,mCAAqCi1F,EAAIr3F,IAHvD,oCASJ,IAAK,WACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,qBAAuBi1F,EAAIr3F,IAF7C,6BAOJ,IAAK,gBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,2BAA6Bi1F,EAAIr3F,IAFnD,mCAOJ,IAAK,kBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,6BAA+Bi1F,EAAIr3F,IAFrD,qCAOJ,IAAK,cACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,0BAA4Bi1F,EAAIr3F,IAFlD,kCAOJ,IAAK,WACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,gBAAkBi1F,EAAIr3F,IAFxC,qDAOJ,IAAK,aACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,yBAA2Bi1F,EAAIr3F,IAFjD,iCAOJ,IAAK,eACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,0BAA4Bi1F,EAAIr3F,IAFlD,kCAOJ,IAAK,cACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CAAEC,SAAU,yBAA2Bi1F,EAAIr3F,IAFjD,iCAOJ,IAAK,iBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CACFC,SAAU,oCAAsCi1F,EAAIr3F,IAHxD,4CASJ,IAAK,iBACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CACFC,SAAU,8BAAgCi1F,EAAIr3F,IAHlD,+BASJ,IAAK,cACH,OACE,eAAC,OAAD,CACEoB,UAAU,uBACVe,GAAI,CACFC,SAAU,yBAA2Bi1F,EAAIr3F,IAH7C,0BASJ,QACE,OAAOyD,KAIf,CACEzD,GAAI,SACJmD,OAAQ,SACRE,OAAQS,KACRP,OAAQ,OACRH,SAAU,SAAC2U,GACT,OAAQA,EAAEmiC,QACR,IAAK,IACH,MAAO,UACT,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,SACT,IAAK,IACH,MAAO,YACT,QACE,MAAO,UAAYniC,EAAEmiC,aAK/B,IAGF,OACE,eAACn5C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,aACEoB,UAAQ,EACR0pB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLxI,MAAM,OACNqD,QAASA,EACTunB,YAAaA,EACbznB,OAAQA,EACRiB,KAAMk4B,EACNnR,iBAAe,GACX/nB,YASH+B,WAAMsxB,KAAKgiG,ICxTXC,GAbkBv5H,aAAkB,CACjDC,OAAQ,CACNU,KAAM,MACN8C,UAAW80F,EACXppF,SANiB,SAAC3L,GAAD,OAAWA,EAAM05B,SAASC,OAQ7Ch9B,QAAS,CAAE0O,QAASgqF,EAAY57D,QAASvpB,MAAOmlF,EAAYr7D,WAC5D3M,OAAQ,CACN/mB,IAAK,UACLpF,MAAO,MATHrE,YCOR,SAASm5H,GAAT,GAKI,IAAD,IAJDv7F,qBAIC,MAJe,GAIf,MAHDj6B,cAGC,MAHQ,CAAC,WAAY,UAAW,WAGhC,MAFDynB,mBAEC,MAFa,CAAExqB,GAAI,WAAYmoB,MAAM,GAErC,EADEnlB,EACF,yDACKC,EAAU8B,IAAM7B,SACpB,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,OACRC,SAAU,iBACV6V,gBAAgB,EAEhBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAOy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAGzD,CACEzD,GAAI,OACJmD,OAAQ,OACR8V,gBAAgB,EAChB5V,OAAQS,KACRP,OAAQ,SACRH,SAAU,SAAC2U,GACT,OAAQA,EAAEygH,mBACR,IAAK,KACH,MAAO,WACT,IAAK,MACH,MAAO,OACT,IAAK,MACH,MAAO,OACT,IAAK,MACH,MAAO,YACT,QACE,MAAO,UAAYzgH,EAAEygH,qBAI7B,CACEx4H,GAAI,UACJmD,OAAQ,UACRE,OAAQC,KACRC,OAAQ,OACRH,SAAU,UACVI,KAAM,SAAC0R,GAAD,OACH,SAAUA,GAAI,IAAD,IACZ,OACE,eAAC,OAAD,CACE9T,UAAU,uBACVe,GAAI,CAAEC,SAAS,GAAD,cAAK8S,QAAL,IAAKA,GAAL,UAAKA,EAAGvR,WAAR,iBAAK,EAAQC,gBAAb,aAAK,EAAkBgnE,OAFvC,SAQG11D,EAAEzR,QAVR,CAaEyR,KAEP,CACE/R,OAAQ,QACRnD,GAAI,UACJoD,SAAU,UAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SAAC2U,GACT,OAAIA,EAAE0kG,KACG,SAEA,IAGXp5G,OAAQS,KACRP,OAAQ,aAGZ,IAGF,OACE,eAACxC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,aACEoB,UAAQ,EACR0pB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLxI,MAAM,gBACNqD,QAASA,EACTunB,YAAaA,EACbznB,OAAQA,EACRiB,KAAMg5B,EACNjS,iBAAe,EACfF,YAAa,SAAClnB,GAAS,IAAD,EACpB,UAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAKC,gBAAT,aAAI,EAAe64G,KACjB,MAAO,CAAEr7G,UAAW,qBAGpB4B,YASH+B,WAAMsxB,KAAKkiG,IC5GXE,GAhB2B15H,aAAkB,CAC1DC,OAAQ,CACNU,KAAM,eACN8C,UAAWk2H,GACXxqH,SAN0B,SAAC3L,GAAD,OAAWA,EAAM05B,SAASe,gBAQtD99B,QAAS,CACP0O,QAAS+qH,GAAqB57F,iBAC9BtqB,MAAOkmH,GAAqBv7F,oBAE9BxN,OAAQ,CACN/mB,IAAK,UACLpF,MAAO,KAZHrE,YCUO,SAASw5H,KACtB,OACE,eAAC5nF,GAAD,CAAM9oC,MAAM,OAAOkpC,iBAAiB,EAAOD,YAAY,EAAvD,SACE,gBAACklC,GAAA,EAAI3kC,UAAL,CAAe0kC,iBAAkB,WAAYyiD,cAAY,EAAzD,UACE,eAAC93H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,gBAACi1F,GAAA,EAAD,CAAKn0F,QAAQ,QAAQX,UAAU,WAA/B,UACE,eAAC80F,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,WAAnB,wBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,gBAAnB,6BAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,WAAnB,wBAEF,eAAC4f,GAAA,EAAIz8E,KAAL,UACE,eAACy8E,GAAA,EAAIjyF,KAAL,CAAUqyE,SAAS,OAAnB,2BAKR,eAACv1E,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAT,SACE,sBAAKG,UAAU,yBAGnB,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACq1E,GAAA,EAAI3D,QAAL,CAAatxE,UAAW,OAAxB,UACE,eAACi1E,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,WAAnB,SACE,eAACwiD,GAAD,MAEF,eAACziD,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,gBAAnB,SACE,eAACyiD,GAAD,MAEF,eAAC1iD,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,WAAnB,SACE,eAAC0iD,GAAD,MAEF,eAAC3iD,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,OAAnB,SACE,eAAC2iD,GAAD,kBAUhB,SAASH,KAAe,IAAD,EACGnkH,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAC/Ci+F,EAAY,GAKZqmB,EAAa,CACjBl5H,GARmB,EACbka,MAQNxa,KATmB,EACNA,MAaf,OAHAmzG,EAAU/0F,KARc,CACtB9d,GAAI,sEACJN,KAAM,qBAORmzG,EAAU/0F,KAAKo7G,GAGb,uCACE,wBACA,eAACvmB,GAAD,CAAoBE,UAAWA,EAAWC,YAAY,IAAU,OAKtE,SAASimB,KAAmB,IAAD,EAMrBN,KAJQz7F,EAFa,EAEvB/qB,SACSknH,EAHc,EAGvB3pH,QACSutB,EAJc,EAIvBnvB,QACYwrH,EALW,EAKvBrnH,WAGF,OACE,eAAC,GAAD,CACEirB,cAAeA,EACf1nB,UAAW6jH,EACX7tG,UAAW,WACTyR,KAEFxR,aACE,WAAa4F,IAAOioG,GAAyBjqD,UAAY,YAMjE,SAAS6pD,KAAe,IAAD,EAMjB15D,KAJQ9hC,EAFS,EAEnBvrB,SACSonH,EAHU,EAGnB7pH,QACS+tB,EAJU,EAInB3vB,QACY0rH,EALO,EAKnBvnH,WAGIgjF,EAAgBrvF,IAAEi6D,OACtBj6D,IAAEk6D,QAAQl6D,IAAEoP,OAAO0oB,EAAc,cACjC,SAACr0B,GAAD,OAAOA,EAAEuY,OAASvY,EAAEN,IAAMM,EAAEowH,kBAG9B,OACE,eAAC/c,GAAD,CACEh/E,aAAcu3D,EACdz/E,UAAW+jH,EACX/tG,UAAW,WACTiS,KAEFhS,aACE,WAAa4F,IAAOmoG,GAAwBnqD,UAAY,YAMhE,SAAS8pD,KAAW,IAAD,EAC8BX,GAAQ,CACrD38G,QAAQ,IADFugB,EADS,EACTA,KAAM1sB,EADG,EACHA,QAAS5B,EADN,EACMA,QAASmE,EADf,EACeA,WAQhC,OAJA+J,qBAAU,WACRlO,MACC,CAACA,IAGF,eAAC,GAAD,CACEsuB,KAAMA,EACN5mB,UAAW9F,EACX8b,UAAW,WACT1d,KAEF2d,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,YCnJjD,SAASqqD,GAAT,GAA2C,IAAbt3H,EAAY,EAAZA,SAC3C,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,YAAnB,2BACA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,mCAAnB,oCAGA,eAACktG,GAAD,CAAgBltG,GAAG,uCAAnB,sCAGA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,yBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,6BAAnB,6BAGA,sBAAKf,UAAU,qBACdc,KCjBQ,SAASu3H,KACtB,OACE,+BACE,eAACzoF,GAAD,CACE9oC,MAAM,qBACNipC,WAAY,eAACqoF,GAAD,QCDL,SAASE,KACtB,IAAM15H,EAAKiyC,eAAYjyC,GAAGwW,cADqB,EAEIk1F,GAAmBjpG,OAAO,CAC3EzC,GAAIA,EACJ2b,QAAQ,IAFFgrC,EAFuC,EAEvCA,mBAAoBn3C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMNsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA9DitB,EANuC,EAMvCA,oBAAqB9oB,EANkB,EAMlBA,QAE7B,OAAM8oB,GAAuB9oB,EAU3B,eAACi4B,GAAD,CAAM9oC,MAAM,uBAAuBipC,WAAY,eAACqoF,GAAD,IAA/C,SACG7yE,EACC,uCACE,eAAC,GAAmBxiD,OAApB,CACEC,OAAQuiD,EACRjmD,OAAO,EACP4U,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQ7/C,OAGxB,oEAtBF,eAAC3V,GAAD,CACE9oC,MAAM,uBACNipC,WAAY,eAACqoF,GAAD,IACZtoF,KAAK,2CCfE,SAASyoF,KAA2B,IAAD,EACpBx0H,oBAAS,GADW,mBACzC42C,EADyC,KACjCjhB,EADiC,OAEC4wE,GAAmBhpG,OAAO,CACzEiZ,QAAQ,IADF+qC,EAFwC,EAExCA,qBAAsBl3C,EAFkB,EAElBA,QAASiD,EAFS,EAETA,MAGjCzO,EAAOd,mBACX,kBAAMwjD,EAAqBnjD,QAAO,SAACuD,GAAD,OAAOA,EAAEgU,cAAgBihC,OAC3D,CAACA,EAAQ2K,IAEX,OACE,gBAAC1V,GAAD,CAAM9oC,MAAM,yBAAyBipC,WAAY,eAACqoF,GAAD,IAAjD,UACE,gBAACntF,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAmBd,MAApB,CACE+jD,qBAAsB1iD,EACtBwmB,YAAa,CAAExqB,GAAI,mBACnBsV,UAAW9F,EACX8b,UAAW7Y,OCrCJ,SAASmnH,KAAyB,IACvCzqH,EAAcu8F,GAAmBjpG,SAAjC0M,UADsC,EAEtBi/C,KAAfE,EAFqC,sBAIL35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA9DitB,EAJsC,EAItCA,oBAAqB9oB,EAJiB,EAIjBA,QAE7B,OAAM8oB,GAAuB9oB,EAU3B,eAACi4B,GAAD,CAAM9oC,MAAO,uBAAwBipC,WAAY,eAACqoF,GAAD,IAAjD,SACE,eAAC,GAAmBr1H,OAApB,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACsiD,GAAD,OACRx3C,EAAUw3C,GAAoBl6C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACjCsuD,EAAY,oCAAD,OAAqCtuD,EAAGwW,wBAdzD,eAACw6B,GAAD,CACE9oC,MAAM,2BACNipC,WAAY,eAACqoF,GAAD,IACZtoF,KAAK,2CCZE,SAAS2oF,KAA6B,IAC7CllE,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAACilE,GAAD,MAEF,eAAC,KAAD,CAAOjlE,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACglE,GAAD,SChBR,IAUeG,GAVC,CAMd5tB,WAAYA,GACZR,mBAAoBA,ICAP,SAASquB,KACtB,IAAM/5H,EAAKiyC,eAAYjyC,GAAGwW,cADa,EAEIsjH,GAAQ5tB,WAAWzpG,OAAO,CACnEzC,GAAIA,EACJ2b,QAAQ,IAFForC,EAF+B,EAE/BA,WAAYv3C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMEsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA9DitB,EAN+B,EAM/BA,oBAAqB9oB,EANU,EAMVA,QAE7B,OAAM8oB,GAAuB9oB,EAU3B,eAACi4B,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAACqoF,GAAD,IAAtC,SACGzyE,EACC,uCACE,eAAC,GAAW5iD,OAAZ,CACEzD,OAAO,EACP0D,OAAQ2iD,EACRzxC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQz/C,OAGxB,kEAtBF,eAAC/V,GAAD,CACE9oC,MAAM,cACNipC,WAAY,eAACqoF,GAAD,IACZtoF,KAAK,2CChBE,SAAS8oF,KAAmB,IAAD,EACZ70H,oBAAS,GADG,mBACjC42C,EADiC,KACzBjhB,EADyB,OAEAoxE,GAAWxpG,OAAO,CACxDiZ,QAAQ,IADFmrC,EAFgC,EAEhCA,YAAat3C,EAFmB,EAEnBA,QAASiD,EAFU,EAEVA,MAGxBzO,EAAOd,mBACX,kBAAM4jD,EAAYvjD,QAAO,SAACuD,GAAD,OAAOA,EAAEgU,cAAgBihC,OAClD,CAACA,EAAQ+K,IAEX,OACE,gBAAC9V,GAAD,CAAM9oC,MAAM,eAAeipC,WAAY,eAACqoF,GAAD,IAAvC,UACE,gBAACntF,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAWd,MAAZ,CACEmkD,YAAa9iD,EACbwmB,YAAa,CAAExqB,GAAI,eACnBsV,UAAW9F,EACX8b,UAAW7Y,OCrCJ,SAASwnH,KAAiB,IAC/B9qH,EAAc+8F,GAAWzpG,SAAzB0M,UAD8B,EAEdi/C,KAAfE,EAF6B,sBAIG35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA9DitB,EAJ8B,EAI9BA,oBAAqB9oB,EAJS,EAITA,QAE7B,OAAM8oB,GAAuB9oB,EAU3B,eAACi4B,GAAD,CAAM9oC,MAAO,kBAAmBipC,WAAY,eAACqoF,GAAD,IAA5C,SACE,eAAC,GAAWr1H,OAAZ,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAAC0iD,GAAD,OACR53C,EAAU43C,GAAYt6C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACzBsuD,EAAY,0BAAD,OAA2BtuD,YAd5C,eAACgxC,GAAD,CACE9oC,MAAM,kBACNipC,WAAY,eAACqoF,GAAD,IACZtoF,KAAK,2CCZE,SAASgpF,KAAoB,IACpCvlE,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAACslE,GAAD,MAEF,eAAC,KAAD,CAAOtlE,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOmrC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACqlE,GAAD,SCZO,SAASG,KAAmB,IACnCxlE,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,2BAAX,SACE,eAACklE,GAAD,MAEF,eAAC,KAAD,CAAOllE,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACulE,GAAD,MAEF,eAAC,KAAD,CAAOp6B,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC8kE,GAAD,SCbO,SAASW,GAAT,GAOX,IANFl7F,EAMC,EANDA,QACA+R,EAKC,EALDA,QACAC,EAIC,EAJDA,KACA57B,EAGC,EAHDA,UACApT,EAEC,EAFDA,SACAivC,EACC,EADDA,WAEMjpC,EAAQg3B,EAAO,UAAM+R,EAAN,aAAkB/R,EAAQ6hB,UAAa9P,EAEtD0lE,EAAQzlE,KAEH,OAAPhS,QAAO,IAAPA,OAAA,EAAAA,EAAS6hB,UAAT,OACF7hB,QADE,IACFA,OADE,EACFA,EAAS6hB,SACPzrC,EACF,eAAC,KAAD,IAEA,IAEF,OACE,eAAC07B,GAAD,CAAM9oC,MAAOA,EAAO+oC,QAASA,EAASC,KAAMylE,EAAOxlE,WAAYA,EAA/D,SACGjvC,ICrBQ,SAASm4H,GAAT,GAA0C,IAAbn4H,EAAY,EAAZA,SAC1C,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,YAAnB,sBACA,eAACktG,GAAD,CAAgBltG,GAAG,gBAAnB,yBACA,sBAAKf,UAAU,qBACdc,KCNQ,SAASo4H,GAAT,GAAwC,IAAPt6H,EAAM,EAANA,GAC9C,OACE,gBAACq6H,GAAD,WACE,eAAChrB,GAAD,CACEjuG,UAAU,mBACVe,GAAE,oBAAenC,GAFnB,2BAGaA,KACb,eAACqvG,GAAD,CAAgBltG,GAAE,oBAAenC,EAAf,SAAlB,kBACA,eAACqvG,GAAD,CAAgBltG,GAAE,oBAAenC,EAAf,SAAlB,kBACA,eAACqvG,GAAD,CAAgBltG,GAAE,oBAAenC,EAAf,QAAlB,oBCNS,SAASu6H,KACtB,IAAMv6H,EAAKgyC,SAASC,eAAYjyC,IADI,EAEIyjE,GAAQhhE,OAAO,CAAEzC,OAAjDk/B,EAF4B,EAE5BA,QAAS1vB,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAGVlK,mBAAS,MAHC,mBAG7B2H,EAH6B,KAGtB4jB,EAHsB,KAKpC,OACE,eAAC0pG,GAAD,CACEl7F,QAASA,EACT+R,QAAO,uBAAkBjxC,GACzBkxC,KAAM1hC,EAAU,aAAe,KAC/B8F,UAAW9F,EACX2hC,WAAY,eAACmpF,GAAD,CAAuBt6H,GAAIA,IALzC,SAOGk/B,IAAY1vB,EACX,eAAC,GAAQrL,OAAT,CACE+6B,QAASA,EACT76B,SAAU,SAACm2H,GACTnrH,EAAUmrH,EAAiBtmD,GAAGxQ,cAAc72D,OAAM,SAAC0uD,GAAD,OAChD7qC,EAAQ,OAAC6qC,QAAD,IAACA,OAAD,EAACA,EAAKxuD,aAGlBD,MAAOA,IAEP,OCjBK,SAAS2tH,KAAgB,IAAD,EACU3mF,eAAvC70B,EAD6B,EAC7BA,SAAmBy7G,EADU,EACnBlrH,QAEZjM,EAASoR,aACb,SAACpS,GAAD,OAAWA,EAAM4L,SAASA,SAAS5K,SACnCiwE,KALmC,EAQnC/P,GAAQz2B,UAAU,CAChBzpC,SACAk7D,QAAS/4D,IAAE6E,QAAQhH,IAAWm3H,IAH1BvsH,EAP6B,EAO7BA,SAAUqB,EAPmB,EAOnBA,QAAS6b,EAPU,EAOVA,QAASD,EAPC,EAODA,QAAS3Y,EAPR,EAOQA,MAAOV,EAPf,EAOeA,WAM9C3I,EAAW0O,cAuBjB,OArBAgE,qBAAU,WACR,GAAIpW,IAAE6E,QAAQhH,KAAYmC,IAAEoN,YAAYmM,KAAcy7G,EAAiB,CAAC,IAEpEC,EAIE17G,EAJF07G,mBACAC,EAGE37G,EAHF27G,sBACAC,EAEE57G,EAFF47G,wBACAC,EACE77G,EADF67G,qBAEIC,EAAgB,CACpBzyF,SAAU,UACV0yB,OAAQ2/D,EAAqB,CAACA,GAAsB,GACpD57E,gBAAiB67E,EAAwB,CAACA,GAAyB,GACnE3/D,UAAW4/D,EAA0B,CAACA,GAA2B,GACjEnsH,OAAQosH,EAAuB,CAACA,GAAwB,IAE1D1xH,EAASq6D,GAAQvkE,QAAQqhD,UAAUw6E,OAEpC,CAACx3H,EAAQ0b,EAAUy7G,EAAiBtxH,IAEvCoxB,EAA2B,MAGzB,eAACwW,GAAD,CACE9oC,MAAM,WACNgpC,KAAM2qB,GAAct4D,GACpB4tC,WAAY,eAAC,GAAD,CAAiB5tC,OAAQA,IACrC6tC,iBAAiB,EAJnB,SAME,eAACrwC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAQ2B,MAAT,CACEwL,SAAUA,EACVpL,OAAQ,CACN,KACA,OACA,WACA,QACA,iBACA,YAEFuS,UAAW9F,EACX6b,QAASA,EACTD,QAASA,EACTE,UAAW7Y,EACX8Y,aAAc,WAAa4F,IAAOpf,GAAYo9D,kBAQ1D,SAAS6oC,GAAT,GAAsC,IAAXz0G,EAAU,EAAVA,OACnB6F,EAAW0O,cADkB,MAOX3S,oBAAS,GAPE,mBAO5B0C,EAP4B,KAOtBC,EAPsB,KAQnC,OACE,gBAACuyH,GAAD,WACE,eAACv4H,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,2CACVY,QAAS,kBAAM8F,GAAQ,IACvBI,MAAM,wBAJR,qBAQA,gBAACC,GAAA,EAAD,CAAON,KAAMA,EAAMQ,OAAQ,kBAAMP,GAAQ,IAAzC,UACE,eAACK,GAAA,EAAMhF,OAAP,CAAcmF,aAAW,EAAzB,SACE,eAACH,GAAA,EAAMI,MAAP,sCAEF,eAACJ,GAAA,EAAMK,KAAP,UACE,eAACsyD,GAAD,CAAgB12D,OAAQb,EAAQc,SApBxC,SAAuBd,GACrB6F,EAASq6D,GAAQvkE,QAAQqhD,UAAUh9C,IACnCuE,GAAQ,cChFG,SAAS2zD,KACtB,OACE,eAACzqB,GAAD,CAAM9oC,MAAK,cAAiBipC,WAAY,eAACkpF,GAAD,IAAxC,SACE,eAAC,GAAQzhH,IAAT,MCFS,SAASoiH,GAAT,GAKX,IAJF97F,EAIC,EAJDA,QACAy6B,EAGC,EAHDA,OACArkD,EAEC,EAFDA,UACAhR,EACC,EADDA,WAEA,OACE,eAAC62G,GAAD,CAAiB72G,WAAYA,EAA7B,SACE,eAAC,KAAD,CACED,SAAU,SAACyC,GAAD,OAAO6yD,EAAO7yD,EAAGotE,GAAGxQ,eAC9Bn/D,cAAe26B,EACf16B,OAAQ,CAAEA,OAAQi/D,GAAQj/D,QAH5B,SAKE,eAAC,GAAD,CACE06B,QAASA,EACT5pB,UAAWA,EACXhR,WAAYA,QAOtB,SAASu3G,GAAT,GAAwD,IAAnC38E,EAAkC,EAAlCA,QAAS5pB,EAAyB,EAAzBA,UAAWhR,EAAc,EAAdA,WAKvC,OAJAu2G,aAAmB,CACjBiB,WAAY,IACZC,oBAAoB,IAGpB,mCACE,eAACZ,GAAgBp6G,IAAIi7G,WAArB,CACEh9G,OAAQkgC,EACR5pB,UAAWA,EACXhR,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACErB,KAAK,aACLE,MAAM,WACN6D,MAAO,eAAC,GAAQ0sD,SAAS1oD,YAAlB,CAA8BzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAS2wB,aAClDpuD,GAAIgiE,GAAQtT,SAAS3uD,OACrB8T,UAAWA,EACXhR,WAAYA,EACZumB,YAAa,iBAAO,CAClBzpB,UAAWqiE,GAAQE,qBAAqBzkC,OAG5C,eAACi8E,GAAgBp6G,IAAjB,CACErB,KAAK,SACLE,MAAM,OACN6D,MAAO,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAS0gB,SAC9Cn+C,GAAIgiE,GAAQ7hE,KAAKJ,OACjB8T,UAAWA,EACXhR,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACErB,KAAK,WACLE,MAAM,SACN6D,MAAO,eAAC,GAAQ6yD,OAAO7uD,YAAhB,CAA4BzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAASy2B,WAChDl0D,GAAIgiE,GAAQnN,OAAO90D,OACnB8T,UAAWA,EACXhR,WAAYA,IAEd,eAAC62G,GAAgBp6G,IAAjB,CACErB,KAAK,mBACLE,MAAM,WACN6D,MACE,eAAC,GAAQ4rD,eAAe5nD,YAAxB,CAAoCzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAS82B,mBAEnDv0D,GAAIgiE,GAAQpU,eAAe7tD,OAC3B8T,UAAWA,EACXhR,WAAYA,OCtDpB,IAAMszG,GAAoB,CACxBntC,OAAQ4sC,IAGK,SAAS4jB,KAAe,IAAD,EAC9Bj7H,EAAKgyC,SAASC,eAAYjyC,IADI,EAYhCyjE,GAAQhhE,OAAO,CAAEzC,KAAIg/C,aAAa,EAAMqP,UAAU,IATpDnvB,EAHkC,EAGlCA,QACS5pB,EAJyB,EAIlC9F,QACAH,EALkC,EAKlCA,UACAisD,EANkC,EAMlCA,WACArtB,EAPkC,EAOlCA,cACAE,EARkC,EAQlCA,cACAxD,EATkC,EASlCA,iBACA54B,EAVkC,EAUlCA,WACAsuC,EAXkC,EAWlCA,YAGIgQ,GACG,OAAPnxB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,oBAAoD,aAAxB,OAAPlgB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,mBAIzC,GAFA5kB,EAA2B,OAET,IAAdllB,IAAwB4pB,EAC1B,OACE,eAACk7F,GAAD,CACEnpF,QAAO,kBAAajxC,GAAU,IAC9BkxC,KAAK,kBACLC,WAAY,eAACkpF,GAAD,MAIlB,IAAMx2D,EAAsBvuD,GAAa5P,IAAE6E,QAAQ20B,GAEnD,OACE,gBAACk7F,GAAD,CACEl7F,QAASA,EACT+R,QAAO,kBAAajxC,GACpBmxC,WAAY,eAACmpF,GAAD,CAAuBt6H,GAAIA,IACvCsV,UAAWuuD,EAJb,UAME,eAAC,GAAD,CACE3kC,QAASA,EACT5pB,UAAWA,EACX+6C,YAAaA,EACbsJ,OAAQtqD,EACRs7B,iBAAkBA,EAClB2wB,WAAYA,EACZvpD,WAAYA,EACZsuC,YAAaA,IAEf,eAAC,GAASxD,sBAAV,CACEpe,UAAS,OAAES,QAAF,IAAEA,GAAF,UAAEA,EAAST,iBAAX,aAAE,EAAoBl4B,KAAI,SAACoa,GAClC,OAAOA,EAAE7R,cAEXwG,UAAWuuD,IAEb,eAACtzB,GAAD,CAAeroC,MAAM,MAArB,SACE,gBAACnH,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAK+Y,GAAI,EAAGD,GAAI,GAAI1Y,UAAU,eAA9B,SACE,eAAC,GAAGuB,MAAJ,CACEyhC,IAAG,OAAElF,QAAF,IAAEA,OAAF,EAAEA,EAASkF,IACd9uB,UAAWuuD,EACX9gE,OAAQ,CAAC,KAAM,WAAY,QAAS,kBACpC6nB,cAAe,EACf9nB,WAAY80G,OAGhB,gBAAC52G,EAAA,EAAD,CAAKC,GAAI,EAAT,UACE,eAAC,iBAAD,CAAekB,GAAE,2BAAsBnC,GAAvC,SACE,eAAC8B,EAAA,EAAD,CACEC,QAAQ,UACRi1D,OAAK,EACLpvD,SACqB,WAAZ,OAAPs3B,QAAO,IAAPA,OAAA,EAAAA,EAASn/B,QACa,QAAf,OAAPm/B,QAAO,IAAPA,OAAA,EAAAA,EAAS2hB,WACTvrC,EANJ,sBAYF,eAACxU,GAAA,EAAKoF,KAAN,CAAW9E,UAAU,aAArB,SACyB,QAAf,OAAP89B,QAAO,IAAPA,OAAA,EAAAA,EAAS2hB,UAAoB,oBAAsB,YA1B7B,eA+B/B,gBAACtQ,GAAD,CAAeroC,MAAM,WAArB,UACE,eAACnH,EAAA,EAAD,CAAKK,UAAU,+CAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC0kE,GAAYx/D,KAAb,CACElG,GAAE,yBAAak/B,QAAb,IAAaA,OAAb,EAAaA,EAASl/B,GAAtB,cACF+mE,OAAQ,SAACtjE,GAAD,OAAW4L,EAAU,CAAEumD,SAAUnyD,KACzCa,WAAY+rD,EACZ/6C,UAAWA,EACXw7B,OAAO,YACP7iB,KAAI,OAAEiR,QAAF,IAAEA,OAAF,EAAEA,EAAS02B,SACfkR,UAAW,QAIjB,eAAC/lE,EAAA,EAAD,CAAKK,UAAU,4CAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC0kE,GAAYx/D,KAAb,CACElG,GAAE,yBAAak/B,QAAb,IAAaA,OAAb,EAAaA,EAASl/B,GAAtB,mBACF+mE,OAAQ,SAACtjE,GAAD,OAAW4L,EAAU,CAAE+sG,cAAe34G,KAC9Ca,WAAY+rD,EACZ/6C,UAAWA,EACXw7B,OAAO,iBACP7iB,KAAI,OAAEiR,QAAF,IAAEA,OAAF,EAAEA,EAASk9E,cACft1C,UAAW,QAKjB,eAAC2yC,GAAD,CACEz5G,GAAE,kBAAaA,EAAb,aACFinG,SAAQ,OAAE/nE,QAAF,IAAEA,OAAF,EAAEA,EAAS+nE,SACnB3xF,UAAWA,EACX7J,OAAQwiC,EACR0rB,OAAQxrB,MAjCwB,uBAwC1C,SAAS2D,GAAT,GASI,IARF5S,EAQC,EARDA,QACA5pB,EAOC,EAPDA,UACA+6C,EAMC,EANDA,YACAsJ,EAKC,EALDA,OACAhvB,EAIC,EAJDA,iBACA2wB,EAGC,EAHDA,WACAvpD,EAEC,EAFDA,WACAsuC,EACC,EADDA,YAEMwjB,EAAsBvuD,GAAa5P,IAAE6E,QAAQ20B,GAE7C56B,EAAagR,GAAa+6C,EAC1BisD,EAAqBh4G,GAAmC,OAAd,OAAP46B,QAAO,IAAPA,OAAA,EAAAA,EAAS2hB,UAE5Cu3D,EAAcl1G,mBAClB,+BACEg8B,QADF,IACEA,GADF,UACEA,EAASkF,WADX,aACE,EAAcnX,QACZ,SAACmrF,EAAal5D,GAAd,cAAqBk5D,QAArB,IAAqBA,OAArB,EAAqBA,EAAa7kG,OAAb,OAAoB2rC,QAApB,IAAoBA,OAApB,EAAoBA,EAAIk5D,gBACtC,OAAPl5E,QAAO,IAAPA,OAAA,EAAAA,EAASk5E,cAAe,MAE5B,CAACl5E,IAGH,OACE,gBAACn+B,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK6Y,GAAI,EAAGk9C,GAAI,GAAI31D,UAAU,eAA9B,UACE,eAAC,GAAQwjE,OAAT,CAAgB1lC,QAASA,IACzB,eAACn+B,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC0kE,GAAD,CAAa50B,OAAO,YAApB,SACE,eAAC,GAAQ8yB,SAAT,CACE1kC,QAASA,EACT5pB,UAAWuuD,EACX7xC,OAAQ,CACNM,QAAQ,WAAD,cAAa4M,QAAb,IAAaA,OAAb,EAAaA,EAASl/B,GAAtB,oBAA6Bk/B,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAS6hB,mBAMvD,eAAChgD,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAAC0kE,GAAYx/D,KAAb,CACElG,GAAE,yBAAak/B,QAAb,IAAaA,OAAb,EAAaA,EAASl/B,GAAtB,gBACF+mE,OACEziE,EAAa,KAAO,SAACb,GAAD,OAAWk2D,EAAO,CAAEljD,YAAahT,KAEvD6R,UAAWA,EACXw7B,OAAO,cACP7iB,KAAI,OAAEiR,QAAF,IAAEA,OAAF,EAAEA,EAASzoB,YACfqwD,UAAW,YAKnB,gBAAC9lE,EAAA,EAAD,CAAK6Y,GAAI,EAAT,UACE,eAAC9Y,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,uBAAMI,UAAU,wBAAhB,SACE,eAACU,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,aACVgH,KAAK,KACLpG,QAAS,kBAAMs5D,KACf1zD,SAAUi8D,EALZ,SAOGvuD,EACG,aACA,WAAa6b,IAAOpf,GAAYo9D,UAAY,kBAKxD,eAACpuE,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,OAAf,SACE,eAAC,GAAQ+iE,aAAT,CACEjlC,QAASA,EACTy6B,OAAQ,SAAC/pD,GAAD,OAAa+pD,EAAO/pD,EAASskE,GAAGxQ,eACxCpuD,UAAWA,EACXhR,WAAYA,EACZ+7C,YAAaA,EACbyiB,gBAAiBo4D,SAIvB,eAACn6H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACg6H,GAAD,CACE97F,QAASA,EACT5pB,UAAWuuD,EACXv/D,WAAYg4G,EACZ3iD,OAAQA,QAId,eAAC54D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,uBAAf,SACGyiE,EAAsB,KACrB,wDACiB3rC,KAAUo1C,gBACvBp1C,KAAU0c,UAAV,OAAoB1V,QAApB,IAAoBA,OAApB,EAAoBA,EAASlvB,iBAFjC,SAIE,eAAC,KAAK/L,KAAN,CAAWjE,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAASq9E,sBAMhC,eAACx7G,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG6iE,EAAsB,KACrB,gBAACx3B,GAAA,EAAD,CAAaziB,UAAQ,EAArB,UACE,eAAC,GAAQ66C,YAAT,CAAqBvlC,QAASA,IAC9B,eAACi6E,GAAD,CACEf,YAAaA,EACb12F,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAQ,OAAEz2B,QAAF,IAAEA,OAAF,EAAEA,EAASl/B,IAC3CyL,OAAQk/B,EACRrmC,WAAYA,EACZuC,SAAUy0D,iBAW5B,SAAS4/D,GAAT,GAA6C,IAAD,IAAXh8F,EAAW,EAAXA,QACzBi8F,EAAmC,KAAlB,OAAPj8F,QAAO,IAAPA,GAAA,UAAAA,EAASkF,WAAT,eAAc/lB,QADY,EAEN61D,GAAGzxE,OAAO,CAC5CzC,GAAIm7H,EAAO,OAAGj8F,QAAH,IAAGA,GAAH,UAAGA,EAASkF,WAAZ,aAAG,EAAe,GAAGpkC,GAAK,KACrCquD,UAAU,IAFJnP,EAFkC,EAElCA,GAAeq4D,EAFmB,EAE9BloG,UAKZ,OAAK8rH,EAGH,eAACp6H,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACE,gBAACF,GAAA,EAAK4G,MAAN,wBAAgBw3C,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAIl/C,GAApB,aACA,eAAC,GAAGmkE,aAAJ,CACEjlC,QAASA,EACTy6B,OAAQ49C,EACRr4D,GAAIA,EACJuwB,WAAY,CACVruE,UAAW,SACXggE,kBAAmB,mBAErBoO,0BAAwB,SAdX,KCxRR,SAAS4rD,KACtB,IAAMp7H,EAAKgyC,SAASC,eAAYjyC,IADO,EAEVyjE,GAAQhhE,OAAO,CAC1CzC,KACAg/C,aAAa,EACbC,aAAa,IAHP/f,EAF+B,EAE/BA,QAAS1vB,EAFsB,EAEtBA,QAMjB,OACE,eAAC4qH,GAAD,CACE32D,QAASvkC,EACT+R,QAAO,kBAAajxC,EAAb,QACPmxC,WAAY,eAACmpF,GAAD,CAAuBt6H,GAAIA,IACvCsV,UAAW9F,EAJb,SAME,eAACgtG,GAAD,CACEh/E,aAAY,OAAE0B,QAAF,IAAEA,OAAF,EAAEA,EAASy9E,KACvBrnG,UAAW9F,EACXzM,OAAQ,CAAC,SAAU,WAAY,SAAU,cAAe,QACxD4nB,eAAgB,CAAE3qB,GAAI,OAAQyD,MAAO,iBACrCgnB,eAAe,aChBR,SAAS4wG,KACtB,IAAMr7H,EAAKgyC,SAASC,eAAYjyC,IADQ,EAEAmF,oBAAS,GAFT,mBAEjCy7G,EAFiC,KAEnBC,EAFmB,OAKtCp9C,GAAQhhE,OAAO,CACbzC,KACAquD,UAAU,EACVrP,aAAa,IAJT9f,EAJgC,EAIhCA,QAAS1vB,EAJuB,EAIvBA,QAASH,EAJc,EAIdA,UAAWisD,EAJG,EAIHA,WAAYvpD,EAJT,EAISA,WAJT,EAUCi/E,GAAKtuF,OAAO,CACnDa,OAAQ,CAAEmY,UAAW1b,GACrBy+D,QAASjvD,IAFHq4C,EAVgC,EAUhCA,MAAgByzE,EAVgB,EAUzB9rH,QAKT6gD,GACG,OAAPnxB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,oBAAoD,aAAxB,OAAPlgB,QAAO,IAAPA,OAAA,EAAAA,EAASkgB,mBAEnCoG,EAAW,CACf+sC,QAAO,OAAErzD,QAAF,IAAEA,OAAF,EAAEA,EAAS42B,gBAClB08B,QAAO,OAAEtzD,QAAF,IAAEA,OAAF,EAAEA,EAAS62B,gBAClBk9B,SAAQ,OAAE/zD,QAAF,IAAEA,OAAF,EAAEA,EAAS2iB,iBACnBqxC,SAAQ,OAAEh0D,QAAF,IAAEA,OAAF,EAAEA,EAAS4iB,iBACnBjmC,KAAI,OAAEqjB,QAAF,IAAEA,OAAF,EAAEA,EAAS6iB,cAEXqwC,EAAS,CACbe,gBAAe,OAAEj0D,QAAF,IAAEA,OAAF,EAAEA,EAAS83E,oBAC1B5jB,gBAAe,OAAEl0D,QAAF,IAAEA,OAAF,EAAEA,EAAS+3E,sBAC1BxyB,cAAa,OAAEvlD,QAAF,IAAEA,OAAF,EAAEA,EAASg4E,oBACxB7jB,aAAY,OAAEn0D,QAAF,IAAEA,OAAF,EAAEA,EAASi4E,uBACvBziF,WAAYhvB,IAAEyvD,IAAI,QAChBj2B,QADgB,IAChBA,OADgB,EAChBA,EAAS83E,oBADO,OAEhB93E,QAFgB,IAEhBA,OAFgB,EAEhBA,EAAS+3E,sBAFO,OAGhB/3E,QAHgB,IAGhBA,OAHgB,EAGhBA,EAASg4E,oBAHO,OAIhBh4E,QAJgB,IAIhBA,OAJgB,EAIhBA,EAASi4E,yBAEXzkB,eAAc,OAAExzD,QAAF,IAAEA,OAAF,EAAEA,EAAS+hF,mBACzBluB,eAAc,OAAE7zD,QAAF,IAAEA,OAAF,EAAEA,EAASgiF,qBACzBtuB,aAAY,OAAE1zD,QAAF,IAAEA,OAAF,EAAEA,EAASiiF,mBACvBnuB,YAAW,OAAE9zD,QAAF,IAAEA,OAAF,EAAEA,EAASkiF,sBACtBrsF,UAAWrvB,IAAEyvD,IAAI,QACfj2B,QADe,IACfA,OADe,EACfA,EAAS+hF,mBADM,OAEf/hF,QAFe,IAEfA,OAFe,EAEfA,EAASiiF,mBAFM,OAGfjiF,QAHe,IAGfA,OAHe,EAGfA,EAASkiF,yBAGb,OACE,gBAACgZ,GAAD,CACEl7F,QAASA,EACT+R,QAAO,kBAAajxC,EAAb,SACPmxC,WAAY,eAACmpF,GAAD,CAAuBt6H,GAAIA,IACvCsV,UAAW9F,EAJb,UAME,eAACzO,EAAA,EAAD,CAAKK,UAAU,sBAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,uBAAMG,UAAU,wBAAhB,SACE,eAACU,EAAA,EAAD,CACEC,QAAQ,OACRX,UAAU,aACVgH,KAAK,KACLpG,QAAS,kBAAMs5D,KACf1zD,SAAU4H,EALZ,SAOGA,EACG,aACA,WAAa2hB,IAAOpf,GAAYo9D,UAAY,kBAKxD,gBAACpuE,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAK8Y,GAAI,GAAIC,GAAI,EAAjB,UACE,eAAC,GAAQ6qD,OAAT,CAAgB1lC,QAASA,IACzB,eAAC,GAAKw6B,cAAN,CACElU,SAAUA,EACV4sC,OAAQA,EACRC,iBACE,eAAC,GAAQhjC,eAAe5nD,YAAxB,CACEzH,GAAE,OAAEk/B,QAAF,IAAEA,OAAF,EAAEA,EAAS82B,mBAGjB1gD,UAAW9F,EACXu3D,OAAQ1W,OAActgD,EAAY,kBAAM8wG,GAAgB,MAE1D,eAAC,GAAQpuF,eAAT,CACEyM,QAASA,EACTr3B,KAAM+4G,EACNv4G,OAAQ,kBAAMw4G,GAAgB,IAC9BlnD,OAAQtqD,EACRuqD,cAAe,kBAAM0B,UAGzB,eAACt6D,EAAA,EAAD,UACE,gBAAC,KAAD,CAASoH,KAAK,KAAd,UACE,mCACE,8BACE,qBAAI8uE,QAAQ,IAAZ,SACE,qBAAI91E,UAAU,cAAd,8BAGJ,gCACE,wBACA,qBAAIA,UAAU,yBAAd,mBACA,qBAAIA,UAAU,yBAAd,wBAIJ,mCACE,gCACE,qBAAIA,UAAU,aAAd,mBACA,qBAAIA,UAAU,yBAAd,SACE,eAAC,KAAD,CACEqC,MAAK,OAAEy7B,QAAF,IAAEA,OAAF,EAAEA,EAASq8F,mBAChB9iE,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,MAGrB,qBAAIx3D,UAAU,yBAAd,SACE,eAAC,KAAD,CACEqC,MAAK,OAAEy7B,QAAF,IAAEA,OAAF,EAAEA,EAASs8F,mBAChB/iE,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,SAIvB,gCACE,qBAAIx3D,UAAU,aAAd,kBACA,qBAAIA,UAAU,yBAAd,SACE,eAAC,KAAD,CACEqC,MAAK,OAAEy7B,QAAF,IAAEA,OAAF,EAAEA,EAASu8F,kBAChBhjE,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,EACjBI,OAAO,QAGX,qBAAI53D,UAAU,yBAAd,SACE,eAAC,KAAD,CACEqC,MAAK,OAAEy7B,QAAF,IAAEA,OAAF,EAAEA,EAASw8F,kBAChBjjE,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,EACjBI,OAAO,sBAQrB,eAACj4D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAK2B,MAAN,CACEklD,MAAOA,EACP9kD,OAAQ,CACN,OACA,OACA,KACA,cACA,aACA,aACA,OACA,SACA,iBAEFynB,YAAa,CAAExqB,GAAI,OAAQmoB,MAAM,GACjC7S,UAAWgmH,WC9KR,SAASK,KAAmB,IACnChnE,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,aAAX,SACE,eAAC4lE,GAAD,MAEF,eAAC,KAAD,CAAO5lE,KAAI,UAAKA,EAAL,aAAX,SACE,eAAC0mE,GAAD,MAEF,eAAC,KAAD,CAAO1mE,KAAI,UAAKA,EAAL,YAAX,SACE,eAACymE,GAAD,MAEF,eAAC,KAAD,CAAOzmE,KAAI,UAAKA,EAAL,QAAX,SACE,eAACsmE,GAAD,MAEF,eAAC,KAAD,CAAOn7B,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC8lE,GAAD,SCpBO,SAASmB,GAAQ54H,GAAQ,IAChC2xD,EAASkrC,eAATlrC,KACAknE,EAAS,aACblnE,QACG3xD,GAEL,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO2xD,KAAI,UAAKA,EAAL,gBAAX,SACE,eAACmnE,GAAD,2BAAoBD,GAApB,IAA+BE,WAAS,OAE1C,eAAC,KAAD,CAAOpnE,KAAI,UAAKA,EAAL,QAAX,SACE,eAACmnE,GAAD,eAAoBD,MAEtB,eAAC,KAAD,UACE,eAACC,GAAD,eAAoBD,SAM5B,SAASC,GAAT,GAUI,IATF5zH,EASC,EATDA,MACA2zB,EAQC,EARDA,aACA84B,EAOC,EAPDA,KAOC,IANDonE,iBAMC,SALDC,EAKC,EALDA,QAKC,IAJDC,sBAIC,MAJgB,GAIhB,EAHDC,EAGC,EAHDA,OACAnrF,EAEC,EAFDA,WACAK,EACC,EADDA,gBAEMjT,EAAQ6T,SAASC,eAAYjyC,IAC7Bwd,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAFtD,EAGkD0iF,GAAO,CACxDp3F,GAAIm+B,EACJtC,aAAcA,EACdwyB,SAAUsG,IAHJ0iC,EAHP,EAGOA,IAAK7nF,EAHZ,EAGYA,QAAS4sB,EAHrB,EAGqBA,UAAWtvB,EAHhC,EAGgCA,MAAOqvB,EAHvC,EAGuCA,OAMxCrgB,qBAAU,aACD,OAAHu7E,QAAG,IAAHA,OAAA,EAAAA,EAAKQ,UAAU,OAACR,QAAD,IAACA,OAAD,EAACA,EAAKr4D,SAAWxvB,GAAS2sB,MAC5C,CAACk7D,EAAKl7D,EAAQ3sB,IAEjB,IAAM2sH,EAAS,iBAAah+F,GAAS,MAAtB,aACbk5D,GACO,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKS,WACH,cACG,OAAHT,QAAG,IAAHA,OAAA,EAAAA,EAAKU,cACL,aADA,WAGK,OAAHV,QAAG,IAAHA,OAAA,EAAAA,EAAKY,WAAY,SAAW,YAH9B,cAIM//D,KAAUo1C,gBAAgBp1C,KAAU0c,UAAV,OAAoByiD,QAApB,IAAoBA,OAApB,EAAoBA,EAAKre,YAC3D,oBAGAojD,EAAkB,CAAEp8H,GAAIm+B,EAAO4S,aAAY4jB,OAAMzsD,SACjD2zH,EAAY,CAChB3zH,MAAM,GAAD,OAAKA,EAAL,aAAei2B,EAAK,UAAMA,EAAN,qBAAiBk5D,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAK5gF,aAAgB,OAC/Dw6B,QAAS/oC,EACTipC,WAAY,eAACkrF,GAAD,eAAmBD,IAC/BhrF,gBAAiBA,GAEnB,OAAKjT,GAAS49F,EAEV,gBAAC/qF,GAAD,2BAAU6qF,GAAV,IAAqB3qF,KAAI,UAAzB,UACE,eAACnwC,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,UACE,iCAAQm9B,EAAQg+F,EAAY,oBAGhC,eAACp7H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACg7H,EAAD,aACE5/F,UAAWA,EACXi7D,IAAKA,GAAO,IACR4kC,YAQd,gBAACjrF,GAAD,2BAAU6qF,GAAV,IAAqB3qF,KAAI,OAAEmmD,QAAF,IAAEA,OAAF,EAAEA,EAAK5gF,YAAhC,UACE,eAAC1V,EAAA,EAAD,CAAKK,UAAU,kBAAf,SACE,eAACJ,EAAA,EAAD,UACE,iCAAQm9B,EAAQg+F,EAAY,oBAGhC,eAACp7H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACGq2F,EACC75E,KAAY,OAAK65E,QAAL,IAAKA,OAAL,EAAKA,EAAK52D,QACpB,eAEA,eAACy7F,EAAD,CACE7kC,IAAKA,EACL/hF,UAAW9F,KAAY,OAAC6nF,QAAD,IAACA,OAAD,EAACA,EAAKQ,WAAU,OAACR,QAAD,IAACA,OAAD,EAACA,EAAKY,cAI5C,OAALnrF,QAAK,IAALA,OAAA,EAAAA,EAAOC,UAAW,iCAQ9B,SAASsvH,GAAT,GAAyD,IAAhCn0H,EAA+B,EAA/BA,MAAOlI,EAAwB,EAAxBA,GAAI+wC,EAAoB,EAApBA,WAAY4jB,EAAQ,EAARA,KAC9C,OACE,gBAAC5jB,EAAD,WACE,eAACs+D,GAAD,CAAgBltG,GAAE,UAAKwyD,GAAvB,SACE,yBAAQzsD,MAAM,aAAd,SAA4BA,MAE7BlI,EACC,CACE,eAACqvG,GAAD,CAAgBltG,GAAE,UAAKwyD,EAAL,YAAa30D,EAAb,YAAlB,oBAAiD,WAGjD,eAACqvG,GAAD,CAAgBltG,GAAE,UAAKwyD,EAAL,YAAa30D,GAA/B,mBAAyC,YAK3C,eAACqvG,GAAD,CAAgBltG,GAAE,UAAKwyD,GAAvB,oBAAmC,cCnI5B,SAAS2nE,GAAT,GAAyC,IAAbp6H,EAAY,EAAZA,SACzC,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,WAAnB,qBACA,sBAAKf,UAAU,qBACdc,KCIQ,SAASq6H,GAAT,GAOX,IANFr6H,EAMC,EANDA,SACAk6B,EAKC,EALDA,UACAi7D,EAIC,EAJDA,IAIC,IAHDttC,UAAWs3C,OAGV,MAHelwE,MAASuH,QAAQ,SAAS7tB,cAGzC,MAFDwgD,QAASi2C,OAER,MAFanwE,MAASguE,MAAM,SAASt0F,cAErC,EADD2K,EACC,EADDA,QAEMgI,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,QAASgnH,OAHV,MAGuB,CACpB/7F,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,GANZ,EASK9/D,EAAqB7sB,aACzB,SAACpS,GAAD,OAAWA,EAAMqS,KAAK4sB,sBAGxB,OACE,eAAC,KAAD,CACEj9B,cAAa,yBACXk8B,OAAQ,GACRspB,UAAW,GACXsB,QAAS,IACNmxE,GACAhnH,GAELyrC,QAAS,CAAEzf,qBAAoBhkB,gBAC/BnZ,SAAU,SAACmR,GACT4mB,EAAU,2BACL5mB,GADI,IAEPu0C,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAY,GAAD,QACF,OAAPjB,QAAO,IAAPA,OAAA,EAAAA,EAASirB,SAAgB,OAAPjrB,QAAO,IAAPA,OAAA,EAAAA,EAASirB,QAAS,IAAM,GADjC,iBAEFrI,KAAM0c,QAAQt/B,EAAQu0C,WAFpB,eAEqC3xB,KAAM0c,QACpDt/B,EAAQ61C,cAId3mD,aAAW,EArBb,SAuBE,eAAC+3H,GAAD,UAAqBv6H,MAK3B,SAASu6H,GAAT,GAA2C,IAAbv6H,EAAY,EAAZA,SAAY,EAIpCtB,eAFFD,EAFsC,EAEtCA,WAFsC,IAGtCsgD,QAAWzf,EAH2B,EAG3BA,mBAAoBhkB,EAHO,EAGPA,aAG3B6tC,EAAUu2C,aAAS,CAAEliG,KAAM,YAC3BqqD,EAAY63C,aAAS,CAAEliG,KAAM,cAEnC,OACE,gBAACoB,GAAA,EAAD,CAAMuD,SAAU1D,EAAhB,UACE,gBAACG,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAW2J,KAAZ,CACElL,KAAK,YACLE,MAAM,aACNk4B,YAAY,EACZD,QAASwzB,MAGb,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,UACLE,MAAM,WACNk4B,YAAY,EACZF,QAASmyB,SAIf,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAWrY,OAAZ,CACE9B,KAAK,SACLE,MAAM,OACN6B,GAAIwa,KAAKza,OACTsgE,MAAO,CACL46D,SAAU,CACRC,QAAS,SAACl5H,GAAD,OACPA,IAAU+Z,GAAgBgkB,KAGhCxnB,aAAW,EACX1V,YAAak9B,QAIlBt/B,EACD,eAACnB,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBCxGK,SAASszH,KACtB,OACE,eAAChB,GAAD,CACE1zH,MAAM,WACN2zB,aAAa,WACbmgG,QAASO,GACTN,eAAgB,CAAElyE,UAAW54B,MAAUk6B,QAASl6B,OAChD+qG,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAah7B,OAAQ,KAAI,CAACqzF,IACrD,OACE,eAACmlB,GAAD,CACEh/E,aAAcx5B,EACdwL,QAAS8F,EACTvS,OAAQ,CAAC,WAAY,cAAe,SAAU,OAAQ,cCtB7C,SAAS85H,GAAT,GAKX,IAJFp5H,EAIC,EAJDA,MAIC,IAHD+L,eAGC,aAFD6E,mBAEC,MAFa,GAEb,EADErR,EACF,kDACK6R,EAAW,CACf,CAAEjV,MAAO,MAAO6D,OAAO,GACvB,CAAE7D,MAAO,KAAM6D,OAAO,IAGpBwR,EAAc,KAGlB,OAFKvP,IAAEu+D,MAAMxgE,KAAQwR,EAAcvP,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAG5D,eAAC0S,GAAA,EAAD,aACEb,UAAW9F,EACX/L,MAAOwR,EACPO,QAASX,EACThT,SAAS,EACTwS,YAAaA,GACTrR,ICPK,SAAS85H,KAAiC,IAAD,EACtBnoH,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAArDmE,EAD8C,EAC9CA,QAER,OAHsD,EACrC5E,YAEG4E,EAUlB,eAAC6iH,GAAD,CACE1zH,MAAM,6BACN2zB,aAAa,kBACbmgG,QAASe,GACTb,OAAQA,GACRnrF,WAAYurF,KAbZ,eAACtrF,GAAD,CACE9oC,MAAM,6BACNgpC,KAAK,2CAgBb,SAASgrF,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,YAAa,KAAI,CAAC44D,IAEpDp0F,EAAUC,mBAAQ,WAAO,IAAD,EACtB87B,EAAS,CACb,CACEh/B,GAAI,WACJmD,OAAQ,WACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASmb,KAAV,CAAe5e,GAAIyD,MAE1C,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQS,KACRP,OAAQ,QAEV,CACEvD,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,uBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,MAGhE,CACE1oB,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,oBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,MAGhE,CACE1oB,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,oBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,MAGhE,CACE1oB,GAAI,YACJmD,OAAQ,YACRC,SAAU,mBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,MAGhE,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,MAGhE,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,OAKlE,aAAI2uE,EAAI7hF,eAAR,aAAI,EAAawnH,UACf,IACE,IAAIr7G,EAAIqwB,SAASqlD,EAAI7hF,QAAQwnH,WAC7Br7G,GAAKqwB,SAASqlD,EAAI7hF,QAAQynH,SAC1Bt7G,IAEAqd,EAAOlhB,KAAK,CACV9d,GAAI,gBAAkB2hB,EACtBxe,OAAQ,gBAAkBwe,EAC1Bve,SAAU,cAAgBue,EAC1BkF,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,OAGhEsW,EAAOlhB,KAAK,CACV9d,GAAI,YAAc2hB,EAClBxe,OAAQ,YAAcwe,EACtBve,SAAU,WAAaue,EACvBkF,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,OAGhEsW,EAAOlhB,KAAK,CACV9d,GAAI,YAAc2hB,EAClBxe,OAAQ,YAAcwe,EACtBve,SAAU,WAAaue,EACvBkF,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,OAIpE,OAAOsW,IACN,CAACq4D,IAEJ,OACE,qCACE,eAACt2F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CAAC,WAAY,WAAY,iBAAkB,qBAQ/D,SAASg6H,GAAT,GASI,IARF3gG,EAQC,EARDA,UACAi7D,EAOC,EAPDA,IAOC,IANDttC,UAAWs3C,OAMV,MANelwE,MAASuH,QAAQ,QAMhC,MALD2yB,QAASi2C,OAKR,MALanwE,MAASuH,QAAQ,QAK9B,MAJDwkG,aAAcC,OAIb,aAHDC,mBAAoBC,OAGnB,aAFDC,gBAAiBC,OAEhB,aADDC,gBAAiBC,OAChB,SACKjgH,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAcG2iF,EAXF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,EACTxyF,WAAY,KACZ4uH,eAAgB,GAChBJ,gBAAiBC,EACjBH,mBAAoBC,EACpBH,aAAcC,EACdK,gBAAiBC,GAZpB,IAsBG78C,aAAQ,CACVd,KAAM,YACNv7E,cAAc,eACTiR,KATLisD,EAhBD,EAgBCA,aACAvH,EAjBD,EAiBCA,QACAzhD,EAlBD,EAkBCA,MACAib,EAnBD,EAmBCA,SACAymC,EApBD,EAoBCA,QACatiD,EArBd,EAqBCy8C,UAAaz8C,OAQTkyC,EAAYtxC,EAAM,aAClB4yC,EAAU5yC,EAAM,WAChB3J,EAAa2J,EAAM,cACnBilH,EAAiBjlH,EAAM,kBACvBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IACzC6uH,EAAe1hH,KAAKxZ,OAAO,CAAEzC,GAAI09H,IAEvC,OACE,gBAAC58H,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GAAa,IAAD,IAC9B2S,EACa,KAAfrZ,GAAoC,OAAfA,EACjB,iCAA2B+pF,QAA3B,IAA2BA,GAA3B,UAA2BA,EAAkBl2D,gBAA7C,aAA2B,EAA4BjjC,MACpC,KAAnBg+H,GAA4C,OAAnBA,EACzB,iCAA2BC,QAA3B,IAA2BA,GAA3B,UAA2BA,EAAcjpH,YAAzC,aAA2B,EAAoBhV,MAC/C,0BACA04B,KAAM0jB,MAAMtmC,EAAQu0C,WAAW5N,UAAU,EAAG,GAC5C,MACA/jB,KAAM0jB,MAAMtmC,EAAQ61C,SAASlP,UAAU,EAAG,GAChD/f,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvD4uH,eAAgBh4H,IAAEu+D,MAAMzuD,EAAQkoH,gBAC5B,GACAloH,EAAQkoH,eACZV,UAAW5kG,KAAM0jB,MAAMtmC,EAAQu0C,WAAW5N,UAAU,EAAG,GACvD8gF,QAAS7kG,KAAM0jB,MAAMtmC,EAAQ61C,SAASlP,UAAU,EAAG,GACnD1lC,YAAa0R,QAnBnB,UAuBE,gBAACrnB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZN,eAAe,OACfK,QAASwzB,SAKjB,eAACrqD,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZN,eAAe,OACfI,QAASmyB,YAOnB,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,qBAGF,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU,SAACsO,GACTtO,EAASsO,GACTue,EAAS,iBAAkB,IAC3BymC,KAEFngD,aAAa,EACbpC,UAAWC,EAAO/I,WAClB+I,OAAQ,0BAKhB,eAAC7W,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,iBACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,KAAKp0B,OAAN,CACE5B,MAAM,kBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAU,SAACsO,GACTtO,EAASsO,GACTue,EAAS,aAAc,IACvBymC,KAEFngD,aAAa,EACb7F,YAAY,EACZyD,UAAWC,EAAO6lH,eAClB7lH,OAAQ,oCAOlB,eAAC/W,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,qBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,qBACHJ,MAAM,8BACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAOpB,eAAC/F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,kBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,kBACHJ,MAAM,6BACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAOpB,eAAC/F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,kBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,kBACHJ,MAAM,yBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAOpB,eAAC/F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,eACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,eACHJ,MAAM,sBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAMpB,eAAC9F,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBC9XK,SAASs0H,KACtB,OACE,eAAChC,GAAD,CACE1zH,MAAM,eACN2zB,aAAa,cACbmgG,QAAS6B,GACT3B,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa8+F,YAAa,KAAI,CAACzmC,IAEpDp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,MAErD,CACEjY,GAAI,WACJmD,OAAQ,WACRC,SAAU,WAEVI,KAAM,kBAAGC,EAAH,EAAGA,MAAOE,EAAV,EAAUA,IAAV,OACJ,eAACm+F,GAAD,CAAWC,aAAY,OAAEp+F,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe0F,KAAM04F,SAAUv+F,MAG5D,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,KAAKQ,KAAN,CAAWjE,GAAE,OAAEyD,QAAF,IAAEA,OAAF,EAAEA,EAAO+S,cAAeyB,QAAQ,MAGjD,CACEjY,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,WACVC,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,qCAAGy0B,KAAUo1C,gBAAgBp1C,KAAU0c,UAAUnxC,QAGrD,CACEzD,GAAI,KACJmD,OAAQ,KACRC,SAAU,OACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGQ,KAAJ,CAASjE,GAAIyD,SAGtC,IAGF,OACE,qCACE,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,YACA,WACA,SACA,cACA,KACA,WACA,mBASd,SAAS86H,GAAT,GAKI,IAJFzhG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,UAAWs3C,OAEV,MAFelwE,MAASuH,QAAQ,SAEhC,MADD2yB,QAASi2C,OACR,MADanwE,MAASguE,MAAM,SAC5B,EACK3hF,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,GANZ,IASgD1gB,aAAQ,CACvDd,KAAM,YACNv7E,cAAc,aACZuK,WAAY,GACZi7C,UAAW,GACXsB,QAAS,GACT0yE,YAAY,EACZ7kC,YAAa,IACV1jF,KARCisD,EATP,EASOA,aAAcvH,EATrB,EASqBA,QAASzhD,EAT9B,EAS8BA,MAAOZ,EATrC,EASqCA,OAYhCwzC,EAAU5yC,EAAM,WAChBsxC,EAAYtxC,EAAM,aAClB3J,EAAa2J,EAAM,cACnBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IAE/C,OACE,gBAAChO,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GACtB,IAQO,EARH2S,EACF,QACAiQ,KAAM0c,QAAQt/B,EAAQu0C,WACtB,OACA3xB,KAAM0c,QAAQt/B,EAAQ61C,SAEpB3lD,IAAEu+D,MAAMn1D,IAA8B,KAAfA,EACzBqZ,EAAO,iBAAmBA,EAE1BA,GAAuB,OAAhB0wE,QAAgB,IAAhBA,GAAA,UAAAA,EAAkBl2D,gBAAlB,eAA4BjjC,MAAO,IAAMyoB,EAElDiU,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvDivH,YAAYr4H,IAAEu+D,MAAMzuD,EAAQuoH,aAAsBvoH,EAAQuoH,WAC1Dh0E,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAa0R,QAnBnB,UAuBE,gBAACrnB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAASwzB,SAKjB,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAASmyB,YAMnB,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAS,OAAEC,QAAF,IAAEA,OAAF,EAAEA,EAAQ/I,WACnB+I,OAAQ,4BAMlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBCvNK,SAAS00H,KACtB,OACE,eAACpC,GAAD,CACE1zH,MAAM,0BACN2zB,aAAa,iBACbmgG,QAASiC,GACT/B,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAD,EAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACYnQ,oBAAS,GADrB,mBAC3B40F,EAD2B,KACVC,EADU,OAEE70F,mBAAS,MAFX,mBAE3B80F,EAF2B,KAEfC,EAFe,KAG5BgkC,EAAgB,OAAG7mC,QAAH,IAAGA,GAAH,UAAGA,EAAKr4D,cAAR,aAAG,EAAak/F,iBAChC9lB,EAAcl1G,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAao5E,cAAe,KAAI,CAAC/gB,IAC7DrzF,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaghD,OAAQ,KAAI,CAACqX,IAE/C8mC,EAAqBp2H,uBACzB,SAACmjD,GACCgvC,EAAchvC,GACd8uC,GAAmB,KAErB,CAACE,EAAeF,IAGZ/2F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,WACJmD,OAAQ,QACRC,SAAU,aACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,gBACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,sBACJmD,OAAQ,mBACRC,SAAU,uBACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAACO,GAAD,OAAuB,IAAbA,EAAI8X,KAAa,MAAQ9X,EAAI8X,MACjDpY,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGQ,KAAJ,CAASwX,KAAMhY,MAEtC,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,YAAqB,IAAD,EAAjBC,EAAiB,EAAjBA,MAAOE,EAAU,EAAVA,IACd,OACE,eAAC,GAAKgwF,gBAAN,CACEzoC,OAAM,OAAEvnD,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe5D,GACvByD,MAAOA,EACP61D,cAAe6kE,MAKvB,CACEn+H,GAAI,uBACJmD,OAAQ,uBACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnClB,UAAW,eAEb,CACErnB,GAAI,eACJmD,OAAQ,eACRC,SAAU,yBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnClB,UAAW,eAEb,CACErnB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGP,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,SAIvC,CAAC2tC,IAGH,OAAI7oH,EACK,eAACunF,GAAD,CAAch1F,KAAMyN,IAClB4oH,EAEP,eAAC/lB,GAAD,CACEC,YAAaA,EACb12F,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAU0hC,EAAIr3F,IACtCsE,YAAY,IAKd,uCACE,eAAC,GAAKirF,YAAN,CACEvvF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjCxjC,SAAU,kBAAMwjC,GAAmB,MAErC,eAACj5F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,sBACA,KACA,WACA,WACA,eACA,WACA,eACA,uBACA,OACA,OACA,WACA,OACA,kBACA,QACA,kBAUhB,SAASk7H,GAAsBj7H,GAC7B,IAAMwa,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAC/CA,EAASuH,KAAKxZ,OAAO,CAAEzC,GAAIwd,IAA3B9I,KACR,OACE,eAAC6nH,GAAD,2BACMv5H,GADN,IAEEwS,QAAS,CACPirB,OAAQ/rB,EAAKN,aAAeoJ,EAAe,GAC3C0gH,kBAAkB,GAJtB,SAOE,eAACp9H,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,mBACLmgB,OAAQ,oBACNpI,MAAShU,EADH,EACGA,MAAOoD,EADV,EACUA,SAAU+uB,EADpB,EACoBA,OACZ9oB,EAFR,EAEN4K,WAAc5K,MAFR,OAIN,eAAC+vH,GAAD,CACE78H,GAAG,mBACHJ,MAAM,yBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAW9K,EACX+K,OAAQ,6BChRxB,IAAMumH,GAAiB,CACrB,QACA,aACA,QACA,WACA,aACA,SACA,QACA,gBACA,cACA,cACA,kBACA,cAGI3/G,GAAU,CAAC,SAEX4/G,GAAmB,CACvB,QACA,aACA,QACA,WACA,SACA,QACA,cAGIC,GAAY,CAChB,QACA,aACA,WACA,SACA,QACA,cAGa,SAASC,KACtB,OACE,eAAC3C,GAAD,CACE1zH,MAAM,kBACN2zB,aAAa,iBACbmgG,QAASwC,GACTtC,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACfiwC,EAAYriD,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaumB,YAAa,KAAI,CAAC8xC,IACzDonC,EAAcv7H,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAay/F,cAAe,KAAI,CAACpnC,IAC7DqnC,EAAOx7H,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa0/F,OAAQ,KAAI,CAACrnC,IAC/CsnC,EAAYz7H,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa2/F,YAAa,KAAI,CAACtnC,IACzDunC,EAAU17H,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa4/F,UAAW,KAAI,CAACvnC,IAE3D,OACE,qCACE,gBAAClhB,GAAA,EAAD,CAAMC,iBAAiB,UAAvB,UACE,eAACC,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAAU2wH,cAAc,EAAtD,SACE,eAACgG,GAAD,CAAS76H,KAAM46H,EAAStpH,UAAWA,MAErC,eAAC+gE,GAAA,EAAD,CAAKC,SAAS,YAAYpuE,MAAM,YAAhC,SACE,eAAC42H,GAAD,CACE96H,KAAMuhD,EACNjwC,UAAWA,EACXvS,OAAQq7H,OAGZ,eAAC/nD,GAAA,EAAD,CAAKC,SAAS,eAAepuE,MAAM,eAAnC,SACE,eAAC42H,GAAD,CACE96H,KAAMy6H,EACNnpH,UAAWA,EACXvS,OAAQs7H,OAGZ,eAAChoD,GAAA,EAAD,CAAKC,SAAS,MAAMpuE,MAAM,MAA1B,SACE,eAAC42H,GAAD,CAAQ96H,KAAM06H,EAAMppH,UAAWA,EAAWvS,OAAQu7H,OAEpD,eAACjoD,GAAA,EAAD,CAAKC,SAAS,kBAAkBpuE,MAAM,cAAtC,SACE,eAAC62H,GAAD,CAAW/6H,KAAM26H,EAAWrpH,UAAWA,WAQjD,SAASwpH,GAAT,GAA8C,IAA5B96H,EAA2B,EAA3BA,KAAMsR,EAAqB,EAArBA,UAAWvS,EAAU,EAAVA,OAC3BE,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,QACJmD,OAAQ,QACRC,SAAU,UACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,aACJmD,OAAQ,aACRC,SAAU,YACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,kBAAGC,EAAH,EAAGA,MAAOE,EAAV,EAAUA,IAAV,MACsB,QAAvB,OAAHA,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe8d,QACb,eAAC,GAAGzd,KAAJ,CAASjE,GAAIyD,IAEb,eAAC,GAAQQ,KAAT,CAAcjE,GAAIyD,MAGxB,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WACVC,OAAQ6wE,GAAG3hB,OAAO9pD,YAClBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAG8uD,OAAO9qD,YAAX,CAAuBzH,GAAIyD,MAElD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACV6V,gBAAgB,GAElB,CACEjZ,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQS,KACRP,OAAQ,UAEV,CACEJ,OAAQ,QACRnD,GAAI,QACJoD,SAAU,QACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEzD,GAAI,aACJmD,OAAQ,aACRC,SAAU,kBACV6V,gBAAgB,EAChBoO,UAAW,MACXX,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BllB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASo7H,iBAAmBxuC,IAGjB,GACnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAGtD,CACE1oB,GAAI,SACJmD,OAAQ,SACRC,SAAU,cACV6V,gBAAgB,EAChByN,SAAU,WACVW,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EAElB7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAEhC57D,WAAWjxB,EAAIC,SAASq7H,aAAezuC,IAGb,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAItD,CACEvlB,OAAQ,aACRnD,GAAI,aACJoD,SAAU,SAACgB,GACT,OACGA,EAAO66H,aACL76H,EAAO66H,YAAc76H,EAAO86H,gBAC/B,KACAv2G,QAAQ,IAEZjC,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BzP,gBAAgB,EAChBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACw1D,GAAD,CAAkBx1D,MAAOA,EAAOilB,SAAU,KAC/DtB,WAAY,YAAc,IAAXzjB,EAAU,EAAVA,IACT6sF,EAAQ,EACR2uC,EAAO,EAMX,OALAx7H,EAAIouF,SAASn+E,SAAQ,SAACwrH,GACpB5uC,EACEA,EAAQ4uC,EAAKx7H,SAASq7H,YAAcG,EAAKx7H,SAASs7H,eACpDC,GAAcC,EAAKx7H,SAASq7H,eAG5B,eAAChmE,GAAD,CACEx1D,OAAS07H,EAAO3uC,EAAS,KAAO7nE,QAAQ,GACxCD,SAAU,KAIhBwmC,OAAQ,YAAe,IAWfshC,EAXc,EAAX9jE,KAWUO,QAVH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC,CACL2uC,KAAMvqG,WAAWjxB,EAAIC,SAASq7H,aAAezuC,EAAM2uC,KACnDE,QAASzqG,WAAWjxB,EAAIC,SAASs7H,gBAAkB1uC,EAAM6uC,WAI1B,CAAEA,QAAS,EAAGF,KAAM,IAEvD,OACE,eAAClmE,GAAD,CACEx1D,OACG+sF,EAAM2uC,MAAQ3uC,EAAM2uC,KAAO3uC,EAAM6uC,SAClC,KACA12G,QAAQ,GACVD,SAAU,MAKlB,CACE1oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,iBACV6V,gBAAgB,EAChByN,SAAU,WACVW,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASs7H,gBAAkB1uC,IAGhB,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAGtD,CACE1oB,GAAI,UACJmD,OAAQ,UACRC,SAAU,YACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MACX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASw4F,WAAa5L,IAGX,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,SACJmD,OAAQ,SACRC,SAAU,eACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MACX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASy4F,cAAgB7L,IAGd,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,cACVyjB,OAAQ,CACNG,UAAW,CACTuB,WAAY,WAGhBllB,OAAQS,KACRP,OAAQ,SAER6jB,WAAY,YAAsB,IAAnBzjB,EAAkB,EAAlBA,IAAKse,EAAa,EAAbA,OACduuE,EAAQ,EACR8uC,EAAQ,EAKZ,OAJA37H,EAAIouF,SAASn+E,SAAQ,SAACwrH,GACpB5uC,IAC+B,QAA3B4uC,EAAKh7H,OAAO6d,EAAOjiB,KAAes/H,OAGtC,eAACrmE,GAAD,CACEx1D,OAAS67H,EAAQ9uC,EAAS,KAAO7nE,QAAQ,GACzCD,SAAU,KAIhBwmC,OAAQ,YAAe,IAWfshC,EAXc,EAAX9jE,KAWUO,QAVH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAEV,OAA5B7sF,EAAIC,SAAS27H,YACR,CAAED,MAAO9uC,EAAM8uC,MAAQ,EAAG9uC,MAAOA,EAAMA,MAAQ,GAC5C,CAAE8uC,MAAO9uC,EAAM8uC,MAAO9uC,MAAOA,EAAMA,MAAQ,KAGtB,CAAE8uC,MAAO,EAAG9uC,MAAO,IAEtD,OACE,eAACv3B,GAAD,CACEx1D,OAAS+sF,EAAM8uC,MAAQ9uC,EAAMA,MAAS,KAAO7nE,QAAQ,GACrDD,SAAU,MAKlB,CACE1oB,GAAI,cACJmD,OAAQ,cACRC,SAAU,WACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS47H,UAAYhvC,IAGV,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAGtD,CACE1oB,GAAI,cACJmD,OAAQ,cACRC,SAAU,WACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS67H,UAAYjvC,IAGV,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAGtD,CACE1oB,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,aACV6V,gBAAgB,EAChByN,SAAU,WACVW,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS87H,YAAclvC,IAGZ,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,SAIxD,IAGF,OACE,eAAC3nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQA,EACR0nB,eAAgBhM,SAO1B,SAASsgH,GAAT,GAAyC,IAApB/6H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UACnBrS,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,QACRnD,GAAI,QACJoD,SAAU,QACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,SACRnD,GAAI,SACJoD,SAAU,gBACVC,OAAQ2tF,GAAKwC,uBAAuB/qF,YACpClF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAAC,GAAK+vF,uBAAuB/rF,YAA7B,CAAyCzH,GAAIyD,MAGjD,CACEN,OAAQ,OACRnD,GAAI,OACJoD,SAAU,SACVG,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQS,MAEV,CACE9D,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACV6V,gBAAgB,EAChByN,SAAU,WACVW,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+7H,SAAWnvC,IAGT,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAGtD,CACE1oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MACX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,UAIxD,IAGF,OACE,eAAC5nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfN,eAAgBhM,SAO1B,SAASogH,GAAT,GAAuC,IAApB76H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UACjBrS,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,QACRnD,GAAI,QACJoD,SAAU,QACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cAEX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,WACRnD,GAAI,WACJoD,SAAU,eACVikB,UAAW,MACXX,SAAU,SACVzN,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASg8H,cAAgBpvC,IAGd,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,cACV6V,gBAAgB,EAChByN,SAAU,WACVW,UAAW,MACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEtB,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASq7H,aAAezuC,IAGb,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,MAGtD,CACEvlB,OAAQ,aACRnD,GAAI,aACJoD,SAAU,gBACVsjB,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BzP,gBAAgB,EAChBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACw1D,GAAD,CAAkBx1D,MAAOA,EAAOilB,SAAU,KAC/DwmC,OAAQ,YAAe,IAWfshC,EAXc,EAAX9jE,KAWUO,QAVH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC,CACL2uC,KAAMvqG,WAAWjxB,EAAIC,SAASq7H,aAAezuC,EAAM2uC,KACnDE,QAASzqG,WAAWjxB,EAAIC,SAASs7H,gBAAkB1uC,EAAM6uC,WAI1B,CAAEA,QAAS,EAAGF,KAAM,IAEvD,OACE,eAAClmE,GAAD,CACEx1D,OACG+sF,EAAM2uC,MAAQ3uC,EAAM2uC,KAAO3uC,EAAM6uC,SAClC,KACA12G,QAAQ,GACVD,SAAU,MAKlB,CACE1oB,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,oBACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BllB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEwmC,OAAQ,YAAe,IAWfshC,EAXc,EAAX9jE,KAWUO,QAVH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC,CACL2uC,KAAMvqG,WAAWjxB,EAAIC,SAASq7H,aAAezuC,EAAM2uC,KACnDn3D,MAAOrkE,EAAIC,SAASg8H,aAAepvC,EAAMxoB,SAIV,CAAEA,MAAO,EAAGm3D,KAAM,IAErD,OACE,eAACpmE,GAAD,CAAmBt1D,MAAO+sF,EAAM2uC,KAAO3uC,EAAMxoB,MAAOt/C,SAAU,MAIpE,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,uBACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BllB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAChEwmC,OAAQ,YAAe,IAWfshC,EAXc,EAAX9jE,KAWUO,QAVH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC,CACL6uC,QAASzqG,WAAWjxB,EAAIC,SAASs7H,gBAAkB1uC,EAAM6uC,QACzDr3D,MAAOrkE,EAAIC,SAASg8H,aAAepvC,EAAMxoB,SAIV,CAAEA,MAAO,EAAGq3D,QAAS,IAExD,OACE,eAACtmE,GAAD,CACEt1D,MAAO+sF,EAAM6uC,QAAU7uC,EAAMxoB,MAC7Bt/C,SAAU,MAKlB,CACE1oB,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,uBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BllB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACw1D,GAAD,CAAkBx1D,MAAOA,EAAOilB,SAAU,KAC/DwmC,OAAQ,YAAe,IAafshC,EAbc,EAAX9jE,KAaUO,QAZH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC,CACLjrC,UACE3wB,WAAWjxB,EAAIC,SAASi8H,eAAiBrvC,EAAMjrC,UACjDk5E,YACE7pG,WAAWjxB,EAAIC,SAASk8H,eAAiBtvC,EAAMiuC,eAIlB,CAAEl5E,UAAW,EAAGk5E,YAAa,IAEhE,OACE,eAACxlE,GAAD,CACEx1D,OACG+sF,EAAMjrC,WAAairC,EAAMjrC,UAAYirC,EAAMiuC,aAC5C,KACA91G,QAAQ,GACVD,SAAU,SAMpB,IAGF,OACE,eAAC3nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,QAOzB,SAASyzG,GAAT,GAKI,IAJFpiG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,UAAWs3C,OAEV,MAFelwE,MAASuH,QAAQ,QAEhC,MADD2yB,QAASi2C,OACR,MADanwE,MAASguE,MAAM,QAC5B,IAWG9H,EATF7hF,eAFD,MAEW,CACRu0C,UAAWs3C,EACXh2C,QAASi2C,EACTx4D,QAAS,GACTi3F,gBAAgB,EAChBpB,UAAW,GACXqB,kBAAkB,EAClBC,aAAa,GAThB,IAYwCr/C,aAAQ,CAC/Cd,KAAM,YACNv7E,cAAc,aACZwlD,UAAW,GACXsB,QAAS,GACTviB,QAAS,GACTi3F,gBAAgB,EAChBpB,UAAW,GACXqB,kBAAkB,EAClBC,aAAa,GACVzqH,KAVCisD,EAZP,EAYOA,aAAcvH,EAZrB,EAYqBA,QAASzhD,EAZ9B,EAY8BA,MAczB4yC,EAAU5yC,EAAM,WAChBsxC,EAAYtxC,EAAM,aAExB,OACE,gBAAC3X,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GACtB4mB,EAAU,2BACL5mB,GADI,IAEPu0C,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAY,GAAD,QACF,OAAPjB,QAAO,IAAPA,OAAA,EAAAA,EAASirB,SAAgB,OAAPjrB,QAAO,IAAPA,OAAA,EAAAA,EAASirB,QAAS,IAAM,GADjC,iBAEFrI,KAAM0c,QAAQt/B,EAAQu0C,WAFpB,eAEqC3xB,KAAM0c,QACpDt/B,EAAQ61C,gBAThB,UAcE,gBAACvqD,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAASwzB,SAKjB,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAASmyB,YAMnB,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,uBAAKG,UAAU,sCAAf,UACE,2CACA,+BACE,eAAC,KAAD,CACE1B,KAAK,iBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAAC/F,GAAA,EAAKO,MAAN,CACErB,GAAE,UAAKN,KAAL,YACFwuE,QAAM,EACNtuE,MAAM,UACNmiE,QAASt+D,EACToD,SAAU,SAACC,GAAD,OAAOD,EAASC,EAAEC,OAAOg7D,wBAQjD,eAACjhE,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAD,CACEvB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAAOp0B,OAAR,CACEiC,MAAOA,EACPoD,SAAUA,EACV+uB,OAAQA,EACRvhB,YAAY,sBACZxS,SAAO,WAMjB,eAACf,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,uBAAKG,UAAU,sCAAf,UACE,+CACA,+BACE,eAAC,KAAD,CACE1B,KAAK,mBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAAC/F,GAAA,EAAKO,MAAN,CACErB,GAAE,UAAKN,KAAL,YACFwuE,QAAM,EACNtuE,MAAM,UACNmiE,QAASt+D,EACToD,SAAU,SAACC,GAAD,OAAOD,EAASC,EAAEC,OAAOg7D,wBAQjD,eAACjhE,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,IAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAAwBp0B,OAAzB,CACEiC,MAAOA,EACPoD,SAAUA,EACV+uB,OAAQA,EACRvhB,YAAY,0BACZxS,SAAO,WAMjB,eAACf,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,cACHJ,MAAM,uBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVgR,OAAQ,0BAMlB,eAAC7W,EAAA,EAAD,CAAKC,GAAG,SACR,eAACF,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBCl7BK,SAAS42H,KAA8B,IAAD,EACPvrH,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADXmE,EAD2C,EAC3CA,QAAS2oB,EADkC,EAClCA,uBAIjB,MAE+B,MAA3BA,GAC2B,MAA3BA,GACA3oB,EAYF,eAAC6iH,GAAD,CACE1zH,MAAM,6BACN2zB,aAAa,0BACbmgG,QAASmE,GACTjE,OAAQA,GACRnrF,WAAYurF,KAbZ,eAACtrF,GAAD,CACE9oC,MAAM,6BACNgpC,KAAK,2CAgBb,SAASkvF,GAAT,GAA2E,IAAnD1zG,EAAkD,EAAlDA,KAAM2zG,EAA4C,EAA5CA,IAAKC,EAAuC,EAAvCA,YAAaC,EAA0B,EAA1BA,UAAWC,EAAe,EAAfA,YA+BnDvhG,EAAIvS,EAAKO,QA9BC,SAAVykE,EAAWlB,EAAO7sF,GACtB,GAAIA,EAAIkgB,UACN,OAAIlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAExC,GAAY,KAAR6vC,EAAY,CAEd,IADA,IAAIlrE,EAAM,CAAC,EAAG,EAAG,GACR3uD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAIi6H,EAAKrmH,OAAO5T,GACZA,EAAI,KAAIi6H,EAAK,IAAMj6H,GAEvB2uD,EAAI,GAAKA,EAAI,GAAKvgC,WAAWjxB,EAAIC,SAAS,SAAW68H,IACrDtrE,EAAI,GAAKA,EAAI,GAAKvgC,WAAWjxB,EAAIC,SAAS,QAAU68H,IACpDtrE,EAAI,GAAKA,EAAI,GAAKvgC,WAAWjxB,EAAIC,SAAS,MAAQ68H,IAKpD,OAHAjwC,EAAM,GAAKA,EAAM,GAAKr7B,EAAI,GAC1Bq7B,EAAM,GAAKA,EAAM,GAAKr7B,EAAI,GAC1Bq7B,EAAM,GAAKA,EAAM,GAAKr7B,EAAI,GACnBq7B,EAEP,IAAIiwC,EAAKrmH,OAAOimH,GAKhB,OAJIA,EAAM,KAAII,EAAK,IAAMJ,GACzB7vC,EAAM,GAAKA,EAAM,GAAK57D,WAAWjxB,EAAIC,SAAS,SAAW68H,IACzDjwC,EAAM,GAAKA,EAAM,GAAK57D,WAAWjxB,EAAIC,SAAS,QAAU68H,IACxDjwC,EAAM,GAAKA,EAAM,GAAK57D,WAAWjxB,EAAIC,SAAS,MAAQ68H,IAC/CjwC,IAKkB,CAAC,EAAG,EAAG,IAChCkwC,EAASzhG,EAAE,GACXtK,EAAQsK,EAAE,GACVmF,EAAMnF,EAAE,GAEd,OACE,uCACGqhG,EACC,eAAC5mH,GAAA,EAAD,CACE3X,QAAQ,UACRmG,MAAM,SACN9G,UAAW,CAAC,MAAO,YAAa,OAHlC,SAKE,eAAC23D,GAAD,CAAmBt1D,MAAOi9H,EAAQh4G,SAAU,MAE5C,KACH63G,EACC,eAAC7mH,GAAA,EAAD,CACE3X,QAAQ,UACRmG,MAAM,QACN9G,UAAW,CAAC,MAAO,YAAa,OAHlC,SAKE,eAACy3D,GAAD,CAAiBp1D,MAAOkxB,EAAOjM,SAAU,MAEzC,KACH83G,EACC,eAAC9mH,GAAA,EAAD,CACE3X,QAAQ,UACRmG,MAAM,WACN9G,UAAW,CAAC,MAAO,YAAa,OAHlC,SAKE,eAACy3D,GAAD,CAAiBp1D,MAAO2gC,EAAK1b,SAAU,MAEvC,QAKV,SAASi4G,GAAT,GAGE,IAHqE,IAAlDh9H,EAAiD,EAAjDA,IAAK28H,EAA4C,EAA5CA,YAAaC,EAA+B,EAA/BA,UAAWC,EAAoB,EAApBA,YAAaH,EAAO,EAAPA,IACzDrhG,EAAS,CAAC,EAAG,EAAG,GAEXx4B,EAAI,EAAGA,EAAI,GAAIA,IACtB,GAAIA,IAAM65H,GAAe,KAARA,EAAY,CAC3B,IAAII,EAAKrmH,OAAO5T,GACZA,EAAI,KAAIi6H,EAAK,IAAMA,GACvBzhG,EAAO,GAAKA,EAAO,GAAKr7B,EAAI,SAAW88H,GACvCzhG,EAAO,GAAKA,EAAO,GAAKr7B,EAAI,QAAU88H,GACtCzhG,EAAO,GAAKA,EAAO,GAAKr7B,EAAI,MAAQ88H,GAIxC,OACE,uCACGH,EACC,wCAEE,eAACvnE,GAAD,CAAmBt1D,MAAOu7B,EAAO,GAAI85B,WAAW,EAAMpwC,SAAU,OAEhE,KACH63G,EACC,wCAEE,eAAC1nE,GAAD,CAAiBp1D,MAAOu7B,EAAO,GAAI85B,WAAW,EAAMpwC,SAAU,OAE9D,KACH83G,EACC,wCAEE,eAAC3nE,GAAD,CAAiBp1D,MAAOu7B,EAAO,GAAI85B,WAAW,EAAMpwC,SAAU,OAE9D,QAKV,SAASwzG,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACInQ,oBAAS,GADb,mBAC3Bq7H,EAD2B,KACdI,EADc,OAEAz7H,oBAAS,GAFT,mBAE3Bo7H,EAF2B,KAEhBM,EAFgB,OAGI17H,oBAAS,GAHb,mBAG3Bm7H,EAH2B,KAGdQ,EAHc,KAK5B98H,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa+hG,oBAAqB,KAAI,CAAC1pC,IAE5Dp0F,EAAUC,mBAAQ,WA8TtB,MA7Te,CACb,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASmb,KAAV,CAAe5e,GAAIyD,MAE1C,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,KAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,EACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,MAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,GACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,MAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,GACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,MACJmD,OAAQ,MACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,MAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,GACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,MAInB,CACExgI,GAAI,QACJmD,OAAQ,QACR0jB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGG,EAAH,EAAGA,IAAH,OACJ,eAACg9H,GAAD,CACEh9H,IAAG,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAKC,SACV08H,YAAaA,EACbC,UAAWA,EACXC,YAAaA,EACbH,IAAK,MAGTnxE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAAC0zG,GAAD,CACE1zG,KAAMA,EACN2zG,IAAK,GACLC,YAAaA,EACbC,UAAWA,EACXC,YAAaA,SAOpB,CAACA,EAAaF,EAAaC,IAE9B,OACE,uCACE,eAACx/H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,gBAACorC,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,WACLvH,QAAQ,UACRggE,QAASu+D,EACTz5H,SAAU,kBAAMi6H,GAAgBR,IALlC,oBACM,eAQN,eAAC9uB,GAAA,EAAD,CAEEloG,KAAK,WACLvH,QAAQ,UACRggE,QAASw+D,EACT15H,SAAU,kBAAMg6H,GAAcN,IALhC,kBACM,aAQN,eAAC/uB,GAAA,EAAD,CAEEloG,KAAK,WACLvH,QAAQ,UACRggE,QAASy+D,EACT35H,SAAU,kBAAM+5H,GAAgBJ,IALlC,qBACM,sBAWZ,eAACz/H,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,qBAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,WAQ3B,SAASo1G,GAAT,GAII,IAHF/jG,EAGC,EAHDA,UACAi7D,EAEC,EAFDA,IAEC,IADDttC,UAAWs3C,OACV,MADelwE,MAASuH,QAAQ,QAChC,EACKlb,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXvyF,WAAY,MANf,IAcG8xE,aAAQ,CACVd,KAAM,YACNv7E,cAAc,eACTiR,KAPLisD,EAVD,EAUCA,aACAvH,EAXD,EAWCA,QACAzhD,EAZD,EAYCA,MACaZ,EAbd,EAaCy8C,UAAaz8C,OAQT/I,EAAa2J,EAAM,cACnBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IAE/C,OACE,gBAAChO,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GAAa,IAAD,EAC9B2S,EACa,KAAfrZ,GAAoC,OAAfA,EACjB,0CACA+pF,QADA,IACAA,GADA,UACAA,EAAkBl2D,gBADlB,aACA,EAA4BjjC,MAC5B,kCACA04B,KAAM0jB,MAAMtmC,EAAQu0C,WAAW5N,UAAU,EAAG,GAClD/f,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvDkyH,KAAM5oG,KAAM0jB,MAAMtmC,EAAQu0C,WAAW5N,UAAU,EAAG,GAClD1lC,YAAa0R,QAZnB,UAgBE,eAACrnB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,OACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZN,eAAe,gBAOzB,eAAC12B,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,qBAGF,eAACF,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAa,EACbpC,UAAWC,EAAO/I,WAClB+I,OAAQ,4BAOlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBCpmBK,SAAS23H,KACtB,OACE,eAACrF,GAAD,CACE1zH,MAAM,eACN2zB,aAAa,cACbmgG,QAASkF,GACThF,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaoF,MAAO,KAAI,CAACizD,IAE9Cp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW85G,IAEb,CACEh+H,OAAQ,WACRnD,GAAI,WACJoD,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,gBACRnD,GAAI,gBACJoD,SAAU,eACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,YACRnD,GAAI,YACJoD,SAAU,WACVC,OAAQ6wE,GAAG3hB,OAAO9pD,YAClBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAG8uD,OAAO9qD,YAAX,CAAuBzH,GAAIyD,MAElD,CACEN,OAAQ,iBACRnD,GAAI,iBACJoD,SAAU,gBACVC,OAAQogE,GAAQlR,OAAO9pD,YACvBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ8uD,OAAO9qD,YAAhB,CAA4BzH,GAAIyD,MAEvD,CACEN,OAAQ,UACRnD,GAAI,UACJoD,SAAU,SACVC,OAAQogE,GAAQ7hE,KAAK6G,YACrBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAIyD,MAErD,CACEN,OAAQ,eACRnD,GAAI,eACJoD,SAAU,cACVC,OAAQogE,GAAQ7hE,KAAK6G,YACrBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAIyD,MAErD,CACEN,OAAQ,mBACRnD,GAAI,mBACJoD,SAAU,kBACVC,OAAQogE,GAAQtT,SAAS1nD,YACzBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ0sD,SAAS1oD,YAAlB,CAA8BzH,GAAIyD,MAEzD,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQQ,KAAT,CAAcjE,GAAIyD,MAEzC,CACEzD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGQ,KAAJ,CAASjE,GAAIyD,MAEpC,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAWypE,GACX1pE,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,OAC5DD,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,uBACJmD,OAAQ,kBACRC,SAAU,oBACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAWypE,GACX1pE,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,OAC5DD,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,uBACJmD,OAAQ,uBACRC,SAAU,oBACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,aACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,gBACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,OAGf,IAGF,OACE,qCACE,eAACpgI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,UACA,KACA,UACA,cACA,WACA,YACA,UACA,WACA,WACA,iBACA,YACA,iBACA,uBACA,uBACA,kBASd,SAASm+H,GAAT,GAKI,IAJF9kG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,UAAWs3C,OAEV,MAFelwE,MAASuH,QAAQ,SAEhC,MADD2yB,QAASi2C,OACR,MADanwE,MAASguE,MAAM,SAC5B,EACK3hF,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,GANZ,IAcG1gB,aAAQ,CACVd,KAAM,YACNv7E,cAAc,aACZuK,WAAY,GACZi7C,UAAW,GACXsB,QAAS,IACN71C,KAVLisD,EAVD,EAUCA,aACAvH,EAXD,EAWCA,QACAzhD,EAZD,EAYCA,MACaZ,EAbd,EAaCy8C,UAAaz8C,OAWTwzC,EAAU5yC,EAAM,WAChBsxC,EAAYtxC,EAAM,aAClB3J,EAAa2J,EAAM,cACnBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IAE/C,OACE,gBAAChO,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GAAa,IAAD,EAC9B2S,EACF,QACAiQ,KAAM0c,QAAQt/B,EAAQu0C,WACtB,OACA3xB,KAAM0c,QAAQt/B,EAAQ61C,SAExBljC,GAAuB,OAAhB0wE,QAAgB,IAAhBA,GAAA,UAAAA,EAAkBl2D,gBAAlB,eAA4BjjC,MAAO,IAAMyoB,EAChDiU,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvDi7C,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAa0R,QAdnB,UAkBE,gBAACrnB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAASwzB,SAKjB,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAASmyB,YAMnB,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAWC,EAAO/I,WAClB+I,OAAQ,4BAMlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBAOV,SAAS63H,GAAepwC,GACtB,OAAqC,IAA9BrrF,IAAE4N,KAAKy9E,GAAY1yE,OACtB0yE,EAAW,GACXrrF,IAAE4N,KAAKy9E,GAAY1yE,OAAS,IAGlC,SAASyyE,GAAeC,GACtB,OAAqC,IAA9BrrF,IAAE4N,KAAKy9E,GAAY1yE,QAAe0yE,EAAW,IAAW,GC/WlD,SAASqwC,KAA0B,IAAD,EACJzsH,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAhEkE,EADuC,EACvCA,UAAW3E,EAD4B,EAC5BA,WAAY4E,EADgB,EAChBA,QAE/B,OAAMD,GAAa3E,GAAc4E,EAU/B,eAAC6iH,GAAD,CACE1zH,MAAM,oBACN2zB,aAAa,mBACbmgG,QAASqF,GACTnF,OAAQA,GACRnrF,WAAYurF,KAbZ,eAACtrF,GAAD,CACE9oC,MAAM,oBACNgpC,KAAK,2CAgBb,SAASgrF,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACfgsH,EAAWp+H,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAasiG,WAAY,KAAI,CAACjqC,IACvDmY,EAAUtsG,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAawwE,UAAW,KAAI,CAACnY,IACrDkqC,EAAWr+H,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAauiG,WAAY,KAAI,CAAClqC,IAE7D,OACE,qCACE,gBAAClhB,GAAA,EAAD,CAAMC,iBAAiB,WAAvB,UACE,eAACC,GAAA,EAAD,CAAKC,SAAS,WAAWpuE,MAAM,WAAW2wH,cAAc,EAAxD,SACE,eAAC2I,GAAD,CAAUx9H,KAAMs9H,EAAUhsH,UAAWA,MAEvC,eAAC+gE,GAAA,EAAD,CAAKC,SAAS,WAAWpuE,MAAM,2BAA/B,SACE,eAACu5H,GAAD,CAAUz9H,KAAMu9H,EAAUjsH,UAAWA,MAEvC,eAAC+gE,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAA9B,SACE,eAAC,GAAD,CAAQlE,KAAMwrG,EAASl6F,UAAWA,WAQ5C,SAASwpH,GAAT,GAAsC,IAApB96H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UAChBrS,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASmb,KAAV,CAAe5e,GAAIyD,MAE1C,CACEzD,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,QAGlC,IAGF,OACE,eAAC3nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,QAOzB,SAASy2G,GAAT,GAAwC,IAApBx9H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UAClBrS,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,UACJmD,OAAQ,UACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,kBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,QAGlC,IAGF,OACE,eAAC3nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,QAOzB,SAAS02G,GAAT,GAAwC,IAApBz9H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UAClBrS,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,kBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,QAGlC,IAGF,OACE,eAAC3nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,QAOzB,SAASs2G,GAAT,GAAsD,IAAnBjlG,EAAkB,EAAlBA,UAAkB,IAAPi7D,IACpC7hF,eAD2C,MACjC,GADiC,EAE3CisD,EAAiBmf,aAAQ,CAC/Bd,KAAM,YACNv7E,cAAc,eACTiR,KAHCisD,aAOR,OACE,eAAC3gE,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GACtB4mB,EAAU,eACL5mB,OAHT,SAOE,eAACzU,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,uBC/NK,SAASo4H,KAA2B,IAAD,EAChB/sH,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAArDmE,EADwC,EACxCA,QAER,OAHgD,EAC/B5E,YAEG4E,EAUlB,eAAC6iH,GAAD,CACE1zH,MAAM,qBACN2zB,aAAa,oBACbmgG,QAAS2F,GACTzF,OAAQA,GACRnrF,WAAYurF,KAbZ,eAACtrF,GAAD,CACE9oC,MAAM,qBACNgpC,KAAK,2CAgBb,SAASgrF,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa4nB,WAAY,KAAI,CAACywC,IAEnDp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,iBACJmD,OAAQ,YACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,YAErC,CACEvoB,GAAI,gBACJmD,OAAQ,UACRC,SAAU,SAACw+H,GAAD,OAAkC,KAArB,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKC,gBAAuBD,EAAIE,QAAU,IAC9D7oH,gBAAgB,EAChBoO,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GAAS,IAAD,EAC9B,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACD,KAA/B,OAAH7sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAei+H,gBAClBjtG,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,EACnC57D,WAAW47D,GAAS,IAGS,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,QAKlC,CACExwF,GAAI,aACJmD,OAAQ,OACRC,SAAU,SAACw+H,GAAD,OAAkC,KAArB,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKC,gBAAuBD,EAAIE,QAAU,IAC9D7oH,gBAAgB,EAChBoO,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GAAS,IAAD,EAC9B,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACD,KAA/B,OAAH7sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAei+H,gBAClBjtG,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,EACnC57D,WAAW47D,GAAS,IAGS,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,QAKlC,CACExwF,GAAI,cACJmD,OAAQ,QACRC,SAAU,SAACw+H,GAAD,OAAkC,KAArB,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKC,gBAAuBD,EAAIE,QAAU,IAC9D7oH,gBAAgB,EAChBoO,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GAAS,IAAD,EAC9B,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACD,KAA/B,OAAH7sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAei+H,gBAClBjtG,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,EACnC57D,WAAW47D,GAAS,IAGS,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,QAKlC,CACExwF,GAAI,cACJmD,OAAQ,QACRC,SAAU,SAACw+H,GAAD,OAAkC,KAArB,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKC,gBAAuBD,EAAIE,QAAU,IAC9D7oH,gBAAgB,EAChBoO,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GAAS,IAAD,EAC9B,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACD,KAA/B,OAAH7sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAei+H,gBAClBjtG,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,EACnC57D,WAAW47D,GAAS,IAGS,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,QAKlC,CACExwF,GAAI,eACJmD,OAAQ,SACRC,SAAU,SAACw+H,GAAD,OAAkC,KAArB,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKC,gBAAuBD,EAAIE,QAAU,IAC9D7oH,gBAAgB,EAChBoO,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GAAS,IAAD,EAC9B,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACD,KAA/B,OAAH7sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAei+H,gBAClBjtG,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,EACnC57D,WAAW47D,GAAS,IAGS,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,QAKlC,CACExwF,GAAI,WACJmD,OAAQ,WACRC,SAAU,SAACw+H,GAAD,OAAkC,KAArB,OAAHA,QAAG,IAAHA,OAAA,EAAAA,EAAKC,gBAAuBD,EAAIE,QAAU,IAC9D7oH,gBAAgB,EAChBoO,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GAAS,IAAD,EAC9B,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACD,KAA/B,OAAH7sF,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAei+H,gBAClBjtG,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,EACnC57D,WAAW47D,GAAS,IAGS,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,QAKlC,CACExwF,GAAI,QACJmD,OAAQ,QACRC,SAAU,UACV6V,gBAAgB,EAChByN,SAAU,WACVW,UAAW,MACXR,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,KAG9C5J,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASk+H,SAAWtxC,IAGT,GAEnC,OACE,sBAAKpvF,UAAU,aAAf,SACE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,WAMpC,IAGF,OACE,qCACE,eAACzvF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,iBACA,gBACA,aACA,cACA,cACA,eACA,WACA,iBAgBd,SAAS4+H,GAAT,GAKI,IAJFvlG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,UAAWs3C,OAEV,MAFelwE,MAASuH,QAAQ,SAEhC,MADD2yB,QAASi2C,OACR,MADanwE,MAASguE,MAAM,SAC5B,EACK3hF,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,GANZ,IAcG1gB,aAAQ,CACVd,KAAM,YACNv7E,cAAc,aACZuK,WAAY,GACZi7C,UAAW,GACXsB,QAAS,GACT0yE,YAAY,EACZ7kC,YAAa,IACV1jF,KAZLisD,EAVD,EAUCA,aACAvH,EAXD,EAWCA,QACAzhD,EAZD,EAYCA,MACaZ,EAbd,EAaCy8C,UAAaz8C,OAaT/I,EAAa2J,EAAM,cACnBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IAE/C,OACE,gBAAChO,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GAAa,IAAD,EAC9B2S,EAAO,yBAAmB0wE,QAAnB,IAAmBA,GAAnB,UAAmBA,EAAkBl2D,gBAArC,aAAmB,EAA4BjjC,MAC1D08B,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvDivH,YAAYr4H,IAAEu+D,MAAMzuD,EAAQuoH,aAAsBvoH,EAAQuoH,WAC1Dh0E,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAa0R,QATnB,UAaE,eAACrnB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAWC,EAAO/I,WAClB+I,OAAQ,4BAMlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBCxVK,SAAS23H,KACtB,OACE,eAACrF,GAAD,CACE1zH,MAAM,gBACN2zB,aAAa,eACbmgG,QAAS+F,GACT7F,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACYnQ,oBAAS,GADrB,mBAC3B40F,EAD2B,KACVC,EADU,OAEE70F,mBAAS,MAFX,mBAE3B80F,EAF2B,KAEfC,EAFe,KAG5Bl2F,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaghD,OAAQ,KAAI,CAACqX,IAE/C8mC,EAAqBp2H,uBACzB,SAACmjD,GACCgvC,EAAchvC,GACd8uC,GAAmB,KAErB,CAACE,EAAeF,IAGZ/2F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,UACJmD,OAAQ,UACRC,SAAU,SAACO,GAAD,OAA4B,IAAlBA,EAAI+X,UAAkB,MAAQ/X,EAAI+X,WACtDrY,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQQ,KAAT,CAAcjE,GAAIyD,MAEzC,CACEzD,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAACO,GAAD,OAAuB,IAAbA,EAAI8X,KAAa,MAAQ9X,EAAI8X,MACjDpY,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGQ,KAAJ,CAASjE,GAAIyD,MAEpC,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAWypE,GACX1pE,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,OAC5DD,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,IAEb,CACEnhI,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW85G,GAEX39H,KAAM,YAAqB,IAAD,EAAjBC,EAAiB,EAAjBA,MAAOE,EAAU,EAAVA,IACd,OACE,eAAC,GAAKgwF,gBAAN,CACEzoC,OAAM,OAAEvnD,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe5D,GACvByD,MAAOA,EACP61D,cAAe6kE,MAKvB,CACEn+H,GAAI,iBACJmD,OAAQ,YACRC,SAAU,gBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnClB,UAAW85G,IAEb,CACEnhI,GAAI,uBACJmD,OAAQ,uBACRC,SAAU,yBACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnClB,UAAW85G,IAEb,CACEnhI,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGP,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,SAIvC,CAAC2tC,IAGH,OACE,uCACE,eAAC,GAAK5uC,YAAN,CACEvvF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjCxjC,SAAU,kBAAMwjC,GAAmB,MAErC,eAACj5F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,uBACA,iBACA,UACA,KACA,WACA,eACA,OACA,OACA,QACA,kBASd,SAASg/H,GAAT,GAKI,IAJF3lG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,UAAWs3C,OAEV,MAFelwE,MAASuH,QAAQ,SAEhC,MADD2yB,QAASi2C,OACR,MADanwE,MAASguE,MAAM,SAC5B,EACK3hF,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,GANZ,IAcG1gB,aAAQ,CACVd,KAAM,YACNv7E,cAAc,aACZuK,WAAY,GACZi7C,UAAW,GACXsB,QAAS,GACT0yE,YAAY,EACZ7kC,YAAa,IACV1jF,KAZLisD,EAVD,EAUCA,aACAvH,EAXD,EAWCA,QACAzhD,EAZD,EAYCA,MACaZ,EAbd,EAaCy8C,UAAaz8C,OAaTwzC,EAAU5yC,EAAM,WAChBsxC,EAAYtxC,EAAM,aAClB3J,EAAa2J,EAAM,cACnBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IAE/C,OACE,gBAAChO,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GACtB,IAQO,EARH2S,EACF,QACAiQ,KAAM0c,QAAQt/B,EAAQu0C,WACtB,OACA3xB,KAAM0c,QAAQt/B,EAAQ61C,SAEpB3lD,IAAEu+D,MAAMn1D,IAA8B,KAAfA,EACzBqZ,EAAO,iBAAmBA,EAE1BA,GAAuB,OAAhB0wE,QAAgB,IAAhBA,GAAA,UAAAA,EAAkBl2D,gBAAlB,eAA4BjjC,MAAO,IAAMyoB,EAElDiU,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvDivH,YAAYr4H,IAAEu+D,MAAMzuD,EAAQuoH,aAAsBvoH,EAAQuoH,WAC1Dh0E,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAa0R,QAnBnB,UAuBE,gBAACrnB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAASwzB,SAKjB,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAASmyB,YAMnB,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAWC,EAAO/I,WAClB+I,OAAQ,4BAMlB,eAAC/W,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAAQh0B,KAAKJ,OAAd,CACE5B,MAAM,OACNI,GAAG,cACHyD,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAWC,EAAOqhF,YAClBrhF,OAAQ,wBAMlB,eAAC/W,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,aACHJ,MAAM,sBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAWC,EAAO9X,MAClB8X,OAAQ,0BAMlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBAOV,SAAS63H,GAAepwC,GACtB,OAAqC,IAA9BrrF,IAAE4N,KAAKy9E,GAAY1yE,OACtB0yE,EAAW,GACXrrF,IAAE4N,KAAKy9E,GAAY1yE,OAAS,IAGlC,SAASyyE,GAAeC,GACtB,OAAqC,IAA9BrrF,IAAE4N,KAAKy9E,GAAY1yE,QAAe0yE,EAAW,IAAW,G,cCtXlD,SAASixC,KACtB,OACE,eAACpG,GAAD,CACE1zH,MAAM,kBACN2zB,aAAa,iBACbmgG,QAASO,GACTL,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACPpS,mBAAQ,WAAO,IAAD,IACjCgwF,EAAQ,OAAGmE,QAAH,IAAGA,GAAH,UAAGA,EAAKr4D,cAAR,aAAG,EAAah7B,KAAKipB,QAAO,SAAChtB,EAAK6N,GAC9C,IAAM0iF,EAAQ1iF,EAAEuuF,aAAevuF,EAAEsuF,UACjC,OAAI5L,EAAQvwF,EAAYuwF,EACjBvwF,IACN,GACH,MAAO,CACL+D,MAAS,OAAHqzF,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAah7B,OAAQ,GAC3BkvF,SAAUA,KAEX,CAACmE,IAVIrzF,EAD0B,EAC1BA,KAAMkvF,EADoB,EACpBA,SAWRjwF,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVikB,UAAW,cACXhkB,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACV6V,gBAAgB,EAChBzV,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAGzC,CACEzD,GAAI,kBACJmD,OAAQ,aACRC,SAAU,gBACV6V,gBAAgB,EAChBoO,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAGzC,CACEzD,GAAI,MACJmD,OAAQ,MACRC,SAAU,gBAAGyyB,EAAH,EAAGA,KAAH,OAAc1E,IAAOiH,KAAMwc,UAAU/e,IAAOhP,OAAO,SAC7DxjB,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,uBACJmD,OAAQ,eACRC,SAAU,eACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,YACJmD,OAAQ,mBACRC,SAAU,YACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,kBACJmD,OAAQ,qBACRC,SAAU,kBACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,cACJmD,OAAQ,QACRujB,SAAU,SACVzN,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BtlB,SAAU,SAAC0K,GACT,OAAOA,EAAEuuF,aAAevuF,EAAEsuF,WAE5B/0E,UAAW,MACXD,WAAY,YAAc,IAAXzjB,EAAU,EAAVA,IACT6sF,EAAQ,EAKZ,OAJA7sF,EAAIouF,SAASn+E,SAAQ,SAACwrH,GACpB5uC,EACEA,EAAQ4uC,EAAKx7H,SAASy4F,aAAe+iC,EAAKx7H,SAASw4F,aAEhD,eAAC7jC,GAAD,CAAgB90D,MAAO+sF,EAAOh4B,OAAQ,OAGjD,CACEx4D,GAAI,QACJmD,OAAQ,iBACRI,OAAQ0+H,KACR5+H,OAAQ6+H,GACR9+H,SAAU,SAAC0K,GACT,OAAOA,EAAEuuF,aAAevuF,EAAEsuF,WAE5Bh1E,WAAY,WACV,OAAO,gCAET5jB,KAAM,YAAsC,IAAlBsK,EAAiB,EAAlCnK,IAAOC,SAAeH,EAAY,EAAZA,MAE7B,OACE,gBAAC1C,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,gBAACkhI,GAAA,EAAD,CACE7gI,MAAO,CAAEiuC,MAAO,QAASs4B,OAAQ,WACjCzmE,UAAU,YAFZ,UAIE,eAAC+gI,GAAA,EAAD,CACEpgI,QAAQ,UACR04B,IAAK3sB,EAAEsuF,UAEPn8F,IAAKizF,EACLtzF,MAAOkO,EAAEsuF,UAAUzzE,QAAQ,GAC3BzgB,MAAM,kBAHD,GAKP,eAACi6H,GAAA,EAAD,CACEpgI,QAAQ,UACR04B,IAAK3sB,EAAEuuF,aAEPp8F,IAAKizF,EACLtzF,MAAOkO,EAAEuuF,aAAa1zE,QAAQ,GAC9BzgB,MAAM,kBAHD,MAMT,eAACi6H,GAAA,EAAD,CACE7gI,MAAO,CAAEiuC,MAAO,QAASs4B,OAAQ,WACjCzmE,UAAU,YAFZ,SAIE,eAAC+gI,GAAA,EAAD,CACEpgI,QAAQ,UACR04B,IA/BU,EAiCVx6B,IAAKizF,GADA,QAKX,eAAClyF,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,aAAzB,SACE,iCAAQqC,EAAMklB,QAAQ,eAOlC,CAACuqE,IAGH,OACE,eAACnyF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXvS,OAAQ,CAAC,OAAQ,OAAQ,MAAO,QAAS,mBACzC8nB,YAAa,oBAAGjnB,SAAYiyB,GAAf,aAAwB,GAAxB,GAAeA,KAAf,OACX1E,IAAOiH,KAAMwc,UAAU/e,IAAOusG,OAAS,IAAM,EACzC,CAAEhhI,UAAW,iBACb,UAWT,SAAS8gI,GAAT,GAEH,IAAD,IADDjgH,OAAU0tB,EACT,EADSA,YAAa4Q,EACtB,EADsBA,UAAW8hF,EACjC,EADiCA,gBAAiBriI,EAClD,EADkDA,GAClD,EAIkB+E,IAAM7B,SAAQ,WAC/B,IAAI8yB,EAAMqsG,EAAgBhkH,OAASgkH,EAAgB,GAAGj+H,OAAOpE,GAAM,EAC/DC,EAAMoiI,EAAgBhkH,OAASgkH,EAAgB,GAAGj+H,OAAOpE,GAAM,EAKnE,OAJAqiI,EAAgBzuH,SAAQ,SAACjQ,GACvBqyB,EAAMujD,KAAKC,MAAMD,KAAKvjD,IAAIryB,EAAIS,OAAOpE,GAAKg2B,IAC1C/1B,EAAMs5E,KAAKG,KAAKH,KAAKt5E,IAAI0D,EAAIS,OAAOpE,GAAKC,OAEpC,CAAC+1B,GAAO,EAAG/1B,GAAO,KACxB,CAACD,EAAIqiI,IAZP,mBAIMrsG,EAJN,KAIW/1B,EAJX,KAcD,OACE,uCACE,gBAACa,GAAA,EAAKoF,KAAN,CAAWo8H,OAAK,EAAhB,mBACU1tG,WAAW+a,GAAe1vC,GAAK0oB,QAAQ,MAEjD,eAAC7nB,GAAA,EAAK8F,QAAN,CACExF,UAAU,YACVkI,KAAK,QACL0sB,IAAKA,EACL/1B,IAAKA,EACLsiI,KAAK,OACL9+H,MAAOksC,GAAe1vC,EACtB4G,SAAU,SAACC,GACTy5C,EAAU3rB,WAAW9tB,EAAEC,OAAOtD,cC5NzB,SAAS++H,KACtB,OACE,eAAC5G,GAAD,CACE1zH,MAAM,uBACN2zB,aAAa,mBACbmgG,QAASO,GACTL,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAD,IAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAarwB,QAAS,KAAI,CAAC0oF,IAChDp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,yBACJmD,OAAQ,uBACRC,SAAU,eACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,wBACJmD,OAAQ,yBACRC,SAAU,kBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,gBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,qBACJmD,OAAQ,mBACRC,SAAU,eACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,oBACJmD,OAAQ,qBACRC,SAAU,kBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,gBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,aACJmD,OAAQ,aACRC,SAAU,YACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,gBACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,qBACJmD,OAAQ,qBACRC,SAAU,aACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,QAGlC,IAGF,OACE,uCACE,gBAAC3nB,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SAAkB,2BAClB,eAACD,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,oCAAIo2F,QAAJ,IAAIA,GAAJ,UAAIA,EAAKr4D,cAAT,aAAI,EAAayjG,iBAEnB,eAACzhI,EAAA,EAAD,CAAKC,GAAI,OAAT,SAAkB,oBAClB,eAACD,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,oCAAIo2F,QAAJ,IAAIA,GAAJ,UAAIA,EAAKr4D,cAAT,aAAI,EAAa0jG,oBAGrB,eAAC3hI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXvS,OAAQ,CACN,OACA,yBACA,wBACA,sBACA,qBACA,oBACA,kBACA,iBACA,cACA,aACA,eACA,iBACA,+BC3IC,SAASm9H,KAA8B,IAAD,EACPvrH,aAC1C,SAACpS,GAAD,OAAWA,EAAMqS,QADXmE,EAD2C,EAC3CA,QAAS2oB,EADkC,EAClCA,uBAIjB,MAE+B,MAA3BA,GAC2B,MAA3BA,GACA3oB,EAYF,eAAC6iH,GAAD,CACE1zH,MAAM,yBACN2zB,aAAa,uBACbmgG,QAAS2G,GACTzG,OAAQA,GACRnrF,WAAYurF,KAbZ,eAACtrF,GAAD,CACE9oC,MAAM,yBACNgpC,KAAK,2CAgBb,SAAS0xF,GAAT,GAoCE,IA1BE,IATFl2G,EASC,EATDA,KACAm2G,EAQC,EARDA,cACAxC,EAOC,EAPDA,IACAyC,EAMC,EANDA,iBACAC,EAKC,EALDA,UACAC,EAIC,EAJDA,UACAC,EAGC,EAHDA,YACAC,EAEC,EAFDA,WACAC,EACC,EADDA,UAmBM3yC,EAAQ9jE,EAAKO,QAjBH,SAAVykE,EAAWlB,EAAO7sF,GACtB,GAAIA,EAAIkgB,UACN,OAAIlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAExC,GAAY,KAAR6vC,EAAY,CAEd,IADA,IAAIlrE,EAAM,EACD3uD,EAAI,EAAGA,EAAI,GAAIA,IACtB2uD,GAAYvgC,WAAWjxB,EAAIC,SAAS,UAAY4C,IAElD,OAAO2uD,EAAMq7B,EAEb,OAAO57D,WAAWjxB,EAAIC,SAAS,UAAYy8H,IAAQ7vC,IAKtB,GAE/B4yC,EAAqB,EACrBC,EAAc,EACdC,EAAc,EACdC,EAAgB,EAChBC,EAAe,EAEVh9H,EAAI,EAAGA,EAAI,GAAIA,IACV,KAAR65H,GAAcA,IAAQ75H,IACxB48H,GAA0CN,EAAiBt8H,EAAI,GAC/D68H,GAA4BN,EAAUv8H,EAAI,GAC1C88H,GAA4BN,EAAUx8H,EAAI,GAC1C+8H,GAAgCN,EAAYz8H,EAAI,GAChDg9H,GAA8BN,EAAW18H,EAAI,IAIjD,OAAI28H,EAEA,uCACE,gBAACzpH,GAAA,EAAD,CACE3X,QAAQ,UACRmG,MAAM,UACN9G,UAAW,CAAC,MAAO,aAHrB,UAKE,eAAC23D,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,IAC1C23G,GAAOwC,EAAgB,IAAM,QAEhC,eAACnpH,GAAA,EAAD,CACE3X,QAAQ,UACRmG,MAAM,wBACN9G,UAAW,CAAC,MAAO,aAHrB,SAKE,eAAC23D,GAAD,CAAmBt1D,MAAO2/H,EAAoB16G,SAAU,MAE1D,eAAChP,GAAA,EAAD,CACE3X,QAAQ,UACRmG,MAAM,yBACN9G,UAAW,CAAC,MAAO,aAHrB,SAKE,eAAC23D,GAAD,CAAmBt1D,MAAO4/H,EAAa36G,SAAU,MAEnD,eAAChP,GAAA,EAAD,CACE3X,QAAQ,SACRmG,MAAM,eACN9G,UAAW,CAAC,MAAO,aAHrB,SAKE,eAAC23D,GAAD,CAAmBt1D,MAAO8/H,EAAe76G,SAAU,MAErD,eAAChP,GAAA,EAAD,CACE3X,QAAQ,YACRmG,MAAM,mBACN9G,UAAW,CAAC,MAAO,aAHrB,SAKE,eAAC23D,GAAD,CAAmBt1D,MAAO6/H,EAAa56G,SAAU,MAEnD,eAAChP,GAAA,EAAD,CACE3X,QAAQ,YACRmG,MAAM,cACN9G,UAAW,CAAC,MAAO,aAHrB,SAKE,eAAC23D,GAAD,CAAmBt1D,MAAO+/H,EAAc96G,SAAU,MAEpD,eAAChP,GAAA,EAAD,CACE3X,QAAQ,OACRmG,MAAM,aACN9G,UAAW,CAAC,MAAO,aAHrB,SAKE,eAAC23D,GAAD,CACEt1D,MACE+sF,EACAgzC,EACAJ,EACAC,EACAE,EACAD,EACAE,EAEF96G,SAAU,SAMX,eAACqwC,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,IAItD,SAAS+6G,GAAYhgI,EAAOo/H,EAAexC,GACzC,OACE,iCACE,eAACtnE,GAAD,CAAmBt1D,MAAOA,EAAOq1D,WAAW,EAAMpwC,SAAU,IAC3D23G,GAAOwC,EAAgB,IAAM,QAKpC,SAAS3G,GAAT,GAAqC,IAAD,YAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACAnQ,oBAAS,GADT,mBAC3Bg+H,EAD2B,KAChBO,EADgB,KAE5B1/H,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaP,YAAa,KAAI,CAAC44D,IACpDwrC,EAAa,OAAGxrC,QAAH,IAAGA,GAAH,UAAGA,EAAKr4D,cAAR,aAAG,EAAa6jG,cAC7BC,EAAmB5/H,mBACvB,0BAAU,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa8jG,kBAAb,OAAgCzrC,QAAhC,IAAgCA,GAAhC,UAAgCA,EAAKr4D,cAArC,aAAgC,EAAa8jG,iBAAmB,KACvE,QAACzrC,QAAD,IAACA,GAAD,UAACA,EAAKr4D,cAAN,aAAC,EAAa8jG,mBAEVC,EAAY7/H,mBAChB,0BAAU,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa2kG,kBAAb,OAAgCtsC,QAAhC,IAAgCA,GAAhC,UAAgCA,EAAKr4D,cAArC,aAAgC,EAAa2kG,iBAAmB,KACvE,QAACtsC,QAAD,IAACA,GAAD,UAACA,EAAKr4D,cAAN,aAAC,EAAa2kG,mBAEVX,EAAY9/H,mBAChB,0BACK,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa4kG,sBAAb,OACIvsC,QADJ,IACIA,GADJ,UACIA,EAAKr4D,cADT,aACI,EAAa4kG,qBACb,KACN,QAACvsC,QAAD,IAACA,GAAD,UAACA,EAAKr4D,cAAN,aAAC,EAAa4kG,uBAEVX,EAAc//H,mBAClB,0BACK,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa6kG,oBAAb,OAAkCxsC,QAAlC,IAAkCA,GAAlC,UAAkCA,EAAKr4D,cAAvC,aAAkC,EAAa6kG,mBAAqB,KACtE,QAACxsC,QAAD,IAACA,GAAD,UAACA,EAAKr4D,cAAN,aAAC,EAAa6kG,qBAEVX,EAAahgI,mBACjB,0BAAU,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAakkG,YAAb,OAA0B7rC,QAA1B,IAA0BA,GAA1B,UAA0BA,EAAKr4D,cAA/B,aAA0B,EAAakkG,WAAa,KAC3D,QAAC7rC,QAAD,IAACA,GAAD,UAACA,EAAKr4D,cAAN,aAAC,EAAakkG,aAGVjgI,EAAUC,mBAAQ,WAgRtB,MA/Qe,CACb,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASmb,KAAV,CAAe5e,GAAIyD,MAE1C,CACEzD,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,WACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,IACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,EACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,YACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,KACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,GACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,YACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,KACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,GACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,MACJmD,OAAQ,MACRC,SAAU,YACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,KACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,GACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,MAIjB,CACEnjI,GAAI,QACJmD,OAAQ,QACRC,SAAU,YACVyjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UACnC/kB,KAAM,mBAAeigI,GAAf,EAAGhgI,MAA+Bo/H,EAAe,KACvD3zE,OAAQ,gBAAGxiC,EAAH,EAAGA,KAAH,OACN,eAACk2G,GAAD,CACEl2G,KAAMA,EACNm2G,cAAeA,EACfxC,IAAK,GACLyC,iBAAkBA,EAClBC,UAAWA,EACXC,UAAWA,EACXC,YAAaA,EACbC,WAAYA,EACZC,UAAWA,SAOlB,CACDH,EACAH,EACAK,EACAH,EACAD,EACAG,EACAE,IAGF,OACE,uCACE,eAACpiI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,gBAACorC,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAuB,IAAdohE,EACTt8H,SAAU,SAACC,GAAD,OAAO48H,EAAuC,SAA1B58H,EAAE2qG,cAAchuG,QANhD,8BACM,QASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAuB,IAAdohE,EACTt8H,SAAU,SAACC,GAAD,OAAO48H,EAAuC,UAA1B58H,EAAE2qG,cAAchuG,QANhD,yBACM,qBAYZ,eAAC1C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,qBAEF,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,WAQ3B,SAAS43G,GAAT,GAII,IAHFvmG,EAGC,EAHDA,UACAi7D,EAEC,EAFDA,IAEC,IADDttC,UAAWs3C,OACV,MADelwE,MAASuH,QAAQ,QAChC,EACKlb,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXvyF,WAAY,MANf,IAcG8xE,aAAQ,CACVd,KAAM,YACNv7E,cAAc,eACTiR,KAPLisD,EAVD,EAUCA,aACAvH,EAXD,EAWCA,QACAzhD,EAZD,EAYCA,MACaZ,EAbd,EAaCy8C,UAAaz8C,OAQT/I,EAAa2J,EAAM,cACnBogF,EAAmBhpD,GAASptC,OAAO,CAAEzC,GAAI8O,IAE/C,OACE,gBAAChO,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GAAa,IAAD,EAC9B2S,EACa,KAAfrZ,GAAoC,OAAfA,EACjB,sCAAgC+pF,QAAhC,IAAgCA,GAAhC,UAAgCA,EAAkBl2D,gBAAlD,aAAgC,EAA4BjjC,MAC5D,8BACA04B,KAAM0jB,MAAMtmC,EAAQu0C,WAAW5N,UAAU,EAAG,GAClD/f,EAAU,2BACL5mB,GADI,IAEP1G,WAAYpJ,IAAEu+D,MAAMzuD,EAAQ1G,YAAc,GAAK0G,EAAQ1G,WACvDkyH,KAAM5oG,KAAM0jB,MAAMtmC,EAAQu0C,WAAW5N,UAAU,EAAG,GAClD1lC,YAAa0R,QAXnB,UAeE,eAACrnB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,OACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZN,eAAe,gBAOzB,eAAC12B,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,qBAGF,eAACF,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,aACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAa,EACbpC,UAAWC,EAAO/I,WAClB+I,OAAQ,4BAOlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBC1mBK,SAASw6H,KACtB,IAAMC,EAAqB,CACzB,WACA,0BACA,eACA,cACA,iBACA,iBACA,0BACA,cACA,oBACA,iBACA,mBACA,uBACA,eACA,kBACA,cACA,WACA,iBACA,aACA,eACA,cACA,cACA,oBAvBkC,EA+BhCzL,GAAQ,CACV75D,SAAS,IALTviC,EA3BkC,EA2BlCA,KACS8nG,EA5ByB,EA4BlCx0H,QACA5B,EA7BkC,EA6BlCA,QACAmE,EA9BkC,EA8BlCA,WAQF,OAHA+J,qBAAU,WACRlO,MACC,CAACA,IAEF,eAACojC,GAAD,CAAM9oC,MAAM,UAAUipC,WAAY,eAAC,GAAD,IAAlC,SACE,eAACpwC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAD,CACEk7B,KAAI,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAM34B,QAAO,SAACyqB,GAAD,OACjB+1G,EAAmB9yH,SAAS+c,EAAE6N,iBAEhCvmB,UAAW0uH,EACX14G,UAAW,WACT1d,KAEF7K,OAAQ,CAAC,WAAY,OAAQ,cAAe,UAC5CwoB,aAAc,WAAa4F,IAAOpf,GAAYo9D,UAAY,kBAQtE,SAAS6oC,KACP,OACE,gBAACskB,GAAD,WACE,eAACjtB,GAAD,CAAgBltG,GAAG,oBAAnB,sBACA,eAACktG,GAAD,CAAgBltG,GAAG,sCAAnB,wCAGA,eAACktG,GAAD,CAAgBltG,GAAG,eAAnB,8CAGA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,mCAAnB,qCAGA,eAACktG,GAAD,CAAgBltG,GAAG,2BAAnB,6BAGA,eAACktG,GAAD,CAAgBltG,GAAG,sCAAnB,wCAGA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,8BAAnB,gCAGA,eAACktG,GAAD,CAAgBltG,GAAG,yBAAnB,2BACA,eAACktG,GAAD,CAAgBltG,GAAG,2BAAnB,6BAGA,eAACktG,GAAD,CAAgBltG,GAAG,gCAAnB,kCAGA,eAACktG,GAAD,CAAgBltG,GAAG,kCAAnB,oCAGA,eAACktG,GAAD,CAAgBltG,GAAG,yBAAnB,2BACA,eAACktG,GAAD,CAAgBltG,GAAG,0BAAnB,4BAGA,eAACktG,GAAD,CAAgBltG,GAAG,4BAAnB,8BAGA,eAACktG,GAAD,CAAgBltG,GAAG,yBAAnB,2BACA,eAACktG,GAAD,CAAgBltG,GAAG,6BAAnB,oCAGA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,yBAAnB,2BACA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,6BAAnB,kCC7GS,SAAS8hI,KACtB,OACE,eAACrI,GAAD,CACE1zH,MAAM,gBACN2zB,aAAa,eACbmgG,QAASA,GACTE,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAD,EAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACrB,OACE,eAACvU,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAK2B,MAAN,CACEklD,MAAK,OAAEwvC,QAAF,IAAEA,GAAF,UAAEA,EAAKr4D,cAAP,aAAE,EAAah7B,KACpBjB,OAAQ,CACN,OACA,OACA,UACA,KACA,WACA,cACA,cAEFuS,UAAWA,QAOrB,SAAS0mH,GAAQh5H,GACf,OACE,eAACu5H,GAAD,2BACMv5H,GADN,IAEEwS,QAAS,CACP0uH,SAAS,GAHb,SAME,eAACpjI,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,UACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAnB,OACN,eAAC/F,GAAA,EAAKO,MAAN,CACErB,GAAG,UACHJ,MAAM,YACNmiE,QAASt+D,EACToD,SAAU,SAACC,GAAD,OAAOD,EAASC,EAAEC,OAAOg7D,sBCzCpC,SAASoiE,KACtB,OACE,eAACvI,GAAD,CACE1zH,MAAM,iBACN2zB,aAAa,gBACbmgG,QAASoI,GACTlI,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaoF,MAAO,KAAI,CAACizD,IAE9Cp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,QACJmD,OAAQ,QACRC,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEzD,GAAI,SACJmD,OAAQ,SACRC,SAAU,WACVC,OAAQ6wE,GAAGt5B,OAAOnyC,YAClBlF,OAAQ,SACR8jB,UAAW,cACX7jB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGm3C,OAAOnzC,YAAX,CAAuBzH,GAAIyD,MAElD,CACEzD,GAAI,UACJmD,OAAQ,UACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,KACJmD,OAAQ,KACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,0BACJmD,OAAQ,cACRC,SAAU,gBACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BtB,WAAY,YAAc,IAUlBopE,EAViB,EAAV7sF,IAUKypB,QAAQH,QATV,SAAVykE,EAAWlB,EAAOhsE,GACtB,OAAIA,EAAKX,UACHW,EAAK8C,WAAmBkpE,EAChBhsE,EAAK4I,QAAQH,OAAOykE,EAASlB,GAGpC,CAAEpsD,IAFMosD,EAAMpsD,IAAM,EAELz1B,MADL6hF,EAAM7hF,MAAQ6V,EAAK5gB,SAASygI,iBAIL,CAAEjgG,IAAK,EAAGz1B,MAAO,IACrD21H,EAAM9zC,EAAM7hF,MAAQ6hF,EAAMpsD,IAChC,OAAO,sBAAKhjC,UAAU,aAAf,SAA6BkjI,EAAI37G,QAAQ,MAElDumC,OAAQ,YAAe,IAUfshC,EAVc,EAAX9jE,KAUUO,QATH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAGnC,CAAEpsD,IAFMosD,EAAMpsD,IAAM,EAELz1B,MADL6hF,EAAM7hF,MAAQhL,EAAIC,SAASygI,iBAIX,CAAEjgG,IAAK,EAAGz1B,MAAO,IAC9C21H,EAAM9zC,EAAM7hF,MAAQ6hF,EAAMpsD,IAChC,OAAO,sBAAKhjC,UAAU,aAAf,SAA6BkjI,EAAI37G,QAAQ,OAGpD,CACE3oB,GAAI,cACJmD,OAAQ,QACRC,SAAU,aACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS8wB,YAAc87D,IAGZ,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,YACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASw4F,WAAa5L,IAGX,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,gBACJmD,OAAQ,gBACRC,SAAU,eACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASy4F,cAAgB7L,IAGd,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGP,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,SAIvC,IAGF,OACE,qCACE,eAACzvF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,QACA,SACA,KACA,UACA,WACA,0BACA,iBACA,gBACA,cACA,iBASd,SAASqhI,GAAT,GAKI,IAJFhoG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,UAAWs3C,OAEV,MAFelwE,MAASuH,QAAQ,SAEhC,MADD2yB,QAASi2C,OACR,MADanwE,MAASguE,MAAM,SAC5B,EACK3hF,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADtD,EAQG2iF,EALF7hF,eAHD,MAGW,CACRirB,OAAQjjB,EACRusC,UAAWs3C,EACXh2C,QAASi2C,GANZ,IAcG1gB,aAAQ,CACVd,KAAM,YACNv7E,cAAc,aACZwlD,UAAW,GACXsB,QAAS,IACN71C,KATLisD,EAVD,EAUCA,aACAvH,EAXD,EAWCA,QACAzhD,EAZD,EAYCA,MACaZ,EAbd,EAaCy8C,UAAaz8C,OAUTwzC,EAAU5yC,EAAM,WAChBsxC,EAAYtxC,EAAM,aAExB,OACE,gBAAC3X,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GACtB,IAAI2S,EACF,QACAiQ,KAAM0c,QAAQt/B,EAAQu0C,WACtB,OACA3xB,KAAM0c,QAAQt/B,EAAQ61C,SAExBjvB,EAAU,2BACL5mB,GADI,IAEPszB,QAAStzB,EAAQszB,QACjBihB,UAAW3xB,KAAM0jB,MAAMtmC,EAAQu0C,WAC/BsB,QAASjzB,KAAM0jB,MAAMtmC,EAAQ61C,SAC7B50C,YAAa0R,QAbnB,UAiBE,gBAACrnB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,aACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAASwzB,SAKjB,eAACrqD,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,UACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAASmyB,YAMnB,eAACjpD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,UACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAAGglB,OAAOp5C,OAAX,CACE5B,MAAM,UACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAa,EACbnY,SAAS,EACT+V,UAAWC,EAAOixB,QAClBjxB,OAAQ,0BAMlB,eAAC9W,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBC1UV,IAAMvG,GAAS,CACb,OACA,OACA,SACA,KACA,eACA,OACA,QACA,OACA,QACA,gBAGI0b,GAAU,CAAC,OAAQ,OAAQ,UAElB,SAAS8lH,KACtB,OACE,eAAC3I,GAAD,CACE1zH,MAAM,mBACN2zB,aAAa,kBACbmgG,QAASwI,GACTtI,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACYnQ,oBAAS,GADrB,mBAC3B40F,EAD2B,KACVC,EADU,OAEE70F,mBAAS,MAFX,mBAE3B80F,EAF2B,KAEfC,EAFe,KAG5Bl2F,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaghD,OAAQ,KAAI,CAACqX,IAE/C8mC,EAAqBp2H,uBACzB,SAACmjD,GACCgvC,EAAchvC,GACd8uC,GAAmB,KAErB,CAACE,EAAeF,IAGZ/2F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAACO,GAAD,OAAuB,IAAbA,EAAI8X,KAAa,MAAQ9X,EAAI8X,MACjDpY,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGQ,KAAJ,CAASjE,GAAIyD,MAEpC,CACEzD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,YAAqB,IAAD,EAAjBC,EAAiB,EAAjBA,MAAOE,EAAU,EAAVA,IACd,OACE,eAAC,GAAKgwF,gBAAN,CACEzoC,OAAM,OAAEvnD,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAesnD,OACvBznD,MAAOA,EACP61D,cAAe6kE,MAKvB,CACEn+H,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,eAEb,CACErnB,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,eAEb,CACErnB,GAAI,SACJmD,OAAQ,SACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,eACJmD,OAAQ,eACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGP,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,MAGrC,CACExwF,GAAI,iBACJmD,OAAQ,eACRC,SAAU,eACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,kBAGf,CAAC82G,IAGH,OACE,uCACE,eAAC,GAAK5uC,YAAN,CACEvvF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjCxjC,SAAU,kBAAMwjC,GAAmB,MAErC,eAACj5F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQA,GACR0nB,eAAgBhM,YAQ5B,SAAS+lH,GAAuBxhI,GAC9B,OACE,gBAACu5H,GAAD,2BACMv5H,GADN,IAEEwS,QAAS,CACP0uH,SAAS,EACTO,qBAAqB,EACrBC,oBAAoB,EACpBC,gBAAgB,EAChBC,kBAAkB,GAPtB,UAUE,eAAC9jI,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,sBACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,sBACHJ,MAAM,yBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAMpB,eAAC/F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,qBACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,qBACHJ,MAAM,wBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAMpB,eAAC/F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,iBACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,iBACHJ,MAAM,+CACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,WAMpB,eAAC/F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,mBACLmgB,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,mBACHJ,MAAM,wDACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,eC5RX,SAASg+H,KACtB,OACE,eAACjJ,GAAD,CACE1zH,MAAM,gBACN2zB,aAAa,cACbmgG,QAASO,GACTL,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAD,EAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACrB,OACE,eAACvU,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAK2B,MAAN,CACEklD,MAAK,OAAEwvC,QAAF,IAAEA,GAAF,UAAEA,EAAKr4D,cAAP,aAAE,EAAah7B,KACpBjB,OAAQ,CAAC,OAAQ,OAAQ,KAAM,cAAe,cAC9CuS,UAAWA,QCZN,SAASwvH,KACtB,OACE,eAAClJ,GAAD,CACE1zH,MAAM,mCACN2zB,aAAa,WACbmgG,QAAS+I,GACT7I,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAD,EAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACM+hF,EAAhCr4D,OAD0B,gBACD,GADC,GAChBrwB,aADgB,MACR,GADQ,EAE5BuvH,EAAgB,OAAG7mC,QAAH,IAAGA,GAAH,UAAGA,EAAKr4D,cAAR,aAAG,EAAak/F,iBAChC9lB,EAAcl1G,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAao5E,cAAe,KAAI,CAAC/gB,IAHjC,EAILn0F,mBAC3B,kBACO,OAALyL,QAAK,IAALA,OAAA,EAAAA,EAAOse,QACL,SAAC+3G,EAAWtwH,GAmBV,OAlBaA,EAAKogH,KAAK7nG,QAAO,SAACg4G,EAAUC,GAAS,IAAD,EAgB/C,MAfa,CACX11B,QAASy1B,EAASz1B,QAAQj8F,OAAjB,OACP2xH,QADO,IACPA,GADO,UACPA,EAAKllD,YADE,aACP,EAAWz5E,KAAI,SAACwR,GACd,OAAO,2BACFA,GADL,IAEE0oB,OAAQ/rB,EAAK+rB,OACb5K,KAAMqvG,EAAIrvG,KACVnB,WAAY3c,EAAE4c,YAIpBiqG,QAASqG,EAASrG,QAAQrrH,OAAO,CAAC,2BAC3B2xH,GAD0B,IACrBzkG,OAAQ/rB,EAAK+rB,OAAQva,UAAU,SAI5C8+G,KAGL,CAAEx1B,QAAS,GAAIovB,QAAS,OACrB,KACP,CAACjwH,IA1BKiwH,EAJ0B,EAI1BA,QAASpvB,EAJiB,EAIjBA,QA4BjB,OAAIl6F,EACK,eAACunF,GAAD,CAAch1F,KAAMyN,IAClB4oH,EAEP,eAAC/lB,GAAD,CACEC,YAAaA,EACb12F,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAU0hC,EAAIr3F,IACtCsE,YAAY,IAKd,eAACvD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACm1E,GAAA,EAAD,CAAMC,iBAAiB,UAAvB,UACE,eAACC,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAA9B,SACE,eAAC,GAAD,CAASlE,KAAM46H,EAAStpH,UAAWA,MAErC,eAAC+gE,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAAU2wH,cAAc,EAAtD,SACE,eAAC,GAAKl2H,MAAN,CACEklD,MAAO2nD,EACPl6F,UAAWA,EACXvS,OAAQ,CACN,OACA,OACA,KACA,WACA,cACA,yBAWlB,SAASgiI,GAAgB/hI,GACvB,OACE,eAACu5H,GAAD,2BAAmBv5H,GAAnB,IAA0BwS,QAAS,CAAE0oH,kBAAkB,GAAvD,SACE,eAACp9H,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,mBACLmgB,OAAQ,oBACNpI,MAAShU,EADH,EACGA,MAAOoD,EADV,EACUA,SAAU+uB,EADpB,EACoBA,OACZ9oB,EAFR,EAEN4K,WAAc5K,MAFR,OAIN,eAAC+vH,GAAD,CACE78H,GAAG,mBACHJ,MAAM,yBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAW9K,EACX+K,OAAQ,6BAUxB,SAASgnH,GAAT,GAAuC,IAApB76H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UACjBrS,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,SAEb,CACErnB,GAAI,OACJmD,OAAQ,OACRC,SAAU,gBAAGyyB,EAAH,EAAGA,KAAH,OAAcuC,KAAM0c,QAAQ1c,KAAMwc,UAAU/e,KACtDxO,UAAW,cACXhkB,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAcG,EAAjB,EAAUD,IAAOC,SAAjB,gBACDH,EADC,YACQG,EAASuhI,sBAEzB,CACEnlI,GAAI,WACJmD,OAAQ,YACRC,SAAU,WACVsjB,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,IAEtBrB,UAAW,MAEXD,WAAY,YAAuD,IAApD3jB,EAAmD,EAAnDA,MAAmD,IAA5Cwe,OACdkF,GAAiBD,EADyC,EAAlCA,mBACWzjB,EADuB,EAAfojB,QAEjD,OAAO,4CAAYM,UAIzB,IAEF,OACE,eAACxkB,GAAA,EAAD,CACE8qB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACLnF,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXmV,eAAgB,CAAC,QACjBC,iBAAiB,EACjBG,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,CAAEziB,UAAW,mBAC3B,MC3JL,SAASgkI,KACtB,OACE,eAACxJ,GAAD,CACE1zH,MAAM,yBACN2zB,aAAa,iBACbmgG,QAASqJ,GACTnJ,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa55B,UAAW,KAAI,CAACiyF,IAElDp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,aACJmD,OAAQ,aACRC,SAAU,YACVC,OAAQC,KACRC,OAAQ,SACRC,KAAM,sBAAGC,EAAH,EAAGA,MAAOE,EAAV,EAAUA,IAAV,OACJ,qCAC6B,QAAvB,OAAHA,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe8d,QACd,eAAC,OAAD,CACE3a,OAAO,SACP3F,UAAU,aACVe,GAAI,CAAEC,SAAS,aAAD,OAAeqB,IAH/B,UAKM,OAAHE,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe8d,QAAS,IAAMje,IAGjC,eAAC,OAAD,CACEsD,OAAO,SACP3F,UAAU,aACVe,GAAI,CAAEC,SAAS,QAAD,OAAUqB,IAH1B,UAKM,OAAHE,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe8d,QAAS,IAAMje,QAMzC,CACEzD,GAAI,QACJmD,OAAQ,QACRC,SAAU,UAEVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAKQ,KAAN,CAAWjE,GAAIyD,EAAOwU,QAAQ,KACnD5U,OAAQC,KACRC,OAAQ,QAEV,CACEJ,OAAQ,QACRnD,GAAI,QACJoD,SAAU,UACVC,OAAQ4Y,KAAKva,MAAM+G,YACnBlF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,KAAK/B,MAAM+F,YAAZ,CAAwBzH,GAAIyD,MAEnD,CACEN,OAAQ,iBACRnD,GAAI,iBACJoD,SAAU,gBACVC,OAAQogE,GAAQlR,OAAO9pD,YACvBlF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ8uD,OAAO9qD,YAAhB,CAA4BzH,GAAIyD,MAEvD,CACEN,OAAQ,OACRnD,GAAI,OACJoD,SAAU,SACVC,OAAQogE,GAAQ7hE,KAAK6G,YACrBlF,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAIyD,MAErD,CACEN,OAAQ,cACRnD,GAAI,cACJoD,SAAU,iBACVG,OAAQ+4C,KACRj5C,OAAQk5C,KACRL,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,QAE3D90B,UAAW,eAEb,CACElkB,OAAQ,cACRnD,GAAI,cACJoD,SAAU,qBACVG,OAAQ+4C,KACRj5C,OAAQk5C,KACRL,SAAU,SAEV14C,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCACGA,EACG20B,KAAM0c,QAAQ1c,KAAMwc,UAAN,OAAgBnxC,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAO04C,UAAU,EAAG,KAClD,QAGR90B,UAAW,eAEb,CACErnB,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,sBAAKnC,MAAO,CAAEC,SAAU,QAAS22E,SAAU,SAA3C,SAAuDz0E,MAG3D,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,sBAAKnC,MAAO,CAAEC,SAAU,QAAS22E,SAAU,SAA3C,SAAuDz0E,MAG3D,CACEzD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,UACVC,OAAQC,KACRC,OAAQ,WAGZ,IAGF,OACE,qCACE,eAACxC,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACqB,UAAf,OAAHq2F,QAAG,IAAHA,OAAA,EAAAA,EAAK3qF,UACJ,eAACgN,GAAA,EAAD,CAAO3X,QAAQ,SAAf,gBAAyBs1F,QAAzB,IAAyBA,OAAzB,EAAyBA,EAAK1qF,kBAE9B,eAAChK,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhnB,UAAU,EACVhB,OAAQ,CACN,aACA,WACA,WACA,cACA,QACA,WACA,QACA,OACA,iBACA,cACA,cACA,2BAUhB,SAASsiI,GAAT,GAKI,IAJFjpG,EAIC,EAJDA,UACAi7D,EAGC,EAHDA,IAGC,IAFDttC,iBAEC,MAFW54B,MAASuH,QAAQ,SAASC,SAAS,EAAG,SAEjD,MADD0yB,eACC,MADS,GACT,EACO71C,EAAY6hF,EAAZ7hF,QADP,EAQGorE,aAAQ,CACVd,KAAM,YACNv7E,cAAc,aACZk6B,UAAW,GACXhwB,MAAO,GACPC,OAAQ,GACR42H,gBAAiBv7E,EACjBw7E,cAAel6E,EACfm6E,cAAe,GACfC,YAAa,GACbC,cAAc,EACdC,YAAa,GACbC,YAAa,GACbC,YAAa,IACVrwH,KAnBLisD,EAHD,EAGCA,aACAvH,EAJD,EAICA,QACAzhD,EALD,EAKCA,MACAiY,EAND,EAMCA,SACa7Y,EAPd,EAOCy8C,UAAaz8C,OAmBT0tH,EAAgB9sH,EAAM,iBACtB6sH,EAAkB7sH,EAAM,mBAExBgtH,EAAchtH,EAAM,eACpB+sH,EAAgB/sH,EAAM,iBAE5B,OACE,gBAAC3X,GAAA,EAAD,CACEuD,SAAUo9D,GAAa,SAACjsD,GACtB,IAAIswH,EAAW,GACX9xB,EAAU,EAEV+xB,EAAevwH,EAAQmwH,YAAYj8F,QAAQ,MAAO,IACtD,GAAIq8F,EAAa1nH,OAAS,EACxBqS,EAAS,cAAe,CACtBpnB,KAAM,SACNyD,QAAS,sDAMb,IADAg5H,EAAevwH,EAAQowH,YAAYl8F,QAAQ,MAAO,KACjCrrB,OAAS,GAAK0nH,EAAa1nH,OAAS,EACnDqS,EAAS,cAAe,CACtBpnB,KAAM,SACNyD,QAAS,sDAKb,IADAg5H,EAAevwH,EAAQqwH,YAAYn8F,QAAQ,MAAO,KACjCrrB,OAAS,GAAK0nH,EAAa1nH,OAAS,EACnDqS,EAAS,cAAe,CACtBpnB,KAAM,SACNyD,QAAS,qDAHb,CAQmC,KAA/ByI,EAAQmwH,YAAYv3G,SACtB03G,EAAShoH,KAAK,CAAEs4F,IAAK5gG,EAAQmwH,YAAar8H,KAAM,MAChD0qG,KAEiC,KAA/Bx+F,EAAQowH,YAAYx3G,SAClB4lF,EAAU,GAAG8xB,EAAShoH,KAAK,CAAEs4F,IAAK,MAAO9sG,KAAM,MACnDw8H,EAAShoH,KAAK,CAAEs4F,IAAK5gG,EAAQowH,YAAat8H,KAAM,MAChD0qG,KAEiC,KAA/Bx+F,EAAQqwH,YAAYz3G,SAClB4lF,EAAU,GAAG8xB,EAAShoH,KAAK,CAAEs4F,IAAK,MAAO9sG,KAAM,MACnDw8H,EAAShoH,KAAK,CAAEs4F,IAAK5gG,EAAQqwH,YAAav8H,KAAM,MAChD0qG,KAIF,IADA,IAAI7rF,EAAO,GACFxG,EAAI,EAAGA,EAAImkH,EAASznH,OAAQsD,IACnCwG,EAAOA,EAAO29G,EAASnkH,GAAGy0F,IAAM,IAGlCh6E,EAAU,2BACL5mB,GADI,IAEP8vH,gBAAiBltG,KAAM0jB,MAAMtmC,EAAQ8vH,iBACrCC,cAAentG,KAAM0jB,MAAMtmC,EAAQ+vH,eACnCC,cAAeptG,KAAM0jB,MAAMtmC,EAAQgwH,eACnCC,YAAartG,KAAM0jB,MAAMtmC,EAAQiwH,aACjCK,SAAUA,EACVrvH,YAAa0R,SA1DnB,UA8DE,gBAACrnB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,kBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,2BACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAAS0tG,SAKjB,eAACvkI,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,gBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAAS0tG,YAMnB,gBAACxkI,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,gBACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,iCACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZD,QAAS4tG,SAKjB,eAACzkI,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACsB,GAAA,EAAD,CACEt3B,MAAM,WACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVixB,YAAY,EACZF,QAAS4tG,YAMnB,gBAAC1kI,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,SACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,KAAKp0B,OAAN,CACE5B,MAAM,SACNI,GAAG,SACH6B,SAAO,EACP4B,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVm/H,QAAM,EACNhsH,aAAW,EACXtW,QAAQ,SAKhB,eAAC1C,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,YACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAASp0B,OAAV,CACE5B,MAAM,YACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXnY,SAAO,YAMjB,gBAACf,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,QACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,GAAQh0B,KAAKJ,OAAd,CACE5B,MAAM,QACNI,GAAG,QACH6B,SAAO,EACP4B,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,SAKnB,eAAChZ,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,SACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAAC,KAAKl0B,MAAMF,OAAZ,CACE5B,MAAM,SACNI,GAAG,SACH6B,SAAO,EACP4B,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,YAMrB,eAAClZ,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,eACLw6D,QAASA,EACTr6C,OAAQ,oBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACinG,GAAD,CACE78H,GAAG,eACHJ,MAAM,0BACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVgR,OAAQ,0BAMlB,gBAAC/W,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,cACLw6D,QAASA,EACT4H,MAAO,CAAEjiE,UAAU,GACnBggB,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEj3D,GAAG,cACHJ,MAAM,kBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAWC,EAAO8tH,YAClB9tH,OAAM,UAAEA,EAAO8tH,mBAAT,aAAE,EAAoB54H,eAKpC,eAAC/L,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEj3D,GAAG,cACHJ,MAAM,0BACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAWC,EAAO+tH,YAClB/tH,OAAM,UAAEA,EAAO+tH,mBAAT,aAAE,EAAoB74H,eAKpC,eAAC/L,EAAA,EAAD,CAAKC,GAAI,EAAG4Y,GAAI,EAAhB,SACE,eAAC,KAAD,CACEna,KAAK,cACLw6D,QAASA,EACTr6C,OAAQ,sBAAGpI,MAAShU,EAAZ,EAAYA,MAAOoD,EAAnB,EAAmBA,SAAU+uB,EAA7B,EAA6BA,OAA7B,OACN,eAACqhC,GAAD,CACEj3D,GAAG,cACHJ,MAAM,0BACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAWC,EAAOguH,YAClBhuH,OAAM,UAAEA,EAAOguH,mBAAT,aAAE,EAAoB94H,kBAMtC,eAAChM,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQwH,KAAK,SAAb,wBChgBK,SAAS28H,KACtB,OACE,eAACrK,GAAD,CACE1zH,MAAM,eACN2zB,aAAa,cACbmgG,QAASO,GACTL,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UACftR,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAa55B,UAAW,KAAI,CAACiyF,IAElDp0F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASsiI,UAAY11C,IAGV,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASuiI,UAAY31C,IAGV,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,YACJmD,OAAQ,YACRC,SAAU,WACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASwiI,UAAY51C,IAGV,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,iBACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAASyiI,gBAAkB71C,IAGhB,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,mBACJmD,OAAQ,mBACRC,SAAU,iBACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS0iI,gBAAkB91C,IAGhB,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,sBACJmD,OAAQ,sBACRC,SAAU,mBACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS2iI,kBAAoB/1C,IAGlB,GAEnC,OAAO,qCAAGA,MAId,CACExwF,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4iI,YAAch2C,IAGZ,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS6iI,YAAcj2C,IAGZ,GAEnC,OAAO,qCAAGA,MAGd,CACExwF,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACV6V,gBAAgB,EAChB4N,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS8iI,YAAcl2C,IAGZ,GAEnC,OAAO,qCAAGA,SAIhB,IAGF,OACE,qCACE,eAACzvF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,UC3NZ,SAAS47G,KACtB,OACE,eAAC/K,GAAD,CACE1zH,MAAM,eACN2zB,aAAa,aACbmgG,QAAS4K,GACT1K,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACYnQ,oBAAS,GADrB,mBAC3B40F,EAD2B,KACVC,EADU,OAEE70F,mBAAS,MAFX,mBAE3B80F,EAF2B,KAEfC,EAFe,KAG5Bl2F,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaghD,OAAQ,KAAI,CAACqX,IAE/C8mC,EAAqBp2H,uBACzB,SAACmjD,GACCgvC,EAAchvC,GACd8uC,GAAmB,KAErB,CAACE,EAAeF,IAGZ/2F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,QACJmD,OAAQ,QACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,KACJmD,OAAQ,KACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,YAAqB,IAAD,EAAjBC,EAAiB,EAAjBA,MAAOE,EAAU,EAAVA,IACd,OACE,eAAC,GAAKgwF,gBAAN,CACEzoC,OAAM,OAAEvnD,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAe5D,GACvByD,MAAOA,EACP61D,cAAe6kE,MAKvB,CACEn+H,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,eAEb,CACErnB,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,YAErC,CACEvoB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGP,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,SAIvC,CAAC2tC,IAGH,OACE,uCACE,eAAC,GAAK5uC,YAAN,CACEvvF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjCxjC,SAAU,kBAAMwjC,GAAmB,MAErC,eAACj5F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEiC,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,WACA,KACA,eACA,kBACA,OACA,OACA,OACA,OACA,QACA,kBASd,SAAS6jI,GAAkB5jI,GACzB,OACE,gBAACu5H,GAAD,2BACMv5H,GADN,IAEEwS,QAAS,CACPzV,MAAO,GACP6zC,SAAU,GACVslD,YAAa,IALjB,UAQE,eAACp4F,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,cACLmgB,OAAQ,oBACNpI,MAAShU,EADH,EACGA,MAAOoD,EADV,EACUA,SAAU+uB,EADpB,EACoBA,OACZ9oB,EAFR,EAEN4K,WAAc5K,MAFR,OAIN,eAAC,GAAQlL,KAAKJ,OAAd,CACE5B,MAAM,OACNI,GAAG,cACHyD,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAW9K,EACX+K,OAAQ,wBAMlB,eAAC/W,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,QACLmgB,OAAQ,oBACNpI,MAAShU,EADH,EACGA,MAAOoD,EADV,EACUA,SAAU+uB,EADpB,EACoBA,OACZ9oB,EAFR,EAEN4K,WAAc5K,MAFR,OAIN,eAAC,KAAKtL,OAAN,CACExB,GAAG,QACHJ,MAAM,WACN8D,QAAQ,EACRD,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAW9K,EACX+K,OAAQ,wBAMlB,eAAC/W,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,WACLmgB,OAAQ,oBACNpI,MAAShU,EADH,EACGA,MAAOoD,EADV,EACUA,SAAU+uB,EADpB,EACoBA,OACZ9oB,EAFR,EAEN4K,WAAc5K,MAFR,OAIN,eAAC,KAAKtL,OAAN,CACE5B,MAAM,WACNuU,YAAY,EACZ1Q,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACVmT,aAAW,EACXpC,UAAW9K,EACX+K,OAAQ,gCC7PT,SAASgvH,KACtB,OACE,eAACjL,GAAD,CACE1zH,MAAM,gBACN2zB,aAAa,eACbmgG,QAASO,GACTL,OAAQA,GACRnrF,WAAYurF,KAKlB,SAASJ,GAAT,GAAqC,IAAnB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACYnQ,oBAAS,GADrB,mBAC3B40F,EAD2B,KACVC,EADU,OAEE70F,mBAAS,MAFX,mBAE3B80F,EAF2B,KAEfC,EAFe,KAG5Bl2F,EAAOd,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAaghD,OAAQ,KAAI,CAACqX,IAE/C8mC,EAAqBp2H,uBACzB,SAACmjD,GACCgvC,EAAchvC,GACd8uC,GAAmB,KAErB,CAACE,EAAeF,IAGZ/2F,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,eAEb,CACErnB,GAAI,QACJmD,OAAQ,QACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,KACJmD,OAAQ,KACRC,SAAU,SAACO,GAAD,OAAuB,IAAbA,EAAI8X,KAAa,MAAQ9X,EAAI8X,MACjDpY,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAGQ,KAAJ,CAASjE,GAAIyD,MAEpC,CACEzD,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SAERC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,qCAAG20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAExD,CACEzD,GAAI,eACJmD,OAAQ,eACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OAERC,KAAM,YAAqB,IAAD,EAAjBC,EAAiB,EAAjBA,MAAOE,EAAU,EAAVA,IACd,OACE,eAAC,GAAKgwF,gBAAN,CACEzoC,OAAM,OAAEvnD,QAAF,IAAEA,GAAF,UAAEA,EAAKC,gBAAP,aAAE,EAAesnD,OACvBznD,MAAOA,EACP61D,cAAe6kE,MAKvB,CACEn+H,GAAI,WACJmD,OAAQ,WACRC,SAAU,eACVC,OAAQC,KACRC,OAAQ,OACR8jB,UAAW,eAEb,CACErnB,GAAI,uBACJmD,OAAQ,uBACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,WACnClB,UAAW,eAEb,CACErnB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SACRsjB,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,YAErC,CACEvoB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,KAEhC,CACE1oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,SACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS+wB,OAAS67D,IAGP,GAEnC,OAAO,sBAAKpvF,UAAU,aAAf,SAA6BovF,EAAM7nE,QAAQ,OAGtD,CACE3oB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV6V,gBAAgB,EAChByN,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MAEX6nC,OAAQ,YAAe,IAQfshC,EARc,EAAX9jE,KAQUO,QAPH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EACf7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GACnC57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGP,GAEnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,SAIvC,CAAC2tC,IAGH,OACE,uCACE,eAAC,GAAK5uC,YAAN,CACEvvF,GAAIi6F,EACJpyF,KAAMkyF,EACN1xF,OAAQ,kBAAM2xF,GAAmB,IACjCxjC,SAAU,kBAAMwjC,GAAmB,MAErC,eAACj5F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEM,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfhoB,OAAQ,CACN,WACA,KACA,eACA,uBACA,OACA,QACA,OACA,OACA,OACA,QACA,kBCnLC,SAAS+jI,KACtB,OACE,eAAClL,GAAD,CACE1zH,MAAM,eACN2zB,aAAa,cACbmgG,QAAS+K,GACT7K,OAAQA,GACRnrF,WAAYurF,GACZlrF,iBAAiB,IAKvB,SAAS8qF,GAAT,GAAqC,IAAD,EAAlB7kC,EAAkB,EAAlBA,IAAK/hF,EAAa,EAAbA,UAAa,EACyB+hF,EAAnDr4D,OAD0B,gBACkB,GADlB,GAChBrwB,aADgB,MACR,GADQ,MACJq4H,qBADI,MACY,EADZ,EAE5B9I,EAAgB,OAAG7mC,QAAH,IAAGA,GAAH,UAAGA,EAAKr4D,cAAR,aAAG,EAAak/F,iBAChC9lB,EAAcl1G,mBAAQ,wBAAS,OAAHm0F,QAAG,IAAHA,GAAA,UAAAA,EAAKr4D,cAAL,eAAao5E,cAAe,KAAI,CAAC/gB,IAE7D4vC,EAAa,SAACvyH,GAAD,OAAU,SAAC0vB,EAAK8a,GAAQ,IAAD,EAuBxC,OAtBa9a,EAAI7wB,OAAJ,OACX2rC,QADW,IACXA,GADW,UACXA,EAAI8gC,YADO,aACX,EAAUz5E,KAAI,SAACwR,GACb,OAAO,2BACFA,GADL,IAEE0oB,OAAQ/rB,EAAK+rB,OACb/L,WAAY3c,EAAE4c,MACdlZ,KAAMyjC,EAAGl/C,GACTknI,SAAUhoF,EAAGU,OACbmB,SAAU7B,EAAG6B,SACbtiB,UAAW,CACT,CACE/+B,KAAMw/C,EAAGogD,eAGbtN,qBACE,oBACE1wF,MAAO,CAAE42E,SAAU,QAASvsC,WAAY,YAD1C,mBAEKuT,EAAG6B,SAFR,aAEqB7B,EAAGsG,oBAvBA,EA8BLtiD,mBAC3B,kBACO,OAALyL,QAAK,IAALA,OAAA,EAAAA,EAAOse,QACL,SAAC+3G,EAAD,GAAsE,IAAD,MAAvDmC,EAAuD,EAAvDA,SAAUC,EAA6C,EAA7CA,aAAcC,EAA+B,EAA/BA,gBAAoB3yH,EAAW,8DAC7DmzC,EAAQ,GACXt0C,QAAe,OAAR4zH,QAAQ,IAARA,GAAA,UAAAA,EAAU/iG,WAAV,eAAenX,OAAOg6G,EAAWvyH,GAAO,MAAO,IACtDnB,QAAmB,OAAZ6zH,QAAY,IAAZA,GAAA,UAAAA,EAAchjG,WAAd,eAAmBnX,OAAOg6G,EAAWvyH,GAAO,MAAO,IAC1DnB,QAAsB,OAAf8zH,QAAe,IAAfA,GAAA,UAAAA,EAAiBjjG,WAAjB,eAAsBnX,OAAOg6G,EAAWvyH,GAAO,MAAO,IAC1D86F,EAAUw1B,EAAUx1B,QAAQj8F,OAAO,CACvCktB,OAAQ/rB,EAAK+rB,OACbonB,UAwBF,MAAO,CAAE+2E,QAtBOoG,EAAUpG,QAAQrrH,OAAO,CAAC,aAEtCktB,OAAQ/rB,EAAK+rB,OACbn3B,KAAM,gBACHoL,EAAK4yH,qBAJ6B,aAOrC7mG,OAAQ/rB,EAAK+rB,OACbn3B,KAAM,gBACHoL,EAAK6yH,sBAT6B,aAYrC9mG,OAAQ/rB,EAAK+rB,OACbn3B,KAAM,oBACHoL,EAAK8yH,yBAd6B,aAiBrC/mG,OAAQ/rB,EAAK+rB,OACbn3B,KAAM,oBACHoL,EAAK+yH,4BAGMj4B,aAEpB,CAAEovB,QAAS,GAAIpvB,QAAS,OACrB,KACP,CAAC7gG,IAtCKiwH,EA9B0B,EA8B1BA,QAASpvB,EA9BiB,EA8BjBA,QA9BiB,EAuEErqG,mBAAS,WAvEX,mBAuE3BuiI,EAvE2B,KAuEfC,EAvEe,KAyElC,OAAIryH,EACK,eAACunF,GAAD,CAAch1F,KAAMyN,IAClB4oH,EAEP,eAAC/lB,GAAD,CACEC,YAAaA,EACb12F,OAAQ,CAAEA,OAAQ,KAAMi0C,SAAU0hC,EAAIr3F,IACtCsE,YAAY,IAKd,gBAAC6xE,GAAA,EAAD,CAAMyyB,UAAW8+B,EAAYxiI,SAAU,SAACyjC,GAAD,OAAOg/F,EAAch/F,IAA5D,UACE,gBAAC0tC,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAA9B,UACE,eAACnH,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CAASoH,KAAK,KAAK9G,MAAO,CAAEiuC,MAAO,OAAQhuC,SAAU,KAArD,SACE,iCACE,gCACE,qBAAI+H,KAAK,MAAT,4BACA,8BAAK09H,eAMf,eAACjmI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAD,CAASgD,KAAM46H,EAAStpH,UAAWA,WAIzC,eAAC+gE,GAAA,EAAD,CAAKC,SAAS,UAAUpuE,MAAM,UAAU2wH,cAAc,EAAtD,SACE,eAAC,GAAD,CAAQ70H,KAAMwrG,EAASl6F,UAAWA,SAO5C,SAASyxH,GAAmB/jI,GAC1B,OACE,eAACu5H,GAAD,2BAAmBv5H,GAAnB,IAA0BwS,QAAS,CAAE0oH,kBAAkB,GAAvD,SACE,eAACp9H,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,GAAI4Y,GAAI,EAAjB,SACE,eAAC,KAAD,CACEna,KAAK,mBACLmgB,OAAQ,oBACNpI,MAAShU,EADH,EACGA,MAAOoD,EADV,EACUA,SAAU+uB,EADpB,EACoBA,OACZ9oB,EAFR,EAEN4K,WAAc5K,MAFR,OAIN,eAAC+vH,GAAD,CACE78H,GAAG,mBACHJ,MAAM,yBACN6D,MAAOA,EACPmyB,OAAQA,EACR/uB,SAAUA,EACV+Q,UAAW9K,EACX+K,OAAQ,6BAUxB,SAASgnH,GAAT,GAAuC,IAApB76H,EAAmB,EAAnBA,KAAMsR,EAAa,EAAbA,UACjBrS,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,SAEb,CACErnB,GAAI,OACJmD,OAAQ,OACRC,SAAU,OACVC,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,SAEb,CACErnB,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACVsjB,SAAU,SACVG,OAAQ,CACNyB,OAAQ,CAAEI,SAAU,IAEtBrB,UAAW,OAEb,CACErnB,GAAI,SACJmD,OAAQ,SACRC,SAAU,QACVsjB,SAAU,WACVG,OAAQ,CAAEyB,OAAQ,CAAEI,SAAU,IAC9BrB,UAAW,MACXD,WAAY,gBAAG3jB,EAAH,EAAGA,MAAH,OACV,eAACs1D,GAAD,CAAmBt1D,MAAOA,EAAOilB,SAAU,KAE7CwmC,OAAQ,YAAe,IAafshC,EAbc,EAAX9jE,KAaUO,QAZH,SAAVykE,EAAWlB,EAAO7sF,GACtB,OAAIA,EAAIkgB,UACFlgB,EAAI2jB,WAAmBkpE,EAElB7sF,EAAIypB,QAAQH,OAAOykE,EAASlB,GAGhC/nE,MAAM9kB,EAAIC,SAAS4sF,OACtBA,EACA57D,WAAWjxB,EAAIC,SAAS4sF,OAASA,IAGJ,GACnC,OAAO,eAACz3B,GAAD,CAAmBt1D,MAAO+sF,EAAO9nE,SAAU,SAIxD,IAEF,OACE,eAAC/lB,GAAA,EAAD,CACE8qB,UAAQ,EACRC,OAAK,EACLtlB,KAAK,KACL9G,MAAO,CAAEiuC,MAAO,OAAQhuC,SAAU,KAClC0B,QAASA,EACTe,KAAMA,EACNsR,UAAWA,EACXyV,iBAAe,EACfN,eAAgB,CAAC,QACjBI,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,CAAEziB,UAAW,mBAC3B,MAMpB,IAAMwmI,GAAsB,CAC1Bn9D,OAoEF,SAAgBznE,GACd,OAAO,eAACq0G,GAAD,2BAA2Br0G,GAA3B,IAAkC9B,UAAQ,OAlEnD,SAAS49H,GAAT,GAA2C,IAAD,MAAxB96H,YAAwB,MAAjB,GAAiB,EAAbsR,EAAa,EAAbA,UACrB3G,EAAQ3K,EACXT,QAAO,SAACmR,GAAD,cAAUA,QAAV,IAAUA,OAAV,EAAUA,EAAMmzC,MAAMxpC,UAC7B9X,KAAI,SAACmO,GACJ,MAAO,CAAEjR,MAAOiR,EAAK+rB,OAAQ7gC,MAAO8U,EAAK+rB,WAJL,EAMhB/f,aAAc,OAAC/R,QAAD,IAACA,GAAD,UAACA,EAAQ,UAAT,aAAC,EAAYlL,OANX,mBAMjCiR,EANiC,KAM3BmzH,EAN2B,KAOlCC,EAAYpiI,IAAE0P,KAAKzG,EAAO,CAAC,QAAS+F,IACpCmzC,EAAQ3kD,mBACZ,wBAAM,UAAAwC,IAAE0P,KAAKpR,GAAM,SAAC+R,GAAD,OAAOA,EAAE0qB,SAAW/rB,YAAjC,eAAwCmzC,QAAS,KACvD,CAAC7jD,EAAM0Q,IAGHzR,EAAUC,mBACd,iBAAM,CACJ,CACEC,OAAQ,UACRnD,GAAI,SACJqD,OAAQS,KACRP,OAAQ,SACR8jB,UAAW,cACXjkB,SAAU,WACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAQ7B,KAAK6F,YAAd,CAA0BzH,GAAIyD,SAGvD,IAEF,OACE,eAAC1C,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACmV,GAAA,EAAD,CACEvW,MAAM,cACN6D,MAAOqkI,EACPtyH,QAAS7G,EACT9H,SAAUghI,IAEZ,eAAC9mI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAK2B,MAAN,CACEklD,MAAOA,EACPvyC,UAAWA,KAAa,OAACtR,QAAD,IAACA,OAAD,EAACA,EAAMqa,QAC/Btb,OAAQ,CACN,KACA,SACA,WACA,aACA,OACA,cACA,aACA,UAEF8nB,YAAa,SAAClnB,GACZ,OAAIA,EAAIkgB,UAAkB,CAAEziB,UAAW,mBAC3B,IAEdkwF,kBAAmBruF,EACnBH,WAAY8kI,cC5RX,SAASG,KAAkB,IAClCpzE,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,kBAAX,SACE,eAACsvE,GAAD,MAEF,eAAC,KAAD,CAAOtvE,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACipE,GAAD,MAEF,eAAC,KAAD,CAAOjpE,KAAI,UAAKA,EAAL,iBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,uBAAX,SACE,eAAC+sE,GAAD,MAEF,eAAC,KAAD,CAAO/sE,KAAI,UAAKA,EAAL,+BAAX,SACE,eAACmoE,GAAD,MAEF,eAAC,KAAD,CAAOnoE,KAAI,UAAKA,EAAL,2BAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,+BAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,kBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,oBAAX,SACE,eAACqtE,GAAD,MAEF,eAAC,KAAD,CAAOrtE,KAAI,UAAKA,EAAL,aAAX,SACE,eAACioE,GAAD,MAEF,eAAC,KAAD,CAAOjoE,KAAI,UAAKA,EAAL,yBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,mBAAX,SACE,eAACwvE,GAAD,MAEF,eAAC,KAAD,CAAOxvE,KAAI,UAAKA,EAAL,qBAAX,SACE,eAAC4vE,GAAD,MAEF,eAAC,KAAD,CAAO5vE,KAAI,UAAKA,EAAL,oBAAX,SACE,eAAC4pE,GAAD,MAEF,eAAC,KAAD,CAAO5pE,KAAI,UAAKA,EAAL,kBAAX,SACE,eAACkwE,GAAD,MAEF,eAAC,KAAD,CAAOlwE,KAAI,UAAKA,EAAL,QAAX,SACE,eAACmwE,GAAD,MAEF,eAAC,KAAD,CAAOnwE,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACgyE,GAAD,MAEF,eAAC,KAAD,CAAOhyE,KAAI,UAAKA,EAAL,kBAAX,SACE,eAACkyE,GAAD,MAEF,eAAC,KAAD,CAAOlyE,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACmyE,GAAD,MAEF,eAAC,KAAD,CAAOnyE,KAAI,UAAKA,EAAL,4BAAX,SACE,eAACqpE,GAAD,MAEF,eAAC,KAAD,CAAOrpE,KAAI,UAAKA,EAAL,sBAAX,SACE,eAACywE,GAAD,MAEF,eAAC,KAAD,CAAOzwE,KAAI,UAAKA,EAAL,iBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,sBAAX,SACE,eAACysE,GAAD,MAEF,eAAC,KAAD,CAAOthC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACmvE,GAAD,SCrGR,IASekE,GATUxoI,eAASC,MAAM,CACtCgX,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,IAC1DD,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxC6a,WAAY3a,eAAON,WAAWO,SAAQ,GACtC6nI,kBAAmB9nI,eAAON,WAAWO,SAAQ,GAC7C8nI,UAAWvoI,eAASC,MAAM,cAC1BuoI,UAAWxoI,eAASC,MAAM,gBC6B5B,SAASwoI,GAAT,GAAoC,IAAV1nI,EAAS,EAATA,MAAS,EACAE,eAAzBD,EADyB,EACzBA,WAAY+yB,EADa,EACbA,SAGpB,OADA7yB,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,cACLE,MAAM,cACNuB,aAAa,YAInB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CACE3B,KAAK,oBACLE,MAAM,0BAKZ,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACyY,GAAA,EAAD,CAAO3X,QAAQ,UAAf,gHAMJ,eAACjB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,YACLE,MAAM,aACNuB,aAAa,YAInB,eAACL,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEC,SAAU,SAAlC,SACE,eAAC,KAAD,CACE7B,KAAK,YACLE,MAAM,aACNuB,aAAa,iBAMvB,eAACW,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,WACPrB,IACA+yB,EAAS,YAAa,IACtBA,EAAS,YAAa,KAL1B,uB,OCpGJ30B,aAAkB,CAChBC,OAAQsoD,GAAgBtoD,OACxBE,QAASooD,GAAgBpoD,UAHDmpI,G,GAAbjpI,YAAwCkpI,G,GAAXhpI,UCE7B,SAASipI,GAAT,GAA2C,IAAjBvoI,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SACnCmlD,EAAeihF,GAAc,CAAEtoI,OAA/BqnD,WAER,OAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAYrnD,IAGf,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,SAIE,eAAC,OAAD,CACE7G,UAAU,aACVe,GAAI,CAAEC,SAAS,yBAAD,OAA2BpC,IAF3C,SAIGkC,IAAQ,OAAImlD,QAAJ,IAAIA,OAAJ,EAAIA,EAAY5wC,iBAXH,sCCL9B,IAOe+xH,GAPUntH,aAAa,CACpC3b,KAAM,aACNN,YAAaipI,GACb9kI,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE2P,YAAc,IAAM3P,EAAE9G,GAAGm8C,UAAU,EAAG,GAAK,UCC7D,IAkBessF,GAlBI,CAEjBnmI,IAAKglD,GAAgBhlD,IAErBpD,QAASooD,GAAgBpoD,QACzBsD,UAAW8kD,GAAgBtoD,OAAOwD,UAElCC,OAAQ6lI,GACR5lI,OAAQ2lI,GAER1lI,MCTa,YAMX,IALFykD,EAKC,EALDA,YAKC,IAJDshF,sBAIC,cAHD5lI,WAGC,EAFDC,eAEC,MAFQ,CAAC,KAAM,eAEf,EADEC,EACF,uEACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB4jD,EAA3B,EAAU1jD,IAAOC,SAAjB,OACJ8kI,EACE,eAACH,GAAD,CAAgBvoI,GAAE,OAAEqnD,QAAF,IAAEA,OAAF,EAAEA,EAAYrnD,GAAhC,SACGyD,IAAK,OAAI4jD,QAAJ,IAAIA,OAAJ,EAAIA,EAAYrnD,MAGxByD,IAGN,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQS,KACRP,OAAQ,WAGZ,CAACmlI,IAEH,OACE,eAAC/lI,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,eACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMojD,GACFpkD,KD/BRyF,YEda,YAA4C,IAAXwZ,EAAU,EAAVA,OACtC0tB,EAAgB1tB,EAAhB0tB,YAEF96B,EADkBwzH,KAAhBjhF,YAEL7jD,QAAO,SAAC8kC,GAAD,OAAwB,IAAjBA,EAAEvtB,YAAwButB,EAAEroC,KAAO2vC,KACjDppC,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEyB,YAAahT,MAAOuR,EAAEhV,OAE5C,OAAO,eAAC,KAAD,CAA+BiiB,OAAQA,EAAQzM,QAASX,KFO/D5Q,KAAMskI,GACNpkI,OJVa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQwjI,IAClB1jI,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAAC0jI,GAAD,CAAgB1nI,MAAOA,OIV3Bc,OAAQgnI,I,GGdNzpI,aAAkB,CACpBC,OAAQ2oD,GAAY3oD,OACpBE,QAASyoD,GAAYzoD,QACrB2wB,QAAS,SAAC7vB,GACR,IAAM8uC,EAAShd,aAAW9xB,GAC1B,OAAkB,IAAX8uC,OAAe/+B,EAAY++B,GAEpClf,OAAQ,CACN/mB,IAAK,QACLpF,MAAO,MAZIklI,G,GAAbvpI,YACWwpI,G,GAAXtpI,UACqBupI,G,GAArBt3G,oB,GCHAxyB,aAAkB,CAChBC,OAAQyoD,GAAiBzoD,OACzBE,QAASuoD,GAAiBvoD,UAHF4pI,G,GAAb1pI,YAAyC2pI,G,GAAXzpI,UCK9B,SAAS0pI,GAAT,GAAgE,IAA1BC,EAAyB,EAAzBA,YAAgBjmI,EAAS,gCACtEC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQolI,GAAWhgI,YACnBlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAWQ,KAAZ,CAAiBjE,GAAIyD,MAE5C,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACozC,GAAD,CAAa72C,GAAIyD,MAExC,CACEzD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,kBACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC4xC,GAAD,CAAqBr1C,GAAIyD,MAEhD,CACEzD,GAAI,eACJmD,OAAQ,eACRC,SAAU,eAEZ,CACEpD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,uBAGd,IAGF,OACE,eAACT,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,cACNqD,QAASA,EACTe,KAAMilI,GACFjmI,ICrDV,IAYekmI,GAZW1pI,eAASC,MAAM,CACvCO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxConD,WAAY1nD,eAASC,MAAM,WAAWK,IAAI,IAC1C82C,QAASp3C,eAASC,MAAM,QAAQK,IAAI,IACpC8pD,UAAWpqD,eAASC,MAAM,cAAcC,WACxCwrD,QAAS1rD,eAASC,MAAM,YAAYC,WACpC01C,gBAAiB51C,eAASC,MAAM,iBAAiBK,IAAI,IACrDkpI,UAAW7gH,eAAS1oB,MAAM,gBAAgBo2B,IAAI,GAC9CozG,cAAe9gH,eAAS1oB,MAAM,kBAAkBo2B,IAAI,GACpDoiB,eAAgBz4C,eAASC,MAAM,mBAAmBC,aCwBpD,SAASwpI,GAAT,GAAqC,IAAV3oI,EAAS,EAATA,MACzB,OACE,eAACI,GAAA,EAAD,UACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAACF,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAD,CACE7vC,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,YAInB,gBAACL,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW3kC,KAAZ,CACElL,KAAK,YACLE,MAAM,aACNu1B,eAAe,EACfj0B,UAAU,EACV42B,YAAY,MAGhB,eAAC92B,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW3kC,KAAZ,CACElL,KAAK,UACLE,MAAM,WACNu1B,eAAe,EACfj0B,UAAU,EACV42B,YAAY,SAIlB,eAACh3B,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,cACN6B,GAAIgnI,GAAWjnI,OACf8C,YAAY,QAIlB,gBAACxD,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,UACLE,MAAM,WACN6B,GAAI21C,GAAQ51C,OACZ8C,YAAY,MAGhB,eAACtD,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,kBACLE,MAAM,mBACN6B,GAAIo0C,GAAgBr0C,OACpB8C,YAAY,SAIlB,gBAACxD,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAD,CAAY7B,KAAK,YAAYE,MAAM,aAAasB,UAAU,MAE5D,eAACF,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAD,CACE7B,KAAK,gBACLE,MAAM,iBACNsB,UAAU,gBCvGX,SAASooI,GAAT,GAA4C,IAAjBtpI,EAAgB,EAAhBA,GAAIkC,EAAY,EAAZA,SAC5C,OACE,eAAC,OAAD,CACEd,UAAU,aACVe,GAAI,CAAEC,SAAS,yBAAD,OAA2BpC,IAF3C,SAIGkC,GAAYlC,ICNnB,IAOeupI,GAPWluH,aAAa,CACrC3b,KAAM,cACNN,YAAa0pI,GACbvlI,OAAQ,SAACuD,EAAGrD,GAAJ,OAA+B,IAAjBqD,EAAEgU,YAAwBhU,EAAE9G,KAAOyD,GACzD7D,MAAO,SAACkH,GAAD,OAAOA,EAAE9G,MCClB,IAkBewpI,GAlBK,CAElBlnI,IAAKmlD,GAAiBnlD,IAEtBpD,QAASuoD,GAAiBvoD,QAC1BsD,UAAWilD,GAAiBzoD,OAAOwD,UAEnCC,OAAQsmI,GACRrmI,OAAQomI,GAERnmI,MCLa,YAIX,IAHF4kD,EAGC,EAHDA,aAGC,IAFDkiF,uBAEC,SADEzmI,EACF,mDACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB+jD,EAA3B,EAAU7jD,IAAOC,SAAjB,OACJ6lI,EACE,eAACH,GAAD,CAAiBtpI,GAAE,OAAEwnD,QAAF,IAAEA,OAAF,EAAEA,EAAaxnD,GAAlC,SACGyD,IAAK,OAAI+jD,QAAJ,IAAIA,OAAJ,EAAIA,EAAaxnD,MAGzByD,IAGN,CACEzD,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQolI,GAAWhgI,YACnBlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAWQ,KAAZ,CAAiBjE,GAAIyD,MAE5C,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACozC,GAAD,CAAa72C,GAAIyD,MAExC,CACEzD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,kBACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC4xC,GAAD,CAAqBr1C,GAAIyD,MAEhD,CACEzD,GAAI,iBACJmD,OAAQ,iBACRC,SAAU,iBAEZ,CACEpD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cAEZ,CACEpD,GAAI,aACJmD,OAAQ,aACRC,SAAU,YACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,QAGzC,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,gCAAO20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,WAI3C,CAACgmI,IAGH,OACE,eAAC9mI,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,eACNqD,QAASA,EACTe,KAAMujD,GACFvkD,KD5ER0mI,gBAAiBV,GACjB/kI,KAAMqlI,GACNnlI,OHZa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQ0kI,IAClB5kI,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAAC2kI,GAAD,CAAiB3oI,MAAOA,OGR5Bc,OAAQ+nI,IEZKI,GARQnqI,eAASC,MAAM,CACpCO,GAAIL,eAASC,MAAM,MAAMC,WAAWI,IAAI,IACxC6O,WAAYnP,eAASC,MAAM,YAAYC,WACvCwnD,WAAY1nD,eAASC,MAAM,WAAWK,IAAI,IAC1Cm2C,UAAWz2C,eAASC,MAAM,UAAUK,IAAI,IACxC6a,WAAY3a,eAAON,WAAWO,SAAQ,KCiCxC,SAASwpI,GAAT,GAAkC,IAAVlpI,EAAS,EAATA,MACdC,EAAeC,eAAfD,WAGR,OADAE,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,KACLE,MAAM,KACNsB,UAAWR,EACXS,aAAa,UAGjB,eAACH,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,oBAAzB,SACE,eAAC,KAAWC,MAAZ,CAAkB3B,KAAK,aAAaE,MAAM,kBAG9C,eAACkB,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,SACE,eAAC,KAAW/tC,OAAZ,CACE9B,KAAK,aACLE,MAAM,WACN6B,GAAIouC,GAASruC,aAInB,eAACV,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,cACN6B,GAAIgnI,GAAWjnI,OACf8C,YAAY,QAIlB,eAACxD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,YACLE,MAAM,aACN6B,GAAIg1C,GAAUj1C,OACd8C,YAAY,QAIlB,eAACxD,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAD,CAAY7B,KAAK,OAAOE,MAAM,kBAAkBsB,UAAU,aAKlE,eAACY,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,uBC1FN,IAkBekpI,GAlBE,CAEfvnI,IAAKk1C,GAAcl1C,IAEnBpD,QAASs4C,GAAct4C,QACvBsD,UAAWg1C,GAAcx4C,OAAOwD,UAEhCC,OAAQi1C,GACRh1C,OAAQ+0C,GACRzK,UAAW2K,GAEXh1C,MCXa,YAKX,IAJF20C,EAIC,EAJDA,UAIC,IAHDwyF,oBAGC,aAFD/mI,cAEC,MAFQ,CAAC,KAAM,WAAY,QAE3B,EADEC,EACF,sDACKC,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,KACJmD,OAAQ,KACRC,SAAU,KACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwB8zC,EAA3B,EAAU5zC,IAAOC,SAAjB,OACJkmI,EACE,eAAC/vF,GAAD,CAAc/5C,GAAE,OAAEu3C,QAAF,IAAEA,OAAF,EAAEA,EAAUv3C,GAA5B,SACGyD,IAAK,OAAI8zC,QAAJ,IAAIA,OAAJ,EAAIA,EAAUv3C,MAGtByD,IAGN,CACEzD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,EAAnB,SAA2BA,MAElD,CACEzD,GAAI,OACJmD,OAAQ,aACRC,SAAU,WAGd,CAAC0mI,IAGH,OACE,eAACnnI,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,aACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMszC,GACFt0C,KDnCRiB,KAAM81C,GACN51C,ODNa,YAKX,IAJFC,EAIC,EAJDA,OACAC,EAGC,EAHDA,SAGC,IAFD3D,aAEC,aADD4D,kBACC,SACD,OACE,eAAC,KAAD,CACEC,cAAa,eACRH,GAELC,SAAU,SAACD,GAAD,OACRC,EAAS,eACJD,KAGPI,OAAQ,CAAEA,OAAQmlI,IAClBrlI,WAAYA,EACZ5D,MAAOA,EACPgE,aAAW,EAZb,SAcE,eAACklI,GAAD,CAAclpI,MAAOA,OCdzBc,OAAQo2C,IErBGmyF,GAAe,CAC1BvxF,EAAG,CACDx4C,GAAI,IACJyW,YAAa,aACbuzH,QAAS,IAEXvxF,EAAG,CACDz4C,GAAI,IACJyW,YAAa,OACbuzH,QAAS,QAEXtxF,EAAG,CACD14C,GAAI,IACJyW,YAAa,SACbuzH,QAAS,OAEXrxF,EAAG,CACD34C,GAAI,IACJyW,YAAa,UACbuzH,QAAS,WAEXpxF,EAAG,CACD54C,GAAI,IACJyW,YAAa,MACbuzH,QAAS,OAEXnxF,EAAG,CACD74C,GAAI,IACJyW,YAAa,aACbuzH,QAAS,WAEXlxF,EAAG,CACD94C,GAAI,IACJyW,YAAa,YACbuzH,QAAS,OAEXjxF,EAAG,CACD/4C,GAAI,IACJyW,YAAa,UACbuzH,QAAS,OAEX/wF,EAAG,CACDj5C,GAAI,IACJyW,YAAa,QACbuzH,QAAS,UC1CE,SAASC,KAGrB,IAAD,yDAF+D,GAA7DC,EAEF,EAFEA,aAAcpyF,EAEhB,EAFgBA,WAAYoC,EAE5B,EAF4BA,OAAQiwF,EAEpC,EAFoCA,uBAEpC,yDADY,GAAVz5E,EACF,EADEA,MAEE05E,EAAiB,GACrB,GAAI15E,IAAoC,IAA3By5E,EAAiC,CAItC,IAAD,EAFL,GADAC,EAAiB15E,EACXw5E,GAAwC,KAAxBA,EAAa97G,OACjCg8G,EAAiBA,EAAiB,IAAMF,EAAa97G,WAElC,MAAf0pB,IACFsyF,EACEA,EAAiB,KAAjB,UAAuBL,GAAajyF,UAApC,aAAuB,EAA0BkyF,UAExC,MAAX9vF,IAAgBkwF,GAAkC,QAExD,OAAOA,EChBT,IAaehhC,GAbM5pG,eAASC,MAAM,CAClCgX,YAAa9W,eAASC,MAAM,eAAeC,WAAWI,IAAI,IAC1D6O,WAAYwZ,eAAS1oB,MAAM,YAC3BugG,SAAUxgG,eAASC,MAAM,YAAYC,WAAWI,IAAI,IACpDo4C,cAAe14C,eAASC,MAAM,mBAAmBK,IAAI,IACrDoqI,UAAW1qI,eAASC,MAAM,QAAQC,WAAWI,IAAI,GACjDiqI,aAAcvqI,eAASC,MAAM,QAAQK,IAAI,IACzCqqI,SAAU3qI,eAASC,MAAM,YAAYC,WAAWI,IAAI,GACpDsqI,0BAA2B5qI,eAASC,MAAM,eAAeC,WAAWI,IAAI,GACxEi6C,OAAQv6C,eAASC,MAAM,UAAUC,WAAWI,IAAI,GAAGG,QAAQ,KAC3DoqI,YAAarqI,eAAON,WAAWO,SAAQ,KC2DzC,SAASqqI,GAAsBnrC,EAAcxnD,EAAYoC,GAAS,IAAD,IAK/D,OAAOolD,EAAe,MAHT,MAAXplD,GACI,UAAA6vF,GAAajyF,UAAb,eAA0BrhC,aAAc,OAD5C,UAEIszH,GAAajyF,UAFjB,aAEI,EAA0BrhC,aACc,IAGhD,SAASi0H,KAAc,IAAD,EACoB9pI,eAAhC6X,EADY,EACZA,MAAO9X,EADK,EACLA,WAAY+yB,EADP,EACOA,SAErB42G,EAAW7xH,EAAM,YACjBmsG,EAAYnsG,EAAM,aAClB0nF,EAAW1nF,EAAM,YACjB3J,EAAa2J,EAAM,cACnBq/B,EAAar/B,EAAM,cACnByhC,EAASzhC,EAAM,UACfhC,EAAcgC,EAAM,eACpByxH,EAAezxH,EAAM,gBACrB0xH,EAAyB1xH,EAAM,0BAC/BkyH,EAAclyH,EAAM,eACpBmyH,EAA0BnyH,EAAM,2BAE9BkqB,EAAakN,GAASptC,OAAO,CAAEzC,GAAI8O,IAAnC6zB,SA2BR,OAzBA7mB,qBAAU,WACR,GAAMouH,GAAiC,KAAjBA,EAAqB,CACzC,IAAMjrG,EAAIirG,EAAaxgG,QAAQ,mBAAoB,IAC/CzK,IAAMirG,GAAcx2G,EAAS,eAAgBuL,MAElD,CAACirG,EAAcx2G,IAElB5X,qBAAU,WAOR,GANoB2uH,GAAqB,OACvC9nG,QADuC,IACvCA,OADuC,EACvCA,EAAUjjC,KACVo4C,EACAoC,KAGkBzjC,GAA+B,KAAhBA,EAAoB,CACrD,IAAMo0H,EAAUJ,GAAqB,OAAC9nG,QAAD,IAACA,OAAD,EAACA,EAAUjjC,KAAMo4C,EAAYoC,GAClExmB,EAAS,cAAem3G,EAAS,CAC/Bp5E,gBAAgB,EAChBC,aAAa,OAIhB,CAAC/uB,EAAUuX,EAAQpC,EAAYpkB,IAElC7yB,eAEE,gBAACC,GAAA,EAAD,WACE,eAACA,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,CAAKC,GAAG,OAAOK,MAAO,CAAEiuC,MAAO,SAA/B,UACE,gBAACzuC,GAAA,EAAK4G,MAAN,WACG,WAEAoH,EACC,uCACE,eAAC,iBAAD,CAAe3M,GAAE,qBAAgB2M,GAAjC,SACE,eAAChN,EAAA,EAAD,CACEC,QAAQ,OACRqG,KAAK,KACLhH,UAAU,kBACV8G,MAAM,wBACN87D,UAAW,EALb,oBAUF,eAAC,iBAAD,CAAe7hE,GAAE,4BAAuB2M,GAAxC,SACE,eAAChN,EAAA,EAAD,CACEC,QAAQ,OACRqG,KAAK,KACLhH,UAAU,kBACV8G,MAAM,wBACN87D,UAAW,EALb,0BAWF,QAEN,eAAC,GAAD,CAAgBtkE,KAAK,oBAGzB,gBAACoB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CAAYvB,KAAK,SAASE,MAAM,SAAS6B,GAAG,SAA5C,UACE,yBAAQgC,MAAM,IAAd,oBACA,yBAAQA,MAAM,IAAd,2DAGA,yBAAQA,MAAM,IAAd,oDAGJ,eAACzC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,GAAD,CAAYvB,KAAK,aAAaE,MAAM,WAEtC,eAACoB,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CACEvB,KAAK,4BACLE,MAAM,cACN6B,GAAG,SAHL,UAKE,yBAAQgC,MAAM,KACd,yBAAQA,MAAM,IAAd,yBACA,yBAAQA,MAAM,IAAd,sBACA,yBAAQA,MAAM,IAAd,yBACA,yBAAQA,MAAM,IAAd,+BAIN,eAAC3C,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,UACE,gBAACF,GAAA,EAAKY,MAAN,CAAYgX,UAAW,cAAvB,UACE,eAAC3X,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,gBAACH,GAAA,EAAK4G,MAAN,WACG,cACD,eAAC5F,EAAA,EAAD,CACEC,QAAQ,OACRqG,KAAK,KACLhH,UAAU,kBACV8G,MAAM,gCACN87D,UAAW,EACXhiE,QAAS,WACP0xB,EACE,cACA+2G,GAAqB,OACnB9nG,QADmB,IACnBA,OADmB,EACnBA,EAAUjjC,KACVo4C,EACAoC,KAZR,4BAsBN,eAAC5iC,GAAA,EAAD,UACE,eAAC,KAAW1Q,QAAZ,CACElH,KAAK,cACL4B,MAAO,CACL2yG,MACEw2B,GAAqB,OACnB9nG,QADmB,IACnBA,OADmB,EACnBA,EAAUjjC,KACVo4C,EACAoC,KACIzjC,EACF,OACA,oBAOlB,eAACq0H,GAAD,CAAU7pI,GAAG,OAAb,SACE,eAAC,KAAD,CACEvB,KAAK,OACLE,MAAM,OACN0B,MAAO,CAAEiuC,MAAO,SAChBnuC,UAAU,qBAGd,gBAACN,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,WACLE,MAAM,WACNwB,UAAU,qBAGd,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAD,CACEvB,KAAK,YACLE,MAAM,sBACN0B,MAAO,CAAEiuC,MAAO,SAChBnuC,UAAU,wBAIhB,eAACN,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,CAAK6Y,GAAG,OAAO5Y,GAAI,GAAnB,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,yBACLE,MAAM,2BAIXuqI,EACC,gBAACrpI,GAAA,EAAKC,IAAN,CAAUK,UAAU,kCAApB,UACE,gBAACJ,EAAA,EAAD,CAAK6Y,GAAG,OAAO5Y,GAAI,GAAnB,UACE,eAACF,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK6Y,GAAG,OAAO5Y,GAAI,GAAI0yG,OAAQ,EAA/B,SACE,eAAC,KAAD,CACEj0G,KAAK,eACLE,MAAM,gBACNwB,UAAU,uBAIhB,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK6Y,GAAG,OAAO5Y,GAAI,GAAnB,SACE,gBAACH,GAAA,EAAK4G,MAAN,CAAYpG,MAAO,CAAE2yG,MAAO,OAA5B,6BACmB,WAIvB,eAAClzG,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAK6Y,GAAG,OAAO5Y,GAAI,GAAnB,SACE,gBAACH,GAAA,EAAK4G,MAAN,CAAYpG,MAAO,CAAE2yG,MAAO,OAA5B,UACGg2B,GACC,CACEC,eACApyF,aACAoC,SACAiwF,0BAEFxnG,GACC,cAKX,eAAC3hC,EAAA,EAAD,UACE,eAAC,KAAWs4C,SAAZ,CACE55C,KAAK,YACLE,MAAM,wBACNwB,UAAU,iBACVm4C,QAAS,EACTllC,YAAW,mBACTuwG,GAAwBzkB,EADf,aAGXj/F,SAAUypI,SAId,KACJ,gBAAC7pI,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC8pI,GAAD,CAAgBrrI,KAAK,WAAWE,MAAM,eAExC,eAACoB,EAAA,EAAD,UACE,eAAC,KAAD,CAAYtB,KAAK,YAAYE,MAAM,gCAGzB,MAAb0qI,EACC,gBAACxpI,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,aACLE,MAAM,cACN6B,GAAIgnI,GAAWjnI,OACfwY,aAAW,MAGf,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,UACLE,MAAM,WACN6B,GAAI21C,GAAQ51C,OACZwY,aAAW,MAGf,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAWC,OAAZ,CACE9B,KAAK,kBACLE,MAAM,oBACN6B,GAAIo0C,GAAgBr0C,OACpBwY,aAAW,MAGf,eAAChZ,EAAA,EAAD,CAAKC,GAAI,OAAQK,MAAO,CAAEC,SAAU,SAApC,SACE,eAAC,KAAD,CAAY7B,KAAK,gBAAgBE,MAAM,yBAGzC,KACJ,gBAACkB,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAI,OAAT,SACE,eAAC,KAAWI,MAAZ,CAAkB3B,KAAK,cAAcE,MAAM,mBAE7C,eAACoB,EAAA,EAAD,UACE,eAAC,KAAD,CAAYtB,KAAK,YAAYE,MAAM,wBAGvC,eAACkC,EAAA,EAAD,CAAQC,QAAQ,UAAUC,QAASrB,EAAnC,oBAGA,eAACG,GAAA,EAAKC,IAAN,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,uDAGJ,gBAACF,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,sBACLE,MAAM,eACNwB,UAAU,qBAGd,eAACJ,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,uBACLE,MAAM,gBACNwB,UAAU,qBAGd,eAACJ,EAAA,EAAD,UACE,eAAC,KAAW4J,KAAZ,CACElL,KAAK,yBACLE,MAAM,sBACNk4B,YAAY,SAIlB,gBAACh3B,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,YACLE,MAAM,aACNwB,UAAU,qBAGd,eAACJ,EAAA,EAAD,UACE,eAAC,KAAD,CACEtB,KAAK,kBACLE,MAAM,oBACNwB,UAAU,wBAIhB,gBAACN,GAAA,EAAKC,IAAN,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAAC,KAAWI,MAAZ,CACE3B,KAAK,0BACLE,MAAM,sBAGV,eAACoB,EAAA,EAAD,UACG4pI,GACC,eAAC,KAAWhgI,KAAZ,CACElL,KAAK,8BACLE,MAAM,4BACNk4B,YAAY,iBAa9B,SAASgzG,GAAT,GAA2C,IAAvB5oI,EAAsB,EAAtBA,SAAac,EAAS,6BACxC,OACE,eAAClC,GAAA,EAAKC,IAAN,UACE,eAACC,EAAA,EAAD,2BAASgC,GAAT,aAAiBd,OAKvB,SAASk3C,GAAT,GAA+D,IAArC15C,EAAoC,EAApCA,KAAoC,IAA9BM,UAA8B,MAAzBN,EAAyB,EAAnBE,EAAmB,EAAnBA,MAAUoD,EAAS,wCAIxDwU,aAAc,CAAE9X,SAJwC,IAE1D+X,MAAS5Q,EAFiD,EAEjDA,SAAa4Q,EAFoC,6BAG5C3K,EAH4C,EAG1D4K,WAAc5K,MAH4C,EAOxDlM,eADF+W,aAAgBrT,kBAN0C,SAS5D,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,eAAC,GAAS4B,OAAV,2BACMiW,GADN,IAEE7P,SAAUtD,EACVuC,SAAU,SAACsO,GACTtO,EAASsO,KAEPnS,IAEN,eAAClC,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAAS+G,GAAT,GAAsE,IAAhDpU,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,oDAI/DwU,aAAc,CAAE9X,SAJ+C,IAEjE+X,MAAS5Q,EAFwD,EAExDA,SAAa4Q,EAF2C,6BAGnD3K,EAHmD,EAGjE4K,WAAc5K,MAHmD,EAO/DlM,eADF+W,aAAgBrT,kBANiD,SASnE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,gBAACkB,GAAA,EAAK8F,QAAN,qCACElH,KAAMA,EACNE,MAAM,OACN6B,GAAG,SACHoF,SAAU,SAACsO,GACTtO,EAASsO,IAEXvN,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAVN,cAYE,yBAAQS,MAAM,KACbiQ,OAAOtP,OAAO2lI,IAAcxjI,KAAI,SAACizC,EAAG7qB,GAAJ,OAC/B,yBAAkClrB,MAAO+1C,EAAEx5C,GAA3C,SACGw5C,EAAE/iC,aADL,qBAA2BkY,WAK/B,eAAC7tB,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMhB,SAASg+H,GAAT,GAA0E,IAAhDrrI,EAA+C,EAA/CA,KAA+C,IAAzCM,UAAyC,MAApCN,EAAoC,EAA9BE,EAA8B,EAA9BA,MAAOgY,EAAuB,EAAvBA,UAAc5U,EAAS,oDAInEwU,aAAc,CAAE9X,SAJmD,IAErE+X,MAAS5Q,EAF4D,EAE5DA,SAAa4Q,EAF+C,6BAGvD3K,EAHuD,EAGrE4K,WAAc5K,MAHuD,EAOnElM,eADF+W,aAAgBrT,kBANqD,SASvE,OACE,gBAACxD,GAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,eAACkB,GAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,gBAACkB,GAAA,EAAK8F,QAAN,qCACElH,KAAMA,EACNE,MAAM,OACN6B,GAAG,SACHoF,SAAU,SAACsO,GACTtO,EAASsO,IAEXvN,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1CH,GACAzU,GAVN,cAYE,yBAAQS,MAAM,KACd,yBAAQA,MAAM,IAAd,iBACA,yBAAQA,MAAM,IAAd,mBACA,yBAAQA,MAAM,IAAd,gCAEF,eAAC3C,GAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aCnhBhB,IAiDei+H,GAjDgBjmI,IAAMC,YACnC,WAQEC,GACI,IAPFxB,EAOC,EAPDA,MAOC,IAND5B,eAMC,SALDiN,EAKC,EALDA,WAKC,IAJDuF,mBAIC,MAJa,mBAIb,EAHErR,EAGF,iEAC0B6lI,GAAqB,CAChDviI,OAAQ,CAAEwI,cACV6M,SAAU7M,IAFJ0mC,EADL,EACKA,QAAShmC,EADd,EACcA,QAKXqF,EAAWnP,IAAEoP,OACjB0gC,EACGjyC,QAAO,SAACod,GAAD,OAAsB,IAAfA,EAAEzgB,UAAsBygB,EAAE3gB,KAAOyD,KAC/C8C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEtV,KAAM+D,MAAOquB,aAAW9c,EAAEhV,QAGhD,SAGEiV,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAW9F,EACX+F,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OCjCG,SAASioI,GAAT,GAaX,IAZFz1F,EAYC,EAZDA,QAYC,IAXD01F,kBAWC,aAVDnoI,cAUC,MAVQ,CACP,cACA,WACA,WACA,OACA,QACA,6BACA,YAGD,EADEC,EACF,kDACKy7B,EAAY9pB,aAAY,SAACpS,GAAD,OAC5BstC,GAASrtC,UAAUqP,eAAetP,MAG9BU,EAAUC,mBACd,iBAAM,CACJ,CACElD,GAAI,cACJmD,OAAQ,cACRC,SAAU,cACVC,OAAQC,KACRC,OAAQ,OACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAwBikD,EAA3B,EAAU/jD,IAAOC,SAAjB,OACJsnI,EACE,eAAClxF,GAAD,CAAYlrC,WAAU,OAAE44C,QAAF,IAAEA,OAAF,EAAEA,EAAQ54C,WAAY9O,GAAE,OAAE0nD,QAAF,IAAEA,OAAF,EAAEA,EAAQ1nD,GAAxD,SACGyD,IAAK,OAAIikD,QAAJ,IAAIA,OAAJ,EAAIA,EAAQy4C,YAAjB,OAA6Bz4C,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAQ1nD,MAGxCyD,IAGN,CACEzD,GAAI,WACJmD,OAAQ,gBACRC,SAAU,aACVC,OAAQwsC,GAASpnC,YACjBlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAASQ,KAAV,CAAejE,GAAIyD,MAG1C,CACEzD,GAAI,OACJmD,OAAQ,OACRC,SAAU,SAACskD,GAAD,aACR,UAAAqiF,GAAY,OAACriF,QAAD,IAACA,OAAD,EAACA,EAAQ5P,mBAArB,eAAkCrhC,cAAe,IACnDpT,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,6BACJmD,OAAQ,cACRC,SAAU,SAACskD,GACT,cAAQA,QAAR,IAAQA,OAAR,EAAQA,EAAQ6iF,2BACd,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,WACT,IAAK,IACH,MAAO,cACT,IAAK,IACH,MAAO,cAGblnI,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,SAACskD,GACT,cAAQA,QAAR,IAAQA,OAAR,EAAQA,EAAQ4iF,UACd,IAAK,IACH,MAAO,qBACT,IAAK,IACH,MAAO,iBACT,IAAK,IACH,MAAO,eACT,QACE,MAAO,KAGbjnI,OAAQS,KACRP,OAAQ,UAEV,CACEvD,GAAI,cACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQolI,GAAWhgI,YACnBlF,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC,GAAWQ,KAAZ,CAAiBjE,GAAIyD,MAE5C,CACEzD,GAAI,WACJmD,OAAQ,WACRC,SAAU,UACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAACozC,GAAD,CAAa72C,GAAIyD,MAExC,CACEzD,GAAI,oBACJmD,OAAQ,oBACRC,SAAU,kBACVC,OAAQS,KACRP,OAAQ,SACRC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,eAAC4xC,GAAD,CAAqBr1C,GAAIyD,MAEhD,CACEzD,GAAI,kBACJmD,OAAQ,kBACRC,SAAU,gBACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,WACJmD,OAAQ,WACRC,SAAU,WACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,aACJmD,OAAQ,aACRC,SAAU,YACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,aACJmD,OAAQ,aACRC,SAAU,YACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,2BACJmD,OAAQ,+BACRC,SAAU,yBACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,MAErD,CACEzD,GAAI,8BACJmD,OAAQ,4BACRC,SAAU,8BACVI,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe20B,KAAM0c,QAAQ1c,KAAMwc,UAAUnxC,MAErD,CACEzD,GAAI,aACJmD,OAAQ,cACRC,SAAU,aACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,YACJmD,OAAQ,aACRC,SAAU,YACVC,OAAQC,KACRC,OAAQ,QAEV,CACEvD,GAAI,QACJmD,OAAQ,QACRC,SAAU,SAACskD,GAAD,OACRuiF,GAAeviF,EAAD,OAASjpB,QAAT,IAASA,OAAT,EAASA,EAAYipB,EAAO54C,cAC5CzL,OAAQC,KACRC,OAAQ,WAGZ,CAAC2nI,EAAYzsG,IAEf,OACE,eAAC97B,GAAA,EAAD,aACEoB,UAAQ,EACRnE,MAAM,UACNqD,QAASA,EACTF,OAAQA,EACRiB,KAAMwxC,GACFxyC,ICpMV,IAAMD,GAAS,CAAC,OAAQ,QAAS,QAAS,SAAU,SCSpD,IA0BeooI,GA1BA,CAEb7oI,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQmmI,GACRlmI,OAAQimI,GACR37F,UAAW67F,GAEXlmI,SACAsB,KAAM+1C,GACNzH,oBACAC,gBDrBa,YAAgD,IAAf1jC,EAAc,EAAdA,WAAc,EACxB+5H,GAAqB,CACvDviI,OAAQ,CAAEwI,cACV6M,QAAQ,IAFF65B,EADoD,EACpDA,QAAShmC,EAD2C,EAC3CA,QAASiD,EADkC,EAClCA,MAK1B,OACE,eAACw4H,GAAD,CACEz1F,QAASA,EACTzyC,OAAQA,GACRuS,UAAW9F,EACX8b,UAAW,kBAAM7Y,EAAM,CAAE3D,gBACzB8b,cAAe,KCUnBzmB,OJRa,YAIX,IAAD,IAHDC,OAAUgnI,EAGT,EAHSA,uBAAwBC,EAGjC,EAHiCA,4BAAgCjnI,EAGjE,yEAFDC,EAEC,EAFDA,SAEC,IADDC,kBACC,SAWD,OAVAmkI,GAAW/lI,OAAO,CAChBiZ,QAAQ,IAEVy7B,GAAQ10C,OAAO,CACbiZ,QAAQ,IAEVk6B,GAAgBnzC,OAAO,CACrBiZ,QAAQ,IAIR,eAAC,KAAD,CACEpX,cAAa,aACX6mI,uBAAwBA,EACpBhzG,KAAMwc,UAAUw2F,GAAwBvgI,cACxC,GACJwgI,4BAA6BA,EACzBjzG,KAAMwc,UAAUy2F,GAA6BxgI,cAC7C,IACDzG,GAELC,SAAU,gBACR+mI,EADQ,EACRA,uBACAC,EAFQ,EAERA,4BACGjnI,EAHK,gFAKRC,EAAS,aACP+mI,uBAAwBA,EACpBhzG,KAAM0jB,MAAMsvF,GACZ,GACJC,4BAA6BA,EACzBjzG,KAAM0jB,MAAMuvF,GACZ,IACDjnI,KAGPI,OAAQ,CAAEA,OAAQ4kG,IAClB9kG,WAAYA,EACZI,aAAW,EA3Bb,SA6BE,eAACgmI,GAAD,OIlCJ70F,gBAAiBA,GACjBuB,QAASA,GACTX,UAAWA,GACXgyF,WAAYA,GACZoB,SAAUA,GACVL,YAAaA,IC/BA,SAAS8B,GAAT,GAAyC,IAAbppI,EAAY,EAAZA,SACjC6W,EAAYpE,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QACR,OACE,gBAAC,GAAD,WACE,eAACs2F,GAAD,CAAgBltG,GAAG,WAAnB,qBACA,eAACktG,GAAD,CAAgBltG,GAAG,eAAnB,wBACA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,sBAAnB,wBACA,sBAAKf,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,wBAAnB,0BACA,eAACktG,GAAD,CAAgBltG,GAAG,mCAAnB,oCAGC4W,EACC,uCACE,sBAAK3X,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,8BAAnB,gCAGA,eAACktG,GAAD,CAAgBltG,GAAG,uBAAnB,yBACA,eAACktG,GAAD,CAAgBltG,GAAG,qBAAnB,uBACA,eAACktG,GAAD,CAAgBltG,GAAG,wBAAnB,6BAIA,KACHD,KC3BQ,SAASqpI,GAAT,GAA6C,IAAbrpI,EAAY,EAAZA,SAC7C,OACE,gBAACopI,GAAD,WACGppI,EACD,sBAAKd,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,4BAAnB,gCCDS,SAASqpI,KACtB,IAAMxrI,EAAKoa,OAAO63B,eAAYjyC,IAAIqa,cADK,EAEI8wH,GAAO1C,WAAWhmI,OAAO,CAClEzC,KACA2b,QAAQ,IAFF0rC,EAF+B,EAE/BA,WAAY73C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAM7B,OAFoBsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,eAACi4B,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAACo6F,GAAD,IAAtC,SACGlkF,EACC,uCACE,eAAC,GAAOohF,WAAWtkI,OAAnB,CACEC,OAAQijD,EACR/xC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQn/C,OAGxB,2DArBF,eAACrW,GAAD,CACE9oC,MAAM,cACNipC,WAAY,eAACo6F,GAAD,IACZr6F,KAAK,2CCfE,SAASu6F,KAAmB,IAAD,EACZtmI,oBAAS,GADG,mBACjC42C,EADiC,KACzBjhB,EADyB,OAEHqwG,GAAO1C,WAAW/lI,OAAO,CAC5DiZ,QAAQ,IADF1J,EAFgC,EAEhCA,SAAUzC,EAFsB,EAEtBA,QAASiD,EAFa,EAEbA,MAIrBzO,EAAOd,mBAAQ,WACnB,OAAO+O,EAAS1O,QAAO,SAACuD,GACtB,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQ9pC,IAEZ,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,eAAeipC,WAAY,eAACo6F,GAAD,IAAvC,UACE,gBAACl/F,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAOglI,WAAW9lI,MAAnB,CACEykD,YAAapjD,EACbsR,UAAW9F,EACX8b,UAAW7Y,OCxCJ,SAASi5H,KAAiB,IAC/Bv8H,EAAcs5H,GAAWhmI,SAAzB0M,UAD8B,EAEdi/C,KAAfE,EAF6B,oBAGtC,OACE,eAACtd,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAACo6F,GAAD,IAAtC,SACE,eAAC,GAAWpnI,OAAZ,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACgjD,GAAD,OACRl4C,EAAUk4C,GAAY56C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACzBsuD,EAAY,yBAAD,OAA0BtuD,YCPlC,SAAS2rI,KAAoB,IACpCh3E,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC+2E,GAAD,MAEF,eAAC,KAAD,CAAO/2E,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC62E,GAAD,MAEF,eAAC,KAAD,CAAO1rC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC82E,GAAD,SAhBF,eAACz6F,GAAD,CACE9oC,MAAM,oBACNipC,WAAY,eAACo6F,GAAD,IACZr6F,KAAK,2CCfE,SAAS06F,GAAT,GAAkD,IAAb1pI,EAAY,EAAZA,SAClD,OACE,gBAACopI,GAAD,WACGppI,EACD,sBAAKd,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,kCAAnB,sCCDS,SAAS0pI,KACtB,IAAM7rI,EAAKoa,OAAO63B,eAAYjyC,IAAIqa,cADU,EAEI8wH,GAAOt1F,gBAAgBpzC,OACrE,CACEzC,KACA2b,QAAQ,IAHJ45B,EAFoC,EAEpCA,gBAAiB/lC,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAQlC,OAFoBsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,eAACi4B,GAAD,CAAM9oC,MAAM,oBAAoBipC,WAAY,eAACy6F,GAAD,IAA5C,SACGr2F,EACC,uCACE,eAAC,GAAOM,gBAAgB1xC,OAAxB,CACEC,OAAQmxC,EACRjgC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQjxD,OAGxB,iEArBF,eAACvE,GAAD,CACE9oC,MAAM,oBACNipC,WAAY,eAACy6F,GAAD,IACZ16F,KAAK,2CCjBE,SAAS46F,KAAwB,IAAD,EACjB3mI,oBAAS,GADQ,mBACtC42C,EADsC,KAC9BjhB,EAD8B,OAEAqwG,GAAOt1F,gBAAgBnzC,OAAO,CACzEiZ,QAAQ,IADF25B,EAFqC,EAErCA,iBAAkB9lC,EAFmB,EAEnBA,QAASiD,EAFU,EAEVA,MAG7BzO,EAAOd,mBAAQ,WACnB,OAAOoyC,EAAiB/xC,QAAO,SAACuD,GAC9B,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQzG,IACZ,OACE,gBAACtE,GAAD,CAAM9oC,MAAM,oBAAoBipC,WAAY,eAACy6F,GAAD,IAA5C,UACE,gBAACv/F,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAOoyC,gBAAgBlzC,MAAxB,CACE2yC,iBAAkBtxC,EAClBsR,UAAW9F,EACX8b,UAAW7Y,OCtCJ,SAASs5H,KAAsB,IACpC58H,EAAc0mC,GAAgBpzC,SAA9B0M,UADmC,EAEnBi/C,KAAfE,EAFkC,oBAG3C,OACE,eAACtd,GAAD,CAAM9oC,MAAM,oBAAoBipC,WAAY,eAACy6F,GAAD,IAA5C,SACE,eAAC,GAAgBznI,OAAjB,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACkxC,GAAD,OACRpmC,EAAUomC,GAAiB9oC,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAC9BsuD,EAAY,+BAAD,OAAgCtuD,YCPxC,SAASgsI,KAAyB,IACzCr3E,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAACo3E,GAAD,MAEF,eAAC,KAAD,CAAOp3E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACk3E,GAAD,MAEF,eAAC,KAAD,CAAO/rC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACm3E,GAAD,SAhBF,eAAC96F,GAAD,CACE9oC,MAAM,oBACNipC,WAAY,eAACy6F,GAAD,IACZ16F,KAAK,2CCfE,SAAS+6F,GAAT,GAA4C,IAAb/pI,EAAY,EAAZA,SAC5C,OACE,gBAACopI,GAAD,WACGppI,EACD,sBAAKd,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,2BAAnB,+BCDS,SAAS+pI,KACtB,IAAMlsI,EAAKoa,OAAO63B,eAAYjyC,IAAIqa,cADI,EAEI8wH,GAAO10F,UAAUh0C,OAAO,CAChEzC,KACA2b,QAAQ,IAFFy6B,EAF8B,EAE9BA,UAAW5mC,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAM5B,OAFoBsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,eAACi4B,GAAD,CAAM9oC,MAAM,aAAaipC,WAAY,eAAC86F,GAAD,IAArC,SACG71F,EACC,uCACE,eAAC,GAAOK,UAAUtyC,OAAlB,CACEC,OAAQgyC,EACR9gC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQpwD,OAGxB,0DArBF,eAACpF,GAAD,CACE9oC,MAAM,aACNipC,WAAY,eAAC86F,GAAD,IACZ/6F,KAAK,2CCfE,SAASi7F,KAAkB,IAAD,EACXhnI,oBAAS,GADE,mBAChC42C,EADgC,KACxBjhB,EADwB,OAEAqwG,GAAO10F,UAAU/zC,OAAO,CAC7DiZ,QAAQ,IADFw6B,EAF+B,EAE/BA,WAAY3mC,EAFmB,EAEnBA,QAASiD,EAFU,EAEVA,MAIvBzO,EAAOd,mBAAQ,WACnB,OAAOizC,EAAW5yC,QAAO,SAACuD,GACxB,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQ5F,IACZ,OACE,gBAACnF,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAAC86F,GAAD,IAAtC,UACE,gBAAC5/F,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAOgzC,UAAU9zC,MAAlB,CACEwzC,WAAYnyC,EACZsR,UAAW9F,EACX8b,UAAW7Y,OCvCJ,SAAS25H,KAAgB,IAC9Bj9H,EAAcsnC,GAAUh0C,SAAxB0M,UAD6B,EAEbi/C,KAAfE,EAF4B,oBAGrC,OACE,eAACtd,GAAD,CAAM9oC,MAAM,aAAaipC,WAAY,eAAC86F,GAAD,IAArC,SACE,eAAC,GAAU9nI,OAAX,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAAC+xC,GAAD,OACRjnC,EAAUinC,GAAW3pC,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACxBsuD,EAAY,wBAAD,OAAyBtuD,YCPjC,SAASqsI,KAAmB,IACnC13E,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAACy3E,GAAD,MAEF,eAAC,KAAD,CAAOz3E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACu3E,GAAD,MAEF,eAAC,KAAD,CAAOpsC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACw3E,GAAD,SAhBF,eAACn7F,GAAD,CACE9oC,MAAM,aACNipC,WAAY,eAAC86F,GAAD,IACZ/6F,KAAK,2CCfE,SAASo7F,GAAT,GAA0C,IAAbpqI,EAAY,EAAZA,SAC1C,OACE,gBAACopI,GAAD,WACGppI,EACD,sBAAKd,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,yBAAnB,6BCDS,SAASoqI,KACtB,IAAMvsI,EAAKoa,OAAO63B,eAAYjyC,IAAIqa,cADE,EAEI8wH,GAAO/zF,QAAQ30C,OAAO,CAC5DzC,KACA2b,QAAQ,IAFFo7B,EAF4B,EAE5BA,QAASvnC,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAM1B,OAFoBsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,eAACi4B,GAAD,CAAM9oC,MAAM,WAAWipC,WAAY,eAACm7F,GAAD,IAAnC,SACGv1F,EACC,uCACE,eAAC,GAAOK,QAAQjzC,OAAhB,CACEC,OAAQ2yC,EACRzhC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAGd,eAAC,GAAD,CAAcoiG,OAAQzvD,OAGxB,wDArBF,eAAC/F,GAAD,CACE9oC,MAAM,WACNipC,WAAY,eAACm7F,GAAD,IACZp7F,KAAK,2CCfE,SAASs7F,KAAgB,IAAD,EACTrnI,oBAAS,GADA,mBAC9B42C,EAD8B,KACtBjhB,EADsB,OAEAqwG,GAAO/zF,QAAQ10C,OAAO,CACzDiZ,QAAQ,IADFm7B,EAF6B,EAE7BA,SAAUtnC,EAFmB,EAEnBA,QAASiD,EAFU,EAEVA,MAIrBzO,EAAOd,mBAAQ,WACnB,OAAO4zC,EAASvzC,QAAO,SAACuD,GACtB,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQjF,IACZ,OACE,gBAAC9F,GAAD,CAAM9oC,MAAM,YAAYipC,WAAY,eAACm7F,GAAD,IAApC,UACE,gBAACjgG,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAO2zC,QAAQz0C,MAAhB,CACEm0C,SAAU9yC,EACVsR,UAAW9F,EACX8b,UAAW7Y,OCvCJ,SAASg6H,KAAc,IAC5Bt9H,EAAcioC,GAAQ30C,SAAtB0M,UAD2B,EAEXi/C,KAAfE,EAF0B,oBAGnC,OACE,eAACtd,GAAD,CAAM9oC,MAAM,WAAWipC,WAAY,eAACm7F,GAAD,IAAnC,SACE,eAAC,GAAQnoI,OAAT,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAAC0yC,GAAD,OACR5nC,EAAU4nC,GAAStqC,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACtBsuD,EAAY,sBAAD,OAAuBtuD,YCP/B,SAAS0sI,KAAiB,IACjC/3E,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC83E,GAAD,MAEF,eAAC,KAAD,CAAO93E,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC43E,GAAD,MAEF,eAAC,KAAD,CAAOzsC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC63E,GAAD,SAhBF,eAACx7F,GAAD,CACE9oC,MAAM,WACNipC,WAAY,eAACm7F,GAAD,IACZp7F,KAAK,2CCZE,SAASy7F,KAAyB,IAAD,EACNh4H,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7DmE,EADsC,EACtCA,QAAS4oB,EAD6B,EAC7BA,mBAEjB,OAAK5oB,GAAY4oB,EASV,eAACirG,GAAD,IAPH,eAAC57F,GAAD,CACE9oC,MAAM,cACNipC,WAAY,eAACm6F,GAAD,IACZp6F,KAAK,2CAOb,SAAS07F,KAAe,IAAD,EACGznI,mBAAS,IADZ,mBACdnB,EADc,KACR6oI,EADQ,OAEe1nI,mBAAS,GAFxB,mBAEd2nI,EAFc,KAEFC,EAFE,OAGS5nI,oBAAS,GAHlB,mBAGdqK,EAHc,KAGLqjC,EAHK,KAKfm6F,EAAgBjlI,uBAAY,WAChC8qC,GAAW,GvkBsBR,WAAP,gCukBrBIo6F,GACGxgI,MAAK,YAAqB,IAAZzI,EAAW,EAAjBA,KACP6oI,EAAQ7oI,EAAKilI,gBAEdl4G,SAAQ,kBAAM8hB,GAAW,QAC3B,IAMH,OAJA/2B,qBAAU,WACRkxH,MACC,CAACA,EAAeF,IAGjB,eAAC97F,GAAD,CAAM9oC,MAAO,0BAA2BipC,WAAY,eAACm6F,GAAD,IAApD,SACE,eAACtC,GAAD,CACEC,YAAajlI,EACbsR,UAAW9F,EACX8b,UAAW,kBAAMyhH,EAAcD,EAAa,QCrCrC,SAASI,KACtB,IAAMltI,EAAKoa,OAAO63B,eAAYjyC,IADU,EAEImrI,GAAO3B,YAAY/mI,OAAO,CACpEzC,KACA2b,QAAQ,IAFF6rC,EAFgC,EAEhCA,YAAah4C,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMAsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7DmE,EANgC,EAMhCA,QAAS4oB,EANuB,EAMvBA,mBAEjB,OAAK5oB,GAAY4oB,EAMf,eAACqP,GAAD,CAAM9oC,MAAO,cAAeipC,WAAY,eAACm6F,GAAD,IAAxC,SACG9jF,EACC,uCACE,eAAC,GAAOgiF,YAAYrlI,OAApB,CACEC,OAAQojD,EACRlyC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,IAEZE,YAAY,IAEd,eAAC,GAAD,CAAckiG,OAAQh/C,OAGxB,2DAlBF,eAACxW,GAAD,CAAM9oC,MAAM,cAAcgpC,KAAK,2CCTrC,IAAMuD,GAAQrc,KAAM0jB,MAAM3qB,OAEX,SAASg8G,KAAoB,IAAD,EACbhoI,oBAAS,GADI,mBAClC42C,EADkC,KAC1BjhB,EAD0B,OAEAqwG,GAAO3B,YAAY9mI,OAAO,CACjEiZ,QAAQ,IADF4rC,EAFiC,EAEjCA,aAAc/3C,EAFmB,EAEnBA,QAASiD,EAFU,EAEVA,MAIzBzO,EAAOd,mBAAQ,WACnB,OAAOqkD,EAAahkD,QAAO,SAACuD,GAE1B,OADgB2tC,GAAQ3tC,EAAEukD,WACNtP,OAErB,CAACA,EAAQwL,IAX6B,EAaD5yC,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7DmE,EAbiC,EAajCA,QAAS4oB,EAbwB,EAaxBA,mBAEjB,OAAK5oB,GAAY4oB,EAUf,gBAACqP,GAAD,CAAM9oC,MAAO,eAAgBipC,WAAY,eAACm6F,GAAD,IAAzC,UACE,gBAACj/F,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAO+lI,YAAY7mI,MAApB,CACE4kD,aAAcvjD,EACdsR,UAAW9F,EACX8b,UAAW7Y,OAnCb,eAACu+B,GAAD,CACE9oC,MAAM,cACNipC,WAAY,eAACm6F,GAAD,IACZp6F,KAAK,2CCzBE,SAASk8F,KAAqB,IACrCz4E,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,eAAX,SACE,eAACg4E,GAAD,MAEF,eAAC,KAAD,CAAOh4E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACu4E,GAAD,MAEF,eAAC,KAAD,CAAOptC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACw4E,GAAD,SCdO,SAASE,GAAT,GAA2C,IAAbnrI,EAAY,EAAZA,SAC3C,OACE,gBAACopI,GAAD,WACGppI,EACD,sBAAKd,UAAU,qBACf,eAACiuG,GAAD,CAAgBltG,GAAG,0BAAnB,8BCDS,SAASmrI,KACtB,IAAMttI,EAAKoa,OAAO63B,eAAYjyC,IADO,EAEImrI,GAAOtB,SAASpnI,OAAO,CAC9DzC,KACA2b,QAAQ,IAFF47B,EAF6B,EAE7BA,SAAU/nC,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMGsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7DmE,EAN6B,EAM7BA,QAAS4oB,EANoB,EAMpBA,mBAEjB,OACE,eAACqP,GAAD,CAAM9oC,MAAM,YAAYipC,WAAY,eAACk8F,GAAD,IAApC,SACG91F,EACC,uCACE,eAAC,GAAOsyF,SAAS1lI,OAAjB,CACEC,OAAQmzC,EACRjiC,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,IAEZE,WAAYkL,KAAamyB,GAAsB5oB,KAEjD,eAAC,GAAD,CAAcytF,OAAQjvD,OAGxB,yDCvBO,SAASg2F,KACtB,IAAMz+H,EAAaszD,GAAgB,YAC3Bz/B,EAAakN,GAASptC,OAAO,CAAEzC,GAAI8O,EAAY6M,QAAQ,IAAvDgnB,SAF8B,EAGVx9B,oBAAS,GAHC,mBAG/B42C,EAH+B,KAGvBjhB,EAHuB,OAIAqwG,GAAOtB,SAAS78F,UAAU,CAC9DrxB,QAAQ,EACRrV,OAAQwI,EAAa,CAAEA,cAAe,KAFhCwoC,EAJ8B,EAI9BA,UAAW9nC,EAJmB,EAInBA,QAASiD,EAJU,EAIVA,MAKtBzO,EAAOd,mBAAQ,WACnB,OAAOo0C,EAAU/zC,QAAO,SAACuD,GACvB,OAAOA,EAAEgU,cAAgBihC,OAE1B,CAACA,EAAQzE,IAENpvC,GAAgB,OAARy6B,QAAQ,IAARA,OAAA,EAAAA,EAAUjjC,MAAV,6BAAgCijC,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAUjjC,MAAS,aAEjE,OACE,gBAACsxC,GAAD,CAAM9oC,MAAOA,EAAOipC,WAAY,eAACk8F,GAAD,IAAhC,UACE,gBAAChhG,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,GAAOomI,SAASlnI,MAAjB,CACE20C,UAAWtzC,EACXsR,UAAW9F,EACX8b,UAAW7Y,OC9CJ,SAAS+6H,KAAe,IAC7Br+H,EAAc06H,GAASpnI,SAAvB0M,UAD4B,EAEZi/C,KAAfE,EAF2B,sBAII35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7D+sB,EAJ4B,EAI5BA,mBAAoB5oB,EAJQ,EAIRA,QAE5B,OAAM4oB,GAAsB5oB,EAU1B,eAACi4B,GAAD,CAAM9oC,MAAM,gBAAgBipC,WAAY,eAACk8F,GAAD,IAAxC,SACE,eAAC,GAASlpI,OAAV,CACEzD,OAAO,EACP0D,OAAQ,CAAE0W,YAAY,GACtBzW,SAAU,SAACkzC,GAAD,OACRpoC,EAAUooC,GAAU9qC,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACvBsuD,EAAY,uBAAD,OAAwBtuD,YAdzC,eAACgxC,GAAD,CACE9oC,MAAM,gBACNipC,WAAY,eAACk8F,GAAD,IACZn8F,KAAK,2CCZE,SAASu8F,KAAkB,IAClC94E,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC64E,GAAD,MAEF,eAAC,KAAD,CAAO74E,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC24E,GAAD,MAEF,eAAC,KAAD,CAAOxtC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC44E,GAAD,SCVO,SAASG,KACtB,IAAM5+H,EAAaszD,GAAgB,YAC3Bz/B,EAAakN,GAASptC,OAAO,CAAEzC,GAAI8O,EAAY6M,QAAQ,IAAvDgnB,SAF4B,EAGIx9B,mBAAS,KAHb,mBAG7BwoI,EAH6B,KAGfC,EAHe,KAKpCzC,GAAO1C,WAAW/lI,OAAO,CACvBiZ,QAAQ,IAEVwvH,GAAO/zF,QAAQ10C,OAAO,CACpBiZ,QAAQ,IAEVwvH,GAAOt1F,gBAAgBnzC,OAAO,CAC5BiZ,QAAQ,IAZ0B,MAeSwvH,GAAOn+F,UAAU,CAC5DrxB,OAAQ,OACRrV,OAAQwI,EAAa,CAAEA,cAAe,KAFhC0mC,EAf4B,EAe5BA,QAAS/iC,EAfmB,EAenBA,MAAO7E,EAfY,EAeZA,QAAS4B,EAfG,EAeHA,QAK3BtH,GAAgB,OAARy6B,QAAQ,IAARA,OAAA,EAAAA,EAAUjjC,MAAV,0BAA6BijC,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAUjjC,MAAS,UAExDsE,EAAOd,mBAAQ,WACnB,OAAOsyC,EAAQjyC,QAAO,SAACuD,GACrB,OAAOA,EAAEozC,SAAWyzF,OAErB,CAACA,EAAcn4F,IAElB,OACE,gBAACxE,GAAD,CAAM9oC,MAAOA,EAAOipC,WAAY,eAACm6F,GAAD,IAAhC,UACE,gBAACj/F,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAA0B,MAAjB4rE,EACT9mI,SAAU,kBAAM+mI,EAAgB,MANlC,mBACM,gBASN,eAACp8B,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAA0B,MAAjB4rE,EACT9mI,SAAU,kBAAM+mI,EAAgB,MANlC,gBACM,aASN,eAACp8B,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,QAA0B,MAAjB4rE,EACT9mI,SAAU,kBAAM+mI,EAAgB,MANlC,qBACM,qBAWR,eAAC,GAAOjrI,MAAR,CACE6yC,QAASxxC,EACTsR,UAAW9F,EACX8b,UAAW,WACT7Y,IACA7E,UCrEK,SAASigI,KAAa,IAC3B1+H,EAAcg8H,GAAO1oI,SAArB0M,UAD0B,EAEVi/C,KAAfE,EAFyB,sBAIM35C,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7D+sB,EAJ0B,EAI1BA,mBAAoB5oB,EAJM,EAINA,QAE5B,OAAM4oB,GAAsB5oB,EAU1B,eAACi4B,GAAD,CAAM9oC,MAAO,aAAcipC,WAAY,eAACm6F,GAAD,IAAvC,SACE,eAAC,GAAOnnI,OAAR,CACEC,OAAQ,CAAEyF,UAAU,EAAMsgI,wBAAwB,GAClD9lI,SAAU,SAACqjD,GAAD,OACRv4C,EAAUu4C,GAAQj7C,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OAAYsuD,EAAY,YAAD,OAAatuD,YAZ/D,eAACgxC,GAAD,CACE9oC,MAAM,aACNipC,WAAY,eAACm6F,GAAD,IACZp6F,KAAK,2CCRE,SAAS48F,KACtB,IAAM9tI,EAAKgyC,SAASC,eAAYjyC,IADG,EAEImrI,GAAO1oI,OAAO,CAAEzC,KAAI2b,QAAQ,IAA3D+rC,EAF2B,EAE3BA,OAAQr4C,EAFmB,EAEnBA,UAAWG,EAFQ,EAERA,QACrBtH,EAAK,iBAAkB,OAANw/C,QAAM,IAANA,OAAA,EAAAA,EAAQjxC,aAAc,KAAOixC,EAAOjxC,YAAc,IAHtC,EAKK9B,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA7DmE,EAL2B,EAK3BA,QAAS4oB,EALkB,EAKlBA,mBAEjB,OACE,eAACqP,GAAD,CACE9oC,MAAOA,EACPgpC,KACE1hC,EAAU,aAAgBk4C,EAAD,OAA+BA,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAQy4C,SAA7B,mBAErChvD,WAAY,eAACm6F,GAAD,IALd,SAOG5jF,EACC,uCACE,eAAC,GAAOvjD,OAAR,CACEC,OAAQsjD,EACRrjD,SAAU,SAACqjD,GAAD,OAAYr4C,EAAUq4C,IAChCpjD,WAAYkL,KAAamyB,GAAsB5oB,KAEjD,eAAC,GAAD,CAAcytF,OAAQ9+C,IACtB,eAAChuC,GAAA,EAAD,CAAO3X,QAAS,UAAhB,SACE,eAACy6G,GAAD,CACEh/E,aAAckqB,EAAOi1D,KACrBrnG,UAAW9F,EACXzM,OAAQ,CAAC,WAAY,SAAU,cAAe,eAIlD,OC7BK,SAASgrI,KAAkB,IAClCp5E,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,uBAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,gBAAX,SACE,eAAC03E,GAAD,MAEF,eAAC,KAAD,CAAO13E,KAAI,UAAKA,EAAL,cAAX,SACE,eAAC+3E,GAAD,MAEF,eAAC,KAAD,CAAO/3E,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACg3E,GAAD,MAEF,eAAC,KAAD,CAAOh3E,KAAI,UAAKA,EAAL,eAAX,SACE,eAAC84E,GAAD,MAEF,eAAC,KAAD,CAAO94E,KAAI,UAAKA,EAAL,iBAAX,SACE,eAACy4E,GAAD,MAEF,eAAC,KAAD,CAAOz4E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACk5E,GAAD,MAEF,eAAC,KAAD,CAAOl5E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACm5E,GAAD,MAEF,eAAC,KAAD,CAAOhuC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC+4E,GAAD,SCFD,SAAeM,KAAtB,gC,8CAAO,gCAAA7kI,EAAA,6DACCK,EAAU,CACdqgC,OAAQ,OACRj+B,QAAS,CAAE,eAAgB,oBAC3B2mB,KAAMxhB,KAAKC,UAAU,CACnBjF,MAAO,KACPM,QAAS,yBACTG,UAAW3N,kBAPV,SAcgBirC,MAAMz+B,IAAY,YAAa7B,GAd/C,UAcDkD,EAdC,OAkBQ,qBAFAA,EAASd,QAAQ+a,IAAI,gBAhB7B,iCAmBgBja,EAASq9B,OAnBzB,cAmBGA,EAnBH,yBAoBIz9B,QAAQC,OAAOw9B,EAAKp9B,kBApBxB,iCAuBED,EAASs9B,QAvBX,6C,sBCnCQ,SAASikG,GAAT,GAA2C,IAAb/rI,EAAY,EAAZA,SAC3C,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAG,YAAnB,sBACA,eAACktG,GAAD,CAAgBltG,GAAG,oBAAnB,qBACA,eAACktG,GAAD,CAAgBltG,GAAG,kBAAnB,mBACA,sBAAKf,UAAU,qBACdc,KCKP,IAAMgsI,GAAkB,CACtB,CAAEtuI,MAAO,mBAAoB6D,MAAO,oBACpC,CAAE7D,MAAO,kBAAmB6D,MAAO,mBACnC,CAAE7D,MAAO,iBAAkB6D,MAAO,kBAClC,CAAE7D,MAAO,kBAAmB6D,MAAO,mBACnC,CAAE7D,MAAO,sBAAuB6D,MAAO,uBACvC,CAAE7D,MAAO,mBAAoB6D,MAAO,qBAGvB,SAAS0qI,KAAY,IAChBC,EAAmBt6F,aAAY,CAAEn4B,QAAQ,IAAnDsD,SADyB,EAED9Z,mBAASipI,GAFR,mBAE1BnvH,EAF0B,KAEhBovH,EAFgB,KAI3BjlI,EAAW0O,cAEjBgE,qBAAU,WACRuyH,EAAYD,KACX,CAACA,IAEJtyH,qBAAU,WACR1S,EAASklI,KAAgBpvH,eAAeD,MACvC,CAACA,EAAU7V,IAEd,IAAMoxD,EAAezyD,uBACnB,SAAC0P,EAAOhU,GACN4qI,EAAY,2BACPpvH,GADM,mBAERxH,EAAQ/R,IAAEkxB,OAAOnzB,IAAUiC,IAAEoN,YAAYrP,GAAS,GAAKA,OAG5D,CAACwb,IAGH,OACE,gBAAC+xB,GAAD,CAAM9oC,MAAM,WAAWipC,WAAY,eAAC88F,GAAD,IAAnC,UACE,eAAC19F,GAAD,CAAeroC,MAAM,UAArB,SACE,eAACqmI,GAAD,CAAiBtvH,SAAUA,EAAUu7C,aAAcA,KADlB,mBAGnC,eAACjqB,GAAD,CAAeroC,MAAM,WAArB,SACE,eAACsmI,GAAD,CAAkBvvH,SAAUA,EAAUu7C,aAAcA,KADlB,oBAGpC,eAACjqB,GAAD,CAAeroC,MAAM,OAArB,SACE,eAACumI,GAAD,CAAcxvH,SAAUA,EAAUu7C,aAAcA,KADlB,gBAGhC,eAACjqB,GAAD,CAAeroC,MAAM,eAArB,SACE,eAACwmI,GAAD,CAAazvH,SAAUA,EAAUu7C,aAAcA,KADT,2BAO9C,SAAS+zE,GAAT,GAAsD,IAA3BtvH,EAA0B,EAA1BA,SAAUu7C,EAAgB,EAAhBA,aAC3B1hD,EAAcnE,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA3CkE,UAEJ61H,EAAiB,KAOrB,OANA,OAAI1vH,QAAJ,IAAIA,OAAJ,EAAIA,EAAU+1F,0BACZ25B,EAAiBjpI,IAAE0P,KAAK84H,GAAiB,CACvC,QADuC,OAEvCjvH,QAFuC,IAEvCA,OAFuC,EAEvCA,EAAU+1F,0BAIZ,uCACE,gBAACl0G,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,+BACA,gBAAC5G,GAAA,EAAK8F,QAAN,CACE5G,GAAG,gBACHN,KAAK,gBACL+B,GAAG,SACHoF,SAAU,SAACC,GAAD,OAAO0zD,EAAa,eAAgB1zD,EAAEC,OAAOtD,QACvDA,MAAOwb,EAAS80B,aALlB,UAOE,yBAAQtwC,MAAM,IAAd,uBACA,yBAAQA,MAAM,IAAd,gCAGJ,eAAC3C,GAAA,EAAKY,MAAN,UACE,eAACu1D,GAAD,CACEr3D,MAAM,gDACNI,GAAG,wBACH6G,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,wBAAyB/2D,IAC3DA,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU2vH,0BAGrB,eAAC9tI,GAAA,EAAKY,MAAN,UACE,eAACyU,GAAA,EAAD,CACEvW,MAAM,4BACNI,GAAG,yBACH6G,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,yBAA0B/2D,IAC5DA,MAAOkrI,EACPn5H,QAAS04H,GACT75H,YAAa,4BAGjB,gBAACvT,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oCACA,gBAAC5G,GAAA,EAAK8F,QAAN,CACE5G,GAAG,uBACHN,KAAK,uBACL+B,GAAG,SACHoF,SAAU,SAACC,GAAD,OAAO0zD,EAAa,uBAAwB1zD,EAAEC,OAAOtD,QAC/DA,MAAOwb,EAAS8iB,sBAAwB,IAL1C,UAOE,yBAAQt+B,MAAM,IAAd,gBACA,yBAAQA,MAAM,IAAd,wBAGJ,gBAAC3C,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,KAAtB,qCACA,gBAACN,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oBACA,eAAC,KAAKlG,OAAN,CACExB,GAAG,gBACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU2yC,aACjB/qD,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,eAAgB/2D,IAClDC,QAAQ,EACRsW,aAAa,OAIjB,gBAAClZ,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oBACA,eAAC,KAAKhG,MAAMF,OAAZ,CACExB,GAAG,mBACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAUy8C,eACjB70D,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,iBAAkB/2D,IACpDuW,aAAa,OAIjB,eAAClZ,GAAA,EAAKY,MAAN,UACE,eAACZ,GAAA,EAAKO,MAAN,CACErB,GAAG,wBACHJ,MAAM,4DACNmiE,QAAO,OAAE9iD,QAAF,IAAEA,OAAF,EAAEA,EAAU4vH,mBACnBhoI,SAAU,SAACC,GAAD,OACR0zD,EAAa,qBAAsB1zD,EAAEC,OAAOg7D,cAKjDjpD,EACC,eAAChY,GAAA,EAAKY,MAAN,UACE,eAACZ,GAAA,EAAKO,MAAN,CACErB,GAAG,sBACHJ,MAAM,sEACNmiE,QAAO,OAAE9iD,QAAF,IAAEA,OAAF,EAAEA,EAAU6vH,iBACnBjoI,SAAU,SAACC,GAAD,OACR0zD,EAAa,mBAAoB1zD,EAAEC,OAAOg7D,cAI9C,WAMZ,SAASysE,GAAT,GAAuD,IAA3BvvH,EAA0B,EAA1BA,SAAUu7C,EAAgB,EAAhBA,aACpC,OACE,uCACE,gBAAC15D,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,gCACA,eAAC,GAAGrE,OAAO7B,OAAX,CACExB,GAAG,cACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAUulB,WACjB39B,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,aAAc/2D,IAChDuW,aAAa,OAGjB,gBAAClZ,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,CAAYtG,UAAU,KAAtB,oCACA,gBAACN,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oBACA,eAAC,KAAKlG,OAAN,CACExB,GAAG,uBACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU07G,mBACjB9zH,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,qBAAsB/2D,IACxDC,QAAQ,EACRsW,aAAa,OAGjB,gBAAClZ,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,qBACA,eAAC,GAAQ6qD,OAAO/wD,OAAhB,CACExB,GAAG,2BACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU27G,sBACjB/zH,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,wBAAyB/2D,IAC3DuW,aAAa,OAGjB,gBAAClZ,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,uBACA,eAAC,KAAKlG,OAAN,CACExB,GAAG,6BACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU47G,wBACjBh0H,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,0BAA2B/2D,IAC7DC,QAAQ,EACRyQ,YAAY,EACZ6F,aAAa,OAGjB,gBAAClZ,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,oBACA,eAAC,KAAKhG,MAAMF,OAAZ,CACExB,GAAG,0BACHyD,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU67G,qBACjBj0H,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,uBAAwB/2D,IAC1DuW,aAAa,aAQzB,SAASy0H,GAAT,GAAmD,IAA3BxvH,EAA0B,EAA1BA,SAAUu7C,EAAgB,EAAhBA,aAChC,OACE,uCACE,eAAC15D,GAAA,EAAKY,MAAN,UACE,eAACu1D,GAAD,CACEr3D,MAAM,mCACNI,GAAG,qBACHsJ,KAAK,SACLzC,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,mBAAoB/2D,IACtDA,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU8vH,iBACjB/4G,IAAI,IACJ/1B,IAAI,UAGR,eAACa,GAAA,EAAKY,MAAN,UACE,eAACu1D,GAAD,CACEr3D,MAAM,qCACNI,GAAG,uBACHsJ,KAAK,SACLzC,SAAU,SAACpD,GAAD,OAAW+2D,EAAa,qBAAsB/2D,IACxDA,MAAK,OAAEwb,QAAF,IAAEA,OAAF,EAAEA,EAAU+vH,mBACjBh5G,IAAI,IACJ/1B,IAAI,eAOd,SAASyuI,KAAe,IACR1uI,EAAO2U,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA1CF,KACAA,EAASuH,KAAKxZ,OAAO,CAC3BzC,KACA2b,QAAQ,IAFFjH,KAIFoK,GAAkB,OAAJpK,QAAI,IAAJA,OAAA,EAAAA,EAAMoK,cAAe,GAEjCmwH,EFvQK,WAA2B,IAAD,EACT9pI,oBAAS,GADA,mBAChCqK,EADgC,KACvBqjC,EADuB,KAEjC1Q,EAAUviB,iBAAO,MA4BvB,MAAO,CAAEpQ,UAASy/H,YA1BElnI,sBAAW,uCAAC,WAAO2/F,GAAP,SAAAv+F,EAAA,sDAC9B0pC,GAAW,GAEX1Q,EAAQtyB,QAAUsB,IAAM6lB,KAAK,eAAiB0wE,EAAW,MAAO,CAC9DroF,WAAW,IAEb2uH,KACGvhI,MAAK,SAAC28B,GACL5a,KAAUC,OAAO2a,EAAMs+D,GACvB70D,GAAW,GACX1hC,IAAMwoD,OAAOx3B,EAAQtyB,QAAS,CAC5BgQ,OAAQ,eAAiB6nF,EAAW,IACpCp+F,KAAM6H,IAAM20B,KAAKyyE,QACjBl5F,UAAW,SAGdxS,OAAM,SAACC,GAON,OANAqE,IAAMwoD,OAAOx3B,EAAQtyB,QAAS,CAC5BgQ,OAAO,oBAAD,OAAsB6nF,EAAtB,cAAoC56F,GAC1CxD,KAAM6H,IAAM20B,KAAK0yE,MACjBn5F,UAAW,MAEbjV,QAAQC,IAAIyC,GACLR,QAAQC,OAAOO,MAvBI,2CAAD,sDAyB5B,KE0OqBoiI,GAAhBD,YACR,OACE,eAACluI,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAK6d,kBAAN,CAAwBza,OAAQsQ,QAGpC,eAAC3T,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG8d,EACC,eAAChd,EAAA,EAAD,CACEC,QAAQ,YACRC,QAAS,kBAAMitI,EAAY,GAAD,OAAInwH,EAAJ,UAF5B,gCAME,cCzRhB,IAkDeqwH,GAlDgBpqI,IAAMC,YACnC,WASEC,GACI,IARFxB,EAQC,EARDA,MAQC,IAPD5B,eAOC,SAND6f,EAMC,EANDA,OACAkS,EAKC,EALDA,UAKC,IAJDvf,mBAIC,MAJa,qBAIb,EAHErR,EAGF,yEAC4B60D,GAAqB,CAClDvxD,OAAQ,CAAEob,SAAQkS,aAClBjY,SAAUiY,KAAelS,IAFnB6jC,EADL,EACKA,UAAW/1C,EADhB,EACgBA,QAKbqF,EAAWnP,IAAEoP,OACjBywC,EACGhiD,QAAO,SAACod,GAAD,OAAsB,IAAfA,EAAEzgB,UAAsBygB,EAAE3gB,KAAOyD,KAC/C8C,KAAI,SAACyO,GACJ,MAAO,CAAEpV,MAAOoV,EAAEhV,GAAIyD,MAAOquB,aAAW9c,EAAEhV,QAG9C,SAGEiV,EAAc,KAQlB,OAPIxR,IAEAwR,EADEpT,EACYgT,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UAExCiC,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,eAAC0S,GAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAW9F,EACX+F,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OC9CND,GAAS,CAAC,KAAM,OAAQ,SAAU,SCGxC,IAmBeqsI,GAnBE,CAEf9sI,IAAKC,GAAMD,IAEXpD,QAASqD,GAAMrD,QACfsD,UAAWD,GAAMvD,OAAOwD,UAExBC,OAAQm1D,GACRl1D,OAAQi1D,GACR3qB,UAAW6qB,GAEXl1D,SACAsB,KAAMo1D,GACNg2E,kBACAC,cDfa,YAAuD,IAAtB5tH,EAAqB,EAArBA,OAAQkS,EAAa,EAAbA,UAAa,EAC7BikC,GAAqB,CACzDvxD,OAAQ,CAAEob,SAAQkS,aAClBjY,QAAQ,IAFF4pC,EAD2D,EAC3DA,UAAW/1C,EADgD,EAChDA,QAASiD,EADuC,EACvCA,MAK5B,OACE,eAACinD,GAAD,CACEnU,UAAWA,EACXxiD,OAAQA,GACRuS,UAAW9F,EACX8b,UAAW,kBAAM7Y,EAAM,CAAEiP,SAAQkS,eACjChJ,cAAe,KCInBzmB,OAAQuzD,ICTK,SAAS63E,GAAT,GAA2C,IAAD,IAAlB5zH,cAAkB,SACjDo/C,EAAO,CAAEp/C,UACT6zH,EAAoB,CACxBvwH,SAAU60B,aAAYinB,GACtBt8B,UAAWoR,GAASntC,OAAOq4D,GAE3BpsD,MAAOsN,KAAKvZ,OAAOq4D,GACnB3rD,WAAY6M,KAAK5Z,OAAOK,OAAOq4D,GAC/BrsD,OAAQuN,KAAKva,MAAMgB,OAAOq4D,GAC1B00E,cAAexzH,KAAKva,MAAMmD,QAAQnC,OAAOq4D,GACzClsD,MAAOoN,KAAKxO,KAAK/K,OAAOq4D,GAExBhc,gBAAiB0kB,GAAQlR,OAAO7vD,OAAOq4D,GACvCtc,kBAAmBglB,GAAQtT,SAASztD,OAAOq4D,GAC3Cnc,eAAgB6kB,GAAQnN,OAAO5zD,OAAOq4D,GACtCvsD,aAAci1D,GAAQ7hE,KAAKc,OAAOq4D,GAClCzc,eAAgBmlB,GAAQ9T,OAAOjtD,OAAOq4D,GACtC/sD,wBAAyBy1D,GAAQpU,eAAe3sD,OAAOq4D,GAEvDnyB,UAAWsrC,GAAG7wE,OAAOX,OAAOq4D,GAC5Bx2B,kBAAmB2vC,GAAG7wE,OAAOykC,SAASplC,OAAOq4D,GAC7CjwB,WAAYopC,GAAG3hB,OAAO7vD,OAAOq4D,GAC7B/xB,oBAAqBkrC,GAAGrK,iBAAiBnnE,OAAOq4D,GAChD52B,eAAgB+vC,GAAGjL,WAAWvmE,OAAOq4D,GACrClyB,UAAWqrC,GAAGt5B,OAAOl4C,OAAOq4D,GAC5B1vB,eAAgB6oC,GAAG1zD,YAAY9d,OAAOq4D,GAEtC20E,gBAAiB1+C,GAAKyC,WAAW/wF,OAAOq4D,GACxC40E,qBAAsB3+C,GAAK0C,gBAAgBhxF,OAAOq4D,GAClD60E,4BAA6B5+C,GAAKwC,uBAAuB9wF,OAAOq4D,GAEhErV,kBAAmBuuE,GAAgBvxH,OAAOq4D,GAC1C1U,aAAc4sE,GAAYvwH,OAAOq4D,GAEjCv4B,aAAc6P,GAAQD,YAAY1vC,OAAOq4D,IAGrC54B,EAAUp9B,IAAM6a,OAAO,MAEvBiwH,EAAcn8H,OAAOC,QAAQ67H,GAAmBjpI,KACpD,uCAAaiJ,WAxCwC,EA2ChBtM,mBAAQ,WAC7C,IAAMqtB,EAASs/G,EAAY5iH,QAAO,SAACkoC,EAAK3b,GAAN,OAAaA,EAAI2b,EAAMA,EAAM,IAAI,GAC7D7/C,EAAYib,IAAWs/G,EAAYxxH,OACnCy6F,EAAWvoF,EAASs/G,EAAYxxH,OACtC,MAAO,CAACwxH,EAAav6H,EAAWwjG,KAE/B+2B,GAjDoD,mBA2ChDrgI,EA3CgD,KA2CvC8F,EA3CuC,KA2C5BwjG,EA3C4B,KAmFvD,OAhCAh9F,qBAAU,WAEHH,IACDrG,EACsB,OAApB6sB,EAAQtyB,SAAoBipG,EAAW,IACzC32E,EAAQtyB,QAAUsB,YAAM,+BAAgC,CACtD7H,KAAM6H,IAAM20B,KAAKgqG,KACjBj3B,iBAAiB,EACjBC,SAAU,IACVz5F,UAAW,IAEbjV,QAAQC,IAAI,4BAEZ8G,IAAMwoD,OAAOx3B,EAAQtyB,QAAS,CAC5BipG,SAAUA,IAGJxjG,GAAiC,OAApB6sB,EAAQtyB,UAC/BzF,QAAQC,IAAI,wBACZwjD,GAAUkiF,QAAQtjI,MAAK,WACrBrC,QAAQC,IAAI,uBACZ8G,IAAMwoD,OAAOx3B,EAAQtyB,QAAS,CAC5BgQ,OAAQ,gBACRvW,KAAM6H,IAAM20B,KAAKyyE,QACjBM,iBAAiB,EACjBC,cAAU/oG,EACVsP,UAAW,aAIhB,CAAC7P,EAAS8F,EAAWwjG,EAAUn9F,IAE3B,CAAEnM,QAAS8F,EAAWwjG,WAAU7mG,SAAUu9H,GC9EnD,SAASQ,GAAT,GAAsC,IAAjBhxI,EAAgB,EAAhBA,OAAQU,EAAQ,EAARA,KACrBuwI,EAAQvqI,IAAEqqB,UAAUrwB,GAExB+S,EAKEzT,EALFyT,MACAjD,EAIExQ,EAJFwQ,QACAyC,EAGEjT,EAHFiT,SACAF,EAEE/S,EAFF+S,WAGIm+H,EADFlxI,EADD0G,IAAE0M,UAAU1S,KAEoBuS,EACnC,OACE,gCACE,8BAAKg+H,IACL,qBAAI7uI,UAAU,aAAd,SACGoO,EAAU,UAAY0gI,EAAYA,EAAU7xH,OAAS,OAExD,8BAAK8S,IAAOpf,GAAYo9D,YACxB,8BACE,eAACrtE,EAAA,EAAD,CACEsG,KAAK,KACLrG,QAAQ,UACR6F,UAAWlC,IAAEC,WAAW8M,GACxBzQ,QAAS,WACPyQ,KALJ,yBAeO,SAAS09H,KAAiB,IAC/Bl+H,EAAas9H,GAAa,CAAE5zH,QAAQ,IAApC1J,SACFm+H,EAAS18H,OAAOC,QAAQ1B,GAAU1L,KAAI,YAAe,IAAD,mBAAZsC,EAAY,KAAP/B,EAAO,KACxD,OAAO,eAACkpI,GAAD,CAAqBtwI,KAAMmJ,EAAK7J,OAAQ8H,GAAxB+B,MAEnBo4B,EAAS+sB,GAAU,CAAEC,eAAe,IAC1C,OACE,gBAACjd,GAAD,CAAM9oC,MAAM,mBAAmBipC,WAAY,eAAC88F,GAAD,IAA3C,UACE,eAACltI,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,eAACJ,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQC,QAAQ,SAASC,QAAS,kBAAMi/B,KAAxC,8CAKJ,gBAAClgC,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAAC,KAAD,CAAOm+E,SAAO,EAAC3xD,UAAQ,EAACC,OAAK,EAA7B,UACE,iCACE,gCACE,uCACA,0CACA,+CACA,6BAGJ,iCAAQ0iH,SAGZ,eAACpvI,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACovI,GAAD,YAOV,SAASC,GAAT,GAA6C,IAAfC,EAAc,EAAdA,KAAM7wI,EAAQ,EAARA,KAAQ,EACd6wI,EAAK,CAAE50H,QAAQ,IAAnC1J,EADkC,EAClCA,SAAUQ,EADwB,EACxBA,MAClB,OACE,gCACE,8BAAK/S,IACL,8BAAKuS,EAASoM,SACd,8BACE,eAACvc,EAAA,EAAD,CACEsG,KAAK,KACLrG,QAAQ,UACR6F,UAAWlC,IAAEC,WAAW8M,GACxBzQ,QAAS,WACPyQ,KALJ,wBAeR,SAAS49H,KACP,OACE,gBAAC,KAAD,CAAOjxD,SAAO,EAAC3xD,UAAQ,EAACC,OAAK,EAA7B,UACE,iCACE,gCACE,uCACA,0CACA,6BAGJ,mCACE,eAAC4iH,GAAD,CAAoB5wI,KAAK,WAAW6wI,KAAM9sE,GAAQ/gE,SAClD,eAAC4tI,GAAD,CAAoB5wI,KAAK,MAAM6wI,KAAMr8D,GAAGxxE,SACxC,eAAC4tI,GAAD,CAAoB5wI,KAAK,WAAW6wI,KAAMl+F,GAAQ3vC,SAClD,eAAC4tI,GAAD,CACE5wI,KAAK,qBACL6wI,KAAM1gG,GAASiO,UAAUp7C,SAE3B,eAAC4tI,GAAD,CAAoB5wI,KAAK,gBAAgB6wI,KAAMza,GAAQQ,KAAK5zH,SAC5D,eAAC4tI,GAAD,CACE5wI,KAAK,qBACL6wI,KAAMza,GAAQQ,KAAKr6G,KAAKvZ,SAE1B,eAAC4tI,GAAD,CAAoB5wI,KAAK,WAAW6wI,KAAMza,GAAQpzH,SAClD,eAAC4tI,GAAD,CAAoB5wI,KAAK,eAAe6wI,KAAMjkB,GAAI1C,OAAOlnH,SACzD,eAAC4tI,GAAD,CACE5wI,KAAK,kBACL6wI,KAAMjkB,GAAIC,WAAW7pH,SAEvB,eAAC4tI,GAAD,CACE5wI,KAAK,wBACL6wI,KAAMjkB,GAAIT,gBAAgBnpH,SAE5B,eAAC4tI,GAAD,CAAoB5wI,KAAK,iBAAiB6wI,KAAMjkB,GAAInC,SAASznH,SAC7D,eAAC4tI,GAAD,CAAoB5wI,KAAK,UAAU6wI,KAAMpF,GAAOzoI,SAChD,eAAC4tI,GAAD,CAAoB5wI,KAAK,YAAY6wI,KAAMnB,GAAS1sI,SACpD,eAAC4tI,GAAD,CAAoB5wI,KAAK,gBAAgB6wI,KAAMroB,GAAYxlH,eC1IpD,SAAS8tI,KAAmB,IAAD,EACKruE,GAAMz/D,OAAO,CAAEiZ,QAAQ,IAA5DgiB,EADgC,EAChCA,QAASlrB,EADuB,EACvBA,MAAO7E,EADgB,EAChBA,QAAS4B,EADO,EACPA,QAKjC,OAJAsM,qBAAU,WACRrJ,IACA7E,MACC,CAAC6E,EAAO7E,IAET,eAACojC,GAAD,CACE9oC,MAAM,UACNipC,WAAY,eAAC88F,GAAD,IACZ/8F,KAAM1hC,EAAU,aAAe,KAHjC,SAKGA,EAAU,KAAO,eAACihI,GAAD,CAAO9yG,QAASA,MAKxC,SAAS8yG,GAAT,GAA6B,IAAZ9yG,EAAW,EAAXA,QAAW,EACAz6B,mBAAQ,WAGhC,MAAO,CAAEiL,SAFQwvB,EAAQp6B,QAAO,SAACmtI,GAAD,MAAkB,YAAXA,EAAEpnI,QAEtB86B,IADPzG,EAAQp6B,QAAO,SAACmtI,GAAD,MAAkB,OAAXA,EAAEpnI,WAEnC,CAACq0B,IAJIxvB,EADkB,EAClBA,SAAUi2B,EADQ,EACRA,IAKlB,OACE,gBAACrjC,EAAA,EAAD,WACE,gBAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,oBAAGG,UAAU,OAAb,uBACS,OAAR+M,QAAQ,IAARA,OAAA,EAAAA,EAAUkQ,QACPlQ,EAAS5H,KAAI,SAACC,EAAGmoB,GAAJ,OACX,eAACgiH,GAAD,CAA0C3sI,KAAMwC,GAAhD,0BAAmCmoB,OAErC,yCAEN,gBAAC3tB,EAAA,EAAD,CAAKC,GAAG,OAAR,UACE,oBAAGG,UAAU,OAAb,kBACI,OAAHgjC,QAAG,IAAHA,OAAA,EAAAA,EAAK/lB,QACF+lB,EAAI79B,KAAI,SAACC,EAAGmoB,GAAJ,OACN,eAACgiH,GAAD,CAAqC3sI,KAAMwC,GAA3C,qBAA8BmoB,OAEhC,uCAMZ,SAASgiH,GAAT,GAA8B,IAAT3sI,EAAQ,EAARA,KACf4mE,EAAO,GACX,cAAQ5mE,QAAR,IAAQA,OAAR,EAAQA,EAAMsF,MACZ,IAAK,UACHshE,EACE,eAAC,GAAQ3mE,KAAT,CAAcjE,GAAE,OAAEgE,QAAF,IAAEA,OAAF,EAAEA,EAAM6E,IAAxB,kCAAyC7E,QAAzC,IAAyCA,OAAzC,EAAyCA,EAAM6E,OAEjD,MAEF,IAAK,KACH+hE,EAAO,eAAC,GAAG3mE,KAAJ,CAASjE,GAAE,OAAEgE,QAAF,IAAEA,OAAF,EAAEA,EAAM6E,IAAnB,6BAA+B7E,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAM6E,OAIhD,OACE,eAACu4E,GAAA,EAAD,CAAM9/E,MAAO,CAAEiuC,MAAO,SAAtB,SACE,eAAC6xC,GAAA,EAAK54E,KAAN,UAAYoiE,GAAQ,OC/DX,SAASgmE,KAAmB,IACnCj8E,EAASkrC,eAATlrC,KAEN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,YAAX,SACE,eAAC67E,GAAD,MAEF,eAAC,KAAD,CAAO77E,KAAI,UAAKA,EAAL,UAAX,SACE,eAACw7E,GAAD,MAEF,eAAC,KAAD,CAAOrwC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACw5E,GAAD,SCZO,SAAS0C,GAAT,GAAuC,IAAb3uI,EAAY,EAAZA,SACvC,OACE,gBAAC,GAAD,WACE,eAACmtG,GAAD,CAAgBltG,GAAI,cAAgBi2B,KAAMq5D,UAAUtgE,OAApD,wBAGA,eAACk+E,GAAD,CAAgBltG,GAAI,cAApB,wBACA,eAACktG,GAAD,CAAgBltG,GAAI,mBAApB,wBACA,eAACktG,GAAD,CAAgBltG,GAAI,iBAApB,sBACCD,KCNQ,SAAS4uI,KACtB,IAAM9wI,EAAKiyC,eAAYjyC,GACjBigF,EAAa7d,GAAgB,cAC/B7T,EAAUC,eACd,OACE,eAACxd,GAAD,CACE9oC,MAAO,SAAWlI,EAClBmxC,WACE,gBAAC0/F,GAAD,WACE,sBAAKzvI,UAAU,qBACf,eAACiuG,GAAD,CACEjuG,UAAU,mBACVe,GAAE,gBAAWnC,GAFf,wBAGUA,QARhB,SAYE,eAACe,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAKuyF,OAAN,CACEroC,OAAQlrD,EACRigF,WAAYA,EACZF,cAAe,kBAAMxxB,EAAQzwC,KAAK,UAClC04C,SAAU,kBAAMjI,EAAQzwC,KAAK,UAC7Bk0D,SAAU,kBAAMzjB,EAAQzwC,KAAK,kBCnBzC,IAAM8pH,GAAsB,CAC1Bn9D,OAAQ4sC,IAGK,SAAS05B,KACtB,IAAMvzH,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QACjDs8H,EAAa5uE,GAAgB,QAC7B6uE,EAAa7uE,GAAgB,QAC7B8uE,EAAkB9uE,GAAgB,cAClC1tD,EAAOhP,IAAE6E,QAAQymI,GAAcxzH,EAAewzH,EAC9Cn7G,EAAO1E,IAAO8/G,GACd1iF,EAAUC,eAPkB,EASGwiC,GAAKtuF,OAAO,CAC/Ca,OAAQ,CACNk9B,OAAQ/rB,EACRmhB,KAAMo7G,KAHFppF,EAT0B,EAS1BA,MAAOr4C,EATmB,EASnBA,QAAS+7C,EATU,EASVA,SAOlBg9B,EAAiC,SAApB2oD,EACX7oF,EAAoB2oC,GAAKlZ,gBAAgB,CAC/Cn8D,QAAQ,IADF0sC,gBAIF/8B,EAAYvjB,uBAAY,WAC5BwjD,IACAlD,MACC,CAACA,EAAiBkD,IAErB,SAAS4lF,EAAT,GAAqD,IAAnCz8H,EAAkC,EAAlCA,KAAMmhB,EAA4B,EAA5BA,KAA4B,IAAtB0yD,kBAAsB,SAClD,MAAM,cAAN,OAAqB7zE,EAArB,iBAAkCmhB,EAAlC,uBAAqD0yD,GAGvD,IAAK1yD,EAAKI,YAAc+6G,EAAY,CAClC,IAAMI,EAAYv7G,EAAKI,UACnBmC,KAAMq5D,UAAU57D,GAChBuC,KAAMq5D,UAAUtgE,OACpB,OAAO,eAAC,KAAD,CAAUhvB,GAAIgvI,EAAO,CAAEz8H,OAAMmhB,KAAMu7G,EAAW7oD,iBAGvD,IAAM7zD,EAAamzB,EAAM56B,QACvB,SAACujE,EAAO7sF,GAKN,IA+PmBitF,EAAS9nC,EA/PxBn0B,EAAQC,WAAWjxB,EAAIgxB,QA+PRi8D,EA/PiCjtF,EAAIkyB,KA+P5BizB,EA/PkCnlD,EAAImlD,OAiQ/DiwB,GADY3gD,KAAMwc,UAAUg8C,GACC9nC,GAAQ2wB,cAhQxC,OAAI91E,EAAIoqF,WACC,CAAEoxC,KAAM3uC,EAAM2uC,KAAOxqG,EAAO0qG,QAAS7uC,EAAM6uC,SAE3C,CAAEF,KAAM3uC,EAAM2uC,KAAME,QAAS7uC,EAAM6uC,QAAU1qG,KAKxD,CAAEwqG,KAAM,EAAGE,QAAS,IAGtB,OACE,eAACruF,GAAD,CACE9oC,MAAM,aACNipC,WAAY,eAAC,GAAD,CAAiBtb,KAAMA,EAAMhvB,SAAUykB,IAFrD,SAIE,eAACvqB,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,GAAK2jE,QAAN,CACEjwD,KAAMA,EACNmhB,KAAMA,EACN0yD,WAAYA,EACZj9D,UAAWA,QAIjB,gBAAC+qD,GAAA,EAAI3kC,UAAL,CAAek3D,UAAWrgB,EAAa,SAAW,OAAlD,UACE,gBAACxnF,EAAA,EAAD,CAAKK,UAAU,+CAAf,UACE,gBAACJ,EAAA,EAAD,CAAKI,UAAU,SAASH,GAAI,EAA5B,UACE,eAACa,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBACPusD,EAAQzwC,KACNqzH,EAAO,CACLz8H,OACAmhB,KAAMo7G,EACN1oD,YAAY,MAIlBxmF,QAASwmF,EAAa,YAAc,UAXtC,kBAeA,eAACzmF,EAAA,EAAD,CACEV,UAAU,YACVY,QAAS,kBACPusD,EAAQzwC,KACNqzH,EAAO,CACLz8H,OACAmhB,KAAMo7G,EACN1oD,YAAY,MAIlBxmF,QAASwmF,EAAa,UAAY,YAXpC,uBAiBF,gBAACvnF,EAAA,EAAD,CAAKI,UAAU,SAASH,GAAI,EAA5B,UACE,eAACa,EAAA,EAAD,CAAQC,QAAQ,YAAYX,UAAU,YAAYwG,UAAQ,EAA1D,SACG,gBACCgtB,WAAWF,EAAWyqG,KAAOzqG,EAAW2qG,SAAS12G,QAAQ,KAE7D,eAAC7mB,EAAA,EAAD,CAAQC,QAAQ,UAAUX,UAAU,YAAYwG,UAAQ,EAAxD,SACG,mBAAqBgtB,WAAWF,EAAWyqG,MAAMx2G,QAAQ,KAE5D,eAAC7mB,EAAA,EAAD,CAAQC,QAAQ,SAASX,UAAU,YAAYwG,UAAQ,EAAvD,SACG,kBACCgtB,WAAWF,EAAW2qG,SAAS12G,QAAQ,WAI/C,eAAC5nB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,gBAACq1E,GAAA,EAAI3D,QAAL,WACE,eAAC2D,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,OAAnB,SACE,eAAC,GAAK3zE,MAAN,CACEklD,MAAOA,EACP9kD,OAAQ,CACN,UACA,KACA,WACA,cACA,aACA,aACA,gBACA,SAEFuS,UAAW9F,EACX8b,UAAWA,EACXxoB,WAAY8kI,OAGhB,eAACvxD,GAAA,EAAIspB,KAAL,CAAUrpB,SAAS,SAAnB,SACE,eAAC,GAAKgZ,YAAN,CACEznC,MAAOA,EACP9kD,OAAQ,CACN,UACA,KACA,WACA,cACA,YACA,UACA,YAEFuS,UAAW9F,EACX8b,UAAWA,uBAajC,SAAS0sF,GAAT,GAA8C,IAAnBniF,EAAkB,EAAlBA,KAAMhvB,EAAY,EAAZA,SAAY,EACP1B,oBAAS,GADF,mBACpC+6E,EADoC,KACxBmxD,EADwB,OAEHlsI,oBAAS,GAFN,mBAEpCswF,EAFoC,KAEtBC,EAFsB,KAGrCC,EAAe5tF,uBAAY,kBAAM2tF,GAAgB,KAAQ,IAEzDjtC,EAAQuoC,GAAKP,WALwB,EAOYO,GAAKI,eAAe,CACzE52B,aAAc,WACZlB,IACAzyD,OAVuC,mBAOpC0oF,EAPoC,KAOvBC,EAPuB,KAOLl2B,EAPK,KA8B3C,OACE,gBAACu3E,GAAD,WACE,sBAAKzvI,UAAU,qBACf,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,MAAf,SACE,eAACU,EAAA,EAAD,CACEC,QAAQ,UACRX,UAAU,4BACV41D,OAAK,EACLh1D,QAAS,WACPqvI,GAAc,GACd37C,GAAgB,IANpB,gCAcsB,YAAzBjtC,EAAM54C,QAAQqqC,OACb,eAACn5C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,MAAf,SACE,eAACU,EAAA,EAAD,CACEV,UAAU,4BACVW,QAAQ,UACRi1D,OAAK,EACLh1D,QAAS,WACPqvI,GAAc,GACd37C,GAAgB,IANpB,mCAcJ,eAAC30F,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,MAAf,SACE,gBAACU,EAAA,EAAD,CACEV,UAAU,4BACVY,QAAS,kBAAMs3D,EAAc7Q,EAAM54C,QAAQ7P,IAAI,IAC/C+B,QAAQ,SACRi1D,OAAK,EAJP,UAME,eAACj2D,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,iBAER,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG,eACCk3B,KAAU86B,YAAYvK,EAAM54C,QAAQm5C,eAG1C,eAACjoD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMynD,EAAM54C,QAAQk5C,4BAMJ,YAAzBN,EAAM54C,QAAQqqC,OACb,eAACn5C,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKI,UAAU,MAAf,SACE,gBAACU,EAAA,EAAD,CACEV,UAAU,mCACV41D,OAAK,EACLh1D,QAAS,kBAAMymD,EAAMioC,QAAQjoC,EAAM54C,QAAQ7P,KAC3C+B,QAAQ,UAJV,UAME,eAAChB,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAM,0BAER,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACG,UAAYk3B,KAAU86B,YAAYvK,EAAM54C,QAAQq5C,aAGrD,eAACnoD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UAAMynD,EAAM54C,QAAQk5C,4BAK1B,KACJ,eAAC,GAAKopC,SAAN,CACEtqF,KAAM4tF,EACNptF,OAAQstF,EACR9/D,KAAMA,EACNqqD,WAAYA,EACZmO,OAAQ,WACNsH,IACA9uF,KAEF2vD,SAAUm/B,IAEZ,eAACpG,EAAD,eAAiBC,OC7SR,SAAS8hD,KACtB,IAAM9zH,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADlB,EAGHvP,mBAASgsB,OAHN,mBAG9B44B,EAH8B,KAGnBgpD,EAHmB,KAI/BjY,EAAY53F,mBAAQ,WACxB,IAAM89H,EAAO7vG,MAAS6vG,KAAKj3E,EAAUi3E,QACrC,MAAO,CACLj3E,UAAW54B,IAAO6vG,GAAMtoG,QAAQ,QAChC2yB,QAASl6B,IAAO6vG,GAAM7hC,MAAM,WAE7B,CAACp1C,IAViC,EAYAinC,GAAKtuF,OAAO,CAC/Ca,OAAO,aACLk9B,OAAQjjB,EACRwkE,SAAU,YACP8Y,KAJCjzC,EAZ6B,EAY7BA,MAAOr4C,EAZsB,EAYtBA,QAAS+7C,EAZa,EAYbA,SAOxB,OACE,gBAACva,GAAD,CACE9oC,MAAM,gBACNgpC,KAAI,UAAK9Y,KAAM0c,QAAQgmD,EAAU/wC,WAA7B,cAA6C3xB,KAAM0c,QACrDgmD,EAAUzvC,UAEZla,WAAY,eAAC0/F,GAAD,IALd,UAOE,eAAC9vI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAD,CACEI,UAAU,eACVy3B,SAAUkxB,EAAUjxB,SACpBjyB,SAAU,SAACgvB,GAAD,OAAUk9E,EAAa5hF,IAAO0E,KACxC07G,gBAAc,EACdp4G,WAAW,aAIjB,eAACp4B,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,MAEF,eAAC,GAAK2B,MAAN,CACEklD,MAAOA,EACP9kD,OAAQ,CAAC,OAAQ,KAAM,cAAe,aAAc,iBACpDuS,UAAW9F,EACX8b,UAAWigC,OClDJ,SAASijC,KACtB,OACE,eAACx9C,GAAD,CAAM9oC,MAAM,WAAWipC,WAAY,eAAC0/F,GAAD,IAAnC,SACE,eAAC,GAAKj4H,IAAN,MCSS,SAAS44H,KACtB,IAAMh0H,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADrB,EAEZvP,mBAAS,SAFG,mBAE3B0D,EAF2B,KAEtBy/F,EAFsB,OAGAnjG,mBAASgsB,OAHT,mBAG3B44B,EAH2B,KAGhBgpD,EAHgB,OAIJ5tG,mBAASgsB,OAJL,mBAI3Bk6B,EAJ2B,KAIlB2nD,EAJkB,OAKN7tG,mBAASqY,GALH,mBAK3BijB,EAL2B,KAKnB63C,EALmB,KAO5Bo7B,EAAa,WAAiB,IAAhBC,EAAe,uDAAN,EAC3BZ,GAAa,SAAClnF,GACZ,OAAOsF,IAAOtF,GAAG8M,SAASg7E,EAAQ9qG,MAEpCmqG,GAAW,SAACnnF,GACV,OAAOsF,IAAOtF,GAAG8M,SAASg7E,EAAQ9qG,OAZJ,EAgBjBd,uBAAY,WAC3B,GAAY,WAARc,EAAkB,CACpB,IAAIswE,EAAQhoD,IAAO44B,GACf0nF,EAAMtgH,IAAO44B,GAGjB,OAFAovB,EAAMzgD,QAAQ7vB,GACd4oI,EAAItyC,MAAMt2F,GACH,CAACswE,EAAMtuE,cAAc8nD,WAAY8+E,EAAI5mI,cAAc8nD,YAE1D,MAAO,CACL5I,EAAUrxB,QAAQ,QAAQ7tB,cAAc8nD,WACxCtH,EAAQ8zC,MAAM,QAAQt0F,cAAc8nD,cAGvC,CAAC9pD,EAAKkhD,EAAWsB,GAEWqmF,GA/BG,mBA+B3BC,EA/B2B,KA+BfC,EA/Be,KAmClC,OACE,gBAAC5gG,GAAD,CAAM9oC,MAAM,kBAAkBipC,WAAY,eAAC0/F,GAAD,IAA1C,UACE,eAAC9vI,EAAA,EAAD,CAAKK,UAAU,YAAf,SACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,IAAIG,UAAU,OAAtB,SACE,eAAC,KAAKI,OAAN,CACExB,GAAG,OACHyD,MAAOg9B,EACP55B,SAAU,SAACpD,GAAD,OATgB60E,EASQ70E,IAClCuW,aAAa,EACb1F,aAAa,EACb2gF,OAAQ,CAAEE,KAAM,SAACrzE,GAAD,mBAAC,eAAmBA,GAApB,IAA8B+3E,OAAQ,SACtDz4F,UAAW,aAIjB,gBAACL,EAAA,EAAD,CAAKK,UAAU,YAAf,UACE,eAACJ,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,OAAzB,SACE,gBAACN,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,yBACA,gBAAC5G,GAAA,EAAK8F,QAAN,CACEusC,aAAa,QACb1xC,GAAG,SACHoF,SAAU,SAACC,GACT,IAAM6hC,EAAI7hC,EAAEC,OAAOtD,MACnB6kG,EAAO3/D,GACG,WAANA,GACEohB,EAAYsB,GAAS0nD,EAAa5hF,IAAOk6B,KAPnD,UAWE,yBAAQ5nD,MAAM,OAAd,iBACA,yBAAQA,MAAM,QAAd,kBACA,yBAAQA,MAAM,SAAd,mBACA,yBAAQA,MAAM,WAAd,qBACA,yBAAQA,MAAM,SAAd,4BAIG,WAARoF,EACC,eAAC7H,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,gBAACH,GAAA,EAAKY,MAAN,WACE,eAACZ,GAAA,EAAK4G,MAAN,UAAa0wB,KAAM0c,QAAQiV,KAC3B,eAACzyC,GAAA,EAAD,UACE,gBAACA,GAAA,EAAWiC,OAAZ,WACE,eAACzX,EAAA,EAAD,CACEC,QAAQ,kBACRX,UAAU,OACVY,QAAS,kBAAM0xG,EAAW,IAH5B,SAKE,eAAC,KAAD,MAEF,eAAC5xG,EAAA,EAAD,CACEC,QAAQ,kBACRX,UAAU,OACVY,QAAS,kBAAM0xG,GAAY,IAH7B,SAKE,eAAC,KAAD,MAEF,eAAC5xG,EAAA,EAAD,CACEC,QAAQ,UACRX,UAAU,OACVY,QAAS,kBAAM+wG,EAAa5hF,QAH9B,6BAYR,eAAC0gH,GAAD,CACE9nF,UAAWA,EACXsB,QAASA,EACTxkD,SAAU,SAACsyE,EAAOs4D,GAChB1+B,EAAa55B,GACb65B,EAAWy+B,SAKnB,eAAC1wI,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAOG,UAAU,SAAzB,SACE,eAAC0wI,GAAD,CACE/nF,UAAW4nF,EACXtmF,QAASumF,EACTtoI,KAAc,WAART,EAAmB,OAASA,EAClC43B,OAAQA,EACRsxG,cAAetxG,IAAWjjB,WAQtC,SAASs0H,GAAT,GAA8E,IAApD/nF,EAAmD,EAAnDA,UAAWsB,EAAwC,EAAxCA,QAAS/hD,EAA+B,EAA/BA,KAAMm3B,EAAyB,EAAzBA,OAAQsxG,EAAiB,EAAjBA,cAAiB,EAC3C/gD,GAAKK,SAAS,CAC5CxoF,IAAK,MACLkhD,UAAWA,EACXsB,QAASA,EACT5qB,OAAQA,IALiE,IACnEurB,aADmE,MAC3D,GAD2D,EACvDx8C,EADuD,EACvDA,QAOZw3H,EAAkBh7E,EAAlBg7E,cARmE,EAUzBlzF,aAAY,CAC5D2qB,SAAS,IADHx/C,SAAY+vH,GAVuD,aAUhC,GAVgC,GAUvDA,mBAIdgD,EAAoB9uI,mBAAQ,WAChC,IAAK8rI,EAAoB,OAAO,EAChC,IAAMnzH,EAAO+Y,WAAWo6G,GACxB,IAAKnzH,EAAM,OAAO,EAGlB,IAAIs9D,EAAQhoD,IAAO44B,GACf0nF,EAAMtgH,IAAOk6B,GACjB,MAAa,SAAT/hD,GAAoB5D,IAAEoN,YAAYk0H,IAKpCyK,EAAI74G,IAAI,EAAGtvB,GAAMovB,QAAQpvB,GAEVmoI,EAAIrgH,KAAK+nD,EAAO,UAAU,GACzBt9D,GALTmrH,GAAuC,GAArBgI,EAAD,QAOzB,CAACA,EAAoBhI,EAAej9E,EAAWsB,EAAS/hD,IAErDtF,EAAO,CACX,CACE8sC,OAAQ,WACRnc,MAAK,OAAEq3B,QAAF,IAAEA,OAAF,EAAEA,EAAOy4B,cACdwtD,cAAa,OAAEjmF,QAAF,IAAEA,OAAF,EAAEA,EAAOkmF,sBACtBx9G,WAAYhvB,IAAEyvD,IAAI,QAACnJ,QAAD,IAACA,OAAD,EAACA,EAAOy4B,cAAR,OAAuBz4B,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAOkmF,wBAChDC,aAAY,OAAEnmF,QAAF,IAAEA,OAAF,EAAEA,EAAOomF,sBAEvB,CACEthG,OAAQ,eACRnc,MAAK,OAAEq3B,QAAF,IAAEA,OAAF,EAAEA,EAAOqmF,aACdJ,cAAa,OAAEjmF,QAAF,IAAEA,OAAF,EAAEA,EAAOsmF,qBACtB59G,WAAYhvB,IAAEyvD,IAAI,QAACnJ,QAAD,IAACA,OAAD,EAACA,EAAOqmF,aAAR,OAAsBrmF,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAOsmF,wBAEjD,CACExhG,OAAQ,QACRnc,MAAOjvB,IAAEyvD,IAAI,QAACnJ,QAAD,IAACA,OAAD,EAACA,EAAOy4B,cAAR,OAAuBz4B,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAOqmF,eAC3CJ,cAAevsI,IAAEyvD,IAAI,QACnBnJ,QADmB,IACnBA,OADmB,EACnBA,EAAOkmF,sBADY,OAEnBlmF,QAFmB,IAEnBA,OAFmB,EAEnBA,EAAOsmF,uBAET59G,WAAYhvB,IAAEyvD,IAAI,QAChBnJ,QADgB,IAChBA,OADgB,EAChBA,EAAOqmF,aADS,OAEhBrmF,QAFgB,IAEhBA,OAFgB,EAEhBA,EAAOsmF,qBAFS,OAGhBtmF,QAHgB,IAGhBA,OAHgB,EAGhBA,EAAOy4B,cAHS,OAIhBz4B,QAJgB,IAIhBA,OAJgB,EAIhBA,EAAOkmF,wBAETC,aAAY,OAAEnmF,QAAF,IAAEA,OAAF,EAAEA,EAAOomF,sBAEvB,CACEthG,OAAQ,WACRnc,MAAK,OAAEq3B,QAAF,IAAEA,OAAF,EAAEA,EAAOg7E,cACdmL,aAAcH,GAEhB,CACElhG,OAAQ,UACRnc,MACEjvB,IAAEyvD,IAAI,QAACnJ,QAAD,IAACA,OAAD,EAACA,EAAOy4B,cAAR,OAAuBz4B,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAOqmF,gBAApC,OACArmF,QADA,IACAA,OADA,EACAA,EAAOg7E,eACTmL,cAAmB,OAALnmF,QAAK,IAALA,OAAA,EAAAA,EAAOomF,sBAAuBJ,IAGhD,OACE,eAACjxI,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,qBAAII,UAAU,cAAd,SACGg3B,KAAM0c,QAAQiV,GAAa,MAAQ3xB,KAAM0c,QAAQuW,SAIxD,eAACtqD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC2B,GAAA,EAAD,CACEyF,KAAK,KACL9G,MAAO,CAAEiuC,MAAO,OAAQhuC,SAAU,KAClC+T,UAAW9F,EACXob,cAAe,EACf3nB,QAAS,CACP,CACEjD,GAAI,YACJmD,OAAQ,GACRC,SAAU,SACV8U,eAAe,EACf2O,OAAQ,CAAEG,UAAW,CAAEuB,WAAY,UAEnC/kB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OAAe,kCAASA,MAEhC,CACEzD,GAAI,QACJmD,OAAQ,QACRC,SAAU,QACV8U,eAAe,EACfwO,SAAU,SAEVljB,KAAM,YAAgC,IAAtBsZ,EAAqB,EAA5BnZ,IAAOmZ,MACVy1H,EAAW,EACX/5E,EAAS,GACTg6E,EAH+B,EAAZ/uI,MASvB,OALa,GAATqZ,IACFy1H,EAAW,EACX/5E,EAAS,IACTg6E,GAAc,KAETT,GAA0B,GAATj1H,EACtB,uBAAMxb,MAAO,CAAEwzC,QAAS,QAASvzC,SAAU,KAA3C,SACE,eAAC,KAAD,CACEkC,MAAO+uI,EACP/5E,YAAa,OACbE,aAAc45E,EACd35E,mBAAiB,EACjBJ,OAAQA,MAIZ,uBAAMl3D,MAAO,CAAEwzC,QAAS,QAASvzC,SAAU,SAIjD,CACEvB,GAAI,gBACJmD,OAAQ,MACRC,SAAU,gBACV8U,eAAe,EACfwO,SAAU,SACVtlB,UAAW,eAEXoC,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,uBAAMnC,MAAO,CAAEwzC,QAAS,QAASvzC,SAAU,KAA3C,SACE,eAAC,KAAD,CACEkC,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,QAKzB,CACE54D,GAAI,aACJmD,OAAQ,cACRC,SAAU,aACV8U,eAAe,EACfwO,SAAU,SAEVljB,KAAM,gBAAGC,EAAH,EAAGA,MAAH,OACJ,uBAAMnC,MAAO,CAAEwzC,QAAS,QAASvzC,SAAU,KAA3C,SACE,eAAC,KAAD,CACEkC,MAAOA,EACPg1D,YAAa,OACbC,mBAAiB,EACjBC,aAAc,EACdC,mBAAiB,QAKzB,CACE54D,GAAI,eACJmD,OAAQ,gBACRC,SAAU,eACV8U,eAAe,EACfwO,SAAU,SAEVljB,KAAM,YAAgC,IAAtBsZ,EAAqB,EAA5BnZ,IAAOmZ,MACVy1H,EAAW,EACX/5E,EAAS,GACTQ,EAAS,IACTw5E,EAJ+B,EAAZ/uI,MAWvB,OANa,GAATqZ,IACFy1H,EAAW,EACX/5E,EAAS,IACTQ,EAAS,GACTw5E,GAAc,KAETT,GAA2B,GAATj1H,GAAuB,GAATA,EACrC,uBAAMxb,MAAO,CAAEwzC,QAAS,QAASvzC,SAAU,KAA3C,SACE,eAAC,KAAD,CACEkC,MAAO+uI,EACP/5E,YAAa,OACbC,mBAAiB,EACjBM,OAAQA,EACRR,OAAQA,EACRG,aAAc45E,EACd35E,mBAAiB,MAIrB,uBAAMt3D,MAAO,CAAEwzC,QAAS,QAASvzC,SAAU,UAKnDyC,KAAMwL,EAAU,GAAKxL,aASnC,SAAS6tI,GAAT,GAAwE,IAA7ChrI,EAA4C,EAA5CA,SAAqBsyE,EAAuB,EAAlCpvB,UAA2B0nF,EAAO,EAAhBpmF,QAAgB,EACnC3qC,aAAey4D,GADoB,mBAC9DpvB,EAD8D,KACnDgpD,EADmD,OAEvCryF,aAAe+wH,GAFwB,mBAE9DpmF,EAF8D,KAErD2nD,EAFqD,KAIrE,OACE,eAAChyG,EAAA,EAAD,UACE,gBAACD,EAAA,EAAD,WACE,eAACC,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACi2B,GAAA,EAAD,CACEzzB,MAAOsmD,EACPljD,SAAU,SAACpD,GACTsvG,EAAatvG,GACb2G,QAAQC,IAAI5G,IAEdq0B,YAAY,EACZD,QAASwzB,MAGb,eAACrqD,EAAA,EAAD,CAAKC,GAAG,OAAR,SACE,eAACi2B,GAAA,EAAD,CACEzzB,MAAO4nD,EACPxkD,SAAU,SAACpD,GAAD,OAAWuvG,EAAWvvG,IAChCq0B,YAAY,EACZF,QAASmyB,MAGb,eAAC/oD,EAAA,EAAD,CAAKC,GAAG,sBAAR,SACE,eAACa,EAAA,EAAD,CACEC,QAAQ,UACRC,QAAS,kBAAM6E,EAASsqB,IAAO44B,GAAY54B,IAAOk6B,KAFpD,2BChYK,SAASonF,KACtB,IAAMj1H,EAAe7I,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QADhB,EAEVxR,mBAC3B,iBAAM,CAACiuB,MAASmc,OAAO,GAAG5U,QAAQ,SAAUvH,MAASguE,MAAM,YAC3D,IAJqC,mBAEhCp1C,EAFgC,KAErBsB,EAFqB,OAMF2lC,GAAKtuF,OAAO,CAC/Ca,OAAQ,CACNk9B,OAAQjjB,EACRusC,YACAsB,UACA22B,SAAU,cALNn6B,EAN+B,EAM/BA,MAAOr4C,EANwB,EAMxBA,QAAS+7C,EANe,EAMfA,SAQxB,OACE,eAACva,GAAD,CACE9oC,MAAM,kBACNgpC,KAAI,UAAK9Y,KAAM0c,QAAQiV,GAAnB,cAAmC3xB,KAAM0c,QAAQuW,IACrDla,WAAY,eAAC0/F,GAAD,IAHd,SAKE,eAAC,GAAKluI,MAAN,CACEklD,MAAOA,EACP9kD,OAAQ,CACN,OACA,WACA,cACA,aACA,aACA,iBAEFuS,UAAW9F,EACX8b,UAAWigC,MC9BJ,SAASmnF,KAAe,IAC/B/9E,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,UAAX,SACE,eAAC68E,GAAD,MAEF,eAAC,KAAD,CAAO78E,KAAI,UAAKA,EAAL,eAAX,SACE,eAAC89E,GAAD,MAEF,eAAC,KAAD,CAAO99E,KAAI,UAAKA,EAAL,aAAX,SACE,eAAC28E,GAAD,MAEF,eAAC,KAAD,CAAO38E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACm8E,GAAD,MAEF,eAAC,KAAD,CAAOhxC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACo8E,GAAD,SCxBO,SAAS4B,GAAT,GAAuC,IAAbzwI,EAAY,EAAZA,SAAY,EACEyS,aACnD,SAACpS,GAAD,OAAWA,EAAMqS,QADXkE,EAD2C,EAC3CA,UAAWC,EADgC,EAChCA,QAAS+oB,EADuB,EACvBA,qBAG5B,OACE,gBAAC,GAAD,WACE,eAACutE,GAAD,CAAgBltG,GAAG,SAAnB,mBAEC2W,GAAaC,EACZ,eAACs2F,GAAD,CAAgBltG,GAAG,6BAAnB,iCAGE,KACH2W,GAAaC,GAAW+oB,EACvB,eAACutE,GAAD,CAAgBltG,GAAG,wBAAnB,4BAGE,KACH4W,EACC,eAACs2F,GAAD,CAAgBltG,GAAG,iBAAnB,0BACE,KACJ,sBAAKf,UAAU,qBACdc,KCvBQ,SAAS0wI,GAAT,GAAoD,IAAb1wI,EAAY,EAAZA,SACpD,OACE,gBAACywI,GAAD,WACE,eAACtjC,GAAD,CAAgBltG,GAAG,iCAAnB,uBAGCD,KCHQ,SAAS2wI,KACtB,IAAM7yI,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cADY,EAG5CyF,KAAKtD,kBAAkBlW,OAAO,CAAEzC,KAAI2b,QAAQ,IADtCm3H,EAFsC,EAEtCA,kBAAmBtjI,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAIfsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAApDkE,EAJsC,EAItCA,UAAWC,EAJ2B,EAI3BA,QAEnB,OAAMD,GAAaC,EAUjB,eAACi4B,GAAD,CACE9oC,MAAM,qBACNipC,WAAY,eAACyhG,GAAD,IAFd,SAIGE,EACC,eAAC,KAAKn6H,kBAAkBxU,OAAxB,CACEC,OAAQ0uI,EACRx9H,UAAW9F,EACXnL,SAAU,SAACD,GAAD,OAAYiL,EAAUjL,MAGlC,kEAnBF,eAAC4sC,GAAD,CACE9oC,MAAM,qBACNipC,WAAY,eAACyhG,GAAD,IACZ1hG,KAAK,2CCZE,SAAS6hG,KAA0B,IAAD,EACnB5tI,oBAAS,GADU,mBACxC42C,EADwC,KAChCjhB,EADgC,OAEV7e,KAAKtD,kBAAkBjW,OAAO,CACjEiZ,QAAQ,IADF1J,EAFuC,EAEvCA,SAAUzC,EAF6B,EAE7BA,QAASiD,EAFoB,EAEpBA,MAGrBzO,EAAOd,mBACX,kBAAM+O,EAAS1O,QAAO,SAACuD,GAAD,OAAOA,EAAE5G,YAAc67C,OAC7C,CAACA,EAAQ9pC,IAEX,OACE,gBAAC++B,GAAD,CACE9oC,MAAM,sBACNipC,WAAY,eAACyhG,GAAD,IAFd,UAIE,gBAACvmG,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,KAAKkV,kBAAkBhW,MAAxB,CACEqW,mBAAoBhV,EACpBwmB,YAAa,CAAExqB,GAAI,QACnBsV,UAAW9F,EACX8b,UAAW7Y,OCzCJ,SAASugI,KAAwB,IAAD,EACrB5kF,KAAfE,EADoC,oBAE7C,OACE,eAACtd,GAAD,CACE9oC,MAAM,qBACNipC,WAAY,eAACyhG,GAAD,IAFd,SAIE,eAAC,KAAKj6H,kBAAkBC,IAAxB,CACEC,MAAO,gBAAG7Y,EAAH,EAAGA,GAAH,OAAYsuD,EAAY,8BAAD,OAA+BtuD,SCLtD,SAASizI,KAA2B,IAC3Ct+E,EAASkrC,eAATlrC,KAD0C,EAGjBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAApDkE,EAHwC,EAGxCA,UAAWC,EAH6B,EAG7BA,QAEnB,OAAMD,GAAaC,EAUjB,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAACq+E,GAAD,MAEF,eAAC,KAAD,CAAOr+E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACk+E,GAAD,MAEF,eAAC,KAAD,CAAO/yC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACo+E,GAAD,SAhBF,eAAC/hG,GAAD,CACE9oC,MAAM,qBACNipC,WAAY,eAACyhG,GAAD,IACZ1hG,KAAK,2CCfE,SAASgiG,GAAT,GAAyC,IAAbhxI,EAAY,EAAZA,SACzC,OACE,gBAACywI,GAAD,WACE,eAACtjC,GAAD,CAAgBltG,GAAG,qBAAnB,6BACCD,KCDQ,SAASixI,KACtB,IAAMnzI,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cADC,EAEIyF,KAAK5Z,OAAOI,OAAO,CACxDzC,KACA2b,QAAQ,IAFFjY,EAF2B,EAE3BA,OAAQ8L,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAMzB,OAFoBsF,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,eAACi4B,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAAC+hG,GAAD,IAAtC,SACGxvI,EACC,eAAC,KAAKrB,OAAO8B,OAAb,CACEC,OAAQV,EACR4R,UAAW9F,EACXnL,SAAU,SAACD,GACTiL,EAAUjL,MAId,2DAlBF,eAAC4sC,GAAD,CACE9oC,MAAM,cACNipC,WAAY,eAAC+hG,GAAD,IACZhiG,KAAK,2CCdE,SAASkiG,KAAe,IAAD,EACRjuI,oBAAS,GADD,mBAC7B42C,EAD6B,KACrBjhB,EADqB,OAEC7e,KAAK5Z,OAAOK,OAAO,CACtDiZ,QAAQ,IADF1J,EAF4B,EAE5BA,SAAUzC,EAFkB,EAElBA,QAASiD,EAFS,EAETA,MAGrBzO,EAAOd,mBAAQ,WACnB,OAAO+O,EAAS1O,QAAO,SAACuD,GACtB,OAAOA,EAAE5G,YAAc67C,OAExB,CAACA,EAAQ9pC,IACZ,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,eAAeipC,WAAY,eAAC+hG,GAAD,IAAvC,UACE,gBAAC7mG,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,KAAKpB,OAAOM,MAAb,CACEC,QAASoB,EACTwmB,YAAa,CAAExqB,GAAI,QACnBsV,UAAW9F,EACX8b,UAAW7Y,O,cCvCJ,SAAS4gI,KAAa,IAC3BlkI,EAAc9M,KAAOI,SAArB0M,UAD0B,EAEVi/C,KAAfE,EAFyB,oBAGlC,OACE,eAACtd,GAAD,CAAM9oC,MAAM,cAAcipC,WAAY,eAAC+hG,GAAD,IAAtC,SACE,eAAC,KAAO/uI,OAAR,CACEzD,OAAO,EACP0D,OAAQ,CAAEyF,UAAU,GACpBxF,SAAU,SAACX,GAAD,OACRyL,EAAUzL,GAAQ+I,MAAK,gBAAGzM,EAAH,EAAGA,GAAH,OACrBsuD,EAAY,kBAAD,OAAmBtuD,YCP3B,SAASszI,KAAgB,IAChC3+E,EAASkrC,eAATlrC,KAIN,OAFoBhgD,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAAzCmE,QAYN,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO47C,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC0+E,GAAD,MAEF,eAAC,KAAD,CAAO1+E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACw+E,GAAD,MAEF,eAAC,KAAD,CAAOrzC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACy+E,GAAD,SAhBF,eAACpiG,GAAD,CACE9oC,MAAM,cACNipC,WAAY,eAAC+hG,GAAD,IACZhiG,KAAK,2CCfE,SAASqiG,GAAT,GAA+C,IAAbrxI,EAAY,EAAZA,SAC/C,OACE,gBAACywI,GAAD,WACE,eAACtjC,GAAD,CAAgBltG,GAAG,4BAAnB,0BAGCD,KCHQ,SAASsxI,KACtB,IAAMxzI,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cADO,EAEIyF,KAAKX,aAAa7Y,OAAO,CACpEzC,KACA2b,QAAQ,IAFFR,EAFiC,EAEjCA,aAAc3L,EAFmB,EAEnBA,QAASH,EAFU,EAEVA,UAFU,EAMYsF,aACnD,SAACpS,GAAD,OAAWA,EAAMqS,QADXkE,EANiC,EAMjCA,UAAWC,EANsB,EAMtBA,QAAS+oB,EANa,EAMbA,qBAI5B,OAAMhpB,GAAaC,GAAW+oB,EAU5B,eAACkP,GAAD,CAAM9oC,MAAM,gBAAgBipC,WAAY,eAACoiG,GAAD,IAAxC,SACGp4H,EACC,eAAC,KAAKG,aAAanX,OAAnB,CACEC,OAAQ+W,EACR7F,UAAW9F,EACXnL,SAAU,SAACD,GAAD,OAAYiL,EAAUjL,MAGlC,6DAhBF,eAAC4sC,GAAD,CACE9oC,MAAM,gBACNipC,WAAY,eAACoiG,GAAD,IACZriG,KAAK,2CChBE,SAASuiG,KAAqB,IAAD,EACdtuI,oBAAS,GADK,mBACnC42C,EADmC,KAC3BjhB,EAD2B,OAEL7e,KAAKX,aAAa5Y,OAAO,CAC5DiZ,QAAQ,IADF1J,EAFkC,EAElCA,SAAUzC,EAFwB,EAExBA,QAASiD,EAFe,EAEfA,MAGrBzO,EAAOd,mBACX,kBAAM+O,EAAS1O,QAAO,SAACuD,GAAD,OAAOA,EAAEgU,cAAgBihC,OAC/C,CAACA,EAAQ9pC,IAEX,OACE,gBAAC++B,GAAD,CAAM9oC,MAAM,iBAAiBipC,WAAY,eAACoiG,GAAD,IAAzC,UACE,gBAAClnG,GAAA,EAAD,CAAaklE,QAAM,EAAnB,UACE,eAACC,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,SAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,mBACM,cASN,eAAC+tG,GAAA,EAAD,CAEEloG,KAAK,QACLvH,QAAQ,YACR0B,OAAO,EACPs+D,SAAoB,IAAXhmB,EACTl1C,SAAU,SAACC,GAAD,OAAOg0B,EAAoC,UAA1Bh0B,EAAE2qG,cAAchuG,QAN7C,qBACM,iBAWR,eAAC,KAAK6X,aAAa3Y,MAAnB,CACE4Y,cAAevX,EACfwmB,YAAa,CAAExqB,GAAI,QACnBsV,UAAW9F,EACX8b,UAAW7Y,OCrCJ,SAASihI,KAAmB,IAAD,EAChBtlF,KAAfE,EAD+B,sBAEa35C,aACnD,SAACpS,GAAD,OAAWA,EAAMqS,QADXkE,EAFgC,EAEhCA,UAAWC,EAFqB,EAErBA,QAAS+oB,EAFY,EAEZA,qBAI5B,OAAMhpB,GAAaC,GAAW+oB,EAU5B,eAACkP,GAAD,CAAM9oC,MAAM,gBAAgBipC,WAAY,eAACoiG,GAAD,IAAxC,SACE,eAAC,KAAKj4H,aAAa1C,IAAnB,CACEC,MAAO,gBAAG7Y,EAAH,EAAGA,GAAH,OAAYsuD,EAAY,yBAAD,OAA0BtuD,SAV1D,eAACgxC,GAAD,CACE9oC,MAAM,gBACNipC,WAAY,eAACoiG,GAAD,IACZriG,KAAK,2CCTE,SAASyiG,KAAsB,IACtCh/E,EAASkrC,eAATlrC,KADqC,EAGUhgD,aACnD,SAACpS,GAAD,OAAWA,EAAMqS,QADXkE,EAHmC,EAGnCA,UAAWC,EAHwB,EAGxBA,QAAS+oB,EAHe,EAGfA,qBAI5B,OAAMhpB,GAAaC,GAAW+oB,EAU5B,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO6yB,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC++E,GAAD,MAEF,eAAC,KAAD,CAAO/+E,KAAI,UAAKA,EAAL,QAAX,SACE,eAAC6+E,GAAD,MAEF,eAAC,KAAD,CAAO1zC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAAC8+E,GAAD,SAhBF,eAACziG,GAAD,CACE9oC,MAAM,gBACNipC,WAAY,eAACoiG,GAAD,IACZriG,KAAK,2CChBE,SAAS0iG,KAAa,IAC3BjlI,EAAUsN,KAAKvZ,SAAfiM,MACR,OACE,+BACE,eAACqiC,GAAD,CAAM9oC,MAAM,QAAQipC,WAAY,eAACwhG,GAAD,IAAhC,SACE,eAAC,KAAKhwI,MAAN,CAAYgM,MAAOA,EAAMpL,QAAO,SAACuD,GAAD,OAAsB,IAAfA,EAAE5G,kBCHlC,SAAS2zI,KACtB,IAAM7zI,EAAKoa,OAAO63B,eAAYjyC,IAAIwW,cADD,EAU7ByF,KAAKxZ,OAAO,CACdzC,KACA2b,QAAQ,IATRjH,EAH+B,EAG/BA,KACAlF,EAJ+B,EAI/BA,QACAH,EAL+B,EAK/BA,UACAykI,EAN+B,EAM/BA,kBACAC,EAP+B,EAO/BA,kBACAC,EAR+B,EAQ/BA,sBACAC,EAT+B,EAS/BA,0BAKI/rI,EAAK,sBAAWwM,QAAX,IAAWA,OAAX,EAAWA,EAAM1U,IAdK,EAgBiBmF,mBAAS,IAhB1B,mBAgB1B+uI,EAhB0B,KAgBPC,EAhBO,KAiBjC,OACE,eAACnjG,GAAD,CACE9oC,MAAOA,EACPgpC,KAAM1hC,EAAU,aAAgBkF,EAAD,OAA2BA,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAMhV,KAAzB,iBACvCyxC,WAAY,eAACwhG,GAAD,IAHd,SAKGj+H,EACC,eAAC3T,EAAA,EAAD,UACE,gBAACC,EAAA,EAAD,WACE,eAACD,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAAC,KAAKmD,OAAN,CACEC,OAAQsQ,EACRrQ,SAAU,SAACqjD,GAAD,OAAYr4C,EAAUq4C,IAChCpjD,WAAYkL,QAIlB,eAACzO,EAAA,EAAD,CAAKK,UAAU,OAAf,SACE,gBAACJ,EAAA,EAAD,WACE,+CACA,eAAC,KAAK6d,kBAAN,CACEza,OAAQsQ,EACRrQ,SAAU,SAACL,EAAM8C,EAAGstI,GAElB,OADAD,EAAqB,IACbC,GACN,IAAK,SACH,OAAON,EAAkB9vI,GAAMyI,MAC7B,gBAAG0M,EAAH,EAAGA,oBAAH,OACEg7H,EAAqBh7H,MAE3B,IAAK,MACH,OAAO66H,EAAsBhwI,GAC/B,IAAK,WACH,OAAOiwI,EAA0BjwI,GAAMyI,MACrC,YAA8B,IAA3B0M,EAA0B,EAA1BA,oBACDg7H,EAAqBh7H,MAG3B,IAAK,SACH,OAAO46H,EAAkB/vI,KAK/BmV,oBAAqB+6H,cAM7B,OCnEK,SAASG,KAAgB,IAChC1/E,EAASkrC,eAATlrC,KACN,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOA,KAAI,UAAKA,EAAL,wBAAX,SACE,eAACs+E,GAAD,MAEF,eAAC,KAAD,CAAOt+E,KAAI,UAAKA,EAAL,mBAAX,SACE,eAACg/E,GAAD,MAEF,eAAC,KAAD,CAAOh/E,KAAI,UAAKA,EAAL,YAAX,SACE,eAAC2+E,GAAD,MAEF,eAAC,KAAD,CAAO3+E,KAAI,UAAKA,EAAL,QAAX,SACE,eAACk/E,GAAD,MAEF,eAAC,KAAD,CAAO/zC,OAAK,EAACnrC,KAAI,UAAKA,GAAtB,SACE,eAACi/E,GAAD,SCHO,SAASU,KACtB,IAAMC,EAAY5/H,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAK9H,SAEpD,OAAIynI,EAEA,eAAC9lF,GAAD,CACE3hD,MAAO,CAAE6hD,MAAO4lF,GAChB7lF,mBAAoB,kBAAMvzB,OAAOioC,SAASoxE,QAAO,MAGhD,eAACC,GAAD,IAGT,SAASC,GAAT,GAA+C,IAAvBxyI,EAAsB,EAAtBA,SAAac,EAAS,6BACpCq+B,EAAe1sB,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,QAA5CysB,WACR,OACE,eAAC,KAAD,2BACMr+B,GADN,IAEE6c,OAAQ,YAAmB,IAAhBujD,EAAe,EAAfA,SACT,OAAsB,IAAf/hC,EACLn/B,EAEA,eAAC,KAAD,CACEC,GAAI,CACFC,SAAU,cACVkE,OAAO,aAAD,OAAe88D,EAAShhE,iBASrC,SAASqyI,KACd,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO9/E,KAAK,QAAZ,SACE,eAACisC,GAAD,MAEF,eAAC8zC,GAAD,CAAc//E,KAAK,QAAnB,SACE,eAACikE,GAAD,MAEF,eAAC8b,GAAD,CAAc//E,KAAK,YAAnB,SACE,eAACi8E,GAAD,MAEF,eAAC8D,GAAD,CAAc//E,KAAK,OAAnB,SACE,eAACiuD,GAAD,MAEF,eAAC8xB,GAAD,CAAc//E,KAAK,YAAnB,SACE,eAACgnE,GAAD,MAEF,eAAC+Y,GAAD,CAAc//E,KAAK,aAAnB,SACE,eAACu0D,GAAD,MAEF,eAACwrB,GAAD,CAAc//E,KAAK,QAAnB,SACE,eAAC+9E,GAAD,MAEF,eAACgC,GAAD,CAAc//E,KAAK,SAAnB,SACE,eAAC0/E,GAAD,MAEF,eAACK,GAAD,CAAc//E,KAAK,OAAnB,SACE,eAAC,GAAD,MAEF,eAAC+/E,GAAD,CAAc//E,KAAK,OAAnB,SACE,eAACg8D,GAAD,MAEF,eAAC+jB,GAAD,CAAc//E,KAAK,YAAnB,SACE,eAACwlE,GAAD,MAEF,eAACua,GAAD,CAAc//E,KAAK,gBAAnB,SACE,eAACk0C,GAAD,MAEF,eAAC6rC,GAAD,CAAc//E,KAAK,aAAnB,SACE,eAAC8hD,GAAD,MAEF,eAACi+B,GAAD,CAAc//E,KAAK,WAAnB,SACE,eAACozE,GAAD,MAEF,eAAC2M,GAAD,CAAc//E,KAAK,aAAnB,SACE,eAACirC,GAAD,MAEF,eAAC80C,GAAD,CAAc//E,KAAK,YAAnB,SACE,eAACyjE,GAAD,MAEF,eAACsc,GAAD,CAAc//E,KAAK,WAAnB,SACE,eAACo5E,GAAD,MAEF,eAAC2G,GAAD,UACE,eAAC,KAAD,CAAUvyI,GAAG,eCtGN,SAASwyI,GAAT,GAA2D,IAAtCzyI,EAAqC,EAArCA,SAAqB0yI,EAAgB,EAA3Bt/H,UAA2B,EAERyqF,KAA9C80C,EAFsD,EAE/DrlI,QAAsB6xB,EAFyC,EAEzCA,WAAmBkzG,EAFsB,EAE7BznI,MAGpC6O,IADUk5H,IAAgBxzG,GAAcuzG,GAG9CrF,GAAa,CAAE5zH,WAEf,IAAMm5H,GACHD,KAAiBD,IAAiBvzG,GAA4B,OAAdkzG,GAEnD,OACE,uCACE,eAACQ,GAAD,CAAUp5H,OAAQA,IACjBm5H,EACC5yI,EAEA,eAAC8uC,GAAD,CAAM9oC,MAAM,kBAAkBgpC,KAAK,sBAM3C,SAAS6jG,GAAT,GAA+B,IAAXp5H,EAAU,EAAVA,OAMlB,OALA6e,EAA2B,KAE3B8kC,GAAgB,CAAE3jD,WAClB88G,GAAiB,CAAE98G,WACnBm8D,GAAgB,CAAEn8D,WACX,K,aCjBM,SAASq5H,GAAT,GAA0C,IAAD,IAAnBv2E,eAAmB,SAChD31D,EAAUnK,aAAaG,QAAQ,WAE/Bm2I,EAAmBltI,uBAAY,SAACmtI,EAAaC,GACjDx2I,aAAaC,QAAQ,UAAWs2I,GAChCv2I,aAAaC,QAAQ,eAAgBu2I,GAErCvmF,YAAW,WACLwhF,QAEFA,OAAOrqI,OAAO0G,MAAK,SAAU2oI,GAAQ,IAAD,iBACjBA,GADiB,IAClC,gCAAS11I,EAAT,QAAwB0wI,OAAOiF,OAAO31I,IADJ,kCAKtCy7B,OAAOioC,SAASoxE,WACf,OACF,IAEHh6G,EAA2B,KAnB2B,MAoBlBr1B,mBAAS,MApBS,mBAoB/C4M,EApB+C,KAoBnCypD,EApBmC,KAsBhD85E,GACY,OAAfvjI,GAAuBof,MAASC,KAAKrf,EAAY,WAAa,KAC9D0sD,EAiCH,OA7BA3iD,qBAAU,WACHw5H,GACLxrG,MAAM,cACHr9B,MAAK,SAACC,GAAD,OAAcA,EAASq9B,UAC5Bt9B,MAAK,SAACmE,GACL,IAAMskI,EAActkI,EAAK9H,QACnBqsI,EAAYvkI,EAAK2kI,MACvB/5E,EAAcrqC,OACTroB,IApDW,SAAC+0C,EAAM23F,GAI7B,IAHA,IAAMC,EAAe53F,EAAKn/B,MAAM,OAE1Bg3H,EAAeF,EAAK92H,MAAM,OACzB+2H,EAAap3H,QAAUq3H,EAAar3H,QAAQ,CACjD,IAAMlV,EAAIqrB,OAAOihH,EAAaxwH,SAExBF,EAAIyP,OAAOkhH,EAAazwH,SAE9B,GAAI9b,IAAM4b,EAEV,OAAO5b,EAAI4b,GAAK0D,MAAM1D,GAExB,OAAO,EAuCe4wH,CAAgBT,EAAapsI,IAC3CqI,aACE,SAACnO,GAAD,OACE,eAAC4yI,GAAD,2BACM5yI,GADN,IAEE8F,QAASosI,EACT30G,aAAc40G,EACdU,eAAgB,kBAAMZ,EAAiBC,EAAaC,SAGxD,CACEppG,SAAU,eACV1sB,WAAW,EACXgB,cAAc,EACd8hB,QAxBI,qBA4BXt1B,OAAM,iBACR,CAAC/D,EAASwsI,EAAaL,IAEnBnsI,EAGT,SAAS8sI,GAAT,GAAiE,IAA1CC,EAAyC,EAAzCA,eAAgB/sI,EAAyB,EAAzBA,QAASy3B,EAAgB,EAAhBA,aAC9C,OACE,uCACE,eAACx/B,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,yBAAQI,UAAU,YAAlB,kCAGJ,eAACL,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,eAACc,EAAA,EAAD,CAAQC,QAAQ,OAAOC,QAAS6zI,EAAhC,yBAKJ,eAAC90I,EAAA,EAAD,UACE,eAACC,EAAA,EAAD,UACE,yBAAOI,UAAU,aAAjB,wBAEM0H,GAFN,OAGIy3B,GAAiC,WAAjBA,EACZ,IAAMA,EACN,cCzFH,SAASu1G,GAAT,GAAqC,IAAD,IAArBxgI,iBAAqB,SACjD,OACE,gBAAC,gBAAD,WACE,eAACulB,EAAD,IACA,eAACi7D,GAAD,CAAcxgF,UAAWA,IACzB,eAAC,IAAD,CACEy2B,SAAS,YACT1sB,UAAW,IACX2sB,WAAY+pG,IACZl9B,iBAAe,EACfm9B,aAAW,EACX31H,cAAY,EACZ41H,kBAAgB,EAChBnqG,WAAW,EACXoqG,cAAY,IAEd,gBAAC,gBAAD,CAAeC,kBAAmB1nF,GAAlC,UACE,eAAC2nF,GAAD,IACA,eAACzB,GAAD,CAAWr/H,UAAWA,EAAtB,SACE,eAAC,GAAD,YAOV,SAAS8gI,GAAT,GAGE,OAFApB,GAAW,CAAEv2E,QADwB,EAAbnpD,YAGjB,KCjCWwP,QACW,cAA7BqW,OAAOioC,SAAS+8B,UAEe,UAA7BhlE,OAAOioC,SAAS+8B,UAEhBhlE,OAAOioC,SAAS+8B,SAASk2C,MACvB,2DCNNC,IAASz2H,OAEP,eAAC,IAAD,CAAU+sC,MAAOA,GAAjB,SACE,eAAC,IAAD,CAAap9C,QAAS,eAAC,GAAD,CAAK8F,WAAS,IAAKu4C,UAAWA,GAApD,SACE,eAAC,GAAD,QAIJj0B,SAAS28G,eAAe,SD+GpB,kBAAmBC,WACrBA,UAAUC,cAAcC,MACrBjqI,MAAK,SAACkqI,GACLA,EAAaC,gBAEd/pI,OAAM,SAACC,GACN1C,QAAQ0C,MAAMA,EAAMC,a,oWE3HrB,SAAS8I,EAAT,GAKH,IAJFnW,EAIC,EAJDA,KACAJ,EAGC,EAHDA,UAGC,IAFDM,aAEC,MAFO,SAACkH,GAAD,OAAOA,EAAE2P,aAEhB,MADDo2B,mBACC,MADa,gBAAG7sC,EAAH,EAAGA,GAAIyD,EAAP,EAAOA,MAAP,MAAoB,CAAEzD,GAAIA,GAAMyD,IAC7C,EACKoS,EAAoB9Q,IAAMsxB,MAAK,SAACrzB,GAAW,IACvChE,EAAWM,EAAUutC,EAAY7pC,IAAjChE,OACR,OAAKA,EAEE,mCAAGY,EAAMZ,KAFI,QAKtB,OADA6W,EAAkBJ,YAAlB,UAAmC/P,IAAEmxI,WAAWn3I,GAAhD,eACOmW,EAGMA,I,uBCZR,SAASwF,EAAT,GAMH,IALF3b,EAKC,EALDA,KACAN,EAIC,EAJDA,YAIC,IAHDytC,mBAGC,MAHa,iBAAO,CAAElxB,QAAQ,IAG9B,MAFD/b,aAEC,MAFO,SAACkH,GAAD,OAAOA,EAAE2P,aAAe3P,EAAE9G,IAEjC,MADDuD,cACC,MADQ,kBAAM,GACd,EACK8X,EAAetW,IAAMC,YACzB,WASM,IAAD,yDAFC,GALFvB,EAOC,EAPDA,MAOC,IAND5B,eAMC,aALDwS,mBAKC,uBALuB3O,IAAEqqB,UAAUrwB,GAKnC,aAJD6U,mCAIC,SAHEvR,EAGF,+EADHiC,EACG,yCACgC7F,EAAYytC,EAAY7pC,IADxD,IACKiP,gBADL,MACgB,GADhB,EACoBzC,EADpB,EACoBA,QAEjBqF,EAAW5C,EACd1O,QAAO,SAACuD,GAAD,OAAOvD,EAAOuD,EAAGrD,MACxB8C,KAAI,SAACO,GACJ,MAAO,CAAElH,MAAOA,EAAMkH,GAAIrD,MAAOqD,EAAE9G,OAEnCiV,EAAc,KAUlB,OATIxR,IAEAwR,EADEpT,EACY0S,EACVM,EAAStR,QAAO,SAAC2R,GAAD,OAAOzR,EAAMwN,SAASiE,EAAEzR,UACxCA,EAAM8C,KAAI,SAAC4O,GAAD,OAAOzP,IAAE0P,KAAKP,GAAU,SAACK,GAAD,OAAOA,EAAEzR,QAAU0R,QAE3CzP,IAAE0P,KAAKP,EAAU,CAAC,QAASpR,KAI3C,cAAC0S,EAAA,EAAD,aACElR,IAAKA,EACLqQ,UAAW9F,EACX+F,cAAc,EACd9R,MAAOwR,EACPO,QAASX,EACThT,QAASA,EACTwS,YAAaA,GACTrR,OAMZ,OADAqY,EAAa5F,YAAb,UAA8B/P,IAAEmxI,WAAWn3I,GAA3C,UACOqF,IAAMsxB,KAAKhb,GAGLA,I,OCtDR,SAAS7N,EAAT,GAKH,IAJF9N,EAIC,EAJDA,KACAN,EAGC,EAHDA,YAGC,IAFDQ,aAEC,MAFO,SAACkH,GAAD,OAAOA,EAAE2P,aAEhB,MADDlT,cACC,MADQ,kBAAM,GACd,EACKiK,EAAoBzI,IAAMsxB,MAAK,WAAsB,IAAD,yDAAP,GAAXpU,EAAkB,EAAlBA,OACjBxe,EAAUwe,EAAvB0tB,YADgD,EAEnCvwC,EAAY,CAAEuc,QAAQ,IAAnC1J,EAFgD,EAEhDA,SACF4C,EAAW5C,EACd1O,QAAO,SAACuD,GAAD,OAAOvD,EAAOuD,EAAGrD,MACxB8C,KAAI,SAACO,GACJ,MAAO,CAAElH,MAAOA,EAAMkH,GAAIrD,MAAOqD,EAAE9G,OAEvC,OAAO,cAAC,IAAD,CAA+BiiB,OAAQA,EAAQzM,QAASX,OAGjE,OADArH,EAAkBiI,YAAlB,UAAmC/P,IAAEmxI,WAAWn3I,GAAhD,UACO8N,I,gCClCM,SAASskB,EAAW9xB,GACjC,IAAM0yD,EAAQ1gB,SAAShyC,GACvB,OAAIyoB,MAAMiqC,GACD,EAEAA,EALX,mC,qGCKe,SAAS5e,IAAsC,IAAD,yDAAJ,GAAI,IAAvBn4B,cAAuB,WAC/BxW,oBAAS,GADsB,mBACpDorB,EADoD,KAC5CC,EAD4C,KAErDvR,EAAWtK,aACf,SAACpS,GAAD,OAAWA,EAAM0c,SAASA,WAC1Bu0D,KAEIhkE,EAAUmF,aAAY,SAACpS,GAAD,OAAWA,EAAM0c,SAAS3P,SAASE,WACzDpG,EAAW0O,cAEjBgE,qBAAU,WACJH,GACFvS,EAASklI,IAAgBtvH,eAAevS,MAAK,kBAAM+jB,GAAU,QAE9D,CAACpnB,EAAUuS,IAEd,IAAMulD,EAAWvlD,IAAWnM,IAAY+gB,GAExC,MAAO,CAAEtR,WAAUzP,QAAS0xD,K,ieClBvB,SAAS41E,IAAU,IAAD,EACKC,cAApB9gH,EADe,EACfA,QASR,IAAM7xB,EARN,SAAS4yI,EAAcC,GACrB,OAAI7uH,kBAAQ6uH,GACHC,kBAAQD,EAAW1wI,KAAI,SAAC4O,GAAD,OAAO6hI,EAAc7hI,OAC5ChC,mBAAS8jI,IAChB,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAYlqI,SAAS,OAAOkqI,QAAP,IAAOA,OAAP,EAAOA,EAAYlqI,QAChCiqI,EAAcE,kBAAQD,IACtBA,EAEDD,CAVQ,EACNn/H,QAUjB,OAAIoe,EAAgB,KAElB,oCACG7xB,QADH,IACGA,OADH,EACGA,EAAQmC,KAAI,SAAC4O,EAAGwZ,GAAJ,OACX,6BAA0BxZ,GAA1B,gBAAkBwZ,SCXnB,SAASwoH,EAAUn0I,GAAQ,IAAD,EACH+zI,cAApB9gH,EADuB,EACvBA,QAASpe,EADc,EACdA,OACjB,OAAIoe,GAAW1rB,kBAAQsN,GAAgB,KAErC,cAACy6D,EAAA,EAAD,CACEE,QACE,eAACC,EAAA,EAAD,CAASzyE,GAAE,SAAX,UACE,cAACyyE,EAAA,EAAQlqE,MAAT,qBACA,cAACkqE,EAAA,EAAQC,QAAT,UACE,cAACokE,EAAD,SALR,SAUE,cAAC,IAAD,aAAY1uI,KAAK,SAAYpF,M,+ECd5B,SAAS+2D,EAAT,GAOH,IAAD,IAND+lB,YAMC,MANM,WAMN,EALcs3D,EAKd,EALD7yI,cACS8yI,EAIR,EAJDp2F,QACQq2F,EAGP,EAHD9yI,OACAH,EAEC,EAFDA,SACGrB,EACF,wEAC6B0d,YAAe22H,GAD5C,mBACMp2F,EADN,KACekS,EADf,KAEK5uD,EAAgBkb,aACpB,kBAAM23H,GAAwB,KAC9B,CAACA,IAGGG,EAAYzkI,sBAAYwkI,QAE1BvnI,EADAynI,EAAYF,GAEVG,EAAY72D,YAAQ,yBACxB22D,YACGv0I,GAFoB,IAGvB88E,OACAv7E,gBACA08C,aAGMxuC,EAAUglI,EAAVhlI,MAGR,OAFAqJ,qBAAU,kBAAMrJ,EAAMlO,KAAgB,CAACA,EAAekO,IAE/C,2BACFglI,GADL,IAEEx2F,UACAkS,aACA5uD,gBACA5D,WAAYgF,qBAAWtB,GACnB,eAAC0K,EAAD,uDAAQ,GAAR,OACE0oI,EAAUh2E,cAAa,SAACz9D,EAAMiD,GAAP,OAAiB5C,EAASL,EAAMiD,EAAO8H,KAA9D0oI,CACE1oI,SAEJgB,IAMR,IAAMynI,EACJ,SAAC,GAAD,IACUE,EADV,EACElzI,OADF,IAEEgR,QAAS8hI,OAFX,MAE2B,CACvBK,YAAY,GAHhB,MAKE1qH,OAAQ2qH,OALV,uDAOA,WAAOxzI,EAAQ68C,GAAf,+BAAA93C,EAAA,6DAAwB0uI,EAAxB,+BAA0C,GAClCpnG,EAAS/8B,OAAOC,QAAQkkI,EAAgBpnG,QAAQlqC,KAAI,0CAEpD/B,GACmB,IAAvBozI,EAA8BF,EAAgBA,EAAcI,KAAKrnG,GAJrE,SAkBesnG,YAAmBvzI,EAAQ8yI,EAA3BS,CACX3zI,EACA68C,EACA42F,GArBJ,mFAPA,yDC/CK,SAASG,EAAT,GAMH,IALF91I,EAKC,EALDA,SACAmC,EAIC,EAJDA,SACAC,EAGC,EAHDA,WAGC,IAFDI,mBAEC,SADE1B,EACF,kEACKy0I,EAAY19E,EAAS,aAAE11D,YAAarB,IAE1C,OACE,eAAC,IAAD,yBAAc2U,aAAc,CAAEtT,WAAUC,eAAkBmzI,GAA1D,cACGv1I,EACAwC,EAAc,cAAC,UAAD,IAAc,S,6CCTnC,SAASuzI,EAAT,GAAuE,IAA/CrgI,EAA8C,EAA9CA,UAAWlY,EAAmC,EAAnCA,KAAMoiE,EAA6B,EAA7BA,MAAO5/D,EAAsB,EAAtBA,SAAac,EAAS,yDAKhEpC,cAHF+1D,EAFkE,EAElEA,SACa9+C,EAHqD,EAGlEy8C,UAAaz8C,OAHqD,IAIlEF,aAAgBrT,kBAJkD,WAMpD4N,aAAG2F,EAAQnY,GAApBoN,EAN6D,oBAQpE,OACE,qCACE,cAAChM,EAAA,EAAK8F,QAAN,uCACM+vD,EAASj3D,EAAMoiE,IADrB,IAEEl6D,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1C5U,GAJN,aAMGd,KAEH,cAACpB,EAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAMT,SAASmrI,EAAT,GAOH,IANFx4I,EAMC,EANDA,KAMC,IALDM,UAKC,MALIN,EAKJ,EAJDE,EAIC,EAJDA,MACAsC,EAGC,EAHDA,SACAszB,EAEC,EAFDA,mBACGxyB,EACF,qEACD,OACE,eAAClC,EAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAIoB,UAAWo0B,EAAtC,UACG51B,EAAQ,cAACkB,EAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,cAACq4I,EAAD,yBAAcv4I,KAAMA,GAAUsD,GAA9B,aACGd,QAyCT,SAASi2I,EAAT,GAWI,IAVFz4I,EAUC,EAVDA,KAUC,IATDM,UASC,MATIN,EASJ,EARDoiE,EAQC,EARDA,MACAliE,EAOC,EAPDA,MACAgY,EAMC,EANDA,UACAqe,EAKC,EALDA,QACA70B,EAIC,EAJDA,UACIo6G,EAGH,EAHD/5G,GACA22I,EAEC,EAFDA,QACGp1I,EACF,gGAIGwU,YAAc,CAAE9X,OAAMoiE,UAFxBrqD,EAFD,EAECA,MACc3K,EAHf,EAGC4K,WAAc5K,MAHf,EAOGlM,cADF+W,aAAgBrT,kBANjB,SASK+zI,EAAavlI,sBAAY8E,KAAe9K,IAAU8K,EAEpD+R,EAAa,CAAC,gBAKlB,OAJIvoB,GAAWuoB,EAAW7L,KAAK1c,GAC3Bi3I,GAAY1uH,EAAW7L,KAAK,cAC5BmY,GAAStM,EAAW7L,KAAK,YAG3B,eAAChd,EAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACGJ,EAAQ,cAACkB,EAAA,EAAK4G,MAAN,UAAa9H,IAAsB,KAC5C,cAAC47G,EAAD,2BACM/jG,GADN,IAEErW,UAAWuoB,EAAW1C,KAAK,KAC3Brf,SAAUtD,EACV1E,MAAOw4I,GACHp1I,IAEN,cAAClC,EAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,aAuFhBmrI,EAAWtxI,QAAUqxI,EACrBC,EAAW72I,MAjKX,YAQI,IAPF3B,EAOC,EAPDA,KAOC,IANDM,UAMC,MANIN,EAMJ,EALDoiE,EAKC,EALDA,MACAliE,EAIC,EAJDA,MACAgY,EAGC,EAHDA,UACA1V,EAEC,EAFDA,SACGc,EACF,sEAKGpC,cAHF+1D,EAFD,EAECA,SACa9+C,EAHd,EAGCy8C,UAAaz8C,OAHd,IAICF,aAAgBrT,kBAJjB,WAOe4N,aAAG2F,EAAQnY,GAApBoN,EAPN,oBASD,OACE,eAAChM,EAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACE,cAACc,EAAA,EAAKO,MAAN,uCACMs1D,EAASj3D,EAAMoiE,IADrB,IAEEliE,MAAOA,EACPgI,SAAUtD,EACVsT,UAAW9E,sBAAY8E,KAAe9K,EAAQ8K,GAC1C5U,GALN,aAOGd,KAEH,cAACpB,EAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,cAqIhBmrI,EAAW5+F,SAnFX,SAAuBt2C,GACrB,OAAO,cAACm1I,EAAD,aAAiB12I,GAAI62I,KAAsBt1I,KAmFpDk1I,EAAWttI,KAhFX,YAWI,IAVFlL,EAUC,EAVDA,KAUC,IATDM,UASC,MATIN,EASJ,EARDoiE,EAQC,EARDA,MACAliE,EAOC,EAPDA,MACAgY,EAMC,EANDA,UACAqe,EAKC,EALDA,QACA70B,EAIC,EAJDA,UAGG4B,GACF,EAHD60B,QAGC,EAFDD,QAEC,sGAIGpgB,YAAc,CAAE9X,OAAMoiE,UAJzB,IAECrqD,MAAS5Q,EAFV,EAEUA,SAAa4Q,EAFvB,4BAGe3K,EAHf,EAGC4K,WAAc5K,MAHf,EAOGlM,cADF+W,aAAgBrT,kBANjB,SASK+zI,EAAavlI,sBAAY8E,KAAe9K,IAAU8K,EAEpD+R,EAAa,CAAC,gBAKlB,OAJIvoB,GAAWuoB,EAAW7L,KAAK1c,GAC3Bi3I,GAAY1uH,EAAW7L,KAAK,cAC5BmY,GAAStM,EAAW7L,KAAK,YAG3B,eAAChd,EAAA,EAAKY,MAAN,CAAYgX,UAAW1Y,EAAvB,UACE,cAACk3B,EAAA,EAAD,2BACMzf,GADN,IAEE5Q,SAAU,SAACsO,GACT,IAAMojI,EAAOpnH,IAAOhc,GAAGtK,cACvBhE,EAAS0xI,IAEXn3I,UAAWuoB,EAAW1C,KAAK,KAC3Brf,SAAUtD,EACV1E,MAAOA,GACHoD,IAEN,cAAClC,EAAA,EAAK8F,QAAQ+uB,SAAd,CAAuBrsB,KAAK,UAA5B,gBACGwD,QADH,IACGA,OADH,EACGA,EAAOC,cAwChBmrI,EAAW12I,OAlCX,YAQI,IAPF9B,EAOC,EAPDA,KAOC,IANDM,UAMC,MANIN,EAMJ,EALDoiE,EAKC,EALDA,MACAliE,EAIC,EAJDA,MAEI47G,GAEH,EAHDvlF,QAGC,EAFDx0B,IACGuB,EACF,8DAIGwU,YAAc,CAAE9X,OAAMoiE,UAFxBrqD,EAFD,EAECA,MACc3K,EAHf,EAGC4K,WAAc5K,MAHf,EAOGlM,cADF+W,aAAgBrT,kBANjB,SASD,OACE,cAACk3G,EAAD,2BACM/jG,GADN,IAEEzX,GAAIA,EACJJ,MAAOA,EACP0E,WAAYA,EACZsT,YAAa9K,EACb+K,OAAM,OAAE/K,QAAF,IAAEA,OAAF,EAAEA,EAAOC,SACX/J,K,sBC1MJw1I,EAAe,CACnBp0I,OAAQ,KACR+mD,SAAU,KACVstF,WAAW,EACX3rI,MAAO,MAGF,SAAS+tG,IAMP,IAAD,yDAAJ,GAAI,IALNiB,kBAKM,MALO,IAKP,MAJNr9C,eAIM,SAHIi6E,EAGJ,EAHNr0I,SAGM,IAFNs0I,eAEM,MAFI,aAEJ,MADN58B,0BACM,WAOFn7G,cALF6X,EAFI,EAEJA,MACAgpD,EAHI,EAGJA,aACAhvD,EAJI,EAIJA,MAJI,IAKJ6hD,UAAauC,EALT,EAKSA,YAAaD,EALtB,EAKsBA,aAAc3gC,EALpC,EAKoCA,QACxB5xB,EANZ,EAMJsT,aAAgBtT,SANZ,EASkBc,mBAASqzI,GAT3B,mBASCI,EATD,KASOC,EATP,KAWAz0I,EAASqU,IACTqgI,IACFr6E,GAAW3rD,sBAAY1O,IAAWmG,kBAAQssD,IAAgBD,IAC5D3gC,EAGI8iH,EAAYhxI,sBAChB0zB,mBAAQ,uCAAC,WAAOu9G,GAAP,SAAA7vI,EAAA,sEAAsB6vI,IAAtB,mFAAD,sDAA+Bl9B,GACvC,CAACA,IAIHhgG,qBAAU,WACR,IAAMm9H,EAAM,uCAAG,4BAAA9vI,EAAA,6DACT2D,EAAQ,KADC,SAEP20D,EAAY,uCAChB,WAAOtsD,GAAP,SAAAhM,EAAA,sEACQmD,QAAQ+8B,QACZqvG,EAAmBA,EAAiBvjI,GAAK9Q,EAAS8Q,IAEjD1I,MAAK,SAACqB,GAOL,OANA+qI,EAAQ,CACN1tF,UAAU,IAAIvgD,MAAOC,cACrBzG,OAAQ+Q,EACRsjI,WAAW,EACX3rI,MAAO,OAEFgB,KAERjB,OAAM,SAAC0uD,GAQN,MAPAs9E,EAAQ,CACN1tF,UAAU,IAAIvgD,MAAOC,cACrBzG,OAAQ+Q,EACRsjI,WAAW,EACX3rI,MAAOyuD,EAAIxuD,UAEbD,EAAQyuD,EAAIxuD,QACNwuD,KArBZ,mFADgB,sDAAZkG,GAwBF1wC,SAAQ,WACV,GAAIjkB,EAAO,CACLivG,GAAoBtpG,IACxB,IAAM8oD,EAAM,IAAIvuD,MAAMF,GACtB6rI,EAAQp9E,OA9BC,2CAAH,qDAkCRu9E,IAAiB/4H,IAAQ64H,EAAKx0I,OAAQA,IACxC20I,EAAUE,KAGX,CAAC70I,EAAQ00I,IAEZ,IAAMI,EAAkBnxI,uBACtB,gBAAG0wI,EAAH,EAAGA,UAAW3rI,EAAd,EAAcA,MAAd,OAA0B+rI,EAAQ,2BAAKL,GAAN,IAAoBC,YAAW3rI,aAChE,IAGF,MAAO,CAAE8rI,OAAMnmI,MAAOymI,G,YCjFjB,SAASr4I,IAKP,IAAD,yDAAJ,GAAI,IAJNi7G,kBAIM,MAJO,IAIP,MAHNr9C,eAGM,aAFN2T,oBAEM,MAFS,aAET,MADN+mE,mBACM,MADQ,SAACl6G,GAAD,OAAOA,GACf,IAIFr+B,cAFF6gE,EAFI,EAEJA,aACgBp9D,EAHZ,EAGJsT,aAAgBtT,SAHZ,EAMkBc,mBAAS,CAAEf,OAAQ,KAAM+mD,SAAU,OANrD,mBAMCytF,EAND,KAMOC,EANP,KA2BN,OAnBAvgF,YAAY,CACV,aAAc,WACZ,IAAM8gF,EAAkB39G,oBACtB,WAEE,OADA22C,IACO3Q,GAAa,SAACtsD,GAAD,OAClB7I,QAAQ+8B,QAAQhlC,EAAS8Q,IAAI1I,MAAK,SAACzI,GAEjC,OADA60I,EAAQ,CAAE1tF,UAAU,IAAIvgD,MAAOC,cAAezG,OAAQ+Q,IAC/CgkI,EAAYn1I,QAHhBy9D,KAOTq6C,EACA,CAAEu9B,SAAS,EAAMC,UAAU,IAExB76E,GAAS26E,OAIXR,I,uJC0CF,IAAMt2I,EAAM,CACjBsL,QA5DF,WAIE,OAAOC,IACJ7B,KAJa,CACdK,QAAS,aAIRI,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,aAAyCY,WAuDpDO,OAhFF,YAA6B,IACrB1F,EAAU,CACd6C,QAAS,UACTrM,GAHwB,EAANA,IAKpB,OAAO6N,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBA0EXsB,UAxEF,SAAuBN,GACrB,IAAMvF,EAAO,aACX6C,QAAS,WACN0C,GAEL,OAAOlB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAkEXiO,QAtDF,YAAkD,IAC1CxS,EAAU,CACd6C,QAAS,cACTrM,GAH6C,EAAvBA,GAItB0b,UAJ6C,EAAnBA,UAK1BD,KAL6C,EAARA,MAOvC,OAAO5N,IAAM7B,KAAKxC,IAgDlBsqI,kBA7CF,SAA8B/kI,GAC5B,IAAMvF,EAAO,aACX6C,QAAS,qBACN0C,GAEL,OAAOlB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAuCXgmI,kBApCF,SAA8BhlI,GAC5B,IAAMvF,EAAO,aACX6C,QAAS,qBACN0C,GAEL,OAAOlB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBA8BXimI,sBA3BF,SAAkCjlI,GAChC,IAAMvF,EAAO,aACX6C,QAAS,yBACN0C,GAEL,OAAOlB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAqBXkmI,0BAlBF,SAAsCllI,GACpC,IAAMvF,EAAO,aACX6C,QAAS,6BACN0C,GAEL,OAAOlB,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,mBC3EA/O,EAASiP,YAAa,CACjCvO,KAAM,OACN4J,KAAM,QACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAMA,SCE7Bw+B,EAAgB9+B,YAAoB,CAAErP,SAAQsD,QAE9C0Z,EAAU9S,YACd,gBAD8B,uCAE9B,WAAO6F,EAAP,wBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWS,MAAMA,MAAOe,GADhD,iEAGiCpN,EAAI0Z,QAAQjN,GAH7C,uBAGUhB,EAHV,EAGUA,aAHV,kBAISA,GAJT,2CAF8B,yDAU1B+lI,EAAoB5qI,YACxB,0BADwC,uCAExC,WAAO6F,EAAP,oBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWS,MAAMA,MAAOe,GADhD,iEAGepN,EAAIwxI,kBAAkB/kI,GAHrC,mFAFwC,yDAQpCglI,EAAoB7qI,YACxB,0BADwC,uCAExC,WAAO6F,EAAP,oBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWS,MAAMA,MAAOe,GADhD,iEAGepN,EAAIyxI,kBAAkBhlI,GAHrC,mFAFwC,yDAQpCilI,EAAwB9qI,YAC5B,8BAD4C,uCAE5C,WAAO6F,EAAP,oBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWS,MAAMA,MAAOe,GADhD,iEAGepN,EAAI0xI,sBAAsBjlI,GAHzC,mFAF4C,yDAQxCklI,EAA4B/qI,YAChC,kCADgD,uCAEhD,WAAO6F,EAAP,oBAAA5F,EAAA,yDAAe+E,EAAf,EAAeA,SAAUwB,EAAzB,EAAyBA,UAClBD,YAAiBvB,IAAWS,MAAMA,MAAOe,GADhD,iEAGepN,EAAI2xI,0BAA0BllI,GAH7C,mFAFgD,yDASrC7P,EAAO,2BACfiuC,GADe,IAElBnxB,UACA83H,oBACAC,oBACAC,wBACAC,8B,QCrDWjpI,EAAUsD,YAAoB,CACzCtP,SACAE,UACAqP,SAAS,EACT9D,cAAe,SAACC,EAAS8G,GACvB7G,YAAuBD,EAASxL,EAAQ8c,SAAS,SAACzZ,EAAO4H,GAAY,IAAD,KAClE,OAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAQX,eAAZ,aAAI,EAAiBqS,QAAMtZ,EAAMsZ,KAAN,OAAa1R,QAAb,IAAaA,GAAb,UAAaA,EAAQX,eAArB,aAAa,EAAiBqS,SAE3DlR,YACED,EACAxL,EAAQ40I,mBACR,SAACvxI,EAAD,GAAwC,IAAD,IAA7BiH,QAA6B,gBAAT,GAAS,GAAlBxF,MACiC,GAApBu1I,GADK,EAC7BpgI,oBAD6B,wCAErC3H,EAAQgC,UAAUjR,EAAOg3I,MAG7B5uI,YACED,EACAxL,EAAQ60I,mBACR,SAACxxI,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,EAAQ80I,uBACR,SAACzxI,EAAD,GAAwC,IAAD,IAA7BiH,QAAWxF,GAAkB,aAAT,GAAS,GAAlBA,KACnBwN,EAAQgC,UAAUjR,EAAOyB,MAG7B2G,YACED,EACAxL,EAAQ+0I,2BACR,SAAC1xI,EAAD,GAAwC,IAAD,IAA7BiH,QAA6B,gBAAT,GAAS,GAAlBxF,MACiC,GAApBu1I,GADK,EAC7BpgI,oBAD6B,wCAErC3H,EAAQgC,UAAUjR,EAAOg3I,SC5B3BC,EAAc17G,YAAgB,CAClCnvB,MAAO3D,EACPtH,OAAQzE,IAAY+L,QACpB0D,OAAQtH,IAAW4D,QACnB6D,MAAOzB,IAAUpC,QACjBgO,mBAAoBZ,IAAuBpN,QAC3CuQ,cAAek+H,IAAmBzuI,UAG9B+Q,EAAY,CAChBzZ,MACAtD,SACAE,UACA8L,QAASwuI,GAGIz9H,O,+BC5Bf,yFAEM29H,EACQ,WADRA,EAES,SAFTA,EAGU,WAHVA,EAIe,qBAJfA,EAKkB,YALlBA,EAMa,aANbA,EAOY,iBAPZA,EAQa,SARbA,EASmB,SATnBA,EAU2B,YAV3BA,EAWc,mBAXdA,EAYmB,6BAGzB,SAASC,EAAc9jH,EAAMhP,GAC3B,cAAIgP,QAAJ,IAAIA,OAAJ,EAAIA,EAAMI,WAAkBJ,EAAKhP,OAAOA,GAC5B,GAKP,IAAMqR,EAAY,CACvB0c,UAAW,SAAUuW,GACnB,OAAOh6B,IAAOg6B,EAAUuuF,IAE1BtgE,yBAA0B,SAAUwgE,EAAYC,GAC9C,OAAOC,KAAKllG,UAAUxc,EAAM0jB,MAAM89F,GAAcC,IAElD/kG,QAAS,SAACqW,GAAD,OAAcwuF,EAAcxoH,IAAOg6B,GAAWuuF,IACvDrhH,YAAa,SAAC8yB,GAAD,OACXwuF,EAAcxoH,IAAOg6B,GAAWuuF,IAClCh7D,mBAAoB,SAACvzB,GAAD,OAClBwuF,EAAcxoH,IAAOg6B,GAAWuuF,IAClC1mF,YAAa,SAAC7H,GAAD,OACXwuF,EAAcxoH,IAAOg6B,GAAWuuF,IAClCpsE,gBAAiB,eAACz3C,EAAD,uDAAQ,GAAR,OACf8jH,EAAcxoH,IAAO0E,GAAO6jH,IAC9BvhH,oBAAqB,eAACtC,EAAD,uDAAQ,GAAR,OACnB8jH,EAAcxoH,IAAO0E,GAAO6jH,IAC9B59F,MAAO,eAACqP,EAAD,uDAAYh6B,MAAZ,OACLwoH,EAAcxoH,IAAOg6B,GAAWuuF,IAClCh8D,cAAe,eAACvyB,EAAD,uDAAYh6B,MAAZ,OACbA,IAAOg6B,GAAUtkC,OAAO6yH,IAC1BK,SAAU,WAAsB,IAArBlkH,EAAoB,uDAAb1E,MAEhBA,IAAO0E,GAAMmkH,MAAMnzH,OAAO6yH,KAIjBthH,EAAQ,CACnBwc,UAAW,SAAC/e,GAAD,OAAU1E,IAAO0E,EAAM6jH,IAClC5/F,eAAgB,SAACjkB,GAAD,OAAU1E,IAAO0E,EAAM6jH,IACvCO,cAAe,SAACpkH,GAAD,OAAU1E,IAAO0E,EAAM6jH,IAEtC5kG,QAAS,eAACjf,EAAD,uDAAQ,GAAR,OAAe8jH,EAAcxoH,IAAO0E,GAAO6jH,IACpDrhH,YAAa,eAACxC,EAAD,uDAAQ,GAAR,OACX8jH,EAAcxoH,IAAO0E,GAAO6jH,IAC9B7/F,eAAgB,eAAChkB,EAAD,uDAAQ,GAAR,OACd8jH,EAAcxoH,IAAO0E,GAAO6jH,IAC9B59F,MAAO,eAACjmB,EAAD,uDAAQ,GAAR,OAAe8jH,EAAcxoH,IAAO0E,GAAO6jH,IAClD//F,WAAY,eAAC9jB,EAAD,uDAAQ,GAAR,OAAe8jH,EAAcxoH,IAAO0E,GAAO6jH,IACvDK,SAAU,WAAgB,IAAflkH,EAAc,uDAAP,GAEhB1E,IAAO0E,GAAMmkH,MAAMnzH,OAAO6yH,IAE5BjoD,UAAW,eAAC57D,EAAD,uDAAQ,GAAR,OACT8jH,EAAcxoH,IAAO0E,GAAO6jH,M,gCCrEhC,sEAIe,SAASphF,IAAuB,IAAX4hF,EAAU,uDAAJ,GACxCp+H,qBAAU,WACR,GAAIo+H,IAAQx0I,IAAE6E,QAAQ2vI,GAAM,CAE1B,IAAMp/D,EAAcC,YAAS5/C,OAAQ++G,GACrC,OAAO,WAELp/D,W,uKCHqC/7E,YAAkB,CAC7DC,OAAQuD,IAAMvD,OACdE,QAASqD,IAAMrD,QACf0wB,OAAQ,CACN/mB,IAAK,OACLpF,MAAO,KALU+Q,E,EAAbpV,YAAuBE,E,EAAAA,UASzBwW,EAAU,WAA2B,IAAD,yDAAP,GAAhB9V,EAAuB,EAAvBA,GAAO+O,EAAgB,sBAClC3F,EAAW0O,cACjB,OAAO,aACLg8H,kBAAmB/rI,uBACjB,gBAAM/I,EAAN,2BACEoK,EAAS7G,IAAMrD,QAAQ40I,kBAAd,2BAAqC90I,GAArC,IAA6CgB,GAAIA,MACvDyM,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADAmN,IAAMiO,QAAQ,wBACP2B,OAEb,CAAC3X,EAAUpJ,IAEbg0I,sBAAuBjsI,uBACrB,gBAAM/I,EAAN,2BACEoK,EAAS7G,IAAMrD,QAAQ80I,sBAAd,2BAAyCh1I,GAAzC,IAAiDgB,GAAIA,MAC3DyM,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADAmN,IAAMiO,QAAQ,6BACP2B,OAEb,CAAC3X,EAAUpJ,IAEbi0I,0BAA2BlsI,uBACzB,gBAAM/I,EAAN,2BACEoK,EAAS7G,IAAMrD,QAAQ+0I,0BAAd,2BAA6Cj1I,GAA7C,IAAqDgB,GAAIA,MAC/DyM,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADAmN,IAAMiO,QAAQ,iCACP2B,OAEb,CAAC3X,EAAUpJ,IAEb+zI,kBAAmBhsI,uBACjB,gBAAM/I,EAAN,2BACEoK,EAAS7G,IAAMrD,QAAQ60I,kBAAd,2BAAqC/0I,GAArC,IAA6CgB,GAAIA,MACvDyM,KAAK4jB,KACL5jB,MAAK,WAA4B,IAAD,yDAAP,GAAXsU,EAAkB,EAAxB/c,KAEP,OADAmN,IAAMiO,QAAQ,uBACP2B,OAEb,CAAC3X,EAAUpJ,KAEVV,EAAU,aAAEU,MAAO+O,O,6HCrDX,SAASiJ,EAAT,GAA2C,IAAvBhY,EAAsB,EAAtBA,GAAsB,IAAlBiY,cAAkB,SACjDkiI,EAAWxlI,aAAY,SAACpS,GAAD,OAAWA,EAAMqS,KAAKF,QAC3CA,EAASoB,YAAQ,CAAE9V,OAAnB0U,KACAhR,EAAWrB,IAAOI,OAAO,CAAEzC,OAA3B0D,OAH+C,EAI/ByB,oBAAS,GAJsB,mBAIhD0C,EAJgD,KAI1CC,EAJ0C,KAMjDmqB,EAA0B,OAAhB,OAAFjyB,QAAE,IAAFA,OAAA,EAAAA,EAAIkyB,OAAO,IAAaxd,EAAOhR,EAKvCuqB,EAAOhW,IAAWga,EAAQjyB,EAAnB,OAAwBiyB,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAOvyB,KAE5C,OAAI,OAACuyB,QAAD,IAACA,OAAD,EAACA,EAAOjyB,IAIV,uBACEgI,YAAa,SAAClB,GAAD,OAAOA,EAAEmB,mBACtBjG,QAAS,SAAC8E,GAAD,OAAOA,EAAEmB,mBAFpB,UAIE,sBAAMC,MAAM,eAAelG,QAZZ,kBAAM8F,GAAQ,IAY7B,SACG9H,IAAOm6I,EAAW,4BAAIlsH,IAAYA,IAErC,cAAC,IAAD,CACEjuB,GAAIA,EACJ6H,KAAMA,EACNQ,OAnBc,kBAAMP,GAAQ,IAoB5BqqB,kBAAgB,qCAdb,+BAAgB,YAATlE,EAAqB,0BAA4BA,M,8VCZ5D,SAASnqB,EAAT,GAEH,IAAD,IADDme,OAAU0tB,EACT,EADSA,YAAa4Q,EACtB,EADsBA,UAAW8hF,EACjC,EADiCA,gBAAiBriI,EAClD,EADkDA,GAI7Co6I,EAAkBr1I,IAAM7B,SAAQ,WACpC,IAAMsS,EAAU9P,IAAE4N,KAAK+uH,EAAgB97H,KAAI,SAAC5C,GAAD,OAASA,EAAIS,OAAOpE,OAAMg0C,OAErE,OAAOtuC,IAAEmO,OAAO2B,GAAS,SAACN,GAAD,OAAOA,OAC/B,CAAClV,EAAIqiI,IAEJ7sH,EAAU4kI,EAKd,OAJIzqG,IAAgBn6B,EAAQvE,SAAS0+B,IACnCyqG,EAAgBt8H,KAAK6xB,GAIrB,eAAC,IAAK/oC,QAAN,CACEnF,GAAG,SACH2G,KAAK,KACL4hB,QAAM,EACNvmB,MAAOksC,EACP1Z,UAAW0Z,EACX/nC,SAAU4N,EAAQ6I,QAAU,EAC5BxX,SAAU,SAACC,GACTy5C,EAAUz5C,EAAEC,OAAOtD,YAASsM,IAE9B7H,MAAM,uBAVR,UAYE,wBAAQzE,MAAM,GAAd,iBACC+R,EAAQjP,KAAI,SAACsyE,EAAQl3D,GAAT,OACX,wBAAgBle,MAAOo1E,EAAvB,SACGA,GADUl3D,SAUd,SAAS04H,EAAT,GAGH,IAAD,IAFDp4H,OAAU0tB,EAET,EAFSA,YAAa4Q,EAEtB,EAFsBA,UAAW8hF,EAEjC,EAFiCA,gBAAiBriI,EAElD,EAFkDA,GACnDwV,EACC,EADDA,QAIMX,EAAW9P,IAAM7B,SAAQ,WAC7B,IAAMo3I,EAAiB50I,IAAE4N,KACvB+uH,EAAgB97H,KAAI,SAAC5C,GAAD,OAASA,EAAIS,OAAOpE,OACxCuD,QAAO,SAAC2R,GAAD,OAAOA,KAChB,OAAI,OAACM,QAAD,IAACA,OAAD,EAACA,EAAS6I,QAIF7I,EAAQjS,QAAO,SAAC2R,GAAD,OAAOolI,EAAerpI,SAASiE,EAAEzR,UAHnD62I,EAAe/zI,KAAI,SAAC4O,GACzB,MAAO,CAAEvV,MAAOuV,EAAG1R,MAAO0R,QAG7B,CAACnV,EAAIqiI,EAAiB7sH,IAEzB,OACE,eAAC,IAAK5O,QAAN,CACEnF,GAAG,SACH2G,KAAK,KACL4hB,QAAM,EACNvmB,MAAOksC,EACP1Z,UAAW0Z,EACX/nC,SAAUiN,EAASwJ,QAAU,EAC7BxX,SAAU,SAACC,GACTy5C,EAAUz5C,EAAEC,OAAOtD,YAASsM,IAE9B7H,MAAM,uBAVR,UAYE,wBAAQzE,MAAM,GAAd,iBACCoR,EAAStO,KAAI,SAACsyE,EAAQl3D,GAAT,OACZ,wBAAgBle,MAAOo1E,EAAOp1E,MAA9B,SACGo1E,EAAOj5E,OADG+hB,SASd,SAASre,EAAT,GAAmE,IAAD,IAAtC2e,OAAU0tB,EAA4B,EAA5BA,YAAa4Q,EAAe,EAAfA,UACxD,OACE,cAAC,IAAK35C,QAAN,CACEwB,KAAK,KACLkB,KAAK,OACL7F,MAAOksC,GAAe,GACtB1Z,UAAW0Z,EACX9oC,SAAU,SAACC,GACTy5C,EAAUz5C,EAAEC,OAAOtD,YAASsM,IAE9BsE,YAAW,SACXnM,MAAM,yBAkBL,SAAS+5H,EAAev1G,EAAM1sB,EAAI2vC,GACvC,OAAOjjB,EAAKnpB,QAAO,SAACI,GAElB,OADiBA,EAAIS,OAAOpE,IACT2vC,KAKhB,SAAS4M,EAAT,GAA2D,IAAhBgE,EAAe,EAAzBt+B,OAAUs+B,UAAe,EAC7Bp7C,oBAAS,GADoB,mBACxDo1I,EADwD,KAC7CC,EAD6C,OAEjBr1I,mBAAS,IAFQ,mBAExDs1I,EAFwD,KAEvCC,EAFuC,OAGrBv1I,mBAAS,IAHY,mBAGxDw1I,EAHwD,KAGzCC,EAHyC,KAK/D,OACE,qCACE,eAAC,IAAD,WACE,cAAC,IAAD,UACE,eAAC,IAAK10I,KAAN,CAAWo8H,OAAK,EAAhB,UACGlqG,IAAM0c,QAAQ2lG,GACdA,GAAmBE,EAAgB,IAAM,GACzCviH,IAAM0c,QAAQ6lG,QAGnB,cAAC,IAAD,CAAK15I,GAAG,OAAR,SACE,cAAC,IAAD,CAAQmH,KAAK,KAAKrG,QAAQ,OAAOC,QAAS,kBAAMw4I,GAAa,IAA7D,uBAMJ,eAAC,IAAD,CAAOpyI,KAAK,KAAKP,KAAM0yI,EAAWlyI,OAAQ,kBAAMmyI,GAAa,IAA7D,UACE,cAAC,IAAMr3I,OAAP,qCACA,cAAC,IAAMqF,KAAP,UACE,cAAC,IAAD,CACEnE,SAAU,YAA6B,IAA1B0lD,EAAyB,EAAzBA,UAAWsB,EAAc,EAAdA,QACtB9K,EAAU,CACRwJ,UAAW3xB,IAAM0jB,MAAMiO,GACvBsB,QAASjzB,IAAM0jB,MAAMuP,KAEvBmvF,GAAa,GACbE,EAAmB3wF,GACnB6wF,EAAiBvvF,IAEnB9mD,cAAe,CACbwlD,UAAW0wF,EACXpvF,QAASsvF,GAZb,SAeE,cAACE,EAAD,cAQZ,SAASA,IAAkB,IAAD,EACaj6I,cAA7B6X,EADgB,EAChBA,MAAO9X,EADS,EACTA,WAAY8R,EADH,EACGA,MAErB44C,EAAU5yC,EAAM,WAChBsxC,EAAYtxC,EAAM,aACxB,OACE,eAAC,IAAD,CAAMpU,SAAU1D,EAAhB,UACE,eAAC,IAAKI,IAAN,WACE,cAAC,IAAD,CAAKE,GAAG,OAAR,SACE,cAAC,IAAW2J,KAAZ,CACElL,KAAK,YACLE,MAAM,aACNk4B,YAAY,EACZD,QAASwzB,EACTlqD,aAAa,UAGjB,cAAC,IAAD,UACE,cAAC,IAAWyJ,KAAZ,CACElL,KAAK,UACLE,MAAM,WACNk4B,YAAY,EACZF,QAASmyB,EACT5oD,aAAa,aAInB,cAAC,IAAD,CAAKC,UAAU,OAAf,SACE,cAAC,IAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CAAQkI,KAAK,SAAb,oBACA,cAAC,IAAD,CACEvH,QAAQ,YACRC,QAAS,kBAAMyQ,EAAM,CAAEs3C,UAAW,GAAIsB,QAAS,MAFjD,6BAaL,SAAS/O,EAAgB5vB,EAAM1sB,EAAI2vC,GACxC,OAAOjjB,EAAKnpB,QAAO,SAACI,GAClB,IAAMm3I,EAAWn3I,EAAIS,OAAOpE,GAC5B,SACG,OAAC2vC,QAAD,IAACA,OAAD,EAACA,EAAaoa,YAAa+wF,IAAQ,OAAInrG,QAAJ,IAAIA,OAAJ,EAAIA,EAAaoa,gBACpD,OAACpa,QAAD,IAACA,OAAD,EAACA,EAAa0b,UAAWyvF,IAAQ,OAAInrG,QAAJ,IAAIA,OAAJ,EAAIA,EAAa0b,aAnGzD42E,EAAe8Y,WAAa,SAAC3kC,GAAD,MAAwB,kBAARA,I,qDC3H5C,IAAM72F,EAAM,CACV2R,kBAAmB5R,IACnBsb,YCHa,WACb,OAAOjmB,aAAY,SAACpS,GAAD,OAAWA,EAAMgd,IAAI1V,cDI3B0V,O,qJECA,SAASvC,EAAT,GAQX,IAAD,IAPD9C,aAOC,MAPO,GAOP,MANDoY,eAMC,MANS,GAMT,MALDC,YAKC,MALM,GAKN,MAJD9wB,GAAI23G,OAIH,MAJe,IAIf,EAHDl3G,EAGC,EAHDA,SAGC,IAFD8/D,YAEC,SADEh/D,EACF,iEAEa4rI,EACV96F,cADF70B,SAAY2vH,sBAEd,IAAK10H,IAAUoY,IAAYC,EAAM,OAAO,KAExC,IAAMP,EAAM,iBAAa9X,EAAb,oBACVupG,mBAAmBnxF,IAAY,GADrB,iBAEHmxF,mBAAmBlxF,IAAS,IAC/Bsf,EAAO+8F,EAAqB,yCACIA,EADJ,+BACgDnrB,mBAC5EzxF,IAEFA,EAEJ,OACE,qCACE,cAAConF,EAAD,2BACMp2G,GADN,IAEE6uC,KAAMA,EACN9qC,OAAO,SACP+oC,IAAI,sBAJN,SAMG5tC,IAAsBgY,GAAS,YACrB,IACZ8nD,EACC,cAAC,IAAD,CACE/zC,KAAM/T,EACNwqD,OAAQ,kBAAMvzD,IAAMiO,QAAQ,iBAF9B,SAIE,cAAC,IAAD,CAAO3d,GAAG,IAAIM,QAAQ,QAAQmG,MAAM,gBAApC,SACE,cAAC,IAAD,QAGF,U,0HC7CK,SAASkY,EAAT,GAQX,IAPFvY,EAOC,EAPDA,KACAd,EAMC,EANDA,OACAsB,EAKC,EALDA,OAKC,IAJDgY,oBAIC,aAHDC,iBAGC,MAHW,SAGX,EAFDpY,EAEC,EAFDA,MACAhG,EACC,EADDA,SAEM+C,EAAM2a,iBAAO,MAInB,OCZa,SAA8B3a,EAAK+1I,GAChDl/H,qBAAU,WACR,GAAKpW,IAAEC,WAAWq1I,GAYlB,OADAphH,SAASK,iBAAiB,YAAaghH,GAChC,WAELrhH,SAASM,oBAAoB,YAAa+gH,IAV5C,SAASA,EAAmBh0I,GACtBhC,EAAI4K,UAAY5K,EAAI4K,QAAQie,SAAS7mB,EAAMF,SAC7Ci0I,EAAa/zI,MAUhB,CAAChC,EAAK+1I,IDTTE,CAAqBj2I,GAAK,WACxBoD,OAGA,cAAC82E,EAAA,EAAD,CAASt3E,KAAMA,EAAMd,OAAQA,EAAQuZ,UAAWA,EAAWjY,OAAQA,EAAnE,SACE,cAACoqE,EAAA,EAAD,CAASzwE,QAASqe,EAAehY,OAAS0H,EAA1C,SACE,sBAAK9K,IAAKA,EAAV,UACGiD,EAAQ,cAACuqE,EAAA,EAAQlqE,MAAT,CAAe9G,GAAG,KAAlB,SAAwByG,IAAyB,KAC1D,cAACuqE,EAAA,EAAQC,QAAT,CAAiBtxE,UAAU,MAA3B,SAAkCc,a,gCEvB5C,oGAQe,SAAS6a,EAAT,GAAqD,IAAtCX,EAAqC,EAArCA,MAAO++H,EAA8B,EAA9BA,IAAKj5I,EAAyB,EAAzBA,SAAyB,IAAf8/D,YAAe,SACjE,IAAK5lD,EAAO,OAAO,KACnB,IAAMg/H,EAAS/+H,YAAYD,EAAO++H,IAAQ,GACpCE,EAAaD,EAAO1xG,QAAQ,IAAK,IACvC,OACE,qCACE,mBACEmI,KAAI,cAAS4xE,mBAAmB43B,IAChCt0I,OAAO,SACP+oC,IAAI,sBAHN,SAKG5tC,GAAsBk5I,IACpB,IACJp5E,EACC,cAAC,IAAD,CACE/zC,KAAMotH,EACN32E,OAAQ,kBAAMvzD,IAAMiO,QAAQ,wBAF9B,SAIE,cAAC,IAAD,CAAO3d,GAAG,IAAIM,QAAQ,QAAQmG,MAAM,gBAApC,SACE,cAAC,IAAD,QAGF,U,gCC9BV,+CAEO,SAASmU,EAAYD,EAAOk/H,GAAY,IAAD,EAC5C,IAAKl/H,EAAO,OAAOA,EACnB,IAAIg/H,EAASh/H,EACTk/H,IACFF,EAASh/H,EAAQ,KAAOk/H,GAE1B,IAAMC,EAAQ,UAAGC,YACfJ,EACA,aAFY,aAAG,EAGdK,sBAEH,OAAKF,GAAiBn/H,I,mGC4CjB,IAAM9Z,EAAM,CACjBsL,QAxDF,WAIE,OAAOC,IACJ7B,KAJa,CACdK,QAAS,0BAIRI,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,aAAyCiL,wBAmDpD9J,OAhDF,YAA0C,IAClC1F,EAAU,CACd6C,QAAS,uBACTrM,GAHqC,EAANA,IAKjC,OAAO6N,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBA0CXoB,UAvCF,SAAoCw7E,GAClC,IAAMnhF,EAAO,aACX6C,QAAS,2BACNs+E,GAEL,OAAO98E,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiCXsB,UA9BF,SAAoCs7E,GAClC,IAAMnhF,EAAO,aACX6C,QAAS,2BACNs+E,GAEL,OAAO98E,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAwBXwK,UArBF,SAAqCoyE,GACnC,IAAMnhF,EAAO,aACX6C,QAAS,4BACNs+E,GAEL,OAAO98E,IAAM7B,KAAKxC,GAASiD,MAAK,qBAAGsB,iBAiBnCsK,aAdF,SAAqCsyE,GACnC,IAAMnhF,EAAO,aACX6C,QAAS,4BACNs+E,GAEL,OAAO98E,IAAM7B,KAAKxC,GAASiD,MAAK,qBAAGsB,kBCpDxB/O,EAASiP,YAAa,CACjCvO,KAAM,qBACN4J,KAAM,2BACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAMqK,sBCE7Bm0B,EAAgB9+B,YAAoB,CACxCrP,SACAsD,IAAKA,IAGMiW,EAAYrP,YACvB,gCADuC,uCAEvC,WAAOM,EAAP,sBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAWS,MAAMqK,mBAAoBtJ,GAD7D,iEAIyBpN,EAAIiW,UAAJ,eAClB/O,IALP,cAIQkD,EAJR,yBAOSA,GAPT,2CAFuC,yDAa5B2L,EAAenP,YAC1B,mCAD0C,uCAE1C,WAAOM,EAAP,sBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAWS,MAAMqK,mBAAoBtJ,GAD7D,iEAIyBpN,EAAI+V,aAAJ,eAClB7O,IALP,cAIQkD,EAJR,yBAOSA,GAPT,2CAF0C,yDAa/BxN,EAAO,2BACfiuC,GADe,IAElB50B,YACAF,iB,QClCWrN,EAAUsD,YAAoB,CACzCtP,OAAQA,EACRE,QAASA,EACTqP,SAAS,EACT9D,cAAe,SAACC,GACdC,YAAuBD,EAASxL,EAAQqZ,WAAW,SAAChW,EAAO4H,GACzD5H,EAAM0P,SAAS9H,EAAOX,QAAQxJ,IAAImX,QAAUhN,EAAOX,QAAQ2N,QAG3DhG,IAAMiO,QAAQ,eAAgB,CAC5BC,UAAW,IACX/W,aAAa,OAGjBqC,YAAuBD,EAASxL,EAAQmZ,cAAc,SAAC9V,EAAO4H,GAC5D5H,EAAM0P,SAAS9H,EAAOX,QAAQxJ,IAAImX,QAAUhN,EAAOX,QAAQ2N,QAG3DhG,IAAMiO,QAAQ,iBAAkB,CAC9BC,UAAW,IACX/W,aAAa,UCtBf8P,EAAyB,CAC7B9V,MACAtD,SACAE,UACA8L,WAGaoN,O,mGC6CR,IAAM9V,EAAM,CACjBsL,QAxDF,WAIE,OAAOC,IACJ7B,KAJa,CACdK,QAAS,qBAIRI,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,aAAyCwN,mBAmDpDrM,OAhDF,YAAqC,IAC7B1F,EAAU,CACd6C,QAAS,kBACTrM,GAHgC,EAANA,IAK5B,OAAO6N,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBA0CXoB,UAvCF,SAA+Bw7E,GAC7B,IAAMnhF,EAAO,aACX6C,QAAS,sBACNs+E,GAEL,OAAO98E,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAiCXsB,UA9BF,SAA+Bs7E,GAC7B,IAAMnhF,EAAO,aACX6C,QAAS,sBACNs+E,GAEL,OAAO98E,IACJ7B,KAAKxC,GACLiD,MAAK,kBAAuB,CAAEzI,KAAzB,EAAG+J,kBAwBXwK,UArBF,SAAqCoyE,GACnC,IAAMnhF,EAAO,aACX6C,QAAS,4BACNs+E,GAEL,OAAO98E,IAAM7B,KAAKxC,GAASiD,MAAK,qBAAGsB,iBAiBnCsK,aAdF,SAAqCsyE,GACnC,IAAMnhF,EAAO,aACX6C,QAAS,4BACNs+E,GAEL,OAAO98E,IAAM7B,KAAKxC,GAASiD,MAAK,qBAAGsB,kBCpDxB/O,EAASiP,YAAa,CACjCvO,KAAM,gBACN4J,KAAM,sBACN4E,SAAU,SAAC3L,GAAD,OAAWA,EAAMoM,MAAM4M,iBCE7B4xB,EAAgB9+B,YAAoB,CACxCrP,SACAsD,IAAKA,IAGMiW,EAAYrP,YACvB,0BADuC,uCAEvC,WAAOM,EAAP,sBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAWS,MAAM4M,cAAe7L,GADxD,iEAGyBpN,EAAIiW,UAAJ,eAClB/O,IAJP,cAGQkD,EAHR,yBAMSA,GANT,2CAFuC,yDAY5B2L,EAAenP,YAC1B,6BAD0C,uCAE1C,WAAOM,EAAP,sBAAAL,EAAA,yDAAkB+E,EAAlB,EAAkBA,SAAUwB,EAA5B,EAA4BA,UACrBD,YAAiBvB,IAAWS,MAAM4M,cAAe7L,GADxD,iEAGyBpN,EAAI+V,aAAJ,eAClB7O,IAJP,cAGQkD,EAHR,yBAMSA,GANT,2CAF0C,yDAY/BxN,EAAO,2BACfiuC,GADe,IAElB50B,YACAF,iB,QChCWrN,EAAUsD,YAAoB,CACzCtP,OAAQA,EACRE,QAASA,EACTqP,SAAS,EACT9D,cAAe,SAACC,GACdC,YAAuBD,EAASxL,EAAQqZ,WAAW,SAAChW,EAAO4H,GACzD5H,EAAM0P,SAAS9H,EAAOX,QAAQxJ,IAAImX,QAAUhN,EAAOX,QAAQ2N,QAG3DhG,IAAMiO,QAAQ,eAAgB,CAC5BC,UAAW,IACX/W,aAAa,OAGjBqC,YAAuBD,EAASxL,EAAQmZ,cAAc,SAAC9V,EAAO4H,GAC5D5H,EAAM0P,SAAS9H,EAAOX,QAAQxJ,IAAImX,QAAUhN,EAAOX,QAAQ2N,QAG3DhG,IAAMiO,QAAQ,iBAAkB,CAC9BC,UAAW,IACX/W,aAAa,UCtBf2S,EAAoB,CACxB3Y,MACAtD,SACAE,UACA8L,WAGaiQ,Q","file":"static/js/main.b3378f1a.chunk.js","sourcesContent":["export function setToken(token) {\n localStorage.setItem(\"authToken\", token);\n}\nexport function getToken() {\n return localStorage.getItem(\"authToken\");\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport pseudoState from \"./state\";\n\nexport const { useEntities: usePseudos, useEntity: usePseudo } =\n createEntityHooks({\n entity: pseudoState.entity,\n actions: pseudoState.actions,\n });\n","import { array, bool, object, string } from \"yup\";\n\nconst pseudoSchema = object().shape({\n name: string().label(\"Description\").required(),\n defaultGroup: string().label(\"Default Group\"),\n owner: string().label(\"Owner\"),\n id: string().label(\"Id\").required().max(5),\n inactive: bool().required().default(false),\n allowedTypes: array().of(string()).max(10).nullable(),\n});\n\nexport default pseudoSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport Type from \"../../projects/types\";\nimport Group from \"../groups\";\nimport RealUserSelect from \"../RealUserSelect\";\nimport pseudoUserSchema from \"./pseudoSchema\";\n\nexport default function PseudoEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: pseudoUserSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction PseudoUserForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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
\n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function PseudoUserLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { usePseudo, usePseudos } from \"./hooks\";\nimport PseudoEditor from \"./PseudoEditor\";\nimport PseudoLink from \"./PseudoLink\";\nimport Table from \"./PseudoTable\";\nimport state from \"./state\";\n\nconst Pseudo = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: usePseudo,\n useAll: usePseudos,\n // Components\n Table,\n Link: PseudoLink,\n Editor: PseudoEditor,\n // Related Entity Objects\n};\n\nexport default Pseudo;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport UserTableFilter from \"../UserTableFilter\";\nimport PseudoLink from \"./PseudoLink\";\n\nexport default function PseudoTable({\n pseudos,\n pseudoLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Name\", \"Default Group\", \"Owner\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: pseudo } }) =>\n pseudoLink ? (\n {value || pseudo?.id}\n ) : (\n value\n ),\n },\n {\n id: \"Name\",\n Header: \"Name\",\n accessor: \"name\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Owner\",\n Header: \"Owner\",\n accessor: \"owner\",\n Filter: UserTableFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n id: \"Default Group\",\n Header: \"Group\",\n accessor: \"defaultGroup\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n ],\n [pseudoLink],\n );\n return (\n \n );\n}\n","import createEntityHooks from \"../../../common/entity/createEntityHooks\";\nimport programState from \"./state\";\n\nexport const { useEntities: usePrograms, useEntity: useProgram } =\n createEntityHooks({\n entity: programState.entity,\n actions: programState.actions,\n });\n","import { useProgram, usePrograms } from \"./hooks\";\n\nconst Program = {\n useOne: useProgram,\n useAll: usePrograms,\n};\nexport default Program;\n","import Fuse from \"fuse.js\";\nimport _ from \"lodash\";\nimport React, { useMemo, useState } from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport GroupDescription from \"./GroupDescription\";\nimport Program from \"./programs\";\n\nconst GroupLookupByProgram = React.forwardRef(({ onSelect }, ref) => {\n const [results, setResults] = useState([]);\n const { programs } = Program.useAll();\n\n const onRowDoubleClick = (rowInfo) => {\n if (rowInfo.groupId !== null && rowInfo.groupId !== \"\")\n if (_.isFunction(onSelect)) onSelect(rowInfo.groupId);\n };\n\n const onRowDoubleClickProp = onRowDoubleClick\n ? { onRowDoubleClick: onRowDoubleClick }\n : {};\n\n const fuse = new Fuse(programs, {\n keys: [\"programCode\", \"programDescription\"],\n minMatchCharLength: 3,\n });\n\n const columns = useMemo(\n () => [\n {\n Header: \"Program\",\n accessor: \"programCode\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Description\",\n accessor: \"programDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Group\",\n accessor: \"groupId\",\n\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n \n Type at least 3 characters then press Enter\n \n setResults(fuse.search(q).map((p) => p.item))}\n ref={ref}\n />\n {_.isFunction(onSelect) ? (\n \n Double click a row to select the group\n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n );\n});\n\nconst SearchInput = React.forwardRef(({ onEnter }, ref) => {\n const [query, setQuery] = useState(\"\");\n const handleEnter = (event) => {\n if (event.keyCode === 13) {\n onEnter(query);\n }\n };\n return (\n setQuery(e.target.value)}\n onKeyDown={handleEnter}\n />\n );\n});\n\nexport default GroupLookupByProgram;\n","import GroupDescription from \"./GroupDescription\";\nimport { GroupLabel } from \"./GroupLabel\";\nimport GroupLookupByProgram from \"./GroupLookupByProgram\";\nimport GroupSelect from \"./GroupSelect\";\nimport GroupTableFilter from \"./GroupTableFilter\";\nimport { useGroup, useGroups } from \"./hooks\";\nimport Program from \"./programs\";\nimport groupState from \"./state\";\n\nexport const isTierOneGroup = (groupId) =>\n groupId === \"OUTBND\" ||\n groupId === \"INVENT\" ||\n groupId === \"ORDER\" ||\n groupId === \"GENERL\";\n\nconst Group = {\n // API\n api: groupState.api,\n // State\n actions: groupState.actions,\n selectors: groupState.entity.selectors,\n // Hooks\n useOne: useGroup,\n useAll: useGroups,\n // Functions\n isTierOne: isTierOneGroup,\n // Components\n Select: GroupSelect,\n Description: GroupDescription,\n Label: GroupLabel,\n TableFilter: GroupTableFilter,\n LookupByProgram: GroupLookupByProgram,\n // Related Entity Objects\n Program: Program,\n};\nexport default Group;\n","import React, { useCallback, useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { BsQuestionSquareFill } from \"react-icons/bs\";\n\nimport GroupLookupByProgram from \"./GroupLookupByProgram\";\n\nexport function GroupLabel({ onChosen, disabled }) {\n const [show, setShow] = useState(false);\n\n const onSelect = useCallback(\n (id) => {\n setShow(false);\n onChosen(id);\n },\n [onChosen],\n );\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n !disabled && setShow(true)}>\n Group \n \n setShow(false)}>\n \n \n Group Lookup by Program\n \n \n\n \n \n \n \n \n );\n}\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport storage from \"localforage\";\nimport { isEmpty } from \"lodash\";\nimport { getStoredState, persistReducer, REHYDRATE } from \"redux-persist\";\n\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n} from \"../../common/functions/state\";\n\nconst persistConfig = {\n key: \"app\",\n version: 1,\n storage,\n whitelist: [\"forms\"],\n};\n\nexport const rehydrate = createAsyncThunk(\n \"app/REHYDRATE\",\n async (_, { dispatch }) => {\n const state = await getStoredState(persistConfig);\n\n dispatch({\n type: REHYDRATE,\n key: persistConfig.key,\n payload: state,\n });\n },\n);\n\nconst appSlice = createSlice({\n name: \"app\",\n initialState: {\n ...INITIAL_LOADING_STATE,\n isActive: true,\n canStateExpire: { canStateExpire: true, keys: {} },\n forms: {},\n lastRehydrate: null,\n },\n reducers: {\n setIsActive(state, action) {\n console.log(`App ${action.payload ? \"active\" : \"inactive\"}`);\n state.isActive = action.payload;\n },\n setCanStateExpire(state, action) {\n const { key, value } = action.payload;\n if (!value) {\n state.canStateExpire.keys[key] = true;\n } else {\n delete state.canStateExpire.keys[key];\n }\n const canStateExpire = isEmpty(state.canStateExpire.keys);\n if (state.canStateExpire.canStateExpire !== canStateExpire) {\n console.log(`App state expiration: ${canStateExpire}`);\n state.canStateExpire.canStateExpire = canStateExpire;\n }\n },\n setForms(state, action) {\n const { key, value } = action.payload;\n if (isEmpty(value)) {\n delete state.forms[key];\n } else {\n state.forms[key] = value;\n }\n },\n },\n extraReducers: (builder) =>\n buildAsyncThunkReducer(\n builder,\n rehydrate,\n (state) => (state.lastRehydrate = new Date().toISOString()),\n ),\n});\n\nconst appReducer = persistReducer(persistConfig, appSlice.reducer);\n\nexport default appReducer;\nexport const appActions = { ...appSlice.actions, rehydrate };\n","import { createEntityHooks } from \"../../common/entity\";\nimport estimateStatusState from \"./state\";\n\nexport const {\n useEntities: useEstimateStatuses,\n useEntity: useEstimateStatus,\n} = createEntityHooks({\n entity: estimateStatusState.entity,\n actions: estimateStatusState.actions,\n});\n","import { createEntityHooks } from \"../../common/entity\";\nimport groupState from \"./state\";\n\nexport const { useEntities: useGroups, useEntity: useGroup } =\n createEntityHooks({\n entity: groupState.entity,\n actions: groupState.actions,\n });\n","import axios from \"axios\";\n\nimport { getToken } from \"../auth/state/token\";\nimport isDev from \"../common/isDev\";\n\nexport const SHARK_URL = process.env.REACT_APP_BACKEND_URL\n ? process.env.REACT_APP_BACKEND_URL\n : !isDev()\n ? \"https://shark.producepro.com/services\"\n : \"https://shark-test.producepro.com/services\";\n\nconst apiClient = axios.create({\n baseURL: SHARK_URL,\n timeout: 120000,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n});\n\nconst endPoint = \"/services\";\n\nconst apiData = {\n appId: \"T3\",\n};\n\nexport default {\n post(data, { unimplemented = false, config = {} } = {}) {\n const logData = \"password\" in data ? { ...data, password: \"\" } : data;\n console.log(logData);\n const command = data.command;\n if (unimplemented) {\n return Promise.reject(`API marked Un-Implemented (${command})`);\n }\n return apiClient\n .post(endPoint, { ...apiData, ...data, authToken: getToken() }, config)\n .then((response) => {\n console.log(response.data);\n if (\n response.data.response === \"FAIL\" ||\n response.data.response === \"ERROR\"\n ) {\n return Promise.reject(response.data.responseMessage);\n } else if (response.data.response === \"TIMEOUT\") {\n return Promise.reject(`Request timed out (${command})`);\n } else if (response.data.responseFor !== command) {\n return Promise.reject(\"Command response mismatch\");\n }\n return response.data;\n })\n .catch((error) => {\n console.error(error, logData);\n const message = error?.response?.data?.responseMessage;\n return Promise.reject(message ? new Error(message) : error);\n });\n },\n};\n","import { createEntityHooks } from \"../../common/entity\";\nimport typeState from \"./state\";\n\nexport const { useEntities: useTypes, useEntity: useType } = createEntityHooks({\n entity: typeState.entity,\n actions: typeState.actions,\n});\n","import { createEntityHooks } from \"../../common/entity\";\nimport teamState from \"./state\";\n\nexport const { useEntities: useTeams, useEntity: useTeam } = createEntityHooks({\n entity: teamState.entity,\n actions: teamState.actions,\n});\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useTeams } from \"./hooks\";\n\nconst TeamTableFilter = entityTableFilter({\n name: \"team\",\n useEntities: useTeams,\n});\n\nexport default TeamTableFilter;\n","import { useTeam, useTeams } from \"./hooks\";\nimport state from \"./state\";\nimport TeamDescription from \"./TeamDescription\";\nimport TeamSelect from \"./TeamSelect\";\nimport TeamTableFilter from \"./TeamTableFilter\";\n\nconst Team = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useTeam,\n useAll: useTeams,\n // Components\n Select: TeamSelect,\n Description: TeamDescription,\n TableFilter: TeamTableFilter,\n};\nexport default Team;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getProjectEstimateStatuses\" }).then((r) => {\n return { data: r.responseData.projectEstimateStatuses };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"estimateStatus\",\n type: \"projects/estimateStatuses\",\n getState: (state) => state.projects.estimateStatuses,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst estimateStatusState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default estimateStatusState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getProjectTypes\" }).then((r) => {\n return { data: r.responseData.projectTypes };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"type\",\n type: \"projects/types\",\n getState: (state) => state.projects.types,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst typeState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default typeState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport programState from \"../programs/state\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getGroups\" }).then((r) => {\n return { data: r.responseData.groups };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"groups\",\n type: \"users/groups\",\n getState: (state) => state.users.groups,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n extraReducers: (builder) => {\n builder.addDefaultCase((state, action) => {\n state.programs = programState.reducer(state.programs, action);\n });\n },\n});\n\nconst groupState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default groupState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getTeams\" }).then((r) => {\n return { data: r.responseData.teams };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"team\",\n type: \"users/teams\",\n getState: (state) => state.users.teams,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst teamState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default teamState;\n","import shark from \"../../../apis/shark\";\n\nfunction getPseudosAPI({ customerId } = {}) {\n const args = { ...(customerId ? { customerId: customerId } : null) };\n const payload = {\n command: \"getPseudoUsers\",\n ...args,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.pseudoUsers,\n searchArgs: args,\n }));\n}\n\nfunction getPseudoAPI({ id }) {\n const payload = {\n command: \"getPseudoUser\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createPseudoAPI(pseudoUser) {\n const payload = {\n command: \"createPseudoUser\",\n ...pseudoUser,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updatePseudoAPI(pseudoUser) {\n const payload = {\n command: \"updatePseudoUser\",\n ...pseudoUser,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getPseudosAPI,\n getOne: getPseudoAPI,\n createOne: createPseudoAPI,\n updateOne: updatePseudoAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"pseudo\",\n type: \"users/pseudos\",\n getState: (state) => state.users.pseudo,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst pseudoState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default pseudoState;\n","import _ from \"lodash\";\nimport { toast } from \"react-toastify\";\n\nimport difference from \"../difference\";\n\nexport const INITIAL_LOADING_STATE = {\n requests: {\n ids: {},\n loading: false,\n },\n};\n\nexport function testStateLoading(state, requestId) {\n const { requests } = state;\n if (requests.loading && requestId in requests.ids) return true;\n return false;\n}\n\nexport function getChangesExcludingStamps(changes, current) {\n const currentFields = {\n ...current,\n id: undefined,\n createDateTime: undefined,\n modifyDateTime: undefined,\n };\n const changesFields = {\n ...changes,\n id: undefined,\n createDateTime: undefined,\n modifyDateTime: undefined,\n };\n return difference(changesFields, currentFields);\n}\n\nexport function buildAsyncThunkReducer(\n builder,\n thunk,\n fullfilled = () => {},\n { state: stateSlice, rejected = () => {} } = {},\n) {\n function setState(state) {\n let effectiveState;\n if (stateSlice) {\n effectiveState = state[stateSlice];\n } else effectiveState = state;\n return effectiveState;\n }\n\n builder.addCase(thunk.pending, (state, action) => {\n let _state = setState(state);\n const { requestId, arg = {} } = action.meta;\n\n const _arg = JSON.stringify(arg);\n if (!_.includes(_state.requests.ids, _arg)) {\n _state.requests.ids[requestId] = _arg;\n _state.requests.loading = true;\n }\n });\n builder.addCase(thunk.fulfilled, (state, action) => {\n let _state = setState(state);\n const { requestId } = action.meta;\n\n if (testStateLoading(_state, requestId)) {\n delete _state.requests.ids[requestId];\n if (_.isEmpty(_state.requests.ids)) _state.requests.loading = false;\n fullfilled(_state, action);\n }\n });\n builder.addCase(thunk.rejected, (state, action) => {\n let _state = setState(state);\n const { requestId } = action.meta;\n if (testStateLoading(_state, requestId)) {\n delete _state.requests.ids[requestId];\n if (_.isEmpty(_state.requests.ids)) _state.requests.loading = false;\n rejected(_state, action);\n\n toast.error(action.error.message);\n }\n });\n}\n","import { createEntityAdapter, createSelector } from \"@reduxjs/toolkit\";\nimport stringify from \"json-stable-stringify\";\nimport _, { camelCase, isFunction, isString } from \"lodash\";\nimport pluralize from \"pluralize\";\n\n/**\n * @typedef {Object} Opts\n * @property {function} name Entity name\n * @property {function} type Entity redux action type prefix\n * @property {function} getState Function to return state slice\n * @property {Object=} adapterConfig createEntityAdapter configuration\n */\n\n/**\n * Create entity object using Redux-Toolkit entities\n * @param {Opts} opts Options\n */\nexport function createEntity({\n name,\n type,\n getState: getEntityState,\n adapterConfig = { selectId: (e) => e.id },\n}) {\n if (!isString(name)) {\n throw new Error(`name is required`);\n }\n if (!isString(type)) {\n throw new Error(`type is required`);\n }\n if (!isFunction(getEntityState)) {\n throw new Error(`getState is required`);\n }\n\n const adapter = createEntityAdapter(adapterConfig);\n\n const selectors = adapter.getSelectors(getEntityState);\n const searchInitialState = () => ({\n ids: [],\n lastUpdate: null,\n startAfter: null,\n });\n const selectBySearch = createSelector(\n selectors.selectEntities,\n (state, args) => {\n const search = stringify(args);\n return getEntityState(state).idsBySearch[search] || searchInitialState();\n },\n (entities, { ids, lastUpdate, startAfter }) => {\n return [_.at(entities, ids) || [], lastUpdate, startAfter];\n },\n );\n const selectByIds = createSelector(\n (state, ids) => {\n return _.at(selectors.selectEntities(state), ids) || [];\n },\n (ids) => ids,\n );\n\n return {\n name: camelCase(pluralize(name, 1)),\n type: type,\n adapter,\n getState: getEntityState,\n selectors: { ...selectors, selectBySearch, selectByIds },\n };\n}\n\nexport default createEntity;\n","import { createAction, createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { isFunction, isString } from \"lodash\";\n\nimport { testStateLoading } from \"../../common/functions/state\";\n\n/**\n * @typedef {Object} Opts\n * @property {Object} entity Entity object\n * @property {Object} api Async API functions\n */\n\n/**\n * Create Redux actions using Redux-Toolkit entities\n * @param {Opts} opts Options\n */\nexport function createEntityActions({ entity, api }) {\n const { type, getState: getEntityState } = entity;\n if (!isFunction(getEntityState) || !isString(type)) {\n throw new Error(`entity is required`);\n }\n if (!isFunction(api.getMany)) {\n throw new Error(`getMany API is required`);\n }\n\n const getMany = createEntityThunkAction(\n entity,\n \"/getMany\",\n api.getMany,\n getActions,\n );\n const getOne = createEntityThunkAction(\n entity,\n \"/getOne\",\n api.getOne,\n getActions,\n );\n const createOne = createEntityThunkAction(\n entity,\n \"/create\",\n api.createOne,\n getActions,\n );\n const updateOne = createEntityThunkAction(\n entity,\n \"/update\",\n api.updateOne,\n getActions,\n );\n const deleteOne = createEntityThunkAction(\n entity,\n \"/delete\",\n api.deleteOne,\n getActions,\n );\n\n const reset = createAction(type + \"/reset\");\n\n const actions = {\n getMany,\n getOne,\n createOne,\n updateOne,\n deleteOne,\n reset,\n };\n\n function getActions() {\n return actions;\n }\n\n return actions;\n}\n\nexport default createEntityActions;\n\nexport function createEntityThunkAction(\n entity,\n type,\n payloadCreator,\n getActions = () => {},\n) {\n if (!isFunction(payloadCreator)) return undefined;\n\n const { type: entityType, getState: getEntityState } = entity;\n\n return createAsyncThunk(entityType + type, async (args, thunkAPI) => {\n const { getState, requestId } = thunkAPI;\n if (!testStateLoading(getEntityState(getState()), requestId))\n return undefined;\n return await payloadCreator(args, thunkAPI, {\n actions: getActions(),\n ...entity,\n });\n });\n}\n","import { createReducer, current } from \"@reduxjs/toolkit\";\nimport stringify from \"json-stable-stringify\";\nimport storage from \"localforage\";\nimport {\n isFunction,\n isObject,\n isString,\n isUndefined,\n remove,\n uniq,\n} from \"lodash\";\nimport { persistReducer } from \"redux-persist\";\n\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n} from \"../functions/state\";\n\n/**\n * @typedef {Object} Opts\n * @property {Object} entity Entity object\n * @property {Object} actions Redux actions\n * @property {Object=} initialState Additional initial state\n * @property {boolean=} persist Persist entities state\n * @property {PersistConfig=} persistConfig Persist reducer configuration (redux-persist)\n * @property {function=} extraReducers Callback that takes RTK reducer builder to add cases\n */\n\n/**\n * Create Redux reducer using Redux-Toolkit entities\n * @param {Opts} opts Options\n */\nexport function createEntityReducer({\n entity: { name, type, adapter, getState: getEntityState },\n actions,\n initialState = {},\n persist = false,\n persistConfig = {\n key: type,\n version: 1,\n storage,\n whitelist: [\"ids\", \"entities\", \"lastUpdate\", \"startAfter\"],\n },\n extraReducers = () => {},\n}) {\n if (!isFunction(getEntityState) || isUndefined(adapter) || !isString(type)) {\n throw new Error(`entity is required`);\n }\n if (isUndefined(actions.getMany)) {\n throw new Error(`getMany action is required`);\n }\n if (isUndefined(actions.reset)) {\n throw new Error(`reset action is required`);\n }\n\n const getInitialState = () =>\n adapter.getInitialState({\n ...INITIAL_LOADING_STATE,\n lastUpdate: null,\n startAfter: null,\n idsBySearch: {},\n ...initialState,\n });\n\n const searchInitialState = () => ({\n ids: [],\n lastUpdate: null,\n startAfter: null,\n });\n\n const reducer = createReducer(getInitialState(), (builder) => {\n builder.addCase(actions.reset, (state, action) => {\n if (action.payload) {\n const search = stringify(action.payload);\n state.idsBySearch[search] = searchInitialState();\n } else {\n adapter.removeAll(state);\n state.requests = INITIAL_LOADING_STATE.requests;\n state.lastUpdate = null;\n state.startAfter = null;\n state.idsBySearch = {};\n }\n });\n\n buildAsyncThunkReducer(builder, actions.getMany, (state, action) => {\n if (isUndefined(action?.payload)) {\n throw new Error(`${name} getMany payload undefined`);\n }\n if (action?.payload === null) return;\n const {\n data,\n startAfter = \"\",\n searchArgs,\n updateState = true,\n } = action.payload;\n if (updateState && isObject(data)) {\n adapter.upsertMany(state, data);\n state.lastUpdate = new Date().toISOString();\n state.startAfter = startAfter;\n if (!isUndefined(searchArgs)) {\n const search = stringify(searchArgs);\n const { ids: searchIds } =\n state.idsBySearch[search] || searchInitialState();\n state.idsBySearch[search] = {\n ids: uniq(searchIds.concat(data.map(adapter.selectId))),\n lastUpdate: new Date().toISOString(),\n startAfter: startAfter,\n };\n }\n }\n });\n if (actions.getOne) {\n buildAsyncThunkReducer(builder, actions.getOne, (state, action) => {\n if (isUndefined(action?.payload)) {\n throw new Error(`${name} get payload undefined`);\n }\n if (action?.payload === null) return;\n const { data, updateState = true } = action.payload;\n if (updateState && isObject(data)) adapter.upsertOne(state, data);\n });\n }\n if (actions.createOne) {\n buildAsyncThunkReducer(builder, actions.createOne, (state, action) => {\n if (isUndefined(action?.payload)) {\n throw new Error(`${name} create payload undefined`);\n }\n if (action?.payload === null) return;\n const { data, updateState = true } = action.payload;\n if (updateState && isObject(data)) adapter.upsertOne(state, data);\n });\n }\n if (actions.updateOne) {\n buildAsyncThunkReducer(builder, actions.updateOne, (state, action) => {\n if (isUndefined(action?.payload)) {\n throw new Error(`${name} update payload undefined`);\n }\n if (action?.payload === null) return;\n const { data, updateState = true } = action.payload;\n if (updateState && isObject(data)) adapter.upsertOne(state, data);\n });\n }\n if (actions.deleteOne) {\n buildAsyncThunkReducer(builder, actions.deleteOne, (state, action) => {\n if (isUndefined(action?.payload)) {\n throw new Error(`${name} delete payload undefined`);\n }\n if (action?.payload === null) return;\n const { data, updateState = true } = action.payload;\n if (updateState && data) {\n adapter.removeOne(state, data);\n const idsBySearch = current(state.idsBySearch);\n Object.entries(idsBySearch).forEach(([key, value]) => {\n if (value.ids.includes(data))\n state.idsBySearch[key].ids = remove(value.ids, data);\n });\n }\n });\n }\n extraReducers(builder, adapter);\n });\n\n return persist ? persistReducer(persistConfig, reducer) : reducer;\n}\n\nexport default createEntityReducer;\n","import { useType, useTypes } from \"./hooks\";\nimport typeState from \"./state\";\nimport TypeDescription from \"./TypeDescription\";\nimport TypeSelect from \"./TypeSelect\";\nimport TypeTableFilter from \"./TypeTableFilter\";\n\nconst Type = {\n // Backend API\n api: typeState.api,\n // State\n actions: typeState.actions,\n selectors: typeState.entity.selectors,\n // Hooks\n useAll: useTypes,\n useOne: useType,\n // Components\n Select: TypeSelect,\n Description: TypeDescription,\n TableFilter: TypeTableFilter,\n};\nexport default Type;\n","import _, { sortBy } from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport { useUsers } from \"./hooks\";\n\nconst RealUserSelect = React.forwardRef(\n (\n {\n value,\n realUser = true,\n internal = false,\n isChampion,\n isContractor,\n isMulti = false,\n placeholder = \"Select User...\",\n hasMeButton = false,\n onChange,\n label,\n shouldValuesSortLikeOptions = false,\n isDisabled,\n ...props\n },\n ref,\n ) => {\n const { users, loading: loadingUsers } = useUsers();\n\n const user = useSelector((state) => state.auth.user);\n\n const _options = (realUser ? sortBy(users, \"id\") : [])\n .filter((e) => {\n if (!_.isUndefined(isChampion) && isChampion !== e.isChampion)\n return false;\n if (!_.isUndefined(isContractor) && isContractor !== e.isContractor)\n return false;\n if (e?.isInternalUser === true && internal === false) return false;\n\n return e.inactive === false || e.id === value;\n })\n .map((f) => {\n return { label: f.id + \": \" + f.name, value: f.id };\n });\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = shouldValuesSortLikeOptions\n ? _options.filter((o) => value.includes(o.value))\n : value.map((v) => _.find(_options, (o) => o.value === v));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n let fs = (\n \n );\n\n return (\n <>\n {hasMeButton ? (\n <>\n {label ? {label} : null}\n \n {fs}\n \n {hasMeButton ? (\n \n ) : null}\n \n \n \n ) : (\n <>\n {label ? {label} : null}\n {fs}\n \n )}\n \n );\n },\n);\n\nRealUserSelect.displayName = \"RealUserSelect\";\nexport default RealUserSelect;\n","import { createEntityHooks } from \"../../common/entity\";\nimport state from \"./state\";\n\nexport const {\n useEntities: useNotificationGroups,\n useEntity: useNotificationGroup,\n} = createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n});\n","import { entityDescription } from \"../common/entity\";\nimport { useUser } from \"./hooks\";\n\nconst UserDescription = entityDescription({\n name: \"user\",\n useEntity: useUser,\n label: (u) => u.name,\n});\n\nexport default UserDescription;\n","import _, { sortBy } from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport { useUsers } from \"./hooks\";\nimport Pseudo from \"./pseudo\";\n\nconst UserSelect = React.forwardRef(\n (\n {\n value,\n pseudo = false,\n realUser = true,\n internal = false,\n isChampion,\n isContractor,\n canPerformCodeReview,\n isMulti = false,\n placeholder = \"Select User...\",\n hasMeButton = false,\n onChange,\n label,\n shouldValuesSortLikeOptions = false,\n isDisabled,\n ...props\n },\n ref,\n ) => {\n const { users, loading: loadingUsers } = useUsers();\n const { pseudos, loading: loadingPseudoUsers } = Pseudo.useAll();\n\n const user = useSelector((state) => state.auth.user);\n\n const _options = (realUser ? sortBy(users, \"id\") : [])\n .concat(pseudo ? pseudos : [])\n .filter((e) => {\n if (!_.isUndefined(isChampion) && isChampion !== e.isChampion)\n return false;\n if (\n !_.isUndefined(canPerformCodeReview) &&\n canPerformCodeReview !== e.canPerformCodeReview\n )\n return false;\n if (!_.isUndefined(isContractor) && isContractor !== e.isContractor)\n return false;\n if (e?.isInternalUser === true && internal === false) return false;\n\n return e.inactive === false || e.id === value;\n })\n .map((f) => {\n return { label: f.id + \": \" + f.name, value: f.id };\n });\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = shouldValuesSortLikeOptions\n ? _options.filter((o) => value.includes(o.value))\n : value.map((v) => _.find(_options, (o) => o.value === v));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n let fs = (\n \n );\n\n return (\n <>\n {hasMeButton ? (\n <>\n {label ? {label} : null}\n \n {fs}\n \n {hasMeButton ? (\n \n ) : null}\n \n \n \n ) : (\n <>\n {label ? {label} : null}\n {fs}\n \n )}\n \n );\n },\n);\n\nUserSelect.displayName = \"UserSelect\";\nexport default UserSelect;\n","import { bool, object, string } from \"yup\";\n\nconst notificationOption = () =>\n string().oneOf([\"A\", \"N\", \"P\"]).default(\"N\").required();\n\nconst notificationGroupSchema = object().shape({\n id: string()\n .label(\"Id\")\n .required()\n .max(8)\n .transform((v) => `${v}`.toUpperCase()),\n description: string().label(\"Description\").max(30).required(),\n groupId: string().label(\"Group\"),\n pseudoUserId: string().label(\"Pseudo User\"),\n newProjectSetting: notificationOption().label(\"Notify on new issue\"),\n leaveTeamSetting: notificationOption().label(\n \"Notify when issue leaves team to another\",\n ),\n assignedSetting: notificationOption().label(\n \"Notify when issues are assigned\",\n ),\n priorityChangedSetting: notificationOption().label(\n \"Notify when priority changes\",\n ),\n qaStatusChangedSetting: string()\n .oneOf([\"Y\", \"N\", \"F\"])\n .required()\n .label(\"Notify when QA status changes\")\n .default(\"N\"),\n inactive: bool().required().default(false),\n});\n\nexport default notificationGroupSchema;\n","import React, { useMemo } from \"react\";\nimport { Button, Col, Form, InputGroup } from \"react-bootstrap\";\nimport { MdDelete } from \"react-icons/md\";\nimport { useDispatch } from \"react-redux\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n} from \"../../common/forms\";\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport Group from \"../groups\";\nimport UserDescription from \"../UserDescription\";\nimport UserLink from \"../UserLink\";\nimport UserSelect from \"../UserSelect\";\nimport notificationGroupSchema from \"./notificationGroupSchema\";\nimport notificationGroupState from \"./state\";\n\nexport default function NotificationGroupEditor({\n values = {},\n onSubmit,\n isNew = false,\n isLoading,\n}) {\n return (\n <>\n \n \n \n {!isNew ? (\n \n \n \n \n

Members

\n \n
\n \n \n \n \n \n \n
\n ) : null}\n \n );\n}\n\nfunction NotificationGroupForms({ isNew }) {\n const { submitForm } = useFormContext();\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

Settings

\n \n
\n \n \n \n \n \n \n \n \n \n \n {\"Notify when QA status changes\"}\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n
\n );\n}\n\nfunction PseudoUser({ name, ...props }) {\n const {\n field,\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled },\n } = useFormContext();\n\n return (\n \n \n \n \n \n );\n}\n\nfunction MemberTable({ id, values, isLoading }) {\n const dispatch = useDispatch();\n\n const columns = useMemo(\n () => [\n {\n id: \"type\",\n Header: \"Type\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: (t) => {\n switch (t.type) {\n case \"U\":\n return \"User\";\n case \"E\":\n return \"Email\";\n default:\n return \"Error: \" + t.type;\n }\n },\n },\n {\n id: \"key\",\n Header: \"Member\",\n accessor: \"key\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: member } }) =>\n member.type === \"U\" ? (\n <>\n {\" \"}\n \n \n ) : (\n value\n ),\n },\n {\n id: \"edit\",\n Header: \"\",\n accessor: \"key\",\n disableSortBy: true,\n Cell: ({ row: { original: member } }) => {\n return (\n \n dispatch(\n notificationGroupState.actions.deleteMember({\n notificationGroupId: id,\n ...member,\n }),\n )\n }\n disabled={isLoading}\n title=\"Delete member\"\n size=\"sm\"\n variant=\"link\"\n className=\"text-reset py-0\"\n >\n \n \n );\n },\n },\n ],\n [dispatch, id, isLoading],\n );\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n dispatch(\n notificationGroupState.actions.addMember({\n notificationGroupId: id,\n ...values,\n }),\n )\n }\n isDisabled={isLoading}\n defaultValues={{ type: \"U\" }}\n >\n \n \n \n \n \n );\n}\n\nfunction AddMemberForms() {\n const { watch, submitForm } = useFormContext();\n const type = watch(\"type\");\n return (\n
\n \n \n \n \n \n \n \n \n {type === \"U\" ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n \n
\n );\n}\n\nfunction NotificationSelect({ name, id = name, label, ...props }) {\n return (\n \n \n \n \n \n {label}\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useNotificationGroup, useNotificationGroups } from \"./hooks\";\nimport NotificationGroupEditor from \"./NotificationGroupEditor\";\nimport NotificationGroupNew from \"./NotificationGroupNew\";\nimport NotificationGroupTable from \"./NotificationGroupTable\";\nimport notificationGroupState from \"./state\";\n\nconst NotificationGroup = {\n // API\n api: notificationGroupState.api,\n // State\n actions: notificationGroupState.actions,\n selectors: notificationGroupState.entity.selectors,\n // Hooks\n useOne: useNotificationGroup,\n useAll: useNotificationGroups,\n // Components\n New: NotificationGroupNew,\n Editor: NotificationGroupEditor,\n Table: NotificationGroupTable,\n};\n\nexport default NotificationGroup;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useNotificationGroup } from \"./hooks\";\nimport NotificationGroupEditor from \"./NotificationGroupEditor\";\n\nexport default function NotificationGroupNew({ onNew = () => {} }) {\n const { isManager, isAdmin } = useSelector((state) => state.auth);\n\n const { createOne } = useNotificationGroup();\n\n if (!(isManager || isAdmin)) return null;\n\n return (\n createOne(values).then(onNew)}\n />\n );\n}\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\n\nexport default function NotificationGroupTable({\n notificationGroups,\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n Header: \"Code\",\n accessor: \"id\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import React from \"react\";\nimport {\n Alert,\n Col,\n Dropdown,\n DropdownButton,\n Form,\n InputGroup,\n} from \"react-bootstrap\";\nimport { BiEdit } from \"react-icons/bi\";\nimport { useSelector } from \"react-redux\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\n\nexport default function ServerLoginEditor({\n values: { id, serverLogin, serverLoginKeyInfo, serverLoginPasswordInfo },\n isDisabled = false,\n onSubmit,\n serverLoginPassword,\n}) {\n return (\n \n \n \n );\n}\n\nfunction ServerLoginForm({\n serverLoginPassword,\n serverLoginKeyInfo,\n serverLoginPasswordInfo,\n isNew,\n}) {\n const { isAdmin } = useSelector((state) => state.auth);\n const { submitForm } = useFormContext();\n\n useFormsKeys();\n return (\n
\n \n \n \n Username\n \n \n {submitForm ? (\n }\n id=\"input-group-dropdown-2\"\n >\n {!isNew ? (\n <>\n submitForm(\"key\")}>\n Generate new keys\n \n submitForm(\"password\")}>\n Generate new password\n \n submitForm(\"delete\")}>\n Delete\n \n \n ) : (\n submitForm(\"create\")}>\n Add\n \n )}\n \n ) : null}\n \n \n \n {isNew ? null : (\n \n \n \n Stamp\n \n \n \n \n {serverLoginKeyInfo}\n \n \n \n \n {serverLoginPasswordInfo}\n \n \n \n )}\n \n\n {serverLoginPassword ? (\n \n \n \n \n \n Generated Password\n \n \n \n \n \n \n \n \n \n \n Please note the password, it will not be available again.\n \n \n \n \n \n \n ) : null}\n
\n );\n}\n","import { object, string } from \"yup\";\n\nconst userSchema = object().shape({\n name: string().label(\"Description\").required(),\n});\n\nexport default userSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport Team from \"./teams\";\nimport userSchema from \"./userSchema\";\nimport UserSelect from \"./UserSelect\";\n\nexport default function UserEditor({ values, onSubmit, isDisabled = false }) {\n return (\n \n \n \n );\n}\n\nfunction UserForm() {\n const { isAdmin } = useSelector((state) => state.auth);\n const { submitForm } = useFormContext();\n useFormsKeys();\n const isDisabled = true;\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 \n \n \n \n \n \n \n \n \n
\n );\n}\n","import _ from \"lodash\";\nimport React, { useMemo, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport userState from \"./state\";\n\nfunction validateEmail(email) {\n const 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\nconst groups = {\n 1: \"Add\",\n 2: \"Related Emails\",\n 3: \"Related Users\",\n 8: \"Me\",\n 9: \"Other Users\",\n};\n\nexport default function UserEmailSelect({\n users = [],\n emails = [],\n value: initialValues = [],\n ...props\n}) {\n const [input, setInput] = useState(\"\");\n\n const usersEntities = useSelector(userState.entity.selectors.selectEntities);\n const loggedInUser = useSelector((state) => state.auth.user);\n const usersOptions = useMemo(() => {\n const createOption = (id, groupId, label) => {\n const user = usersEntities?.[id];\n if (!user || !user?.email) return null;\n return {\n label: `${user.name}${label ? ` (${label})` : \"\"}`,\n value: user.email,\n groupId,\n };\n };\n\n const createOptionsWithManager = (id, groupId) => {\n let options = [createOption(id, groupId)];\n\n const user = usersEntities?.[id];\n const managerOption = createOption(user?.managerId, groupId, \"Manager\");\n if (managerOption) options.push(managerOption);\n\n return options.filter((o) => o);\n };\n\n const argsOptions = _.flatten(\n users\n .filter((u) => u?.id)\n .map((u) => createOptionsWithManager(u.id, `3:${u.label}`)),\n );\n\n const meOptions = createOptionsWithManager(loggedInUser, 8);\n\n const allUsersOptions = _.sortBy(\n Object.entries(usersEntities)\n .map(([id]) => {\n return createOption(id, 9);\n })\n .filter((u) => u?.value),\n \"label\",\n );\n\n return [].concat(argsOptions, meOptions, allUsersOptions);\n }, [users, usersEntities, loggedInUser]);\n\n const emailsOptions = useMemo(() => {\n const validEmails = emails?.filter((e) =>\n _.isString(e) ? validateEmail(e) : e,\n );\n\n if (validEmails?.length)\n return validEmails\n .map((e) => {\n if (_.isString(e)) {\n const email = String(e).toLowerCase();\n return { label: email, value: email, groupId: 2 };\n } else {\n return e;\n }\n })\n .filter((e) => e?.value);\n else return [];\n }, [emails]);\n\n const options = useMemo(() => {\n const inputString = String(input).toLowerCase();\n const inputOption = validateEmail(inputString)\n ? [{ label: inputString, value: inputString, groupId: 1 }]\n : [];\n\n return [...emailsOptions, ...usersOptions, ...inputOption];\n }, [emailsOptions, usersOptions, input]);\n\n const values = useMemo(\n () =>\n initialValues\n ? initialValues\n ?.map(\n (v) =>\n _.find(options, (o) => o.value === v) || { label: v, value: v },\n )\n .filter((e) => e?.value)\n : [],\n [initialValues, options],\n );\n\n const groupedOptions = useMemo(\n () =>\n _.sortBy(\n Object.entries(_.groupBy(options, \"groupId\")).map(([key, value]) => {\n return {\n groupId: key,\n label: groups?.[key] || key.split(\":\")[1] || \"Unknown\",\n options: value,\n };\n }),\n \"groupId\",\n ),\n [options],\n );\n\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport state from \"./state\";\n\nexport const { useEntities: useUserGroupings, useEntity: useUserGrouping } =\n createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n });\n","import { bool, object, string } from \"yup\";\n\nconst userGroupingSchema = object().shape({\n id: string()\n .label(\"Id\")\n .required()\n .max(8)\n .transform((v) => `${v}`.toUpperCase()),\n description: string().label(\"Description\").max(30).required(),\n isInactive: bool().required().default(false),\n});\n\nexport default userGroupingSchema;\n","import React, { useMemo } from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\nimport { MdDelete } from \"react-icons/md\";\nimport { useDispatch } from \"react-redux\";\n\nimport { Forms, FormsField, useFormContext } from \"../../common/forms\";\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport TeamDescription from \"../teams/TeamDescription\";\nimport TeamSelect from \"../teams/TeamSelect\";\nimport UserDescription from \"../UserDescription\";\nimport UserLink from \"../UserLink\";\nimport UserSelect from \"../UserSelect\";\nimport userGroupingState from \"./state\";\nimport userGroupingSchema from \"./userGroupingSchema\";\n\nexport default function UserGroupingEditor({\n values = {},\n onSubmit,\n isNew = false,\n isLoading,\n}) {\n return (\n <>\n \n \n \n {!isNew ? (\n \n \n \n \n

Members

\n \n
\n \n \n \n \n \n \n
\n ) : null}\n \n );\n}\n\nfunction UserGroupingForms({ isNew }) {\n const { submitForm } = useFormContext();\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\nfunction MemberTable({ id, values, isLoading }) {\n const dispatch = useDispatch();\n\n const columns = useMemo(\n () => [\n {\n id: \"type\",\n Header: \"Type\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: (t) => {\n switch (t.type) {\n case \"U\":\n return \"User\";\n case \"T\":\n return \"Team\";\n default:\n return \"Error: \" + t.type;\n }\n },\n },\n {\n id: \"key\",\n Header: \"Member\",\n accessor: \"keyField\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: member } }) =>\n member.type === \"U\" ? (\n <>\n {\" \"}\n \n \n ) : (\n <>\n \n \n ),\n },\n {\n id: \"edit\",\n Header: \"\",\n accessor: \"key\",\n disableSortBy: true,\n Cell: ({ row: { original: member } }) => {\n return (\n \n dispatch(\n userGroupingState.actions.deleteMember({\n userGroupingId: id,\n ...member,\n }),\n )\n }\n disabled={isLoading}\n title=\"Delete member\"\n size=\"sm\"\n variant=\"link\"\n className=\"text-reset py-0\"\n >\n \n \n );\n },\n },\n ],\n [dispatch, id, isLoading],\n );\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n dispatch(\n userGroupingState.actions.addMember({\n userGrouping: id,\n ...values,\n }),\n )\n }\n isDisabled={isLoading}\n defaultValues={{ type: \"U\" }}\n >\n \n \n \n \n \n );\n}\n\nfunction AddMemberForms() {\n const { watch, submitForm } = useFormContext();\n const type = watch(\"type\");\n return (\n
\n \n \n \n \n \n \n \n \n {type === \"U\" ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n \n
\n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useUserGroupings } from \"./hooks\";\n\nconst UserGroupingSelect = entitySelect({\n name: \"userGrouping\",\n useEntities: useUserGroupings,\n});\n\nexport default UserGroupingSelect;\n","import { useUserGrouping, useUserGroupings } from \"./hooks\";\nimport userGroupingState from \"./state\";\nimport UserGroupingEditor from \"./UserGroupingEditor\";\nimport UserGroupingNew from \"./UserGroupingNew\";\nimport UserGroupingSelect from \"./UserGroupingSelect\";\nimport UserGroupingTable from \"./UserGroupingTable\";\n\nconst UserGrouping = {\n // API\n api: userGroupingState.api,\n // State\n actions: userGroupingState.actions,\n selectors: userGroupingState.entity.selectors,\n // Hooks\n useOne: useUserGrouping,\n useAll: useUserGroupings,\n // Components\n New: UserGroupingNew,\n Editor: UserGroupingEditor,\n Table: UserGroupingTable,\n Select: UserGroupingSelect,\n};\n\nexport default UserGrouping;\n","import React from \"react\";\n\nimport { useUserGrouping } from \"./hooks\";\nimport UserGroupingEditor from \"./UserGroupingEditor\";\n\nexport default function UserGroupingNew({ onNew = () => {} }) {\n const { createOne } = useUserGrouping();\n return (\n createOne(values).then(onNew)}\n />\n );\n}\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\n\nexport default function UserGroupingTable({ userGroupings, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Code\",\n accessor: \"id\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import _ from \"lodash\";\nimport { useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport userState from \"./state\";\n\nexport function useUserRate({ id, crId, projectId, canGet = false }) {\n const loading = useSelector((state) => state.users.users.requests.loading);\n const userRate = useSelector((state) => state.users.users.rate);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (_.isString(id) && canGet)\n dispatch(userState.actions.getRate({ id: id, crId, projectId }));\n }, [id, crId, projectId, canGet, dispatch]);\n\n return {\n loading,\n userRate,\n };\n}\n\nexport default useUserRate;\n","import Group from \"./groups\";\nimport { useUser, useUsers } from \"./hooks\";\nimport NotificationGroup from \"./notificationGroups\";\nimport Pseudo from \"./pseudo\";\nimport ServerLoginEditor from \"./ServerLoginEditor\";\nimport userState from \"./state\";\nimport Team from \"./teams\";\nimport UserDescription from \"./UserDescription\";\nimport UserEditor from \"./UserEditor\";\nimport UserEmailSelect from \"./UserEmailSelect\";\nimport UserGrouping from \"./userGroupings\";\nimport UserLink from \"./UserLink\";\nimport UserModal from \"./UserModal\";\nimport UserSelect from \"./UserSelect\";\nimport UserTable from \"./UserTable\";\nimport UserTableFilter from \"./UserTableFilter\";\n\nexport { useUserRate } from \"./useUserRate\";\n\nconst User = {\n // API\n api: userState.api,\n // State\n actions: userState.actions,\n selectors: userState.entity.selectors,\n // Hooks\n useOne: useUser,\n useAll: useUsers,\n // Components\n Table: UserTable,\n Link: UserLink,\n Modal: UserModal,\n Select: UserSelect,\n EmailSelect: UserEmailSelect,\n Name: UserDescription,\n TableFilter: UserTableFilter,\n Editor: UserEditor,\n ServerLoginEditor: ServerLoginEditor,\n // Related Entity Objects\n Team: Team,\n Group: Group,\n Pseudo: Pseudo,\n NotificationGroup: NotificationGroup,\n UserGrouping: UserGrouping,\n};\n\nexport default User;\n","import React, { useMemo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nimport Mailto from \"../common/details/Mailto\";\nimport Tel from \"../common/details/Tel\";\nimport { formatPhone } from \"../common/functions/phone\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Team from \"./teams\";\nimport UserLink from \"./UserLink\";\n\nexport default function UserTable({ users, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"User\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Name\",\n accessor: \"name\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Team\",\n accessor: \"teamId\",\n Filter: Team.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Manager\",\n accessor: \"managerId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Location\",\n accessor: \"locationDescription\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Phones\",\n Header: \"Phone(s)\",\n disableFilter: true,\n accessor: (contact) => {\n const phones = [\n {\n phone: formatPhone(\n contact?.phoneHome,\n contact?.phoneHomeExtension,\n ),\n type: \"Home\",\n },\n\n {\n phone: formatPhone(\n contact?.phoneWork,\n contact?.phoneWorkExtension,\n ),\n type: \"Work\",\n },\n {\n phone: formatPhone(\n contact?.phoneCell,\n contact?.phoneCellExtension,\n ),\n type: \"Cell\",\n },\n {\n phone: formatPhone(\n contact?.phoneOther,\n contact?.phoneOtherExtension,\n ),\n type: \"Other\",\n },\n ];\n return phones.filter((p) => p.phone);\n },\n\n Cell: ({ value }) => (\n \n \n {value.map((p, index) => (\n \n \n \n ({p.type})\n \n \n ))}\n \n \n ),\n },\n {\n id: \"Email\",\n Header: \"Email\",\n accessor: \"email\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { entityDescription } from \"../../common/entity\";\nimport { useGroup } from \"./hooks\";\n\nconst GroupDescription = entityDescription({\n name: \"group\",\n useEntity: useGroup,\n});\n\nexport default GroupDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useGroups } from \"./hooks\";\n\nconst GroupSelect = entitySelect({\n name: \"group\",\n useEntities: useGroups,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default GroupSelect;\n","import { entitySelect } from \"../../common/entity\";\nimport { useTypes } from \"./hooks\";\n\nconst TypeSelect = entitySelect({\n name: \"projectType\",\n useEntities: useTypes,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default TypeSelect;\n","import shark from \"../../apis/shark\";\n\nexport function getSettingsAPI() {\n const payload = {\n command: \"getSettings\",\n };\n\n return shark.post(payload);\n}\n\nexport function updateSettingsAPI(changes) {\n const payload = {\n command: \"updateSettings\",\n ...changes,\n };\n\n return shark.post(payload);\n}\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport { toast } from \"react-toastify\";\n\nimport fs from \"../../common/functions\";\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../common/functions/state\";\nimport { getSettingsAPI, updateSettingsAPI } from \"./api\";\n\nexport const getSettings = createAsyncThunk(\n \"settings/get\",\n async (_, { getState, requestId }) => {\n if (!testStateLoading(getState().settings, requestId)) return;\n\n const { responseData } = await getSettingsAPI();\n return responseData;\n },\n);\n\nexport const updateSettings = createAsyncThunk(\n \"settings/update\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().settings, requestId)) return;\n\n //payload will represent the new settings, check if they are the different\n const currentSettings = getState().settings.settings;\n const changes = fs.difference(payload, currentSettings);\n if (_.isEmpty(changes)) return;\n const { responseData } = await updateSettingsAPI(changes);\n return responseData;\n },\n);\n\nconst settingsSlice = createSlice({\n name: \"settings\",\n initialState: {\n ...INITIAL_LOADING_STATE,\n settings: {},\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, getSettings, (state, action) => {\n state.settings = action.payload;\n });\n buildAsyncThunkReducer(builder, updateSettings, (state, action) => {\n if (action.payload) {\n state.settings = { ...state.settings, ...action.payload };\n toast.success(\"Settings saved\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n },\n});\n\nexport const reducer = settingsSlice.reducer;\n\nexport const actions = { getSettings, updateSettings };\n","import storage from \"localforage\";\nimport { persistReducer } from \"redux-persist\";\n\nimport { reducer } from \"./slices\";\n\nconst persistConfig = {\n key: \"settings\",\n version: 1,\n storage,\n whitelist: [\"settings\", \"version\"],\n};\n\nexport default persistReducer(persistConfig, reducer);\n","import reducer from \"./reducers\";\n\nexport { actions as settingsActions } from \"./slices\";\n\nexport default reducer;\n","import { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { appActions } from \"./state\";\n\nfunction useAppCanStateExpire() {\n const canStateExpire = useSelector(\n (state) => state.app.canStateExpire.canStateExpire,\n );\n\n return canStateExpire;\n}\n\nfunction useSet(key) {\n const dispatch = useDispatch();\n const setCanStateExpire = useCallback(\n (value) => dispatch(appActions.setCanStateExpire({ key, value })),\n [dispatch, key],\n );\n return setCanStateExpire;\n}\n\nuseAppCanStateExpire.set = useSet;\nexport default useAppCanStateExpire;\n","import { useRef, useState } from \"react\";\nimport isEqual from \"react-fast-compare\";\n\nexport default function useMemoCompare(memoFn, deps) {\n const ref = useRef({});\n const [render, setRender] = useState(0);\n if (!isEqual(ref.current.deps, deps)) {\n ref.current = { value: memoFn(), deps };\n // Force Re-Render on ref change\n setRender(render + 1);\n }\n return ref.current.value;\n}\n","import shark from \"../../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark\n .post({ command: \"getGroupByPrograms\" }, { config: { timeout: 0 } })\n .then((r) => {\n return { data: r.responseData.programs };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"program\",\n type: \"users/groups/programs\",\n getState: (state) => state.users.groups.programs,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst programState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default programState;\n","import React from \"react\";\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\nimport { Col, Dropdown, Form, Row } from \"react-bootstrap\";\n\nimport useReinitState from \"../hooks/useReinitState\";\nimport ContextMenu from \"../popovers/ContextMenu\";\n\nexport default function TableHeaderContextMenu({\n show,\n isLoading,\n target,\n columns,\n onHide,\n onSortChange,\n onGroupBy,\n onExportToCSV,\n}) {\n return (\n \n {isLoading ? (\n \n \n Loading...\n \n \n ) : (\n <>\n \n \n \n Export to CSV\n \n \n \n {onGroupBy ? (\n \n \n \n \n Toggle Group By\n \n \n \n ) : null}\n \n \n \n \n \n \n \n )}\n \n );\n}\n\nfunction TableLayout({ columns: columnsStart, onChange }) {\n const [columns, setColumns] = useReinitState(\n columnsStart.filter((c) => c.id !== \"tableSelect\"),\n );\n const item = columnCheckListItem(columns);\n const reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n };\n\n function onDragEnd(result) {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n\n const items = reorder(\n columns,\n result.source.index,\n result.destination.index,\n );\n\n setColumns(items);\n onChange(items.map((i) => i.id));\n }\n\n return (\n <>\n Edit Columns\n \n \n {(provided) => (\n
\n {columns.map((column, index) => (\n \n {item}\n \n ))}\n {provided.placeholder}\n
\n )}\n
\n
\n \n );\n}\n\nconst columnCheckListItem = (columns) =>\n function ColumnCheckList(provided, snapshot, rubric) {\n const column = columns[rubric.source.index];\n return (\n \n \n \n );\n };\n","/* eslint-disable react/jsx-key */\n\nimport React, { useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { FaSort, FaSortDown, FaSortUp } from \"react-icons/fa\";\nimport { IoMdArrowDropdown, IoMdArrowDropright } from \"react-icons/io\";\n\nimport TableHeaderContextMenu from \"./TableHeaderContextMenu\";\n\nexport default function TableHeaders({\n isLoading,\n hasFilter,\n exportTableToCSV,\n table: {\n headerGroups,\n allColumns,\n setColumnOrder,\n toggleGroupBy,\n getToggleAllRowsExpandedProps,\n isAllRowsExpanded,\n },\n setGroupBy,\n children,\n}) {\n const [showContextMenu, setShowContextMenu] = useState(null);\n const [target, setTarget] = useState(null);\n\n function handleHeaderContextMenu(e, column) {\n e.preventDefault();\n setTarget(e.target);\n setShowContextMenu(column);\n }\n\n return (\n
\n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n handleHeaderContextMenu(e, column)}\n >\n \n \n {column.render(\"Header\")}\n {column.isGrouped ? (\n isAllRowsExpanded ? (\n \n ) : (\n \n )\n ) : (\n \"\"\n )}\n \n {column.canSort ? (\n \n \n {column.canSort ? (\n column.isSorted ? (\n column.isSortedDesc ? (\n \n ) : (\n \n )\n ) : (\n \n )\n ) : (\n \"\"\n )}\n \n \n ) : null}\n \n \n ))}\n \n ))}\n {hasFilter\n ? headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => (\n \n {column.canFilter ? column.render(\"Filter\") : null}\n \n ))}\n \n ))\n : null}\n {children}\n {\n setShowContextMenu(null);\n }}\n onSortChange={setColumnOrder}\n onGroupBy={\n showContextMenu?.canGroupBy &&\n showContextMenu.disableGroupBy === false\n ? () => {\n const id = showContextMenu?.id;\n setGroupBy((gb) => {\n if (gb.includes(id)) {\n return gb.filter((g) => g !== id);\n } else return gb.concat([id]);\n });\n toggleGroupBy(id);\n setShowContextMenu(null);\n }\n : null\n }\n onExportToCSV={exportTableToCSV}\n />\n \n );\n}\n","function getRowValuesByColumnID(row1, row2, columnId) {\n return [row1.values[columnId], row2.values[columnId]];\n}\n\nfunction sortStringValues(aV, bV) {\n let a = String(aV)?.split(\"\").filter(Boolean);\n let b = String(bV)?.split(\"\").filter(Boolean);\n\n while (a.length && b.length) {\n let aa = a.shift();\n let bb = b.shift();\n\n let alower = aa.toLowerCase();\n let blower = bb.toLowerCase();\n\n // Case insensitive comparison until characters match\n if (alower > blower) {\n return 1;\n }\n if (blower > alower) {\n return -1;\n }\n // If lowercase characters are identical\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n return a.length - b.length;\n}\n\nexport function sortString(rowA, rowB, columnId) {\n const [a = \"\", b = \"\"] = getRowValuesByColumnID(rowA, rowB, columnId);\n return sortStringValues(a, b);\n}\n\nexport function sortCustom(rowA, rowB, columnId) {\n function convertValue(v = \"\") {\n if (typeof v !== \"string\") {\n return String(v).padStart(12);\n }\n return v;\n }\n const [a = \"\", b = \"\"] = getRowValuesByColumnID(rowA, rowB, columnId);\n return sortStringValues(convertValue(a), convertValue(b));\n}\n\nexport function sortNumeric(rowA, rowB, columnId) {\n const [a, b] = getRowValuesByColumnID(rowA, rowB, columnId);\n return a > b;\n}\n","import _ from \"lodash\";\nimport React, { useCallback, useMemo } from \"react\";\n\nimport useReinitState from \"../hooks/useReinitState\";\n\nconst REQUIRED_COLUMNS = [\n // Let's make a column for selection\n {\n id: \"tableSelect\",\n // The header can use the table's getToggleAllRowsSelectedProps method\n // to render a checkbox\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
\n \n
\n ),\n // The cell can use the individual row's getToggleRowSelectedProps method\n // to the render a checkbox\n Cell: ({ row }) => (\n
\n \n
\n ),\n },\n];\n\nconst REQUIRED_COLUMNS_IDS = REQUIRED_COLUMNS.map((c) => c.id);\n\nexport default function useColumns({\n columns: columnsDef,\n layout: layoutDef,\n sortBy: sortByDef,\n filters: filtersDef,\n groupBy: groupByDef,\n expanded: expandedDef,\n select: isSelect,\n isLoading,\n}) {\n const [layout] = useReinitState(layoutDef);\n const { columns, columnIds, columnsLookup, hasFilter, hasFooter } = useMemo(\n () => setupColumns(columnsDef),\n [columnsDef],\n );\n\n const getColumn = useCallback((id) => columnsLookup[id], [columnsLookup]);\n\n const { hiddenColumns, columnOrder } = useMemo(() => {\n let requiredCols = [];\n if (isSelect) requiredCols.push(\"tableSelect\");\n\n if (!layout.length)\n return {\n hiddenColumns: _.difference(REQUIRED_COLUMNS_IDS, requiredCols),\n columnOrder: columnIds,\n };\n //Check for invalid columns in the layout\n const invalidLayoutColumns = _.difference(layout, columnIds);\n if (invalidLayoutColumns.length) {\n console.warn(\"Table layout included invalid 'id'\", invalidLayoutColumns);\n }\n\n const layoutWithRequired = [...requiredCols, ...layout];\n return {\n hiddenColumns: _.difference(columnIds, layoutWithRequired),\n columnOrder: layoutWithRequired,\n };\n }, [layout, columnIds, isSelect]);\n\n const initSort = useCallback(\n (c) => (_.isString(c) ? { id: c, desc: false } : c),\n [],\n );\n\n const sortBy = useMemo(\n () =>\n sortByDef\n ? _.isArray(sortByDef)\n ? sortByDef.map(initSort)\n : [initSort(sortByDef)]\n : [],\n [initSort, sortByDef],\n );\n\n const _groupByDef = useMemo(() => {\n const groupBy = !groupByDef\n ? []\n : _.isArray(groupByDef)\n ? groupByDef\n : [groupByDef];\n\n return groupBy.filter((g) => !getColumn(g)?.disableGroupBy);\n }, [groupByDef, getColumn]);\n const [groupBy, setGroupBy] = useReinitState(_groupByDef);\n\n const expanded = useMemo(\n () => (_.isObject(expandedDef) ? expandedDef : {}),\n [expandedDef],\n );\n\n const filters = useMemo(\n () =>\n !filtersDef ? [] : _.isArray(filtersDef) ? filtersDef : [filtersDef],\n [filtersDef],\n );\n\n return useMemo(() => {\n return {\n columns,\n getColumn,\n hasFooter,\n hasFilter,\n initialState: {\n hiddenColumns,\n columnOrder,\n sortBy,\n groupBy: isLoading ? [] : groupBy,\n filters: isLoading ? [] : filters,\n expanded,\n },\n setGroupBy,\n };\n }, [\n columnOrder,\n columns,\n expanded,\n filters,\n getColumn,\n groupBy,\n hasFilter,\n hasFooter,\n hiddenColumns,\n isLoading,\n setGroupBy,\n sortBy,\n ]);\n}\n\nconst DATATYPES = {\n number: {\n format: {\n alignment: {\n horizontal: \"right\",\n },\n },\n getFormattedValue: (value, format = {}) => {\n let v = _.toNumber(value);\n if (_.isNaN(v)) return \"\";\n const { number: { decimals } = {} } = format;\n if (decimals) {\n v = v.toFixed(decimals);\n }\n return v;\n },\n },\n currency: {\n format: {\n alignment: {\n horizontal: \"right\",\n },\n },\n getFormattedValue: (value, format = {}) => {\n let v = _.toNumber(value);\n if (_.isNaN(v)) return \"\";\n const { number: { decimals } = {} } = format;\n if (decimals) {\n v = v.toFixed(decimals);\n }\n return \"$\" + v;\n },\n },\n};\n\nconst IndeterminateCheckbox = React.forwardRef(\n ({ indeterminate, ...rest }, ref) => {\n const defaultRef = React.useRef();\n const resolvedRef = ref || defaultRef;\n\n React.useEffect(() => {\n resolvedRef.current.indeterminate = indeterminate;\n }, [resolvedRef, indeterminate]);\n\n return (\n <>\n \n \n );\n },\n);\n\nfunction setupColumns(columnsDef) {\n let hasFooter = false;\n let hasFilter = false;\n\n function initColumns(columns) {\n return columns.map((colDef) => {\n let col = { ...colDef };\n\n if (_.has(col, \"Footer\")) hasFooter = true;\n\n if (!_.has(col, [\"disableFilters\"]))\n if (_.has(col, \"filter\")) col.disableFilters = false;\n else col.disableFilters = true;\n if (col.disableFilters === false) hasFilter = true;\n\n if (!_.has(col, [\"disableGroupBy\"]))\n if (_.has(col, [\"aggregate\"])) col.disableGroupBy = false;\n else col.disableGroupBy = true;\n\n const dataType = _.get(DATATYPES, col?.dataType);\n if (dataType)\n col.format = {\n ...dataType?.format,\n ...col.format,\n };\n\n const { className, format } = col;\n col.cellClassName = [\n className,\n getAlignmentClassName(format?.alignment),\n ].join(\" \");\n col.headerClassName = [\n className,\n getAlignmentClassName(format?.alignment),\n ].join(\" \");\n\n col.getFormattedValue = _.isFunction(dataType?.getFormattedValue)\n ? dataType.getFormattedValue\n : (value) => value;\n\n if (!_.has(col, \"Cell\")) {\n col.Cell = ({ value, column: { getFormattedValue, format } }) => {\n const formattedValue = getFormattedValue(value, format);\n return _.isUndefined(formattedValue) ? null : formattedValue;\n };\n }\n if (!col.disableGroupBy && !_.has(col, \"Aggregated\")) {\n col.Aggregated = ({\n value,\n column: { getFormattedValue, format, aggregate },\n row: { isExpanded },\n }) => {\n if (\n (isExpanded && aggregate === \"uniqueCount\") ||\n aggregate === \"count\"\n )\n return \"\";\n const formattedValue = getFormattedValue(value, format);\n return `${formattedValue}${aggregate === \"uniqueCount\" ? \"*\" : \"\"}`;\n };\n }\n\n if (_.has(col, \"columns\")) col.columns = initColumns(col.columns);\n return col;\n });\n }\n\n const columns = initColumns([...REQUIRED_COLUMNS, ...columnsDef]);\n const allColumns = _.flatten(columns);\n\n return {\n columns: columns,\n columnIds: allColumns.map((c) => {\n if (!c.id && !_.isString(c.accessor))\n console.warn(\"Table column definition missing 'id'\", c);\n return c.id || c.accessor;\n }),\n columnsLookup: _.keyBy(allColumns, (c) => c?.id || c?.accessor),\n hasFilter,\n hasFooter,\n };\n}\n\nconst ALIGNMENT_HORIZONAL_CLASSNAMES = {\n right: \"text-right\",\n left: \"text-left\",\n center: \"text-center\",\n};\nconst ALIGNMENT_VERTICAL_CLASSNAMES = {\n middle: \"align-middle\",\n top: \"align-top\",\n bottom: \"align-bottom\",\n textBottom: \"align-text-top\",\n textTop: \"align-text-top\",\n};\n\nfunction getAlignmentClassName(alignment = {}) {\n let classNames = [];\n if (_.isEmpty(alignment)) return classNames;\n const horizontal = _.get(\n ALIGNMENT_HORIZONAL_CLASSNAMES,\n alignment?.horizontal,\n );\n if (horizontal) classNames.push(horizontal);\n const vertical = _.get(ALIGNMENT_VERTICAL_CLASSNAMES, alignment?.vertical);\n if (vertical) classNames.push(vertical);\n return classNames;\n}\n","/* eslint-disable react/jsx-key */\n\nimport FileSaver from \"file-saver\";\nimport React, { useEffect, useMemo, useRef } from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport BTable from \"react-bootstrap/Table\";\nimport { IoMdArrowDropdown, IoMdArrowDropright } from \"react-icons/io\";\nimport Skeleton from \"react-loading-skeleton\";\nimport {\n useColumnOrder,\n useExpanded,\n useFilters,\n useGroupBy,\n useRowSelect,\n useSortBy,\n useTable,\n} from \"react-table\";\n\nimport TableHeaders from \"./TableHeaders\";\nimport { sortCustom, sortNumeric, sortString } from \"./tableSortTypes\";\nimport useColumns from \"./useColumns\";\n\nconst sortTypes = {\n string: sortString,\n custom: sortCustom,\n numeric: sortNumeric,\n};\n\nconst defaultCellProps = (cell) => {\n return cell.row.isGrouped && cell.row.isExpanded\n ? { className: \"font-weight-bold \" + cell.column.cellClassName }\n : {};\n};\n\nconst doNothingFunction = () => {};\nconst emptyArray = [];\n\nexport default function Table({\n columns: columnsDef,\n layout: layoutDef = emptyArray,\n initialSort: sortByDef,\n initialGroupBy: groupByDef,\n initialExpanded: expandedDef,\n initialFilters: filtersDef,\n data,\n isLoading,\n skeletonLines = 15,\n onRowDoubleClick = doNothingFunction,\n getRowProps = doNothingFunction,\n getCellProps = defaultCellProps,\n moveFooterToTop = false,\n autoResetSort = false,\n autoResetFilters = false,\n autoResetExpanded = false,\n autoResetSelected = false,\n hasCount = false,\n label = \"Records\",\n getMore,\n hasMore,\n onRefresh,\n refreshLabel,\n isMultiSelect,\n onSelectedRowsChange = doNothingFunction,\n ...props\n}) {\n const tableRef = useRef(null);\n\n const isLoadingForUseColumns = useMemo(\n () => isLoading && !data?.length,\n [data?.length, isLoading],\n );\n\n const { columns, hasFooter, hasFilter, initialState, setGroupBy } =\n useColumns({\n columns: columnsDef,\n layout: layoutDef,\n sortBy: sortByDef,\n filters: filtersDef,\n groupBy: groupByDef,\n expanded: expandedDef,\n select: isMultiSelect,\n isLoading: isLoadingForUseColumns,\n });\n\n const _data = useMemo(() => {\n const d = data || [];\n return isLoading && !d.length\n ? d.concat(Array(skeletonLines).fill({ _skeleton: true }))\n : d;\n }, [isLoading, data, skeletonLines]);\n\n const table = useTable(\n {\n columns,\n data: _data,\n initialState,\n autoResetSortBy: autoResetSort,\n autoResetFilters,\n autoResetExpanded,\n autoResetSelectedRows: autoResetSelected,\n sortTypes,\n },\n useFilters,\n useColumnOrder,\n useGroupBy,\n useSortBy,\n useExpanded,\n useRowSelect,\n );\n const {\n getTableProps,\n rows,\n flatRows,\n prepareRow,\n footerGroups,\n setColumnOrder,\n setHiddenColumns,\n setSortBy,\n selectedFlatRows,\n } = table;\n\n const { hiddenColumns, columnOrder, sortBy } = initialState;\n useEffect(() => {\n setHiddenColumns(hiddenColumns);\n }, [hiddenColumns, setHiddenColumns]);\n\n useEffect(() => {\n setColumnOrder(columnOrder);\n }, [columnOrder, setColumnOrder]);\n\n useEffect(() => {\n setSortBy(sortBy);\n }, [sortBy, setSortBy]);\n\n useEffect(() => {\n const getRowData = (rows, row) => {\n const rowData = row.original ? [row.original] : [];\n return rows.concat(rowData, row?.subRows.reduce(getRowData, []));\n };\n onSelectedRowsChange(selectedFlatRows?.reduce(getRowData, []));\n }, [onSelectedRowsChange, selectedFlatRows]);\n\n function exportTableToCSV() {\n // Add Byte Order Mark to specify UTF-8 for Excel\n // https://stackoverflow.com/questions/42462764/javascript-export-csv-encoding-utf-8-issue\n // https://stackoverflow.com/questions/17879198/adding-utf-8-bom-to-string-blob\n var csv = [\"\\ufeff\"];\n var rows = tableRef.current.querySelectorAll(\"table tr\");\n\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].classList.contains(\"table-filters\")) continue;\n let row = [],\n cols = rows[i].querySelectorAll(\"td, th\");\n\n for (var j = 0; j < cols.length; j++) {\n const text = cols[j].innerText\n .replaceAll('\"', '\"\"')\n .replaceAll(\"'\", \"''\")\n .trim();\n row.push(`\"${text}\"`);\n }\n\n csv.push(row.join(\",\"));\n }\n const csvBlob = new Blob([csv.join(\"\\n\")], {\n type: \"text/csv\",\n encoding: \"UTF-8\",\n });\n // Download CSV file\n FileSaver.saveAs(csvBlob, \"table-data.csv\");\n }\n\n return (\n \n
\n {hasCount ? (\n \n \n !r.isGrouped).length}\n />\n \n \n \n \n \n ) : null}\n\n \n \n \n \n {hasFooter && moveFooterToTop ? (\n \n ) : null}\n \n \n {rows.map((row, idx) => (\n \n ))}\n \n {hasFooter && !moveFooterToTop ? (\n \n \n \n ) : null}\n \n \n \n \n \n );\n}\n\nfunction RefreshButton({ onRefresh, refreshLabel, isLoading }) {\n if (!onRefresh || isLoading) return null;\n const text = refreshLabel ? refreshLabel : \"Refresh \\u27F3\";\n return (\n \n {text}\n \n );\n}\n\nfunction CountInfoButton({\n label,\n records,\n shown,\n isLoading,\n hasMore,\n getMore,\n}) {\n const text = `${records} ${label}${\n records > 0 && records !== shown ? ` (${shown} shown)` : \"\"\n }${isLoading ? \", loading...\" : hasMore ? \"+\" : \"\"}`;\n\n const onClick = getMore ? getMore : null;\n const disabled = getMore ? false : true;\n\n return (\n \n \n {text}\n \n \n );\n}\n\nfunction TableRow({\n row,\n getCellProps,\n isLoading,\n prepareRow,\n getRowProps,\n isMultiSelect,\n onRowDoubleClick,\n}) {\n prepareRow(row);\n\n return (\n {\n if (isMultiSelect) row.toggleRowSelected(!row.isSelected);\n }}\n onDoubleClick={() => onRowDoubleClick(row.original)}\n {...row.getRowProps()}\n {...getRowProps(row)}\n >\n {row.cells.map((cell, idx) => (\n \n ))}\n \n );\n}\n\nfunction TableCell({ row, cell, getCellProps, isLoading }) {\n const value =\n isLoading && row.original?._skeleton ? (\n \n ) : cell.isGrouped ? (\n // Cell is grouped, add an expander and row count\n <>\n {\n e.stopPropagation();\n row.getToggleRowExpandedProps().onClick(e);\n }}\n >\n {row.isExpanded ? : }\n {\" \"}\n {cell.render(\"Cell\")} ({row.subRows.length})\n \n ) : cell.isAggregated ? (\n // Cell is aggregated, use the Aggregated renderer for cell\n cell.render(\"Aggregated\")\n ) : // Row is grouped, but this cell isn't aggregated, show nothing\n cell.row.isGrouped ? null : (\n // Regular cell\n cell.render(\"Cell\")\n );\n\n return (\n \n {value}\n \n );\n}\n\nfunction TableFooters({ footerGroups }) {\n return (\n <>\n {footerGroups.map((group) => (\n \n {group.headers.map((column) => (\n \n ))}\n \n ))}\n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _, { isFunction, isUndefined } from \"lodash\";\nimport moment from \"moment\";\nimport pluralize from \"pluralize\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toast } from \"react-toastify\";\n\nimport app from \"../../app/index\";\nimport useMemoCompare from \"../hooks/useMemoCompare\";\n\n/**\n * Entity Redux actions\n * @typedef {Object} Actions\n * @property {function} reset Redux action to clear entities from state\n * @property {function} getMany Redux action to fetch entities\n * @property {function} getOne Redux action to fetch an entity by ID\n * @property {function} createOne Redux action to create an entity\n * @property {function} updateOne Redux action to update an entity by ID\n * @property {function} deleteOne Redux action to delete an entity by ID\n */\n\n/**\n * Options to define how long before the state entities expire\n * @typedef {Object} Expiration\n * @property {string} key Time type key (days, weeks, months, years)\n * @property {number} value Number of periods\n */\n\n/**\n * @typedef {Object} Opts\n * @property {string} name Entity name\n * @property {Object} selectors Entity selectors\n * @property {Actions} actions Entity actions\n * @property {function} getState Callback that returns scope of state from state\n * @property {Expiration} expire Expiration options\n * @property {function} getToastMessage Function to determine toast message after create,update,delete\n */\n\n/**\n * Create React custom hooks based on entity\n * @param {Opts} opts Options\n */\nexport function createEntityHooks({\n entity: { name, selectors, getState },\n actions: {\n reset: resetAction,\n getMany: getManyAction,\n getOne: getAction,\n createOne: createAction,\n updateOne: updateAction,\n deleteOne: deleteAction,\n } = {},\n expire = { key: \"days\", value: 7 },\n parseId = (id) => id,\n getToastMessage = ({ name, entity: { id }, type }) =>\n `${_.startCase(name)} ${id} ${type}`,\n}) {\n if (!isFunction(getState)) {\n throw new Error(`getState is required`);\n }\n\n const hasGetMany = _.isFunction(getManyAction);\n const useEntities = ({ canGet = false } = {}) => {\n const dispatch = useDispatch();\n const [loaded, setLoaded] = useState(false);\n const entities = useSelector((state) => selectors.selectAll(state));\n const loading = useSelector((state) => getState(state).requests.loading);\n const [error, setError] = useState(null);\n const lastUpdate = useSelector((state) => getState(state).lastUpdate);\n const canExpire = app.useCanStateExpire();\n\n const getCallback = useCallback(\n (args) => dispatch(getManyAction(args)).then(unwrapResult),\n [dispatch],\n );\n\n const shouldGet =\n hasGetMany &&\n !loaded &&\n (canGet === true || (canGet !== false && _.isEmpty(entities))) &&\n (lastUpdate === null ||\n (moment().diff(lastUpdate, expire.key) > expire.value && canExpire)) &&\n error === null;\n\n useEffect(() => {\n if (shouldGet) {\n getCallback()\n .catch(setError)\n .finally(() => setLoaded(false));\n }\n }, [dispatch, shouldGet, getCallback]);\n\n const resetCallback = useCallback(() => {\n dispatch(resetAction());\n setError(null);\n }, [dispatch]);\n\n const _getMany = hasGetMany ? getCallback : undefined;\n\n return {\n [_.camelCase(pluralize(name))]: entities,\n [_.camelCase(\"get-\" + pluralize(name))]: _getMany,\n getMany: _getMany,\n loading: hasGetMany && (loading || shouldGet),\n lastUpdate,\n reset: _.isFunction(resetAction) ? resetCallback : undefined,\n entities,\n error,\n };\n };\n\n const useEntitiesBySearch = ({ canGet = false, search: searchArgs } = {}) => {\n const dispatch = useDispatch();\n const [loaded, setLoaded] = useState(false);\n const search = useMemoCompare(() => searchArgs, [searchArgs]);\n\n const [entities, lastUpdate] = useSelector((state) =>\n selectors.selectBySearch(state, search),\n );\n const loading = useSelector((state) => getState(state).requests.loading);\n const [error, setError] = useState(null);\n const canExpire = app.useCanStateExpire();\n\n if (isUndefined(search) && canGet !== false)\n console.warn(`${name} search is undefined`);\n\n const getCallback = useCallback(\n () => dispatch(getManyAction(search)).then(unwrapResult),\n [dispatch, search],\n );\n\n const shouldGet =\n hasGetMany &&\n !loaded &&\n (canGet === true || (canGet !== false && _.isEmpty(entities))) &&\n (lastUpdate === null ||\n (moment().diff(lastUpdate, expire.key) > expire.value && canExpire)) &&\n error === null &&\n !!search;\n\n useEffect(() => {\n if (shouldGet) {\n getCallback()\n .catch(setError)\n .finally(() => setLoaded(false));\n }\n }, [dispatch, shouldGet, getCallback]);\n\n const resetCallback = useCallback(() => {\n dispatch(resetAction());\n setError(null);\n }, [dispatch]);\n\n const _getMany = _.isFunction(getManyAction) ? getCallback : undefined;\n\n return {\n [_.camelCase(pluralize(name))]: entities,\n [_.camelCase(\"get-\" + pluralize(name))]: _getMany,\n getMany: _getMany,\n loading: hasGetMany && (loading || shouldGet),\n lastUpdate,\n reset: _.isFunction(resetAction) ? resetCallback : undefined,\n entities,\n error,\n };\n };\n\n const hasGet = _.isFunction(getAction);\n\n const useGetOne = ({ id: rawId } = {}) => {\n const id = parseId(rawId);\n const dispatch = useDispatch();\n const loading = useSelector((state) => getState(state).requests.loading);\n\n const getCallback = useCallback(\n (args) => dispatch(getAction({ id, ...args })).then(unwrapResult),\n [dispatch, id],\n );\n\n const _get = hasGet ? getCallback : undefined;\n\n return {\n loading,\n [_.camelCase(\"get-\" + pluralize(name, 1))]: _get,\n getOne: _get,\n };\n };\n\n const useEntity = ({ id: rawId, canGet = false } = {}) => {\n const id = parseId(rawId);\n const [loaded, setLoaded] = useState(false);\n const dispatch = useDispatch();\n const entity = useSelector((state) => selectors.selectById(state, id));\n const [error, setError] = useState(null);\n\n const { loading, getOne: getCallback } = useGetOne({ id: rawId });\n\n const createCallback = useCallback(\n (entity) =>\n dispatch(createAction(entity))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\n getToastMessage({ name, entity: result, type: \"Created\" }),\n );\n return result;\n }),\n [dispatch],\n );\n const updateCallback = useCallback(\n ({ ...entity }) =>\n dispatch(updateAction({ ...entity, id: id }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\n getToastMessage({ name, entity: result, type: \"Updated\" }),\n );\n return result;\n }),\n [dispatch, id],\n );\n\n const deleteCallback = useCallback(\n () =>\n dispatch(deleteAction({ id: id }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\n getToastMessage({ name, entity: { id }, type: \"Deleted\" }),\n );\n return result;\n }),\n [dispatch, id],\n );\n\n const shouldGet =\n !!id &&\n hasGet &&\n !loaded &&\n (canGet === true || (canGet !== false && _.isUndefined(entity))) &&\n error === null;\n\n useEffect(() => {\n if (shouldGet) {\n getCallback()\n .catch(setError)\n .finally(() => setLoaded(true));\n }\n }, [dispatch, getCallback, shouldGet]);\n\n const reset = useCallback(() => {\n setError(null);\n setLoaded(false);\n }, []);\n\n const _get = hasGet ? getCallback : undefined;\n\n return {\n [_.camelCase(name)]: entity,\n loading: hasGet && (loading || shouldGet),\n entity,\n [_.camelCase(\"get-\" + pluralize(name, 1))]: _get,\n getOne: _get,\n createOne: _.isFunction(createAction) ? createCallback : undefined,\n updateOne: _.isFunction(updateAction) ? updateCallback : undefined,\n deleteOne: _.isFunction(deleteAction) ? deleteCallback : undefined,\n reset,\n };\n };\n\n useEntity.getOne = useGetOne;\n\n const useEntityByFind = ({ find: findArgs }) => {\n const find = useMemoCompare(() => findArgs, [findArgs]);\n const { getOne } = useGetOne();\n const [id, setId] = useState(null);\n const [error, setError] = useState(null);\n useEffect(() => {\n setId(null);\n getOne({ find: find })\n .catch(setError)\n .then(({ data: { id } }) => {\n setId(id);\n });\n }, [find, getOne]);\n\n const {\n error: entityError,\n reset: resetEntity,\n ...entity\n } = useEntity({\n id: id,\n });\n\n const reset = useCallback(() => {\n setError(null);\n setId(null);\n resetEntity();\n }, [resetEntity]);\n return { ...entity, error: error || entityError, reset };\n };\n\n return {\n useEntities,\n useEntitiesBySearch,\n useEntity,\n useEntityByFind,\n };\n}\n\nexport default createEntityHooks;\n","import _ from \"lodash\";\n\n/**\n * Deep diff between two object, using lodash\n * @param {Object} object Object compared\n * @param {Object} base Object to compare with\n * @return {Object} Return a new object who represent the diff\n */\nexport default function difference(object, base) {\n function changes(object, base) {\n return _.transform(object, function (result, value, key) {\n if (!_.isEqual(value, base[key])) {\n result[key] =\n _.isObject(value) && _.isObject(base[key])\n ? changes(value, base[key])\n : value;\n }\n });\n }\n return changes(object, base);\n}\n","export {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"./reducers\";\n","import difference from \"./difference\";\nimport parseIntId from \"./parseIntId\";\n\nexport default { parseIntId, difference };\n","import { entitySelect } from \"../../common/entity\";\nimport { useEstimateStatuses } from \"./hooks\";\n\nconst EstimateStatusSelect = entitySelect({\n name: \"estimateStatus\",\n useEntities: useEstimateStatuses,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default EstimateStatusSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useGroups } from \"./hooks\";\n\nconst GroupTableFilter = entityTableFilter({\n name: \"group\",\n useEntities: useGroups,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default GroupTableFilter;\n","import { entityDescription } from \"../../common/entity\";\nimport { useType } from \"./hooks\";\n\nconst TypeDescription = entityDescription({\n name: \"projectType\",\n useEntity: useType,\n});\n\nexport default TypeDescription;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useTypes } from \"./hooks\";\n\nconst TypeTableFilter = entityTableFilter({\n name: \"projectType\",\n useEntities: useTypes,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default TypeTableFilter;\n","import { entityTableFilter } from \"../common/entity\";\nimport { useUsers } from \"./hooks\";\n\nconst UserTableFilter = entityTableFilter({\n name: \"user\",\n useEntities: useUsers,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default UserTableFilter;\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport Mailto from \"../common/details/Mailto\";\nimport Tel from \"../common/details/Tel\";\nimport { useUser } from \"./hooks\";\nimport Pseudo from \"./pseudo\";\nimport Team from \"./teams\";\n\nexport default function UserModal({ id, show, onHide, mailto }) {\n const { user } = useUser({ id });\n const { pseudo: pseudoUser } = Pseudo.useOne({ id });\n\n const _user = id?.charAt(0) !== \"*\" ? user : pseudoUser;\n\n return (\n \n \n \n {`${_user?.name} (${_user?.id})`}\n \n \n \n

\n {}\n

\n \n \n \n \n \n \n \n \n \n
\n \n );\n}\n\nfunction UserField({ title, value, children }) {\n if (_.isUndefined(value) || !value) return null;\n return (\n <>\n
\n {title}\n

{children || value}

\n \n );\n}\n","import { entityDescription } from \"../../common/entity\";\nimport { useTeam } from \"./hooks\";\n\nconst TeamDescription = entityDescription({\n name: \"team\",\n useEntity: useTeam,\n});\n\nexport default TeamDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useTeams } from \"./hooks\";\n\nconst TeamSelect = entitySelect({\n name: \"team\",\n useEntities: useTeams,\n});\n\nexport default TeamSelect;\n","const development: boolean =\n process.env.NODE_ENV && process.env.NODE_ENV === \"development\";\n\nexport default function isDev(): boolean {\n return development;\n}\n","import { isUndefined } from \"lodash\";\nimport React, { useEffect } from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport EstimateStatusSelect from \"../projects/estimateStatuses/EstimateStatusSelect\";\nimport User, { useUserRate } from \"../users\";\nimport estimateSchema from \"./estimateSchema\";\n\nexport default function EstimateEditor({\n values,\n onSubmit,\n onSaveAsNew,\n isDisabled = false,\n}) {\n return (\n \n \n \n );\n}\n\nconst projectManagement = {\n label: \"Project Management Hours\",\n name: \"projectManagementHours\",\n};\nconst design = {\n label: \"Design Hours\",\n name: \"designHours\",\n};\nconst development = {\n label: \"Development Hours\",\n name: \"developmentHours\",\n};\nconst testing = {\n label: \"Testing Hours\",\n name: \"testingHours\",\n};\nconst installation = {\n label: \"Installation Hours\",\n name: \"installationHours\",\n};\nconst instruction = {\n label: \"Instruction Hours\",\n name: \"instructionHours\",\n};\nconst support = {\n label: \"Support Hours\",\n name: \"supportHours\",\n};\nconst codeCheckin = {\n label: \"Code Checkin Hours\",\n name: \"codeCheckinHours\",\n};\nconst scopeAddition = {\n label: \"Scope Addition Hours\",\n name: \"scopeAdditionHours\",\n};\n\nconst buckets = [\n projectManagement,\n design,\n development,\n testing,\n installation,\n instruction,\n support,\n codeCheckin,\n scopeAddition,\n];\n\nconst currencyFormatter = new Intl.NumberFormat(\"en-us\", {\n style: \"currency\",\n currency: \"USD\",\n});\n\nfunction EstimateForm({ values: initialValues, onSaveAsNew }) {\n const { submitForm, watch, setValue, getValues } = useFormContext();\n const source = getValues(\"source\");\n const reference = getValues(\"reference\");\n const estimateId = getValues(\"id\");\n const crId = source === \"CR\" ? reference : \"\";\n const projectId = source === \"PR\" ? reference : \"\";\n const rateUserId = watch(\"rateUserId\");\n const rate = watch(\"rate\");\n const projectManagementHours = watch(\"projectManagementHours\");\n const designHours = watch(\"designHours\");\n const developmentHours = watch(\"developmentHours\");\n const testingHours = watch(\"testingHours\");\n const installationHours = watch(\"installationHours\");\n const instructionHours = watch(\"instructionHours\");\n const supportHours = watch(\"supportHours\");\n const codeCheckinHours = watch(\"codeCheckinHours\");\n const scopeAdditionHours = watch(\"scopeAdditionHours\");\n\n const { loading: userRateLoading, userRate } = useUserRate({\n id: rateUserId,\n projectId: projectId,\n crId: crId,\n canGet: Number(rate) === 0 && rate !== \"\",\n });\n\n useEffect(() => {\n if (!userRateLoading) {\n setValue(\"rate\", userRate);\n }\n }, [userRate, setValue, userRateLoading]);\n\n useEffect(() => {\n let totalHours = 0;\n buckets.forEach((b) => {\n const hours = parseFloat(eval(b.name));\n totalHours = totalHours + hours;\n const cost = hours * rate;\n if (!isNaN(cost)) {\n setValue(b.name + \"Cost\", currencyFormatter.format(cost));\n }\n });\n\n if (!isNaN(totalHours)) {\n setValue(\"totalHours\", totalHours);\n }\n const totalCost = totalHours * parseFloat(rate);\n if (!isNaN(totalCost))\n setValue(\"totalCost\", currencyFormatter.format(totalCost));\n }, [\n designHours,\n developmentHours,\n testingHours,\n setValue,\n projectManagementHours,\n installationHours,\n instructionHours,\n supportHours,\n codeCheckinHours,\n scopeAdditionHours,\n rate,\n initialValues,\n ]);\n\n const easyButtonClicked = () => {\n setValue(projectManagement.name, \"0.25\");\n setValue(design.name, \"0.25\");\n setValue(development.name, \"0.75\");\n setValue(testing.name, \"0.25\");\n setValue(installation.name, \"0.25\");\n setValue(instruction.name, \"0.00\");\n setValue(support.name, \"0.00\");\n setValue(codeCheckin.name, \"0.25\");\n setValue(scopeAddition.name, \"0.00\");\n };\n\n useFormsKeys();\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 {\"Total\"}\n \n \n \n \n \n \n \n \n {buckets.map((b) => (\n \n ))}\n \n \n {estimateId ? (\n \n ) : null}\n \n \n \n );\n}\n\nfunction HoursBucket({ label, name }) {\n return (\n \n \n {label}\n \n \n \n \n \n \n \n \n );\n}\n\nfunction RateUserIdSelect({ name, id = name, label, setChanged, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n setValue,\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n\n {\n onChange(v);\n setValue(\"rate\", 0);\n }}\n {...props}\n isClearable\n />\n \n {error?.message}\n \n \n );\n}\n\nfunction RateInput({ name, id = name, label, userRateLoading }) {\n const {\n field: { onChange },\n fieldState: { error },\n } = useController({ name });\n const { setValue } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v || 0);\n setValue(\"rateUserId\", \"\");\n }}\n />\n \n {error?.message}\n \n \n );\n}\n\nfunction OwnerSelect({ name, id = name, label, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n {...props}\n />\n \n {error?.message}\n \n \n );\n}\n\nfunction TypeSelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n disabled={isDisabled}\n isInvalid={isUndefined(isInvalid) ? !!error : isInvalid}\n {...field}\n {...props}\n >\n \n \n \n \n \n {error?.message}\n \n \n );\n}\n\nfunction ActiveStatusSelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n disabled={isDisabled}\n isInvalid={isUndefined(isInvalid) ? !!error : isInvalid}\n {...field}\n {...props}\n >\n \n \n \n \n \n \n {error?.message}\n \n \n );\n}\n\nfunction ProjectEstimateStatusSelect({ name, id = name, label, isInvalid }) {\n const {\n field: { onChange, onBlur, value },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n return (\n \n {label ? {label} : null}\n \n \n );\n}\n","import { number, object, string } from \"yup\";\n\nconst estimateSchema = object().shape({\n owner: string().label(\"Owner\").required(),\n date: string().label(\"Date\").required(),\n activeStatus: string().label(\"Status\").required().max(1),\n projectEstimateStatus: string().label(\"Project Estimate Status\").required(),\n type: string().label(\"Type\").required().max(1),\n rate: number().label(\"Hourly Rate\").min(0),\n rateUserId: string().label(\"Rate user\"),\n projectManagementHours: number()\n .label(\"Project Management Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n designHours: number()\n .label(\"Design Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n developmentHours: number()\n .label(\"Development Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n testingHours: number()\n .label(\"Development Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n installationHours: number()\n .label(\"Installation Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n instructionHours: number()\n .label(\"Instruction Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n supportHours: number()\n .label(\"Support Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n codeCheckinHours: number()\n .label(\"Code checkin Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n scopeAdditionHours: number()\n .label(\"Added to Scope Hours\")\n .min(0)\n .test(\n \"quarterHoursOnly\",\n \"Only quarter hour increments are allowed\",\n (number) => /^(?!\\.?$)\\d*\\.?(?:[27]5|[50]0?)?$/.test(number),\n ),\n});\n\nexport default estimateSchema;\n","import _ from \"lodash\";\nimport React, { useMemo } from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport Select, { components } from \"react-select\";\n\nfunction selectComponents({ isInvalid, isValid }) {\n let classNames = [];\n if (isInvalid) classNames.push(\"is-invalid border border-danger rounded\");\n if (isValid) classNames.push(\"is-valid border border-success rounded\");\n const Control = React.memo(({ className, ...props }) => (\n \n ));\n Control.displayName = \"FieldSelectControl\";\n const DropdownIndicator = React.memo(({ ...props }) => (\n \n ));\n DropdownIndicator.displayName = \"FieldSelectDropdownIndicator\";\n return { Control, DropdownIndicator };\n}\n\nconst FieldSelect = React.forwardRef(\n (\n {\n id,\n name,\n isInvalid = false,\n isValid = false,\n isMulti = false,\n className = \"\",\n onChange,\n label,\n errors,\n disabled,\n formGroupClassName = \"\",\n menuPlacement = \"auto\",\n components: componentsInitial,\n ...props\n },\n ref,\n ) => {\n let classNames = [];\n if (className) classNames.push(className);\n if (isInvalid) classNames.push(\"is-invalid\");\n if (isValid) classNames.push(\"is-valid\");\n if (isMulti) classNames.push(\"basic-multi-select\");\n else classNames.push(\"basic-select\");\n\n const components = useMemo(\n () => ({\n ...selectComponents({ isInvalid, isValid }),\n ...componentsInitial,\n }),\n [isInvalid, isValid, componentsInitial],\n );\n\n function handleChange(opt) {\n const getValue = (v) => (_.isNull(v) || _.isUndefined(v) ? \"\" : v);\n if (isMulti)\n if (opt === null) onChange([]);\n else onChange(opt.map((o) => getValue(o.value)));\n else onChange(getValue(opt?.value));\n }\n\n return (\n \n {label ? {label} : null}\n \n {errors ? (\n {errors}\n ) : null}\n \n );\n },\n);\n\nFieldSelect.displayName = \"FieldSelect\";\nexport default FieldSelect;\n\nexport function OptionExtended(props) {\n const { data } = props;\n return (\n \n
    \n
  • {data.title ? data.title : data.label}
  • \n {data?.info ? (\n
  • \n {data.info}\n
  • \n ) : null}\n
\n
\n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React from \"react\";\nimport { Button, Form, InputGroup } from \"react-bootstrap\";\nimport DatePicker from \"react-datepicker\";\nimport { BsArrowLeftShort, BsArrowRightShort } from \"react-icons/bs\";\n\nimport { _date, _datetime } from \"../functions/dates\";\nimport useReinitState from \"../hooks/useReinitState\";\n\nconst FieldDate = React.forwardRef(\n (\n {\n onChange,\n value: initialValue = null,\n includeTime = false,\n timeFormat = \"HH:mm\",\n timeIntervals = 15,\n timeCaption = \"time\",\n dateOnlyFormat = \"MM/dd/yyyy\",\n dateAndTimeFormat = \"MM/dd/yyyy h:mm aa\",\n disabled = false,\n noDateChange = false,\n includeArrows = true,\n label,\n labelClassName = \"mb-2\",\n minDate,\n maxDate,\n includeNow = true,\n onBlur = () => {},\n ...props\n },\n ref,\n ) => {\n const effectiveDateFormat = includeTime\n ? dateAndTimeFormat\n : dateOnlyFormat;\n\n const [value, setValue] = useReinitState(initialValue);\n\n function handleOnBlur() {\n const _value = moment(value);\n if (value !== initialValue && !_value.isSame(moment(initialValue)))\n onChange(value && moment(value));\n }\n\n const rightNowDesc = includeTime ? \"Now\" : \"Today\";\n\n const _label = _.isUndefined(label)\n ? includeTime\n ? _datetime.displayLongDateTime(value)\n : _date.displayLong(value)\n : label;\n\n const disableSubtract =\n minDate === undefined\n ? false\n : moment(value).isSameOrBefore(moment(minDate), \"day\");\n\n const disableAdd =\n maxDate === undefined\n ? false\n : moment(value).isSameOrAfter(moment(maxDate), \"day\");\n\n return (\n <>\n {_.isNull(_label) ? null : (\n {_label}\n )}\n \n {includeArrows ? (\n \n {\n if (value === null) {\n if (dateOnlyFormat === \"yyyy\") {\n onChange(moment().startOf(\"year\"));\n } else if (dateOnlyFormat === \"MM/yyyy\") {\n onChange(moment().startOf(\"month\"));\n } else {\n onChange(moment());\n }\n } else {\n if (dateOnlyFormat === \"yyyy\") {\n onChange(moment(value).subtract(1, \"years\"));\n } else if (dateOnlyFormat === \"MM/yyyy\") {\n onChange(moment(value).subtract(1, \"months\"));\n } else {\n onChange(moment(value).subtract(1, \"days\"));\n }\n }\n }}\n >\n \n \n {\n if (value === null) {\n if (dateOnlyFormat === \"yyyy\") {\n onChange(moment().startOf(\"year\"));\n } else if (dateOnlyFormat === \"MM/yyyy\") {\n onChange(moment().startOf(\"month\"));\n } else {\n onChange(moment());\n }\n } else {\n if (dateOnlyFormat === \"yyyy\") {\n onChange(moment(value).add(1, \"years\"));\n } else if (dateOnlyFormat === \"MM/yyyy\") {\n onChange(moment(value).add(1, \"months\"));\n } else {\n onChange(moment(value).add(1, \"days\"));\n }\n }\n }}\n >\n \n \n \n ) : null}\n {\n onChange(value && moment(value));\n }}\n onChange={(newDate) => {\n setValue(newDate && moment(newDate));\n if (includeTime) onChange(newDate && moment(newDate));\n }}\n onBlur={(e) => {\n handleOnBlur();\n onBlur(e);\n }}\n dateFormat={effectiveDateFormat}\n includeTime={includeTime}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption={timeCaption}\n showTimeSelect={includeTime}\n autoComplete={undefined}\n disabled={disabled}\n minDate={\n noDateChange\n ? moment(value).toDate()\n : minDate === undefined\n ? null\n : moment(minDate).toDate()\n }\n maxDate={\n noDateChange\n ? moment(value).toDate()\n : maxDate === undefined\n ? null\n : moment(maxDate).toDate()\n }\n {...props}\n />\n {includeNow ? (\n \n onChange(moment())}\n disabled={disabled || noDateChange}\n >\n {rightNowDesc}\n \n \n ) : (\n <>\n )}\n \n \n );\n },\n);\nexport default FieldDate;\n","import { useEffect, useRef, useState } from \"react\";\nimport isEqual from \"react-fast-compare\";\n\nexport default function useReinitState(args) {\n const argsRef = useRef(args);\n const [state, setState] = useState(args);\n useEffect(() => {\n if (!isEqual(argsRef.current, args)) {\n argsRef.current = args;\n setState(args);\n }\n }, [args]);\n return [state, setState];\n}\n","import { useEffect, useState } from \"react\";\n\n//https://blog.sethcorker.com/harnessing-the-page-visibility-api-with-react\nexport default function useDocumentVisibility() {\n const [isVisible, setIsVisible] = useState(getIsDocumentHidden());\n const onVisibilityChange = () => setIsVisible(getIsDocumentHidden());\n useEffect(() => {\n const visibilityChange = getBrowserVisibilityProp();\n document.addEventListener(visibilityChange, onVisibilityChange, false);\n return () => {\n document.removeEventListener(visibilityChange, onVisibilityChange);\n };\n });\n return isVisible;\n}\n\nexport function getBrowserVisibilityProp() {\n if (typeof document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n return \"visibilitychange\";\n } else if (typeof document.msHidden !== \"undefined\") {\n return \"msvisibilitychange\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n return \"webkitvisibilitychange\";\n }\n}\nexport function getBrowserDocumentHiddenProp() {\n if (typeof document.hidden !== \"undefined\") {\n return \"hidden\";\n } else if (typeof document.msHidden !== \"undefined\") {\n return \"msHidden\";\n } else if (typeof document.webkitHidden !== \"undefined\") {\n return \"webkitHidden\";\n }\n}\nexport function getIsDocumentHidden() {\n return !document[getBrowserDocumentHiddenProp()];\n}\n","import { useEffect, useRef } from \"react\";\n\nexport default function useInterval(callback, ms, deps = []) {\n const id = useRef(null);\n\n useEffect(() => {\n if (ms !== 0 && !!callback) {\n if (id.current) clearInterval(id.current);\n id.current = setInterval(callback, ms);\n return () => {\n clearInterval(id.current);\n };\n } else id.current = null;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ms, ...deps]);\n}\n","import { useState } from \"react\";\n\nimport app from \"../../app/index\";\nimport useInterval from \"./useInterval\";\n\n/**\n * Update component every x ms\n * @param {integer} ms Miliseconds internal\n */\nexport default function useIntervalUpdateComponent(ms) {\n const [, setTime] = useState(Date.now());\n\n const appIsActive = app.useIsActive();\n\n useInterval(() => setTime(Date.now()), appIsActive ? ms : 0, [\n ms,\n appIsActive,\n ]);\n}\n","import { debounce } from \"lodash\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport useDocumentFocus from \"../common/hooks/useDocumentFocus\";\nimport useDocumentVisibility from \"../common/hooks/useDocumentVisibility\";\nimport useIntervalUpdateComponent from \"../common/hooks/useIntervalUpdateComponent\";\nimport app from \"./index\";\nimport { appActions } from \"./state\";\n\n/**\n * Component to update app slice of redux state\n * @returns null\n */\nexport default function AppStateHandler() {\n const dispatch = useDispatch();\n const setActive = useCallback(\n (isActive) => dispatch(appActions.setIsActive(isActive)),\n [dispatch],\n );\n\n const documentFocus = useDocumentFocus();\n const documentVisible = useDocumentVisibility();\n\n const [lastDocumentFocus, setLastDocumentFocus] = useState(moment());\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedRehydrate = useCallback(\n debounce(() => dispatch(appActions.rehydrate()), 250),\n [dispatch],\n );\n\n // Update component every 60 seconds\n useIntervalUpdateComponent(60000);\n\n useEffect(() => {\n if (documentFocus) {\n setLastDocumentFocus(moment());\n debouncedRehydrate();\n }\n }, [debouncedRehydrate, documentFocus]);\n\n // App is active if visible & focused in the last 30 minutes\n const appIsActive = app.useIsActive();\n const appIsActiveNext =\n documentVisible && moment().diff(lastDocumentFocus, \"minutes\", true) < 30;\n useEffect(() => {\n if (appIsActive !== appIsActiveNext) setActive(appIsActiveNext);\n }, [setActive, appIsActive, appIsActiveNext]);\n\n return null;\n}\n","import { useEffect, useState } from \"react\";\n\n//https://blog.sethcorker.com/harnessing-the-page-visibility-api-with-react\nexport default function useDocumentFocus() {\n const [isFocus, setIsFocus] = useState();\n const onFocus = () => setIsFocus(true);\n const onBlur = () => setIsFocus(false);\n useEffect(() => {\n window.addEventListener(\"focus\", onFocus);\n window.addEventListener(\"blur\", onBlur);\n return () => {\n window.removeEventListener(\"focus\", onFocus);\n window.removeEventListener(\"blur\", onBlur);\n };\n });\n return isFocus;\n}\n","import shark from \"../../../apis/shark\";\n\nexport function getJobAPI({ id }) {\n const payload = {\n command: \"getJob\",\n id: id,\n };\n return shark.post(payload);\n}\n\nexport function getJobsAPI() {\n const payload = {\n command: \"getJobs\",\n };\n return shark.post(payload);\n}\n\nexport function submitJobAPI({ functionName, description, options = {} }) {\n const payload = {\n command: \"submitJob\",\n functionName: functionName,\n options: options,\n description: description,\n };\n return shark.post(payload);\n}\n\nexport function resubmitJobAPI({ id }) {\n const payload = {\n command: \"resubmitJob\",\n id: id,\n };\n return shark.post(payload);\n}\n","import {\n createAsyncThunk,\n createEntityAdapter,\n createSlice,\n} from \"@reduxjs/toolkit\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../../common/functions/state\";\nimport { getJobAPI, getJobsAPI, resubmitJobAPI, submitJobAPI } from \"./api\";\n\nconst jobsAdapter = createEntityAdapter();\n\nconst getJobs = createAsyncThunk(\n \"jobs/getMany\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.jobs, requestId)) return;\n\n const { responseData } = await getJobsAPI(payload);\n return responseData.jobs;\n },\n);\n\nconst getJob = createAsyncThunk(\n \"jobs/get\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.jobs, requestId)) return;\n\n const { responseData } = await getJobAPI(payload);\n return responseData;\n },\n);\n\nexport const submitJob = createAsyncThunk(\n \"job/submit\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.jobs, requestId)) return;\n\n const { responseData } = await submitJobAPI(payload);\n return responseData;\n },\n);\n\nexport const resubmitJob = createAsyncThunk(\n \"job/resubmit\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.jobs, requestId)) return;\n const { responseData } = await resubmitJobAPI(payload);\n return responseData;\n },\n);\n\nconst jobsSlice = createSlice({\n name: \"jobs\",\n initialState: jobsAdapter.getInitialState({\n ...INITIAL_LOADING_STATE,\n lastUpdate: moment().subtract(30, \"days\").toISOString(),\n }),\n reducers: {\n clearJobs(state) {\n jobsAdapter.removeAll(state);\n state.requests = INITIAL_LOADING_STATE.requests;\n state.lastUpdate = moment().subtract(30, \"days\").toISOString();\n },\n updateJob(state, action) {\n jobsAdapter.upsertOne(state, action.payload);\n },\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, getJobs, (state, action) => {\n if (action.payload.length !== 0) {\n jobsAdapter.upsertMany(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, getJob, (state, action) => {\n if (action.payload.length !== 0) {\n jobsAdapter.upsertOne(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, submitJob, (state, action) => {\n if (action.payload) {\n jobsAdapter.upsertOne(state, action.payload);\n toast.success(\"Job submitted\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n buildAsyncThunkReducer(builder, resubmitJob, (state, action) => {\n if (action.payload) {\n jobsAdapter.upsertOne(state, action.payload);\n toast.success(\"Job resubmitted\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n },\n});\n\nexport const reducer = jobsSlice.reducer;\n\nconst { clearJobs, updateJob } = jobsSlice.actions;\nexport const actions = {\n getJobs,\n getJob,\n clearJobs,\n updateJob,\n submitJob,\n resubmitJob,\n};\n\nexport const selectors = jobsAdapter.getSelectors(\n (state) => state.activity.jobs,\n);\n","import storage from \"localforage\";\nimport { persistReducer } from \"redux-persist\";\n\nimport { reducer } from \"./slices\";\n\nconst persistConfig = {\n key: \"activity/jobs\",\n version: 1,\n storage,\n whitelist: [\"ids\", \"entities\", \"lastUpdate\"],\n};\n\nexport default persistReducer(persistConfig, reducer);\n","import sliceReducer from \"./reducers\";\n\nexport { actions as jobsActions } from \"./slices\";\nexport { selectors as jobsSelectors } from \"./slices\";\n\nexport default sliceReducer;\n","import shark from \"../../../apis/shark\";\n\nexport function getNotificationsAPI(filter) {\n const payload = {\n ...filter,\n command: \"getNotifications\",\n };\n return shark.post(payload);\n}\n\nexport function getNotificationAPI({ id }) {\n const payload = {\n id: id,\n command: \"getNotification\",\n };\n return shark.post(payload);\n}\n\nexport function updateNotificationAPI(payload) {\n const payload2 = {\n command: \"updateNotification\",\n ...payload,\n };\n return shark.post(payload2);\n}\n","import {\n createAsyncThunk,\n createEntityAdapter,\n createSlice,\n} from \"@reduxjs/toolkit\";\nimport { toast } from \"react-toastify\";\n\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../../common/functions/state\";\nimport {\n getNotificationAPI,\n getNotificationsAPI,\n updateNotificationAPI,\n} from \"./api\";\n\nconst notificationsAdapter = createEntityAdapter();\n\nconst getNotifications = createAsyncThunk(\n \"notification/getMany\",\n async (filter, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.notifications, requestId)) return;\n\n const { responseData } = await getNotificationsAPI(filter);\n return responseData.notifications;\n },\n);\n\nconst getNotification = createAsyncThunk(\n \"notification/get\",\n async (filter, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.notifications, requestId)) return;\n\n const { responseData } = await getNotificationAPI(filter);\n return responseData;\n },\n);\n\nexport const updateNotification = createAsyncThunk(\n \"notification/update\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.notifications, requestId)) return;\n\n const { responseData } = await updateNotificationAPI(payload);\n return responseData;\n },\n);\n\nconst notificationsSlice = createSlice({\n name: \"notification\",\n initialState: notificationsAdapter.getInitialState({\n ...INITIAL_LOADING_STATE,\n lastUpdate: null,\n }),\n reducers: {\n clearNotifications(state) {\n notificationsAdapter.removeAll(state);\n state.requests = INITIAL_LOADING_STATE.requests;\n state.lastUpdate = null;\n },\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, getNotifications, (state, action) => {\n if (action.payload.length !== 0) {\n notificationsAdapter.upsertMany(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, getNotification, (state, action) => {\n if (action.payload.length !== 0) {\n notificationsAdapter.upsertOne(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, updateNotification, (state, action) => {\n if (action.payload) {\n notificationsAdapter.upsertOne(state, action.payload);\n toast.success(\"Notification record saved\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n },\n});\n\nexport const reducer = notificationsSlice.reducer;\n\nconst { clearNotifications } = notificationsSlice.actions;\nexport const actions = {\n getNotifications,\n getNotification,\n clearNotifications,\n updateNotification,\n};\n\nexport const selectors = notificationsAdapter.getSelectors(\n (state) => state.activity.notifications,\n);\n","import storage from \"localforage\";\nimport { persistReducer } from \"redux-persist\";\n\nimport { reducer } from \"./slices\";\n\nconst persistConfig = {\n key: \"activity/notifications\",\n version: 1,\n storage,\n whitelist: [\"ids\", \"entities\", \"lastUpdate\"],\n};\n\nexport default persistReducer(persistConfig, reducer);\n","import sliceReducer from \"./reducers\";\n\nexport { actions as notificationsActions } from \"./slices\";\nexport { selectors as notificationsSelectors } from \"./slices\";\n\nexport default sliceReducer;\n","import shark from \"../../../apis/shark\";\n\nexport function getUserActivityAPI(filter) {\n const payload = {\n ...filter,\n command: \"getUserActivity\",\n };\n return shark.post(payload);\n}\n","import {\n createAsyncThunk,\n createEntityAdapter,\n createSlice,\n} from \"@reduxjs/toolkit\";\nimport moment from \"moment\";\n\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../../common/functions/state\";\nimport { getUserActivityAPI } from \"./api\";\n\nconst userActivityAdapter = createEntityAdapter();\n\nconst getUserActivity = createAsyncThunk(\n \"userActivity/getMany\",\n async (filter, { getState, requestId }) => {\n if (!testStateLoading(getState().activity.userActivity, requestId)) return;\n\n const { responseData } = await getUserActivityAPI(filter);\n return responseData.userActivity;\n },\n);\n\nconst userActivitySlice = createSlice({\n name: \"userActivity\",\n initialState: userActivityAdapter.getInitialState({\n ...INITIAL_LOADING_STATE,\n lastUpdate: moment().subtract(30, \"days\").toISOString(),\n }),\n reducers: {\n reset(state) {\n userActivityAdapter.removeAll(state);\n state.requests = INITIAL_LOADING_STATE.requests;\n state.lastUpdate = moment().subtract(30, \"days\").toISOString();\n },\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, getUserActivity, (state, action) => {\n if (action.payload.length !== 0) {\n userActivityAdapter.upsertMany(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n },\n});\n\nexport const reducer = userActivitySlice.reducer;\n\nconst { reset } = userActivitySlice.actions;\nexport const actions = {\n getUserActivity,\n clearUserActivity: reset,\n};\n\nexport const selectors = userActivityAdapter.getSelectors(\n (state) => state.activity.userActivity,\n);\n","import storage from \"localforage\";\nimport { persistReducer } from \"redux-persist\";\n\nimport { reducer } from \"./slices\";\n\nconst persistConfig = {\n key: \"activity/userActivity\",\n version: 1,\n storage,\n whitelist: [\"ids\", \"entities\", \"lastUpdate\"],\n};\n\nexport default persistReducer(persistConfig, reducer);\n","import sliceReducer from \"./reducers\";\n\nexport { actions as userActivityActions } from \"./slices\";\nexport { selectors as userActivitySelectors } from \"./slices\";\n\nexport default sliceReducer;\n","import shark from \"../../../apis/shark\";\n\nfunction getWatchesAPI() {\n const payload = {\n command: \"getWatches\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.watches,\n }));\n}\n\nexport const api = { getMany: getWatchesAPI };\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"watch\",\n type: \"watches\",\n getState: (state) => state.activity.watches,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst watchState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default watchState;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport jobsReducer from \"../jobs/state\";\nimport notificationsReducer from \"../notifications/state\";\nimport userActivityReducer from \"../userActivity/state\";\nimport watchState from \"../watches/state\";\n\nconst activityReducer = combineReducers({\n notifications: notificationsReducer,\n userActivity: userActivityReducer,\n jobs: jobsReducer,\n watches: watchState.reducer,\n});\nexport default activityReducer;\n","import shark from \"../../apis/shark\";\n\nexport function approveProjectAPI({\n projectId,\n jobId,\n date,\n action,\n customerId,\n}) {\n const payload = {\n command: \"approveProject\",\n date: date,\n action: action,\n jobId: jobId,\n projectId: projectId,\n customerId: customerId,\n };\n return shark.post(payload);\n}\n\nexport function approveProjectsAPI({\n projects,\n jobId,\n date,\n action,\n customerId,\n}) {\n const payload = {\n command: \"approveProjects\",\n date: date,\n action: action,\n jobId: jobId,\n projects: projects,\n customerId: customerId,\n };\n return shark.post(payload);\n}\n\nexport function discountProjectAPI({ projectId, jobId, amount, comment }) {\n const payload = {\n command: \"discountProject\",\n jobId: jobId,\n projectId: projectId,\n amount: amount,\n comment: comment,\n };\n return shark.post(payload);\n}\n\nexport function refreshProjectsAPI({ jobId, customers, billThruDate }) {\n const payload = {\n command: \"refreshApprovalProjects\",\n jobId: jobId,\n customers: customers,\n billThruDate: billThruDate,\n };\n return shark.post(payload);\n}\n","import {\n createAsyncThunk,\n createEntityAdapter,\n createSlice,\n} from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\nimport { actions as jobActions } from \"../../activity/jobs/state/slices\";\nimport fs from \"../../common/functions\";\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../common/functions/state\";\nimport {\n approveProjectAPI,\n approveProjectsAPI,\n discountProjectAPI,\n refreshProjectsAPI,\n} from \"./api\";\n\nconst approvalsAdapter = createEntityAdapter({\n selectId: (e) => fs.parseIntId(e.id),\n});\n\nconst approveProject = createAsyncThunk(\n \"approvals/approveProject\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().approvals.approvals, requestId)) return;\n const { responseData } = await approveProjectAPI(payload);\n // Clone the job object, then update a couple variables then dispatch\n // to a job's related job to properly update state.\n let myjob = JSON.parse(\n JSON.stringify(getState().activity.jobs.entities[responseData.jobId]),\n );\n\n const customers = myjob.output.customers;\n for (let c = 0; c < customers.length; c++) {\n if (payload.customerId === customers[c].customerId) {\n for (let i = 0; i < customers[c].projects.length; i++) {\n let x = customers[c].projects[i];\n if (x.project === responseData.projectId) {\n x.approved = responseData.approved;\n x.billThruDate = responseData.billThruDate;\n }\n }\n break;\n }\n }\n dispatch({\n type: jobActions.updateJob.type,\n payload: {\n ...myjob,\n },\n });\n return responseData;\n },\n);\n\nconst discountProject = createAsyncThunk(\n \"approvals/discountProject\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().approvals.approvals, requestId)) return;\n const { responseData } = await discountProjectAPI(payload);\n // Clone the job object, then update a couple variables then dispatch\n // to a job's related job to properly update state.\n let myjob = JSON.parse(\n JSON.stringify(getState().activity.jobs.entities[responseData.jobId]),\n );\n\n const customers = myjob.output.customers;\n for (let c = 0; c < customers.length; c++) {\n for (let i = 0; i < customers[c].projects.length; i++) {\n let x = customers[c].projects[i];\n if (x.project === responseData.projectId) {\n x.discountAmount = responseData.discountAmount;\n x.discountComment = responseData.discountComment;\n }\n }\n break;\n }\n dispatch({\n type: jobActions.updateJob.type,\n payload: {\n ...myjob,\n },\n });\n return responseData;\n },\n);\n\nconst refreshProjects = createAsyncThunk(\n \"approvals/refreshProjects\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().approvals.approvals, requestId)) return;\n const { responseData } = await refreshProjectsAPI(payload);\n // Clone the job object, then update a couple variables then dispatch\n // to a job's related job to properly update state.\n let myjob = JSON.parse(\n JSON.stringify(getState().activity.jobs.entities[responseData.jobId]),\n );\n\n const jobCusts = myjob.output.customers;\n const newCusts = responseData.customers;\n\n // run through the response data customers\n // for each one find it in the job clone\n // then loop thru projects in the job clone and find the \"Fresh\"\n // project data in the response and update the variables\n for (let n = 0; n < newCusts.length; n++) {\n const nc = newCusts[n];\n const jc = jobCusts.find((v) => nc.customerId === v.customerId);\n if (jc === undefined) continue;\n for (let p = 0; p < jc.projects.length; p++) {\n const jp = jc.projects[p];\n const np = nc.projects.find((v) => jp.project === v.projectId);\n if (np === undefined) continue;\n jp.discountAmount = np.discountAmount;\n jp.discountComment = np.discountComment;\n jp.billThruDate = np.billThruDate;\n jp.approved = np.approved;\n }\n }\n dispatch({\n type: jobActions.updateJob.type,\n payload: {\n ...myjob,\n },\n });\n return responseData;\n },\n);\n\nconst approveProjects = createAsyncThunk(\n \"approvals/approveProjects\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().approvals.approvals, requestId)) return;\n const { responseData } = await approveProjectsAPI(payload);\n // Clone the job object, then update a couple variables then dispatch\n // to a job's related job to properly update state.\n let myjob = JSON.parse(\n JSON.stringify(getState().activity.jobs.entities[responseData.jobId]),\n );\n\n const customers = myjob.output.customers;\n for (let c = 0; c < customers.length; c++) {\n if (payload.customerId === customers[c].customerId) {\n for (let j = 0; j < responseData.projects.length; j++) {\n let y = responseData.projects[j];\n if (!_.isEmpty(y.errorMessage)) {\n toast.error(\"Project: \" + y.projectId + \" \" + y.errorMessage);\n }\n for (let i = 0; i < customers[c].projects.length; i++) {\n let x = customers[c].projects[i];\n if (x.project === y.projectId) {\n x.approved = y.approved;\n x.billThruDate = y.billThruDate;\n break;\n }\n }\n }\n break;\n }\n }\n dispatch({\n type: jobActions.updateJob.type,\n payload: {\n ...myjob,\n },\n });\n return responseData;\n },\n);\n\nconst approvalsSlice = createSlice({\n name: \"aprovals\",\n initialState: approvalsAdapter.getInitialState({\n ...INITIAL_LOADING_STATE,\n hasMore: true,\n lastUpdate: moment().subtract(30, \"days\").toISOString(),\n filter: {},\n }),\n reducers: {\n clearApprovals(state) {\n approvalsAdapter.removeAll(state);\n state.requests = INITIAL_LOADING_STATE.requests;\n state.hasMore = true;\n state.lastUpdate = moment().subtract(30, \"days\").toISOString();\n },\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, approveProject, (state) => {\n //const { hasMore, approvals } = action.payload;\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, approveProjects, (state) => {\n //const { hasMore, approvals } = action.payload;\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, discountProject, (state) => {\n //const { hasMore, approvals } = action.payload;\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, refreshProjects, (state) => {\n //const { hasMore, approvals } = action.payload;\n state.lastUpdate = new Date().toISOString();\n });\n },\n});\n\nexport const sliceReducer = approvalsSlice.reducer;\n\nconst { clearApprovals } = approvalsSlice.actions;\nexport const actions = {\n approveProject,\n approveProjects,\n discountProject,\n refreshProjects,\n clearApprovals,\n};\n\nexport const selectors = approvalsAdapter.getSelectors(\n (state) => state.approvals.approvals,\n);\n","import { sliceReducer } from \"./slices\";\n\nexport default sliceReducer;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport reducer from \"./reducers\";\n\nexport { actions as approvalsActions } from \"./slices\";\nexport { selectors as approvalsSelectors } from \"./slices\";\n\nconst approvalsReducer = combineReducers({\n approvals: reducer,\n});\nexport default approvalsReducer;\n","import shark from \"../../apis/shark\";\n\nconst getVersion = () => {\n const version = localStorage.getItem(\"version\");\n const versionBuild = localStorage.getItem(\"versionBuild\");\n return `${version}${\n versionBuild && versionBuild !== \"master\" ? \"-\" + versionBuild : \"\"\n }`;\n};\n\nexport function loginApi({ userId, password }) {\n const payload = {\n command: \"validateUser\",\n userId,\n password,\n appVersion: getVersion(),\n };\n\n return shark.post(payload);\n}\n\nexport function logoutApi() {\n const payload = {\n command: \"logoutUser\",\n appVersion: getVersion(),\n };\n\n return shark.post(payload);\n}\n\nexport function checkTokenApi() {\n const payload = {\n command: \"validateToken\",\n appVersion: getVersion(),\n };\n\n return shark.post(payload);\n}\n\nexport function resetPasswordApi({ userId }) {\n const payload = {\n command: \"resetPassword\",\n userId,\n };\n\n return shark.post(payload);\n}\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { toast } from \"react-toastify\";\n\nimport { checkTokenApi, loginApi, logoutApi, resetPasswordApi } from \"./api\";\n\nexport const login = createAsyncThunk(\n \"auth/login\",\n async (args, { rejectWithValue }) => {\n try {\n const { responseData } = await loginApi(args);\n toast.success(\"Successfully logged in.\");\n return responseData;\n } catch (err) {\n return rejectWithValue(err?.message);\n }\n },\n);\n\nexport const checkToken = createAsyncThunk(\n \"auth/checkToken\",\n async (_, { rejectWithValue }) => {\n try {\n const { responseData } = await checkTokenApi();\n return responseData;\n } catch (err) {\n return rejectWithValue(err?.message);\n }\n },\n);\n\nexport const logout = createAsyncThunk(\"auth/logout\", async () => {\n const { responseMessage } = await logoutApi();\n toast.success(\"Successfully logged out.\");\n return responseMessage;\n});\n\nexport const resetPassword = createAsyncThunk(\n \"auth/resetPassword\",\n async (args) => {\n const { responseMessage } = await resetPasswordApi(args);\n toast.success(\"New password sent to applicable email.\");\n return responseMessage;\n },\n);\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { toast } from \"react-toastify\";\n\nimport { checkToken, login, logout, resetPassword } from \"./actions\";\nimport { setToken } from \"./token\";\n\nfunction isRejectedAction(action) {\n return action.type.endsWith(\"rejected\");\n}\n\nconst initialState = (state = {}) => {\n state.loading = false;\n state.isLoggedIn = false;\n state.user = \"\";\n state.name = \"\";\n state.email = \"\";\n state.error = null;\n state.accessApprovals = false;\n state.isManager = false;\n state.isChampion = false;\n state.canBypassContractRestriction = false;\n state.allEmployeeReports = false;\n state.canEnterOtherUserExpenses = false;\n state.isAdmin = false;\n state.hostingAgreementAccess = null;\n state.canMaintainServers = false;\n state.canMaintainEdi = false;\n state.canMaintainInvoices = false;\n state.canMaintainContracts = false;\n state.canPerformCodeReview = false;\n state.experimentalFeatures = \"N\";\n\n return state;\n};\n\nfunction loginFulfilled(state, action) {\n const {\n user,\n name,\n email,\n accessApprovals,\n isManager,\n isChampion,\n canBypassContractRestriction,\n allEmployeeReports,\n authToken,\n canEnterOtherUserExpenses,\n isAdmin,\n hostingAgreementAccess,\n canMaintainServers,\n canMaintainEdi,\n canMaintainInvoices,\n canMaintainContracts,\n canPerformCodeReview,\n experimentalFeatures,\n } = action.payload;\n console.log(action.payload);\n state.loading = false;\n state.isLoggedIn = true;\n state.user = user;\n state.name = name;\n state.email = email;\n state.accessApprovals = accessApprovals;\n state.isManager = isManager;\n state.isChampion = isChampion;\n state.canBypassContractRestriction = canBypassContractRestriction;\n state.allEmployeeReports = allEmployeeReports;\n state.canEnterOtherUserExpenses = canEnterOtherUserExpenses;\n state.isAdmin = isAdmin;\n state.hostingAgreementAccess = hostingAgreementAccess;\n state.canMaintainServers = canMaintainServers;\n state.canMaintainEdi = canMaintainEdi;\n state.canMaintainInvoices = canMaintainInvoices;\n state.canMaintainContracts = canMaintainContracts;\n state.canPerformCodeReview = canPerformCodeReview;\n state.experimentalFeatures = experimentalFeatures;\n setToken(authToken);\n}\n\nfunction logoutFulfilled(state) {\n initialState(state);\n setToken(undefined);\n}\n\nfunction invalidToken(state, action) {\n const message = action?.payload;\n if (\n action.error.message === \"Invalid authentication token\" ||\n message === \"Invalid authentication token\"\n ) {\n logoutFulfilled(state, action);\n toast.error(\"Token has expired. Please relog.\", {\n toastId: \"token-expired\",\n });\n }\n}\n\nconst authSlice = createSlice({\n name: \"auth\",\n initialState: initialState(),\n extraReducers: (builder) => {\n builder\n .addCase(login.pending, (state) => {\n state.loading = true;\n })\n .addCase(login.fulfilled, loginFulfilled)\n .addCase(login.rejected, (state, action) => {\n logoutFulfilled(state, action);\n toast.error(action.error.message);\n })\n .addCase(checkToken.pending, (state) => {\n state.loading = true;\n })\n .addCase(checkToken.fulfilled, loginFulfilled)\n .addCase(checkToken.rejected, (state, action) => {\n invalidToken(state, action);\n if (state.loading) {\n state.error = action.error.message;\n state.loading = false;\n }\n })\n .addCase(logout.pending, (state) => {\n state.loading = true;\n })\n .addCase(logout.fulfilled, logoutFulfilled)\n .addCase(logout.rejected, (state, action) => {\n logoutFulfilled(state, action);\n toast.error(action.error.message);\n })\n .addCase(resetPassword.rejected, (state, action) => {\n toast.error(action.error.message);\n })\n .addMatcher(isRejectedAction, invalidToken);\n },\n});\n\nexport const reducer = authSlice.reducer;\n\nexport const actions = {\n logout,\n login,\n checkToken,\n resetPassword,\n};\n","import storage from \"localforage\";\nimport { persistReducer } from \"redux-persist\";\n\nimport { reducer } from \"./slices\";\n\nconst persistConfig = {\n key: \"auth\",\n version: 1,\n storage,\n whitelist: [],\n};\n\nexport default persistReducer(persistConfig, reducer);\n","import reducer from \"./reducers\";\n\nexport { actions as authActions } from \"./slices\";\n\nexport default reducer;\n","import shark from \"../../apis/shark\";\n\nfunction getCodeReviewsAPI(filters) {\n const payload = {\n command: \"getCodeReviews\",\n ...filters,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.codeReviews,\n searchArgs: filters,\n }));\n}\n\nfunction getCodeReviewAPI({ id }) {\n const payload = {\n command: \"getCodeReview\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction updateCodeReviewAPI(codereview) {\n const payload = {\n command: \"updateCodeReview\",\n ...codereview,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getCodeReviewsAPI,\n getOne: getCodeReviewAPI,\n updateOne: updateCodeReviewAPI,\n};\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"codeReview\",\n type: \"codeReviews\",\n getState: (state) => state.codeReviews.codeReviews,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst codeReviewReducer = combineReducers({\n codeReviews: reducer,\n});\n\nconst codeReviewState = {\n api,\n actions,\n reducer: codeReviewReducer,\n entity,\n};\n\nexport default codeReviewState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getContactTypes\" }).then((r) => {\n return { data: r.responseData.contactTypes };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"contactType\",\n type: \"contacts/contactTypes\",\n getState: (state) => state.contacts.contactTypes,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst contactTypeState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default contactTypeState;\n","import shark from \"../../apis/shark\";\n\nfunction getContactsAPI({ customerId }) {\n const payload = {\n command: \"getCustomerContacts\",\n customer: customerId,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.customerContacts,\n searchArgs: { customerId },\n }));\n}\n\nfunction getContactAPI({ id }) {\n const payload = {\n command: \"getCustomerContact\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nexport const api = { getMany: getContactsAPI, getOne: getContactAPI };\n","import storage from \"localforage\";\nimport { createMigrate } from \"redux-persist\";\n\nconst resetState = () => undefined;\n\nconst migrations = {\n // Reset for phones changes\n 2: resetState,\n};\n\nexport const contactsPersistConfig = {\n key: \"contacts\",\n version: 2,\n storage,\n whitelist: [\"ids\", \"entities\", \"lastUpdate\", \"startAfter\"],\n migrate: createMigrate(migrations),\n};\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../common/entity\";\nimport contractTypesState from \"../contactTypes/state\";\nimport { api } from \"./api\";\nimport { contactsPersistConfig } from \"./persist\";\n\nconst entity = createEntity({\n name: \"contact\",\n type: \"contacts\",\n getState: (state) => state.contacts.contacts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n persistConfig: contactsPersistConfig,\n});\n\nconst contactReducer = combineReducers({\n contacts: reducer,\n contactTypes: contractTypesState.reducer,\n});\n\nconst contactState = {\n api,\n actions,\n reducer: contactReducer,\n entity,\n};\n\nexport default contactState;\n","import shark from \"../../../apis/shark\";\n\nfunction getContractProductCategoriesAPI() {\n const payload = {\n command: \"getContractProductCategories\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.contractProductCategories,\n }));\n}\n\nfunction getContractProductCategoryAPI({ id }) {\n const payload = {\n command: \"getContractProductCategory\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createContractProductCategoryAPI(contractProductCategory) {\n const payload = {\n command: \"createContractProductCategory\",\n ...contractProductCategory,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateContractProductCategoryAPI(contractProductCategory) {\n const payload = {\n command: \"updateContractProductCategory\",\n ...contractProductCategory,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getContractProductCategoriesAPI,\n getOne: getContractProductCategoryAPI,\n createOne: createContractProductCategoryAPI,\n updateOne: updateContractProductCategoryAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"contractProductCategories\",\n type: \"contracts/contractProductCategories\",\n getState: (state) => state.contracts.contractProductCategories,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst contractProductCategoryState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default contractProductCategoryState;\n","import shark from \"../../../apis/shark\";\n\nfunction getContractProductsAPI() {\n const payload = {\n command: \"getContractProducts\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.contractProducts,\n }));\n}\n\nfunction getContractProductAPI({ id }) {\n const payload = {\n command: \"getContractProduct\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createContractProductAPI(contractProduct) {\n const payload = {\n command: \"createContractProduct\",\n ...contractProduct,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateContractProductAPI(contractProduct) {\n const payload = {\n command: \"updateContractProduct\",\n ...contractProduct,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getContractProductsAPI,\n getOne: getContractProductAPI,\n createOne: createContractProductAPI,\n updateOne: updateContractProductAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"contractProducts\",\n type: \"contracts/contractProducts\",\n getState: (state) => state.contracts.contractProducts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst contractProductState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default contractProductState;\n","import shark from \"../../../apis/shark\";\n\nfunction getContractProductDefaultCrsAPI({ contractProductId } = {}) {\n const args = {\n ...(contractProductId ? { contractProductId: contractProductId } : null),\n };\n\n const payload = {\n command: \"getContractProductDefaultCrs\",\n ...args,\n };\n\n return shark.post(payload).then((response) => ({\n data: response.responseData.contractProductDefaultCrs,\n searchArgs: args,\n }));\n}\n\nfunction getContractProductDefaultCrAPI({ id }) {\n const payload = {\n command: \"getContractProductDefaultCr\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createContractProductDefaultCrAPI(contractProductDefaultCr) {\n const payload = {\n command: \"createContractProductDefaultCr\",\n ...contractProductDefaultCr,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateContractProductDefaultCrAPI(contractProductDefaultCr) {\n const payload = {\n command: \"updateContractProductDefaultCr\",\n ...contractProductDefaultCr,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getContractProductDefaultCrsAPI,\n getOne: getContractProductDefaultCrAPI,\n createOne: createContractProductDefaultCrAPI,\n updateOne: updateContractProductDefaultCrAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"contractProductDefaultCrs\",\n type: \"contracts/contractProductDefaultCrs\",\n getState: (state) => state.contracts.contractProductDefaultCrs,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst contractProductDefaultCrState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default contractProductDefaultCrState;\n","import shark from \"../../apis/shark\";\n\nfunction getContractsAPI(searchArgs) {\n const payload = {\n command: \"getContracts\",\n ...searchArgs,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.contracts,\n searchArgs: searchArgs,\n }));\n}\n\nfunction getContractAPI({ id }) {\n const payload = {\n command: \"getContract\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createContractAPI(contract) {\n const payload = {\n command: \"createContract\",\n ...contract,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateContractAPI(contract) {\n const payload = {\n command: \"updateContract\",\n ...contract,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getContractsAPI,\n getOne: getContractAPI,\n createOne: createContractAPI,\n updateOne: updateContractAPI,\n};\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../common/entity\";\nimport contractProductCategoriesState from \"../contractProductCategories/state\";\nimport contractProductsState from \"../contractProducts/state\";\nimport contractProductDefaultCrsState from \"../contractProductsDefaultCrs/state\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"contract\",\n type: \"contracts\",\n getState: (state) => state.contracts.contracts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst contractReducer = combineReducers({\n contracts: reducer,\n contractProductCategories: contractProductCategoriesState.reducer,\n contractProducts: contractProductsState.reducer,\n contractProductDefaultCrs: contractProductDefaultCrsState.reducer,\n});\n\nconst contractState = {\n api,\n actions,\n reducer: contractReducer,\n entity,\n};\n\nexport default contractState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCrDifficulties\" }).then((r) => {\n return { data: r.responseData.crDifficulties };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"difficulty\",\n type: \"crs/difficulties\",\n getState: (state) => state.crs.difficulties,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst difficultyState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default difficultyState;\n","import shark from \"../../../../apis/shark\";\n\nfunction getFavoritesAPI() {\n return shark.post({ command: \"getCrFilterFavorites\" }).then((r) => {\n return { data: r.responseData.crFilterFavorites };\n });\n}\n\nfunction addFavoriteApi(crFilterId) {\n return shark.post({ command: \"addCrFilterFavorite\", crFilterId }).then(() => {\n return { data: { crFilterId } };\n });\n}\n\nfunction removeFavoriteAPI({ id: crFilterId, shouldSendRequest = true }) {\n const returnValue = { data: crFilterId };\n return shouldSendRequest === false\n ? returnValue\n : shark\n .post({ command: \"removeCrFilterFavorite\", crFilterId })\n .then(() => returnValue);\n}\n\nexport const api = {\n getMany: getFavoritesAPI,\n createOne: addFavoriteApi,\n deleteOne: removeFavoriteAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"favorites\",\n type: \"crs/filters/favorites\",\n getState: (state) => state.crs.filters.favorites,\n adapterConfig: { selectId: (e) => e.crFilterId },\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst favoriteState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default favoriteState;\n","const sharkColumns = {\n CUST: \"customer\",\n OWNR: \"owner\",\n CRDT: \"createDate\",\n CRTM: \"createTime\",\n MODT: \"modifyDate\",\n MOTM: \"modifyTime\",\n CLDT: \"closedDate\",\n CLTM: \"closedTime\",\n CROP: \"createdBy\",\n MOOP: \"modifiedBy\",\n CLBY: \"closedBy\",\n STAT: \"status\",\n DIFF: \"difficulty\",\n MODU: \"module\",\n GRUP: \"group\",\n PRIO: \"priority\",\n TYPE: \"type\",\n RFCC: \"rfcc\",\n PJRF: \"project\",\n TDDT: \"targetDeliveryDate\",\n TSDT: \"targetStartWork\",\n TFDT: \"targetFirstContact\",\n NOTF: \"documentation\",\n CHMP: \"champion\",\n WTFC: \"waiting\",\n REFR: \"id\",\n DESC: \"description\",\n SYNP: \"synopsis\",\n ESST: \"estimateStatus\",\n SAMF: \"isSAMFollowup\",\n STAX: \"statusExtended\",\n QOWN: \"reviewer\",\n QAST: \"qaStatus\",\n JIRA: \"jira\",\n FIXN: \"projectFixNotes\",\n\n // Unimplemented\n EST1: \"Low estimate\",\n EST2: \"High estimate\",\n PRST: \"Project status\",\n CLSR: \"Call source\",\n ASGN: \"Assigned\",\n QAAI: \"Addressed in build\",\n CONT: \"Contact\",\n // Unsupported\n MDGR: \"Module group\",\n MLTC: \"Multi-customer\",\n PONO: \"Customer PO\",\n CNOT: \"Customer note\",\n};\n\nexport default sharkColumns;\n","import { startCase } from \"lodash\";\n\nimport { createEntityHooks } from \"../../../common/entity\";\nimport favoriteState from \"./state\";\n\nexport const { useEntities: useFavorites, useEntity: useFavorite } =\n createEntityHooks({\n entity: favoriteState.entity,\n actions: favoriteState.actions,\n getToastMessage: ({ name, entity: { id, crFilterId }, type }) =>\n `${startCase(name)} ${id || crFilterId} ${\n type === \"Created\" ? \"Added\" : type === \"Deleted\" ? \"Removed\" : \"\"\n }`,\n });\n","import { useFavorite, useFavorites } from \"./hooks\";\nimport filterState from \"./state\";\n\nconst Favorite = {\n // Backend API\n api: filterState.api,\n // State\n actions: filterState.actions,\n selectors: filterState.entity.selectors,\n // Hooks\n useAll: useFavorites,\n useOne: useFavorite,\n // Components\n};\nexport default Favorite;\n","import { findKey, isNull } from \"lodash\";\n\nimport shark from \"../../../apis/shark\";\nimport sharkColumns from \"../../tableLayouts/sharkColumns\";\nimport Favorite from \"../favorites\";\n\nconst buildCrFilter = (f) => {\n const {\n id,\n layoutId,\n sortBy: sortByOriginal = [],\n description,\n owner,\n public: isPublic,\n ...filter\n } = f;\n const sortBy = sortByOriginal.map((s) => sharkColumns[s]);\n return {\n id,\n description,\n owner,\n public: isPublic,\n filter: { ...filter, folderId: \"CURRENT\" },\n layoutId,\n sortBy,\n };\n};\n\nconst deconstructCrFilter = (f) => {\n const {\n filter: originalFilter,\n sortBy: sortByOriginal = [],\n ...crFilter\n } = f;\n\n let filter = { ...originalFilter };\n // Remove null values\n Object.entries(filter).forEach(([key, value]) => {\n if (isNull(value)) delete filter[key];\n });\n\n const sortBy = sortByOriginal.map((s) =>\n findKey(sharkColumns, (k) => k === s),\n );\n return { ...crFilter, ...filter, sortBy };\n};\n\nfunction getFiltersAPI() {\n return shark.post({ command: \"getCrFilters\" }).then((r) => {\n return { data: r.responseData.crFilters.map(buildCrFilter) };\n });\n}\n\nfunction getFilterAPI({ id }) {\n return shark.post({ command: \"getCrFilter\", id: id }).then((r) => {\n return { data: buildCrFilter(r.responseData) };\n });\n}\n\nfunction createFilterAPI(crFilter) {\n return shark\n .post({ command: \"createCrFilter\", filter: deconstructCrFilter(crFilter) })\n .then((r) => {\n return { data: buildCrFilter(r.responseData) };\n });\n}\n\nfunction updateFilterAPI(crFilter) {\n return shark\n .post({ command: \"updateCrFilter\", filter: deconstructCrFilter(crFilter) })\n .then((r) => {\n return { data: buildCrFilter(r.responseData) };\n });\n}\n\nfunction deleteFilterAPI({ id }, { dispatch }) {\n return shark.post({ command: \"deleteCrFilter\", id }).then(() => {\n dispatch(Favorite.actions.deleteOne({ id, shouldSendRequest: false }));\n return { data: id };\n });\n}\n\nexport const api = {\n getMany: getFiltersAPI,\n getOne: getFilterAPI,\n createOne: createFilterAPI,\n updateOne: updateFilterAPI,\n deleteOne: deleteFilterAPI,\n};\n","import { combineReducers } from \"redux\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport favoriteState from \"../favorites/state\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"filter\",\n type: \"crs/filters\",\n getState: (state) => state.crs.filters.filters,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst filterReducer = combineReducers({\n filters: reducer,\n favorites: favoriteState.reducer,\n});\n\nconst filterState = {\n api,\n entity,\n actions,\n reducer: filterReducer,\n};\n\nexport default filterState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCrModules\" }).then((r) => {\n return { data: r.responseData.crModules };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"module\",\n type: \"crs/modules\",\n getState: (state) => state.crs.modules,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst modulesState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default modulesState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCrNotificationTypes\" }).then((r) => {\n return { data: r.responseData.crNotificationTypes };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"notificationType\",\n type: \"crs/notificationTypes\",\n getState: (state) => state.crs.notificationTypes,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst notificationTypeState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default notificationTypeState;\n","export default async function fileBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result.replace(/^.*,/, \"\"));\n reader.onerror = (error) => reject(error);\n });\n}\n","import { getToken } from \"../auth/state/token\";\nimport fileBase64 from \"../common/functions/fileBase64\";\nimport shark, { SHARK_URL } from \"./shark\";\n\nexport async function getAttachmentAPI({ id }) {\n const payload = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n appId: \"T3\",\n command: \"getAttachment\",\n id,\n authToken: getToken(),\n }),\n };\n\n // console.log(payload);\n\n // Step 1: start the fetch and obtain a reader\n let response = await fetch(SHARK_URL + \"/services\", payload);\n\n const type = response.headers.get(\"Content-Type\");\n\n if (type === \"application/json\") {\n const json = await response.json();\n return Promise.reject(json.responseMessage);\n }\n\n return response.blob();\n}\n\nexport async function deleteAttachmentAPI({ id }) {\n const payload = {\n id,\n command: \"deleteAttachment\",\n };\n return shark.post(payload);\n}\n\nexport async function createAttachmentAPI({ command, id, files }) {\n const lcFilesToDecode = await files.reduce(async (lcFiles, file) => {\n const content = await fileBase64(file);\n return await lcFiles.concat([{ content, originalFilename: file.name }]);\n }, []);\n const payload = {\n command,\n id,\n lcFilesToDecode,\n };\n return shark\n .post(payload, { config: { timeout: 0 } })\n .then((r) => ({ data: r.responseData }));\n}\n","import { createAttachmentAPI } from \"../../../apis/attachments\";\nimport shark from \"../../../apis/shark\";\n\nfunction getQaReviewsAPI(filters) {\n const payload = {\n command: \"getQaReviews\",\n ...filters,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.qaReviews,\n searchArgs: filters,\n }));\n}\n\nfunction getQaReviewAPI({ id }) {\n const payload = {\n command: \"getQaReview\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction updateQaReviewAPI(qaReview) {\n const payload = {\n command: \"updateQaReview\",\n ...qaReview,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction createQaReviewAPI(qareview) {\n const payload = {\n command: \"createQaReview\",\n ...qareview,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction createAttachmentQaReviewAPI(args) {\n return createAttachmentAPI({\n command: \"createQaReviewAttachment\",\n ...args,\n });\n}\n\nexport const api = {\n getMany: getQaReviewsAPI,\n getOne: getQaReviewAPI,\n updateOne: updateQaReviewAPI,\n createOne: createQaReviewAPI,\n createAttachment: createAttachmentQaReviewAPI,\n};\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../../common/functions/state\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"qaReview\",\n type: \"crs/qaReviews\",\n getState: (state) => state.crs.qaReviews,\n});\nconst qaActions = createEntityActions({ entity, api });\n\nconst createAttachment = createAsyncThunk(\n \"crs/qaReviews/attachments/create\",\n async (args) => {\n const response = await api.createAttachment(args);\n return response;\n },\n);\n\nconst actions = { ...qaActions, createAttachment };\n\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(\n builder,\n actions.createAttachment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n },\n});\n\nconst qaReviewState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default qaReviewState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCrStatuses\" }).then((r) => {\n return { data: r.responseData.crStatuses };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"status\",\n type: \"crs/statuses\",\n getState: (state) => state.crs.statuses,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst statusState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default statusState;\n","import { findKey, sortBy } from \"lodash\";\n\nimport shark from \"../../../apis/shark\";\nimport sharkColumns from \"../sharkColumns\";\n\nconst buildCrTableLayout = (layout) => {\n const columns = layout.columns.map((c) => {\n return { ...c, column: sharkColumns[c.column] };\n });\n return { ...layout, columns };\n};\n\nconst deconstructCrTableLayout = ({\n columns: columnsOriginal,\n ...crTableLayout\n}) => {\n const columns = sortBy(columnsOriginal, \"id\").map((c, idx) => ({\n column: findKey(sharkColumns, (k) => k === c.column),\n id: idx + 1,\n }));\n return { ...crTableLayout, columns };\n};\n\nfunction getCrTableLayoutsAPI() {\n return shark.post({ command: \"getCrTableLayouts\" }).then((r) => {\n return { data: r.responseData.crTableLayouts.map(buildCrTableLayout) };\n });\n}\n\nfunction getCrTableLayoutAPI({ id }) {\n return shark.post({ command: \"getCrTableLayout\", id }).then((r) => {\n return { data: buildCrTableLayout(r.responseData) };\n });\n}\n\nfunction createCrTableLayoutAPI(crTableLayout) {\n return shark\n .post({\n command: \"createCrTableLayout\",\n ...deconstructCrTableLayout(crTableLayout),\n })\n .then((r) => {\n return { data: buildCrTableLayout(r.responseData) };\n });\n}\n\nfunction updateCrTableLayoutAPI(crTableLayout) {\n return shark\n .post({\n command: \"updateCrTableLayout\",\n ...deconstructCrTableLayout(crTableLayout),\n })\n .then((r) => {\n return { data: buildCrTableLayout(r.responseData) };\n });\n}\n\nexport const api = {\n getMany: getCrTableLayoutsAPI,\n getOne: getCrTableLayoutAPI,\n createOne: createCrTableLayoutAPI,\n updateOne: updateCrTableLayoutAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"tableLayout\",\n type: \"crs/tableLayouts\",\n getState: (state) => state.crs.tableLayouts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst tableLayoutState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default tableLayoutState;\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { toast } from \"react-toastify\";\n\nexport default function toastMessage(\n props,\n { type = \"default\", ...toastOptions } = {},\n) {\n return toast(, {\n type,\n ...toastOptions,\n });\n}\n\nfunction Prompt({ message, title = \"\" }) {\n return (\n \n
\n \n {title ?
{title}
: null}\n \n \n \n

\n {message}\n

\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Button, ButtonGroup } from \"react-bootstrap\";\nimport { toast, Zoom } from \"react-toastify\";\n\nexport default function toastPrompt(props, toastOptions) {\n let toastId = toast(\n {\n toast.dismiss(toastId);\n }}\n />,\n {\n type: \"default\",\n autoClose: false,\n closeOnClick: false,\n closeButton: false,\n draggable: false,\n position: \"top-center\",\n transition: Zoom,\n ...toastOptions,\n },\n );\n}\n\nfunction Prompt({\n message,\n onConfirm,\n dismiss,\n confirm = \"Confirm\",\n cancel = \"Cancel\",\n}) {\n return (\n \n

\n {message}\n

\n \n {\n dismiss();\n onConfirm();\n }}\n >\n {confirm}\n \n \n \n
\n );\n}\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: ({ customerId }) => {\n return shark\n .post({ command: \"getCustomerContracts\", customer: customerId })\n .then((r) => {\n return {\n data: r.responseData.customerContracts,\n searchArgs: { customerId },\n };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"contract\",\n type: \"customers/contracts\",\n getState: (state) => state.customers.contracts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst contractState = {\n api,\n entity,\n actions,\n reducer,\n};\nexport default contractState;\n","import { createEntityHooks } from \"../../common/entity\";\nimport customerContractState from \"./state\";\n\nexport const {\n useEntities: useCustomerContracts,\n useEntitiesBySearch: useCustomerContractsByCustomer,\n useEntity: useCustomerContract,\n} = createEntityHooks({\n entity: customerContractState.entity,\n actions: customerContractState.actions,\n});\n","import { entityDescription } from \"../../common/entity\";\nimport { useCustomerContract } from \"./hooks\";\n\nconst CustomerContractDescription = entityDescription({\n name: \"customerContract\",\n useEntity: useCustomerContract,\n});\n\nexport default CustomerContractDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useCustomerContractsByCustomer } from \"./hooks\";\n\nconst CustomerContractSelect = entitySelect({\n name: \"customerContract\",\n useEntities: useCustomerContractsByCustomer,\n getHookArgs: (props) => ({\n canGet: !!props.customerId,\n search: { customerId: props.customerId || undefined },\n }),\n});\nexport default CustomerContractSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useCustomerContractsByCustomer } from \"./hooks\";\n\nconst CustomerContractTableFilter = entityTableFilter({\n name: \"customerContract\",\n useEntities: useCustomerContractsByCustomer,\n});\n\nexport default CustomerContractTableFilter;\n","import CustomerContractDescription from \"./CustomerContractDescription\";\nimport CustomerContractSelect from \"./CustomerContractSelect\";\nimport CustomerContractTableFilter from \"./CustomerContractTableFilter\";\nimport {\n useCustomerContract,\n useCustomerContracts,\n useCustomerContractsByCustomer,\n} from \"./hooks\";\nimport customerContractState from \"./state\";\n\nconst CustomerContract = {\n // API\n api: customerContractState.api,\n // State\n actions: customerContractState.actions,\n selectors: customerContractState.entity.selectors,\n // Hooks\n useOne: useCustomerContract,\n useAll: useCustomerContracts,\n useSearch: useCustomerContractsByCustomer,\n // Components\n Select: CustomerContractSelect,\n Description: CustomerContractDescription,\n TableFilter: CustomerContractTableFilter,\n};\nexport default CustomerContract;\n","import { createAttachmentAPI } from \"../../../apis/attachments\";\nimport shark from \"../../../apis/shark\";\n\nexport const api = {\n getMany: (filters) => {\n const payload = { command: \"getHostingAgreements\" };\n if (filters?.customerId) {\n payload.customerId = filters?.customerId;\n }\n return shark.post(payload).then((r) => {\n return { data: r.responseData.hostingAgreements };\n });\n },\n\n getOne: ({ id }) => {\n const payload = {\n command: \"getHostingAgreement\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n },\n\n createOne: (license) => {\n const payload = {\n command: \"createHostingAgreement\",\n ...license,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n },\n\n updateOne: (license) => {\n const payload = {\n command: \"updateHostingAgreement\",\n ...license,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n },\n\n createAttachment: (args) => {\n return createAttachmentAPI({\n command: \"createHostingAgreementAttachment\",\n ...args,\n });\n },\n};\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../../common/functions/state\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"hostingAgreement\",\n type: \"customers/hostingAgreements\",\n getState: (state) => state.customers.hostingAgreements,\n});\n\nconst entityActions = createEntityActions({ entity, api });\n\nconst createAttachment = createAsyncThunk(\n \"customers/hostingAgreements/attachments/create\",\n async (args) => {\n const response = await api.createAttachment(args);\n return response;\n },\n);\n\nconst actions = { ...entityActions, createAttachment };\n\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(\n builder,\n actions.createAttachment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n },\n});\n\nconst hostingAgreementsState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default hostingAgreementsState;\n","import shark from \"../../../apis/shark\";\n\nexport const api = {\n getOne: ({ id }) => {\n const payload = {\n command: \"getHostingAgreementMonth\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n },\n\n getMany: () => {\n const payload = { command: \"getHostingAgreementMonths\" };\n return shark.post(payload).then((r) => {\n return { data: r.responseData.hostingAgreementMonths };\n });\n },\n\n updateOne: (month) => {\n const payload = {\n command: \"runHostingAgreementMonth\",\n ...month,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n },\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"hostingAgreementMonth\",\n type: \"customers/hostingAgreementMonths\",\n getState: (state) => state.customers.hostingAgreementMonths,\n});\n\nconst actions = {\n ...createEntityActions({ entity, api }),\n};\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst hostingAgreementMonthsState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default hostingAgreementMonthsState;\n","import shark from \"../../../apis/shark\";\n\nfunction getJiraProjectsAPI({ customerId } = {}) {\n const args = { ...(customerId ? { customerId: customerId } : null) };\n const payload = {\n command: \"getJiraProjects\",\n ...args,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.jiraProjects,\n searchArgs: args,\n }));\n}\n\nfunction getJiraAPI({ id }) {\n const payload = {\n command: \"getJiraProject\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createJiraAPI(jira) {\n const payload = {\n command: \"createJiraProject\",\n ...jira,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateJiraAPI(jira) {\n const payload = {\n command: \"updateJiraProject\",\n ...jira,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getJiraProjectsAPI,\n getOne: getJiraAPI,\n createOne: createJiraAPI,\n updateOne: updateJiraAPI,\n};\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"jiraProject\",\n type: \"jiraProjects\",\n getState: (state) => state.customers.jiraProjects.jiraProjects,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst jiraProjectReducer = combineReducers({\n jiraProjects: reducer,\n});\n\nconst jiraProjectState = {\n api,\n actions,\n reducer: jiraProjectReducer,\n entity,\n};\n\nexport default jiraProjectState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCustomerModules\" }).then((r) => {\n return { data: r.responseData.customerModules };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"module\",\n type: \"customers/modules\",\n getState: (state) => state.customers.modules,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst moduleState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default moduleState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCustomerOrganizations\" }).then((r) => {\n return { data: r.responseData.customerOrganizations };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"organization\",\n type: \"customers/organizations\",\n getState: (state) => state.customers.organizations,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst organizationState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default organizationState;\n","import shark from \"../../../apis/shark\";\n\nexport const api = {\n getMany: (filters) => {\n const payload = { command: \"getCustomerThirdPartyLicenses\" };\n if (filters?.customerId) {\n payload.customerId = filters?.customerId;\n }\n\n return shark.post(payload).then((r) => {\n return { data: r.responseData.customerThirdPartyLicenses };\n });\n },\n\n getOne: ({ id }) => {\n const payload = {\n command: \"getCustomerThirdPartyLicense\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n },\n\n createOne: (license) => {\n const payload = {\n command: \"createCustomerThirdPartyLicense\",\n ...license,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n },\n\n updateOne: (license) => {\n const payload = {\n command: \"updateCustomerThirdPartyLicense\",\n ...license,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n },\n\n createComment: ({ customerThirdPartyLicense, title, text }) => {\n const payload = {\n command: \"createCustomerThirdPartyLicenseComment\",\n customerThirdPartyLicense,\n title,\n text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n },\n\n updateComment: ({ customerThirdPartyLicense, title, text, id }) => {\n const payload = {\n command: \"updateCustomerThirdPartyLicenseComment\",\n customerThirdPartyLicense,\n id,\n title,\n text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n },\n};\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../../common/functions/state\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"thirdPartyLicense\",\n type: \"customers/thirdPartyLicenses\",\n getState: (state) => state.customers.thirdPartyLicenses,\n});\n\nconst createComment = createAsyncThunk(\n \"customers/thirdPartyLicenses/comments/create\",\n async (args) => {\n const response = await api.createComment(args);\n return response;\n },\n);\n\nconst updateComment = createAsyncThunk(\n \"customers/thirdPartyLicenses/comments/update\",\n async (args) => {\n const response = await api.updateComment(args);\n return response;\n },\n);\n\nconst actions = {\n createComment,\n updateComment,\n ...createEntityActions({ entity, api }),\n};\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(\n builder,\n actions.createComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n },\n});\n\nconst thirdPartyLicensesState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default thirdPartyLicensesState;\n","import shark from \"../../apis/shark\";\n\nfunction getCustomersAPI() {\n const payload = {\n command: \"getCustomers\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.customers,\n }));\n}\n\nfunction getCustomerAPI({ id, fetch = true }, { getState }, { selectors }) {\n const payload = {\n command: \"getCustomer\",\n id: id,\n };\n if (fetch)\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n else {\n return {\n data: selectors.selectById(getState(), id),\n updateState: false,\n };\n }\n}\n\nexport const api = { getMany: getCustomersAPI, getOne: getCustomerAPI };\n","import createEntity from \"../../common/entity/createEntity\";\n\nexport const entity = createEntity({\n name: \"customer\",\n type: \"customers\",\n getState: (state) => state.customers.customers,\n});\n","import createEntityActions from \"../../common/entity/createEntityActions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nexport const actions = createEntityActions({\n entity: entity,\n api: api,\n});\n","import createEntityReducer from \"../../common/entity/createEntityReducer\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity,\n actions: actions,\n persist: true,\n});\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport customerContractsState from \"../contracts/state\";\nimport hostingAgreementState from \"../hostingAgreements/state\";\nimport hostingAgreementMonthsState from \"../hostingAgreementsMonth/state\";\nimport jiraProjectState from \"../jiraProjects/state\";\nimport customerModulesState from \"../modules/state\";\nimport customerOrganizationsState from \"../organizations/state\";\nimport thirdPartyLicensesState from \"../thirdPartyLicenses/state\";\nimport { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst customerReducer = combineReducers({\n customers: reducer,\n contracts: customerContractsState.reducer,\n modules: customerModulesState.reducer,\n organizations: customerOrganizationsState.reducer,\n thirdPartyLicenses: thirdPartyLicensesState.reducer,\n jiraProjects: jiraProjectState.reducer,\n hostingAgreements: hostingAgreementState.reducer,\n hostingAgreementMonths: hostingAgreementMonthsState.reducer,\n});\n\nconst customerState = {\n api,\n entity,\n actions,\n reducer: customerReducer,\n};\n\nexport default customerState;\n","import { createEntityHooks } from \"../common/entity\";\nimport state from \"./state\";\n\nexport const { useEntities: useCustomers, useEntity: useCustomer } =\n createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n expire: {\n key: \"days\",\n value: 3,\n },\n });\n","import React from \"react\";\nimport { Form } from \"react-bootstrap\";\n\nimport { useCustomer } from \"./hooks\";\n\nexport default function CustomerName({ id }) {\n const { customer } = useCustomer({ id });\n if (!customer) return <>{id};\n\n return <>{customer.name};\n}\n\nexport function CustomerNameFormControl({ id }) {\n const { customer } = useCustomer({ id });\n const displayVal = !customer ? id : customer?.name;\n\n return ;\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport contactState from \"./state\";\n\nexport const {\n useEntities: useContacts,\n useEntity: useContact,\n useEntitiesBySearch: useContactsByCustomer,\n} = createEntityHooks({\n entity: contactState.entity,\n actions: contactState.actions,\n parseId: (id) => {\n const nextId = parseIntId(id);\n return nextId === 0 ? undefined : nextId;\n },\n});\n","import _ from \"lodash\";\nimport React, { useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\n\nimport Mailto from \"../common/details/Mailto\";\nimport Tel from \"../common/details/Tel\";\nimport { formatPhone } from \"../common/functions/phone\";\nimport { useContact } from \"./hooks\";\n\nexport default function ContactLink({\n id,\n source,\n sourceType = \"Source\",\n isLoading = false,\n mailto = {},\n canGet = \"auto\",\n label,\n}) {\n const { contact, loading: contactLoading } = useContact({\n id,\n canGet,\n });\n\n const loading = contactLoading || isLoading;\n\n const [show, setShow] = useState(false);\n\n let c = {\n name: \"\",\n email: \"\",\n phones: [],\n phoneCustomer: \"\",\n titles: [],\n };\n if ((_.isUndefined(contact) || _.isUndefined(source)) && loading) {\n c.name = ;\n } else {\n c.name = `${contact?.name || \"No Contact\"}`;\n }\n\n c.email = contact?.email;\n\n if (contact?.phones?.length) {\n contact.phones.forEach((phone) => {\n c.phones.push({\n value: formatPhone(phone.number, phone.extention),\n type: phone.type,\n });\n });\n }\n\n c.phones.push({ value: formatPhone(source?.phone), type: sourceType });\n\n if (contact?.title) c.titles.push(contact.title);\n if (contact?.types?.length) c.titles = c.titles.concat(contact.types);\n\n return (\n <>\n !loading && setShow(true)}>\n \n {_.isUndefined(label) ? c.name : label}\n \n \n setShow(false)}\n aria-labelledby=\"contained-modal-title-vcenter\"\n >\n \n \n {c?.name}\n \n \n\n \n

{source?.name}

\n {c?.titles?.join(\", \")}\n {c.phones.map((phone, idx) => (\n \n \n \n ))}\n \n \n {c?.email || \"Unavailable\"}\n \n \n
\n \n \n );\n}\n\nfunction ContactField({ title, value, children }) {\n if (_.isUndefined(value) || !value) return null;\n return (\n <>\n
\n {title}\n

{children || value}

\n \n );\n}\n","import React from \"react\";\n\nimport { SelectColumnFilterWithOptions } from \"../common/tables/TableFilters\";\nimport { useCustomers } from \"./hooks\";\n\nexport default function CustomerTableFilter({ column }) {\n const { filterValue } = column;\n const { customers } = useCustomers();\n const _options = customers\n .filter((s) => s.inactive === false || s.id === filterValue)\n .map((f) => {\n return { label: f.name, value: f.id };\n });\n return ;\n}\n","import React, { useMemo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport Mailto from \"../common/details/Mailto\";\nimport Tel from \"../common/details/Tel\";\nimport { formatPhone } from \"../common/functions/phone\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport CustomerTableFilter from \"../customers/CustomerTableFilter\";\nimport ContactLink from \"./ContactLink\";\n\nconst DEFAULT_COMPONENTS = {\n Customer: ({ value }) => (\n \n {value}\n \n ),\n};\n\nexport default function ContactTable({\n contacts,\n layout,\n contactLink = true,\n Components: OverrideComponents,\n ...props\n}) {\n const Components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...OverrideComponents }),\n [OverrideComponents],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"name\",\n Header: \"Name\",\n accessor: \"name\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: contact } }) =>\n contactLink ? (\n \n ) : (\n value\n ),\n },\n {\n id: \"customer\",\n Header: \"Customer\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"equals\",\n Cell: Components.Customer,\n },\n {\n id: \"title\",\n Header: \"Title\",\n accessor: \"title\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"type\",\n id: \"Types\",\n disablefilter: true,\n accessor: \"types\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value }) => (\n \n
\n {value.map((p, index) => (\n \n {p}\n \n ))}\n \n \n ),\n },\n {\n id: \"phones\",\n Header: \"Phone(s)\",\n disableFilter: true,\n accessor: (contact) => {\n const phones =\n contact?.phones?.map((phone) => ({\n value: formatPhone(phone.number, phone.extention),\n type: phone.type,\n })) || [];\n return phones.filter((p) => p.value);\n },\n\n Cell: ({ value }) => (\n \n \n {value.map((p, index) => (\n \n \n \n ({p.type})\n \n \n ))}\n \n \n ),\n },\n {\n id: \"email\",\n Header: \"Email\",\n accessor: \"email\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value }) => ,\n },\n ],\n [Components, contactLink],\n );\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport contactTypeState from \"./state\";\n\nexport const { useEntities: useContactTypes, useEntity: useContactType } =\n createEntityHooks({\n entity: contactTypeState.entity,\n actions: contactTypeState.actions,\n });\n","import { entitySelect } from \"../../common/entity\";\nimport { useContactTypes } from \"./hooks\";\n\nconst ContactTypeSelect = entitySelect({\n name: \"contactType\",\n useEntities: useContactTypes,\n});\n\nexport default ContactTypeSelect;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Button, Col, Form, Modal, Row } from \"react-bootstrap\";\nimport { toast } from \"react-toastify\";\n\nimport shark from \"../apis/shark\";\nimport ContactTable from \"./ContactTable\";\nimport ContactTypeSelect from \"./contactTypes/ContactTypeSelect\";\n\n// don't move this inside the function unless you memo it\nconst layout = [\"name\", \"customer\", \"title\", \"phones\", \"email\"];\n\nexport default function ContactLookupModal({ show, onHide, TableComponents }) {\n const [tableData, setTableData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [types, setTypes] = useState([]);\n const [searchValue, setSearchValue] = useState(\"\");\n\n const ref = useRef();\n\n useEffect(() => {\n if (show) ref.current.focus();\n }, [show]);\n\n const onSubmit = () => {\n setLoading(true);\n shark\n .post({\n command: \"contactLookup\",\n search: searchValue,\n contactTypes: types,\n })\n .then((result) => {\n setTableData(result.responseData.contacts);\n })\n .catch((result) => {\n toast.error(result);\n console.log(result);\n })\n .finally(() => {\n setLoading(false);\n ref.current.focus();\n });\n };\n\n return (\n \n \n \n Customer Contact Lookup\n \n \n \n \n \n \n \n Type at least 3 characters then press Enter and/or\n choose type(s) and hit GO\n \n {\n console.log(v);\n setSearchValue(v);\n }}\n onEnter={onSubmit}\n disabled={loading}\n />\n \n \n \n \n \n Contact Type\n {\n console.log(v);\n setTypes(v);\n }}\n disabled={loading}\n value={types}\n isMulti\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst SearchInput = React.forwardRef(({ onEnter, disabled, onChange }, ref) => {\n const [query, setQuery] = useState(\"\");\n const handleEnter = (event) => {\n if (event.keyCode === 13) {\n onEnter(query);\n }\n };\n return (\n {\n setQuery(e.target.value);\n if (onChange) {\n onChange(e.target.value);\n }\n }}\n onKeyDown={handleEnter}\n disabled={disabled}\n />\n );\n});\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport { useContactsByCustomer } from \"./hooks\";\n\nconst ContactSelectByCustomer = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n customerId,\n placeholder = \"Select Contact...\",\n ...props\n },\n ref,\n ) => {\n const { contacts, loading } = useContactsByCustomer({\n search: { customerId },\n canGet: !!customerId,\n });\n\n const _options = _.sortBy(\n contacts\n .filter((c) => c.inactive === false || c.id === value)\n .map((f) => {\n return { label: f.name, value: parseIntId(f.id) };\n }),\n\n \"label\",\n );\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n);\n\nexport default ContactSelectByCustomer;\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nexport default function DetailSection({ title, children }) {\n return (\n \n \n \n \n

{title}

\n \n \n {children}\n \n \n );\n}\n","import React from \"react\";\nimport { Table } from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\n\nexport default function DetailTable({ fields, isLoading = false, ...props }) {\n return (\n
\n {column.render(\"Footer\")}\n
\n \n {fields.map((f, seq) => {\n if (f?.hide === true) return null;\n return (\n \n \n \n \n );\n })}\n \n
{!isLoading ? f.header : }\n {!isLoading ? f.value : }\n
\n );\n}\n","import React from \"react\";\n\nexport default function NavSidebar({ children }) {\n return
    {children}
;\n}\n","import _ from \"lodash\";\nimport React, { useEffect } from \"react\";\nimport { Col, Container, Row } from \"react-bootstrap\";\n\nimport NavSidebar from \"../navs/NavSidebar\";\n\nexport default function Page({\n title,\n heading,\n lead,\n navSidebar,\n children,\n tableOfContents,\n}) {\n const contents = _.isUndefined(tableOfContents)\n ? React.Children.map(children, (c) => c?.props?.title)\n : tableOfContents;\n\n if (title) document.title = title;\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n // if they don't want a nav side bar, then LG and XL viewing formats\n // will be closer to 12.\n // if they don't want table of contents then XL side will be closer to 12.\n // LG already ignores Table of contents.\n // MD ignores both.\n const lgFactor = navSidebar === false ? 0 : 2;\n const xlFactor = tableOfContents === false ? 0 : 2;\n const colSizes = { xl: 12 - lgFactor - xlFactor, lg: 12 - lgFactor, md: 12 };\n\n return (\n \n \n {navSidebar !== false ? (\n \n {navSidebar}\n \n ) : null}\n \n \n \n

{heading ? heading : title}

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

{lead}

\n \n
\n \n {children}\n \n \n
\n \n {contents ? : null}\n
\n
\n );\n}\n\nfunction TableOfContents({ contents }) {\n return (\n \n \n {contents?.map((c) => (\n
  • \n \n {c}\n \n
  • \n ))}\n
    \n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router\";\n\nimport DetailSection from \"../common/details/DetailSection\";\nimport DetailTable from \"../common/details/DetailTable\";\nimport Page from \"../common/pages/Page\";\nimport { useContact } from \"./hooks\";\n\nfunction Details({ contact, isLoading }) {\n if (_.isUndefined(contact)) {\n return (\n \n {isLoading ?

    Loading...

    :

    Contact Unavailable

    }\n
    \n );\n }\n\n return (\n \n {contact?.name}\n \n \n \n \n );\n}\n\nexport default function ContactShow() {\n const id = parseInt(useParams().id);\n const { contact } = useContact({ id });\n return (\n \n \n
    \n \n \n );\n}\n","import React from \"react\";\n\nimport ContactTable from \"./ContactTable\";\nimport { useContactsByCustomer } from \"./hooks\";\n\nconst layout = [\"name\", \"title\", \"types\", \"phones\", \"email\"];\n\nexport default function ContactTableByCustomer({ customerId }) {\n const { contacts, loading, reset } = useContactsByCustomer({\n search: { customerId },\n canGet: true,\n });\n\n return (\n reset({ customerId })}\n skeletonLines={8}\n />\n );\n}\n","import { entityDescription } from \"../../common/entity\";\nimport { useContactType } from \"./hooks\";\n\nconst ContactTypeDescription = entityDescription({\n name: \"contactType\",\n useEntity: useContactType,\n});\n\nexport default ContactTypeDescription;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useContactTypes } from \"./hooks\";\n\nconst ContactTypeTableFilter = entityTableFilter({\n name: \"contactType\",\n useEntities: useContactTypes,\n});\n\nexport default ContactTypeTableFilter;\n","import ContactTypeDescription from \"./ContactTypeDescription\";\nimport ContactTypeSelect from \"./ContactTypeSelect\";\nimport ContactTypeTableFilter from \"./ContactTypeTableFilter\";\nimport { useContactType, useContactTypes } from \"./hooks\";\nimport contactTypeState from \"./state\";\n\nconst ContactType = {\n // Backend API\n api: contactTypeState.api,\n // State\n actions: contactTypeState.actions,\n selectors: contactTypeState.entity.selectors,\n // Hooks\n useAll: useContactTypes,\n useOne: useContactType,\n // Components\n Select: ContactTypeSelect,\n Description: ContactTypeDescription,\n TableFilter: ContactTypeTableFilter,\n};\nexport default ContactType;\n","import React from \"react\";\nimport { Redirect, Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport ContactLink from \"./ContactLink\";\nimport ContactLookupModal from \"./ContactLookupModal\";\nimport SelectByCustomer from \"./ContactSelectByCustomer\";\nimport Show from \"./ContactShow\";\nimport Table from \"./ContactTable\";\nimport ContactTableByCustomer from \"./ContactTableByCustomer\";\nimport ContactType from \"./contactTypes\";\nimport { useContact, useContacts, useContactsByCustomer } from \"./hooks\";\nimport state from \"./state\";\n\nexport function Routing() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nconst Contact = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useContact,\n useAll: useContacts,\n useSearch: useContactsByCustomer,\n // Components\n Show,\n Table,\n Link: ContactLink,\n SelectByCustomer,\n TableByCustomer: ContactTableByCustomer,\n LookupModal: ContactLookupModal,\n ContactType: ContactType,\n // Related Entity Objects\n};\n\nexport default Contact;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { useCustomer } from \"./hooks\";\n\nexport default function CustomerLink({ id }) {\n const { customer } = useCustomer({ id });\n\n if (!customer?.id) return ;\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n \n {customer?.name}\n \n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { createFilter } from \"react-select\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport useSettings from \"../settings/useSettings\";\nimport { useCustomers } from \"./hooks\";\n\nconst filterOption = createFilter({\n ignoreCase: true,\n ignoreAccents: true,\n matchFromStart: true,\n stringify: ({ data }) => {\n return `${data?.sortName?.replace(/[-']/g, \"\") || \"\"} ${data.label}`;\n },\n trim: true,\n});\n\nconst CustomersSelect = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n champion,\n placeholder = \"Select Customer...\",\n shouldValuesSortLikeOptions = false,\n filter = (c) =>\n (c.inactive === false || c.id === value) &&\n (!champion || champion === c.championId),\n ...props\n },\n ref,\n ) => {\n const { customers, loading } = useCustomers();\n const { settings: { customerSort } = {} } = useSettings();\n\n const _options = customers\n .filter(filter)\n .map((f) => {\n return { label: f.name, value: f.id, sortName: f.sortName };\n })\n .sort((a, b) => {\n const getSortValue = (opt) =>\n customerSort === \"A\" || !opt?.sortName ? opt.label : opt.sortName;\n const sortValueA = getSortValue(a);\n const sortValueB = getSortValue(b);\n return sortValueA.toLowerCase().localeCompare(sortValueB.toLowerCase());\n });\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = shouldValuesSortLikeOptions\n ? _options.filter((o) => value.includes(o.value))\n : value.map((v) => _.find(_options, (o) => o.value === v));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n);\n\nexport default CustomersSelect;\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport { _date } from \"../common/functions/dates\";\nimport customerState from \"./state\";\n\nfunction CustomerConditions({\n name,\n conditions,\n warranty,\n futureUpgrade,\n today,\n isPoRequired,\n}) {\n const _warrantyExpirationDate = _date.fromStamp(warranty);\n const _futureUpgrade = _date.fromStamp(futureUpgrade);\n return (\n <>\n \n \n
    {name}
    \n \n
    \n \n \n {isPoRequired ? PO is Required : null}\n {_futureUpgrade > today ? (\n

    Upcoming upgrade on {_date.display(_futureUpgrade)}

    \n ) : null}\n {_warrantyExpirationDate < today ? (\n

    \n Warranty Expired as of {_date.display(_warrantyExpirationDate)}\n

    \n ) : null}\n \n
    \n {conditions.split(/\\r\\n|\\r|\\n/).map((x, idx) => (\n \n {x}\n \n ))}\n \n );\n}\n\nexport default function CustomerSpecialWorkConditions({\n customers,\n isLoading = false,\n}) {\n const customerEntities = useSelector((state) =>\n customerState.entity.selectors.selectByIds(state, customers || []),\n );\n\n const today = useMemo(() => moment(), []);\n\n const customersWithConditions = customerEntities?.filter(\n (c) =>\n c?.specialWorkConditions ||\n _date.fromStamp(c?.warrantyExpirationDate) < today ||\n _date.fromStamp(c?.futureUpgradeDate) > today,\n );\n\n if (isLoading || _.isEmpty(customersWithConditions)) return null;\n\n return (\n \n \n \n \n
    Special Work Conditions
    \n \n
    \n {customersWithConditions.map((c) => (\n \n ))}\n \n
    \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { createEntityHooks } from \"../../common/entity\";\nimport state from \"./state\";\n\nconst { useEntities: useHostingAgreements, useEntity } = createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n});\n\nconst useHostingAgreement = ({ id, ...args } = {}) => {\n const dispatch = useDispatch();\n return {\n createAttachment: useCallback(\n (args) =>\n dispatch(state.actions.createAttachment({ id, ...args })).then(\n unwrapResult,\n ),\n [dispatch, id],\n ),\n ...useEntity({ id, ...args }),\n };\n};\n\nexport { useHostingAgreement, useHostingAgreements };\n","import { bool, number, object, string } from \"yup\";\n\nconst awsInstanceTypeSchema = object().shape({\n vCpu: number().label(\"vCPUs\").required().min(0),\n memory: number().label(\"Memory in GB\").min(0),\n creditsPerHour: number().label(\"Credits per hours\").min(0),\n id: string().label(\"Id\").required().max(20),\n isInactive: bool().required().default(false),\n});\n\nexport default awsInstanceTypeSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport awsInstanceTypeSchema from \"./awsInstanceTypeSchema\";\n\nexport default function AwsInstanceTypeEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: awsInstanceTypeSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction AwsInstanceTypeForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function AwsInstanceTypeLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import shark from \"../../../apis/shark\";\n\nfunction getAwsInstanceTypesAPI() {\n const payload = {\n command: \"getAwsInstanceTypes\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.awsInstanceTypes,\n }));\n}\n\nfunction getAwsInstanceTypeAPI({ id }) {\n const payload = {\n command: \"getAwsInstanceType\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createAwsInstanceTypeAPI(awsInstanceType) {\n const payload = {\n command: \"createAwsInstanceType\",\n ...awsInstanceType,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateAwsInstanceTypeAPI(awsInstanceType) {\n const payload = {\n command: \"updateAwsInstanceType\",\n ...awsInstanceType,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getAwsInstanceTypesAPI,\n getOne: getAwsInstanceTypeAPI,\n createOne: createAwsInstanceTypeAPI,\n updateOne: updateAwsInstanceTypeAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"awsInstanceTypes\",\n type: \"servers/awsInstanceTypes\",\n getState: (state) => state.servers.awsInstanceTypes,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst awsInstanceTypeState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default awsInstanceTypeState;\n","import { createEntityHooks } from \"../../common/entity\";\nimport awsInstanceTypeState from \"./state\";\n\nexport const {\n useEntities: useAwsInstanceTypes,\n useEntity: useAwsInstanceType,\n} = createEntityHooks({\n entity: awsInstanceTypeState.entity,\n actions: awsInstanceTypeState.actions,\n});\n","import { entitySelect } from \"../../common/entity\";\nimport { useAwsInstanceTypes } from \"./hooks\";\n\nconst AwsInstanceTypeSelect = entitySelect({\n name: \"awsInstanceType\",\n useEntities: useAwsInstanceTypes,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.id,\n});\n\nexport default AwsInstanceTypeSelect;\n","import AwsInstanceTypeEditor from \"./AwsInstanceTypeEditor\";\nimport AwsInstanceTypeLink from \"./AwsInstanceTypeLink\";\nimport AwsInstanceTypeSelect from \"./AwsInstanceTypeSelect\";\nimport Table from \"./AwsInstanceTypeTable\";\nimport { useAwsInstanceType, useAwsInstanceTypes } from \"./hooks\";\nimport awsInstanceTypeState from \"./state\";\n\nconst AwsInstanceType = {\n // API\n api: awsInstanceTypeState.api,\n // State\n actions: awsInstanceTypeState.actions,\n selectors: awsInstanceTypeState.entity.selectors,\n // Hooks\n useOne: useAwsInstanceType,\n useAll: useAwsInstanceTypes,\n // Components\n Table,\n Link: AwsInstanceTypeLink,\n Editor: AwsInstanceTypeEditor,\n Select: AwsInstanceTypeSelect,\n // Related Entity Objects\n};\n\nexport default AwsInstanceType;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport AwsInstanceTypeLink from \"./AwsInstanceTypeLink\";\n\nexport default function AwsInstanceTypeTable({\n awsInstanceTypes,\n awsInstanceTypeLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"vCpus\", \"Memory\", \"Credits Per Hour\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: awsInstanceType } }) =>\n awsInstanceTypeLink ? (\n \n {value || awsInstanceType?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"vCpus\",\n Header: \"vCpus\",\n accessor: \"vCpus\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Memory\",\n Header: \"Memory (GB)\",\n accessor: \"memory\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Credits Per Hour\",\n Header: \"Credits Per Hour\",\n accessor: \"creditsPerHour\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n ],\n [awsInstanceTypeLink],\n );\n return (\n \n );\n}\n","import { bool, object, string } from \"yup\";\n\nconst awsRegionSchema = object().shape({\n regionDescription: string().label(\"Region Description\").required().max(30),\n id: string().label(\"Id\").required().max(20),\n isInactive: bool().required().default(false),\n});\n\nexport default awsRegionSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport awsRegionSchema from \"./awsRegionSchema\";\n\nexport default function AwsRegionEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: awsRegionSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction AwsRegionForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function AwsRegionLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import shark from \"../../../apis/shark\";\n\nfunction getAwsRegionsAPI() {\n const payload = {\n command: \"getAwsRegions\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.awsRegions,\n }));\n}\n\nfunction getAwsRegionAPI({ id }) {\n const payload = {\n command: \"getAwsRegion\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createAwsRegionAPI(awsRegion) {\n const payload = {\n command: \"createAwsRegion\",\n ...awsRegion,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateAwsRegionAPI(awsRegion) {\n const payload = {\n command: \"updateAwsRegion\",\n ...awsRegion,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getAwsRegionsAPI,\n getOne: getAwsRegionAPI,\n createOne: createAwsRegionAPI,\n updateOne: updateAwsRegionAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"awsRegions\",\n type: \"servers/awsRegions\",\n getState: (state) => state.servers.awsRegions,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst awsRegionState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default awsRegionState;\n","import { createEntityHooks } from \"../../common/entity\";\nimport awsRegionState from \"./state\";\n\nexport const { useEntities: useAwsRegions, useEntity: useAwsRegion } =\n createEntityHooks({\n entity: awsRegionState.entity,\n actions: awsRegionState.actions,\n });\n","import { entitySelect } from \"../../common/entity\";\nimport { useAwsRegions } from \"./hooks\";\n\nconst AwsRegionSelect = entitySelect({\n name: \"awsRegion\",\n useEntities: useAwsRegions,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.id + \"(\" + e.regionDescription + \")\",\n});\n\nexport default AwsRegionSelect;\n","import AwsRegionEditor from \"./AwsRegionEditor\";\nimport AwsRegionLink from \"./AwsRegionLink\";\nimport AwsRegionSelect from \"./AwsRegionSelect\";\nimport Table from \"./AwsRegionTable\";\nimport { useAwsRegion, useAwsRegions } from \"./hooks\";\nimport awsRegionState from \"./state\";\n\nconst AwsRegion = {\n // API\n api: awsRegionState.api,\n // State\n actions: awsRegionState.actions,\n selectors: awsRegionState.entity.selectors,\n // Hooks\n useOne: useAwsRegion,\n useAll: useAwsRegions,\n // Components\n Table,\n Link: AwsRegionLink,\n Editor: AwsRegionEditor,\n Select: AwsRegionSelect,\n // Related Entity Objects\n};\n\nexport default AwsRegion;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport AwsRegionLink from \"./AwsRegionLink\";\n\nexport default function AwsRegionTable({\n awsRegions,\n awsRegionLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Region Description\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: awsRegion } }) =>\n awsRegionLink ? (\n \n {value || awsRegion?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Region Description\",\n Header: \"Region Description\",\n accessor: \"regionDescription\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n ],\n [awsRegionLink],\n );\n return (\n \n );\n}\n","import { bool, object, string } from \"yup\";\n\nconst awsZoneSchema = object().shape({\n regionDescription: string().label(\"Region Description\").required().max(30),\n id: string().label(\"Id\").required().max(20),\n awsRegion: string().label(\"Id\").required().max(19),\n isInactive: bool().required().default(false),\n});\n\nexport default awsZoneSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport AwsRegion from \"../awsRegions\";\nimport awsZoneSchema from \"./awsZoneSchema\";\n\nexport default function AwsZoneEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: awsZoneSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction AwsZoneForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function AwsZoneLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import shark from \"../../../apis/shark\";\n\nfunction getAwsZonesAPI() {\n const payload = {\n command: \"getAwsZones\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.awsZones,\n }));\n}\n\nfunction getAwsZoneAPI({ id }) {\n const payload = {\n command: \"getAwsZone\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createAwsZoneAPI(awsZone) {\n const payload = {\n command: \"createAwsZone\",\n ...awsZone,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateAwsZoneAPI(awsZone) {\n const payload = {\n command: \"updateAwsZone\",\n ...awsZone,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getAwsZonesAPI,\n getOne: getAwsZoneAPI,\n createOne: createAwsZoneAPI,\n updateOne: updateAwsZoneAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"awsZones\",\n type: \"servers/awsZones\",\n getState: (state) => state.servers.awsZones,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst awsZoneState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default awsZoneState;\n","import { createEntityHooks } from \"../../common/entity\";\nimport awsZoneState from \"./state\";\n\nexport const { useEntities: useAwsZones, useEntity: useAwsZone } =\n createEntityHooks({\n entity: awsZoneState.entity,\n actions: awsZoneState.actions,\n });\n","import { entitySelect } from \"../../common/entity\";\nimport { useAwsZones } from \"./hooks\";\n\nconst AwsZoneSelect = entitySelect({\n name: \"awsZone\",\n useEntities: useAwsZones,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.id + \"(\" + e.regionDescription + \")\",\n});\n\nexport default AwsZoneSelect;\n","import AwsZoneEditor from \"./AwsZoneEditor\";\nimport AwsZoneLink from \"./AwsZoneLink\";\nimport AwsZoneSelect from \"./AwsZoneSelect\";\nimport Table from \"./AwsZoneTable\";\nimport { useAwsZone, useAwsZones } from \"./hooks\";\nimport awsZoneState from \"./state\";\n\nconst AwsZone = {\n // API\n api: awsZoneState.api,\n // State\n actions: awsZoneState.actions,\n selectors: awsZoneState.entity.selectors,\n // Hooks\n useOne: useAwsZone,\n useAll: useAwsZones,\n // Components\n Table,\n Link: AwsZoneLink,\n Editor: AwsZoneEditor,\n Select: AwsZoneSelect,\n // Related Entity Objects\n};\n\nexport default AwsZone;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport AwsZoneLink from \"./AwsZoneLink\";\n\nexport default function AwsZoneTable({\n awsZones,\n awsZoneLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Region Description\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: awsZone } }) =>\n awsZoneLink ? (\n {value || awsZone?.id}\n ) : (\n value\n ),\n },\n {\n id: \"Region Description\",\n Header: \"Region Description\",\n accessor: \"regionDescription\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n ],\n [awsZoneLink],\n );\n return (\n \n );\n}\n","import shark from \"../../../apis/shark\";\n\nfunction getS3BucketsAPI({ customerId } = {}) {\n const args = { ...(customerId ? { customerId: customerId } : null) };\n const payload = {\n command: \"getS3Buckets\",\n ...args,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.s3Buckets,\n searchArgs: args,\n }));\n}\n\nfunction getS3BucketAPI({ id }) {\n const payload = {\n command: \"getS3Bucket\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createS3BucketAPI(s3Bucket) {\n const payload = {\n command: \"createS3Bucket\",\n ...s3Bucket,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateS3BucketAPI(s3Bucket) {\n const payload = {\n command: \"updateS3Bucket\",\n ...s3Bucket,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getS3BucketsAPI,\n getOne: getS3BucketAPI,\n createOne: createS3BucketAPI,\n updateOne: updateS3BucketAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"s3Bucket\",\n type: \"servers/s3Buckets\",\n getState: (state) => state.servers.s3Buckets,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst s3BucketState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default s3BucketState;\n","import { createEntityHooks } from \"../../common/entity\";\nimport s3BucketState from \"./state\";\n\nexport const {\n useEntities: useS3Buckets,\n useEntity: useS3Bucket,\n useEntitiesBySearch: useS3BucketsByCustomer,\n} = createEntityHooks({\n entity: s3BucketState.entity,\n actions: s3BucketState.actions,\n});\n","import { entitySelect } from \"../../common/entity\";\nimport { useS3Buckets } from \"./hooks\";\n\nconst S3BucketSelect = entitySelect({\n name: \"s3Bucket\",\n useEntities: useS3Buckets,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.id,\n});\n\nexport default S3BucketSelect;\n","import { number, object, string } from \"yup\";\n\nconst hostingAgreementSchema = object().shape({\n customerId: number().label(\"Customer\").required(),\n serverType: string().label(\"Server Type\").required().max(1),\n billingDescription: string().label(\"Billing Description\").max(220),\n information: string().label(\"Information\").max(500),\n currentMonthlyPrice: number().label(\"Current $\").min(0),\n maxPrice: number().label(\"Max price $\").min(0),\n originalMonthlyPrice: number().label(\"Original $\").min(0),\n effectiveMonth: string().label(\"Effective Month\").required(),\n awsZone: string().label(\"Zone\"),\n awsRegion: string().label(\"Region\"),\n s3Bucket: string().label(\"S3 Bucket\").max(63),\n awsInstanceType: string().label(\"Instance Type\"),\n awsInstanceId: string().label(\"Instance Id\").max(20),\n diskSpace: string().label(\"Disk space\").max(30),\n});\n\nexport default hostingAgreementSchema;\n","export const HOSTING_TYPES = {\n P: {\n id: \"P\",\n description: \"Production\",\n },\n T: {\n id: \"T\",\n description: \"Test\",\n },\n M: {\n id: \"M\",\n description: \"Mirror\",\n },\n R: {\n id: \"R\",\n description: \"Printer\",\n },\n W: {\n id: \"W\",\n description: \"Web\",\n },\n Y: {\n id: \"Y\",\n description: \"Web Mirror\",\n },\n A: {\n id: \"A\",\n description: \"Analytics\",\n },\n E: {\n id: \"E\",\n description: \"EDI/FTP\",\n },\n F: {\n id: \"F\",\n description: \"Shared FTP Server\",\n },\n 3: {\n id: \"3\",\n description: \"S3\",\n },\n O: {\n id: \"O\",\n description: \"Other\",\n },\n};\n","import { isUndefined } from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport { _date } from \"../../common/functions/dates\";\nimport AwsInstanceType from \"../../servers/awsInstanceTypes\";\nimport AwsRegion from \"../../servers/awsRegions\";\nimport AwsZone from \"../../servers/awsZones\";\nimport { useS3Buckets } from \"../../servers/s3Buckets/hooks\";\nimport S3BucketSelect from \"../../servers/s3Buckets/S3BucketSelect\";\nimport CustomerSelect from \"../CustomerSelect\";\nimport hostingAgreementSchema from \"./hostingAgreementSchema\";\nimport { HOSTING_TYPES } from \"./types\";\n\nexport default function HostingAgreementEditor({\n values: { ...values } = {},\n onSubmit,\n isDisabled = false,\n isNew = false,\n}) {\n useS3Buckets({\n canGet: true,\n });\n\n AwsZone.useAll({\n canGet: true,\n });\n AwsRegion.useAll({\n canGet: true,\n });\n AwsInstanceType.useAll({\n canGet: true,\n });\n\n return (\n <>\n {\n const effectiveMonth = _date.monthStamp(values.effectiveMonth);\n const expirationMonth = values.expirationMonth\n ? _date.monthStamp(values.expirationMonth)\n : \"\";\n const payload = { ...values, effectiveMonth, expirationMonth };\n onSubmit(payload);\n }}\n schema={{ schema: hostingAgreementSchema }}\n isDisabled={isDisabled}\n showDevTool\n >\n \n \n \n );\n}\n\n// eslint-disable-next-line unused-imports/no-unused-vars\nfunction HostingAgreementForm({ isNew, isDisabled }) {\n const { watch, submitForm } = useFormContext();\n const serverType = watch(\"serverType\");\n\n const monthlyLabel =\n serverType === \"F\" ? \"Monthly $ (per user)\" : \"Monthly $\";\n\n useFormsKeys();\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 {serverType === \"F\" ? null : serverType === \"3\" ? (\n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n {serverType === \"F\" ? (\n \n \n \n ) : null}\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n
    \n );\n}\nfunction TypeSelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n disabled={isDisabled}\n isInvalid={isUndefined(isInvalid) ? !!error : isInvalid}\n {...field}\n {...props}\n >\n \n {Object.values(HOSTING_TYPES).map((l, idx) => (\n \n ))}\n \n \n {error?.message}\n \n \n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function HostingAgreementLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { useHostingAgreement, useHostingAgreements } from \"./hooks\";\nimport HostingAgreementEditor from \"./HostingAgreementEditor\";\nimport HostingAgreementLink from \"./HostingAgreementLink\";\nimport HostingAgreementTable from \"./HostingAgreementTable\";\nimport state from \"./state\";\n\nconst HostingAgreement = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useHostingAgreement,\n useAll: useHostingAgreements,\n // Components\n Editor: HostingAgreementEditor,\n Table: HostingAgreementTable,\n Link: HostingAgreementLink,\n};\nexport default HostingAgreement;\n","import React, { useMemo } from \"react\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport CustomerLink from \"../CustomerLink\";\nimport CustomerTableFilter from \"../CustomerTableFilter\";\nimport HostingAgreementLink from \"./HostingAgreementLink\";\nimport { HOSTING_TYPES } from \"./types\";\n\nexport default function HostingAgreementTable({\n data,\n Components: OverrideComponents,\n layout = [\n \"id\",\n \"Customer\",\n \"Server Type\",\n \"Billing Description\",\n \"Current $\",\n \"Original $\",\n \"Information\",\n \"Aws Instance Id\",\n \"Effective\",\n \"Expiration\",\n ],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"id\",\n Header: \"Agreement Id\",\n accessor: \"id\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Server Type\",\n Header: \"Type\",\n accessor: (l) => HOSTING_TYPES[l?.serverType]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Aws Instance Id\",\n Header: \"Aws Instance Id\",\n accessor: \"awsInstanceId\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Current $\",\n Header: \"Current $\",\n accessor: \"currentMonthlyPrice\",\n dataType: \"currency\",\n },\n {\n id: \"Original $\",\n Header: \"Original $\",\n accessor: \"originalMonthlyPrice\",\n dataType: \"currency\",\n },\n {\n id: \"Billing Description\",\n Header: \"Billing Description\",\n accessor: \"billingDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Information\",\n Header: \"Information\",\n accessor: \"information\",\n },\n {\n id: \"Expiration\",\n Header: \"Expiration\",\n accessor: \"expirationMonth\",\n Cell: ({ value }) => (\n {_date.displayMM_YYYY(_date.fromMonthStamp(value))}\n ),\n },\n {\n id: \"Effective\",\n Header: \"Effective\",\n accessor: \"effectiveMonth\",\n Cell: ({ value }) => (\n {_date.displayMM_YYYY(_date.fromMonthStamp(value))}\n ),\n },\n ],\n [],\n );\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport state from \"./state\";\n\nconst { useEntities: useHostingAgreementMonths, useEntity } = createEntityHooks(\n {\n entity: state.entity,\n actions: state.actions,\n },\n);\n\nconst useHostingAgreement = ({ id, ...args } = {}) => {\n return { ...useEntity({ id, ...args }) };\n};\n\nexport { useHostingAgreement, useHostingAgreementMonths };\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function S3BucketLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function ServerLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { useHostingAgreement } from \"./hooks\";\nimport HostingAgreementMonthExceptionTable from \"./HostingAgreementMonthExceptionsTable\";\nimport HostingAgreementMonthTable from \"./HostingAgreementMonthTable\";\nimport state from \"./state\";\n\nconst HostingAgreementMonth = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useHostingAgreement,\n // Components\n Table: HostingAgreementMonthTable,\n ExceptionsTable: HostingAgreementMonthExceptionTable,\n};\nexport default HostingAgreementMonth;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport AwsInstanceTypeLink from \"../../servers/awsInstanceTypes/AwsInstanceTypeLink\";\nimport AwsZoneLink from \"../../servers/awsZones/AwsZoneLink\";\nimport CustomerLink from \"../CustomerLink\";\nimport CustomerTableFilter from \"../CustomerTableFilter\";\nimport HostingAgreementLink from \"../hostingAgreements/HostingAgreementLink\";\nimport { HOSTING_TYPES } from \"../hostingAgreements/types\";\n\nexport default function HostingAgreementMonthTable({\n data,\n Components: OverrideComponents,\n layout = [\n \"Customer\",\n \"Hosting Agreement\",\n \"Server Type\",\n \"Billing Description\",\n \"Amount\",\n \"Status\",\n \"AWS Instance Id\",\n \"AWS Zone\",\n \"AWS Instance Type\",\n \"Information\",\n \"Status\",\n ],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Hosting Agreement\",\n Header: \"Hosting Agreement\",\n accessor: \"hostingAgreementId\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Status\",\n Header: \"Status\",\n accessor: \"status\",\n Cell: ({ value }) => (value === \"C\" ? \"Charge created\" : \"Open\"),\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Server Type\",\n Header: \"Server Type\",\n accessor: (l) => HOSTING_TYPES[l?.serverType]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Amount\",\n Header: \"Amount $\",\n accessor: \"amount\",\n },\n {\n id: \"Billing Description\",\n Header: \"Billing Description\",\n accessor: \"billingDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Information\",\n Header: \"Information\",\n accessor: \"information\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"AWS Instance Id\",\n Header: \"AWS Instance Id\",\n accessor: \"awsInstanceId\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"AWS Zone\",\n Header: \"AWS Zone\",\n accessor: \"awsZone\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Instance Type\",\n Header: \"AWS Instance Type\",\n accessor: \"awsInstanceType\",\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n return (\n {\n if (row.isGrouped) return {};\n if (row?.original.status === \"C\") {\n return {\n className: \"table-success\",\n };\n } else if (row?.original.exceptionsExist) {\n return {\n className: \"table-warning\",\n };\n } else {\n return {};\n }\n }}\n {...props}\n />\n );\n}\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport AwsInstanceTypeLink from \"../../servers/awsInstanceTypes/AwsInstanceTypeLink\";\nimport AwsZoneLink from \"../../servers/awsZones/AwsZoneLink\";\nimport S3BucketLink from \"../../servers/s3Buckets/S3BucketLink\";\nimport ServerLink from \"../../servers/ServerLink\";\nimport CustomerLink from \"../CustomerLink\";\nimport CustomerTableFilter from \"../CustomerTableFilter\";\nimport HostingAgreementLink from \"../hostingAgreements/HostingAgreementLink\";\nimport { HOSTING_TYPES } from \"../hostingAgreements/types\";\n\nexport default function HostingAgreementMonthExceptionsTable({\n data,\n Components: OverrideComponents,\n layout = [\n \"Customer\",\n \"Hosting Agreement\",\n \"Server\",\n \"Exception\",\n \"Agreed Server Type\",\n \"Server Type\",\n \"Agreed AWS Zone\",\n \"Server AWS Zone\",\n \"Agreed AWS Instance Type\",\n \"Server AWS Instance Type\",\n \"S3 Bucket\",\n ],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Hosting Agreement\",\n Header: \"Hosting Agreement\",\n accessor: \"hostingAgreementId\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Server\",\n Header: \"Server\",\n accessor: \"serverId\",\n Cell: (x) => (\n \n {x?.row?.original?.serverDescription}\n \n ),\n },\n {\n id: \"Server Type\",\n Header: \"Type\",\n accessor: (l) => HOSTING_TYPES[l?.serverType]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Agreed Server Type\",\n Header: \"Agreed Type\",\n accessor: (l) =>\n HOSTING_TYPES[l?.hostingAgreementServerType]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Exception\",\n Header: \"Exception\",\n accessor: \"exception\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Agreed AWS Zone\",\n Header: \"Agreed AWS Zone\",\n accessor: \"hostingAgreementAwsZone\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Agreed AWS Instance Type\",\n Header: \"Agreed AWS Instance Type\",\n accessor: \"hostingAgreementAwsInstanceType\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Server AWS Zone\",\n Header: \"Server AWS Zone\",\n accessor: \"serverAwsZone\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Server AWS Instance Type\",\n Header: \"Server AWS Instance Type\",\n accessor: \"serverAwsInstanceType\",\n Cell: ({ value }) => ,\n },\n {\n id: \"S3 Bucket\",\n Header: \"S3 Bucket\",\n accessor: \"bucketId\",\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n return (\n {\n if (row.isGrouped) return {};\n if (row?.original.status === \"C\") {\n return {\n className: \"table-success\",\n };\n } else if (row?.original.exceptionsExist) {\n return {\n className: \"table-warning\",\n };\n } else {\n return {};\n }\n }}\n {...props}\n />\n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport moduleState from \"./state\";\n\nexport const { useEntities: useModules, useEntity: useModule } =\n createEntityHooks({\n entity: moduleState.entity,\n actions: moduleState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useModule } from \"./hooks\";\n\nconst ModuleDescription = entityDescription({\n name: \"module\",\n useEntity: useModule,\n});\n\nexport default ModuleDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useModules } from \"./hooks\";\n\nconst ModuleSelect = entitySelect({\n name: \"module\",\n useEntities: useModules,\n getHookArgs: () => ({\n canGet: true,\n }),\n});\n\nexport default ModuleSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useModules } from \"./hooks\";\n\nconst ModuleTableFilter = entityTableFilter({\n name: \"module\",\n useEntities: useModules,\n});\n\nexport default ModuleTableFilter;\n","import { useModule, useModules } from \"./hooks\";\nimport ModuleDescription from \"./ModuleDescription\";\nimport ModuleSelect from \"./ModuleSelect\";\nimport ModuleTableFilter from \"./ModuleTableFilter\";\nimport state from \"./state\";\n\nconst Module = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useModule,\n useAll: useModules,\n // Components\n Select: ModuleSelect,\n Description: ModuleDescription,\n TableFilter: ModuleTableFilter,\n};\nexport default Module;\n","import { createEntityHooks } from \"../../common/entity\";\nimport organizationState from \"./state\";\n\nexport const { useEntities: useOrganizations, useEntity: useOrganization } =\n createEntityHooks({\n entity: organizationState.entity,\n actions: organizationState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useOrganization } from \"./hooks\";\n\nconst OrganizationDescription = entityDescription({\n name: \"organization\",\n useEntity: useOrganization,\n});\n\nexport default OrganizationDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useOrganizations } from \"./hooks\";\n\nconst OrganizationSelect = entitySelect({\n name: \"organization\",\n useEntities: useOrganizations,\n getHookArgs: () => ({\n canGet: true,\n }),\n});\n\nexport default OrganizationSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useOrganizations } from \"./hooks\";\n\nconst OrganizationTableFilter = entityTableFilter({\n name: \"organization\",\n useEntities: useOrganizations,\n});\n\nexport default OrganizationTableFilter;\n","import { useOrganization, useOrganizations } from \"./hooks\";\nimport OrganizationDescription from \"./OrganizationDescription\";\nimport OrganizationSelect from \"./OrganizationSelect\";\nimport OrganizationTableFilter from \"./OrganizationTableFilter\";\nimport state from \"./state\";\n\nconst Organization = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useOrganization,\n useAll: useOrganizations,\n // Components\n Select: OrganizationSelect,\n Description: OrganizationDescription,\n TableFilter: OrganizationTableFilter,\n};\nexport default Organization;\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { createEntityHooks } from \"../../common/entity\";\nimport state from \"./state\";\n\nconst { useEntities: useThirdPartyLicenses, useEntity } = createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n});\n\nconst useThirdPartyLicense = ({ id, ...args } = {}) => {\n const dispatch = useDispatch();\n return {\n createComment: useCallback(\n (args) =>\n dispatch(\n state.actions.createComment({\n customerThirdPartyLicense: id,\n ...args,\n }),\n ).then(unwrapResult),\n [dispatch, id],\n ),\n updateComment: useCallback(\n (args) =>\n dispatch(\n state.actions.updateComment({\n customerThirdPartyLicense: id,\n ...args,\n }),\n ).then(unwrapResult),\n [dispatch, id],\n ),\n ...useEntity({ id, ...args }),\n };\n};\n\nexport { useThirdPartyLicense, useThirdPartyLicenses };\n","import { number, object, string } from \"yup\";\n\nconst thirdPartyLicenseSchema = object().shape({\n customerId: number().label(\"Customer\").required(),\n type: string().label(\"Type\").required().max(30),\n});\n\nexport default thirdPartyLicenseSchema;\n","export const LICENSE_TYPES = {\n domainRegistration: {\n id: \"domainRegistration\",\n description: \"Domain Registration\",\n },\n sslCertWildcard: {\n id: \"sslCertWildcard\",\n description: \"SSL Certification: Wildcard\",\n },\n sslCertMulti: {\n id: \"sslCertMulti\",\n description: \"SSL Certification: Multi\",\n },\n sslCertSingle: {\n id: \"sslCertSingle\",\n description: \"SSL Certification: Single\",\n },\n sslLetsEncrypt: {\n id: \"sslLetsEncrypt\",\n description: \"SSL Let's Encrypt\",\n },\n};\n","import { isUndefined } from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport { _date } from \"../../common/functions/dates\";\nimport CustomerSelect from \"../CustomerSelect\";\nimport thirdPartyLicenseSchema from \"./thirdPartyLicenseSchema\";\nimport { LICENSE_TYPES } from \"./types\";\n\nexport default function ThirdPartyLicenseEditor({\n values: { expirationDate, ...values } = {},\n onSubmit,\n isDisabled = false,\n isNew = false,\n}) {\n return (\n \n onSubmit({\n expirationDate: expirationDate ? _date.stamp(expirationDate) : \"\",\n ...values,\n })\n }\n schema={{ schema: thirdPartyLicenseSchema }}\n isDisabled={isDisabled}\n showDevTool\n >\n \n \n );\n}\n\nfunction ThirdPartyLicenseForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n\nfunction TypeSelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field,\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n \n \n ))}\n \n \n {error?.message}\n \n \n );\n}\n","import { useThirdPartyLicense, useThirdPartyLicenses } from \"./hooks\";\nimport state from \"./state\";\nimport ThirdPartyLicenseEditor from \"./ThirdPartyLicenseEditor\";\nimport ThirdPartyLicenseTable from \"./ThirdPartyLicenseTable\";\n\nconst ThirdPartyLicense = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useThirdPartyLicense,\n useAll: useThirdPartyLicenses,\n // Components\n Editor: ThirdPartyLicenseEditor,\n Table: ThirdPartyLicenseTable,\n};\nexport default ThirdPartyLicense;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport CustomerLink from \"../CustomerLink\";\nimport CustomerTableFilter from \"../CustomerTableFilter\";\nimport { LICENSE_TYPES } from \"./types\";\n\nexport default function ThirdPartyLicenseTable({\n data,\n Components: OverrideComponents,\n layout = [\"customer\", \"type\", \"expirationDate\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n\n {\n id: \"type\",\n Header: \"Type\",\n accessor: (l) => LICENSE_TYPES[l?.type]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ row: { original: l }, value }) => (\n \n {value}\n \n ),\n },\n {\n id: \"expirationDate\",\n Header: \"Expiration Date\",\n accessor: \"expirationDate\",\n Cell: ({ value }) => _date.display(_date.fromStamp(value)),\n },\n ],\n [],\n );\n return (\n \n );\n}\n","import CustomerContract from \"./contracts\";\nimport CustomerChangedAlert from \"./CustomerChangedAlert\";\nimport CustomerContactLink from \"./CustomerContactLink\";\nimport CustomerLink from \"./CustomerLink\";\nimport CustomerLocationSelect from \"./CustomerLocationSelect\";\nimport CustomerName from \"./CustomerName\";\nimport CustomersSelect from \"./CustomerSelect\";\nimport CustomerSpecialWorkConditions from \"./CustomerSpecialWorkConditions\";\nimport CustomerTable from \"./CustomerTable\";\nimport CustomerTableFilter from \"./CustomerTableFilter\";\nimport { useCustomer, useCustomers } from \"./hooks\";\nimport HostingAgreement from \"./hostingAgreements\";\nimport HostingAgreementMonth from \"./hostingAgreementsMonth\";\nimport CustomerModules from \"./modules\";\nimport CustomerOrganizations from \"./organizations\";\nimport state from \"./state\";\nimport ThirdPartyLicense from \"./thirdPartyLicenses\";\n\nconst Customer = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useCustomer,\n useAll: useCustomers,\n // Components\n Table: CustomerTable,\n SpecialWorkConditions: CustomerSpecialWorkConditions,\n Select: CustomersSelect,\n LocationSelect: CustomerLocationSelect,\n Name: CustomerName,\n TableFilter: CustomerTableFilter,\n Link: CustomerLink,\n ContactLink: CustomerContactLink,\n ChangedAlert: CustomerChangedAlert,\n // Related Entity Objects\n Contracts: CustomerContract,\n Modules: CustomerModules,\n Organizations: CustomerOrganizations,\n ThirdPartyLicenses: ThirdPartyLicense,\n HostingAgreements: HostingAgreement,\n HostingAgreementMonths: HostingAgreementMonth,\n};\n\nexport default Customer;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport {\n DateRangeColumnFilter,\n filterDateRange,\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport { useCustomers } from \"./hooks\";\n\nexport default function CustomerTable({\n filter,\n initialSort,\n layout = [\n \"id\",\n \"name\",\n \"championId\",\n \"alias\",\n \"liveDate\",\n \"lastCodeDate\",\n \"lastUpgradeDate\",\n \"engineeringResponsibilty\",\n ],\n}) {\n const { customers, loading, reset } = useCustomers();\n\n const tableData = React.useMemo(\n () =>\n customers.filter((customer) => {\n if (customer.inactive === filter.active) return false;\n\n if (filter.modules?.length > 0) {\n let found = false;\n for (let i = 0; i < customer.modules.length; i++) {\n if (filter.modules.includes(customer.modules[i].id)) {\n found = true;\n break;\n }\n }\n if (found === false) return false;\n }\n\n if (filter.organizations?.length > 0) {\n let found = false;\n for (let i = 0; i < customer.produceOrganizations.length; i++) {\n if (\n filter.organizations.includes(customer.produceOrganizations[i].id)\n ) {\n found = true;\n break;\n }\n }\n if (found === false) return false;\n }\n return true;\n }),\n [customers, filter],\n );\n\n const columns = useMemo(\n () => [\n {\n Header: \"Customer\",\n accessor: \"id\",\n id: \"id\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Name\",\n accessor: \"name\",\n id: \"name\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Champion\",\n accessor: \"championId\",\n id: \"championId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Warranty Date\",\n accessor: \"warrantyExpirationDate\",\n id: \"warrantyExpirationDate\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n },\n {\n Header: \"Live Date\",\n accessor: \"liveDate\",\n id: \"liveDate\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n },\n {\n Header: \"Code Date\",\n accessor: (customer) =>\n customer?.futureCodeDate || customer?.lastCodeDate,\n id: \"lastCodeDate\",\n filter: filterDateRange,\n Filter: DateRangeColumnFilter,\n sortType: \"custom\",\n\n Cell: ({ value, row: { original: customer } }) => {\n const a = value === customer?.futureCodeDate ? \"*\" : \"\";\n return (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8))) + a\n : null}\n \n );\n },\n },\n {\n Header: \"Upgrade Date\",\n accessor: (customer) =>\n customer?.futureUpgradeDate ||\n customer?.lastUpgradeDate ||\n customer?.liveDate,\n id: \"lastUpgradeDate\",\n filter: filterDateRange,\n Filter: DateRangeColumnFilter,\n sortType: \"custom\",\n\n Cell: ({ value, row: { original: customer } }) => {\n const a = value === customer?.futureUpgradeDate ? \"*\" : \"\";\n return (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8))) + a\n : null}\n \n );\n },\n },\n {\n Header: \"Engineering\",\n accessor: \"engineeringResponsibilty\",\n id: \"engineeringResponsibilty\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Alias\",\n accessor: \"alias\",\n id: \"alias\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"organizations\",\n Header: \"Organizations\",\n accessor: (customer) =>\n customer?.produceOrganizations?.reduce(\n (s, org) => `${s ? `${s}, ` : \"\"}${org.description}`,\n \"\",\n ),\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"modules\",\n Header: \"Modules\",\n accessor: (customer) =>\n customer?.modules?.reduce(\n (s, mod) => `${s ? `${s}, ` : \"\"}${mod.description}`,\n \"\",\n ),\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"specialWorkConditions\",\n Header: \"Special Work Conditions\",\n accessor: \"specialWorkConditions\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"website\",\n Header: \"Website\",\n accessor: \"website\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n {\n if (!value) return null;\n if (id === \"lastCodeDate\") {\n return value === customer?.futureCodeDate\n ? { className: \"table-info\" }\n : null;\n }\n if (id === \"lastUpgradeDate\") {\n return value === customer?.futureUpgradeDate\n ? { className: \"table-info\" }\n : null;\n }\n }}\n />\n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport { useCustomer } from \"./hooks\";\n\nexport default function CustomerLocationSelect({\n value,\n isMulti = false,\n customerId,\n placeholder = \"Select Location...\",\n onChange = () => {},\n addOther = false,\n addInvoice = false,\n ...props\n}) {\n const { customer, loading } = useCustomer({ id: customerId, canGet: true });\n\n const _options = customer?.locations\n .filter((f) => !(f.type === \"invoice\" && addInvoice === false))\n .map((f) => {\n return { label: f.description, value: f.code };\n })\n .sort((a, b) => {\n var nameA = a.label.toUpperCase(); // ignore upper and lowercase\n var nameB = b.label.toUpperCase(); // ignore upper and lowercase\n if (nameA < nameB) {\n return -1; //nameA comes first\n }\n if (nameA > nameB) {\n return 1; // nameB comes first\n }\n return 0; // names must be equal\n });\n if (addOther) {\n _options.push({ label: \"other\", value: \"other\" });\n }\n\n const handleOnChange = (v) => {\n let valueOption = null;\n if (v) {\n if (isMulti) {\n valueOption = _options.filter((o) => v.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", v]);\n }\n }\n onChange(valueOption);\n };\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n}\n","import React from \"react\";\n\nimport Contact from \"../contacts\";\nimport { useCustomer } from \"./hooks\";\n\nexport default function CustomerContactLink({\n id,\n contactId,\n isLoading = false,\n canGet = false,\n ...props\n}) {\n const { customer, loading: customerLoading } = useCustomer({ id, canGet });\n\n const loading = customerLoading || isLoading;\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { Alert, Col, Row } from \"react-bootstrap\";\n\nimport CustomerName from \"./CustomerName\";\n\nexport default function CustomerChangedAlert({\n current: currentCustomer,\n next: nextCustomer,\n}) {\n if (currentCustomer && nextCustomer && currentCustomer !== nextCustomer)\n return (\n
    \n \n \n \n Warning: Customer does not match current project\n \n \n\n \n \n Current: \n \n \n \n \n New: \n \n \n \n
    \n );\n else return null;\n}\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getProjectFolders\" }).then((r) => {\n return { data: r.responseData.projectFolders };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"folder\",\n type: \"projects/folders\",\n getState: (state) => state.projects.folders,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst folderState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default folderState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getProjectPriorities\" }).then((r) => {\n return { data: r.responseData.projectPriorities };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"priority\",\n type: \"projects/priorities\",\n getState: (state) => state.projects.priorities,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst priorityState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default priorityState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getProjectSources\" }).then((r) => {\n return { data: r.responseData.projectSources };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"source\",\n type: \"projects/sources\",\n getState: (state) => state.projects.sources,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst sourceState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default sourceState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getProjectStatuses\" }).then((r) => {\n return { data: r.responseData.projectStatuses };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"status\",\n type: \"projects/statuses\",\n getState: (state) => state.projects.statuses,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst statusState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default statusState;\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\nimport { createAttachmentAPI } from \"../../apis/attachments\";\nimport shark from \"../../apis/shark\";\nimport { _date } from \"../../common/functions/dates\";\nimport { getChangesExcludingStamps } from \"../../common/functions/state/reducers\";\nimport toastMessage from \"../../common/toasts/toastMessage\";\nimport Customer from \"../../customers\";\n\nfunction getProjectsAPI({\n filter: { folderId, ...filter } = {},\n maxRecs,\n startAfter = \"\",\n}) {\n const payload = {\n ...filter,\n command: \"getProjects\",\n maxRecs: maxRecs,\n startAfter: startAfter || \"\",\n transferredFolder: folderId,\n };\n return shark.post(payload).then(({ responseData = {} }) => ({\n data: responseData.projects,\n startAfter: responseData.startAfter,\n searchArgs: { folderId, ...filter },\n }));\n}\n\nfunction getProjectAPI(\n { id, logActivity, includeLogs, fetch = true },\n { getState },\n { selectors },\n) {\n const payload = {\n command: \"getProject\",\n id: id,\n logActivity,\n includeLogs,\n };\n if (fetch !== true) {\n const cr = selectors.selectById(getState(), id);\n if (cr || fetch === false)\n return {\n data: cr,\n updateState: false,\n };\n }\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction createProjectAPI(project) {\n function postProcess(nextProject) {\n if (project?.createCr && nextProject?.crs?.length) {\n toast.success(\n `CR ${nextProject?.crs[0].id} created from Project ${nextProject.id}`,\n );\n } else toast.success(`Project ${nextProject.id} created`);\n return nextProject;\n }\n\n const payload = {\n command: \"createProject\",\n project,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: postProcess(responseData) }));\n}\n\nfunction updateProjectAPI(\n { id, data: projectFields, updateCrPrompt },\n { getState, dispatch },\n { actions, selectors },\n) {\n if (!id) return;\n const currentProject = selectors.selectById(getState(), id);\n\n function postProcess(nextProject) {\n toast.success(`Project ${id} saved`);\n const getProjectAction = () => actions.getOne({ id });\n if (\n nextProject.typeId === \"DE\" &&\n nextProject.typeId !== currentProject?.typeId\n ) {\n const customer = Customer.selectors.selectById(\n getState(),\n nextProject?.customers?.[0]?.customerId,\n );\n if (\n customer?.warrantyExpirationDate &&\n _date.fromStamp(customer?.warrantyExpirationDate) < moment()\n )\n toastMessage(\n {\n title: \"Project updated to Defect\",\n message: `${customer.name} Warranty Expired\\n${_date.display(\n customer?.warrantyExpirationDate,\n )}`,\n },\n { type: \"warning\", autoClose: 15000 },\n );\n }\n\n if (\n updateCrPrompt &&\n nextProject.crs.length === 1 &&\n currentProject?.crs?.length\n ) {\n const crId = nextProject.crs[0].id;\n const compareAndCrPrompt = (message, properties) => {\n const compareProperties = (current) => {\n let changes = {};\n properties.forEach((property) => {\n if (nextProject[property] !== current?.[property]) {\n changes[property] = nextProject[property];\n }\n });\n if (_.isEmpty(changes)) return null;\n else return changes;\n };\n const crChanges = compareProperties(currentProject);\n if (crChanges)\n updateCrPrompt(\n {\n id: crId,\n message: message,\n dispatch,\n test: (cr) => compareProperties(cr),\n changes: {\n noemail: true,\n ...crChanges,\n },\n getProjectAction: getProjectAction,\n },\n { toastId: `updateProjectAPI-${id}-${properties.join(\"-\")}` },\n );\n };\n compareAndCrPrompt(\"Update CR owner & group\", [\"owner\", \"groupId\"]);\n compareAndCrPrompt(\"Update CR synopsis\", [\"synopsis\"]);\n\n const compareTypes = (typeId) => typeId && nextProject.typeId !== typeId;\n if (compareTypes(currentProject?.typeId))\n updateCrPrompt(\n {\n id: crId,\n message: \"Update CR type\",\n dispatch,\n test: (cr) => compareTypes(cr?.overrideTypeId),\n changes: {\n noemail: true,\n overrideTypeId: nextProject.typeId,\n },\n getProjectAction: getProjectAction,\n },\n { toastId: `updateProjectAPI-${id}-typeId` },\n );\n }\n return nextProject;\n }\n\n const { createDateTime, modifyDateTime } = currentProject;\n //payload will represent the new settings, check if they are the different\n let changes = getChangesExcludingStamps(projectFields, currentProject);\n if (_.isEmpty(changes)) {\n toast.info(`Project ${id} No changes needed`);\n return { data: currentProject };\n }\n // Need to include full customers array if included\n if (changes?.customers)\n changes = { ...changes, customers: projectFields.customers };\n const payload = {\n command: \"updateProject\",\n id,\n project: { ...changes, createDateTime, modifyDateTime },\n };\n return shark.post(payload).then(({ responseData }) => ({\n data: postProcess(responseData),\n }));\n}\n\nfunction createProjectCommentAPI({ project, title, text }) {\n const payload = {\n command: \"createProjectComment\",\n project,\n title,\n text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction updateProjectCommentAPI({ project, title, text, id }) {\n const payload = {\n command: \"updateProjectComment\",\n project,\n id,\n title,\n text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction createProjectAttachmentAPI(args) {\n return createAttachmentAPI({ command: \"createProjectAttachment\", ...args });\n}\n\nfunction updateProjectWatchAPI({ id, isWatching }) {\n const payload = {\n command: \"updateProjectWatch\",\n id,\n isWatching,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nexport const api = {\n getOne: getProjectAPI,\n getMany: getProjectsAPI,\n createOne: createProjectAPI,\n updateOne: updateProjectAPI,\n createComment: createProjectCommentAPI,\n updateComment: updateProjectCommentAPI,\n createAttachment: createProjectAttachmentAPI,\n updateWatch: updateProjectWatchAPI,\n};\n","import createEntity from \"../../common/entity/createEntity\";\n\nexport const entity = createEntity({\n name: \"project\",\n type: \"projects\",\n getState: (state) => state.projects.projects,\n});\n","import { createAction, createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport createEntityActions from \"../../common/entity/createEntityActions\";\nimport { testStateLoading } from \"../../common/functions/state\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nconst entityActions = createEntityActions({ entity, api });\n\nconst createComment = createAsyncThunk(\n \"projects/comments/create\",\n async ({ project, title, text }, { getState, requestId }) => {\n if (!testStateLoading(getState().projects.projects, requestId)) return;\n\n return await api.createComment({\n project: project,\n title,\n text,\n });\n },\n);\n\nconst updateComment = createAsyncThunk(\n \"projects/comments/update\",\n async ({ project, id, title, text }, { getState, requestId }) => {\n if (!testStateLoading(getState().projects.projects, requestId)) return;\n return await api.updateComment({\n project: project,\n id: id,\n title,\n text,\n });\n },\n);\n\nconst createAttachment = createAsyncThunk(\n \"projects/attachments/create\",\n async (args) => {\n return await api.createAttachment(args);\n },\n);\n\nconst updateWatch = createAsyncThunk(\n \"projects/watch/update\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().projects.projects, requestId)) return;\n\n const response = await api.updateWatch(args);\n return response;\n },\n);\n\nconst setFilter = createAction(\"projects/setFilter\");\n\nexport const actions = {\n ...entityActions,\n updateComment,\n createComment,\n createAttachment,\n setFilter,\n updateWatch,\n};\n","import createEntityReducer from \"../../common/entity/createEntityReducer\";\nimport { buildAsyncThunkReducer } from \"../../common/functions/state\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity: entity,\n actions: actions,\n persist: true,\n initialState: { filter: {}, startAfter: \"\" },\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(\n builder,\n actions.createComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.createAttachment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateWatch,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n\n builder.addCase(actions.setFilter, (state, action) => {\n state.filter = action.payload;\n });\n },\n});\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport estimateStatusState from \"../estimateStatuses/state\";\nimport folderState from \"../folders/state\";\nimport priorityState from \"../priorities/state\";\nimport sourceState from \"../sources/state\";\nimport statusState from \"../statuses/state\";\nimport typeState from \"../types/state\";\nimport { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst projectReducer = combineReducers({\n projects: reducer,\n statuses: statusState.reducer,\n priorities: priorityState.reducer,\n sources: sourceState.reducer,\n types: typeState.reducer,\n folders: folderState.reducer,\n estimateStatuses: estimateStatusState.reducer,\n});\n\nconst projectState = {\n api,\n entity,\n actions,\n reducer: projectReducer,\n};\n\nexport default projectState;\n","import { unwrapResult } from \"@reduxjs/toolkit\";\n\nimport toastPrompt from \"../common/toasts/toastPrompt\";\nimport projectState from \"./state\";\n\nexport default function updateProjectPrompt(\n { id, message, changes, dispatch, test = () => true },\n toastOptions,\n) {\n dispatch(projectState.actions.getOne({ id }))\n .then(unwrapResult)\n .then(({ data: project }) => {\n if (test(project))\n toastPrompt(\n {\n message,\n confirm: \"Yes\",\n cancel: \"No\",\n onConfirm: () => {\n dispatch(\n projectState.actions.updateOne({\n id,\n data: changes,\n shouldPromptToUpdateCr: false,\n }),\n );\n },\n },\n toastOptions,\n );\n });\n}\n","import { boolean, number, object, ref, string } from \"yup\";\n\nimport { _date, _datetime } from \"../common/functions/dates\";\n\nexport const isClosed = (statusId) => statusId === \"CL\" || statusId === \"FX\";\n\nconst crSchema = object().shape({\n synopsis: string().label(\"Synopsis\").required().max(200),\n description: string().label(\"Description\").required().max(5000),\n projectId: number()\n .label(\"Project\")\n .required()\n .test(\n \"projectIsOpen\",\n \"Project must be Open\",\n (_, { options: { parent, context = {} } }) => {\n const { statusId } = parent;\n const { project } = context;\n return !project || isClosed(statusId) || project?.statusId === \"OP\";\n },\n ),\n groupId: string().label(\"Group\").required(),\n difficultyId: string().label(\"Difficulty\").required(),\n statusId: string().label(\"Status\").required(),\n owner: string()\n .label(\"Owner\")\n .required()\n .when(\"statusId\", {\n is: (v) => v !== \"OP\",\n then: string().test(\n \"is-not-pseudo\",\n \"Pseudo user is only valid on open CRs\",\n (value) => value?.charAt(0) !== \"*\",\n ),\n }),\n overrideTypeId: string().label(\"Override Type\"),\n overrideCustomerId: number().label(\"Override Customer\"),\n defectOccurrenceId: string()\n .label(\"Defect Occurrence\")\n .when(\"statusId\", {\n is: isClosed,\n then: string().test(\n \"defectOccurrenceIdIsRequiredOnDefects\",\n \"Defect Occurrence is required on defect type CRs\",\n (value, { parent, options: { context = {} } }) => {\n const { project } = context;\n const { overrideTypeId } = parent;\n const typeId = overrideTypeId || project?.typeId;\n return typeId !== \"DE\" || value;\n },\n ),\n }),\n moduleId: string().label(\"Module\").when(\"statusId\", {\n is: isClosed,\n then: string().required(),\n }),\n notificationTypeId: string().label(\"Notification Type\").when(\"statusId\", {\n is: isClosed,\n then: string().required(),\n }),\n isWaitingOnCustomer: boolean()\n .label(\"Blocked\")\n .when(\"statusId\", {\n is: isClosed,\n then: boolean().oneOf([false], \"CR cannot be closed while blocked\"),\n }),\n isTestingRequired: boolean()\n .label(\"Testing required\")\n .when(\"statusId\", {\n is: isClosed,\n then: boolean().oneOf(\n [false],\n \"CR cannot be closed while testing is required\",\n ),\n }),\n isReadyForCodeCheckin: boolean()\n .label(\"Ready for code check-in\")\n .when(\"statusId\", {\n is: isClosed,\n then: boolean().oneOf(\n [false],\n \"CR cannot be closed while ready for code check-in\",\n ),\n }),\n estimateMinHours: number()\n .label(\"Estimate Hours (Minimum)\")\n .min(0)\n .max(\n ref(\"estimateMaxHours\"),\n \"Estimate (hours) minimum must be less than/equal to maximum\",\n ),\n estimateMaxHours: number()\n .label(\"Estimate Hours (Maximum)\")\n .min(0)\n .min(\n ref(\"estimateMinHours\"),\n \"Estimate (hours) maximum must be greater than/equal to minimum\",\n ),\n estimateRate: number()\n .label(\"Estimate Rate\")\n .when(\"estimateMaxHours\", { is: (v) => v > 0, then: number().positive() }),\n estimateUserId: string().label(\"Estimate Rate (User)\"),\n targetFirstContactDateTime: string()\n .transform(_datetime.stamp)\n .label(\"Target First Contact Date/Time\"),\n actualFirstContactDateTime: string()\n .transform(_datetime.stamp)\n .label(\"Actual First Contact Date/Time\"),\n targetStartWorkDateTime: string()\n .transform(_datetime.stamp)\n .label(\"Target Start Work Date/Time\"),\n actualStartWorkDateTime: string()\n .transform(_datetime.stamp)\n .label(\"Actual Start Work Date/Time\"),\n targetDeliveryDate: string()\n .transform(_date.stamp)\n .label(\"Target Delivery Date\"),\n actualDeliveryDate: string()\n .transform(_date.stamp)\n .label(\"Actual Delivery Date\"),\n});\n\nexport default crSchema;\n\nexport function crSchemaInitial({\n owner = \"\",\n groupId = \"\",\n projectId = 0,\n synopsis = \"\",\n description = \"\",\n}) {\n return {\n projectId,\n groupId,\n statusId: \"OP\",\n owner,\n difficultyId: \"0\",\n isWaitingOnCustomer: false,\n isTestingRequired: false,\n isReadyForCodeCheckin: false,\n synopsis,\n description,\n };\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\nimport { createAttachmentAPI } from \"../../apis/attachments\";\nimport shark from \"../../apis/shark\";\nimport { _date } from \"../../common/functions/dates\";\nimport { getChangesExcludingStamps } from \"../../common/functions/state/reducers\";\nimport toastMessage from \"../../common/toasts/toastMessage\";\nimport toastPrompt from \"../../common/toasts/toastPrompt\";\nimport Customer from \"../../customers\";\nimport updateProjectPrompt from \"../../projects/updateProjectPrompt\";\nimport { isClosed } from \"../crSchema\";\n\nfunction getCrsAPI({\n filter: { folderId, ...filter } = {},\n maxRecs,\n startAfter = \"\",\n}) {\n const payload = {\n ...filter,\n command: \"getCrs\",\n maxRecs: maxRecs,\n startAfter: startAfter || \"\",\n transferredFolder: folderId,\n };\n return shark.post(payload).then(({ responseData = {} }) => ({\n data: responseData.crs,\n startAfter: responseData.startAfter,\n searchArgs: { folderId, ...filter },\n }));\n}\n\nfunction getCrAPI(\n { id, logActivity, includeLogs, fetch = true },\n { getState },\n { selectors },\n) {\n const payload = {\n command: \"getCr\",\n id: id,\n logActivity,\n includeLogs: includeLogs,\n };\n if (fetch === false || fetch === \"auto\") {\n const cr = selectors.selectById(getState(), id);\n if (cr || fetch === false)\n return {\n data: cr,\n updateState: false,\n };\n }\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction createCrAPI(cr) {\n function postProcess(nextCr) {\n toast.success(`CR ${nextCr.id} created`);\n return nextCr;\n }\n const payload = {\n command: \"createCr\",\n cr: cr,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: postProcess(responseData) }));\n}\n\nfunction updateCrAPI(\n { id, data: crFields, shouldPromptToUpdateProject = true },\n { getState, dispatch },\n { selectors },\n) {\n if (!id) return;\n const currentCr = selectors.selectById(getState(), id);\n\n function postProcess(nextCr) {\n toast.success(`CR ${id} saved`);\n\n if (\n nextCr.overrideTypeId === \"DE\" &&\n nextCr.overrideTypeId !== currentCr?.overrideTypeId\n ) {\n const customer = Customer.selectors.selectById(\n getState(),\n nextCr?.customers?.[0]?.id,\n );\n if (\n customer?.warrantyExpirationDate &&\n _date.fromStamp(customer?.warrantyExpirationDate) < moment()\n )\n toastMessage(\n {\n title: \"CR updated to Defect\",\n message: `${customer.name} Warranty Expired\\n${_date.display(\n customer?.warrantyExpirationDate,\n )}`,\n },\n { type: \"warning\", autoClose: 15000 },\n );\n }\n if (\n isClosed(nextCr?.statusId) &&\n (!isClosed(currentCr?.statusId) ||\n currentCr?.notificationTypeId !== nextCr?.notificationTypeId)\n ) {\n if (nextCr.notificationTypeId === \"C\") {\n toastPrompt({\n message:\n \"CR documentation required. Please complete form to assist with documentation.\",\n confirm: \"Open Form\",\n cancel: \"Ignore\",\n onConfirm: () => {\n window.open(\n `https://docs.google.com/forms/d/e/1FAIpQLSdjRKwxe_3D9xIbVcPzDWcgbj-5-yvrqwdtTwLRNTYR35I36A/viewform?entry.1462877314=${nextCr.id}`,\n \"_blank\",\n );\n },\n });\n }\n }\n\n if (shouldPromptToUpdateProject) {\n const projectId = nextCr.projectId;\n const compareAndProjectPrompt = (message, properties) => {\n const compareProperties = (current) => {\n let changes = {};\n properties.forEach((property) => {\n if (nextCr[property] !== current?.[property]) {\n changes[property] = nextCr[property];\n }\n });\n if (_.isEmpty(changes)) return null;\n else return changes;\n };\n const projectChanges = compareProperties(currentCr);\n if (projectChanges)\n updateProjectPrompt(\n {\n id: projectId,\n message: message,\n dispatch,\n test: (p) => p?.crs?.length === 1 && compareProperties(p),\n changes: {\n noemail: true,\n ...projectChanges,\n },\n },\n { toastId: `updateCrAPI-${id}-${properties.join(\"-\")}` },\n );\n };\n compareAndProjectPrompt(\"Update Project owner & group\", [\n \"owner\",\n \"groupId\",\n ]);\n compareAndProjectPrompt(\"Update Project synopsis\", [\"synopsis\"]);\n\n const compareTypes = (typeId) =>\n nextCr.overrideTypeId && nextCr.overrideTypeId !== typeId;\n if (compareTypes(currentCr?.overrideTypeId))\n updateProjectPrompt(\n {\n id: projectId,\n message: \"Update Project type\",\n dispatch,\n test: (project) =>\n project?.crs?.length === 1 && compareTypes(project?.typeId),\n changes: {\n noemail: true,\n typeId: nextCr.overrideTypeId,\n },\n },\n { toastId: `updateCrAPI-${id}-typeId` },\n );\n }\n\n return nextCr;\n }\n\n const { createDateTime, modifyDateTime } = currentCr;\n //payload will represent the new settings, check if they are the different\n let changes = getChangesExcludingStamps(crFields, currentCr);\n if (_.isEmpty(changes)) {\n toast.info(`CR ${id} No changes needed`);\n return { data: currentCr };\n }\n const payload = {\n command: \"updateCr\",\n id,\n cr: { ...changes, createDateTime, modifyDateTime },\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: postProcess(responseData) }));\n}\n\nfunction updateCrSetAllAPI({ id, setAll }) {\n const payload = {\n command: \"updateCrSetAll\",\n crId: id,\n ...setAll,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction moveCrAPI({ crId, projectId }) {\n const payload = {\n command: \"moveCr\",\n crId: crId,\n projectId: projectId,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction createCrCommentAPI({ cr, title, text }) {\n const payload = {\n command: \"createCrComment\",\n cr: cr,\n title: title,\n text: text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction updateCrCommentAPI({ cr, title, text, id }) {\n const payload = {\n command: \"updateCrComment\",\n cr: cr,\n id: id,\n title: title,\n text: text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction createCrAttachmentAPI(args) {\n return createAttachmentAPI({ command: \"createCrAttachment\", ...args });\n}\n\nfunction updateCrWatchAPI({ id, isWatching }) {\n const payload = {\n command: \"updateCrWatch\",\n id,\n isWatching,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction createCrQaCommentAPI({ cr, title, text }) {\n const payload = {\n command: \"createCrQaComment\",\n cr: cr,\n title: title,\n text: text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nfunction updateCrQaCommentAPI({ cr, title, text, id }) {\n const payload = {\n command: \"updateCrQaComment\",\n cr: cr,\n id: id,\n title: title,\n text: text,\n };\n return shark.post(payload).then((r) => ({ data: r.responseData }));\n}\n\nexport const api = {\n getMany: getCrsAPI,\n getOne: getCrAPI,\n createOne: createCrAPI,\n updateOne: updateCrAPI,\n updateSetAll: updateCrSetAllAPI,\n moveOne: moveCrAPI,\n createComment: createCrCommentAPI,\n updateComment: updateCrCommentAPI,\n createAttachment: createCrAttachmentAPI,\n updateWatch: updateCrWatchAPI,\n createQaComment: createCrQaCommentAPI,\n updateQaComment: updateCrQaCommentAPI,\n};\n","import createEntity from \"../../common/entity/createEntity\";\n\nexport const entity = createEntity({\n name: \"cr\",\n type: \"crs\",\n getState: (state) => state.crs.crs,\n});\n","import { createAction, createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport createEntityActions from \"../../common/entity/createEntityActions\";\nimport { testStateLoading } from \"../../common/functions/state\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nconst entityActions = createEntityActions({ entity, api });\n\nconst createComment = createAsyncThunk(\n \"crs/comments/create\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n\n const response = await api.createComment(args);\n return response;\n },\n);\n\nconst updateComment = createAsyncThunk(\n \"crs/comments/update\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n\n const response = await api.updateComment(args);\n return response;\n },\n);\n\nconst createAttachment = createAsyncThunk(\n \"crs/attachments/create\",\n async (args) => {\n const response = await api.createAttachment(args);\n return response;\n },\n);\n\nconst updateSetAll = createAsyncThunk(\n \"crs/update/setAll\",\n async ({ id, setAll }, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n const response = await api.updateSetAll({\n id: id,\n setAll: setAll,\n });\n return response;\n },\n);\n\nconst moveOne = createAsyncThunk(\n \"crs/update/moveCr\",\n async ({ crId, projectId }, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n const response = await api.moveOne({\n crId: crId,\n projectId: projectId,\n });\n return response;\n },\n);\n\nconst updateWatch = createAsyncThunk(\n \"crs/watch/update\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n\n const response = await api.updateWatch(args);\n return response;\n },\n);\n\nconst createQaComment = createAsyncThunk(\n \"crs/qaComments/create\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n\n const response = await api.createQaComment(args);\n return response;\n },\n);\n\nconst updateQaComment = createAsyncThunk(\n \"crs/qaComments/update\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().crs.crs, requestId)) return;\n\n const response = await api.updateQaComment(args);\n return response;\n },\n);\n\nconst setCrTableSettings = createAction(\"crs/setCrTableSettings\");\nconst setCurrentCr = createAction(\"crs/setCurrentCr\");\n\nexport const actions = {\n ...entityActions,\n createComment,\n updateComment,\n createAttachment,\n updateSetAll,\n moveOne,\n setCrTableSettings,\n setCurrentCr,\n updateWatch,\n createQaComment,\n updateQaComment,\n};\n","import { isUndefined } from \"lodash\";\n\nimport createEntityReducer from \"../../common/entity/createEntityReducer\";\nimport { buildAsyncThunkReducer } from \"../../common/functions/state\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n initialState: { crTableSettings: {}, currentCr: null },\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(\n builder,\n actions.createComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.createAttachment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateSetAll,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.moveOne,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateWatch,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.createQaComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateQaComment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n\n builder.addCase(actions.setCrTableSettings, (state, action) => {\n const { filter, layout } = action.payload;\n if (!isUndefined(filter)) state.crTableSettings.filter = filter;\n if (!isUndefined(layout)) state.crTableSettings.layout = layout;\n });\n builder.addCase(actions.setCurrentCr, (state, action) => {\n state.currentCr = action.payload;\n });\n },\n});\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport difficultyState from \"../difficulties/state\";\nimport filterState from \"../filters/state\";\nimport modulesState from \"../modules/state\";\nimport notificationTypeState from \"../notificationTypes/state\";\nimport qaReviewsState from \"../qaReviews/state\";\nimport statusState from \"../statuses/state\";\nimport tableLayoutState from \"../tableLayouts/state\";\nimport { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst crReducer = combineReducers({\n crs: reducer,\n filters: filterState.reducer,\n statuses: statusState.reducer,\n notificationTypes: notificationTypeState.reducer,\n difficulties: difficultyState.reducer,\n modules: modulesState.reducer,\n tableLayouts: tableLayoutState.reducer,\n qaReviews: qaReviewsState.reducer,\n});\n\nconst crState = {\n api,\n entity,\n actions,\n reducer: crReducer,\n};\n\nexport default crState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getBranches\" }).then((response) => {\n return { data: response.responseData.branches };\n });\n },\n getOne: ({ id }) => {\n return shark.post({ command: \"getBranch\", id: id }).then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"branches\",\n type: \"dbc/branches\",\n getState: (state) => state.dbc.branches,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst branchState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default branchState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCodeTests\" }).then((response) => {\n return { data: response.responseData.codeTests };\n });\n },\n getOne: ({ id }) => {\n return shark.post({ command: \"getCodeTest\", id: id }).then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"codeTests\",\n type: \"dbc/codeTests\",\n getState: (state) => state.dbc.codeTests,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst codeTestState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default codeTestState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getReusablePrograms\" }).then((response) => {\n return { data: response.responseData.reusablePrograms };\n });\n },\n getOne: ({ id }) => {\n return shark\n .post({ command: \"getReusableProgram\", id: id })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"reusablePrograms\",\n type: \"dbc/reusablePrograms\",\n getState: (state) => state.dbc.reusablePrograms,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst reusableProgramState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default reusableProgramState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getSourceCodes\" }).then((response) => {\n return { data: response.responseData.sourceCodes };\n });\n },\n getOne: ({ id }) => {\n return shark.post({ command: \"getSourceCode\", id: id }).then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"sourceCodes\",\n type: \"dbc/sourceCodes\",\n getState: (state) => state.dbc.sourceCodes,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst sourceCodeState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default sourceCodeState;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport branchesState from \"../branches/state\";\nimport codeTestsState from \"../codeTests/state\";\nimport reusableProgramsState from \"../reusablePrograms/state\";\nimport sourceCodesState from \"../sourceCodes/state\";\n\nconst dbcReducer = combineReducers({\n branches: branchesState.reducer,\n codeTests: codeTestsState.reducer,\n sourceCodes: sourceCodesState.reducer,\n reusablePrograms: reusableProgramsState.reducer,\n});\n\nconst dbcState = {\n reducer: dbcReducer,\n};\n\nexport default dbcState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getCustomerEdiSetups\" }).then((response) => {\n return { data: response.responseData.customerEdiSetups };\n });\n },\n getOne: ({ id }) => {\n return shark\n .post({ command: \"getCustomerEdiSetup\", id: id })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n createOne: (customerEdiSetup) => {\n return shark\n .post({ command: \"createCustomerEdiSetup\", ...customerEdiSetup })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n updateOne: (customerEdiSetup) => {\n return shark\n .post({ command: \"updateCustomerEdiSetup\", ...customerEdiSetup })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"customerEdiSetups\",\n type: \"edi/customerEdiSetups\",\n getState: (state) => state.edi.customerEdiSetups,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst customerEdiSetupState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default customerEdiSetupState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getFtpUsers\" }).then((response) => {\n return { data: response.responseData.ftpUsers };\n });\n },\n getOne: ({ id }) => {\n return shark.post({ command: \"getFtpUser\", id: id }).then((response) => {\n return { data: response.responseData };\n });\n },\n createOne: (ftpUser) => {\n return shark\n .post({ command: \"createFtpUser\", ...ftpUser })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n updateOne: (ftpUser) => {\n return shark\n .post({ command: \"updateFtpUser\", ...ftpUser })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"ftpUsers\",\n type: \"edi/ftpUsers\",\n getState: (state) => state.edi.ftpUsers,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst ftpUserState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default ftpUserState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getTradingPartners\" }).then((response) => {\n return { data: response.responseData.tradingPartners };\n });\n },\n getOne: ({ id }) => {\n return shark\n .post({ command: \"getTradingPartner\", id: id })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n createOne: (tradingPartner) => {\n return shark\n .post({ command: \"createTradingPartner\", ...tradingPartner })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n updateOne: (tradingPartner) => {\n return shark\n .post({ command: \"updateTradingPartner\", ...tradingPartner })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"tradingPartners\",\n type: \"edi/tradingPartners\",\n getState: (state) => state.edi.tradingPartners,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst tradingPartnerState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default tradingPartnerState;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport customerEdiSetupsState from \"../customerEdiSetups/state\";\nimport ftpUsersState from \"../ftpUsers/state\";\nimport tradingPartnersState from \"../tradingPartners/state\";\n\nconst ediReducer = combineReducers({\n tradingPartners: tradingPartnersState.reducer,\n customerEdiSetups: customerEdiSetupsState.reducer,\n ftpUsers: ftpUsersState.reducer,\n});\n\nconst ediState = {\n reducer: ediReducer,\n};\n\nexport default ediState;\n","import shark from \"../../apis/shark\";\n\nfunction getEstimatesAPI({ source, reference } = {}) {\n const args = {\n ...(source ? { source: source, reference: reference } : null),\n };\n const payload = {\n command: \"getEstimates\",\n ...args,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.estimates,\n searchArgs: args,\n }));\n}\n\nfunction getEstimateAPI({ id }) {\n const payload = {\n command: \"getEstimate\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createEstimateAPI(estimate) {\n const payload = {\n command: \"createEstimate\",\n ...estimate,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateEstimateAPI(estimate) {\n const payload = {\n command: \"updateEstimate\",\n ...estimate,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getEstimatesAPI,\n getOne: getEstimateAPI,\n createOne: createEstimateAPI,\n updateOne: updateEstimateAPI,\n};\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"estimate\",\n type: \"estimates\",\n getState: (state) => state.estimates.estimates,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst estimateReducer = combineReducers({\n estimates: reducer,\n});\n\nconst estimateState = {\n api,\n actions,\n reducer: estimateReducer,\n entity,\n};\n\nexport default estimateState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getExpenseCategories\" }).then((response) => {\n return { data: response.responseData.expenseCategories };\n });\n },\n\n getOne: ({ id }) => {\n return shark\n .post({ command: \"getExpenseCategory\", id: id })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"categories\",\n type: \"expenses/categories\",\n getState: (state) => state.expenses.categories,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst categoryState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default categoryState;\n","import shark from \"../../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../../common/entity\";\n\nconst api = {\n getMany: ({ tripId }) => {\n return shark.post({ command: \"getExpenseTripUsers\", tripId }).then((r) => {\n return { data: r.responseData.expenseTripUsers };\n });\n },\n getOne: ({ id, find: { tripId, userId } = {} }) => {\n return shark\n .post({ command: \"getExpenseTripUser\", id, tripId, userId })\n .then((r) => {\n return { data: r.responseData };\n });\n },\n updateOne: (args) => {\n return shark\n .post({ command: \"updateExpenseTripUser\", ...args })\n .then((r) => {\n return { data: r.responseData };\n });\n },\n\n sendEmail: (options) => {\n const payload = {\n ...options,\n command: \"emailExpenseTripUser\",\n };\n return shark.post(payload);\n },\n};\n\nconst entity = createEntity({\n name: \"users\",\n type: \"expenses/trips/users\",\n getState: (state) => state.expenses.trips.users,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst userState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default userState;\n","import { combineReducers } from \"redux\";\n\nimport shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport expenseTripUserState from \"../users/state\";\n\nconst api = {\n getMany: (search) => {\n return shark.post({ command: \"getExpenseTrips\", ...search }).then((r) => {\n return {\n data: r.responseData.expenseTrips,\n searchArgs: search,\n };\n });\n },\n getOne: ({ id }) => {\n return shark.post({ command: \"getExpenseTrip\", id }).then((r) => {\n return {\n data: r.responseData,\n };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"trip\",\n type: \"expenses/trips\",\n getState: (state) => state.expenses.trips.trips,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst tripReducer = combineReducers({\n trips: reducer,\n users: expenseTripUserState.reducer,\n});\n\nconst tripState = {\n api,\n entity,\n actions,\n reducer: tripReducer,\n};\n\nexport default tripState;\n","import shark from \"../../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getExpenseTypes\" }).then((response) => {\n return { data: response.responseData.expenseTypes };\n });\n },\n getOne: ({ id }) => {\n return shark\n .post({ command: \"getExpenseType\", id: id })\n .then((response) => {\n return { data: response.responseData };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"types\",\n type: \"expenses/types\",\n getState: (state) => state.expenses.types,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst typeState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default typeState;\n","import { createAttachmentAPI } from \"../../apis/attachments\";\nimport shark from \"../../apis/shark\";\n\nfunction getExpensesAPI(search) {\n const payload = {\n command: \"getExpenses\",\n ...search,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.expenses,\n searchArgs: search,\n }));\n}\n\nfunction getExpenseAPI({ id }) {\n const payload = {\n command: \"getExpense\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createExpenseAPI(expense) {\n const payload = {\n command: \"createExpense\",\n ...expense,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateExpenseAPI(expense) {\n const payload = {\n command: \"updateExpense\",\n ...expense,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction deleteExpenseAPI({ id, ...expense }) {\n const payload = {\n command: \"deleteExpense\",\n id,\n ...expense,\n };\n return shark.post(payload).then(() => ({ data: id }));\n}\n\nfunction getExpenseDateSettingsAPI(args) {\n const payload = {\n command: \"getExpenseDateSettings\",\n ...args,\n };\n return shark.post(payload).then((response) => response.responseData);\n}\n\nfunction createExpenseAttachmentAPI(args) {\n return createAttachmentAPI({ command: \"createExpenseAttachment\", ...args });\n}\n\nexport const api = {\n getMany: getExpensesAPI,\n getOne: getExpenseAPI,\n createOne: createExpenseAPI,\n updateOne: updateExpenseAPI,\n deleteOne: deleteExpenseAPI,\n getDateSettings: getExpenseDateSettingsAPI,\n createAttachment: createExpenseAttachmentAPI,\n};\n","import { createEntity } from \"../../common/entity\";\n\nexport const entity = createEntity({\n name: \"expense\",\n type: \"expenses\",\n getState: (state) => state.expenses.expenses,\n});\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport { createEntityActions } from \"../../common/entity\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nconst entityActions = createEntityActions({ entity, api });\n\nconst createAttachment = createAsyncThunk(\n \"expenses/attachments/create\",\n async (args) => {\n const response = await api.createAttachment(args);\n return response;\n },\n);\n\nexport const actions = { ...entityActions, createAttachment };\n","import { createEntityReducer } from \"../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../common/functions/state\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(\n builder,\n actions.createAttachment,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n },\n});\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport categoryState from \"../categories/state\";\nimport tripState from \"../trips/state\";\nimport typeState from \"../types/state\";\nimport { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst expenseReducer = combineReducers({\n expenses: reducer,\n categories: categoryState.reducer,\n types: typeState.reducer,\n trips: tripState.reducer,\n});\n\nconst expenseState = {\n api,\n entity,\n actions,\n reducer: expenseReducer,\n};\n\nexport default expenseState;\n","import shark from \"../../../apis/shark\";\n\nfunction getTaxProductCategoriesAPI() {\n const payload = {\n command: \"getTaxProductCategories\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.taxProductCategories,\n }));\n}\n\nfunction getTaxProductCategoryAPI({ id }) {\n const payload = {\n command: \"getTaxProductCategory\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createTaxProductCategoryAPI(taxProductCategory) {\n const payload = {\n command: \"createTaxProductCategory\",\n ...taxProductCategory,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateTaxProductCategoryAPI(taxProductCategory) {\n const payload = {\n command: \"updateTaxProductCategory\",\n ...taxProductCategory,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getTaxProductCategoriesAPI,\n getOne: getTaxProductCategoryAPI,\n createOne: createTaxProductCategoryAPI,\n updateOne: updateTaxProductCategoryAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"taxProductCategories\",\n type: \"invoices/taxProductCategories\",\n getState: (state) => state.invoices.taxProductCategories,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst taxProductCategoryState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default taxProductCategoryState;\n","import shark from \"../../../apis/shark\";\n\nfunction getTaxProductsAPI() {\n const payload = {\n command: \"getTaxProducts\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.taxProducts,\n }));\n}\n\nfunction getTaxProductAPI({ id }) {\n const payload = {\n command: \"getTaxProduct\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createTaxProductAPI(taxProduct) {\n const payload = {\n command: \"createTaxProduct\",\n ...taxProduct,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateTaxProductAPI(taxProduct) {\n const payload = {\n command: \"updateTaxProduct\",\n ...taxProduct,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getTaxProductsAPI,\n getOne: getTaxProductAPI,\n createOne: createTaxProductAPI,\n updateOne: updateTaxProductAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"taxProducts\",\n type: \"invoices/taxProducts\",\n getState: (state) => state.invoices.taxProducts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst taxProductState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default taxProductState;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport taxProductCategoriesState from \"../taxProductCategories/state\";\nimport taxProductsState from \"../taxProducts/state\";\n\nconst invoiceReducer = combineReducers({\n taxProductCategories: taxProductCategoriesState.reducer,\n taxProducts: taxProductsState.reducer,\n});\n\nconst invoiceState = {\n reducer: invoiceReducer,\n};\n\nexport default invoiceState;\n","import shark from \"../../../apis/shark\";\n\nfunction getAwsAccountsAPI() {\n const payload = {\n command: \"getAwsAccounts\",\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.awsAccounts,\n }));\n}\n\nfunction getAwsAccountAPI({ id }) {\n const payload = {\n command: \"getAwsAccount\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createAwsAccountAPI(awsAccount) {\n const payload = {\n command: \"createAwsAccount\",\n ...awsAccount,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateAwsAccountAPI(awsAccount) {\n const payload = {\n command: \"updateAwsAccount\",\n ...awsAccount,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getAwsAccountsAPI,\n getOne: getAwsAccountAPI,\n createOne: createAwsAccountAPI,\n updateOne: updateAwsAccountAPI,\n};\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"awsAccounts\",\n type: \"servers/awsAccounts\",\n getState: (state) => state.servers.awsAccounts,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst awsAccountState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default awsAccountState;\n","import shark from \"../../../apis/shark\";\n\nfunction getReservationsAPI({ customerId } = {}) {\n const args = { ...(customerId ? { customerId: customerId } : null) };\n const payload = {\n command: \"getReservations\",\n ...args,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.reservations,\n searchArgs: args,\n }));\n}\n\nfunction getReservationAPI({ id }) {\n const payload = {\n command: \"getReservation\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createReservationAPI(reservation) {\n const payload = {\n command: \"createReservation\",\n ...reservation,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateReservationAPI(reservation) {\n const payload = {\n command: \"updateReservation\",\n ...reservation,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getReservationsAPI,\n getOne: getReservationAPI,\n createOne: createReservationAPI,\n updateOne: updateReservationAPI,\n};\n\nexport async function getReservationComparisonAPI() {\n const payload = {\n command: \"getReservationComparison\",\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n","import {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../../common/entity\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"reservation\",\n type: \"servers/reservations\",\n getState: (state) => state.servers.reservations,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst reservationState = {\n api,\n actions,\n reducer,\n entity,\n};\n\nexport default reservationState;\n","import shark from \"../../apis/shark\";\n\nfunction getServersAPI({ customerId } = {}) {\n const args = { ...(customerId ? { customerId: customerId } : null) };\n const payload = {\n command: \"getServers\",\n ...args,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData.servers,\n searchArgs: args,\n }));\n}\n\nfunction getServerAPI({ id }) {\n const payload = {\n command: \"getServer\",\n id: id,\n };\n return shark.post(payload).then((response) => ({\n data: response.responseData,\n }));\n}\n\nfunction createServerAPI(server) {\n const payload = {\n command: \"createServer\",\n ...server,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateServerAPI(server) {\n const payload = {\n command: \"updateServer\",\n ...server,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getServersAPI,\n getOne: getServerAPI,\n createOne: createServerAPI,\n updateOne: updateServerAPI,\n};\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport {\n createEntity,\n createEntityActions,\n createEntityReducer,\n} from \"../../common/entity\";\nimport awsAccountState from \"../awsAccounts/state\";\nimport awsInstanceTypeState from \"../awsInstanceTypes/state\";\nimport awsRegionState from \"../awsRegions/state\";\nimport awsZoneState from \"../awsZones/state\";\nimport reservationState from \"../reservations/state\";\nimport s3BucketState from \"../s3Buckets/state\";\nimport { api } from \"./api\";\n\nconst entity = createEntity({\n name: \"server\",\n type: \"servers\",\n getState: (state) => state.servers.servers,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nconst serverReducer = combineReducers({\n servers: reducer,\n awsInstanceTypes: awsInstanceTypeState.reducer,\n awsZones: awsZoneState.reducer,\n awsAccounts: awsAccountState.reducer,\n awsRegions: awsRegionState.reducer,\n s3Buckets: s3BucketState.reducer,\n reservations: reservationState.reducer,\n});\n\nconst serverState = {\n api,\n actions,\n reducer: serverReducer,\n entity,\n};\n\nexport default serverState;\n","import shark from \"../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityHooks,\n createEntityReducer,\n entityDescription,\n entitySelect,\n entityTableFilter,\n} from \"../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getBillableOverrideReasons\" }).then((r) => {\n return { data: r.responseData.billableOverrideReasons };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"billableOverrideReason\",\n type: \"times/billableOverrideReasons\",\n getState: (state) => state.times.billableOverrideReasons,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nexport const billableOverrideReasonState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nconst {\n useEntities: useBillableOverrideReasons,\n useEntity: useBillableOverrideReason,\n} = createEntityHooks({\n entity: entity,\n actions: actions,\n});\n\nconst TimeBillableOverrideReasonSelect = entitySelect({\n name: \"timeBillableOverrideReason\",\n useEntities: useBillableOverrideReasons,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nconst TimeBillableOverrideReasonTableFilter = entityTableFilter({\n name: \"timeBillableOverrideReason\",\n useEntities: useBillableOverrideReasons,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nconst TimeBillableOverrideReasonDescription = entityDescription({\n name: \"timeBillableOverrideReason\",\n useEntity: useBillableOverrideReason,\n});\n\nconst TimeBillableOverrideReason = {\n // Backend API\n api: billableOverrideReasonState.api,\n // State\n actions: billableOverrideReasonState.actions,\n selectors: billableOverrideReasonState.entity.selectors,\n // Hooks\n useAll: useBillableOverrideReasons,\n useOne: useBillableOverrideReason,\n // Components\n Select: TimeBillableOverrideReasonSelect,\n Description: TimeBillableOverrideReasonDescription,\n TableFilter: TimeBillableOverrideReasonTableFilter,\n};\nexport default TimeBillableOverrideReason;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport moment from \"moment\";\n\nimport { _date } from \"../../../common/functions/dates\";\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../../common/functions/state\";\nimport { getCurrentTimerAPI } from \"./api\";\n\nconst getCurrentTimer = createAsyncThunk(\n \"time/currentTimer/get\",\n async (_, thunkApi) => {\n const { getState, requestId } = thunkApi;\n if (!testStateLoading(getState().times.currentTimer, requestId)) return;\n const { responseData } = await getCurrentTimerAPI();\n return responseData.currentTimer;\n },\n);\n\n/*\nconst stopCurrentTimer = createAsyncThunk(\n \"timers/currentTimer/stop\",\n async (_, thunkApi) => {\n const { getState, requestId } = thunkApi;\n if (!testStateLoading(getState().times.currentTimer, requestId)) return;\n\n const { responseData } = await stopCurrentTimerAPI({\n timeId: getState().times.currentTimer.ids[0],\n });\n return responseData.currentTimer;\n },\n);\nconst restartTimer = createAsyncThunk(\n \"timers/currentTimer/restart\",\n async ({ timeId }, thunkApi) => {\n const { getState, requestId } = thunkApi;\n if (!testStateLoading(getState().times.currentTimer, requestId)) return;\n\n const { responseData } = await restartTimerAPI({\n timeId: timeId,\n });\n return responseData.currentTimer;\n },\n);\n*/\nconst currentTimerSlice = createSlice({\n name: \"time/currentTimer\",\n initialState: {\n ...INITIAL_LOADING_STATE,\n lastUpdate: moment().subtract(30, \"days\").toISOString(),\n timer: {},\n },\n reducers: {\n setCurrentTimer(state, action) {\n if (action.id === \"setCurrentTimer\") {\n state.timer = action.payload;\n }\n },\n updateCurrentTimer(state, action) {\n if (action.payload.action === \"create\") {\n let t = action.payload;\n\n // if you added a record for someone else then clearly\n // we shouldn't be updating the current timer for you.\n if (t.userId !== t.loggedInUser) return;\n\n let ts = t.timers;\n let newCurrentTimer = getNewest(ts, t.date, t.timerDescription);\n if (\n newCurrentTimer.startTime !== \"\" &&\n (state.timer?.startTime === undefined ||\n state.timer?.startTime < newCurrentTimer.startTime)\n ) {\n newCurrentTimer.id = t.id;\n state.timer = newCurrentTimer;\n }\n } else if (action.payload.action === \"update\") {\n updateOrRestart(state, action);\n } else if (action.payload.action === \"delete\") {\n if (state.timer?.id === action.payload.id) {\n state.timer = {};\n }\n }\n },\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, getCurrentTimer, (state, action) => {\n state.timer = action.payload;\n state.lastUpdate = new Date().toISOString();\n });\n },\n});\n\nfunction updateOrRestart(state, action) {\n let t = action.payload;\n let newCurrentTimer = getNewest(t.timers, t.date, t.timerDescription);\n newCurrentTimer.id = t.id;\n\n // if we updated a record, you could have changed user to someone else\n // if so then delete the current timer.\n if (state.timer?.id === t.id) {\n if (newCurrentTimer.startTime === \"\" || t.userId !== t.loggedInUser)\n state.timer = {};\n else state.timer = newCurrentTimer;\n } else {\n if (t.userId !== t.loggedInUser) return;\n\n if (\n newCurrentTimer.startTime !== \"\" &&\n (state.timer?.startTime === undefined ||\n state.timer?.startTime < newCurrentTimer.startTime)\n ) {\n state.timer = newCurrentTimer;\n }\n }\n}\n\nfunction getNewest(timers, date, timerDescription) {\n let startTime = \"\";\n let endTime = \"\";\n const today = _date.stamp();\n\n for (let i = 0; i < timers.length; i++) {\n if (timers[i].endTime === \"\") {\n startTime = date + timers[i].startTime;\n endTime = timers[i].endTime;\n break;\n } else if (startTime < date + timers[i].startTime && date === today) {\n startTime = date + timers[i].startTime;\n endTime = date + timers[i].endTime;\n }\n }\n return {\n startTime: startTime,\n endTime: endTime,\n timerDescription: timerDescription,\n };\n}\n\nexport const reducer = currentTimerSlice.reducer;\n\nconst { setCurrentTimer, updateCurrentTimer } = currentTimerSlice.actions;\nexport const actions = { getCurrentTimer, setCurrentTimer, updateCurrentTimer };\n","import shark from \"../../../apis/shark\";\nimport { _date, _datetime } from \"../../../common/functions/dates\";\n\nexport function getCurrentTimerAPI() {\n return shark.post({ command: \"getCurrentTimer\", date: _date.stamp() });\n}\n\nexport function stopCurrentTimerAPI({ timeId }) {\n return shark.post({\n command: \"stopCurrentTimer\",\n timeId: timeId,\n datetime: _datetime.stamp(),\n });\n}\n","import storage from \"localforage\";\nimport { persistReducer } from \"redux-persist\";\n\nimport { reducer } from \"./slices\";\n\nconst persistConfig = {\n key: \"time/currentTimer\",\n version: 1,\n storage,\n whitelist: [\"timer\"],\n};\n\nexport default persistReducer(persistConfig, reducer);\n","import reducer from \"./reducers\";\n\nexport { actions as currentTimerActions } from \"./slices\";\n\nconst currentTimerReducer = reducer;\nexport default currentTimerReducer;\n","import shark from \"../../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityHooks,\n createEntityReducer,\n entityDescription,\n entitySelect,\n entityTableFilter,\n} from \"../../common/entity\";\nimport TimeHoldDateSelect from \"./TimeHoldDateSelect\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getHoldReasons\" }).then((r) => {\n return { data: r.responseData.holdReasons };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"holdReason\",\n type: \"times/holdReasons\",\n getState: (state) => state.times.holdReasons,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nexport const holdReasonState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport const { useEntities: useTimeHoldReasons, useEntity: useTimeHoldReason } =\n createEntityHooks({\n entity: holdReasonState.entity,\n actions: holdReasonState.actions,\n });\n\nconst TimeHoldReasonSelect = entitySelect({\n name: \"timeHoldReason\",\n useEntities: useTimeHoldReasons,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nconst TimeHoldReasonTableFilter = entityTableFilter({\n name: \"timeHoldReason\",\n useEntities: useTimeHoldReasons,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nconst TimeHoldReasonDescription = entityDescription({\n name: \"timeHoldReason\",\n useEntity: useTimeHoldReason,\n});\n\nconst TimeHoldReason = {\n // Backend API\n api: holdReasonState.api,\n // State\n actions: holdReasonState.actions,\n selectors: holdReasonState.entity.selectors,\n // Hooks\n useAll: useTimeHoldReasons,\n useOne: useTimeHoldReason,\n // Components\n Select: TimeHoldReasonSelect,\n Description: TimeHoldReasonDescription,\n TableFilter: TimeHoldReasonTableFilter,\n DateSelect: TimeHoldDateSelect,\n};\nexport default TimeHoldReason;\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React from \"react\";\nimport Select from \"react-select\";\n\nexport default function TimeHoldDateSelect({\n value,\n onChange,\n id,\n isClearable = true,\n date,\n defaultFirstMonth = false,\n}) {\n let valueFound = null;\n const startDate = date == null ? moment() : moment(date);\n startDate.date(1);\n\n let convertedValue = null;\n if (value != null) {\n convertedValue = moment(value).date(1);\n }\n\n const _options = [];\n for (let i = 1; i <= 24; i++) {\n let newDate = moment(startDate).add(i, \"months\");\n const obj = {\n value: newDate,\n label: newDate.format(\"MMMM YYYY\"),\n };\n _options.push(obj);\n if (convertedValue != null && newDate.isSame(value, \"day\")) {\n valueFound = obj;\n }\n if (defaultFirstMonth) {\n if (\n valueFound === null &&\n (_.isEmpty(value) ||\n (typeof value.isValid === \"function\" && !value.isValid()))\n ) {\n valueFound = obj;\n onChange(newDate);\n }\n }\n }\n\n if (convertedValue !== null && valueFound === false) {\n const newDate = moment(value);\n const obj = {\n value: newDate,\n label: newDate.format(\"MMMM YYYY\"),\n };\n _options.push(obj);\n valueFound = obj;\n }\n\n return (\n \n );\n}\n","import shark from \"../apis/shark\";\nimport {\n createEntity,\n createEntityActions,\n createEntityHooks,\n createEntityReducer,\n entityDescription,\n entitySelect,\n entityTableFilter,\n} from \"../common/entity\";\n\nconst api = {\n getMany: () => {\n return shark.post({ command: \"getInternalTimeProjects\" }).then((r) => {\n return { data: r.responseData.internalTimeProjects };\n });\n },\n};\n\nconst entity = createEntity({\n name: \"internalProject\",\n type: \"times/internalProjects\",\n getState: (state) => state.times.internalProjects,\n});\nconst actions = createEntityActions({ entity, api });\nconst reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n});\n\nexport const internalProjectState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nconst { useEntities: useInternalProjects, useEntity: useInternalProject } =\n createEntityHooks({\n entity: internalProjectState.entity,\n actions: internalProjectState.actions,\n });\n\nconst TimeInternalProjectSelect = entitySelect({\n name: \"timeInternalProject\",\n useEntities: useInternalProjects,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nconst TimeInternalProjectTableFilter = entityTableFilter({\n name: \"timeInternalProject\",\n useEntities: useInternalProjects,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nconst TimeInternalProjectDescription = entityDescription({\n name: \"timeInternalProject\",\n useEntity: useInternalProject,\n});\n\nconst TimeInternalProject = {\n // Backend API\n api: internalProjectState.api,\n // State\n actions: internalProjectState.actions,\n selectors: internalProjectState.entity.selectors,\n // Hooks\n useAll: useInternalProjects,\n useOne: useInternalProject,\n // Components\n Select: TimeInternalProjectSelect,\n Description: TimeInternalProjectDescription,\n TableFilter: TimeInternalProjectTableFilter,\n};\nexport default TimeInternalProject;\n","import shark from \"../../apis/shark\";\nimport { _date, _datetime } from \"../../common/functions/dates\";\n\nexport function getTimesAPI(filter) {\n const payload = {\n ...filter,\n command: \"getTimes\",\n };\n return shark.post(payload);\n}\n\nexport function getTimeAPI({ id }) {\n const payload = {\n id: id,\n command: \"getTime\",\n };\n return shark.post(payload);\n}\n\nexport function createTimeAPI(payload) {\n const payload2 = {\n command: \"createTime\",\n ...payload,\n };\n return shark.post(payload2);\n}\n\nexport function updateTimeAPI(payload) {\n const payload2 = {\n command: \"updateTime\",\n ...payload,\n };\n return shark.post(payload2);\n}\n\nexport function deleteTimeAPI(payload) {\n const payload2 = {\n command: \"deleteTime\",\n ...payload,\n };\n return shark.post(payload2);\n}\n\nexport function moveTimeAPI(payload) {\n const payload2 = {\n command: \"moveTime\",\n ...payload,\n };\n return shark.post(payload2);\n}\n\nexport function restartTimerAPI({ timeId }) {\n return shark.post({\n command: \"restartTimer\",\n timeId: timeId,\n datetime: _datetime.stamp(),\n });\n}\n\nexport function getTimeStatsAPI({ startDate, endDate, userId }) {\n return shark.post({\n command: \"getTimeStats\",\n startDate: _date.stamp(startDate),\n endDate: _date.stamp(endDate),\n userId: userId,\n });\n}\n","import {\n createAsyncThunk,\n createEntityAdapter,\n createSlice,\n} from \"@reduxjs/toolkit\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\nimport {\n buildAsyncThunkReducer,\n INITIAL_LOADING_STATE,\n testStateLoading,\n} from \"../../common/functions/state\";\nimport { actions as currentTimerActions } from \"../currentTimer/state/slices\";\nimport {\n createTimeAPI,\n deleteTimeAPI,\n getTimeAPI,\n getTimesAPI,\n getTimeStatsAPI,\n moveTimeAPI,\n restartTimerAPI,\n updateTimeAPI,\n} from \"./api\";\n\nconst timesAdapter = createEntityAdapter();\n\nconst getTimes = createAsyncThunk(\n \"times/getMany\",\n async (filter, { getState, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n\n const { responseData } = await getTimesAPI(filter);\n return responseData.times;\n },\n);\n\nconst getTime = createAsyncThunk(\n \"times/get\",\n async (filter, { getState, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n\n const { responseData } = await getTimeAPI(filter);\n return responseData;\n },\n);\n\nexport const createTime = createAsyncThunk(\n \"time/create\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n\n const { responseData } = await createTimeAPI(payload);\n dispatch({\n type: currentTimerActions.updateCurrentTimer.type,\n payload: {\n ...responseData,\n action: \"create\",\n loggedInUser: getState().auth.user,\n },\n });\n return responseData;\n },\n);\n\nexport const updateTime = createAsyncThunk(\n \"time/update\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n\n const { responseData } = await updateTimeAPI(payload);\n dispatch({\n type: currentTimerActions.updateCurrentTimer.type,\n payload: {\n ...responseData,\n action: \"update\",\n loggedInUser: getState().auth.user,\n },\n });\n return responseData;\n },\n);\n\nexport const deleteTime = createAsyncThunk(\n \"time/delete\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n\n const { responseData } = await deleteTimeAPI(payload);\n dispatch({\n type: currentTimerActions.updateCurrentTimer.type,\n payload: {\n ...responseData,\n action: \"delete\",\n loggedInUser: getState().auth.user,\n },\n });\n return responseData;\n },\n);\n\nexport const moveTime = createAsyncThunk(\n \"time/move\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n\n const { responseData } = await moveTimeAPI(payload);\n return responseData;\n },\n);\n\nexport const restartTimer = createAsyncThunk(\n \"time/restartTimer\",\n async (payload, { getState, dispatch, requestId }) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n const { responseData } = await restartTimerAPI(payload);\n dispatch({\n type: currentTimerActions.updateCurrentTimer.type,\n payload: {\n ...responseData,\n action: \"update\",\n loggedInUser: getState().auth.user,\n },\n });\n return responseData;\n },\n);\n\nexport const getStats = createAsyncThunk(\n \"time/getStats\",\n async (\n { startDate, endDate, userId, key = \"default\" },\n { getState, requestId },\n ) => {\n if (!testStateLoading(getState().times.times, requestId)) return;\n const { responseData } = await getTimeStatsAPI({\n startDate,\n endDate,\n userId,\n });\n return {\n key: key,\n stats: responseData.stats,\n };\n },\n);\n\nconst timesSlice = createSlice({\n name: \"times\",\n initialState: timesAdapter.getInitialState({\n ...INITIAL_LOADING_STATE,\n lastUpdate: moment().subtract(30, \"days\").toISOString(),\n stats: {},\n }),\n reducers: {\n clearTimes(state) {\n timesAdapter.removeAll(state);\n state.requests = INITIAL_LOADING_STATE.requests;\n state.lastUpdate = moment().subtract(30, \"days\").toISOString();\n },\n },\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, getTimes, (state, action) => {\n if (action.payload.length !== 0) {\n timesAdapter.upsertMany(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, getTime, (state, action) => {\n if (action.payload.length !== 0) {\n timesAdapter.upsertOne(state, action.payload);\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, createTime, (state, action) => {\n if (action.payload) {\n // timesAdapter.upsertOne(state, action.payload);\n toast.success(\"Time record saved\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n buildAsyncThunkReducer(builder, moveTime, (state, action) => {\n if (action.payload.times.length !== 0) {\n timesAdapter.upsertMany(state, action.payload.times);\n if (action.payload.errors.length !== 0) {\n toast.warning(\n action.payload.errors.length +\n \" time records were not able to be moved\",\n );\n } else {\n toast.success(\"Time entries moved\");\n }\n } else {\n toast.error(\"Time records were not able to be moved\");\n }\n state.lastUpdate = new Date().toISOString();\n });\n buildAsyncThunkReducer(builder, updateTime, (state, action) => {\n if (action.payload) {\n timesAdapter.updateOne(state, action.payload);\n toast.success(\"Time record saved\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n buildAsyncThunkReducer(builder, deleteTime, (state, action) => {\n if (action.payload) {\n timesAdapter.removeOne(state, action.payload.id);\n toast.success(\"Time record deleted\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n buildAsyncThunkReducer(builder, restartTimer, (state, action) => {\n if (action.payload) {\n timesAdapter.updateOne(state, action.payload);\n toast.success(\"Timer restarted\", {\n autoClose: 2000,\n closeButton: false,\n });\n }\n });\n buildAsyncThunkReducer(builder, getStats, (state, action) => {\n if (action.payload) {\n const { key, stats } = action.payload;\n state.stats[key] = stats;\n }\n });\n },\n});\n\nexport const sliceReducer = timesSlice.reducer;\n\nconst { clearTimes } = timesSlice.actions;\nexport const actions = {\n getTimes,\n getTime,\n clearTimes,\n createTime,\n updateTime,\n deleteTime,\n moveTime,\n restartTimer,\n getStats,\n};\n\nexport const selectors = timesAdapter.getSelectors(\n (state) => state.times.times,\n);\n","import { sliceReducer } from \"./slices\";\n\nexport default sliceReducer;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport { billableOverrideReasonState } from \"../billableOverrideReasons\";\nimport currentTimerReducer from \"../currentTimer/state\";\nimport { holdReasonState } from \"../holdReasons\";\nimport { internalProjectState } from \"../internalProjects\";\nimport sliceReducer from \"./reducers\";\n\nexport { actions as timeActions } from \"./slices\";\nexport { selectors as timeSelectors } from \"./slices\";\n\nconst timeReducer = combineReducers({\n times: sliceReducer,\n holdReasons: holdReasonState.reducer,\n internalProjects: internalProjectState.reducer,\n billableOverrideReasons: billableOverrideReasonState.reducer,\n currentTimer: currentTimerReducer,\n});\nexport default timeReducer;\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport activityReducer from \"./activity/state\";\nimport appReducer from \"./app/state\";\nimport approvalsReducer from \"./approvals/state\";\nimport authReducer from \"./auth/state\";\nimport codeReviewsState from \"./codeReviews/state\";\nimport contactState from \"./contacts/state\";\nimport contractsState from \"./contracts/state\";\nimport crState from \"./crs/state\";\nimport customerState from \"./customers/state\";\nimport dbcState from \"./dbc/state\";\nimport ediState from \"./edi/state\";\nimport estimateState from \"./estimates/state\";\nimport expenseState from \"./expenses/state\";\nimport invoicesState from \"./invoices/state\";\nimport projectState from \"./projects/state\";\nimport serverState from \"./servers/state\";\nimport settingsReducer from \"./settings/state\";\nimport timeReducer from \"./time/state\";\nimport userState from \"./users/state\";\n\nconst rootReducer = combineReducers({\n app: appReducer,\n auth: authReducer,\n settings: settingsReducer,\n crs: crState.reducer,\n dbc: dbcState.reducer,\n edi: ediState.reducer,\n projects: projectState.reducer,\n customers: customerState.reducer,\n contacts: contactState.reducer,\n activity: activityReducer,\n users: userState.reducer,\n times: timeReducer,\n approvals: approvalsReducer,\n expenses: expenseState.reducer,\n servers: serverState.reducer,\n estimates: estimateState.reducer,\n contracts: contractsState.reducer,\n codeReviews: codeReviewsState.reducer,\n invoices: invoicesState.reducer,\n});\n\nconst STORE_RESET = \"store/RESET\";\nexport const resetState = () => {\n return {\n type: STORE_RESET,\n };\n};\n\nexport const resettableRootReducer = (state, action) => {\n if (action.type === STORE_RESET) {\n return rootReducer(undefined, action);\n }\n return rootReducer(state, action);\n};\n","import { configureStore, getDefaultMiddleware } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport {\n FLUSH,\n PAUSE,\n PERSIST,\n persistStore,\n PURGE,\n REGISTER,\n REHYDRATE,\n} from \"redux-persist\";\n\nimport { resettableRootReducer } from \"./reducers\";\n\nexport const store = configureStore({\n reducer: resettableRootReducer,\n middleware: getDefaultMiddleware({\n serializableCheck: {\n ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],\n warnAfter: 500,\n },\n immutableCheck: {\n warnAfter: 500,\n },\n }),\n devTools: {\n // actionSanitizer,\n stateSanitizer,\n },\n});\n\nexport const persistor = persistStore(store, { manualPersist: true });\n\nfunction stateSanitizer(state) {\n const hiddenString = (o) => {\n const oStr = _.isArray(o) ? `${o.length} items` : `${o}`;\n return `Hidden for performance (${oStr})`;\n };\n const {\n activity,\n crs,\n customers,\n projects,\n times,\n users,\n dbc,\n servers,\n contacts,\n } = state;\n return {\n ...state,\n activity: {\n ...activity,\n notifications: hiddenString(activity?.notifications?.ids),\n userActivity: hiddenString(activity?.userActivity?.ids),\n },\n crs: {\n ...crs,\n crs: hiddenString(crs?.crs?.ids),\n filters: hiddenString(crs?.filters?.ids),\n statuses: hiddenString(crs?.statuses?.ids),\n notificationTypes: hiddenString(crs?.notificationTypes?.ids),\n difficulties: hiddenString(crs?.difficulties?.ids),\n modules: hiddenString(crs?.modules?.ids),\n tableLayouts: hiddenString(crs?.tableLayouts?.ids),\n },\n customers: {\n ...customers,\n customers: hiddenString(customers?.customers?.ids),\n },\n projects: {\n ...projects,\n projects: hiddenString(projects?.projects?.ids),\n statuses: hiddenString(projects?.statuses?.ids),\n priorities: hiddenString(projects?.priorities?.ids),\n sources: hiddenString(projects?.sources?.ids),\n types: hiddenString(projects?.types?.ids),\n folders: hiddenString(projects?.folders?.ids),\n estimateStatuses: hiddenString(projects?.estimateStatuses?.ids),\n },\n times: {\n ...times,\n times: hiddenString(times?.times?.ids),\n holdReasons: hiddenString(times?.holdReasons?.ids),\n internalProjects: hiddenString(times?.internalProjects?.ids),\n billableOverrideReasons: hiddenString(\n times?.billableOverrideReasons?.ids,\n ),\n },\n users: {\n ...users,\n users: hiddenString(users?.users?.ids),\n pseudo: hiddenString(users?.pseudo?.ids),\n groups: hiddenString(users?.groups?.ids),\n teams: hiddenString(users?.teams?.ids),\n },\n dbc: {\n ...dbc,\n branches: hiddenString(dbc?.branches?.ids),\n codeTests: hiddenString(dbc?.codeTests?.ids),\n sourceCodes: hiddenString(dbc?.sourceCodes?.ids),\n reusablePrograms: hiddenString(dbc?.reusablePrograms?.ids),\n },\n servers: {\n ...servers,\n servers: hiddenString(servers?.servers?.ids),\n },\n contacts: {\n ...contacts,\n contacts: hiddenString(contacts?.contacts?.ids),\n },\n };\n}\n","import { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { resetState } from \"../reducers\";\nimport { persistor } from \"../store\";\nimport { authActions } from \"./state\";\n\nexport default function useLogout({ canResetState = false }) {\n const dispatch = useDispatch();\n const logoutCallback = useCallback(\n () =>\n dispatch(authActions.logout()).then(() => {\n if (canResetState) {\n dispatch(resetState());\n persistor.purge();\n }\n }),\n [dispatch, canResetState],\n );\n return logoutCallback;\n}\n","import { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router\";\n\nexport default function useRedirect() {\n const [redirect, setRedirect] = useState(null);\n const history = useHistory();\n\n useEffect(() => {\n if (redirect) {\n history.push(redirect);\n setRedirect(null);\n }\n }, [redirect, history]);\n return [redirect, setRedirect];\n}\n","import React from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\n\nimport useLogout from \"./auth/useLogout\";\nimport useRedirect from \"./common/hooks/useRedirect\";\nimport Page from \"./common/pages/Page\";\n\nexport default function ErrorFallback({ error, resetErrorBoundary }) {\n const logout = useLogout({ canResetState: true });\n const [, setRedirect] = useRedirect();\n return (\n \n \n \n \n \n \n \n \n \n Reach out to the{\" \"}\n \n T3 Support Chat Room\n {\" \"}\n with the following error information\n \n \n \n \n \n
    \n            {error.stack}\n          
    \n \n
    \n\n \n \n {\n logout();\n setRedirect(\"/\");\n setTimeout(() => {\n resetErrorBoundary();\n }, 1500);\n }}\n >\n Logout and Fully Reset Cache\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function CenteredModal({\n modalTitle,\n onClose,\n bodyHeader,\n body,\n show,\n}) {\n return (\n \n \n \n {modalTitle}\n \n \n \n

    {bodyHeader}

    \n {body}\n
    \n \n \n \n \n );\n}\n","import { entityDescription } from \"../../common/entity\";\nimport { useEstimateStatus } from \"./hooks\";\n\nexport const EstimateStatusDescription = entityDescription({\n name: \"estimateStatus\",\n useEntity: useEstimateStatus,\n});\n\nexport default EstimateStatusDescription;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useEstimateStatuses } from \"./hooks\";\n\nconst EstimateStatusTableFilter = entityTableFilter({\n name: \"estimateStatus\",\n useEntities: useEstimateStatuses,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default EstimateStatusTableFilter;\n","import EstimateStatusDescription from \"./EstimateStatusDescription\";\nimport EstimateStatusSelect from \"./EstimateStatusSelect\";\nimport EstimateStatusTableFilter from \"./EstimateStatusTableFilter\";\nimport { useEstimateStatus, useEstimateStatuses } from \"./hooks\";\nimport estimateStatusState from \"./state\";\n\nconst EstimateStatus = {\n // Backend API\n api: estimateStatusState.api,\n // State\n actions: estimateStatusState.actions,\n selectors: estimateStatusState.entity.selectors,\n // Hooks\n useAll: useEstimateStatuses,\n useOne: useEstimateStatus,\n // Components\n Select: EstimateStatusSelect,\n Description: EstimateStatusDescription,\n TableFilter: EstimateStatusTableFilter,\n};\nexport default EstimateStatus;\n","import { createEntityHooks } from \"../../common/entity\";\nimport folderState from \"./state\";\n\nexport const { useEntities: useFolders, useEntity: useFolder } =\n createEntityHooks({\n entity: folderState.entity,\n actions: folderState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useFolder } from \"./hooks\";\n\nconst FolderDescription = entityDescription({\n name: \"projectFolder\",\n useEntity: useFolder,\n});\n\nexport default FolderDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useFolders } from \"./hooks\";\n\nconst FolderSelect = entitySelect({\n name: \"projectFolder\",\n useEntities: useFolders,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default FolderSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useFolders } from \"./hooks\";\n\nconst FolderTableFilter = entityTableFilter({\n name: \"projectFolder\",\n useEntities: useFolders,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default FolderTableFilter;\n","import FolderDescription from \"./FolderDescription\";\nimport FolderSelect from \"./FolderSelect\";\nimport FolderTableFilter from \"./FolderTableFilter\";\nimport { useFolder, useFolders } from \"./hooks\";\nimport folderState from \"./state\";\n\nconst Folder = {\n // Backend API\n api: folderState.api,\n // State\n actions: folderState.actions,\n selectors: folderState.entity.selectors,\n // Hooks\n useAll: useFolders,\n useOne: useFolder,\n // Components\n Select: FolderSelect,\n Description: FolderDescription,\n TableFilter: FolderTableFilter,\n};\nexport default Folder;\n","export default function getProjectPriorityClassName(project) {\n if (!project) return \"\";\n const { statusId, priorityId } = project;\n\n if (statusId === \"CL\" || statusId === \"FX\") return \"\";\n\n if (priorityId === \"EM\" || priorityId === \"EF\") return \"table-dark\";\n else if (priorityId === \"CR\") return \"bg-danger\";\n else if (priorityId === \"PR\" || priorityId === \"IM\") return \"table-danger\";\n else return \"\";\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport priorityState from \"./state\";\n\nexport const { useEntities: usePriorities, useEntity: usePriority } =\n createEntityHooks({\n entity: priorityState.entity,\n actions: priorityState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { usePriority } from \"./hooks\";\n\nconst PriorityDescription = entityDescription({\n name: \"projectPriority\",\n useEntity: usePriority,\n});\n\nexport default PriorityDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { usePriorities } from \"./hooks\";\n\nconst PrioritySelect = entitySelect({\n name: \"projectPriority\",\n useEntities: usePriorities,\n});\n\nexport default PrioritySelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { usePriorities } from \"./hooks\";\n\nconst PriorityTableFilter = entityTableFilter({\n name: \"projectPriority\",\n useEntities: usePriorities,\n});\n\nexport default PriorityTableFilter;\n","import { usePriorities, usePriority } from \"./hooks\";\nimport PriorityDescription from \"./PriorityDescription\";\nimport PrioritySelect from \"./PrioritySelect\";\nimport PriorityTableFilter from \"./PriorityTableFilter\";\nimport priorityState from \"./state\";\n\nconst Priority = {\n // Backend API\n api: priorityState.api,\n // State\n actions: priorityState.actions,\n selectors: priorityState.entity.selectors,\n // Hooks\n useAll: usePriorities,\n useOne: usePriority,\n // Components\n Select: PrioritySelect,\n Description: PriorityDescription,\n TableFilter: PriorityTableFilter,\n};\nexport default Priority;\n","import React from \"react\";\nimport { Alert, Col, Row } from \"react-bootstrap\";\n\nexport default function ProjectAlerts({ project }) {\n const transferred =\n project?.transferredFolder && project?.transferredFolder !== \"CURRENT\";\n return (\n <>\n {project?.lockedBy ? (\n \n \n {project.lockedBy}\n \n \n ) : null}\n {transferred ? (\n \n \n \n Project is transferred. Changes are disallowed.\n \n \n \n ) : null}\n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { Alert, Badge, Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../common/functions/dates\";\nimport Customer from \"../customers\";\n\nexport default function ProjectContacts({\n project,\n isLoading = false,\n mailto,\n customerId,\n}) {\n const isLoadingAndInvalid = _.isEmpty(project?.customers) && isLoading;\n const _contacts = isLoadingAndInvalid\n ? _.times(1, _.stubObject)\n : project?.customers.filter(\n (c) => !customerId || customerId === c.customerId,\n );\n\n return (\n <>\n {_.map(_contacts, (c, index) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {c?.poNumber !== \"\" && !_.isNil(c?.poNumber) ? (\n \n {\"PO: \" + c.poNumber}\n \n ) : null}\n \n \n \n \n \n ))}\n \n );\n}\n\nfunction CustomerBadges({ id }) {\n const { customer } = Customer.useOne({ id });\n const codeDate = _date.fromStamp(customer?.lastCodeDate);\n return (\n \n \n {customer?.alias}\n \n \n {customer?.championId}\n {customer?.otherChampions.map((ch) => \"/\" + ch?.userId).join(\"\")}\n \n \n {codeDate.isValid() ? <>{codeDate.format(\"MM/DD/YY\")} : null}\n \n \n {customer?.engineeringResponsibilty}\n \n \n );\n}\n","import _ from \"lodash\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport User from \"../../../users\";\nimport { isTierOneGroup } from \"../../../users/groups\";\nimport { useFormContext } from \"../../forms\";\n\nfunction canOwnerChangeGroup(owner, groupId) {\n const isTierOne =\n (owner === \"*TR1*\" || owner === \"*TR2*\") && isTierOneGroup(groupId);\n return owner && owner.charAt(0) === \"*\" && owner !== \"*OSL*\" && !isTierOne;\n}\n\nexport default function useOwnerGroupFields({\n autoUpdate = true,\n isNew = false,\n} = {}) {\n const { watch, setValue } = useFormContext();\n const [owner, groupId, statusId] = watch([\"owner\", \"groupId\", \"statusId\"]);\n\n const loggedInUser = useSelector((state) => state.auth.user);\n\n const [ownerUpdateId, setOwnerUpdateId] = useState(null);\n const [groupUpdateId, setGroupUpdateId] = useState(null);\n\n const handleGroupChange = useCallback(\n (groupId, isOwnerReset) => {\n const _isOwnerReset = _.isBoolean(isOwnerReset)\n ? isOwnerReset\n : !owner || canOwnerChangeGroup(owner, groupId);\n setValue(\"groupId\", groupId, { shouldValidate: true, shouldDirty: true });\n if (_isOwnerReset)\n if ((isNew || owner === \"*WEB*\") && isTierOneGroup(groupId))\n setValue(\"owner\", \"*TR1*\", {\n shouldValidate: true,\n shouldDirty: true,\n });\n else setGroupUpdateId(groupId);\n },\n [owner, setValue, isNew],\n );\n\n const handleOwnerChange = useCallback(\n (owner) => {\n if (owner) {\n setValue(\"owner\", owner, { shouldValidate: true, shouldDirty: true });\n if (canOwnerChangeGroup(owner, groupId) && owner?.charAt(0) === \"*\")\n setOwnerUpdateId(owner);\n } else setGroupUpdateId(groupId);\n },\n [groupId, setValue],\n );\n\n const { group: { defaultOwner: groupDefaultOwner = \"\" } = {} } =\n User.Group.useOne({\n id: groupUpdateId,\n });\n const { pseudo: { defaultGroup: ownerDefaultGroup = \"\" } = {} } =\n User.Pseudo.useOne({\n id: ownerUpdateId,\n });\n\n // Update owner to default when group changes\n // or default to current user if not open\n // Update group to default when user changes\n useEffect(() => {\n if (!autoUpdate) return;\n if (!owner && statusId !== \"OP\")\n setValue(\"owner\", loggedInUser, {\n shouldValidate: true,\n shouldDirty: true,\n });\n else if (groupUpdateId && groupDefaultOwner) {\n setValue(\"owner\", groupDefaultOwner, { shouldValidate: true });\n setGroupUpdateId(null);\n } else if (ownerUpdateId && ownerDefaultGroup) {\n setValue(\"groupId\", ownerDefaultGroup, { shouldValidate: true });\n setOwnerUpdateId(null);\n }\n }, [\n autoUpdate,\n groupDefaultOwner,\n groupUpdateId,\n loggedInUser,\n owner,\n ownerDefaultGroup,\n ownerUpdateId,\n setValue,\n statusId,\n ]);\n\n return { handleGroupChange, handleOwnerChange };\n}\n","import React from \"react\";\nimport { Col, Form } from \"react-bootstrap\";\n\nimport User from \"../../../users\";\nimport { useController, useFormContext } from \"../../forms\";\nimport useOwnerGroupFields from \"../../hooks/forms/useGroupOwnerFields\";\n\nexport default function GroupOwnerFields({ label = true, isNew }) {\n const { handleGroupChange, handleOwnerChange } = useOwnerGroupFields({\n isNew,\n });\n\n return (\n <>\n handleGroupChange(value)}\n />\n handleOwnerChange(value)}\n isClearable\n hasMeButton\n />\n \n );\n}\n\nfunction GroupId({ name, label, onChange }) {\n const {\n field: { onChange: _, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled },\n } = useFormContext();\n\n return (\n \n \n \n ) : null\n }\n id=\"groupId\"\n name=\"groupId\"\n onChange={onChange}\n {...field}\n isInvalid={!!error}\n errors={error?.message}\n isDisabled={isDisabled}\n />\n \n \n );\n}\n\nfunction Owner({ name, label, onChange, ...props }) {\n const {\n field: { onChange: _, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled },\n } = useFormContext();\n\n return (\n \n \n \n \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport statusState from \"./state\";\n\nexport const { useEntities: useStatuses, useEntity: useStatus } =\n createEntityHooks({\n entity: statusState.entity,\n actions: statusState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useStatus } from \"./hooks\";\n\nconst StatusDescription = entityDescription({\n name: \"projectStatus\",\n useEntity: useStatus,\n});\n\nexport default StatusDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useStatuses } from \"./hooks\";\n\nconst StatusSelect = entitySelect({\n name: \"projectStatus\",\n useEntities: useStatuses,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default StatusSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useStatuses } from \"./hooks\";\n\nconst StatusTableFilter = entityTableFilter({\n name: \"projectStatus\",\n useEntities: useStatuses,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default StatusTableFilter;\n","import { useStatus, useStatuses } from \"./hooks\";\nimport statusState from \"./state\";\nimport StatusDescription from \"./StatusDescription\";\nimport StatusSelect from \"./StatusSelect\";\nimport StatusTableFilter from \"./StatusTableFilter\";\n\nconst Status = {\n // Backend API\n api: statusState.api,\n // State\n actions: statusState.actions,\n selectors: statusState.entity.selectors,\n // Hooks\n useAll: useStatuses,\n useOne: useStatus,\n // Components\n Select: StatusSelect,\n Description: StatusDescription,\n TableFilter: StatusTableFilter,\n};\nexport default Status;\n","import _ from \"lodash\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport { entityLookup } from \"../common/functions/entityLookup\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\nimport getProjectPriorityClassName from \"./getProjectPriorityClassName\";\nimport Priority from \"./priorities\";\nimport Status from \"./statuses\";\n\nexport default function ProjectTable({ projects, onSelect, ...props }) {\n const customers = useSelector(Customer.selectors.selectEntities);\n const columns = useMemo(\n () => [\n {\n id: \"id\",\n Header: \"Project\",\n accessor: \"id\",\n disableFilters: true,\n\n Cell: ({ value, row: { original: project } }) =>\n _.isFunction(onSelect) ? (\n onSelect(project?.id)}\n >\n {value}\n \n ) : (\n \n {value}\n \n ),\n },\n {\n id: \"owner\",\n Header: \"Owner\",\n accessor: \"owner\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"customer\",\n Header: \"Customer\",\n accessor: ({ customers: projectCustomers = [] }) => {\n return projectCustomers\n ? projectCustomers.length > 1\n ? \"Multiple\"\n : entityLookup(customers, projectCustomers[0]?.customerId || \"\")\n ?.name\n : \"\";\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"contact\",\n Header: \"Contact\",\n accessor: ({ customers: projectCustomers = [] }) => {\n return projectCustomers\n ? projectCustomers.length > 1\n ? \"Multiple\"\n : projectCustomers[0]?.contactName || \"\"\n : \"\";\n },\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"status\",\n Header: \"Status\",\n accessor: \"statusId\",\n Filter: Status.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Status*\",\n id: \"statusExtended\",\n accessor: \"statusId\",\n Filter: Status.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n sortInverted: true,\n\n Cell: ({ value, row: { original: project } }) => (\n \n \n \n \n \n {project?.isWaitingOnCustomer ? \"⏳\" : \"\"}\n {project?.isSAMFollowup ? \"🆘\" : \"\"}\n \n \n ),\n },\n {\n id: \"synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n ),\n },\n {\n Header: \"Priority\",\n id: \"priority\",\n accessor: \"priorityId\",\n Filter: Priority.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Group\",\n id: \"group\",\n accessor: \"groupId\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Create Date\",\n id: \"createDate\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Create Time\",\n id: \"createTime\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_datetime.displayTime(_datetime.fromStamp(value))}\n ),\n },\n {\n Header: \"Modify Date\",\n id: \"modifyDate\",\n accessor: \"lastUpdateDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Modify Time\",\n id: \"modifyTime\",\n accessor: \"lastUpdateDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value ? _datetime.displayTime(_datetime.fromStamp(value)) : null}\n \n ),\n },\n {\n Header: \"SAM Follow-Up?\",\n id: \"isSAMFollowup\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isSAMFollowup }) => (isSAMFollowup ? \"🆘\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Contract Project?\",\n id: \"isContractProject\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isContractProject }) => (isContractProject ? \"✅\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Contract Description\",\n id: \"contractDescription\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: \"contractDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n ],\n [customers, onSelect],\n );\n return (\n {\n if (!row.original) return {};\n const className = getProjectPriorityClassName(row.original);\n if (!className) return {};\n return { className: className };\n }}\n {...props}\n moveFooterToTop\n />\n );\n}\n","import parseIntId from \"./parseIntId\";\n\nexport function entityLookup(entities, id) {\n const idInt = parseIntId(id);\n if (idInt === 0) return null;\n\n return entities[idInt.toString()];\n}\n","import React, { useCallback, useState } from \"react\";\nimport { Alert, Form, Modal } from \"react-bootstrap\";\n\nimport { useController, useFormContext } from \"../common/forms\";\nimport Customer from \"../customers\";\nimport ProjectTable from \"./ProjectTable\";\n\nexport default function ProjectCustomerSelect({ name, isDisabled }) {\n const {\n watch,\n setValue,\n setContext,\n context: { canBypassContractRestriction },\n } = useFormContext();\n\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n\n const [projectPrompt, setProjectPrompt] = useState({});\n\n const { getOne: getCustomer } = Customer.useOne();\n const { getMany: getCustomerContracts, loading: contractLoading } =\n Customer.Contracts.useAll();\n\n const checkContracts = useCallback(\n (customerId) =>\n getCustomerContracts({\n customerId: customerId,\n }).then(({ data: contracts } = {}) => {\n if (contracts?.length) {\n const warningContracts = contracts?.filter(\n (c) => !c.inactive && c.projectCreateWarning,\n );\n\n const projects = warningContracts?.map((c) =>\n c?.projects.map((p) => p),\n )[0];\n\n setProjectPrompt((prompt) =>\n prompt.message\n ? { ...prompt, projects }\n : warningContracts?.length\n ? { message: \"Warning: Customer contracts exist\", projects }\n : {},\n );\n }\n }),\n [getCustomerContracts],\n );\n\n const priorityId = watch(\"priorityId\");\n\n const onProjectCustomerChange = useCallback(\n (customerId) => {\n getCustomer({\n id: customerId,\n fetch: true,\n }).then(({ data: customer } = {}) => {\n if (!priorityId || priorityId === \"RG\" || priorityId === \"PM\")\n customer?.supportPlan === \"P\"\n ? setValue(\"priorityId\", \"PM\")\n : setValue(\"priorityId\", \"RG\");\n setContext((c) => ({ ...c, [name]: customer }));\n if (!customer) return;\n\n const { contractOnly = \"N\" } = customer;\n if (contractOnly === \"Y\") {\n if (canBypassContractRestriction !== true) {\n setProjectPrompt({\n message: \"Customer is contract only, select an existing project\",\n });\n } else {\n setProjectPrompt({\n message:\n \"Customer is contract only, but you have security to bypass this\",\n });\n }\n }\n checkContracts(customerId);\n setValue(name, customerId, { shouldValidate: true, shouldDirty: true });\n });\n },\n [\n canBypassContractRestriction,\n checkContracts,\n getCustomer,\n name,\n priorityId,\n setContext,\n setValue,\n ],\n );\n\n return (\n \n \n setProjectPrompt({})}\n size=\"xl\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n >\n \n \n Customer Projects\n \n \n \n \n {projectPrompt.message}\n \n \n \n \n \n );\n}\n","import { at } from \"lodash\";\nimport React, { useState } from \"react\";\nimport { Button, ButtonGroup, Col, Collapse, Form, Row } from \"react-bootstrap\";\n\nimport { FormsField, useFormContext } from \"../common/forms\";\nimport Contact from \"../contacts\";\nimport Customer from \"../customers\";\nimport ProjectCustomerSelect from \"./ProjectCustomerSelect\";\n\nexport default function ProjectCustomerEdit({\n name,\n onRemove,\n isFirst = false,\n isCustomerDisabled,\n isNew,\n}) {\n const [showDetails, setShowDetails] = useState(\n !isCustomerDisabled && !isFirst,\n );\n const {\n watch,\n formState: { errors },\n formsContext: { isDisabled },\n } = useFormContext();\n\n const [error] = at(errors, name);\n\n const customerId = watch(`${name}.customerId`);\n const contactId = watch(`${name}.contactId`);\n return (\n \n \n \n \n \n \n \n \n \n \n \n setShowDetails(!showDetails)}\n disabled={isDisabled}\n >\n ...\n \n {onRemove ? (\n \n -\n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { sum } from \"lodash\";\nimport { boolean, number, object, string } from \"yup\";\n\nconst projectCustomerSchema = object()\n .shape({\n customerId: number()\n .label(\"Customer\")\n .required()\n .positive()\n .integer()\n .test(\n \"customerSettingsCheck\",\n \"Invalid customer due to settings\",\n (_, { path, options: { context = {} }, createError }) => {\n const { canBypassContractRestriction } = context;\n const customer = context[path];\n\n if (!customer) return true;\n\n const { contractOnly = \"N\" } = customer;\n if (contractOnly === \"S\") {\n return createError({\n message: \"Customer is no longer valid for new projects\",\n });\n } else if (\n contractOnly === \"Y\" &&\n canBypassContractRestriction !== true\n ) {\n return createError({\n message: \"Customer is contract only, select an existing project\",\n });\n }\n return true;\n },\n ),\n contactId: number()\n .label(\"Contact\")\n .min(0)\n .integer()\n .transform((v) => (isNaN(v) ? 0 : v)),\n poNumber: string().label(\"PO Number\").max(30),\n waitingOnCustomer: boolean().label(\"Waiting on Customer\").required(),\n splitType: string().label(\"Split Type\").required().oneOf([\"P\", \"D\"]),\n splitAmount: number()\n .label(\"Split amount\")\n .required()\n .min(0)\n .when(\"splitType\", {\n is: \"P\",\n then: number().max(100, \"Split percent must be less than 100\"),\n\n otherwise: number().max(\n 999999,\n \"Split amount must be less than 999,999\",\n ),\n }),\n })\n .test({\n name: \"customers-split-amount-total\",\n test: (_, { path, parent, createError }) => {\n const percents = parent\n ?.filter((c) => c.splitType === \"P\")\n ?.map((c) => c.splitAmount);\n if (sum(percents) !== 100) {\n return createError({\n path: `${path}.splitAmount`,\n message: \"Customers total split percent must equal 100%\",\n });\n }\n return true;\n },\n message: \"\",\n });\n\nexport default projectCustomerSchema;\n\nexport const PROJECT_CUSTOMER_INITIAL = {\n customerId: 0,\n contactId: 0,\n waitingOnCustomer: false,\n splitType: \"P\",\n splitAmount: 100,\n poNumber: \"\",\n};\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\n\nimport { useFieldArray, useFormContext } from \"../common/forms\";\nimport useReinitState from \"../common/hooks/useReinitState\";\nimport ProjectCustomerEdit from \"./ProjectCustomerEdit\";\nimport { PROJECT_CUSTOMER_INITIAL } from \"./projectCustomerSchema\";\n\nexport default function ProjectCustomersEdit({ name, isNew = false }) {\n const {\n formState: { errors },\n formsContext: { isDisabled },\n } = useFormContext();\n\n const error = errors?.[name];\n\n const { fields, append, remove } = useFieldArray({ name });\n\n const [editCustomers, setEditCustomers] = useReinitState(isNew);\n\n return (\n \n \n \n Customers\n \n\n {fields?.map((c, idx) => (\n remove(idx)}\n isNew={isNew}\n isCustomerDisabled={!editCustomers}\n />\n ))}\n \n \n {!editCustomers ? (\n setEditCustomers(true)}\n disabled={isDisabled}\n >\n Edit Customers\n \n ) : (\n append(PROJECT_CUSTOMER_INITIAL)}\n disabled={isDisabled}\n >\n Add Customer\n \n )}\n \n \n {_.isString(error?.message) ? (\n {error?.message}\n ) : null}\n \n \n \n \n );\n}\n","import { array, boolean, number, object, ref, string } from \"yup\";\n\nimport projectCustomerSchema from \"./projectCustomerSchema\";\n\nconst projectSchema = object().shape({\n synopsis: string().label(\"Synopsis\").required().max(200),\n description: string().label(\"Description\").required().max(5000),\n priorityId: string().label(\"Priority\").required(),\n groupId: string().label(\"Group\").required(),\n sourceId: string().label(\"Source\").required(),\n statusId: string().label(\"Status\").required(),\n typeId: string().label(\"Type\").required(),\n owner: string()\n .label(\"Owner\")\n .required()\n .when(\"statusId\", {\n is: (v) => v !== \"OP\",\n then: string().test(\n \"is-not-pseudo\",\n \"Pseudo user is only valid on open projects\",\n (value) => value?.charAt(0) !== \"*\",\n ),\n }),\n customers: array().of(projectCustomerSchema),\n fixNotes: string()\n .label(\"Fix Notes\")\n .max(500)\n .when(\"statusId\", {\n is: (v) => v !== \"OP\",\n then: string().required(\"Fix notes are required for closed projects\"),\n }),\n isSeparateInvoice: boolean().label(\"Separate invoice?\"),\n estimateMinHours: number()\n .label(\"Estimate Hours (Minimum)\")\n .min(0)\n .max(\n ref(\"estimateMaxHours\"),\n \"Estimate (hours) minimum must be less than/equal to maximum\",\n ),\n estimateMaxHours: number()\n .label(\"Estimate Hours (Maximum)\")\n .min(0)\n .min(\n ref(\"estimateMinHours\"),\n \"Estimate (hours) maximum must be greater than/equal to minimum\",\n ),\n estimateMinCost: number()\n .label(\"Estimate Cost (Minimum)\")\n .min(0)\n .max(\n ref(\"estimateMaxCost\"),\n \"Estimate (cost) minimum must be less than/equal to maximum\",\n ),\n estimateMaxCost: number()\n .label(\"Estimate Cost (Maximum)\")\n .min(0)\n .min(\n ref(\"estimateMinCost\"),\n \"Estimate (cost) maximum must be greater than/equal to minimum\",\n ),\n estimateRate: number()\n .label(\"Estimate Rate\")\n .when(\"estimateMaxHours\", {\n is: (v) => v > 0,\n then: number().positive(),\n }),\n estimateUserId: string().label(\"Estimate Rate (User)\"),\n estimateStatusId: string().label(\"Estimate Status\"),\n});\n\nexport default projectSchema;\n","import { createEntityHooks } from \"../../common/entity\";\nimport sourceState from \"./state\";\n\nexport const { useEntities: useSources, useEntity: useSource } =\n createEntityHooks({\n entity: sourceState.entity,\n actions: sourceState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useSource } from \"./hooks\";\n\nconst SourceDescription = entityDescription({\n name: \"projectSource\",\n useEntity: useSource,\n});\n\nexport default SourceDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useSources } from \"./hooks\";\n\nconst SourceSelect = entitySelect({\n name: \"projectSource\",\n useEntities: useSources,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default SourceSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useSources } from \"./hooks\";\n\nconst SourceTableFilter = entityTableFilter({\n name: \"projectSource\",\n useEntities: useSources,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default SourceTableFilter;\n","import { useSource, useSources } from \"./hooks\";\nimport SourceDescription from \"./SourceDescription\";\nimport SourceSelect from \"./SourceSelect\";\nimport SourceTableFilter from \"./SourceTableFilter\";\nimport sourceState from \"./state\";\n\nconst Source = {\n // Backend API\n api: sourceState.api,\n // State\n actions: sourceState.actions,\n selectors: sourceState.entity.selectors,\n // Hooks\n useAll: useSources,\n useOne: useSource,\n // Components\n Select: SourceSelect,\n Description: SourceDescription,\n TableFilter: SourceTableFilter,\n};\nexport default Source;\n","import { isEmpty } from \"lodash\";\nimport React from \"react\";\nimport { Alert, Button, Col, Form, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Prompt } from \"react-router\";\n\nimport GroupOwnerFields from \"../common/components/forms/GroupOwnerFields\";\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport Priority from \"./priorities\";\nimport ProjectAlerts from \"./ProjectAlerts\";\nimport ProjectCustomersEdit from \"./ProjectCustomersEdit\";\nimport projectSchema from \"./projectSchema\";\nimport Source from \"./sources\";\nimport Type from \"./types\";\n\nexport default function ProjectEditor({\n project,\n isNew = false,\n onSubmit,\n error = \"\",\n onCancel,\n}) {\n const transferred =\n project?.transferredFolder && project?.transferredFolder !== \"CURRENT\";\n const isWeb = project?.owner === \"*WEB*\";\n\n const canBypassContractRestriction = useSelector(\n (state) => state.auth.canBypassContractRestriction,\n );\n return (\n \n <>\n {error ? (\n \n \n {error}\n \n \n ) : null}\n \n \n \n \n );\n}\n\nfunction ProjectForms({ isNew, isWeb, onCancel }) {\n const {\n register,\n submitForm,\n formState: { isSubmitting, dirtyFields },\n formsContext: { isDisabled },\n } = useFormContext();\n const isFieldsDirty = !isEmpty(dirtyFields);\n\n useFormsKeys();\n\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 {isNew ? \"Create\" : \"Save\"} Project\n \n \n \n {isNew ? (\n \n ) : null}\n \n \n {onCancel ? (\n \n \n \n Cancel\n \n \n \n \n ) : null}\n {!isNew ? (\n \n \n \n \n \n \n ) : null}\n \n \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useState } from \"react\";\nimport { Form } from \"react-bootstrap\";\n\nimport useReinitState from \"../hooks/useReinitState\";\n\nexport default function FieldInput({\n id,\n as = \"input\",\n type = \"text\",\n value,\n label,\n onChange = () => {},\n onChangeEvent = () => {},\n onChangeOnBlur,\n onBlur,\n name,\n errors,\n ...props\n}) {\n const [fieldValue, setFieldValue] = useReinitState(value);\n const [focus, setFocus] = useState(false);\n\n const canOnChangeOnBlur = _.isUndefined(onChangeOnBlur)\n ? as !== \"select\"\n : onChangeOnBlur;\n\n const formValue =\n _.isUndefined(fieldValue) || _.isNull(fieldValue) ? \"\" : fieldValue;\n\n function parseValue(v) {\n switch (type) {\n case \"number\":\n return parseFloat(v);\n case \"currency\":\n return parseFloat(v);\n default:\n return `${v}`;\n }\n }\n\n function handleOnBlur(e) {\n if (onBlur) onBlur(e);\n if (!canOnChangeOnBlur) return;\n setFocus(false);\n if (focus && parseValue(fieldValue) !== parseValue(value))\n onChange(parseValue(fieldValue));\n }\n\n return (\n \n {label ? {label} : null}\n {\n canOnChangeOnBlur\n ? setFieldValue(e.target.value)\n : onChange(e.target.value);\n onChangeEvent(e);\n }}\n onFocus={() => setFocus(true)}\n onBlur={handleOnBlur}\n id={id}\n name={name ? name : id}\n />\n {errors ? (\n {errors}\n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\n\nimport EstimateEditor from \"./EstimateEditor\";\n\nexport default function EstimateEditorModal({ title, show, onHide, ...props }) {\n return (\n \n \n {title}\n \n \n \n \n \n );\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport estimateState from \"./state\";\n\nexport const {\n useEntities: useEstimates,\n useEntity: useEstimate,\n useEntitiesBySearch: useEstimatesBySource,\n} = createEntityHooks({\n entity: estimateState.entity,\n actions: estimateState.actions,\n parseId: (id) => {\n const nextId = parseIntId(id);\n return nextId === 0 ? undefined : nextId;\n },\n});\n","import React from \"react\";\n\nimport { _date } from \"../common/functions/dates\";\nimport EstimateEditorModal from \"./EstimateEditorModal\";\nimport { useEstimate } from \"./hooks\";\n\n//When no estimateId is given then we want to throw away the modal.\n//Then when an estimateID is given it will be initiliazed again\n//Which will get our estimate record a new.\nexport default function EstimateModifyModal({ estimateId, ...props }) {\n console.log(\"modify modal - estimate id \" + estimateId);\n return (\n <>\n {estimateId ? : null}\n \n );\n}\n\n// Get the estimate record and show the modal.\nfunction ShowTheModal({ onUpdate, estimateId, onClose }) {\n const { estimate, updateOne, loading, createOne } = useEstimate({\n id: estimateId,\n canGet: true,\n });\n\n return (\n {\n const payloadEstimate = { ...estimate };\n payloadEstimate.date = _date.stamp(estimate.date);\n updateOne(payloadEstimate).then(() => {\n onUpdate();\n onClose();\n });\n }}\n onSaveAsNew={(estimate) => {\n const payloadEstimate = { ...estimate };\n payloadEstimate.date = _date.stamp(estimate.date);\n createOne(payloadEstimate).then(() => {\n onUpdate();\n onClose();\n });\n }}\n />\n );\n}\n","import React, { useState } from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nimport { _date } from \"../common/functions/dates\";\nimport useTinykeys from \"../common/hooks/useTinykeys\";\nimport EstimateEditorModal from \"./EstimateEditorModal\";\nimport { useEstimate } from \"./hooks\";\n\nexport default function EstimateNewButton({\n label = \"Add Estimate\",\n onCreate,\n initialValues,\n disabled = false,\n}) {\n const { createOne } = useEstimate();\n const [showAdd, setShowAdd] = useState(false);\n\n useTinykeys(\n showAdd\n ? {}\n : {\n \"Alt+KeyA\": () => setShowAdd(true),\n },\n );\n\n return (\n <>\n setShowAdd(true)}\n disabled={disabled}\n >\n {label}\n \n setShowAdd(false)}\n onSubmit={(estimate) => {\n const payloadEstimate = { ...estimate };\n payloadEstimate.date = _date.stamp(estimate.date);\n createOne(payloadEstimate).then(() => {\n onCreate();\n setShowAdd(false);\n });\n }}\n />\n \n );\n}\n","import React from \"react\";\nimport NumberFormat from \"react-number-format\";\n\nexport function HoursFormatter({ value, suffix = \" hr\" }) {\n return (\n \n );\n}\n\nexport function NumberFormatter({\n value,\n decimals = 2,\n blankZero = false,\n ...props\n}) {\n if (blankZero && Number(value) === Number(0)) return \"\";\n else\n return (\n \n );\n}\n\nexport function CurrencyFormatter({\n value,\n decimals = 2,\n blankZero = false,\n ...props\n}) {\n if (blankZero && Number(value) === Number(0)) return \"\";\n else\n return (\n \n );\n}\n\nexport function PercentFormatter({ value, decimals = 2, blankZero = false }) {\n if (blankZero && Number(value) === Number(0)) return \"\";\n return (\n \n );\n}\n","export const ESTIMATE_ACTIVE_STATUSES = {\n D: {\n id: \"D\",\n description: \"Draft\",\n },\n P: {\n id: \"P\",\n description: \"Published\",\n },\n A: {\n id: \"A\",\n description: \"Archived\",\n },\n V: {\n id: \"V\",\n description: \"Voided\",\n },\n};\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nexport default function EstimateLink({ id, children, setModifyShow }) {\n return (\n {\n setModifyShow(id);\n }}\n >\n {children || id}\n \n );\n}\n","export const ESTIMATE_TYPES = {\n B: {\n id: \"B\",\n description: \"Ballpark\",\n },\n A: {\n id: \"A\",\n description: \"Actual\",\n },\n I: {\n id: \"I\",\n description: \"Internal\",\n },\n};\n","import React, { useMemo } from \"react\";\n\nimport { CurrencyFormatter } from \"../common/formatters\";\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport { SelectColumnFilter } from \"../common/tables/TableFilters\";\nimport User from \"../users\";\nimport { ESTIMATE_ACTIVE_STATUSES } from \"./activeStatuses\";\nimport EstimateLink from \"./EstimateLink\";\nimport { ESTIMATE_TYPES } from \"./types\";\n\nexport default function EstimateTable({\n estimates,\n layout = [\"id\", \"type\", \"activeStatus\", \"owner\", \"hours\", \"cost\"],\n setModifyShow,\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"id\",\n Header: \"Estimate #\",\n accessor: \"id\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: (o) => (\n \n {o?.row?.original?.id +\n \" - \" +\n _date.display(_date.fromStamp(o?.row?.original.date))}\n \n ),\n },\n {\n id: \"type\",\n Header: \"Type\",\n accessor: (estimate) =>\n ESTIMATE_TYPES[estimate?.type]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"activeStatus\",\n Header: \"Active\",\n accessor: (estimate) =>\n ESTIMATE_ACTIVE_STATUSES[estimate?.activeStatus]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"owner\",\n Header: \"Owner\",\n accessor: \"owner\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"hours\",\n Header: \"Hours\",\n accessor: \"totalHours\",\n format: {\n alignment: { horizontal: \"right\" },\n number: {\n decimals: 2,\n },\n },\n },\n {\n id: \"cost\",\n Header: \"Cost\",\n accessor: \"totalCost\",\n Cell: ({ value }) => ,\n format: {\n alignment: { horizontal: \"right\" },\n },\n },\n ],\n [setModifyShow],\n );\n return (\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Modal, Row } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport FieldInput from \"../common/fields/FieldInput\";\nimport { useForms } from \"../common/forms\";\nimport EstimateModifyModal from \"../estimates/EstimateModifyModal\";\nimport EstimateNewButton from \"../estimates/EstimateNewButton\";\nimport EstimateTable from \"../estimates/EstimateTable\";\nimport { useEstimatesBySource } from \"../estimates/hooks\";\nimport User, { useUserRate } from \"../users\";\nimport EstimateStatus from \"./estimateStatuses\";\nimport projectSchema from \"./projectSchema\";\n\nexport default function ProjectEstimateEditor({\n project,\n show,\n onHide,\n update,\n onFormsUpdate,\n}) {\n return (\n \n \n Edit Project Estimate\n \n \n \n \n \n );\n}\n\nfunction EstimateForm({ project, update, onHide, method, onFormsUpdate }) {\n const [estimateMethod, setEstimateMethod] = useState(method);\n const {\n submitForm,\n control,\n watch,\n trigger,\n reset,\n setValue,\n formState: { errors },\n } = useForms({\n schema: { schema: projectSchema },\n defaultValues: project,\n onSubmit: (modifiedProject) => {\n let _project = {};\n if (estimateMethod === \"hours\") {\n _project = { ...modifiedProject };\n } else {\n // Clear estimateRate if type is dollars\n _project = {\n ...modifiedProject,\n estimateMinHours: 0,\n estimateMaxHours: 0,\n };\n }\n update(_project);\n onHide();\n },\n });\n\n const [showEstimateModifyModalId, setShowEstimateModifyModalId] =\n useState(null);\n const userId = useSelector((state) => state.auth.user);\n\n const projectId = project.id;\n const estimateRate = watch(\"estimateRate\");\n const estimateUserId = watch(\"estimateUserId\");\n const estimateMinHours = watch(\"estimateMinHours\");\n const estimateMaxHours = watch(\"estimateMaxHours\");\n\n const { loading: userRateLoading, userRate } = useUserRate({\n id: estimateUserId,\n canGet: Number(estimateRate) === 0 && estimateRate !== \"\",\n projectId,\n });\n\n useEffect(() => {\n if (!userRateLoading) {\n setValue(\"estimateRate\", userRate);\n trigger();\n }\n }, [userRate, setValue, userRateLoading, trigger]);\n\n //Automatically call getEstimates with the project and store in estimates\n //Also send back reset command to allow for re-querying on-demand\n const {\n estimates,\n loading: estimatesLoading,\n reset: resetEstimates,\n } = useEstimatesBySource({\n search: { source: \"PR\", reference: projectId },\n canGet: true,\n });\n\n function handleChange(onChange) {\n return (value) => {\n onChange(value);\n trigger();\n };\n }\n\n const onFormsUpdateLocal = () => {\n resetEstimates({ source: \"PR\", reference: projectId });\n onFormsUpdate();\n };\n\n const showEstimateModify = (id) => {\n setShowEstimateModifyModalId(id);\n };\n\n const closeEstimateModify = () => {\n setShowEstimateModifyModalId(null);\n };\n\n //This is needed to prevent rerenders causing data to be wiped\n //out on the new estimate form\n const estimateNewInitVals = useMemo(() => {\n return {\n source: \"PR\",\n reference: project.id,\n owner: userId,\n activeStatus: \"D\",\n type: \"A\",\n projectEstimateStatus: \"NOQUOT\",\n rate: project.estimateRate,\n rateUserId: estimateUserId,\n date: moment(),\n };\n }, [project.id, project.estimateRate, estimateUserId, userId]);\n\n let estimateMin = 0;\n if (!isNaN(estimateRate) && !isNaN(estimateMinHours)) {\n estimateMin = _.multiply(estimateRate, estimateMinHours).toFixed(2);\n }\n let estimateMax = 0;\n if (!isNaN(estimateRate) && !isNaN(estimateMaxHours)) {\n estimateMax = _.multiply(estimateRate, estimateMaxHours).toFixed(2);\n }\n\n return (\n
    \n \n \n \n Estimate Method\n {\n setEstimateMethod(e.target.value);\n reset(project);\n }}\n disabled={project.estimates.length > 0}\n >\n \n \n \n \n \n \n (\n 0}\n />\n )}\n />\n \n \n \n\n {estimateMethod === \"forms\" ? (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n resetEstimates({ source: \"PR\", reference: projectId })\n }\n />\n \n \n \n \n \n \n \n \n ) : (\n <>\n \n \n {estimateMethod === \"hours\" ? (\n <>\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n {\n onChange(v);\n setValue(\"estimateRate\", 0);\n })}\n isInvalid={errors.estimateUserId}\n errors={errors.estimateUserId?.message}\n isClearable\n />\n )}\n />\n \n \n (\n {\n onChange(v);\n setValue(\"estimateUserId\", \"\");\n })}\n isInvalid={errors.estimateRate}\n errors={errors.estimateRate?.message}\n disabled={userRateLoading}\n onChangeOnBlur={false}\n />\n )}\n />\n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n )}\n \n \n \n \n {\n onHide();\n }}\n >\n Cancel\n \n \n \n )}\n
    \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Row } from \"react-bootstrap\";\n\nimport useTinykeys from \"../common/hooks/useTinykeys\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\nimport Folder from \"./folders\";\nimport Status from \"./statuses\";\n\nexport default function ProjectFilters({ values = {}, onSubmit }) {\n const [filter, setFilter] = useState(values);\n\n useEffect(() => {\n setFilter(values);\n }, [values]);\n\n function handleChange(field, opts) {\n setFilter({\n ...filter,\n [field]: opts,\n });\n }\n\n useTinykeys({\n \"$mod+Enter\": () => onSubmit(filter),\n });\n\n return (\n {\n event.preventDefault();\n onSubmit(filter);\n }}\n >\n \n \n handleChange(\"folderId\", opts)}\n />\n \n \n \n \n handleChange(\"owners\", opts)}\n pseudo={true}\n placeholder=\"Select Owner(s)...\"\n isMulti\n isValid={filter?.owners?.length}\n />\n \n \n \n \n handleChange(\"projectStatuses\", opts)}\n isMulti\n isValid={filter?.projectStatuses?.length}\n />\n \n \n \n \n handleChange(\"champions\", opts)}\n pseudo={false}\n isChampion={true}\n isMulti\n isValid={filter?.champions?.length}\n />\n \n \n \n \n handleChange(\"groups\", opts)}\n isMulti\n isValid={filter?.groups?.length}\n />\n \n \n \n \n handleChange(\"customers\", opts)}\n isMulti\n isValid={filter?.customers?.length}\n />\n \n \n \n \n \n SAM Follow-Up?\n handleChange(\"isSAMFollowup\", e.target.value)}\n value={filter?.isSAMFollowup}\n >\n \n \n \n \n \n \n \n \n \n \n Contract Project?\n \n handleChange(\"isContractProject\", e.target.value)\n }\n value={filter?.isContractProject}\n >\n \n \n \n \n \n \n \n \n \n \n \n setFilter({ folderId: \"CURRENT\" })}\n >\n Clear\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function ProjectLink({ id, children }) {\n if (isNaN(id)) return <>{id};\n if (id === 0) return null;\n return (\n \n {children || id}\n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport useRedirect from \"../common/hooks/useRedirect\";\nimport projectState from \"./state\";\n\nexport default function useProject({\n id,\n logActivity = false,\n redirect = true,\n includeLogs = false,\n canGet = true,\n} = {}) {\n const project = useSelector((state) =>\n projectState.entity.selectors.selectById(state, id),\n );\n\n const dispatch = useDispatch();\n const [redirecting, setRedirect] = useRedirect();\n const [error, setError] = useState(null);\n const [loaded, setLoaded] = useState(false);\n\n const { getProject, lastUpdate, loading } = useProjectGetOne({\n id,\n logActivity,\n includeLogs,\n });\n\n const shouldGet =\n !isNaN(id) &&\n (canGet === true || (canGet !== false && _.isUndefined(project)));\n\n useEffect(() => {\n if (shouldGet)\n getProject()\n .catch(setError)\n .finally(() => setLoaded(true));\n }, [getProject, shouldGet]);\n\n return {\n project,\n loading: shouldGet && (loading || !loaded || !!redirecting),\n error,\n lastUpdate,\n getProject,\n createOne: (project) =>\n dispatch(projectState.actions.createOne(project))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n const projectId = result.id;\n if (redirect) {\n if (project?.createCr && result?.crs[0].id)\n setRedirect(\"/crs/\" + result?.crs[0].id);\n else setRedirect(\"/projects/\" + projectId);\n }\n return result;\n }),\n updateOne: (changes, updateCrPrompt) =>\n dispatch(\n projectState.actions.updateOne({\n id: id,\n data: changes,\n updateCrPrompt,\n }),\n )\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n if (redirect) setRedirect(\"/projects/\" + id);\n return result;\n })\n .catch((err) => {\n if (err?.message === \"Sync error\") {\n getProject().then(() => {\n throw new Error(\"CR out of date, please try again\");\n });\n } else {\n throw err;\n }\n }),\n createComment: ({ title, text }) =>\n dispatch(\n projectState.actions.createComment({\n project: project?.id,\n title,\n text,\n }),\n ),\n updateComment: ({ id, title, text }) =>\n dispatch(\n projectState.actions.updateComment({\n project: project?.id,\n id,\n title,\n text,\n }),\n ),\n createAttachment: (args) =>\n dispatch(\n projectState.actions.createAttachment({\n id,\n ...args,\n }),\n ).then(unwrapResult),\n\n updateWatch: (args) =>\n dispatch(\n projectState.actions.updateWatch({ id: project?.id, ...args }),\n ).then(unwrapResult),\n };\n}\n\nuseProject.getOne = useProjectGetOne;\n\nfunction useProjectGetOne({\n id,\n logActivity = false,\n includeLogs = false,\n} = {}) {\n const loading = useSelector(\n (state) => state.projects.projects.requests.loading,\n );\n const dispatch = useDispatch();\n const [lastUpdate, setLastUpdate] = useState(null);\n const getProject = useCallback(\n (args) =>\n dispatch(\n projectState.actions.getOne({\n id: id,\n logActivity,\n includeLogs,\n ...args,\n }),\n )\n .then(unwrapResult)\n .then((result) => {\n setLastUpdate(moment());\n return result;\n }),\n [id, dispatch, includeLogs, logActivity],\n );\n\n return { getProject, lastUpdate, loading };\n}\n","import _ from \"lodash\";\nimport React, { useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { PROJECT_CUSTOMER_INITIAL } from \"./projectCustomerSchema\";\nimport ProjectEditor from \"./ProjectEditor\";\nimport useProject from \"./useProject\";\n\nexport default function ProjectNew({\n onNew = () => {},\n onCancel,\n project: initialValues,\n}) {\n const { createOne } = useProject();\n const [error, setError] = useState(null);\n\n const { defaultOwner, defaultGroupId } = useSelector(\n (state) => state.settings.settings,\n );\n\n const defaultValues = {\n customers: [PROJECT_CUSTOMER_INITIAL],\n groupId: defaultGroupId || \"\",\n sourceId: \"PH\",\n statusId: \"OP\",\n typeId: \"SU\",\n priorityId: \"RG\",\n owner: defaultOwner || \"*TR1*\",\n createCr: true,\n\n //Use initial values from project prop, but ignore any undefined\n ..._.pickBy(initialValues || {}, (v) => !_.isUndefined(v)),\n };\n\n return (\n {\n createOne(project)\n .catch((err) => setError(err?.message))\n .then((result) => {\n return onNew(result);\n });\n }}\n onCancel={onCancel}\n error={error}\n />\n );\n}\n","import _ from \"lodash\";\n\nexport default function queryToString(filter) {\n let filters = [];\n\n const excludeFlag = (flag) => {\n return flag === false || (_.isArray(flag) && flag.includes(false))\n ? \"-\"\n : \"\";\n };\n\n if (!_.isEmpty(filter?.owners)) {\n if (filter.owners.length === 1)\n filters.push(\n `Owners (${excludeFlag(filter?.ownersInclude)}${filter.owners[0]})`,\n );\n else\n filters.push(\n `Owners (${excludeFlag(filter?.ownersInclude)}${filter.owners.length})`,\n );\n }\n let statusCount = 0;\n if (!_.isEmpty(filter?.projectStatuses))\n statusCount += filter?.projectStatuses.length;\n if (!_.isEmpty(filter?.projectEstimateStatuses))\n statusCount += filter?.projectEstimateStatuses.length;\n\n if (!_.isEmpty(filter?.crStatuses)) statusCount += filter.crStatuses.length;\n if (!_.isEmpty(filter?.qaStatuses)) statusCount += filter.qaStatuses.length;\n if (statusCount)\n filters.push(\n `Statuses (${excludeFlag([\n filter?.crStatusesInclude,\n filter?.projectStatusesInclude,\n filter?.projectEstimateStatusesInclude,\n ])}${statusCount})`,\n );\n\n if (!_.isEmpty(filter?.champions)) {\n filters.push(\n `Champions (${excludeFlag(filter?.championsInclude)}${\n filter.champions.length\n })`,\n );\n }\n\n if (!_.isEmpty(filter?.groups)) {\n filters.push(\n `Groups (${excludeFlag(filter?.groupsInclude)}${filter.groups.length})`,\n );\n }\n\n if (!_.isEmpty(filter?.customers)) {\n filters.push(\n `Customers (${excludeFlag(filter?.customersInclude)}${\n filter.customers.length\n })`,\n );\n }\n\n if (!_.isEmpty(filter?.types)) {\n filters.push(\n `Types (${excludeFlag(filter?.typesInclude)}${filter.types.length})`,\n );\n }\n\n if (!_.isEmpty(filter?.projectPriorities)) {\n filters.push(\n `Priorities (${excludeFlag(filter?.projectPrioritiesInclude)}${\n filter.projectPriorities.length\n })`,\n );\n }\n\n if (!_.isEmpty(filter?.projectSources)) {\n filters.push(\n `Sources (${excludeFlag(filter?.projectSourcesInclude)}${\n filter.projectSources.length\n })`,\n );\n }\n if (!_.isEmpty(filter?.crDifficulties)) {\n filters.push(\n `Difficulties (${excludeFlag(filter?.crDifficultiesInclude)}${\n filter.crDifficulties.length\n })`,\n );\n }\n if (!_.isEmpty(filter?.crNotifications)) {\n filters.push(\n `Notifications (${excludeFlag(filter?.crNotificationsInclude)}${\n filter.crNotifications.length\n })`,\n );\n }\n if (!_.isEmpty(filter?.crModules)) {\n filters.push(\n `Modules (${excludeFlag(filter?.crModulesInclude)}${\n filter.crModules.length\n })`,\n );\n }\n\n let userCount = 0;\n if (!_.isEmpty(filter?.createUsers)) userCount += filter?.createUsers.length;\n if (!_.isEmpty(filter?.modifyUsers)) userCount += filter?.modifyUsers.length;\n if (!_.isEmpty(filter?.closedUsers)) userCount += filter?.closedUsers.length;\n if (userCount)\n filters.push(\n `Users (${userCount})${excludeFlag([\n filter?.createUsersInclude,\n filter?.closedUsersInclude,\n filter?.modifyUsersInclude,\n ])}`,\n );\n\n // qaOwners\n // contacts\n // crModuleGroups\n\n let flags = 0;\n if (_.isBoolean(filter?.isMultiCustomer)) flags += 1;\n if (_.isBoolean(filter?.isReadyForCodeCheckin)) flags += 1;\n if (_.isBoolean(filter?.isWaitingOnCustomer)) flags += 1;\n if (_.isBoolean(filter?.isAssigned)) flags += 1;\n if (flags) filters.push(`Flags (${flags})`);\n\n let dates = 0;\n if (filter?.closedStart || filter?.closedEnd) dates += 1;\n if (filter?.createStart || filter?.createEnd) dates += 1;\n if (filter?.modifyStart || filter?.modifyEnd) dates += 1;\n if (filter?.targetDeliveryStart || filter?.targetDeliveryEnd) dates += 1;\n if (filter?.targetStartWorkStart || filter?.targetStartWorkEnd) dates += 1;\n if (filter?.targetFirstContactStart || filter?.targetFirstContactEnd)\n dates += 1;\n if (dates) filters.push(`Dates (${dates})`);\n\n // estimateMinHoursStart\n // estimateMinHoursEnd\n // estimateMaxHoursStart\n // estimateMaxHoursEnd\n\n if (filters.length > 0)\n return _.capitalize(filter.folderId) + \": \" + filters.join(\", \");\n return \"\";\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport app from \"../app/index\";\nimport projectState from \"./state\";\n\nexport default function useProjectsByFilter({ filter, blocked }) {\n const maxRecs = 100;\n const projectsToLoadInterval = maxRecs * 5;\n const [projectsToLoad, setProjectsToLoad] = useState(projectsToLoadInterval);\n\n const dispatch = useDispatch();\n const [projects, lastUpdate, startAfter] = useSelector((state) =>\n projectState.entity.selectors.selectBySearch(state, filter),\n );\n const loading = useSelector(\n (state) => state.projects.projects.requests.loading,\n );\n const [error, setError] = useState(null);\n const canExpire = app.useCanStateExpire();\n\n const hasMore = startAfter !== \"\" && error === null && !_.isEmpty(filter);\n const totalProjects = projects.length;\n\n const getMore = useCallback(() => {\n if (totalProjects >= projectsToLoad)\n setProjectsToLoad(projectsToLoad + projectsToLoadInterval);\n return dispatch(\n projectState.actions.getMany({\n filter: filter,\n maxRecs: maxRecs,\n startAfter: startAfter,\n }),\n ).then(unwrapResult);\n }, [\n dispatch,\n filter,\n maxRecs,\n startAfter,\n totalProjects,\n projectsToLoad,\n projectsToLoadInterval,\n ]);\n\n const reset = useCallback(() => {\n dispatch(projectState.actions.reset(filter));\n setError(null);\n setProjectsToLoad(projectsToLoadInterval);\n }, [dispatch, filter, projectsToLoadInterval]);\n\n useEffect(() => {\n if (blocked) return;\n if (totalProjects < projectsToLoad && hasMore) {\n getMore().catch(setError);\n }\n }, [totalProjects, hasMore, getMore, projectsToLoad, blocked]);\n\n useEffect(() => {\n if (blocked) return;\n if (\n lastUpdate !== null &&\n moment().diff(lastUpdate, \"hours\") > 1 &&\n canExpire\n ) {\n reset();\n }\n }, [reset, lastUpdate, blocked, canExpire]);\n\n return {\n projects,\n loading,\n lastUpdate,\n hasMore,\n getMore,\n reset,\n error,\n };\n}\n","import React, { useMemo, useState } from \"react\";\nimport { Button, Col, Collapse, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport queryToString from \"../common/functions/queryToString\";\nimport ProjectFilters from \"./ProjectFilters\";\nimport ProjectTable from \"./ProjectTable\";\nimport useProjectsByFilter from \"./useProjectsByFilter\";\n\nexport default function ProjectSearch({\n defaultCustomerId,\n defaultOwnerId,\n onSelect,\n}) {\n const [defaultFilter, initialSearch] = useMemo(() => {\n let initialSearch = false;\n let defaultFilter = { folderId: \"CURRENT\" };\n if (defaultCustomerId) {\n defaultFilter.customers = [defaultCustomerId];\n initialSearch = true;\n }\n if (defaultOwnerId) {\n defaultFilter.owners = [defaultOwnerId];\n initialSearch = true;\n }\n return [defaultFilter, initialSearch];\n }, [defaultCustomerId, defaultOwnerId]);\n\n const [filter, setFilter] = useState(defaultFilter);\n const [search, setSearch] = useState(initialSearch);\n\n const { projects, loading, hasMore, getMore } = useProjectsByFilter({\n filter,\n blocked: !search,\n });\n\n const user = useSelector((state) => state.auth.user);\n\n // we want to only send records once\n // the refresh functionality doesn't keep in line the default\n // sort that I want to do here\n const tableData = useMemo(() => {\n return projects?.sort((a, b) => {\n const aval = a.owner === user ? \" \" : a.owner;\n const bval = b.owner === user ? \" \" : b.owner;\n if (aval > bval) return 1;\n if (aval < bval) return -1;\n return 0;\n });\n }, [projects, user]);\n\n return (\n <>\n \n \n \n
    \n {\n setFilter(f);\n setSearch(true);\n }}\n />\n
    \n
    \n \n
    \n \n \n

    {queryToString(filter)}

    \n \n \n \n \n
    \n
    \n
    \n \n
    \n \n \n \n
    \n \n
    \n
    \n \n
    \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport { userActivityActions, userActivitySelectors } from \"./state\";\n\nconst getUserActivitiesState = (state) => state.activity.userActivity;\n\nconst { useEntities: useUserActivity } = createEntityHooks({\n entity: {\n name: \"userActivity\",\n selectors: userActivitySelectors,\n getState: getUserActivitiesState,\n },\n actions: {\n getMany: userActivityActions.getUserActivity,\n reset: userActivityActions.clearUserActivity,\n },\n expire: {\n key: \"minutes\",\n value: 5,\n },\n});\n\nexport default useUserActivity;\n","import { isArray, reverse, sortBy, uniqBy } from \"lodash\";\nimport { useMemo } from \"react\";\n\nimport useUserActivity from \"./useUserActivity\";\n\nexport default function useUserActivityOptions({\n options,\n filter = () => true,\n}) {\n const { entities: userActivity, loading, getMany } = useUserActivity();\n\n const activityOptions = useMemo(() => {\n if (!userActivity?.length) return [];\n\n return uniqBy(\n reverse(sortBy(userActivity, \"dateTime\")),\n (a) => a.source + a.key,\n )\n .filter(filter)\n .map((a) => {\n const id = parseInt(a.key);\n if (a.source === \"CR\")\n return {\n label: \"CR: \" + id + \" \" + a.moreInfo,\n title: \"CR: \" + id,\n info: a.moreInfo,\n value: { id: id, typeOf: \"cr\" },\n };\n else if (a.source === \"PR\")\n return {\n label: \"Project: \" + id + \" \" + a.moreInfo,\n title: \"Project: \" + id,\n info: a.moreInfo,\n value: { id: id, typeOf: \"project\" },\n };\n return null;\n })\n .filter(Boolean);\n }, [filter, userActivity]);\n\n if (isArray(options))\n options.push({\n label: \"Based on Activity...\",\n options: activityOptions,\n });\n return { options: activityOptions, loading, getMany };\n}\n","import { isNaN } from \"lodash\";\n\nexport default function useFindOption({\n input,\n options,\n includeCr = true,\n includeProject = true,\n getValue = (input, typeOf) => ({ typeOf, id: input }),\n}) {\n const inputInt = parseInt(input);\n if (!isNaN(inputInt)) {\n if (inputInt < 10000000 && includeCr)\n options.push({\n label: \"Find from CR...\",\n options: [\n {\n label: \"CR: \" + input,\n value: getValue(input, \"cr\"),\n },\n ],\n });\n if (inputInt >= 10000000 && includeProject)\n options.push({\n label: \"Find...\",\n options: [\n {\n label: \"Project: \" + input,\n value: getValue(input, \"project\"),\n },\n ],\n });\n }\n}\n","import { isUndefined } from \"lodash\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Button, Col, Form, Modal } from \"react-bootstrap\";\nimport { BiSearchAlt2 } from \"react-icons/bi\";\n\nimport useUserActivityOptions from \"../activity/userActivity/useUserActivityOptions\";\nimport FieldSelect, { OptionExtended } from \"../common/fields/FieldSelect\";\nimport useReinitState from \"../common/hooks/useReinitState\";\nimport Customer from \"../customers\";\nimport ProjectSearch from \"./ProjectSearch\";\nimport useFindOption from \"./useFindOption\";\nimport useProject from \"./useProject\";\n\nconst selectComponents = { Option: OptionExtended };\n\nfunction ProjectSelect({\n id,\n label,\n onChange,\n getCr,\n placeholder = getCr ? \"Project/CR...\" : \"Project...\",\n errors: initialErrors,\n value: initialValue,\n isLoading,\n isDisabled,\n canFetch,\n refreshActivityButton = false,\n canAllowTransferred = false,\n ...props\n}) {\n const [input, setInput] = useState(\"\");\n const [errors, setErrors] = useReinitState(initialErrors);\n\n const { getProject, loading: loadingProject } = useProject.getOne();\n\n const {\n handleValue: handleProject,\n value,\n setValue,\n } = useValue({\n get: getProject,\n errors: initialErrors,\n value: initialValue,\n typeOf: \"project\",\n setErrors,\n fetch: canFetch,\n canAllowTransferred,\n });\n\n const [showSearch, setShowSearch] = useState(false);\n\n let options = [];\n\n useFindOption({ input, options, includeCr: !!getCr });\n const filterActivity = useCallback(\n (activity) => !!getCr || activity.source !== \"CR\",\n [getCr],\n );\n const { loading: loadingActivity, getMany: getActivities } =\n useUserActivityOptions({\n options,\n filter: filterActivity,\n });\n\n const _loading = loadingProject || isLoading || loadingActivity || false;\n\n const handleChange = useCallback(\n async ({ typeOf, id } = {}) => {\n if (typeOf === \"project\")\n handleProject(id)\n .then((project) => onChange({ ...project }))\n .catch((e) => setErrors(e.message));\n else if (typeOf === \"cr\")\n getCr({ id })\n .then(({ data: cr }) =>\n handleProject(cr.projectId).then((project) =>\n onChange({ ...project }),\n ),\n )\n .catch((e) => setErrors(e.message));\n else if (id === undefined) {\n onChange(null);\n setValue(null);\n }\n },\n [getCr, handleProject, onChange, setErrors, setValue],\n );\n\n return (\n \n \n \n {label ? {label} : null}\n \n \n \n setInput(s)}\n blurInputOnSelect\n errors={errors}\n isInvalid={errors}\n isDisabled={isDisabled}\n {...props}\n />\n \n \n setShowSearch(true)}\n variant=\"light\"\n title=\"Search for Project\"\n disabled={isDisabled}\n >\n \n \n\n setShowSearch(false)}\n className=\"modal2\"\n backdropClassName=\"modal2-backdrop\"\n >\n \n Project Search\n \n \n {\n setShowSearch(false);\n handleChange({ id, typeOf: \"project\" });\n }}\n />\n \n \n \n \n \n \n {refreshActivityButton ? (\n {\n getActivities();\n }}\n >\n Refresh Activity\n \n ) : null}\n \n \n \n \n );\n}\n\nfunction useValue({\n get,\n value: initialValue,\n setErrors,\n typeOf,\n canAllowTransferred,\n fetch: defaultFetch = true,\n}) {\n const [value, setValue] = useState(null);\n const { getCustomer } = Customer.useOne();\n const [loading, setLoading] = useState(false);\n\n const handleValue = useCallback(\n (id, fetch = defaultFetch) => {\n setLoading(true);\n return get({ id: id, fetch })\n .then(async ({ data }) => {\n if (isUndefined(data)) {\n setValue({\n label: `${id}`,\n title: `${id}`,\n value: { id: id, typeOf },\n });\n } else {\n const customer =\n data.customers?.length > 1\n ? \"Multiple\"\n : await getCustomer({\n id: data.customers[0].customerId || data.customers[0].id,\n fetch: false,\n }).then(({ data: customer }) => customer.name);\n setValue({\n label: `${data.id}: ${customer} ${data.synopsis}`,\n title: `${data.id}`,\n info: `${customer} ${data.synopsis}`,\n value: { id: data.id, typeOf },\n });\n if (!canAllowTransferred && data.transferredFolder !== \"CURRENT\") {\n throw new Error(`${id} is transferred to history`);\n }\n return data;\n }\n })\n .finally(() => setLoading(false));\n },\n [getCustomer, get, typeOf, defaultFetch, canAllowTransferred],\n );\n\n const shouldUseInitial = !!initialValue && initialValue !== value?.value?.id;\n useEffect(() => {\n if (shouldUseInitial)\n handleValue(initialValue).catch((e) => setErrors(e.message));\n }, [initialValue, handleValue, shouldUseInitial, setErrors]);\n\n return { handleValue, value, setValue, loading };\n}\n\nProjectSelect.useValue = useValue;\nexport default ProjectSelect;\n","import React, { useMemo, useRef, useState } from \"react\";\nimport { Button, ButtonGroup, Form, ListGroup, Modal } from \"react-bootstrap\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { HiShare } from \"react-icons/hi\";\nimport { MdEmail } from \"react-icons/md\";\nimport { useSelector } from \"react-redux\";\nimport { toast } from \"react-toastify\";\n\nimport shark from \"../apis/shark\";\nimport Mailto from \"../common/details/Mailto\";\nimport FieldInput from \"../common/fields/FieldInput\";\nimport { Controller, useForms } from \"../common/forms\";\nimport ContextMenu from \"../common/popovers/ContextMenu\";\nimport User from \"../users\";\n\nasync function shareProjectAPI(options) {\n const payload = {\n ...options,\n command: \"emailProject\",\n };\n return await shark.post(payload);\n}\n\nexport default function ProjectShareButton({ project }) {\n const [show, setShow] = useState(false);\n const [showDetails, setShowDetails] = useState(false);\n const ref = useRef(null);\n\n return (\n <>\n \n \n Share Project\n \n }\n target={ref?.current}\n show={show}\n onHide={() => setShow(false)}\n placement=\"top\"\n >\n setShow(false)}>\n setShowDetails(true)}>\n Email\n \n toast.success(\"Project # copied\")}\n >\n \n Copy Project #\n \n \n \n \n setShowDetails(false)}>\n \n \n {`Email Project ${project?.id}`}\n \n \n \n setShowDetails(false)}\n />\n \n \n \n );\n}\n\nfunction ProjectShareDetailsForm({ project, onHide }) {\n const email = useSelector((state) => state.auth.email);\n const {\n handleSubmit,\n register,\n control,\n watch,\n formState: { errors },\n } = useForms({\n defaultValues: { to: email, notesBefore: \"\" },\n });\n\n const emails = watch(\"to\");\n const notes = watch(\"notesBefore\");\n\n const toUsers = useMemo(() => {\n let users = [];\n if (project?.owner && project?.owner?.charAt(0) !== \"*\")\n users.push({ label: \"Owner\", id: project.owner });\n return users;\n }, [project]);\n\n const [isCompose, setIsCompose] = useState(false);\n\n return (\n
    \n (\n onChange(opts.join(\",\"))}\n isInvalid={errors.to}\n errors={errors.to && \"Required\"}\n users={toUsers}\n />\n )}\n />\n (\n onChange(e.target.value)}\n />\n )}\n />\n\n setIsCompose(e.target.checked)}\n />\n\n \n {isCompose ? (\n \n Compose Email\n \n ) : (\n {\n toast.info(\"Sending project \" + project.id + \"...\");\n onHide();\n shareProjectAPI({ id: project.id, ...data }).then(() =>\n toast.info(\"Project \" + project.id + \" sent.\"),\n );\n })}\n block\n >\n Send Formatted Email\n \n )}\n \n \n {!isCompose ? (\n <>\n \n \n \n ) : null}\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport parseIntId from \"../../common/functions/parseIntId\";\nimport watchState from \"./state\";\n\nexport const { useEntities: useWatches } = createEntityHooks({\n entity: watchState.entity,\n actions: watchState.actions,\n parseId: (id) => {\n const nextId = parseIntId(id);\n return nextId === 0 ? undefined : nextId;\n },\n});\n","import { useWatches } from \"./hooks\";\nimport state from \"./state\";\nimport WatchButton from \"./WatchButton\";\n\nconst Watch = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useAll: useWatches,\n // Components\n Button: WatchButton,\n // Related Entity Objects\n};\n\nexport default Watch;\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { BsEyeFill, BsEyeSlash } from \"react-icons/bs\";\n\nexport default function WatchButton({ value, onChange, label = \"\" }) {\n return (\n {\n onChange(!value);\n }}\n >\n {value ? : }\n \n );\n}\n","import { useLocation } from \"react-router\";\n\nexport default function useSearchParams(key) {\n const search = useLocation().search;\n const value = new URLSearchParams(search).get(key);\n return value?.toString();\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Col,\n Form,\n ListGroup,\n Modal,\n} from \"react-bootstrap\";\nimport { BiDotsHorizontalRounded, BiEdit } from \"react-icons/bi\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\n\nimport Watch from \"../activity/watches\";\nimport GroupOwnerFields from \"../common/components/forms/GroupOwnerFields\";\nimport {\n ErrorIcon,\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport useSearchParams from \"../common/hooks/useSearchParams\";\nimport ContextMenu from \"../common/popovers/ContextMenu\";\nimport ProjectNew from \"./ProjectNew\";\nimport projectSchema from \"./projectSchema\";\nimport Status from \"./statuses\";\nimport Type from \"./types\";\n\nexport default function ProjectStatusEditor({\n project,\n update,\n isLoading,\n isDisabled,\n updateWatch,\n AdditionalForms = null,\n}) {\n const location = useLocation();\n const history = useHistory();\n const [statusId, setStatusId] = useState(useSearchParams(\"status\"));\n const [statusPrompt, setStatusPrompt] = useState(false);\n const onReset = () => {\n history.push(location.pathname);\n setStatusPrompt(false);\n };\n\n return (\n \n update(project).then(onReset)}\n defaultValues={project}\n schema={{ schema: projectSchema }}\n isDisabled={isLoading || isDisabled}\n >\n {\n setStatusPrompt(true);\n setStatusId(s);\n }}\n statusId={statusId}\n isLoading={isLoading}\n />\n \n \n \n setStatusPrompt(true)}\n variant=\"light\"\n title=\"Edit Project\"\n >\n \n \n \n updateWatch({ isWatching: v })}\n />\n \n \n update(project).then((p) => {\n onReset(p);\n setStatusId(undefined);\n })\n }\n defaultValues={{ ...project, ...(statusId && { statusId }) }}\n schema={{ schema: projectSchema }}\n isDisabled={isLoading || isDisabled}\n showDevTool\n shouldUnregister\n >\n \n \n \n \n );\n}\n\nfunction ProjectStatusId({ onShow, statusId: statusIdParam, isLoading }) {\n const {\n setValue,\n watch,\n submitForm,\n formsContext: { isDisabled },\n } = useFormContext();\n\n const [statusId, owner] = watch([\"statusId\", \"owner\", \"typeId\"]);\n\n const onStatusChange = useCallback(\n (value, valueNext) => {\n setValue(\"statusId\", valueNext, {\n shouldValidate: true,\n shouldDirty: true,\n });\n if (valueNext !== value && valueNext !== \"OP\") {\n if (owner?.charAt(0) === \"*\") setValue(\"owner\", \"\");\n onShow(valueNext);\n }\n },\n [owner, onShow, setValue],\n );\n\n useEffect(() => {\n if (!isDisabled && statusIdParam && statusIdParam) {\n onStatusChange(statusId, statusIdParam);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled, statusIdParam]);\n\n return (\n \n {\n onStatusChange(statusId, valueNext);\n if (statusId !== valueNext && valueNext !== \"CL\") {\n submitForm();\n }\n }}\n isInvalid={false}\n isDisabled={isDisabled}\n isLoading={isLoading}\n />\n \n );\n}\n\nfunction ProjectStatusForms({ prompt, onHide, isLoading, AdditionalForms }) {\n const {\n watch,\n reset,\n defaultValues,\n formsContext: { isDisabled },\n } = useFormContext();\n\n const [statusId, typeId] = watch([\"statusId\", \"owner\", \"typeId\"]);\n\n const handleHide = () => {\n reset();\n onHide();\n };\n\n return (\n \n \n Edit Project\n \n \n \n {AdditionalForms ? (\n \n ) : null}\n \n \n );\n}\n\nfunction StatusId({ name, ...props }) {\n const {\n field,\n fieldState: { error },\n } = useController({ name });\n\n return (\n \n );\n}\n\nfunction StatusForm({ isLoading, isDisabled, onHide }) {\n const {\n submitForm,\n formState: { isSubmitting, isValid, errors },\n } = useFormContext();\n\n useFormsKeys();\n\n return (\n
    \n \n \n \n \n \n \n \n {\n if (isValid === false) console.log(\"Project Invalid\", errors);\n submitForm();\n }}\n disabled={isSubmitting || isDisabled}\n >\n Save\n \n \n Cancel\n \n \n \n \n \n \n \n \n );\n}\n\nfunction ActionContextMenu({ project, update }) {\n const user = useSelector((state) => state.auth.user);\n const ref = useRef(null);\n const [show, setShow] = useState(false);\n const [showDuplicate, setShowDuplicate] = useState(false);\n\n const location = useLocation();\n // Close modal on navigate (link)\n useEffect(() => {\n setShowDuplicate(false);\n }, [location]);\n\n return (\n <>\n setShow(true)}\n variant=\"light\"\n title=\"Actions\"\n >\n \n \n\n setShow(false)}\n placement=\"bottom\"\n >\n setShow(false)}>\n update({ owner: user })}>\n Assign to me\n \n setShowDuplicate(true)}>\n Duplicate\n \n \n \n setShowDuplicate(false)}\n project={project}\n />\n \n );\n}\n\nfunction DuplicateProjectModal({ show, onHide, project = {} }) {\n return (\n \n \n New Project\n \n \n \n \n \n );\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport projectState from \"./state\";\n\nconst { useEntities: useProjects } = createEntityHooks({\n entity: projectState.entity,\n actions: {\n getMany: projectState.actions.getMany,\n reset: projectState.actions.reset,\n },\n});\n\nexport default useProjects;\n","import EstimateStatus from \"./estimateStatuses\";\nimport ProjectFolder from \"./folders\";\nimport getProjectPriorityClassName from \"./getProjectPriorityClassName\";\nimport ProjectPriority from \"./priorities\";\nimport ProjectAlerts from \"./ProjectAlerts\";\nimport ProjectContacts from \"./ProjectContacts\";\nimport ProjectEditor from \"./ProjectEditor\";\nimport ProjectEstimateEditor from \"./ProjectEstimateEditor\";\nimport ProjectFilters from \"./ProjectFilters\";\nimport ProjectLink from \"./ProjectLink\";\nimport ProjectNew from \"./ProjectNew\";\nimport projectSchema from \"./projectSchema\";\nimport ProjectSearch from \"./ProjectSearch\";\nimport ProjectSelect from \"./ProjectSelect\";\nimport ProjectShareButton from \"./ProjectShareButton\";\nimport ProjectStatusEditor from \"./ProjectStatusEditor\";\nimport ProjectTable from \"./ProjectTable\";\nimport ProjectSource from \"./sources\";\nimport projectState from \"./state\";\nimport ProjectStatus from \"./statuses\";\nimport ProjectType from \"./types\";\nimport updateProjectPrompt from \"./updateProjectPrompt\";\nimport useFindOption from \"./useFindOption\";\nimport useProject from \"./useProject\";\nimport useProjects from \"./useProjects\";\nimport useProjectsByFilter from \"./useProjectsByFilter\";\n\nconst Project = {\n // Backend API\n api: projectState.api,\n // State\n actions: projectState.actions,\n selectors: projectState.entity.selectors,\n // Hooks\n useAll: useProjects,\n useOne: useProject,\n useSearch: useProjectsByFilter,\n useFindOption: useFindOption,\n // Functions\n updatePrompt: updateProjectPrompt,\n schema: projectSchema,\n getPriorityClassName: getProjectPriorityClassName,\n // Components\n New: ProjectNew,\n Editor: ProjectEditor,\n Contacts: ProjectContacts,\n Table: ProjectTable,\n Select: ProjectSelect,\n Search: ProjectSearch,\n Link: ProjectLink,\n StatusEditor: ProjectStatusEditor,\n ShareButton: ProjectShareButton,\n Filters: ProjectFilters,\n EstimateEditor: ProjectEstimateEditor,\n Alerts: ProjectAlerts,\n // Related Entity Objects\n Priority: ProjectPriority,\n Source: ProjectSource,\n Status: ProjectStatus,\n Type: ProjectType,\n Folder: ProjectFolder,\n EstimateStatus: EstimateStatus,\n};\n\nexport default Project;\n","import React from \"react\";\nimport { Alert, Col, Row } from \"react-bootstrap\";\n\nexport default function CrAlerts({ cr }) {\n const transferred =\n cr?.transferredFolder && cr?.transferredFolder !== \"CURRENT\";\n return (\n <>\n {cr?.lockedBy ? (\n \n \n {cr.lockedBy}\n \n \n ) : null}\n {transferred ? (\n \n \n \n CR is transferred. Changes are disallowed.\n \n \n \n ) : null}\n \n );\n}\n","import { debounce } from \"lodash\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { appActions } from \"./state\";\n\nexport default function useAppFormsState({ key, value }) {\n if (!key) throw new Error(\"Invalid key\");\n\n const formState = useSelector((state) => state.app.forms[key]);\n const loading = useSelector((state) => state.app.requests.loading);\n const lastRehydrate = useSelector((state) => state.app.lastRehydrate);\n\n const dispatch = useDispatch();\n\n const _formState = formState || value;\n const [state, setState] = useState(_formState);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncedSetFormState = useCallback(\n debounce((value) => dispatch(appActions.setForms({ key, value })), 300),\n [dispatch, key],\n );\n\n useEffect(() => debouncedSetFormState(state), [state, debouncedSetFormState]);\n\n const [initial, setInitial] = useState(state);\n\n const _setState = useCallback((value, shouldUpdateInitial = false) => {\n setState(value);\n if (shouldUpdateInitial) setInitial(value);\n }, []);\n\n // Update initial state on rehydrate\n useEffect(() => {\n _setState(_formState, true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [lastRehydrate]);\n\n return { state, setState: _setState, loading, initial };\n}\n","import _ from \"lodash\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Modal, Row } from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\nimport { Prompt } from \"react-router\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport useAppFormsState from \"../../app/useAppFormsState\";\nimport useTinykeys from \"../hooks/useTinykeys\";\n\nexport default function DetailField({\n header,\n children,\n forwardedRef,\n style,\n onEditClick,\n isLoading = false,\n}) {\n const [hover, setHover] = useState(false);\n\n function handleMouse(enter) {\n if (!_.isFunction(onEditClick) || isLoading) return;\n if (enter) setHover(true);\n else setHover(false);\n }\n return (\n handleMouse(true)}\n onMouseLeave={() => handleMouse(false)}\n >\n \n \n \n
    \n {header}{\" \"}\n {hover ? (\n \n Edit\n \n ) : (\n \"\"\n )}\n
    \n \n
    \n \n {children}\n \n \n \n );\n}\n\nfunction FieldText({\n id,\n header,\n text,\n isLoading = false,\n heightRem = 0,\n isDisabled = false,\n onEdit,\n}) {\n const fieldRef = useRef(null);\n const [overflow, setOverflow] = useState(false);\n const [showall, setShowall] = useState(false);\n const [editField, setEditField] = useState(false);\n\n const isLoadingAndInvalid = _.isUndefined(text) && isLoading;\n\n const handleOverflow = useCallback(() => {\n if (heightRem && !isLoadingAndInvalid && fieldRef?.current) {\n const e = fieldRef.current;\n if (e.offsetHeight < e.scrollHeight || e.offsetWidth < e.scrollWidth)\n setOverflow(true);\n }\n }, [heightRem, isLoadingAndInvalid]);\n\n useEffect(() => {\n window.addEventListener(\"resize\", handleOverflow);\n }, [handleOverflow]);\n\n useEffect(() => {\n handleOverflow();\n }, [text, handleOverflow]);\n\n const onClickHandler = (s) => {\n if (overflow) {\n setShowall(s);\n }\n };\n\n const onEditClick =\n _.isFunction(onEdit) && !isDisabled ? () => setEditField(true) : null;\n\n let style = {};\n if (!showall && heightRem) {\n style = { height: `${heightRem + 1}rem`, overflow: \"hidden\" };\n }\n\n let displayText = _.trim(text);\n let pStyle = { whiteSpace: \"pre-wrap\" };\n if (!showall && overflow && !isLoadingAndInvalid) {\n pStyle = { height: `${heightRem - 1}rem`, overflow: \"hidden\" };\n }\n\n return (\n \n onClickHandler(true)}\n style={pStyle}\n >\n {!isLoadingAndInvalid ? displayText : }\n

    \n {overflow ? (\n onClickHandler(!showall)}\n disabled={isLoadingAndInvalid}\n className=\"y-0\"\n size=\"sm\"\n >\n {showall ? \"Less\" : \"... More\"}\n \n ) : null}\n {\n setEditField(false);\n return onEdit(value);\n }}\n onHide={() => setEditField(false)}\n />\n \n );\n}\n\nDetailField.Text = FieldText;\n\nfunction FieldTextFormModal({ id, value, show, header, onSubmit, onHide }) {\n const {\n state: savedValue,\n initial: initialSavedValue,\n setState: setSavedValue,\n loading: formsLoading,\n } = useAppFormsState({\n key: id,\n value: null,\n });\n\n const nextValue = savedValue === null ? value || \"\" : savedValue;\n\n const handleSubmit = () => {\n onSubmit(nextValue).then(() => setSavedValue(null, true));\n };\n\n const dirty = savedValue !== null && value?.trim() !== savedValue?.trim();\n const dirtyHeader = `${header}${dirty ? \"*\" : \"\"}`;\n\n useEffect(() => {\n if (!dirty) setSavedValue(null, true);\n }, [dirty, setSavedValue]);\n\n return (\n <>\n {\n console.log({\n isChanged: dirty,\n Current: value,\n Saved: savedValue,\n });\n return `Edited ${header} may not be saved, are you sure you want to leave?`;\n }}\n />\n \n \n Edit {dirtyHeader}\n \n \n
    \n \n {\n setSavedValue(e.target.value);\n }}\n value={nextValue}\n readOnly={formsLoading}\n />\n \n \n \n \n \n {\n setSavedValue(null);\n }}\n >\n Reset\n \n \n \n
    \n
    \n \n );\n}\n\nfunction FieldTextFormSubmitKeys({ handleSubmit }) {\n useTinykeys({\n \"$mod+Enter\": () => {\n handleSubmit();\n },\n });\n return null;\n}\n","const CR_DEFECT_OCCURENCES = {\n N: {\n id: \"N\",\n description: \"New bug (first occurrence)\",\n },\n H: {\n id: \"H\",\n description: \"Already fixed on Hera\",\n },\n C: {\n id: \"C\",\n description: \"Already fixed at another customer\",\n },\n O: {\n id: \"O\",\n description: \"Only this customer\",\n },\n X: {\n id: \"X\",\n description: \"N/A: No code change\",\n },\n};\n\nexport function useDefectOccurrence({ id }) {\n return CR_DEFECT_OCCURENCES[id];\n}\n\nexport function useDefectOccurrences() {\n const crDefectOccurrences = Object.entries(CR_DEFECT_OCCURENCES).map(\n ([, value]) => value,\n );\n return { crDefectOccurrences };\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport { useDefectOccurrences } from \"./hooks\";\n\nconst DefectOccurrenceSelect = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n placeholder = \"Select Cr Defect Occurrence...\",\n ...props\n },\n ref,\n ) => {\n const { crDefectOccurrences } = useDefectOccurrences();\n\n const _options = crDefectOccurrences.map((f) => {\n return { label: f.description, value: f.id };\n });\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n);\n\nDefectOccurrenceSelect.displayName = \"DefectOccurrenceSelect\";\nexport default DefectOccurrenceSelect;\n","import DefectOccurrenceDescription from \"./DefectOccurrenceDescription\";\nimport DefectOccurrenceSelect from \"./DefectOccurrenceSelect\";\nimport { useDefectOccurrence, useDefectOccurrences } from \"./hooks\";\n\nconst DefectOccurrence = {\n // Hooks\n useAll: useDefectOccurrences,\n useOne: useDefectOccurrence,\n // Components\n Select: DefectOccurrenceSelect,\n Description: DefectOccurrenceDescription,\n};\n\nexport default DefectOccurrence;\n","import React from \"react\";\n\nimport { useDefectOccurrence } from \"./hooks\";\n\nexport default function DefectOccurrenceDescription({ id }) {\n const { defect } = useDefectOccurrence({ id });\n if (!defect) return null;\n\n return <>{defect.description};\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport difficultyState from \"./state\";\n\nexport const { useEntities: useDifficulties, useEntity: useDifficulty } =\n createEntityHooks({\n entity: difficultyState.entity,\n actions: difficultyState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useDifficulty } from \"./hooks\";\n\nconst DifficultyDescription = entityDescription({\n name: \"crDifficulty\",\n useEntity: useDifficulty,\n});\n\nexport default DifficultyDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useDifficulties } from \"./hooks\";\n\nconst DifficultySelect = entitySelect({\n name: \"crDifficulty\",\n useEntities: useDifficulties,\n});\n\nexport default DifficultySelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useDifficulties } from \"./hooks\";\n\nconst DifficultyTableFilter = entityTableFilter({\n name: \"crDifficulty\",\n useEntities: useDifficulties,\n});\n\nexport default DifficultyTableFilter;\n","import DifficultyDescription from \"./DifficultyDescription\";\nimport DifficultySelect from \"./DifficultySelect\";\nimport DifficultyTableFilter from \"./DifficultyTableFilter\";\nimport { useDifficulties, useDifficulty } from \"./hooks\";\nimport difficultyState from \"./state\";\n\nconst Difficulty = {\n // Backend API\n api: difficultyState.api,\n // State\n actions: difficultyState.actions,\n selectors: difficultyState.entity.selectors,\n // Hooks\n useAll: useDifficulties,\n useOne: useDifficulty,\n // Components\n Select: DifficultySelect,\n Description: DifficultyDescription,\n TableFilter: DifficultyTableFilter,\n};\nexport default Difficulty;\n","import { createEntityHooks } from \"../../common/entity\";\nimport modulesState from \"./state\";\n\nexport const { useEntities: useModules, useEntity: useModule } =\n createEntityHooks({\n entity: modulesState.entity,\n actions: modulesState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useModule } from \"./hooks\";\n\nconst ModuleDescription = entityDescription({\n name: \"crModule\",\n useEntity: useModule,\n});\n\nexport default ModuleDescription;\n","import _ from \"lodash\";\nimport React, { useMemo } from \"react\";\nimport { createFilter } from \"react-select\";\n\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport { useModules } from \"./hooks\";\n\nconst filterOption = createFilter({\n ignoreCase: true,\n ignoreAccents: true,\n matchFrom: \"any\",\n stringify: ({ data }) => {\n return `${data.label} ${data.groupDescription}`;\n },\n trim: true,\n});\n\nconst ModuleSelect = React.forwardRef(\n (\n { value, isMulti = false, placeholder = \"Select CR Module...\", ...props },\n ref,\n ) => {\n const { modules, loading } = useModules();\n\n let moduleGroups = {};\n const _options = modules\n .filter((s) => s.inactive === false || s.id === value)\n .map((m) => {\n if (!moduleGroups[m.moduleGroupId])\n moduleGroups[m.moduleGroupId] = {\n id: m.moduleGroupId,\n label: m.moduleGroupDescription,\n };\n return {\n label: m.description,\n value: m.id,\n groupId: m.moduleGroupId,\n groupDescription: m.moduleGroupDescription,\n };\n });\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n const groupedOptions = useMemo(\n () =>\n _.sortBy(\n Object.entries(_.groupBy(_.sortBy(_options, \"label\"), \"groupId\")).map(\n ([key, value]) => {\n return { label: moduleGroups[key].label, options: value };\n },\n ),\n \"label\",\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [modules],\n );\n\n return (\n \n );\n },\n);\nModuleSelect.displayName = \"ModuleSelect\";\nexport default ModuleSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useModules } from \"./hooks\";\n\nconst ModuleTableFilter = entityTableFilter({\n name: \"crModule\",\n useEntities: useModules,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default ModuleTableFilter;\n","import { useModule, useModules } from \"./hooks\";\nimport ModuleDescription from \"./ModuleDescription\";\nimport ModuleSelect from \"./ModuleSelect\";\nimport ModuleTableFilter from \"./ModuleTableFilter\";\nimport modulesState from \"./state\";\n\nconst Module = {\n // Backend API\n api: modulesState.api,\n // State\n actions: modulesState.actions,\n selectors: modulesState.entity.selectors,\n // Hooks\n useAll: useModules,\n useOne: useModule,\n // Components\n Select: ModuleSelect,\n Description: ModuleDescription,\n TableFilter: ModuleTableFilter,\n};\nexport default Module;\n","import { createEntityHooks } from \"../../common/entity\";\nimport notificationTypeState from \"./state\";\n\nexport const {\n useEntities: useNotificationTypes,\n useEntity: useNotificationType,\n} = createEntityHooks({\n entity: notificationTypeState.entity,\n actions: notificationTypeState.actions,\n});\n","import { entityDescription } from \"../../common/entity\";\nimport { useNotificationType } from \"./hooks\";\n\nconst NotificationTypeDescription = entityDescription({\n name: \"crNotificationType\",\n useEntity: useNotificationType,\n});\n\nexport default NotificationTypeDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useNotificationTypes } from \"./hooks\";\n\nconst NotificationTypeSelect = entitySelect({\n name: \"crNotificationType\",\n useEntities: useNotificationTypes,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default NotificationTypeSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useNotificationTypes } from \"./hooks\";\n\nconst NotificationTypeTableFilter = entityTableFilter({\n name: \"crNotificationType\",\n useEntities: useNotificationTypes,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default NotificationTypeTableFilter;\n","import { useNotificationType, useNotificationTypes } from \"./hooks\";\nimport NotificationTypeDescription from \"./NotificationTypeDescription\";\nimport NotificationTypeSelect from \"./NotificationTypeSelect\";\nimport NotificationTypeTableFilter from \"./NotificationTypeTableFilter\";\nimport notificationTypeState from \"./state\";\n\nconst NotificationType = {\n // Backend API\n api: notificationTypeState.api,\n // State\n actions: notificationTypeState.actions,\n selectors: notificationTypeState.selectors,\n // Hooks\n useAll: useNotificationTypes,\n useOne: useNotificationType,\n // Components\n Select: NotificationTypeSelect,\n Description: NotificationTypeDescription,\n TableFilter: NotificationTypeTableFilter,\n};\nexport default NotificationType;\n","import React, { useMemo, useState } from \"react\";\nimport { Alert, Button, Col, Form, Row } from \"react-bootstrap\";\n\nimport GroupOwnerFields from \"../common/components/forms/GroupOwnerFields\";\nimport DetailField from \"../common/details/DetailField\";\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n} from \"../common/forms\";\nimport Customer from \"../customers\";\nimport Project from \"../projects\";\nimport CrAlerts from \"./CrAlerts\";\nimport crSchema from \"./crSchema\";\nimport DefectOccurrence from \"./defectOccurrences\";\nimport Difficulty from \"./difficulties\";\nimport Module from \"./modules\";\nimport NotificationType from \"./notificationTypes\";\n\nexport default function CrEditor({ cr, isNew, onSubmit, project, error }) {\n const isTransferred =\n cr?.transferredFolder && cr?.transferredFolder !== \"CURRENT\";\n return (\n \n {error ? (\n \n \n {error}\n \n \n ) : null}\n \n \n \n \n \n \n \n );\n}\n\nfunction CrForm({ isNew }) {\n const {\n context: { project },\n setContext,\n watch,\n submitForm,\n defaultValues: { projectId: defaultProjectId },\n formState: { isSubmitting },\n formsContext: { isDisabled },\n } = useFormContext();\n\n const [projectId, overrideTypeId] = watch([\"projectId\", \"overrideTypeId\"]);\n const typeId = overrideTypeId || project?.typeId;\n\n return (\n
    \n \n \n \n \n \n {projectId ? (\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isNew ? \"Create\" : \"Save\"} CR\n \n \n \n \n \n \n {typeId === \"DE\" ? (\n \n ) : null}\n \n \n \n \n ) : null}\n
    \n );\n}\n\nfunction ProjectId({ name, isDisabled, setContext }) {\n const {\n field: { onChange, value, onBlur },\n fieldState: { error },\n } = useController({ name });\n\n const { getProject, loading: projectLoading } = Project.useOne.getOne();\n\n return (\n \n \n {\n getProject({ id: value, fetch: \"auto\" }).then(\n ({ data: project }) => {\n setContext((c) => ({ ...c, project }));\n onChange(value);\n },\n );\n }}\n value={value}\n onBlur={onBlur}\n isDisabled={isDisabled || projectLoading}\n isInvalid={error}\n errors={error?.message}\n canFetch={isDisabled ? false : \"auto\"}\n />\n \n \n );\n}\n\nfunction CustomerId({ name, project }) {\n const [showOverrideCustomer, setShowOverrideCustomer] = useState(false);\n\n const {\n field: { value, onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled },\n } = useFormContext();\n\n const customers = useMemo(\n () => project?.customers.map((c) => c.customerId),\n [project],\n );\n\n return (\n \n \n setShowOverrideCustomer(!showOverrideCustomer)\n : undefined\n }\n >\n {showOverrideCustomer ? (\n \n \n onChange(c || 0)}\n label=\"Override Customer\"\n isInvalid={error}\n errors={error?.message}\n filter={(c) => customers.includes(c.id)}\n isClearable\n />\n \n \n ) : null}\n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useEffect } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Modal, Row } from \"react-bootstrap\";\n\nimport FieldInput from \"../common/fields/FieldInput\";\nimport { Controller, useForms } from \"../common/forms\";\nimport Project from \"../projects\";\nimport User, { useUserRate } from \"../users\";\nimport crSchema from \"./crSchema\";\n\nexport default function CrEstimateEditor({ cr, show, onHide, update }) {\n return (\n \n \n Edit CR Estimate\n \n \n \n \n \n );\n}\n\nfunction EstimateForm({ cr, update, onHide }) {\n const {\n control,\n trigger,\n setValue,\n watch,\n submitForm,\n formState: { errors },\n } = useForms({\n schema: { schema: crSchema },\n defaultValues: cr,\n onSubmit: (modifiedCr) => {\n update(modifiedCr);\n onHide();\n },\n });\n\n const crId = cr.id;\n const projectId = cr.projectId;\n const { project = {} } = Project.useOne({ id: projectId });\n const { estimateRate: projectEstimateRate } = project;\n\n const estimateRate = watch(\"estimateRate\");\n const estimateUserId = watch(\"estimateUserId\");\n const estimateMinHours = watch(\"estimateMinHours\");\n const estimateMaxHours = watch(\"estimateMaxHours\");\n\n // don't pull in rate unless user exists\n // if user doesn't exist then we will use the project estimate rate.\n const { loading: userRateLoading, userRate } = useUserRate({\n id: estimateUserId,\n canGet: Number(estimateRate) === 0 && estimateRate !== \"\" && estimateUserId,\n crId: crId,\n });\n\n useEffect(() => {\n if (!userRateLoading) {\n setValue(\"estimateRate\", userRate);\n trigger();\n }\n }, [userRate, setValue, userRateLoading, trigger]);\n\n useEffect(() => {\n if (\n !userRateLoading &&\n estimateUserId === \"\" &&\n Number(estimateRate) === 0 &&\n estimateRate !== \"\"\n ) {\n setValue(\"estimateRate\", projectEstimateRate);\n }\n }, [\n projectEstimateRate,\n estimateUserId,\n userRateLoading,\n estimateRate,\n setValue,\n userRate,\n ]);\n\n function handleChange(onChange) {\n return (value) => {\n onChange(value);\n trigger();\n };\n }\n\n let estimateMin = 0;\n if (!isNaN(estimateRate) && !isNaN(estimateMinHours)) {\n estimateMin = _.multiply(estimateRate, estimateMinHours).toFixed(2);\n }\n let estimateMax = 0;\n if (!isNaN(estimateRate) && !isNaN(estimateMaxHours)) {\n estimateMax = _.multiply(estimateRate, estimateMaxHours).toFixed(2);\n }\n\n return (\n
    \n \n \n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n {\n onChange(v);\n setValue(\"estimateRate\", 0);\n })}\n isInvalid={errors.estimateUserId}\n errors={errors.estimateUserId?.message}\n isClearable\n />\n )}\n />\n \n \n (\n {\n onChange(v);\n setValue(\"estimateUserId\", \"\");\n })}\n isInvalid={errors.estimateRate}\n errors={errors.estimateRate?.message}\n disabled={userRateLoading}\n onChangeOnBlur={false}\n />\n )}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n onHide();\n }}\n >\n Cancel\n \n \n
    \n );\n}\n","import { isNaN } from \"lodash\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nfunction CrLink({ id, children }) {\n if (isNaN(id)) return <>{id};\n if (id === 0) return null;\n return (\n \n {children || id}\n \n );\n}\n\nexport default CrLink;\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { ListGroup } from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nexport default function List({\n list,\n fields,\n idField = \"id\",\n link,\n isLoading = false,\n skeletonLines = 15,\n}) {\n let items = [];\n if (_.isUndefined(list) || list.length === 0) {\n if (isLoading) {\n for (let i = 0; i < skeletonLines; i++) {\n items.push(\n \n \n ,\n );\n }\n } else return null;\n } else {\n items = list.map((item) => (\n \n \n <>{fields.map((field) => item[field]).join(\" \")}\n \n \n ));\n }\n\n return {items};\n}\n","import moment from \"moment\";\nimport React from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\n\nimport List from \"./List\";\n\nfunction RefreshButton({ onRefresh, isLoading, lastUpdate }) {\n if (!onRefresh) return null;\n const text = lastUpdate\n ? `Last Updated ${\n isLoading ? \"N/A\" : moment(lastUpdate).format(\"dddd, h:mm:ss a\")\n }`\n : \"Refresh\";\n return (\n \n {text}\n \n );\n}\n\nexport default function InfiniteList({\n data,\n name,\n fields,\n idField = \"id\",\n link,\n getMore,\n isLoading = false,\n hasMore,\n lastUpdate,\n onRefresh,\n}) {\n const endMessage =

    End of List.

    ;\n const loaderMessage =

    Loading...

    ;\n\n return (\n \n \n \n \n

    {`${data.length}${\n hasMore ? \"+\" : \"\"\n } ${name}`}

    \n \n \n
    \n \n \n getMore(data)}\n hasMore={hasMore}\n loader={loaderMessage}\n endMessage={endMessage}\n >\n \n \n \n \n \n
    \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport app from \"../app/index\";\nimport crState from \"./state\";\n\nexport default function useCrsByFilter({ filter, canGet = true }) {\n const maxRecs = 100;\n const crsToLoadInterval = maxRecs * 5;\n const [crsToLoad, setCrsToLoad] = useState(crsToLoadInterval);\n\n const dispatch = useDispatch();\n const [crs, lastUpdate, startAfter] = useSelector((state) =>\n crState.entity.selectors.selectBySearch(state, filter),\n );\n const loading = useSelector((state) => state.crs.crs.requests.loading);\n const [error, setError] = useState(null);\n\n const canExpire = app.useCanStateExpire();\n\n const hasMore = startAfter !== \"\" && error === null && !_.isEmpty(filter);\n const totalCrs = crs.length;\n\n const getMore = useCallback(() => {\n if (totalCrs >= crsToLoad) setCrsToLoad(crsToLoad + crsToLoadInterval);\n return dispatch(\n crState.actions.getMany({\n filter: filter,\n maxRecs: maxRecs,\n startAfter: startAfter,\n }),\n ).then(unwrapResult);\n }, [crsToLoad, crsToLoadInterval, dispatch, filter, startAfter, totalCrs]);\n\n const reset = useCallback(() => {\n dispatch(crState.actions.reset(filter));\n setError(null);\n setCrsToLoad(crsToLoadInterval);\n }, [dispatch, crsToLoadInterval, filter]);\n\n const isExpired =\n moment().diff(moment(lastUpdate), \"minutes\") > 15 && canExpire;\n const shouldGet =\n loading === false &&\n (canGet === true || (canGet !== false && _.isEmpty(crs))) &&\n ((totalCrs < crsToLoad && hasMore) || isExpired || lastUpdate === null) &&\n error === null;\n\n useEffect(() => {\n if (!shouldGet) return;\n if (isExpired) reset();\n\n getMore().catch(setError);\n }, [getMore, isExpired, reset, shouldGet]);\n\n return {\n crs,\n loading,\n lastUpdate,\n hasMore,\n getMore,\n reset,\n };\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { toast } from \"react-toastify\";\n\nimport useRedirect from \"../common/hooks/useRedirect\";\nimport crState from \"./state\";\n\nexport default function useCr({\n id,\n logActivity = false,\n shouldSetCurrent = logActivity,\n redirect = true,\n includeLogs = false,\n canGet = true,\n} = {}) {\n const cr = useSelector((state) =>\n crState.entity.selectors.selectById(state, id),\n );\n const dispatch = useDispatch();\n const [redirecting, setRedirect] = useRedirect();\n const [error, setError] = useState(null);\n const [loaded, setLoaded] = useState(false);\n\n const { loading, lastUpdate, getCr } = useGetOne({\n id,\n logActivity,\n includeLogs,\n });\n\n const shouldGet =\n !!id &&\n !isNaN(id) &&\n (canGet === true || (canGet !== false && _.isUndefined(cr)));\n\n useEffect(() => {\n if (shouldGet)\n getCr()\n .catch(setError)\n .finally(() => setLoaded(true));\n }, [getCr, shouldGet]);\n\n useEffect(() => {\n if (!shouldSetCurrent) return;\n dispatch(crState.actions.setCurrentCr(id));\n return () => {\n dispatch(crState.actions.setCurrentCr(null));\n };\n }, [id, shouldSetCurrent, dispatch]);\n\n return {\n cr,\n loading: shouldGet && (loading || !loaded || !!redirecting),\n error,\n lastUpdate,\n getCr,\n createOne: (cr) =>\n dispatch(crState.actions.createOne(cr))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n if (redirect) setRedirect(\"/crs/\" + result.id);\n return result;\n }),\n updateOne: (changes) =>\n dispatch(crState.actions.updateOne({ id: id, data: changes }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n if (redirect) setRedirect(\"/crs/\" + id);\n return result;\n })\n .catch((err) => {\n if (err?.message === \"Sync error\") {\n getCr().then(() => {\n throw new Error(\"CR out of date, please try again\");\n });\n } else {\n throw err;\n }\n }),\n\n createComment: ({ title, text }) =>\n dispatch(crState.actions.createComment({ cr: cr?.id, title, text })),\n updateComment: ({ id, title, text }) =>\n dispatch(crState.actions.updateComment({ cr: cr?.id, id, title, text })),\n createQaComment: ({ title, text }) =>\n dispatch(crState.actions.createQaComment({ cr: cr?.id, title, text })),\n updateQaComment: ({ id, title, text }) =>\n dispatch(\n crState.actions.updateQaComment({ cr: cr?.id, id, title, text }),\n ),\n createAttachment: (args) =>\n dispatch(crState.actions.createAttachment({ id, ...args })).then(\n unwrapResult,\n ),\n updateWatch: (args) =>\n dispatch(crState.actions.updateWatch({ id: cr?.id, ...args })).then(\n unwrapResult,\n ),\n };\n}\n\nuseCr.getOne = useGetOne;\nuseCr.moveOne = useMoveOne;\n\nfunction useGetOne({ id, logActivity = false, includeLogs = false } = {}) {\n const dispatch = useDispatch();\n\n const loading = useSelector((state) => state.crs.crs.requests.loading);\n const [lastUpdate, setLastUpdate] = useState(null);\n\n const getCr = useCallback(\n (args) =>\n dispatch(\n crState.actions.getOne({\n id: id,\n logActivity: logActivity,\n includeLogs: includeLogs,\n ...args,\n }),\n )\n .then(unwrapResult)\n .then((result) => {\n setLastUpdate(moment());\n return result;\n }),\n [id, logActivity, includeLogs, dispatch],\n );\n return { loading, lastUpdate, getCr };\n}\n\nfunction useMoveOne() {\n const dispatch = useDispatch();\n const loading = useSelector((state) => state.crs.crs.requests.loading);\n\n const moveOne = useCallback(\n (args) =>\n dispatch(\n crState.actions.moveOne({\n ...args,\n }),\n )\n .then(unwrapResult)\n .then((result) => {\n const { data: cr } = result;\n toast.success(`CR ${cr.id} moved to ${cr.projectId}`);\n return result;\n }),\n [dispatch],\n );\n return { loading, moveOne };\n}\n","import _ from \"lodash\";\nimport React, { useMemo, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport Project from \"../projects\";\nimport { isTierOneGroup } from \"../users/groups\";\nimport CrEditor from \"./CrEditor\";\nimport { crSchemaInitial } from \"./crSchema\";\nimport useCr from \"./useCr\";\n\nexport default function CrNew({ cr: initialValues, onNew = () => {} }) {\n const { createOne } = useCr();\n const [error, setError] = useState(null);\n\n const { defaultOwner, defaultGroupId } = useSelector(\n (state) => state.settings.settings,\n );\n\n const { projectId } = initialValues;\n const { project } = Project.useOne({\n id: projectId,\n });\n\n const { groupId, owner, synopsis, description } = useMemo(() => {\n let synopsis = \"\",\n description = \"\";\n if (!project?.crs?.length) {\n synopsis = project?.synopsis;\n description = project?.description;\n }\n\n const groupId = project ? project.groupId : defaultGroupId || \"\";\n const owner = defaultOwner\n ? defaultOwner\n : isTierOneGroup(groupId)\n ? \"*TR1*\"\n : \"\";\n\n return {\n owner,\n groupId,\n synopsis,\n description,\n };\n }, [project, defaultOwner, defaultGroupId]);\n\n const defaultValues = crSchemaInitial({\n projectId,\n groupId,\n owner,\n synopsis,\n description,\n\n //Use initial values from project prop, but ignore any undefined\n ..._.pickBy(initialValues || {}, (v) => !_.isUndefined(v)),\n });\n\n return (\n {\n createOne(newCr)\n .then(onNew)\n .catch((error) => setError(error.message));\n }}\n error={error}\n project={project}\n />\n );\n}\n","import moment from \"moment\";\n\nimport { _datetime } from \"../common/functions/dates\";\n\nexport default function getCrPriorityClassName(cr) {\n function getMoment(hours) {\n let t = moment().add(hours, \"hours\");\n const dayStart = moment().hours(8).minutes(0);\n const dayEnd = moment().hours(17).minutes(0);\n if (t < dayStart) return dayStart;\n else if (t > dayEnd) return dayStart.add(1, \"days\");\n else return t;\n }\n\n if (!cr) return \"\";\n const {\n statusId,\n projectPriorityId,\n targetStartWorkDateTime,\n targetFirstContactDateTime,\n actualStartWorkDateTime,\n actualFirstContactDateTime,\n isPracticeUpgradeCr,\n } = cr;\n\n if (statusId === \"CL\" || statusId === \"FX\") return \"\";\n const now = getMoment(0);\n const nowHour = getMoment(1);\n\n const startWorkDateTime = _datetime.fromStamp(targetStartWorkDateTime);\n const firstContactDateTime = _datetime.fromStamp(targetFirstContactDateTime);\n\n if (projectPriorityId === \"EM\" || projectPriorityId === \"EF\")\n return \"bg-dark text-white\";\n else if (projectPriorityId === \"CR\") return \"bg-danger text-white\";\n else if (projectPriorityId === \"PR\" || projectPriorityId === \"IM\")\n return \"table-danger\";\n else if (isPracticeUpgradeCr) return \"table-primary\";\n else if (\n (!actualStartWorkDateTime && startWorkDateTime < now) ||\n (!actualFirstContactDateTime && firstContactDateTime < now)\n )\n return \"table-warning\";\n else if (\n (!actualStartWorkDateTime && startWorkDateTime < nowHour) ||\n (!actualFirstContactDateTime && firstContactDateTime < nowHour)\n )\n return \"bg-warning\";\n else return \"\";\n}\n","export const CR_QA_STATUSES = {\n FA: {\n id: \"FA\",\n description: \"Failed\",\n emojii: \"❌\",\n },\n PA: {\n id: \"PA\",\n description: \"Passed\",\n emojii: \"✅\",\n },\n PW: {\n id: \"PW\",\n description: \"Passed (with Warning)\",\n emojii: \"✔️\",\n },\n WA: {\n id: \"WA\",\n description: \"Open (Assigned)\",\n emojii: \"❎\",\n },\n};\n\nexport function useQaStatus({ id }) {\n return { ...CR_QA_STATUSES[id] };\n}\n\nexport function useQaStatuses() {\n const crQaStatuses = Object.entries(CR_QA_STATUSES).map(([, value]) => value);\n return { crQaStatuses };\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport { useQaStatuses } from \"./hooks\";\n\nexport default function CrQaStatusSelect({\n value,\n isMulti = false,\n placeholder = \"Select QA Status...\",\n isLoading = false,\n ...props\n}) {\n const { crQaStatuses } = useQaStatuses();\n\n const _options = crQaStatuses.map((f) => {\n return { label: `${f.emojii} ${f.description}`, value: f.id };\n });\n\n const _loading = isLoading;\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n}\n","import { CR_QA_STATUSES, useQaStatus, useQaStatuses } from \"./hooks\";\nimport QaStatusDescription from \"./QaStatusDescription\";\nimport QaStatusSelect from \"./QaStatusSelect\";\n\nconst QaStatus = {\n entities: CR_QA_STATUSES,\n // Hooks\n useAll: useQaStatuses,\n useOne: useQaStatus,\n // Components\n Select: QaStatusSelect,\n Description: QaStatusDescription,\n};\n\nexport default QaStatus;\n","import React from \"react\";\n\nimport { useQaStatus } from \"./hooks\";\n\nexport default function CrQaStatusDescription({ id }) {\n const { qaStatus } = useQaStatus({ id });\n if (!qaStatus) return null;\n\n return <>{qaStatus.description};\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport statusState from \"./state\";\n\nexport const { useEntities: useStatuses, useEntity: useStatus } =\n createEntityHooks({\n entity: statusState.entity,\n actions: statusState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useStatus } from \"./hooks\";\n\nconst StatusDescription = entityDescription({\n name: \"crStatus\",\n useEntity: useStatus,\n});\n\nexport default StatusDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useStatuses } from \"./hooks\";\n\nconst StatusSelect = entitySelect({\n name: \"crStatus\",\n useEntities: useStatuses,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default StatusSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useStatuses } from \"./hooks\";\n\nconst StatusTableFilter = entityTableFilter({\n name: \"crStatus\",\n useEntities: useStatuses,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default StatusTableFilter;\n","import { useStatus, useStatuses } from \"./hooks\";\nimport statusState from \"./state\";\nimport StatusDescription from \"./StatusDescription\";\nimport StatusSelect from \"./StatusSelect\";\nimport StatusTableFilter from \"./StatusTableFilter\";\n\nconst Status = {\n // Backend API\n api: statusState.api,\n // State\n actions: statusState.actions,\n selectors: statusState.entity.selectors,\n // Hooks\n useAll: useStatuses,\n useOne: useStatus,\n // Components\n Select: StatusSelect,\n Description: StatusDescription,\n TableFilter: StatusTableFilter,\n};\nexport default Status;\n","import React, { useMemo } from \"react\";\nimport { Col, Form } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Project from \"../projects\";\nimport User from \"../users\";\nimport CrLink from \"./CrLink\";\nimport Difficulty from \"./difficulties\";\nimport Module from \"./modules\";\nimport NotificationType from \"./notificationTypes\";\nimport QaStatus from \"./qaStatuses\";\nimport Status from \"./statuses\";\n\nconst DEFAULT_COMPONENTS = {\n CrLink: CrLink,\n};\n\nconst defaultLayout = [\n \"id\",\n \"project\",\n \"createDate\",\n \"customer\",\n \"owner\",\n \"status\",\n \"synopsis\",\n \"waiting\",\n \"priority\",\n \"group\",\n];\n\nexport default function useCrTableColumns({\n selectRow = false,\n Components: OverrideComponents,\n} = {}) {\n const Components = useMemo(\n () => ({\n ...DEFAULT_COMPONENTS,\n ...OverrideComponents,\n }),\n [OverrideComponents],\n );\n\n const columns = useMemo(\n () => [\n {\n Header: \"CR\",\n id: \"id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ row: { original: cr }, value }) =>\n selectRow ? value : ,\n },\n {\n Header: \"Project\",\n id: \"project\",\n accessor: \"projectId\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value }) =>\n selectRow ? (\n value\n ) : (\n \n {value}\n \n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Create Date\",\n id: \"createDate\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Create Time\",\n id: \"createTime\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_datetime.displayTime(_datetime.fromStamp(value))}\n ),\n },\n {\n Header: \"Modify Date\",\n id: \"modifyDate\",\n accessor: \"lastUpdateDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Modify Time\",\n id: \"modifyTime\",\n accessor: \"lastUpdateDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value ? _datetime.displayTime(_datetime.fromStamp(value)) : null}\n \n ),\n },\n {\n Header: \"Closed Date\",\n id: \"closedDate\",\n accessor: \"closedDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => {\n if (value === \"\") return \"\";\n else {\n return (\n \n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n \n );\n }\n },\n },\n {\n Header: \"Closed Time\",\n id: \"closedTime\",\n accessor: \"closedDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => {\n if (value === \"\") return \"\";\n else {\n return (\n {_datetime.displayTime(_datetime.fromStamp(value))}\n );\n }\n },\n },\n {\n Header: \"Target Delivery Date\",\n id: \"targetDeliveryDate\",\n disableFilters: true,\n accessor: \"targetDeliveryDate\",\n sortType: \"custom\",\n\n Cell: ({ value }) => {\n if (value === \"\") return \"\";\n else {\n return {_date.display(_date.fromStamp(value))};\n }\n },\n },\n {\n Header: \"Target First Contact\",\n id: \"targetFirstContact\",\n disableFilters: true,\n accessor: \"targetFirstContactDateTime\",\n sortType: \"custom\",\n\n Cell: ({ value }) => {\n if (value === \"\") return \"\";\n else {\n return (\n \n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n \n );\n }\n },\n },\n {\n Header: \"Target Start Work\",\n id: \"targetStartWork\",\n disableFilters: true,\n accessor: \"targetStartWorkDateTime\",\n sortType: \"custom\",\n\n Cell: ({ value }) => {\n if (value === \"\") return \"\";\n else {\n return (\n \n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n \n );\n }\n },\n },\n {\n id: \"customer\",\n Header: \"Customer\",\n accessor: ({ customers = [] }) =>\n customers\n ? customers.length > 1\n ? \"Multiple\"\n : customers[0]?.name || \"\"\n : \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"champion\",\n Header: \"Champion\",\n accessor: (cr) => {\n let championId = \"\";\n for (let c = 0; c < cr?.customers?.length; c++) {\n if (championId === \"\" || championId === cr.customers[c].championId)\n championId = cr.customers[c].championId;\n else championId = \"Multiple\";\n }\n return championId;\n },\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Owner\",\n id: \"owner\",\n accessor: \"owner\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Created By\",\n id: \"createdBy\",\n accessor: \"createUserId\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Modified By\",\n id: \"modifiedBy\",\n accessor: \"lastUpdateUserId\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Closed By\",\n id: \"closedBy\",\n accessor: \"closedUserId\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Status\",\n id: \"status\",\n accessor: \"statusId\",\n Filter: Status.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n sortInverted: true,\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Priority\",\n id: \"priority\",\n accessor: \"projectPriorityId\",\n Filter: Project.Priority.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Estimate Status\",\n id: \"estimateStatus\",\n accessor: \"projectEstimateStatus\",\n Filter: Project.EstimateStatus.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Group\",\n id: \"group\",\n accessor: \"groupId\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Documentation\",\n id: \"documentation\",\n accessor: \"notificationTypeId\",\n Filter: NotificationType.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Difficulty\",\n id: \"difficulty\",\n accessor: \"difficultyId\",\n Filter: Difficulty.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Module\",\n id: \"module\",\n accessor: \"moduleId\",\n Filter: Module.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Type\",\n id: \"type\",\n Filter: Project.Type.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n accessor: ({ overrideTypeId, projectTypeId }) =>\n overrideTypeId !== \"\" ? overrideTypeId : projectTypeId,\n Cell: ({ value }) => ,\n },\n {\n Header: \"Synopsis\",\n id: \"synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Fix Notes\",\n id: \"projectFixNotes\",\n accessor: \"projectFixNotes\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Waiting\",\n id: \"waiting\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isWaitingOnCustomer }) =>\n isWaitingOnCustomer ? \"⏳\" : \" \",\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"RFCC\",\n id: \"rfcc\",\n accessor: ({ isReadyForCodeCheckin }) =>\n isReadyForCodeCheckin ? \"Y\" : \" \",\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"SAM Follow-Up?\",\n id: \"isSAMFollowup\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isSAMFollowup }) => (isSAMFollowup ? \"🆘\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Status*\",\n id: \"statusExtended\",\n accessor: \"statusId\",\n Filter: Status.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n sortInverted: true,\n\n Cell: ({ value, row: { original: cr } }) => (\n \n \n \n \n \n {cr?.isWaitingOnCustomer ? \"⏳\" : \"\"}\n {cr?.isSAMFollowup ? \"🆘\" : \"\"}\n {QaStatus.entities?.[cr?.qaStatusId]?.emojii || \"\"}\n \n \n ),\n },\n {\n Header: \"QA Status\",\n id: \"qaStatus\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ qaStatusId }) =>\n QaStatus.entities?.[qaStatusId]?.emojii || \"\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Reviewer\",\n id: \"reviewer\",\n accessor: \"qaOwner\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Jira\",\n id: \"jira\",\n accessor: \"jiraKey\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: cr } }) => {\n let href = null;\n let notesArray = [];\n notesArray = cr?.jiraNotes.split(/\\r\\n|\\r|\\n/);\n\n if (notesArray?.length > 0) {\n for (let i = 0; i < notesArray.length; i++) {\n if (notesArray[i].startsWith(\"https\")) {\n href = notesArray[i];\n break;\n }\n }\n }\n\n if (href === null) {\n return <>{value};\n }\n return (\n \n {value}\n \n );\n },\n },\n ],\n [selectRow, Components],\n );\n\n return { columns, defaultLayout };\n}\n","import React from \"react\";\n\nimport Table from \"../common/tables/Table\";\nimport getCrPriorityClassName from \"./getCrPriorityClassName\";\nimport useCrTableColumns from \"./useCrTableColumns\";\n\nexport default function CrTable({\n crs,\n selectRow,\n crChosen = () => {},\n layout,\n Components,\n ...props\n}) {\n const onRowDoubleClick = (rowInfo) => {\n if (rowInfo.id != null) crChosen(rowInfo.id);\n };\n\n const onRowDoubleClickProp = selectRow\n ? { onRowDoubleClick: onRowDoubleClick }\n : {};\n\n const { columns, defaultLayout } = useCrTableColumns({\n selectRow,\n Components,\n });\n\n return (\n {\n if (!row.original) return {};\n const className = getCrPriorityClassName(row.original);\n if (!className) return {};\n return { className: className };\n }}\n {...onRowDoubleClickProp}\n {...props}\n moveFooterToTop\n />\n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\n\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport FieldInput from \"../../common/fields/FieldInput\";\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport { _date } from \"../../common/functions/dates\";\nimport useReinitState from \"../../common/hooks/useReinitState\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport Difficulty from \"../difficulties\";\nimport Module from \"../modules\";\nimport NotificationType from \"../notificationTypes\";\nimport Status from \"../statuses\";\n\nconst DateInput = ({ onChange, value }) => (\n onChange(d ? _date.stamp(d) : d)}\n includeNow={false}\n isClearable\n />\n);\n\nconst NumberInput = ({ onChange, value }) => (\n \n);\n\nconst CheckInput = ({ onChange, value, name }) => (\n onChange(e.target.checked)}\n />\n);\n\nconst fields = {\n owners: {\n name: \"Owner\",\n include: \"ownersInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n crStatuses: {\n name: \"Status\",\n include: \"crStatusesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n champions: {\n name: \"Champion\",\n include: \"championsInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n closedStart: {\n name: \"Closed Date (Start)\",\n Input: DateInput,\n },\n closedEnd: {\n name: \"Closed Date (End)\",\n Input: DateInput,\n },\n closedUsers: {\n name: \"Closed by User\",\n include: \"closedUsersInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n crDifficulties: {\n name: \"Difficulty\",\n include: \"crDifficultiesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n createStart: {\n name: \"Create Date (Start)\",\n Input: DateInput,\n },\n createEnd: {\n name: \"Create Date (End)\",\n Input: DateInput,\n },\n createUsers: {\n name: \"Created by User\",\n include: \"createUsersInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n modifyStart: {\n name: \"Modify Date (Start)\",\n Input: DateInput,\n },\n modifyEnd: {\n name: \"Modify Date (End)\",\n Input: DateInput,\n },\n modifyUsers: {\n name: \"Modify by User\",\n include: \"modifyUsersInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n crModules: {\n name: \"Module\",\n include: \"crModulesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n crNotifications: {\n name: \"Notification Type\",\n include: \"crNotificationsInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n customers: {\n name: \"Customer\",\n include: \"customersInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n estimateMaxHoursStart: {\n name: \"Estimate Hours Maximum (Start)\",\n Input: NumberInput,\n },\n estimateMaxHoursEnd: {\n name: \"Estimate Hours Maximum (End)\",\n Input: NumberInput,\n },\n estimateMinHoursStart: {\n name: \"Estimate Hours Minimum (Start)\",\n Input: NumberInput,\n },\n estimateMinHoursEnd: {\n name: \"Estimate Hours Minimum (End)\",\n Input: NumberInput,\n },\n groups: {\n name: \"Groups\",\n include: \"groupsInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n isAssigned: {\n name: \"Assigned?\",\n label: null,\n defaultValue: false,\n Input: CheckInput,\n },\n isMultiCustomer: {\n name: \"Multiple Customers?\",\n label: null,\n defaultValue: false,\n Input: CheckInput,\n },\n isReadyForCodeCheckin: {\n name: \"Ready for code check in?\",\n label: null,\n defaultValue: false,\n Input: CheckInput,\n },\n isWaitingOnCustomer: {\n name: \"Waiting?\",\n label: null,\n defaultValue: false,\n Input: CheckInput,\n },\n isSAMFollowup: {\n name: \"SAM follow-up?\",\n label: null,\n defaultValue: false,\n Input: CheckInput,\n },\n projectEstimateStatuses: {\n name: \"Project estimate status\",\n include: \"projectEstimateStatusesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n projectPriorities: {\n name: \"Project priority\",\n include: \"projectPrioritiesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n projectSources: {\n name: \"Project sources\",\n include: \"projectSourcesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n projectStatuses: {\n name: \"Project status\",\n include: \"projectStatusesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n targetDeliveryStart: {\n name: \"Target Delivery Date (Start)\",\n Input: DateInput,\n },\n targetDeliveryEnd: {\n name: \"Target Delivery Date (End)\",\n Input: DateInput,\n },\n targetFirstContactStart: {\n name: \"Target First Contact Date (Start)\",\n Input: DateInput,\n },\n targetFirstContactEnd: {\n name: \"Target First Contact Date (End)\",\n Input: DateInput,\n },\n targetStartWorkStart: {\n name: \"Target Start Work Date (Start)\",\n Input: DateInput,\n },\n targetStartWorkEnd: {\n name: \"Target Start Work Date (End)\",\n Input: DateInput,\n },\n types: {\n name: \"Type\",\n include: \"typesInclude\",\n Input: ({ onChange, value }) => (\n \n ),\n },\n projects: {\n name: \"Project\",\n Input: ({ onChange, value }) => (\n onChange([project?.id])}\n placeholder=\"Select Project...\"\n />\n ),\n },\n\n //TODO\n // contacts: {},\n // contactsInclude: {},\n // crModuleGroups: {},\n // crModuleGroupsInclude: {},\n // qaOwners: {},\n // qaOwnersInclude: {},\n // qaStatuses: {},\n // qaStatusesInclude: {},\n};\n\nconst fieldsOptions = Object.entries(fields).map(([key, value]) => ({\n value: key,\n label: value?.label || value?.name || key,\n}));\n\nexport default function CrFilterParameters({\n values: initialValues,\n onChange,\n}) {\n const [values, setValues] = useReinitState(initialValues);\n const [changed, setChanged] = useState(false);\n function handleChange(field, opts) {\n setValues((values) => ({\n ...values,\n [field]: opts,\n }));\n setChanged(true);\n }\n\n useEffect(() => {\n if (changed) {\n onChange(values);\n setChanged(false);\n }\n }, [changed, onChange, values]);\n\n return (\n \n \n \n \n \n \n handleChange(\"folderId\", opts)}\n />\n \n \n \n \n \n \n \n Add parameter\n \n \n \n \n {\n const includeField = fields[opt]?.include;\n const defaultValue = fields[opt]?.defaultValue;\n handleChange(\n opt,\n _.isUndefined(defaultValue) ? null : defaultValue,\n );\n if (includeField) handleChange(includeField, true);\n }}\n />\n \n \n \n \n \n \n \n {values &&\n Object.entries(values).map(([key, value]) => {\n const field = fields?.[key];\n if (!field) {\n // console.warn(\"Unknown filter key\", key);\n return null;\n }\n const Input = field.Input;\n const includeField = field.include;\n return (\n \n \n \n {_.isNull(field.label) ? null : (\n {field.label || field.name}\n )}\n \n {includeField ? (\n handleChange(includeField, v)}\n />\n ) : null}\n \n \n \n handleChange(key, v)}\n value={value}\n name={field?.name || field?.key}\n />\n \n \n {\n let newFilter = { ...values };\n delete newFilter[key];\n if (includeField) delete newFilter[includeField];\n onChange(newFilter);\n }}\n title=\"Remove parameter\"\n >\n -\n \n \n \n \n );\n })}\n \n \n \n \n \n );\n}\n\nfunction ExcludeFlag({ value, onChange, name }) {\n return (\n \n onChange(!e.target.checked)}\n />\n \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo, useState } from \"react\";\nimport { Button, Col, Collapse, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport { Forms, useController, useFormContext } from \"../common/forms\";\nimport queryToString from \"../common/functions/queryToString\";\nimport CrTable from \"./CrTable\";\nimport CrFilterParameters from \"./filters/CrFilterParameters\";\nimport useCrsByFilter from \"./useCrsByFilter\";\n\nexport default function CrSearch({\n defaultCustomerId,\n defaultOwnerId,\n defaultProjectId,\n onSelect,\n}) {\n const [defaultFilter, initialSearch] = useMemo(() => {\n let initialSearch = false;\n let defaultFilter = { folderId: \"CURRENT\" };\n if (defaultCustomerId) {\n defaultFilter.customers = [defaultCustomerId];\n defaultFilter.customersInclude = true;\n initialSearch = true;\n }\n if (defaultOwnerId) {\n defaultFilter.owners = [defaultOwnerId];\n defaultFilter.ownersInclude = true;\n initialSearch = true;\n }\n if (defaultProjectId) {\n defaultFilter.projects = [defaultProjectId];\n initialSearch = true;\n }\n return [defaultFilter, initialSearch];\n }, [defaultCustomerId, defaultOwnerId, defaultProjectId]);\n\n const [filter, setFilter] = useState(defaultFilter);\n const [search, setSearch] = useState(initialSearch);\n\n const { crs, loading, hasMore, getMore, reset, lastUpdate } = useCrsByFilter({\n filter,\n blocked: !search,\n });\n\n const user = useSelector((state) => state.auth.user);\n\n // we want to only send records once\n // the refresh functionality doesn't keep in line the default\n // sort that I want to do here\n const tableData = useMemo(() => {\n return crs?.sort((a, b) => {\n const aval = a.owner === user ? \" \" : a.owner;\n const bval = b.owner === user ? \" \" : b.owner;\n if (aval > bval) return 1;\n if (aval < bval) return -1;\n return 0;\n });\n }, [crs, user]);\n\n return (\n <>\n \n \n \n
    \n {\n setFilter(f);\n setSearch(true);\n }}\n />\n
    \n
    \n \n
    \n \n \n

    {queryToString(filter)}

    \n \n \n \n \n
    \n
    \n
    \n \n
    \n \n \n \n
    \n onSelect(crId)}\n layout={[\n \"project\",\n \"id\",\n \"modifyDate\",\n \"owner\",\n \"status\",\n \"type\",\n \"synopsis\",\n ]}\n onRefresh={reset}\n refreshLabel={\n \"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"\n }\n />\n
    \n
    \n \n
    \n \n );\n}\n\nfunction FilterEditor({ onSubmit, filter, isLoading, defaults }) {\n return (\n onSubmit(filter)}\n defaultValues={{\n filter: {\n ...defaults,\n ...filter,\n },\n }}\n >\n \n \n );\n}\n\nfunction FilterEditorForm({ isLoading }) {\n const { submitForm } = useFormContext();\n const {\n field: { value, onChange },\n fieldState: { error },\n } = useController({ name: \"filter\" });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { isNil } from \"lodash\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Button, Col, Form, Modal } from \"react-bootstrap\";\nimport { BiSearchAlt2 } from \"react-icons/bi\";\n\nimport useUserActivityOptions from \"../activity/userActivity/useUserActivityOptions\";\nimport FieldSelect, { OptionExtended } from \"../common/fields/FieldSelect\";\nimport useReinitState from \"../common/hooks/useReinitState\";\nimport Project from \"../projects\";\nimport CrSearch from \"./CrSearch\";\nimport useCr from \"./useCr\";\n\nconst selectComponents = { Option: OptionExtended };\n\nexport default function CrSelect({\n id,\n label,\n onChange,\n placeholder = \"CR/Project...\",\n errors: initialErrors,\n value: initialValue,\n isLoading,\n searchButton = true,\n validateOnMount = false,\n canFetch,\n refreshActivityButton = false,\n customerFilter,\n ...props\n}) {\n const [input, setInput] = useState(\"\");\n const [errors, setErrors] = useReinitState(initialErrors);\n const { getProject, loading: loadingProject } = Project.useOne.getOne();\n const { getCr, loading: loadingCr } = useCr.getOne();\n\n const [searchProps, setSearchProps] = useState(null);\n const shouldShowSearch = searchProps !== null;\n\n let options = [];\n\n Project.useFindOption({ input, options });\n const CrSelectFilter = (activity) => {\n return (\n activity.source == \"CR\" &&\n (!customerFilter ||\n !activity?.customers ||\n activity?.customers.includes(customerFilter))\n );\n };\n const { loading: loadingActivity, getMany: getActivities } =\n useUserActivityOptions({ options, filter: CrSelectFilter });\n\n const {\n handleValue: handleCr,\n value,\n loading: valueLoading,\n } = Project.Select.useValue({\n get: getCr,\n errors: initialErrors,\n typeOf: \"cr\",\n setErrors,\n fetch: canFetch,\n });\n\n const _loading =\n isLoading ||\n valueLoading ||\n loadingProject ||\n loadingCr ||\n loadingActivity ||\n false;\n\n const handleChange = useCallback(\n async ({ typeOf, id } = {}) => {\n if (typeOf === \"project\")\n return getProject({ id })\n .then(({ data: project }) =>\n project?.crs.length > 1\n ? setSearchProps({ defaultProjectId: project?.id })\n : handleCr(project?.crs[0]?.id).then((cr) => onChange({ ...cr })),\n )\n .catch((e) => setErrors(e.message));\n else if (typeOf === \"cr\")\n return handleCr(id)\n .then((cr) => onChange({ ...cr }))\n .catch((e) => setErrors(e.message));\n else if (id === undefined) onChange(null);\n },\n [getProject, handleCr, onChange, setErrors],\n );\n\n const [validatedId, setValidatedId] = useState(null);\n const shouldUseInitial =\n !isNil(initialValue) &&\n initialValue !== value?.value?.id &&\n (validatedId === null || initialValue !== validatedId);\n\n useEffect(() => {\n if (shouldUseInitial) {\n if (validateOnMount) {\n setValidatedId(initialValue);\n handleChange({ typeOf: \"cr\", id: initialValue });\n } else handleCr(initialValue).catch((e) => setErrors(e.message));\n }\n }, [\n initialValue,\n shouldUseInitial,\n setErrors,\n validateOnMount,\n handleChange,\n handleCr,\n ]);\n\n return (\n \n \n \n {label ? {label} : null}\n \n \n \n setInput(s)}\n blurInputOnSelect\n errors={errors}\n isInvalid={errors}\n {...props}\n />\n \n {searchButton ? (\n \n setSearchProps({})}\n variant=\"light\"\n title=\"Search for CR\"\n >\n \n \n \n ) : null}\n setSearchProps(null)}\n className=\"modal2\"\n backdropClassName=\"modal2-backdrop\"\n >\n \n CR Search\n \n \n {\n setSearchProps(null);\n handleChange({ id, typeOf: \"cr\" });\n }}\n {...searchProps}\n />\n \n \n \n \n \n {refreshActivityButton ? (\n {\n getActivities();\n }}\n >\n Refresh Activity\n \n ) : null}\n \n \n \n \n );\n}\n","import React, { useMemo, useRef, useState } from \"react\";\nimport { Button, ButtonGroup, Form, ListGroup, Modal } from \"react-bootstrap\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { HiShare } from \"react-icons/hi\";\nimport { MdEmail } from \"react-icons/md\";\nimport { useSelector } from \"react-redux\";\nimport { toast } from \"react-toastify\";\n\nimport shark from \"../apis/shark\";\nimport Mailto from \"../common/details/Mailto\";\nimport FieldInput from \"../common/fields/FieldInput\";\nimport { Controller, useForms } from \"../common/forms\";\nimport ContextMenu from \"../common/popovers/ContextMenu\";\nimport User from \"../users\";\n\nasync function shareCrAPI(options) {\n const payload = {\n ...options,\n command: \"emailCr\",\n };\n return await shark.post(payload);\n}\n\nexport default function CrShareButton({ cr }) {\n const [show, setShow] = useState(false);\n const [showDetails, setShowDetails] = useState(false);\n const ref = useRef(null);\n\n return (\n <>\n \n \n Share CR\n \n }\n target={ref?.current}\n show={show}\n onHide={() => setShow(false)}\n placement=\"top\"\n >\n setShow(false)}>\n setShowDetails(true)}>\n Email\n \n toast.success(\"Project # copied\")}\n >\n \n Copy Project #\n \n \n toast.success(\"CR # copied\")}\n >\n \n Copy CR #\n \n \n \n \n setShowDetails(false)}>\n \n \n {`Email CR ${cr?.id}`}\n \n \n \n setShowDetails(false)} />\n \n \n \n );\n}\n\nfunction CrShareDetailsForm({ cr, onHide }) {\n const email = useSelector((state) => state.auth.email);\n const {\n handleSubmit,\n register,\n control,\n watch,\n formState: { errors },\n } = useForms({\n defaultValues: { to: email, notesBefore: \"\" },\n });\n\n const emails = watch(\"to\");\n const notes = watch(\"notesBefore\");\n\n const toUsers = useMemo(() => {\n let users = [];\n if (cr?.owner && cr?.owner?.charAt(0) !== \"*\")\n users.push({ label: \"Owner\", id: cr.owner });\n return users;\n }, [cr]);\n\n const [isCompose, setIsCompose] = useState(false);\n\n return (\n
    \n (\n onChange(opts.join(\",\"))}\n isInvalid={errors.to}\n errors={errors.to && \"Required\"}\n users={toUsers}\n />\n )}\n />\n (\n onChange(e.target.value)}\n />\n )}\n />\n\n setIsCompose(e.target.checked)}\n />\n\n \n {isCompose ? (\n \n Compose Email\n \n ) : (\n {\n toast.info(\"Sending CR \" + cr.id + \"...\");\n onHide();\n shareCrAPI({ id: cr.id, ...data }).then(() =>\n toast.info(\"CR \" + cr.id + \" sent.\"),\n );\n })}\n block\n >\n Send Formatted Email\n \n )}\n \n \n\n {!isCompose ? (\n <>\n \n \n ) : null}\n \n );\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n Alert,\n Button,\n ButtonGroup,\n Col,\n Form,\n ListGroup,\n Modal,\n Row,\n} from \"react-bootstrap\";\nimport { BiDotsHorizontalRounded, BiEdit } from \"react-icons/bi\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\n\nimport Watch from \"../activity/watches\";\nimport GroupOwnerFields from \"../common/components/forms/GroupOwnerFields\";\nimport {\n ErrorIcon,\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport ContextMenu from \"../common/popovers/ContextMenu\";\nimport toastPrompt from \"../common/toasts/toastPrompt\";\nimport Customer from \"../customers\";\nimport Project from \"../projects\";\nimport CrNew from \"./CrNew\";\nimport crSchema from \"./crSchema\";\nimport DefectOccurrence from \"./defectOccurrences\";\nimport Module from \"./modules\";\nimport NotificationType from \"./notificationTypes\";\nimport Status from \"./statuses\";\nimport useCr from \"./useCr\";\n\nconst isClosed = (statusId) => statusId === \"CL\" || statusId === \"FX\";\n\nfunction CrStatusEditor({\n cr,\n project,\n update,\n isLoading,\n isDisabled,\n updateWatch,\n shouldOnlyShowEditButton = false,\n statusId,\n modalProps,\n}) {\n const history = useHistory();\n const [statusPrompt, setStatusPrompt] = useState(false);\n\n return (\n \n {\n update(crVals).then((result) => {\n setStatusPrompt(false);\n if (isClosed(result?.statusId)) {\n if (\n project?.statusId !== \"CL\" &&\n !project?.crs.filter(\n (c) => c.id !== cr.id && !isClosed(c.statusId),\n ).length\n ) {\n toastPrompt({\n message: \"Last CR closed on Project\",\n confirm: \"Close Project\",\n cancel: \"Ignore\",\n onConfirm: () => {\n history.push(`/projects/${result.projectId}?status=CL`);\n },\n });\n }\n }\n });\n }}\n shouldUnregister\n >\n setStatusPrompt(true)}\n onHide={() => setStatusPrompt(false)}\n modalProps={modalProps}\n statusId={statusId}\n />\n \n \n \n setStatusPrompt(true)}\n variant=\"light\"\n title=\"Edit CR\"\n >\n \n \n {shouldOnlyShowEditButton ? null : (\n <>\n \n updateWatch({ isWatching: v })}\n />\n \n )}\n \n \n \n );\n}\n\nfunction CrStatusForms({\n isLoading,\n prompt,\n onShow,\n onHide,\n statusId: statusIdParam,\n modalProps,\n}) {\n const {\n register,\n setValue,\n watch,\n reset,\n submitForm,\n formsContext: { isDisabled },\n } = useFormContext();\n\n // Register inputs that need to be available when modal is hidden\n register(\"overrideTypeId\");\n register(\"notificationTypeId\");\n register(\"owner\");\n register(\"overrideTypeId\");\n register(\"jiraKey\");\n register(\"isInternalCr\");\n register(\"actualFirstContactDateTime\");\n register(\"actualStartWorkDateTime\");\n register(\"code_revisions\");\n\n const [statusId, owner] = watch([\"statusId\", \"owner\"]);\n\n const onStatusChange = useCallback(\n (value, valueNext) => {\n setValue(\"statusId\", valueNext, {\n shouldValidate: true,\n shouldDirty: true,\n });\n if (value !== valueNext && isClosed(valueNext)) {\n setValue(\"isWaitingOnCustomer\", false);\n setValue(\"isTestingRequired\", false);\n setValue(\"isReadyForCodeCheckin\", false);\n setValue(\"isSAMFollowup\", false);\n if (owner?.charAt(0) === \"*\") setValue(\"owner\", \"\");\n onShow();\n }\n },\n [onShow, setValue, owner],\n );\n\n useEffect(() => {\n if (!isDisabled && statusIdParam && statusId !== statusIdParam) {\n onStatusChange(statusId, statusIdParam);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled, statusIdParam]);\n\n const handleHide = () => {\n reset();\n onHide();\n };\n\n return (\n \n {\n onStatusChange(statusId, valueNext);\n if (statusId !== valueNext && !isClosed(valueNext)) {\n submitForm();\n }\n }}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n \n \n Edit CR\n \n \n \n \n \n \n );\n}\n\nfunction StatusId({ name, ...props }) {\n const { field } = useController({ name });\n\n return (\n \n );\n}\n\nfunction StatusForm({ isDisabled, onHide }) {\n const {\n setValue,\n watch,\n submitForm,\n context: { project },\n formState: { isSubmitting, isValid, errors },\n } = useFormContext();\n\n const [overrideTypeId, notificationTypeId, statusId] = watch([\n \"overrideTypeId\",\n \"notificationTypeId\",\n \"statusId\",\n ]);\n const typeId = overrideTypeId || project?.typeId;\n\n useEffect(() => {\n if (!notificationTypeId && isClosed(statusId)) {\n if (typeId === \"CC\")\n setValue(\"notificationTypeId\", \"C\", {\n shouldValidate: true,\n shouldDirty: true,\n });\n else\n setValue(\"notificationTypeId\", \"N\", {\n shouldValidate: true,\n shouldDirty: true,\n });\n }\n }, [notificationTypeId, typeId, statusId, setValue]);\n\n useFormsKeys();\n\n return (\n
    \n \n \n {typeId === \"DE\" ? (\n \n ) : null}\n\n \n \n\n \n\n \n \n \n {\n if (isValid === false) console.log(\"CR Invalid\", errors);\n submitForm();\n }}\n disabled={isSubmitting || isDisabled}\n >\n Save\n \n \n Cancel\n \n \n\n \n Waiting, RFCC, and Required Testing will be cleared.\n \n \n \n \n \n \n \n );\n}\n\nfunction CrWarnings() {\n const {\n watch,\n context: { project },\n } = useFormContext();\n\n const [\n overrideTypeId,\n jiraKey,\n isInternalCr,\n actualFirstContactDateTime,\n actualStartWorkDateTime,\n code_revisions,\n ] = watch([\n \"overrideTypeId\",\n \"jiraKey\",\n \"isInternalCr\",\n \"actualFirstContactDateTime\",\n \"actualStartWorkDateTime\",\n \"code_revisions\",\n ]);\n const typeId = overrideTypeId || project?.typeId;\n\n const canCheckTime = project?.statusId !== \"DU\" && !jiraKey && !isInternalCr;\n const hasMissingFirstContact = canCheckTime && !actualFirstContactDateTime;\n const hasMissingStartWork = canCheckTime && !actualStartWorkDateTime;\n\n const hasMissingCommitsAsCustom = typeId === \"CC\" && !code_revisions?.length;\n const hasCommitsAsSupport =\n (typeId === \"SU\" || typeId === \"QU\") && code_revisions?.length;\n return (\n \n \n {hasMissingFirstContact || hasMissingStartWork ? (\n \n \n Missing Time Information\n \n\n \n \n
      \n {hasMissingFirstContact ? (\n
    • Cannot determine when customer was contacted
    • \n ) : null}\n {hasMissingStartWork ? (\n
    • Cannot determine when work was started
    • \n ) : null}\n
    \n \n
    \n \n Update time records with appropriate worklog settings\n \n
    \n ) : null}\n {hasCommitsAsSupport || hasMissingCommitsAsCustom ? (\n \n {hasCommitsAsSupport\n ? \"Support/Question CR with linked revisions\"\n : hasMissingCommitsAsCustom\n ? \"Custom Change CR does not include any linked revisions\"\n : \"\"}\n \n ) : null}\n \n
    \n );\n}\n\nfunction ActionContextMenu({ cr, update }) {\n const user = useSelector((state) => state.auth.user);\n const ref = useRef(null);\n const [show, setShow] = useState(false);\n const [showMove, setShowMove] = useState(false);\n const [showDuplicate, setShowDuplicate] = useState(false);\n\n const location = useLocation();\n // Close modal on navigate (link)\n useEffect(() => {\n setShowMove(false);\n }, [location]);\n\n return (\n <>\n setShow(true)}\n variant=\"light\"\n title=\"Actions\"\n >\n \n \n\n setShow(false)}\n placement=\"bottom\"\n >\n setShow(false)}>\n update({ owner: user })}>\n Assign to me\n \n setShowMove(true)}>\n Move\n \n setShowDuplicate(true)}>\n Duplicate\n \n \n \n setShowMove(false)} cr={cr} />\n setShowDuplicate(false)}\n cr={cr}\n />\n \n );\n}\n\nfunction CrMoveModal({ cr, show, onHide }) {\n return (\n \n \n Move CR to project\n \n \n \n \n \n );\n}\n\nfunction CrMoveForm({ cr, onHide }) {\n const [projectId, setProjectId] = useState(cr.projectId);\n const { project } = Project.useOne({ id: projectId, canGet: \"auto\" });\n const { getCr } = useCr.getOne();\n const { moveOne, loading } = useCr.moveOne();\n\n const currentCustomer = cr.customers[0].id;\n const projectCustomer = project?.customers[0].customerId;\n\n return (\n <>\n \n \n setProjectId(id)}\n value={projectId}\n getCr={getCr}\n />\n \n \n \n \n \n moveOne({ crId: cr.id, projectId: projectId }).then(onHide)\n }\n disabled={loading}\n >\n {loading ? \"Moving...\" : \"Move\"}\n \n \n \n \n );\n}\n\nfunction DuplicateCrModal({ show, onHide, cr = {} }) {\n return (\n \n \n New CR\n \n \n \n \n \n );\n}\n\nCrStatusEditor.Form = StatusForm;\nexport default CrStatusEditor;\n","import _ from \"lodash\";\nimport React, { useMemo } from \"react\";\n\nimport FieldSelect from \"../fields/FieldSelect\";\n\nexport default function TableColumnSelect({\n columns,\n isMulti,\n value,\n shouldValuesSortLikeOptions = false,\n ...props\n}) {\n const options = useMemo(\n () => columns.map((c) => ({ value: c.id, label: c.Header || c.id })),\n [columns],\n );\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = shouldValuesSortLikeOptions\n ? options.filter((o) => value.includes(o.value))\n : value.map((v) => _.find(options, (o) => o.value === v));\n } else {\n valueOption = _.find(options, [\"value\", value]);\n }\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport tableLayoutState from \"./state\";\n\nexport const { useEntities: useTableLayouts, useEntity: useTableLayout } =\n createEntityHooks({\n entity: tableLayoutState.entity,\n actions: tableLayoutState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useTableLayout } from \"./hooks\";\n\nexport const TableLayoutDescription = entityDescription({\n name: \"crTableLayout\",\n useEntity: useTableLayout,\n});\n\nexport default TableLayoutDescription;\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\nimport { Button, ButtonGroup, Col, ListGroup, Row } from \"react-bootstrap\";\nimport { MdDelete, MdDragHandle } from \"react-icons/md\";\n\nimport useReinitState from \"../hooks/useReinitState\";\nimport TableColumnSelect from \"./TableColumnSelect\";\n\nexport default function TableLayoutEditor({\n columns: columnsInitial,\n layout = [],\n onChange,\n defaultLayout = [],\n}) {\n const [columns, setColumns] = useReinitState(\n layout\n .map((c) => {\n return _.find(columnsInitial, { id: c });\n })\n .filter((c) => _.isObject(c)),\n );\n const item = columnCheckListItem(columns, onChange);\n const reorder = (list, startIndex, endIndex) => {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n\n return result;\n };\n\n function onDragEnd(result) {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n\n const items = reorder(\n columns,\n result.source.index,\n result.destination.index,\n );\n\n setColumns(items);\n onChange(items.map((i) => i.id));\n }\n\n return (\n \n \n \n \n \n \n !layout.includes(c.id))}\n onChange={(v) => {\n return onChange(columns.map((c) => c.id).concat([v]));\n }}\n />\n \n \n \n \n \n onChange([])}\n >\n Clear\n \n onChange(defaultLayout)}\n >\n Defaults\n \n \n \n \n \n \n \n \n \n {(provided) => (\n
    \n {columns.map((column, index) => (\n \n {item}\n \n ))}\n {provided.placeholder}\n
    \n )}\n
    \n
    \n
    \n \n
    \n \n
    \n );\n}\n\nconst columnCheckListItem = (columns, onChange) =>\n function ColumnCheckList(provided, snapshot, rubric) {\n const column = columns[rubric.source.index];\n return (\n \n \n \n \n {column.Header || column.id}\n \n \n \n onChange(\n columns.filter((c) => c.id !== column.id).map((c) => c.id),\n )\n }\n >\n \n \n \n \n \n \n );\n };\n","import { object, string } from \"yup\";\n\nconst crTableLayoutSchema = object().shape({\n id: string().label(\"Layout\").max(10),\n description: string().label(\"Description\").required().max(30),\n});\n\nexport default crTableLayoutSchema;\n","import { isEmpty } from \"lodash\";\nimport React, { useState } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Modal, Row } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n} from \"../../common/forms\";\nimport TableLayoutEditorCom from \"../../common/tables/TableLayoutEditor\";\nimport useCrTableColumns from \"../useCrTableColumns\";\nimport crTableLayoutSchema from \"./tableLayoutSchema\";\n\nexport default function TableLayoutEditor({\n crTableLayout: { id, ...layout } = {},\n onSubmit,\n onSearch,\n isLoading,\n defaultLayout,\n}) {\n return (\n {\n const func = formSubmitType === \"search\" ? onSearch : onSubmit;\n return func(values, {\n isNew: formSubmitType === \"new\",\n isDirty: formSubmitDirty,\n });\n }}\n defaultValues={{ id, ...layout }}\n schema={{ schema: crTableLayoutSchema }}\n isDisabled={isLoading}\n >\n \n \n );\n}\n\nfunction LayoutForm({ id: currentId, isLoading, defaultLayout }) {\n const {\n watch,\n setValue,\n submitForm,\n formState: { dirtyFields },\n } = useFormContext();\n\n const isFieldsDirty = !isEmpty(dirtyFields);\n\n const [showSave, setShowSave] = useState(false);\n\n const id = watch(\"id\");\n const isNew = id !== currentId;\n\n return (\n \n \n {\n setValue(\"formSubmitType\", \"search\");\n setValue(\"formSubmitDirty\", isFieldsDirty);\n submitForm(e);\n }}\n >\n \n \n \n setShowSave(!showSave)}\n tabIndex={-1}\n >\n Save\n \n \n \n \n \n \n \n \n \n \n setShowSave(false)}\n className=\"modal2\"\n backdropClassName=\"modal2-backdrop\"\n >\n \n Save CR Table Layout\n \n \n setShowSave(false)}\n isNew={isNew}\n isLoading={isLoading}\n isFieldsDirty={isFieldsDirty}\n />\n \n \n \n \n \n );\n}\n\nfunction ColumnEditor({ name }) {\n const { columns, defaultLayout } = useCrTableColumns();\n const {\n field: { value, onChange },\n } = useController({ name });\n return (\n c.column)}\n onChange={(layout) =>\n onChange(layout.map((c, idx) => ({ id: idx, column: c })))\n }\n defaultLayout={defaultLayout}\n />\n );\n}\n\nfunction SaveForms({ onHide, isNew, isLoading, isFieldsDirty }) {\n const {\n submitForm,\n setValue,\n formState: { isSubmitting },\n } = useFormContext();\n\n // useSubmitKeys({\n // onSubmit: () => {\n // onHide();\n // setFieldValue(\"formSubmitType\", isNew ? \"new\" : \"save\");\n // },\n // });\n\n return (\n \n \n \n \n\n {\n onHide();\n setValue(\"formSubmitType\", isNew ? \"new\" : \"save\");\n setValue(\"formSubmitDirty\", isFieldsDirty);\n submitForm();\n }}\n >\n {isNew ? \"Save as\" : \"Save\"}\n \n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useTableLayouts } from \"./hooks\";\n\nexport const TableLayoutSelect = entitySelect({\n name: \"crTableLayout\",\n useEntities: useTableLayouts,\n});\n\nexport default TableLayoutSelect;\n","import { useTableLayout, useTableLayouts } from \"./hooks\";\nimport tableLayoutState from \"./state\";\nimport TableLayoutDescription from \"./TableLayoutDescription\";\nimport TableLayoutEditor from \"./TableLayoutEditor\";\nimport TableLayoutSelect from \"./TableLayoutSelect\";\n\nconst TableLayout = {\n // Backend API\n api: tableLayoutState.api,\n // State\n actions: tableLayoutState.actions,\n selectors: tableLayoutState.entity.selectors,\n // Hooks\n useAll: useTableLayouts,\n useOne: useTableLayout,\n // Components\n Select: TableLayoutSelect,\n Description: TableLayoutDescription,\n Editor: TableLayoutEditor,\n};\nexport default TableLayout;\n","import { boolean, object, string } from \"yup\";\n\nconst crFilterSchema = object().shape({\n id: string().label(\"Layout\").max(10),\n description: string().label(\"Description\").max(30),\n public: boolean().label(\"Public\"),\n});\n\nexport default crFilterSchema;\n","import _, { isEmpty } from \"lodash\";\nimport React, { useState } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Col,\n Form,\n ListGroup,\n Modal,\n OverlayTrigger,\n Popover,\n Row,\n} from \"react-bootstrap\";\nimport { AiFillStar, AiOutlineStar } from \"react-icons/ai\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport TableColumnSelect from \"../../common/tables/TableColumnSelect\";\nimport TableLayout from \"../tableLayouts\";\nimport useCrTableColumns from \"../useCrTableColumns\";\nimport CrFilterParameters from \"./CrFilterParameters\";\nimport crFilterSchema from \"./crFilterSchema\";\nimport Favorite from \"./favorites\";\n\nexport default function CrFilterEditor({\n crFilter: { id, ...filter },\n onSubmit,\n onSearch,\n onDelete,\n isLoading,\n}) {\n return (\n {\n const func = formSubmitType === \"search\" ? onSearch : onSubmit;\n return func(crFilterNew, {\n isNew: formSubmitType === \"new\",\n isDirty: formSubmitDirty,\n });\n }}\n defaultValues={{ id, ...filter }}\n schema={{ schema: crFilterSchema }}\n >\n <>{}\n \n );\n}\n\nfunction CrFilterForm({ id: currentId, isLoading, onDelete }) {\n const {\n watch,\n setValue,\n submitForm,\n formState: { dirtyFields },\n } = useFormContext();\n const isFieldsDirty = !isEmpty(dirtyFields);\n\n const [showSave, setShowSave] = useState(false);\n const id = watch(\"id\");\n const isNew = id !== currentId;\n\n const { columns: crTableColumns } = useCrTableColumns();\n\n return (\n \n \n {\n setValue(\"formSubmitDirty\", isFieldsDirty);\n setValue(\"formSubmitType\", \"search\");\n submitForm(e);\n }}\n >\n \n \n \n setShowSave(!showSave)}\n tabIndex={-1}\n >\n {isNew ? \"Save\" : \"Modify\"}\n \n \n \n \n \n \n \n Sort By\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setShowSave(false)}\n className=\"modal2\"\n backdropClassName=\"modal2-backdrop\"\n >\n \n Save CR Query Filter\n \n \n setShowSave(false)}\n isNew={isNew}\n isLoading={isLoading}\n onDelete={() => {\n if (confirm(\"Are you sure you want to delete filter?\")) {\n onDelete().then(() => setShowSave(false));\n }\n }}\n />\n \n \n \n \n \n );\n}\n\nfunction CrFilterForms({ name, id = name, rules, ...props }) {\n const {\n field: { value, onChange },\n fieldState: { error },\n } = useController({ name, rules });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n {\n return onChange(x);\n }}\n isDisabled={isDisabled}\n isInvalid={!!error}\n errors={error?.message}\n {...props}\n />\n );\n}\n\nfunction SaveForms({ onHide, isNew, isLoading, onDelete }) {\n const {\n watch,\n register,\n setValue,\n submitForm,\n formState: { isFieldsDirty, isSubmitting },\n } = useFormContext();\n\n useFormsKeys({\n beforeSubmit: () => {\n onHide();\n setValue(\"formSubmitDirty\", isFieldsDirty);\n setValue(\"formSubmitType\", isNew ? \"new\" : \"save\");\n },\n });\n\n const layoutId = watch(\"layoutId\");\n\n const { tableLayout } = TableLayout.useOne({ id: layoutId });\n return (\n \n \n \n \n Filter\n \n \n \n \n \n \n \n \n \n setValue(\"layoutId\", v)}\n isClearable\n />\n \n \n Layout Details\n \n \n {tableLayout?.columns?.length\n ? tableLayout?.columns?.map((c, index) => (\n \n {_.startCase(c?.column || c)}\n \n ))\n : null}\n \n \n \n }\n >\n \n \n \n \n \n\n \n \n \n {\n onHide();\n setValue(\"formSubmitDirty\", isFieldsDirty);\n setValue(\"formSubmitType\", isNew ? \"new\" : \"save\");\n submitForm();\n }}\n >\n {isNew ? \"Save as\" : \"Save\"}\n \n {onDelete ? (\n \n Delete\n \n ) : null}\n \n \n \n \n \n );\n}\n\nfunction FavoriteToggle({ id }) {\n const { favorite, createOne, deleteOne } = Favorite.useOne({ id });\n const isFavorite = !!favorite;\n return (\n {\n return isFavorite ? deleteOne(id) : createOne(id);\n }}\n disabled={!id}\n >\n {isFavorite ? : }\n {` Favorite `}\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport filterState from \"./state\";\n\nexport const { useEntities: useFilters, useEntity: useFilter } =\n createEntityHooks({\n entity: filterState.entity,\n actions: filterState.actions,\n });\n","import { find, groupBy } from \"lodash\";\nimport React, { useMemo } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { createFilter } from \"react-select\";\n\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport Favorite from \"./favorites\";\nimport { useFilters } from \"./hooks\";\n\nconst filterOption = createFilter({\n ignoreCase: true,\n ignoreAccents: true,\n matchFrom: \"any\",\n stringify: ({ data }) => {\n return `${data.label} ${data.groupDescription}`;\n },\n trim: true,\n});\n\nexport default function CrFilterSelect({\n value,\n placeholder = \"Select CR Filter...\",\n ...props\n}) {\n const { filters = [], loading } = useFilters();\n const { favorites } = Favorite.useAll();\n const user = useSelector((state) => state.auth.user);\n\n const { options, optionsFlat } = useMemo(() => {\n const userFilters = filters.filter(\n (f) => f.public || !f.owner || f.owner === user,\n );\n const { isOwner = [], isPublic } = groupBy(userFilters, (f) =>\n f.owner === user ? \"isOwner\" : \"isPublic\",\n );\n\n const isFavorite = favorites?.length\n ? userFilters.filter((f) =>\n favorites.map((f) => f.crFilterId).includes(f.id),\n )\n : [];\n\n const mapOptions = (a, groupDescription) =>\n a.map((f) => ({\n label: f.id + \": \" + f.description,\n value: f.id,\n groupDescription,\n }));\n\n const options = [\n { label: \"Favorites\", options: mapOptions(isFavorite, \"Favorites\") },\n { label: \"Owner\", options: mapOptions(isOwner, \"Owner\") },\n { label: \"Public\", options: mapOptions(isPublic, \"Public\") },\n ];\n\n return {\n options,\n optionsFlat: options.reduce((flat, g) => g.options.concat(flat), []),\n };\n }, [filters, user, favorites]);\n const valueOption = value ? find(optionsFlat, [\"value\", value]) : null;\n\n return (\n \n );\n}\n","import { entityDescription } from \"../../common/entity\";\nimport CrFilterEditor from \"./CrFilterEditor\";\nimport CrFilterSelect from \"./CrFilterSelect\";\nimport Favorite from \"./favorites\";\nimport { useFilter, useFilters } from \"./hooks\";\nimport filterState from \"./state\";\n\nconst FilterDescription = entityDescription({\n name: \"filter\",\n useEntity: useFilter,\n});\n\nconst Filter = {\n // Backend API\n api: filterState.api,\n // State\n actions: filterState.actions,\n selectors: filterState.entity.selectors,\n // Hooks\n useAll: useFilters,\n useOne: useFilter,\n // Components\n Select: CrFilterSelect,\n Description: FilterDescription,\n Editor: CrFilterEditor,\n // Related\n Favorite: Favorite,\n};\nexport default Filter;\n","import _ from \"lodash\";\nimport { useCallback, useEffect } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\n\nimport Filter from \"./filters\";\nimport crState from \"./state\";\nimport TableLayout from \"./tableLayouts\";\n\nexport default function useCrTableSettings({\n crFilterId,\n crTableLayoutId,\n canSet = false,\n canGet = false,\n}) {\n const crTableSettings = useSelector(\n (state) => state.crs.crs.crTableSettings,\n shallowEqual,\n );\n\n const { filter, layout, loading } = useFilterAndLayout({\n crFilterId,\n crTableLayoutId,\n canGet,\n });\n\n const dispatch = useDispatch();\n\n const setCrTableSettings = useCallback(\n (settings) => dispatch(crState.actions.setCrTableSettings(settings)),\n [dispatch],\n );\n\n const canSetCrFilter = _.isEmpty(crTableSettings?.filter);\n const canSetCrTableLayout = _.isEmpty(crTableSettings?.layout);\n useEffect(() => {\n if (!canSet) return;\n if (filter && canSetCrFilter) {\n setCrTableSettings({ filter });\n }\n if (layout && canSetCrTableLayout) {\n setCrTableSettings({ layout });\n }\n }, [\n canSet,\n canSetCrFilter,\n canSetCrTableLayout,\n filter,\n layout,\n setCrTableSettings,\n ]);\n\n return {\n filter,\n layout,\n crTableSettings,\n loading,\n setCrTableSettings,\n };\n}\n\nfunction useFilterAndLayout({ crFilterId, crTableLayoutId, canGet = false }) {\n const { filter, loading: loadingFilter } = Filter.useOne({\n id: crFilterId,\n canGet,\n });\n\n const _crTableLayoutId = crTableLayoutId || filter?.layoutId;\n\n const { tableLayout: layout, loading: loadingTableLayout } =\n TableLayout.useOne({\n id: _crTableLayoutId,\n });\n\n return {\n filter,\n layout,\n loading: loadingFilter || loadingTableLayout || false,\n };\n}\n","import _ from \"lodash\";\nimport React, { useEffect, useState } from \"react\";\nimport { Col, Form, Row, Tab, Tabs } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport Filter from \"./filters\";\nimport TableLayout from \"./tableLayouts\";\nimport useCrTableSettings from \"./useCrTableSettings\";\n\nconst defaultFilter = {\n public: false,\n filter: {\n folderId: \"CURRENT\",\n },\n sortBy: [],\n};\n\nexport default function CrTableSettingsEditor({\n values: { filter: crFilterInitial, layout: crLayoutInitial } = {},\n onSubmit,\n}) {\n const [crFilter, setCrFilter] = useState({\n ...defaultFilter,\n ...crFilterInitial,\n });\n const [crTableLayout, setCrTableLayout] = useState({\n ...crLayoutInitial,\n });\n const [filterId, setFilterId] = useState(null);\n const [layoutId, setLayoutId] = useState();\n\n const loggedInUser = useSelector((state) => state.auth.user);\n\n const {\n filter: loadedCrFilter,\n layout: loadedCrTableLayout,\n defaultCrTableLayout,\n loading,\n } = useCrTableSettings({\n crTableLayoutId: layoutId,\n crFilterId: filterId,\n canGet: true,\n });\n\n const {\n createOne: createCrFilter,\n updateOne: updateCrFilter,\n deleteOne: deleteCrFilter,\n } = Filter.useOne({\n id: crFilter?.id,\n });\n\n const { createOne: createCrTableLayout, updateOne: updateCrTableLayout } =\n TableLayout.useOne({\n id: crTableLayout?.id,\n });\n\n useEffect(() => {\n if (loadedCrFilter) setCrFilter({ ...loadedCrFilter });\n }, [loadedCrFilter]);\n\n useEffect(() => {\n if (loadedCrTableLayout && !_.isNull(layoutId)) {\n setCrTableLayout({ ...loadedCrTableLayout });\n }\n }, [loadedCrTableLayout, layoutId]);\n\n function handleSearch({ filter, layout }) {\n let adjFilter = { ...filter.filter };\n // Remove null values\n Object.entries(adjFilter).forEach(([key, value]) => {\n if (_.isNull(value)) delete adjFilter[key];\n });\n onSubmit({\n filter: { ...filter, filter: adjFilter },\n layout,\n });\n setFilterId(null);\n setLayoutId(null);\n }\n\n return (\n \n \n \n \n {\n e.preventDefault();\n handleSearch({ filter: crFilter, layout: crTableLayout });\n }}\n >\n {\n setFilterId(value);\n if (!value) setCrFilter(({ id, ...f }) => ({ ...f }));\n }}\n formGroupClassName=\"mb-0\"\n isClearable\n />\n \n \n \n\n \n \n \n handleSearch({\n filter: {\n ...crFilterNew,\n hasChanges: crFilter?.hasChanges || isDirty,\n // Clear ID if changed but not saved\n id:\n crFilter?.id !== crFilterNew?.id\n ? undefined\n : crFilterNew?.id,\n },\n layout: crTableLayout,\n })\n }\n onSubmit={(\n { formSubmitType, formSubmitDirty, ...crFilterNew },\n { isNew },\n ) => {\n setCrFilter({ ...crFilterNew, hasChanges: false });\n return isNew\n ? createCrFilter({ ...crFilterNew, owner: loggedInUser })\n : updateCrFilter(crFilterNew);\n }}\n onDelete={() =>\n deleteCrFilter().then(() =>\n setCrFilter(({ id, ...f }) => ({ ...f })),\n )\n }\n />\n \n \n \n \n \n \n {\n if (!value) {\n setCrTableLayout(({ id, ...l }) => ({ ...l }));\n setLayoutId(null);\n } else {\n setLayoutId(value);\n }\n }}\n isClearable\n />\n \n \n \n \n {\n setCrTableLayout(crTableLayoutNew);\n return isNew\n ? createCrTableLayout(crTableLayoutNew)\n : updateCrTableLayout(crTableLayoutNew);\n }}\n onSearch={(crTableLayoutNew) =>\n handleSearch({\n filter: crFilter,\n layout: crTableLayoutNew,\n })\n }\n />\n \n \n \n \n );\n}\n","import React, { useState } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Col,\n Form,\n Modal,\n Row,\n Table,\n} from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\n\nimport { Forms, FormsField, useFormContext } from \"../common/forms\";\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport crSchema from \"./crSchema\";\n\nexport default function CrTargetDatesTable({\n cr = {},\n isLoading = false,\n update,\n}) {\n const [showEdit, setShowEdit] = useState(false);\n const hideShowEdit = () => setShowEdit(false);\n const {\n targetStartWorkDateTime,\n targetFirstContactDateTime,\n targetDeliveryDate,\n actualStartWorkDateTime,\n actualFirstContactDateTime,\n actualDeliveryDate,\n } = cr;\n\n const setDateTime = (d) => {\n if (!d) return \"\";\n return _datetime.fromStamp(d).toISOString();\n };\n const setDate = (d) => {\n if (!d) return \"\";\n return _date.fromStamp(d).toISOString();\n };\n\n const values = {\n targetStartWorkDateTime: setDateTime(targetStartWorkDateTime),\n targetFirstContactDateTime: setDateTime(targetFirstContactDateTime),\n targetDeliveryDate: setDate(targetDeliveryDate),\n actualStartWorkDateTime: setDateTime(actualStartWorkDateTime),\n actualFirstContactDateTime: setDateTime(actualFirstContactDateTime),\n actualDeliveryDate: setDate(actualDeliveryDate),\n };\n\n function displayDateTime(d, fallback = \"\") {\n if (isLoading) return ;\n const dispDate = _datetime.displayDateTime(d);\n return dispDate || fallback;\n }\n function displayDate(d, fallback = \"\") {\n if (isLoading) return ;\n const dispDate = _datetime.display(d);\n return dispDate || fallback;\n }\n return (\n <>\n \n \n \n \n

    Target Dates

    \n \n \n \n \n {!isLoading ? (\n setShowEdit(true)}\n >\n Edit\n \n ) : null}\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    TargetActual
    \n First Contact\n {displayDateTime(values.targetFirstContactDateTime, \"N/A\")}{displayDateTime(values.actualFirstContactDateTime)}
    \n Start Work\n {displayDateTime(values.targetStartWorkDateTime, \"N/A\")}{displayDateTime(values.actualStartWorkDateTime)}
    \n Delivery\n {displayDate(values.targetDeliveryDate, \"N/A\")}{displayDate(values.actualDeliveryDate)}
    \n \n \n Edit CR Target Dates\n \n \n \n \n \n \n );\n}\n\nfunction TargetDatesForm({ value, onHide, update }) {\n return (\n {\n update(v);\n onHide();\n }}\n schema={{ schema: crSchema }}\n >\n \n \n );\n}\n\nfunction TargetDateForms({ onHide }) {\n const { submitForm } = useFormContext();\n return (\n
    \n \n \n
    First Contact
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    Start Work
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n
    Delivery
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n {\n onHide();\n }}\n >\n Cancel\n \n \n \n \n
    \n );\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport crState from \"./state\";\n\nconst { useEntities: useCrs } = createEntityHooks({\n entity: crState.entity,\n actions: {\n getMany: crState.actions.getMany,\n reset: crState.actions.reset,\n },\n});\n\nexport default useCrs;\n","import CrAlerts from \"./CrAlerts\";\nimport CrEditor from \"./CrEditor\";\nimport CrEstimateEditor from \"./CrEstimateEditor\";\nimport CrLink from \"./CrLink\";\nimport List from \"./CrList\";\nimport CrNew from \"./CrNew\";\nimport crSchema, { crSchemaInitial } from \"./crSchema\";\nimport CrSearch from \"./CrSearch\";\nimport CrSelect from \"./CrSelect\";\nimport CrShareButton from \"./CrShareButton\";\nimport CrStatusEditor from \"./CrStatusEditor\";\nimport Table from \"./CrTable\";\nimport CrTableSettingsEditor from \"./CrTableSettingsEditor\";\nimport CrTargetDatesTable from \"./CrTargetDatesTable\";\nimport DefectOccurrence from \"./defectOccurrences\";\nimport Difficulty from \"./difficulties\";\nimport CrFilter from \"./filters\";\nimport getCrPriorityClassName from \"./getCrPriorityClassName\";\nimport Module from \"./modules\";\nimport NotificationType from \"./notificationTypes\";\nimport QaStatus from \"./qaStatuses\";\nimport crState from \"./state\";\nimport CrStatus from \"./statuses\";\nimport TableLayout from \"./tableLayouts\";\nimport updateCrPrompt from \"./updateCrPrompt\";\nimport useCr from \"./useCr\";\nimport useCrs from \"./useCrs\";\nimport useCrsByFilter from \"./useCrsByFilter\";\nimport useCrTableColumns from \"./useCrTableColumns\";\nimport useCrTableSettings from \"./useCrTableSettings\";\n\nconst Cr = {\n // Backend API\n api: crState.api,\n // State\n actions: crState.actions,\n selectors: crState.entity.selectors,\n // Hooks\n useAll: useCrs,\n useOne: useCr,\n useSearch: useCrsByFilter,\n useTableSettings: useCrTableSettings,\n useTableColumns: useCrTableColumns,\n // Functions,\n initialSchema: crSchemaInitial,\n schema: crSchema,\n getPriorityClassName: getCrPriorityClassName,\n updatePrompt: updateCrPrompt,\n // Components\n New: CrNew,\n Editor: CrEditor,\n Table,\n List,\n Link: CrLink,\n Alerts: CrAlerts,\n StatusEditor: CrStatusEditor,\n Select: CrSelect,\n Search: CrSearch,\n TableSettingsEditor: CrTableSettingsEditor,\n ShareButton: CrShareButton,\n EstimateEditor: CrEstimateEditor,\n TargetDatesTable: CrTargetDatesTable,\n // Related Entity Objects\n Module: Module,\n Status: CrStatus,\n Difficulty: Difficulty,\n DefectOccurrence: DefectOccurrence,\n NotificationType: NotificationType,\n QaStatus: QaStatus,\n TableLayout: TableLayout,\n Filter: CrFilter,\n};\n\nexport default Cr;\n","import { unwrapResult } from \"@reduxjs/toolkit\";\n\nimport toastPrompt from \"../common/toasts/toastPrompt\";\nimport crState from \"./state\";\n\nexport default function updateCrPrompt(\n { id, message, changes, dispatch, test = () => true, getProjectAction },\n toastOptions,\n) {\n dispatch(crState.actions.getOne({ id }))\n .then(unwrapResult)\n .then(({ data: cr }) => {\n if (test(cr))\n toastPrompt(\n {\n message,\n confirm: \"Yes\",\n cancel: \"No\",\n onConfirm: () => {\n dispatch(\n crState.actions.updateOne({\n id,\n data: changes,\n shouldPromptToUpdateProject: false,\n }),\n ).then(() => {\n if (getProjectAction) dispatch(getProjectAction());\n });\n },\n },\n toastOptions,\n );\n });\n}\n","import React, { useCallback } from \"react\";\n\nimport InfiniteList from \"../common/lists/InfiniteList\";\nimport useCrsByFilter from \"./useCrsByFilter\";\n\nexport default function CrList({ filter }) {\n const { crs, loading, lastUpdate, hasMore, getMore, reset } = useCrsByFilter({\n filter,\n });\n\n const onRefreshHandler = useCallback(() => {\n reset();\n }, [reset]);\n\n return (\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo, useRef } from \"react\";\nimport { Badge, Form, OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport useIntervalUpdateComponent from \"../common/hooks/useIntervalUpdateComponent\";\nimport Project from \"../projects\";\nimport useSettings from \"../settings/useSettings\";\nimport Cr from \".\";\nimport Filter from \"./filters\";\n\nexport default function CrNav() {\n const {\n settings: { crFilterId: defaultFilterId },\n } = useSettings();\n\n const { filter } = Filter.useOne({\n id: defaultFilterId,\n });\n\n const isFilterValid = !_.isEmpty(filter?.filter);\n const { crs, loading, lastUpdate } = Cr.useSearch({\n filter: filter?.filter,\n canGet: isFilterValid,\n });\n\n const { types } = Project.Type.useAll();\n\n const [totals, prioritiesTotals, typeTotals] = useMemo(() => {\n const totals = crs.length;\n const prioritiesTotals = crs.filter((cr) =>\n [\"PR\", \"IM\", \"EM\", \"EF\"].includes(cr?.projectPriorityId),\n ).length;\n const typeTotals = types\n .map((t) => ({\n type: t.id,\n description: t.description,\n count: crs\n .filter((cr) => {\n const typeId = cr?.overrideTypeId || cr?.projectTypeId;\n return typeId === t.id;\n })\n .reduce(\n (counts, cr) => {\n counts[0]++;\n if ([\"PR\", \"IM\", \"EM\", \"EF\"].includes(cr?.projectPriorityId))\n counts[1]++;\n return counts;\n },\n [0, 0],\n ),\n }))\n .filter((t) => t.count[0]);\n return [totals, prioritiesTotals, typeTotals];\n }, [crs, types]);\n\n // TODO: THE UPDATES STILL DON'T APPEAR TO BE WORKING. I found some code in\n // useCrsByFilter that seems to check for 15 minute intervals as well, but\n // setting that, the below update interval, and useCrs intervals to\n // 15 seconds still didn't fix it.\n useIntervalUpdateComponent(30000);\n const ref = useRef();\n\n return (\n
    \n \n \n CR Totals - {filter?.description}\n \n \n \n \n \n \n \n \n \n \n \n {typeTotals.map((t) => (\n \n \n \n \n \n ))}\n \n
    CR TypeTotal/Priorities
    {t.description}{t.count[0]}/{t.count[1]}
    \n \n {loading\n ? \"Loading...\"\n : \"Last updated \" + moment(lastUpdate).fromNow()}\n \n
    \n \n }\n >\n \n \n {!isFilterValid ? \"\" : `${totals}/${prioritiesTotals}`}\n \n \n \n \n );\n}\n","import moment from \"moment\";\nimport { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport app from \"../../app/index\";\nimport { _datetime } from \"../../common/functions/dates\";\nimport { currentTimerActions } from \"./state\";\n\nexport default function useCurrentTimer({ canGet = false } = {}) {\n const dispatch = useDispatch();\n const currentTimerX = useSelector((state) => state.times.currentTimer.timer);\n const loading = useSelector((state) => state.times.currentTimer.loading);\n const lastUpdate = useSelector(\n (state) => state.times.currentTimer.lastUpdate,\n );\n const canExpire = app.useCanStateExpire();\n\n const getCurrentTimer = useCallback(() => {\n return dispatch(currentTimerActions.getCurrentTimer());\n }, [dispatch]);\n\n const shouldGet =\n canGet === true &&\n (lastUpdate === null ||\n (moment().diff(lastUpdate, \"seconds\") > 90 && canExpire));\n\n useEffect(() => {\n if (shouldGet) getCurrentTimer();\n }, [shouldGet, getCurrentTimer]);\n\n let currentTimer = {};\n\n if (currentTimerX !== undefined && currentTimerX.startTime !== undefined) {\n currentTimer = { ...currentTimerX };\n currentTimer.startTime = _datetime.fromStamp(currentTimer.startTime);\n\n if (currentTimer.endTime === \"\") {\n currentTimer.minutes = moment(new Date()).diff(\n currentTimer.startTime,\n \"minutes\",\n );\n currentTimer.status = \"running\";\n } else {\n currentTimer.minutes = _datetime\n .fromStamp(currentTimer.endTime)\n .diff(currentTimer.startTime, \"minutes\");\n currentTimer.status = \"stopped\";\n currentTimer.endTime = _datetime.fromStamp(currentTimer.endTime);\n }\n }\n return { currentTimer, loading, lastUpdate, getCurrentTimer };\n}\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function TimeBillingNoteLink({\n timeId,\n value,\n setModifyShow,\n onSelect,\n}) {\n const textVal = (\n <>\n \n {value}\n

    \n {value?.trim().length < 2 ? (\n

    \n \n Billing note is too short\n
    Please fix\n
    \n

    \n ) : null}\n \n );\n\n if (_.isNil(timeId) || timeId === \"\") {\n return <>{textVal};\n } else {\n return (\n {\n e.preventDefault();\n e.stopPropagation();\n if (_.isFunction(onSelect)) onSelect(timeId);\n else setModifyShow(timeId);\n }}\n >\n {textVal}\n \n );\n }\n}\n","import React, { useState } from \"react\";\nimport { Button, Col, Form, Modal } from \"react-bootstrap\";\nimport { BiSearchAlt2 } from \"react-icons/bi\";\n\nimport Cr from \"../crs\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\n\nexport default function TimeCrEditor({\n value,\n disabled,\n onChange,\n defaultCustomerId = null,\n defaultUserId = null,\n validateOnMount = false,\n}) {\n const [showSearch, setShowSearch] = useState(false);\n const [customerId, setCustomerId] = useState(defaultCustomerId);\n const [userId, setUserId] = useState(defaultUserId);\n const { getCr, loading: crLoading } = Cr.useOne.getOne();\n return (\n \n \n \n \n CR\n {\n const nextCustomerId = v?.customers?.[0].id;\n if (nextCustomerId) setCustomerId(nextCustomerId);\n onChange(v);\n }}\n isClearable\n searchButton={false}\n isLoading={crLoading}\n validateOnMount={validateOnMount}\n canFetch\n refreshActivityButton\n customerFilter={customerId}\n />\n \n \n \n \n \n \n Search\n \n \n \n \n \n \n \n \n \n \n setShowSearch(true)}\n disabled={crLoading || disabled}\n >\n \n \n setShowSearch(false)}\n className=\"modal2\"\n backdropClassName=\"modal2-backdrop\"\n >\n \n CR Search\n \n \n \n getCr({ id, fetch: \"auto\" })\n .then(({ data: cr }) => onChange(cr))\n .finally(() => setShowSearch(false))\n }\n defaultCustomerId={customerId}\n defaultOwnerId={userId}\n />\n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport NumberFormat from \"react-number-format\";\n\nimport Table from \"../common/tables/Table\";\n\nfunction toFixed(value, d) {\n const valueFloat = parseFloat(value);\n if (!value || _.isNaN(valueFloat) || valueFloat === 0) return null;\n return parseFloat(value).toFixed(d);\n}\n\nfunction NumberFormatter({ row, value, variant }) {\n return (\n \n variant ? (\n
    {value}
    \n ) : (\n {value}\n )\n }\n />\n );\n}\n\nexport default function TimeEstimateTable({\n estimate,\n actual,\n estimateSubtitle,\n isLoading,\n onEdit,\n}) {\n const hasEstimate = estimate?.minCost || estimate?.maxCost;\n const data = isLoading\n ? []\n : [\n {\n prefix: \"$\",\n header: \"Bill $\",\n estimateMin: toFixed(estimate?.minCost, 2),\n estimateMax: toFixed(estimate?.maxCost, 2),\n actualInvoiced: toFixed(actual?.invoicedBlCost, 2),\n actualTotal: toFixed(\n _.sum([actual?.billableCost, actual?.invoicedBlCost]),\n 2,\n ),\n actualOpen: toFixed(actual?.billableCost, 2),\n actualVariant:\n _.sum([actual?.billableCost, actual?.invoicedBlCost]) >\n estimate?.maxCost\n ? \"warning\"\n : \"success\",\n },\n {\n prefix: \"$\",\n header: \"N/B $\",\n estimateMin: toFixed(0, 2),\n estimateMax: toFixed(0, 2),\n actualInvoiced: toFixed(actual?.invoicedNbCost, 2),\n actualTotal: toFixed(\n _.sum([actual?.nonBillCost, actual?.invoicedNbCost]),\n 2,\n ),\n actualOpen: toFixed(actual?.nonBillCost, 2),\n actualVariant:\n _.sum([actual?.billableCost, actual?.invoicedBlCost]) <\n estimate?.maxCost &&\n _.sum([actual?.nonBillCost, actual?.invoicedNbCost]) > 0\n ? \"warning\"\n : \"danger\",\n },\n {\n header: \"Bill Hours\",\n estimateMin: toFixed(estimate?.minHours, 2),\n estimateMax: toFixed(estimate?.maxHours, 2),\n actualInvoiced: toFixed(actual?.invoicedBlHours, 2),\n actualTotal: toFixed(\n _.sum([actual?.billableHours, actual?.invoicedBlHours]),\n 2,\n ),\n actualOpen: toFixed(actual?.billableHours, 2),\n },\n {\n header: \"N/B Hours\",\n estimateMin: toFixed(0, 2),\n estimateMax: toFixed(0, 2),\n actualInvoiced: toFixed(actual?.invoicedNbHours, 2),\n actualTotal: toFixed(\n _.sum([actual?.nonBillHours, actual?.invoicedNbHours]),\n 2,\n ),\n actualOpen: toFixed(actual?.nonBillHours, 2),\n },\n {\n header: \"Rate\",\n estimateMin: toFixed(estimate?.rate, 2),\n actualTotal: toFixed(\n _.sum([\n actual?.nonBillHours,\n actual?.invoicedNbHours,\n actual?.billableHours,\n actual?.invoicedBlHours,\n ]),\n 2,\n ),\n },\n ];\n\n const columns = useMemo(\n () => [\n {\n id: \"estimate\",\n Header: (\n \n \n \n \n

    Estimate

    \n \n
    \n \n \n {estimateSubtitle}\n \n \n \n \n \n \n {onEdit && !isLoading ? (\n \n ) : null}\n \n \n \n
    \n ),\n columns: [\n {\n id: \"rowHeader\",\n Header: \"\",\n accessor: \"header\",\n disableFilters: true,\n disableSortBy: true,\n format: { alignment: { horizontal: \"right\" } },\n },\n {\n id: \"estimateMin\",\n Header: \"Min\",\n accessor: \"estimateMin\",\n disableFilters: true,\n disableSortBy: true,\n dataType: \"number\",\n Cell: NumberFormatter,\n },\n {\n id: \"estimateMax\",\n Header: \"Max\",\n accessor: \"estimateMax\",\n disableFilters: true,\n disableSortBy: true,\n dataType: \"number\",\n className: \"border-right\",\n Cell: NumberFormatter,\n },\n ],\n },\n {\n id: \"actual\",\n Header:

    Actual

    ,\n className: \"border-left\",\n columns: [\n {\n id: \"actualTotal\",\n Header: \"Total\",\n accessor: \"actualTotal\",\n disableFilters: true,\n disableSortBy: true,\n dataType: \"number\",\n Cell: (props) => (\n \n ),\n },\n {\n id: \"actualOpen\",\n Header: \"Open\",\n accessor: \"actualOpen\",\n disableFilters: true,\n disableSortBy: true,\n dataType: \"number\",\n Cell: NumberFormatter,\n },\n {\n id: \"actualInvoiced\",\n Header: \"Invoiced\",\n accessor: \"actualInvoiced\",\n disableFilters: true,\n disableSortBy: true,\n dataType: \"number\",\n className: \"border-right font-italic\",\n Cell: NumberFormatter,\n },\n ],\n },\n ],\n [estimateSubtitle, isLoading, onEdit, hasEstimate],\n );\n return (\n \n );\n}\n","import React from \"react\";\nimport Select from \"react-select\";\n\nexport default function FieldHours({\n value,\n onChange,\n id,\n disabled = false,\n max = 24,\n}) {\n const _options = [];\n let foundOption = null;\n for (let i = 0.0; i <= max; i = i + 0.25) {\n const option = {\n value: i,\n label: Number(i).toFixed(2).toString(),\n };\n _options.push(option);\n if (i === value) foundOption = option;\n }\n\n return (\n {\n if (option.data.label.startsWith(searchText)) return true;\n return false;\n }}\n id={id}\n name={id}\n value={foundOption}\n options={_options}\n onChange={onChange}\n isMulti={false}\n isDisabled={disabled}\n />\n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\n\nimport { _datetime } from \"./dates\";\n\n// Take an array of timers from a time object\n// Calculate the time in T3 hours as well as formatted versions\nexport function timerCalculation(dateTime, timersArray) {\n let totalSeconds = 0;\n\n if (timersArray !== null && !_.isUndefined(timersArray)) {\n for (let i = 0; i < timersArray.length; i++) {\n const start = _datetime.fromMomentDateStringTime(\n dateTime,\n timersArray[i].startTime,\n );\n const end =\n timersArray[i].endTime === \"\"\n ? moment()\n : _datetime.fromMomentDateStringTime(\n dateTime,\n timersArray[i].endTime,\n );\n totalSeconds = totalSeconds + end.diff(start, \"seconds\");\n }\n }\n\n return formatTotalSeconds(totalSeconds);\n}\n\nexport function formatTotalSeconds(totalSeconds) {\n const h = Math.floor(totalSeconds / (60 * 60));\n const m = Math.floor(totalSeconds / 60) - h * 60;\n const s = totalSeconds - h * 60 * 60 - m * 60;\n\n // T2 will round up to another qurarter hour. If its 36 seconds\n //or more after the break even point.\n // example: 15 minutes 35 seconds => 0.25\n // 15 minutes 36 seconds => 0.50\n const roundedHours =\n s >= 36\n ? Math.ceil(totalSeconds / (15 * 60)) / 4\n : Math.ceil((totalSeconds - s) / (15 * 60)) / 4;\n\n let hhmmss = [h, m > 9 ? m : \"0\" + m, s > 9 ? s : \"0\" + s].join(\":\");\n\n let hhmm = [h, m > 9 ? m : h ? \"0\" + m : m || \"0\"].filter(Boolean).join(\":\");\n\n return {\n roundedHours: roundedHours,\n hhmmss: hhmmss,\n hhmm: hhmm,\n totalSeconds: totalSeconds,\n };\n}\n","import React from \"react\";\nimport { Modal, Spinner } from \"react-bootstrap\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function NoEscapeModal({\n modalTitle = \"\",\n bodyHeader,\n body,\n show,\n spinnerAnimation = \"grow\",\n spinnerVariant = \"primary\",\n}) {\n return (\n \n {modalTitle !== \"\" ? (\n \n \n {modalTitle}\n \n \n ) : (\n <>\n )}\n \n

    {bodyHeader}

    \n
    \n \n
    \n

    {body}

    \n
    \n \n );\n}\n","import React from \"react\";\n\nimport NoEscapeModal from \"./NoEscapeModal\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function DeletingModal({\n modalTitle = \"\",\n bodyHeader = \"Deleting\",\n body,\n show,\n}) {\n return (\n \n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport tinykeys from \"tinykeys\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function GetReasonModal({\n modalTitle,\n onCancel,\n onOk,\n defaultReason = \"\",\n show,\n okText = \"Ok\",\n cancelText = \"Cancel\",\n modalBodyHeader = \"\",\n}) {\n const [reason, setReason] = useState(defaultReason);\n const innerRef = useRef();\n\n useEffect(() => {\n innerRef.current && innerRef.current.focus();\n });\n\n const shortcutOk = () => {\n if (reason.trim() !== \"\" && show) onOk(reason);\n };\n\n useEffect(() => {\n let unsubscribe = tinykeys(window, {\n \"$mod+s\": shortcutOk,\n \"$mod+Enter\": shortcutOk,\n });\n return () => {\n unsubscribe();\n };\n });\n\n return (\n \n \n \n {modalTitle}\n \n \n \n {modalBodyHeader}\n setReason(e.target.value)}\n value={reason}\n maxLength={256}\n autoFocus\n ref={innerRef}\n onFocus={(event) => event.target.select()}\n />\n \n \n onOk(reason)}\n variant=\"primary\"\n disabled={reason.trim() === \"\"}\n >\n {okText}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function OkCancelModal({\n modalTitle,\n onCancel,\n onOk,\n bodyHeader,\n body,\n show,\n okText = \"OK\",\n size = \"sm\",\n}) {\n return (\n \n \n \n {modalTitle}\n \n \n \n

    {bodyHeader}

    \n

    {body}

    \n
    \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NoEscapeModal from \"./NoEscapeModal\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function SavingModal({\n modalTitle = \"\",\n bodyHeader = \"Saving\",\n body,\n show,\n}) {\n return (\n \n );\n}\n","// Takes text input\n// Returns string in hhmmss military time\n// Returns \"INVALID\" if invalid\nexport default function parseTime(timeInput) {\n let t = timeInput.replace(/ /g, \"\");\n t = t.toLowerCase();\n\n //Military pm HH:MM:SS\n if (RegExp(/^(1[2-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/).test(t))\n return t.replace(/:/g, \"\");\n //Military pm HHMMSS\n if (RegExp(/^(1[2-9]|2[0-3])[0-5][0-9][0-5][0-9]$/).test(t)) return t;\n //Military pm HH:MM\n if (RegExp(/^(1[2-9]|2[0-3])[0-5][0-9]$/).test(t))\n return t.replace(/:/g, \"\") + \"00\";\n //Military pm HHMM\n if (RegExp(/^(1[2-9]|2[0-3])[0-5][0-9]$/).test(t)) return t + \"00\";\n //Military pm HH\n if (RegExp(/^(1[2-9]|2[0-3])$/).test(t)) return t + \"0000\";\n //Military am hh:mm:ss\n if (RegExp(/^(0[0-9]|1[0-1]):[0-5][0-9]:[0-5][0-9]$/).test(t))\n return t.replace(/:/g, \"\");\n //Military am hhmmss\n if (RegExp(/^(0[0-9]|1[0-1])[0-5][0-9][0-5][0-9]$/).test(t)) return t;\n //Military am h:mm:ss\n if (RegExp(/^[0-9]:[0-5][0-9]:[0-5][0-9]$/).test(t))\n return \"0\" + t.replace(/:/g, \"\");\n //Military am hmmss\n if (RegExp(/^[0-9][0-5][0-9][0-5][0-9]$/).test(t)) return \"0\" + t;\n //Military am hh:mm\n if (RegExp(/^(0[0-9]|1[0-1]):[0-5][0-9]$/).test(t))\n return t.replace(/:/g, \"\") + \"00\";\n //Military am hhmm\n if (RegExp(/^(0[0-9]|1[0-1])[0-5][0-9]$/).test(t)) return t + \"00\";\n //Military am h:mm\n if (RegExp(/^[0-9]:[0-5][0-9]$/).test(t))\n return \"0\" + t.replace(/:/g, \"\") + \"00\";\n //Military am hmm\n if (RegExp(/^[0-9][0-5][0-9]$/).test(t)) return \"0\" + t + \"00\";\n //Military am hh\n if (RegExp(/^(0[0-9]|1[0-1])$/).test(t)) return t + \"0000\";\n //Military am h\n if (RegExp(/^[0-9]$/).test(t)) return \"0\" + t + \"0000\";\n\n const ampm = RegExp(/(am|a)$/).test(t)\n ? 0\n : RegExp(/(pm|p)$/).test(t)\n ? 12\n : null;\n\n if (ampm !== null) {\n let hhmmss = \"\";\n\n //Regular am hh:mm:ss am\n if (RegExp(/^(0[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = t.replace(/:/g, \"\");\n\n //Military am hhmmss am\n if (RegExp(/^(0[1-9]|1[0-2])[0-5][0-9][0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = t;\n\n //Military am h:mm:ss am\n if (RegExp(/^[1-9]:[0-5][0-9]:[0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = \"0\" + t.replace(/:/g, \"\");\n\n //Military am hmmss am\n if (RegExp(/^[1-9][0-5][0-9][0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = \"0\" + t;\n\n //Military am hh:mm am\n if (RegExp(/^(0[1-9]|1[0-2]):[0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = t.replace(/:/g, \"\") + \"00\";\n\n //Military am hhmm am\n if (RegExp(/^(0[1-9]|1[0-2])[0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = t + \"00\";\n\n //Military am h:mm am\n if (RegExp(/^[1-9]:[0-5][0-9](am|a|p|pm)$/).test(t))\n hhmmss = \"0\" + t.replace(/:/g, \"\") + \"00\";\n\n //Military am hmm am\n if (RegExp(/^[1-9][0-5][0-9](am|a|p|pm)$/).test(t)) hhmmss = \"0\" + t + \"00\";\n\n //Military am hh am\n if (RegExp(/^(0[1-9]|1[0-2])(am|a|p|pm)$/).test(t)) hhmmss = t + \"0000\";\n\n //Military am h am\n if (RegExp(/^[1-9](am|a|p|pm)$/).test(t)) hhmmss = \"0\" + t + \"0000\";\n\n if (hhmmss !== \"\") {\n hhmmss = hhmmss.replace(/am/g, \"\");\n hhmmss = hhmmss.replace(/pm/g, \"\");\n hhmmss = hhmmss.replace(/a/g, \"\");\n hhmmss = hhmmss.replace(/p/g, \"\");\n let hours = Number.parseInt(hhmmss.substring(0, 2));\n if (hours === 12) hours = 0 + ampm;\n else hours = hours + ampm;\n if (hours >= 10) return hours.toString() + hhmmss.substring(2, 6);\n else return \"0\" + hours.toString() + hhmmss.substring(2, 6);\n }\n }\n\n return \"INVALID\";\n}\n","import \"rc-time-picker/assets/index.css\";\n\nimport moment from \"moment\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n Alert,\n Button,\n Col,\n Form,\n Modal,\n Overlay,\n Popover,\n Row,\n Table as BSTable,\n} from \"react-bootstrap\";\nimport { CgArrowsV } from \"react-icons/cg\";\nimport { FaRunning } from \"react-icons/fa\";\nimport { GiStopSign } from \"react-icons/gi\";\nimport { MdCallSplit } from \"react-icons/md\";\nimport { RiCheckboxBlankFill, RiCheckboxFill } from \"react-icons/ri\";\n//import { BsXSquareFill } from \"react-icons/bs\";\nimport { TiDelete } from \"react-icons/ti\";\nimport { toast } from \"react-toastify\";\n\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport parseTime from \"../common/functions/parseTime\";\nimport {\n formatTotalSeconds,\n timerCalculation,\n} from \"../common/functions/timerCalculation\";\nimport Table from \"../common/tables/Table\";\n\nfunction TimeTimersTable({\n show,\n onOk,\n onCancel,\n timers = [],\n date = moment(),\n isLoading = false,\n disabled = false,\n splitMode = false,\n}) {\n const [tableData, setTableData] = useState(timers);\n const [lastGoodData, setLastGoodData] = useState(timers);\n const [showTimeExampleModal, setShowTimeExampleModal] = useState(false);\n const [showSplitModal, setShowSplitModal] = useState(false);\n const [splitIndex, setSplitIndex] = useState(null);\n const [splitTime, setSplitTime] = useState(null);\n const validTimesButton = useRef();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n let newTimers = [];\n for (let i = 0; i < tableData.length; i++) {\n let newTimer = { ...tableData[i] };\n const output = timerCalculation(date, [\n { startTime: newTimer.startTime, endTime: newTimer.endTime },\n ]);\n newTimer.hhmmss = output.hhmmss;\n newTimer.totalSeconds = output.totalSeconds;\n newTimers.push(newTimer);\n }\n\n let splitFrontEnd = \"\";\n let splitBackEnd = \"\";\n let splitError = \"\";\n if (splitTime !== null && splitIndex !== null) {\n const splitFrontEndObj = timerCalculation(date, [\n { startTime: newTimers[splitIndex].startTime, endTime: splitTime },\n ]);\n const splitBackEndObj = timerCalculation(date, [\n { startTime: splitTime, endTime: newTimers[splitIndex].endTime },\n ]);\n splitFrontEnd = splitFrontEndObj.hhmmss;\n splitBackEnd = splitBackEndObj.hhmmss;\n if (splitFrontEndObj.totalSeconds === 0) {\n splitError = \"Split time cannot match the start time\";\n } else if (splitBackEndObj.totalSeconds === 0) {\n splitError = \"Split time cannot match the end time\";\n } else if (splitFrontEndObj.totalSeconds < 0) {\n splitError = \"Split time cannot be before the start time\";\n } else if (splitBackEndObj.totalSeconds < 0) {\n splitError = \"Split time cannot be after the end time\";\n }\n }\n\n let futureTimer = false;\n let overlapping = false;\n let reverseTimer = false;\n let zeroSeconds = false;\n let runningCtr = 0;\n\n const today = _date.stamp() === _date.stamp(date);\n\n for (let a = 0; a < tableData.length; a++) {\n const A = tableData[a];\n if (A.endTime === \"\") runningCtr++;\n\n if (A.endTime !== \"\" && A.startTime > A.endTime) reverseTimer = true;\n\n if (\n moment().diff(\n _datetime.fromMomentDateStringTime(date, A.startTime),\n \"seconds\",\n ) < 0\n )\n futureTimer = true;\n\n if (\n A.endTime !== \"\" &&\n moment().diff(\n _datetime.fromMomentDateStringTime(date, A.endTime),\n \"seconds\",\n ) < 0\n )\n futureTimer = true;\n\n if (A.endTime !== \"\" && A.startTime === A.endTime) zeroSeconds = true;\n for (let b = 0; b < tableData.length; b++) {\n if (overlapping) break;\n\n if (a !== b) {\n const B = tableData[b];\n if (\n A.startTime >= B.startTime &&\n (B.endTime === \"\" || A.startTime < B.endTime)\n ) {\n overlapping = true;\n }\n }\n }\n }\n\n const cancelMe = () => {\n setTableData(lastGoodData);\n onCancel();\n };\n\n const errorMessage =\n runningCtr > 1\n ? \"Cannot have more than one running timers\"\n : futureTimer\n ? \"A timer cannot exist in the future!\"\n : reverseTimer\n ? \"A timer cannot start after it finishes!\"\n : overlapping\n ? \"Timers are overlapping!\"\n : zeroSeconds\n ? \"Timers cannot be 0 seconds long\"\n : \"\";\n\n // When our cell renderer calls updateData, we'll use\n // the rowIndex, columnId and new value to update the\n // original data\n const updateData = useCallback(\n (rowIndex, columnId, value) => {\n setTableData((old) =>\n old.map((row, index) => {\n if (index === rowIndex) {\n return {\n ...old[rowIndex],\n [columnId]: value,\n };\n }\n return row;\n }),\n );\n },\n [setTableData],\n );\n\n const addRow = () => {\n const newTableData = [...tableData];\n const nowStamp = _datetime.timeOnlyStamp();\n newTableData.push({ startTime: nowStamp, endTime: nowStamp });\n setTableData(newTableData);\n };\n\n const deleteRow = useCallback(\n (rowIndex) => {\n setTableData((old) => old.filter((v, i) => i !== rowIndex));\n },\n [setTableData],\n );\n\n const hideSplitModal = () => {\n setShowSplitModal(false);\n setSplitIndex(null);\n setSplitTime(null);\n };\n\n const saveSplit = useCallback(() => {\n const newData = [];\n for (let i = 0; i < tableData.length; i++) {\n if (i !== splitIndex) {\n newData.push({ ...tableData[i] });\n } else {\n newData.push({ ...tableData[i], endTime: splitTime });\n newData.push({ ...tableData[i], startTime: splitTime });\n }\n }\n setTableData(newData);\n setShowSplitModal(false);\n setSplitIndex(null);\n setSplitTime(null);\n }, [splitIndex, splitTime, tableData]);\n\n const stopRow = useCallback(\n (rowIndex) => {\n setTableData((old) =>\n old.map((row, index) => {\n if (index === rowIndex) {\n return {\n ...old[rowIndex],\n endTime: _datetime.timeOnlyStamp(),\n };\n }\n return row;\n }),\n );\n },\n [setTableData],\n );\n\n const makeRunningRow = useCallback(\n (rowIndex) => {\n setTableData((old) =>\n old.map((row, index) => {\n if (index === rowIndex) {\n return {\n ...old[rowIndex],\n endTime: \"\",\n };\n }\n return row;\n }),\n );\n },\n [setTableData],\n );\n\n const changeSelected = useCallback(\n (rowIndex, selected) => {\n setTableData((old) =>\n old.map((row, index) => {\n if (index === rowIndex) {\n return {\n ...old[rowIndex],\n selected: selected,\n };\n }\n return row;\n }),\n );\n },\n [setTableData],\n );\n\n const clickedOk = () => {\n // if (splitMode) {\n // const splitArray = tableData.filter((t) => t.selected === true);\n // const origArray = tableData.filter((t) => t.selected !== true);\n // setTableData(origArray);\n // setLastGoodData(origArray);\n // onOk(origArray, splitArray);\n // } else {\n setLastGoodData(tableData);\n onOk(tableData);\n // }\n };\n\n const layout = useMemo(() => {\n return splitMode\n ? [\"select\", \"startTime\", \"endTime\", \"stopOrRun\", \"split\", \"duration\"]\n : [\"startTime\", \"endTime\", \"stopOrRun\", \"split\", \"delete\", \"duration\"];\n }, [splitMode]);\n\n const columns = useMemo(() => {\n const columnsArray = [];\n if (splitMode) {\n columnsArray.push({\n id: \"select\",\n Header: \"Select\",\n accessor: \"selected\",\n disableFilters: true,\n disableSortBy: true,\n\n Cell: ({ value, row: { index } }) => {\n if (value) {\n return (\n changeSelected(index, false)}\n className=\"p-0 m-0\"\n disabled={disabled}\n >\n \n \n );\n } else {\n return (\n changeSelected(index, true)}\n className=\"p-0 m-0\"\n disabled={disabled}\n >\n \n \n );\n }\n },\n });\n }\n const normalArray = [\n {\n id: \"startTime\",\n Header: \"Start\",\n accessor: \"startTime\",\n disableFilters: true,\n\n Cell: ({ value, row: { index }, column: { id } }) => (\n \n ),\n },\n {\n id: \"endTime\",\n Header: \"End\",\n accessor: \"endTime\",\n disableFilters: true,\n\n Cell: ({ value, row: { index }, column: { id } }) => (\n \n ),\n },\n {\n id: \"stopOrRun\",\n Header: \"\",\n disableFilters: true,\n disableSortBy: true,\n accessor: \"endTime\",\n\n Cell: ({ row: { index }, value }) => {\n if (value === \"\") {\n return (\n stopRow(index)}\n className=\"p-0 m-0\"\n disabled={disabled}\n >\n \n \n );\n } else {\n return (\n {\n makeRunningRow(index);\n }}\n className=\"p-0 m-0\"\n disabled={disabled || !today}\n >\n \n \n );\n }\n },\n },\n {\n id: \"split\",\n Header: \"\",\n disableFilters: true,\n accessor: \"startTime\",\n\n Cell: ({ row: { index } }) => (\n {\n setShowSplitModal(true);\n setSplitIndex(index);\n setSplitTime(newTimers[index].startTime);\n }}\n disabled={disabled}\n >\n \n \n ),\n disableSortBy: true,\n },\n {\n id: \"delete\",\n Header: \"\",\n disableFilters: true,\n accessor: \"startTime\",\n\n Cell: ({ row: { index } }) => (\n deleteRow(index)}\n className=\"p-0 m-0\"\n disabled={disabled}\n >\n \n \n ),\n disableSortBy: true,\n },\n {\n id: \"duration\",\n Header: \"Duration\",\n disableFilters: true,\n accessor: \"totalSeconds\",\n Cell: ({ value }) => formatTotalSeconds(value).hhmmss,\n disableSortBy: true,\n Footer: (info) => {\n // Only calculate total visits if rows change\n const total = React.useMemo(\n () =>\n info.rows.reduce((sum, row) => {\n return parseFloat(row.values.duration) + sum;\n }, 0),\n [info.rows],\n );\n\n return formatTotalSeconds(total).hhmmss;\n },\n },\n ];\n return columnsArray.concat(normalArray);\n }, [\n splitMode,\n disabled,\n changeSelected,\n date,\n updateData,\n stopRow,\n today,\n makeRunningRow,\n newTimers,\n deleteRow,\n ]);\n\n const getRowProps = React.useCallback(\n (row) => {\n return splitMode && row?.original?.selected\n ? {\n className:\n \"table-warning align-items-center justify-content-center align-self-center\",\n }\n : row?.original?.endTime === \"\"\n ? {\n className:\n \"table-success align-items-center justify-content-center align-self-center\",\n }\n : {\n className:\n \"table-secondary align-items-center justify-content-center align-self-center\",\n };\n },\n [splitMode],\n );\n\n return (\n <>\n setShowTimeExampleModal(false)}\n enforceFocus={false}\n show={showTimeExampleModal}\n size=\"sm\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n >\n setShowTimeExampleModal(false)}\n >\n
    Time input examples
    \n \n \n \n \n \n\n \n setShowTimeExampleModal(false)}\n >\n
    Split this timer
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n setSplitTime(newTime);\n }}\n setShowTimeExampleModal={setShowTimeExampleModal}\n validTimesButton={validTimesButton}\n borderColor=\"black\"\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Duration\n \n \n {splitFrontEnd}\n \n \n  \n \n \n {splitBackEnd}\n \n \n  \n \n \n \n {splitError !== \"\" ? (\n \n \n \n {splitError}\n \n \n \n ) : null}\n \n \n
     
    \n
    \n \n {\n saveSplit();\n }}\n variant=\"primary\"\n disabled={splitError !== \"\"}\n >\n Ok\n \n \n Cancel\n \n \n
    \n
    \n \n \n \n \n {splitMode ? \"Select Timers to Split off\" : \"Timers\"}\n \n \n \n \n \n \n \n \n \n \n \n \n {errorMessage !== \"\" ? (\n \n {errorMessage}\n \n ) : (\n <>\n )}\n \n \n \n \n \n \n
    \n setTableData(timers)}\n disabled={disabled}\n >\n Reset\n {\" \"}\n addRow()}\n disabled={disabled}\n >\n Add\n \n
    \n
    \n \n {splitMode ? \"Perform Split\" : \"Ok\"}\n \n \n
    \n
    \n \n \n );\n}\n\nfunction convertValue(date, newValue) {\n return _datetime.displayTimeSeconds(\n _datetime.fromMomentDateStringTime(date, newValue),\n );\n}\n\nfunction RangeCell({\n initialValue,\n date,\n disabled,\n index,\n id,\n updateData,\n setShowTimeExampleModal,\n validTimesButton,\n borderColor = \"white\",\n}) {\n const [value, setValue] = useState(convertValue(date, initialValue));\n const target = useRef(null);\n const [showToolTip, setShowToolTip] = useState(false);\n //If the initialValue is changed external, sync it up with our state\n useEffect(() => {\n setValue(convertValue(date, initialValue));\n }, [date, initialValue]);\n\n const onChange = (x) => {\n setShowToolTip(true);\n setValue(x);\n };\n\n // this timeout was put in place to allow the click on show time examples\n // button to get processed\n const onBlur = (e) => {\n if (\n e.relatedTarget !== null &&\n e.relatedTarget === validTimesButton.current\n ) {\n setShowTimeExampleModal(true);\n }\n onUpdate();\n //setTimeout(onUpdate, 200);\n };\n\n const onUpdate = useCallback(() => {\n setShowToolTip(false);\n const newTimeStamp = parseTime(value);\n if (newTimeStamp !== \"INVALID\") {\n setValue(convertValue(date, newTimeStamp));\n updateData(index, id, newTimeStamp);\n } else {\n // reset to last known good value\n setValue(convertValue(date, initialValue));\n toast.error(\"Invalid time rejected\");\n }\n }, [updateData, index, id, setValue, value, initialValue, date]);\n\n let validTime = parseTime(value);\n const validTimeDisplay =\n validTime === \"INVALID\"\n ? validTime\n : _datetime.displayTimeSeconds(\n _datetime.fromMomentDateStringTime(date, validTime),\n );\n const bgcolor = validTime === \"INVALID\" ? \"red\" : borderColor;\n\n const onKeyDown = (e) => {\n if (e.key === \"Enter\") {\n //e.preventDefault();\n //e.stopPropagation();\n onUpdate();\n }\n };\n return (\n <>\n {initialValue !== \"\" ? (\n <>\n onChange(x.target.value)}\n onBlur={onBlur}\n onSubmit={onUpdate}\n value={value}\n onKeyDown={onKeyDown}\n style={{ borderColor: bgcolor }}\n ref={target}\n />\n \n {validTime === \"INVALID\" ? (\n \n \n Invalid time\n \n \n {\n setShowTimeExampleModal(true);\n setShowToolTip(false);\n }}\n >\n Acceptable time inputs\n \n \n \n ) : (\n \n \n {validTimeDisplay}\n \n \n )}\n \n \n ) : (\n <>Running\n )}\n \n );\n}\n\nfunction ValidTimesBody() {\n return (\n \n \n \n Input\n Output\n \n \n \n \n 1\n 1:00:00 am\n \n \n 10\n 10:00:00 am\n \n \n 101\n \n 1:01:00 am\n \n \n \n 1010\n \n 10:10:00 am\n \n \n \n 10101\n 1:01:01 am\n \n \n 101010\n 10:10:10 am\n \n \n 0\n 12:00:00 am\n \n \n 23:59\n 11:59:00 pm\n \n \n 23:59:02\n 11:59:02 pm\n \n \n 9p\n 9:00:00 pm\n \n \n 9:01a\n 9:01:00 am\n \n \n 9:01:32 pm\n 9:01:32 pm\n \n \n \n );\n}\n\nconst RangeCellMemo = React.memo(RangeCell);\n\nexport default React.memo(TimeTimersTable);\n","const travel = {\n value: \"Travel\",\n label: \"Travel\",\n toString: () => {\n return this.value;\n },\n};\n\nconst onsite = {\n value: \"On-site\",\n label: \"On-site\",\n toString: () => {\n return this.value;\n },\n};\n\nconst internal = {\n value: \"Internal\",\n label: \"Internal Project\",\n toString: () => {\n return this.value;\n },\n};\n\nconst customer = {\n value: \"Customer\",\n label: \"Customer, CR tbd\",\n toString: () => {\n return this.value;\n },\n};\n\nconst cr = {\n value: \"CR\",\n label: \"CR\",\n toString: () => {\n return this.value;\n },\n};\nconst timeTypes = { cr, customer, internal, onsite, travel };\nexport default timeTypes;\n","import _ from \"lodash\";\nimport React from \"react\";\nimport Select from \"react-select\";\n\nimport timeTypes from \"./timeTypes\";\n\nexport default function TimeTypesSelect({\n defaultValue,\n onChange,\n id,\n isClearable = true,\n isMulti = false,\n disabled = false,\n}) {\n const _options = [];\n _options.push({\n label: timeTypes.internal.label,\n value: timeTypes.internal.value,\n });\n _options.push({\n label: timeTypes.cr.label,\n value: timeTypes.cr.value,\n });\n _options.push({\n label: timeTypes.onsite.label,\n value: timeTypes.onsite.value,\n });\n _options.push({\n label: timeTypes.travel.label,\n value: timeTypes.travel.value,\n });\n _options.push({\n label: timeTypes.customer.label,\n value: timeTypes.customer.value,\n });\n\n let value;\n if (defaultValue)\n if (isMulti) {\n value = _options.filter((o) => defaultValue.includes(o.value));\n } else {\n value = _.find(_options, [\"value\", defaultValue]);\n }\n\n return (\n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Accordion,\n Button,\n Card,\n Col,\n Form,\n ListGroup,\n Modal,\n Row,\n} from \"react-bootstrap\";\nimport { FormProvider, useForm, useFormContext } from \"react-hook-form\";\nimport { BiEdit } from \"react-icons/bi\";\nimport { MdCallSplit } from \"react-icons/md\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { toast } from \"react-toastify\";\nimport tinykeys from \"tinykeys\";\n\nimport FieldDate from \"../common/fields/FieldDate\";\nimport FieldHours from \"../common/fields/FieldHours\";\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport { timerCalculation } from \"../common/functions/timerCalculation\";\nimport CenteredModal from \"../common/modals/CenteredModal\";\nimport DeletingModal from \"../common/modals/DeletingModal\";\nimport GetReasonModal from \"../common/modals/GetReasonModal\";\nimport OkCancelModal from \"../common/modals/OkCancelModal\";\nimport SavingModal from \"../common/modals/SavingModal\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\nimport TimeBillableOverrideReason from \"./billableOverrideReasons\";\nimport TimeHoldReason from \"./holdReasons\";\nimport TimeInternalProject from \"./internalProjects\";\nimport { timeActions } from \"./state\";\nimport TimeCrEditor from \"./TimeCrEditor\";\nimport TimeTimersTable from \"./TimeTimersTable\";\nimport timeTypes from \"./timeTypes\";\nimport TimeTypesSelect from \"./timeTypeSelector\";\n\nconst statusIncomplete = \"statusIncomplete\";\nconst statusNull = \"statusNull\";\nconst statusDone = \"statusDone\";\n\n// Time Form Mode = \"new\", \"edit\"\n// onSaveSuccessfull = callback when save is successfully submitted\n//\nexport default function TimeForm({\n mode,\n onSaveSuccess,\n onCancel,\n onDelete,\n time,\n openTimers = false,\n startTimer = false,\n stopTimer = false,\n onSplit = () => {},\n}) {\n if (time.showOnInvoice === null) time.showOnInvoice = true;\n\n // For some reason eslint-react can't handle so many temp variables\n // and or computations. Putting all the logic into this program\n // avoided the false hits\n const ds = useDefaultState({ time, mode, startTimer });\n\n const timeIsInvoiced =\n time.invoiceNumber !== null && time.invoiceNumber !== \"\";\n\n const methods = useForm({\n defaultValues: {\n original: ds,\n splitWasPerformed: false,\n splitIsVisible: false,\n originalIsVisible: false,\n defaultOriginalTimers: JSON.stringify([]),\n defaultSplitTimers: JSON.stringify([]),\n split: ds,\n },\n });\n const splitWasPerformed = methods.watch(\"splitWasPerformed\");\n const splitIsVisible = methods.watch(\"splitIsVisible\");\n const originalIsVisible = methods.watch(\"originalIsVisible\");\n const defaultOriginalTimers = methods.watch(\"defaultOriginalTimers\");\n const defaultSplitTimers = methods.watch(\"defaultSplitTimers\");\n const splitId = methods.watch(\"split.id\");\n\n return (\n <>\n \n
    {})}>\n {splitWasPerformed ? (\n \n \n {originalIsVisible ? (\n <>\n \n \n Original - Split From Record\n \n \n \n \n \n \n ) : null}\n {splitIsVisible ? (\n <>\n \n \n {\"New - Split To Record: \" + splitId}\n \n \n \n \n \n \n ) : null}\n \n \n ) : (\n \n )}\n \n
    \n \n );\n}\n\n// The meat of the form can be duplicated between\n// the original record and the new split out record.\n// prefix tells us what version we are dealing with.\nfunction TimeFormSingle({\n defaultTimers,\n timeIsInvoiced,\n stopTimer,\n openTimers = false,\n mode,\n originalCustomerId,\n splitRecord,\n onSaveSuccess,\n onDelete,\n onCancel,\n onSplit,\n}) {\n const dispatch = useDispatch();\n\n const { setValue } = useFormContext();\n\n const f = useGetAllFormVals({\n mode,\n timeIsInvoiced,\n stopTimer,\n splitRecord,\n });\n\n const [showTimers, setShowTimers] = useState(openTimers);\n const [hasSetAllInfo, setHasSetAllInfo] = useState(false);\n const [workLogHelpModalShow, setWorkLogHelpModalShow] = useState(false);\n const [showSplitModal, setShowSplitModal] = useState(false);\n const [splittingTimers, setSplittingTimers] = useState(false);\n const [, setSplitOrigHours] = useState(0.0);\n const [splitNewHours, setSplitNewHours] = useState(0.0);\n const [splitNewTimers, setSplitNewTimers] = useState([]);\n\n // Saving related\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n const [showReasonModal, setShowReasonModal] = useState(false);\n const [showReasonTitle, setShowReasonTitle] = useState(\"\");\n const [showReasonAction, setShowReasonAction] = useState(\"\");\n const [modifyReason, setModifyReason] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [savingSplit, setSavingSplit] = useState(false);\n const [deleting, setDeleting] = useState(false);\n const [askForTravelBac, setAskForTravelBac] = useState(false);\n const [bacTravelInformation, setBacTravelInformation] = useState({});\n const [travelBacReason, setTravelBacReason] = useState(\"\");\n const loggedInUser = useSelector((state) => state.auth.user);\n\n const wasMyTimeRecord = loggedInUser.trim() === f.originalUserId.trim();\n const isMyTimeRecord = loggedInUser.trim() === f.userId.trim();\n\n useEffect(() => {\n let unsubscribe = tinykeys(window, {\n \"$mod+s\": shortcutSave,\n \"$mod+Enter\": shortcutSave,\n });\n return () => {\n unsubscribe();\n };\n });\n\n let deleteDisabled = true;\n if (!timeIsInvoiced) {\n deleteDisabled = false;\n }\n\n //-----------------Save button ----------------------//\n let saveDisabled = true;\n if (!timeIsInvoiced) {\n saveDisabled = f.sectionStatuses.saveDisabled;\n }\n //TODO check other section\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (saving === true) {\n const payload1 = {\n ...f.createTimePayload,\n travelBacReason: travelBacReason,\n overrideReason: modifyReason,\n };\n // hours: splitOrigHours,\n //timers: splitOrigTimers,\n const payload = savingSplit\n ? {\n ...payload1,\n split: true,\n splitHours: splitNewHours,\n splitTimers: splitNewTimers,\n }\n : { ...payload1, split: false };\n if (savingSplit) {\n if (\n payload.timers.length === payload.splitTimers.length &&\n payload.hours === payload.splitHours\n ) {\n toast.error(\"Split from time record would be left with no time\");\n setSaving(false);\n setSavingSplit(false);\n return;\n } else if (\n payload.splitTimers.length === 0 &&\n payload.splitHours === 0\n ) {\n toast.error(\"No time was selected to be split out\");\n setSaving(false);\n setSavingSplit(false);\n return;\n }\n }\n\n let promiseResult =\n mode === \"new\"\n ? dispatch(timeActions.createTime(payload))\n : dispatch(timeActions.updateTime(payload));\n promiseResult\n .then(unwrapResult)\n .then((result) => {\n if (f.splitWasPerformed) {\n if (\n (splitRecord === \"original\" && !f.splitIsVisible) ||\n (splitRecord === \"split\" && !f.originalIsVisible)\n ) {\n onSaveSuccess();\n } else {\n setValue(splitRecord + \"IsVisible\", false);\n }\n } else if (savingSplit) {\n const ov = getDefaultState({ time: result, mode: mode });\n const nv = getDefaultState({\n time: result.splitTimeRecord,\n mode: mode,\n });\n\n setValue(\"splitIsVisible\", true);\n setValue(\"originalIsVisible\", true);\n setValue(\"defaultOriginalTimers\", JSON.stringify(result.timers));\n setValue(\n \"defaultSplitTimers\",\n JSON.stringify(result.splitTimeRecord.timers),\n );\n //setValue(\"original\", ov);\n //setValue(\"split\", nv);\n for (var propt in ov) {\n //if (propt === \"cr\") continue;\n setValue(\"original.\" + propt, ov[propt]);\n }\n for (var propt2 in nv) {\n //if (propt2 === \"cr\") continue;\n setValue(\"split.\" + propt2, nv[propt2]);\n }\n // this must be last\n setValue(\"splitWasPerformed\", true);\n onSplit();\n } else {\n onSaveSuccess();\n }\n setSaving(false);\n setSavingSplit(false);\n })\n .catch((result) => {\n console.log(result);\n setSaving(false);\n setSavingSplit(false);\n });\n }\n //TODO review dependencies\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, saving]);\n //do not include f.createTimePayload to the above line\n //multiple saves were being sent off.\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (deleting === true) {\n dispatch(\n timeActions.deleteTime({ id: f.id, overrideReason: modifyReason }),\n )\n .then(unwrapResult)\n .then(() => {\n setDeleting(false);\n if (\n (splitRecord === \"original\" && !f.splitIsVisible) ||\n (splitRecord === \"split\" && !f.originalIsVisible)\n ) {\n onDelete({ id: f.id });\n } else {\n setValue(splitRecord + \"IsVisible\", false);\n }\n })\n // eslint-disable-next-line unused-imports/no-unused-vars\n .catch((result) => {\n setDeleting(false);\n });\n }\n //TODO review dependencies\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, deleting]);\n\n const clickCancel = () => {\n if (f.splitWasPerformed) {\n if (\n (splitRecord === \"original\" && !f.splitIsVisible) ||\n (splitRecord === \"split\" && !f.originalIsVisible)\n ) {\n onSaveSuccess();\n } else {\n setValue(splitRecord + \"IsVisible\", false);\n }\n } else {\n onCancel();\n }\n };\n\n const clickSave = useCallback(() => {\n if (saveDisabled) {\n toast.error(\"Cannot save, please fully fill out the form\");\n return;\n }\n\n if ((!wasMyTimeRecord && mode !== \"new\") || !isMyTimeRecord) {\n setShowReasonAction(\"save\");\n if (mode === \"new\") {\n setShowReasonTitle(\n \"You are adding time for another user.\\nPlease enter your reason.\",\n );\n } else {\n setShowReasonTitle(\n \"You are changing another user's time.\\nPlease enter your reason.\",\n );\n }\n setShowReasonModal(true);\n } else {\n if (f.isTravelType && f.travelInfo.needBacApproval) {\n setAskForTravelBac(true);\n let temp = { ...f.travelInfo };\n temp.totalHours = f.totalHours;\n setBacTravelInformation(temp);\n } else {\n setSaving(true);\n }\n }\n }, [\n f.isTravelType,\n f.totalHours,\n f.travelInfo,\n isMyTimeRecord,\n mode,\n saveDisabled,\n wasMyTimeRecord,\n ]);\n\n function shortcutSave(event) {\n event.preventDefault();\n // Cannot use ctrl s to save when you have a modal up.\n if (\n !showDeleteModal &&\n !showSplitModal &&\n !showTimers &&\n !showReasonModal &&\n !askForTravelBac\n )\n clickSave();\n }\n\n //-----------------Changing form fields ----------------------//\n // Global section\n const changeDate = (newDate) => {\n setValue(splitRecord + \".datetime\", _datetime.stamp(newDate));\n };\n const changeHours = (e) => {\n setValue(splitRecord + \".hours\", e?.value);\n };\n const changeUserId = (v) => {\n setValue(splitRecord + \".userId\", v);\n };\n const changeInternalComments = (e) => {\n setValue(splitRecord + \".internalComments\", e.target.value);\n };\n const changeTimeType = (e) => {\n if (e?.value === f.timeType) return;\n\n if (e?.value === timeTypes.onsite.value) {\n setValue(splitRecord + \".billingNote\", \"On-site\");\n } else if (e?.value === timeTypes.travel.value) {\n setValue(splitRecord + \".billingNote\", \"\");\n setValue(splitRecord + \".locationId\", \"\");\n } else {\n if (f.isTravelType || f.isOnsiteType) {\n if (_.isUndefined(f.lastManualbillingNote)) {\n setValue(splitRecord + \".billingNote\", \"\");\n } else {\n setValue(splitRecord + \".billingNote\", f.lastManualbillingNote);\n }\n }\n }\n setValue(splitRecord + \".timeType\", e?.value);\n };\n\n // Interal project section\n const changeInternalProject = (v) => {\n setValue(splitRecord + \".internalProjectId\", v);\n };\n\n // Travel: Setting the location you were at or traveled to/from\n const changeLocationId = (v) => {\n setValue(splitRecord + \".locationId\", v?.value);\n\n if (f.isTravelType) {\n const desc = v?.value === \"other\" ? \"XXXXXX\" : v?.label;\n\n if (f.travelDirection === \"F\") {\n setValue(splitRecord + \".billingNote\", \"Travel from \" + desc);\n } else if (f.travelDirection === \"T\") {\n setValue(splitRecord + \".billingNote\", \"Travel to \" + desc);\n }\n } else setValue(splitRecord + \".billingNote\", \"On-site\");\n };\n\n // Travel to/from\n const changeTravelDirection = (v) => {\n setValue(splitRecord + \".travelDirection\", v);\n if (!_.isEmpty(f.billingNote)) {\n if (v === \"F\") {\n setValue(\n splitRecord + \".billingNote\",\n f.billingNote.replace(\"to\", \"from\"),\n );\n } else if (v === \"T\") {\n setValue(\n splitRecord + \".billingNote\",\n f.billingNote.replace(\"from\", \"to\"),\n );\n }\n }\n };\n\n const changeOverrideBillableFlag = useCallback(\n (v) => {\n if (f.showOnInvoice === false && v === true)\n setValue(splitRecord + \".showOnInvoice\", true);\n\n setValue(splitRecord + \".overrideBillableFlag\", v);\n },\n [splitRecord, setValue, f.showOnInvoice],\n );\n\n const changeBillableOverrideReasonId = (value) => {\n if (f.billableOverrideReasonId === value) return;\n\n const oldBors = f.billableOverrideReasonId;\n\n setValue(splitRecord + \".billableOverrideReasonId\", value);\n\n if (f.borsState.entities[value]?.billFlagDefault === \"N\") {\n changeOverrideBillableFlag(false);\n if (value === \"HELP\" || value === \"FIXN\" || value === \"QA\")\n setValue(splitRecord + \".showOnInvoice\", false);\n else if (oldBors === \"HELP\" || oldBors === \"FIXN\" || oldBors === \"QA\")\n setValue(splitRecord + \".showOnInvoice\", true);\n } else {\n changeOverrideBillableFlag(true);\n if (f.showOnInvoice === false)\n setValue(splitRecord + \".showOnInvoice\", true);\n }\n };\n\n const handleCrChange = (crNext) => {\n if (crNext.setallHold || crNext.setallBillability) {\n toast.warning(\"'Set All Time' settings found and applied\");\n setHasSetAllInfo(true);\n\n setValue(\n splitRecord + \".internalComments\",\n crNext.setallInternalComments,\n );\n\n if (crNext.setallHold) {\n setValue(splitRecord + \".holdDate\", crNext.setallHoldDate);\n setValue(splitRecord + \".holdReasonId\", crNext.setallHoldReasonId);\n }\n if (crNext.setallBillability) {\n setValue(\n splitRecord + \".billableOverrideReasonId\",\n crNext.setallBillableOverrideReasonId,\n );\n setValue(\n splitRecord + \".overrideBillableFlag\",\n crNext.setallOverrideBillableFlag,\n );\n\n if (crNext.setallInvoiceFlag) {\n setValue(splitRecord + \".showOnInvoice\", crNext.setallShowOnInvoice);\n } else {\n changeOverrideBillableFlag(false);\n if (\n crNext.setallBillableOverrideReasonId === \"HELP\" ||\n crNext.setallBillableOverrideReasonId === \"FIXN\" ||\n crNext.setallBillableOverrideReasonId === \"QA\"\n ) {\n setValue(splitRecord + \".showOnInvoice\", false);\n }\n }\n }\n } else {\n if (hasSetAllInfo) {\n setValue(splitRecord + \".billableOverrideReasonId\", null);\n setValue(splitRecord + \".showOnInvoice\", true);\n setValue(splitRecord + \".holdReasonId\", null);\n setValue(splitRecord + \".holdDate\", null);\n setValue(splitRecord + \".internalComments\", \"\");\n toast.warning(\"'Set All Time' settings unapplied\");\n }\n setHasSetAllInfo(false);\n if (\n f.billableOverrideReasonId === null ||\n _.isEmpty(f.billableOverrideReasonId)\n )\n setValue(splitRecord + \".showOnInvoice\", true);\n }\n setValue(splitRecord + \".locationId\", \"\");\n setValue(splitRecord + \".crId\", crNext.id);\n setValue(splitRecord + \".customerId\", crNext?.customers?.[0]?.id);\n setValue(splitRecord + \".cr\", { ...crNext });\n setValue(splitRecord + \".crIsValid\", true);\n };\n\n const changeHoldReasonId = (value) => {\n setValue(splitRecord + \".holdReasonId\", value);\n };\n const changeHoldDate = (v) => {\n setValue(splitRecord + \".holdDate\", _date.stamp(v.value));\n };\n\n // Work log section\n const changedWorklog = (chosenArray) => {\n let newContacted = false;\n let newPerformed = false;\n let newNeither = false;\n for (let i = 0; i < chosenArray.length; i++) {\n if (chosenArray[i] === 1) newContacted = true;\n if (chosenArray[i] === 2) newPerformed = true;\n if (chosenArray[i] === 3) newNeither = true;\n }\n if (f.isNeither === false && newNeither === true) {\n newContacted = false;\n newPerformed = false;\n } else if (f.isNeither && (newContacted || newPerformed)) {\n newNeither = false;\n }\n\n setValue(splitRecord + \".isCustomerContacted\", newContacted);\n setValue(splitRecord + \".isWorkPerformed\", newPerformed);\n setValue(splitRecord + \".isNeither\", newNeither);\n };\n\n const timersTableOnCancel = useCallback(\n () => setShowTimers(false),\n [setShowTimers],\n );\n\n const finalizeSplit = useCallback(() => {\n setSplittingTimers(false);\n setSavingSplit(true);\n clickSave();\n }, [clickSave]);\n\n const timerstTableOnOk = useCallback(\n (timers) => {\n setShowTimers(false);\n if (splittingTimers) {\n const splitTimers = timers\n .filter((t) => t.selected === true)\n .map((t) => t.startTime);\n\n setSplitNewTimers(splitTimers);\n setSplittingTimers(false);\n finalizeSplit();\n }\n setValue(splitRecord + \".timers\", JSON.stringify(timers));\n },\n [splittingTimers, setValue, splitRecord, finalizeSplit],\n );\n\n //-----------------Work log JSX -----------------//\n const workLogSection = (\n setWorkLogHelpModalShow(true)}\n workLogSectionStatus={f.sectionStatuses.workLog}\n showOnInvoice={f.showOnInvoice || _.isEmpty(f.borsRecord)}\n isCustomerType={f.isCustomerType}\n timeIsInvoiced={timeIsInvoiced}\n />\n );\n\n const splitButtonShown =\n !f.splitWasPerformed && !timeIsInvoiced && mode !== \"new\";\n\n const cancelSaveOrDeleteOrSplit = () => {\n setShowReasonModal(false);\n setSavingSplit(false);\n setShowDeleteModal(false);\n };\n\n return (\n <>\n {/* -------------- Modal Section ----------------*/}\n \n \n {\n setModifyReason(reason);\n setShowReasonModal(false);\n if (showReasonAction === \"save\") {\n setSaving(true);\n } else {\n setDeleting(true);\n }\n }}\n />\n \n \n \n {\"You entered \" + bacTravelInformation.totalHours + \" hours.\"}\n \n \n \n \n {\"Customer only allows for a max of \" +\n (bacTravelInformation.nonBillableHours +\n bacTravelInformation.billableHours) +\n \" BAC applicable hours.\"}\n \n \n \n \n \n \n \n {\n \"If you would like to ask for approval of additional BAC hours then please explain your reason below.\"\n }\n \n \n \n }\n okText={\"Ask for approval\"}\n cancelText={\"Don't ask\"}\n onCancel={() => {\n setAskForTravelBac(false);\n setSaving(true);\n }}\n defaultReason={\"\"}\n onOk={(reason) => {\n setTravelBacReason(reason);\n setAskForTravelBac(false);\n setSaving(true);\n }}\n />\n\n {\n setShowDeleteModal(false);\n setDeleting(true);\n }}\n modalTitle=\"Confirm deletion\"\n body=\"Are you sure you want to delete this time record?\"\n />\n setWorkLogHelpModalShow(false)}\n modalTitle=\"Work log help\"\n body={}\n />\n\n {showSplitModal ? (\n 0 ? \"Continue\" : \"Perform Split\"}\n show={showSplitModal}\n hours={f.hours}\n onOk={(hours, split) => {\n setSplitNewHours(split);\n setSplitOrigHours(hours);\n setShowSplitModal(false);\n if (f.timers.length > 0) {\n setShowTimers(true);\n setSplittingTimers(true);\n } else {\n setSplitNewTimers([]);\n finalizeSplit();\n }\n }}\n onCancel={() => setShowSplitModal(false)}\n />\n ) : null}\n\n \n \n \n {timeIsInvoiced ? (\n \n \n \n {\"Time record is now closed. \"}\n {f.invoiceNumber !== \"LOCKED\"\n ? \"It was built onto invoice #\" + f.invoiceNumber + \".\"\n : null}\n \n \n \n ) : (\n <>\n )}\n {/* -------------Normal Time entry Section ----------------*/}\n \n \n \n User\n \n \n \n \n \n \n \n \n Hours\n \n \n \n Timer Hours\n {\n mode !== \"new\"\n ? setShowTimers(true)\n : setValue(splitRecord + \".startTimer\", true);\n }}\n >\n {f.startTimer ? (\n \"Starting...\"\n ) : f.timers.length === 0 ? (\n \"None\"\n ) : (\n
    \n \n {f.timerHoursFormatted}\n \n {\"rounds to\"}\n \n {\" \"}\n {Number(f.timerHours).toFixed(2) +\n (f.runningTimer ? \"*\" : \"\")}\n \n
    \n )}\n \n \n \n Total Hours\n \n \n {splitButtonShown ? (\n \n Split\n {\n if (f.sectionStatuses.saveDisabled) {\n toast.error(\n \"Cannot split because the time entry is incomplete\",\n );\n } else if (f.isTravelType) {\n toast.error(\"Cannot split a travel time record\");\n } else if (f.hours !== 0.0) setShowSplitModal(true);\n else if (f.timers.length > 0) {\n setSplittingTimers(true);\n setShowTimers(true);\n } else\n toast.error(\"Cannot split when there is zero time\");\n }}\n >\n \n \n \n ) : null}\n
    \n \n \n Billing Note\n {\n setValue(splitRecord + \".billingNote\", e.target.value);\n setValue(\n splitRecord + \".lastManualbillingNote\",\n e.target.value,\n );\n }}\n value={f.billingNote}\n readOnly={timeIsInvoiced || f.billingNoteDisabled}\n maxLength={500}\n />\n \n \n \n\n {/* ------------ Time Type Section ----------------*/}\n \n \n \n Time Type\n \n \n \n {f.timeType ? null : (\n \n \n Please choose a time Type\n \n \n )}\n \n\n {/* ------------ Internal type Section ----------------*/}\n {f.isInternalType ? (\n \n \n \n Internal Project\n \n \n \n \n \n ) : f.typeRequiresCr ? (\n <>\n {/* ------------ CR # Section ----------------*/}\n {f.crIsValid ? (\n <>\n \n {\n setValue(splitRecord + \".crIsValid\", false);\n setValue(splitRecord + \".crId\", null);\n }}\n originalCustomerId={originalCustomerId}\n />\n \n {f.isOnsiteType || f.isTravelType ? (\n \n \n {f.isTravelType ? (\n \n \n {\"Travel \"}\n \n changeTravelDirection(\"T\")}\n >\n To\n \n changeTravelDirection(\"F\")}\n >\n From\n \n \n ) : null}\n\n \n {/* ------------ On-Site Location ----------------*/}\n {f.isOnsiteType ? (\n \n {\"Customer Location\"}\n \n ) : null}\n \n \n \n \n ) : null}\n \n ) : (\n \n {\n if (cr) handleCrChange(cr);\n else {\n setValue(splitRecord + \".crIsValid\", false);\n setValue(splitRecord + \".crId\", null);\n setValue(splitRecord + \".cr\", null);\n }\n }}\n disabled={timeIsInvoiced}\n defaultCustomerId={f.customerId}\n validateOnMount={f.crId && !f.crIsValid}\n />\n \n )}\n {/* ------------ CR Section ----------------*/}\n\n {f.crIsValid ? (\n <>\n {f.isOnsiteType === false &&\n f.isTravelType === false &&\n !f.cr?.isInternalCr\n ? workLogSection\n : null}\n {/* -------------- Billable Override Section --------------*/}\n \n {f.billMessage}\n {f.billMessage2 !== null ? (\n {f.billMessage2}\n ) : (\n <>\n )}\n \n \n \n \n \n Billable override reason\n \n \n \n \n {f.borsRecord != null ? (\n <>\n \n \n \n Override Billability\n \n \n \n \n Show on Invoice\n \n \n \n \n \n \n changeOverrideBillableFlag(true)\n }\n >\n Bill\n \n \n changeOverrideBillableFlag(false)\n }\n >\n {\"Don't\"}\n \n \n \n \n setValue(\n splitRecord + \".showOnInvoice\",\n true,\n )\n }\n >\n Show\n \n \n setValue(\n splitRecord + \".showOnInvoice\",\n false,\n )\n }\n >\n Hide\n \n \n \n \n ) : null}\n \n \n \n {/* -------------- Hold Section --------------*/}\n {f.crIsValid && f.cr.isInternalCr ? null : (\n \n \n \n Hold Reason\n \n \n \n {f.holdReasonRecord != null ? (\n <>\n \n \n \n Hold until\n \n \n \n \n \n \n \n \n \n ) : null}\n \n \n \n )}\n {/* -------------- Internal Comments Section --------------*/}\n \n \n \n \n Internal Comments\n \n \n \n \n \n \n ) : null}\n \n ) : f.isCustomerType ? (\n <>\n {/* -------------- Customer Section --------------*/}\n \n \n \n Customer\n \n \n \n \n setValue(splitRecord + \".customerId\", v)}\n />\n \n \n {\n setValue(splitRecord + \".timeType\", timeTypes.cr.value);\n setValue(splitRecord + \".crIsValid\", false);\n }}\n >\n Assign CR\n \n \n \n \n {f.customerId !== null &&\n f.customerId !== \"\" &&\n !f.customerValue.customer?.isInternal\n ? workLogSection\n : null}\n \n ) : null}\n {!timeIsInvoiced ? (\n \n \n \n clickSave()}\n >\n Save\n \n \n \n clickCancel()}\n >\n Cancel\n \n \n {mode !== \"new\" ? (\n \n {\n if (wasMyTimeRecord) {\n setShowDeleteModal(true);\n } else {\n setShowReasonModal(true);\n setShowReasonTitle(\n \"You are deleting another user's time. \\n Please enter your reason.\",\n );\n setShowReasonAction(\"delete\");\n }\n }}\n >\n Delete\n \n \n ) : (\n <>\n )}\n \n \n ) : null}\n
    \n
    \n \n );\n}\n\nfunction WorkLogToggle({\n onChange,\n clickedHelp,\n value,\n workLogSectionStatus,\n showOnInvoice,\n isCustomerType,\n timeIsInvoiced,\n}) {\n const clicked = (v) => {\n let newArray = [];\n let found = false;\n for (let i = 0; i < value.length; i++) {\n if (value[i] === v) found = true;\n else newArray.push(value[i]);\n }\n if (!found) newArray.push(v);\n onChange(newArray);\n };\n\n let performed = false;\n let contacted = false;\n let neither = false;\n\n for (let i = 0; i < value.length; i++) {\n if (value[i] === 1) contacted = true;\n else if (value[i] === 2) performed = true;\n else if (value[i] === 3) neither = true;\n }\n\n return (\n \n {showOnInvoice === true || isCustomerType ? (\n \n \n \n \n \n clicked(1)}\n variant={getWorkLogVariant(contacted)}\n disabled={timeIsInvoiced}\n >\n Customer was contacted\n \n clicked(2)}\n variant={getWorkLogVariant(performed)}\n disabled={timeIsInvoiced}\n >\n Work was performed\n \n clicked(3)}\n variant={getWorkLogVariant(neither)}\n disabled={timeIsInvoiced}\n >\n Neither\n \n \n \n {\n e.preventDefault();\n clickedHelp();\n }}\n >\n Help!\n \n \n \n ) : (\n \n \n \n {\n \" Work log is not applicable when time is hidden from the invoice\"\n }\n \n \n )}\n \n );\n}\n\nfunction getWorkLogVariant(boolean) {\n if (boolean) return \"success\";\n else return \"outline-success\";\n}\n\nfunction WorkLogBody() {\n return (\n \n \n Customer was contacted\n \n \n You talked to the customer\n \n \n You left them a voicemail\n \n \n You sent them an email\n \n \n DO NOT CHOOSE this if you are unable to reach the customer and\n don't leave them a message\n \n \n \n Work was performed\n \n \n Choose this if some progress was made on the issue.
    \n Examples include... training, configuring, troubleshooting, debugging,\n programming\n
    \n \n DO NOT CHOOSE this if you are passing it off to someone else or another\n team\n \n \n DO NOT CHOOSE this if you are learning about the system before you work\n on it\n \n \n DO NOT CHOOSE this if you are doing initial research and don't plan\n on taking ownership\n \n \n \n Note: You can pick both\n \n
    \n );\n}\n\n// Should never return danger\nfunction getListItemVariant(status) {\n if (status === statusIncomplete) return \"warning\";\n else if (status === statusNull) return \"secondary\";\n else if (status === statusDone) return \"primary\";\n else return \"danger\";\n}\n\nfunction getLocationDisabled(\n isOnsiteType,\n isTravelType,\n travelDirection,\n isValidatingCrPr,\n) {\n if (isValidatingCrPr) return true;\n\n if (isOnsiteType || isTravelType) {\n if (isOnsiteType || travelDirection === \"F\" || travelDirection === \"T\")\n return false;\n }\n return true;\n}\n\nfunction getTravelInfo(totalHours, customer, locationId) {\n let output = { needBacApproval: false };\n\n if (_.isEmpty(customer?.travelInformation)) {\n output.billableHours = 0;\n output.nonBillableHourse = 0;\n output.billable = true;\n return output;\n }\n\n output.billableHours = customer.travelInformation.billableHours;\n output.nonBillableHours = customer.travelInformation.nonBillableHours;\n output.billable = customer.travelInformation.billable;\n\n if (!_.isEmpty(locationId)) {\n const found = customer.locations.find((e) => e.code === locationId);\n if (!_.isEmpty(found)) {\n if (found.travelInformation.billableHours !== 0) {\n output.billableHours = found.travelInformation.billableHours;\n }\n if (found.travelInformation.nonBillableHours !== 0) {\n output.nonBillableHours = found.travelInformation.nonBillableHours;\n }\n }\n }\n\n output.needBacApproval =\n totalHours > output.billableHours + output.nonBillableHours;\n\n return output;\n}\n\nfunction useDefaultState({ time, mode, startTimer }) {\n return getDefaultState({ time, mode, startTimer });\n}\n\nfunction getDefaultState({ time, mode, startTimer }) {\n let output = {};\n output.id = time?.id;\n output.userId = time?.userId;\n output.originalUserId = output.userId;\n output.datetime = _.isEmpty(time?.datetime)\n ? _datetime.stamp(moment())\n : time?.datetime;\n output.hours =\n time != null && time.hours != null ? parseFloat(time.hours) : 0;\n output.billingNote = time?.billingNote;\n output.lastManualbillingNote = time?.billingNote;\n output.timeType =\n time?.crId != null && mode === \"new\" ? timeTypes.cr.value : time?.timeType;\n\n output.internalComments = time?.internalComments;\n\n output.internalProjectId = time?.internalProjectId;\n\n output.customerId =\n time?.customer?.id ||\n time?.customers?.[0].id ||\n time?.cr?.customers?.[0].id;\n\n output.locationId = time?.locationId;\n\n output.travelDirection = time?.travelDirection;\n\n output.billableOverrideReasonId = time?.billableOverrideReasonId;\n output.overrideBillableFlag = time?.overrideBillableFlag;\n output.showOnInvoice = time?.showOnInvoice;\n\n output.holdReasonId = time?.holdReasonId;\n output.holdDate = time.holdDate !== \"\" ? time.holdDate : null;\n\n // time != null &&\n // time.holdDate !== null &&\n // !_.isUndefined(time.holdDate) &&\n // time.holdDate !== \"\"\n // ? _date.fromStamp(time.holdDate)\n // : null;\n\n output.isCustomerContacted = time?.isCustomerContacted;\n output.isWorkPerformed = time?.isWorkPerformed;\n output.isNeither = time?.isNeither;\n\n output.crId = time?.cr !== null ? time?.crId?.toString() : \"\";\n output.originalCrId = output.crId;\n\n output.cr = time?.cr;\n output.timers = JSON.stringify(time?.timers);\n\n const requiresCrType = doesTypeRequireCr(output.timeType);\n //CrInput related\n output.crIsValid = requiresCrType && (mode === \"modify\" || time.cr?.id);\n\n output.originalIsBillable = time?.isBillable;\n\n output.createDateTime = time.createDateTime;\n output.modifyDateTime = time.modifyDateTime;\n output.invoiceNumber = time.invoiceNumber;\n output.startTimer = startTimer;\n return output;\n}\n\n/*\nfunction calculateTimerHours(dateTime, timersArray) {\n if (timersArray === null) return 0;\n let seconds = 0;\n const dbcdate = _date.stamp(dateTime);\n for (let i = 0; i < timersArray.length; i++) {\n const start = _datetime.fromStamp(dbcdate + timersArray[i].startTime);\n const end =\n timersArray[i].endTime === \"\"\n ? moment()\n : _datetime.fromStamp(dbcdate + timersArray[i].endTime);\n\n seconds = seconds + end.diff(start, \"seconds\");\n }\n return Math.ceil(seconds / (15 * 60)) / 4;\n}\n*/\n\nfunction CrDetails({ cr, onChangeClick, disabled, originalCustomerId }) {\n if (!cr) return null;\n\n const { customers } = cr;\n\n return (\n \n \n \n \n \n \n
    CR {cr.id}
    \n \n
    \n \n Project {cr.projectId}\n \n \n \n \n \n \n {customers.map((c) => c?.name || \"\").join(\",\\n\")}\n \n \n \n \n \n

    {cr.synopsis}

    \n \n
    \n \n \n \n {\"Change \"}\n \n \n \n
    \n
    \n );\n}\n\nfunction getSectionStatuses({\n userId,\n hoursInvalid,\n timeType,\n internalProjectId,\n billingNote,\n crIsValid,\n locationId,\n travelDirection,\n billableOverrideReasonId,\n holdReasonId,\n holdDate,\n internalComments,\n cr,\n isCustomerContacted,\n isWorkPerformed,\n isNeither,\n customerId,\n showOnInvoice,\n mode,\n startTimer,\n customerValue,\n borsRecord,\n holdReasonRecord,\n}) {\n const billingNoteInvalid = !getIsBillingNoteValid(billingNote);\n\n const topSectionStatus = getTopSectionStatus(\n userId,\n hoursInvalid,\n billingNoteInvalid,\n );\n const timeTypeSectionStatus = getTypeSectionStatus(timeType);\n\n const internalProjectSectionStatus =\n getInternalProjectSectionStatus(internalProjectId);\n\n const crSectionStatus = getCrSectionStatus(crIsValid);\n\n const crLocationStatus = getLocationSectionStatus({\n crIsValid,\n timeType,\n locationId,\n travelDirection,\n });\n\n const borsSectionStatus = getBorsSectionStatus({\n crIsValid,\n isInternalCr: cr?.isInternalCr,\n borsRecord,\n });\n\n const holdSectionStatus = getHoldSectionStatus({\n crIsValid,\n isInternalCr: cr?.isInternalCr,\n holdDate,\n holdReasonRecord,\n });\n\n const internalCommentSectionStatus = getInternalCommentsSectionStatus({\n internalComments,\n billableOverrideReasonId,\n holdReasonId,\n borsRecord,\n holdReasonRecord,\n });\n\n const workLogSectionStatus = getWorkLogSectionStatus({\n isCustomerContacted,\n isWorkPerformed,\n isNeither,\n timeType,\n customerId,\n showOnInvoice,\n crIsValid,\n mode,\n startTimer,\n customerValue,\n cr,\n });\n\n const noCrCustomerSectionStatus = _.isNil(customerId)\n ? statusIncomplete\n : statusDone;\n\n let saveDisabled = true;\n if (topSectionStatus === statusDone && timeTypeSectionStatus === statusDone) {\n if (timeType === timeTypes.internal.value) {\n if (internalProjectSectionStatus !== statusIncomplete)\n saveDisabled = false;\n } else if (timeType === timeTypes.customer.value) {\n if (\n noCrCustomerSectionStatus !== statusIncomplete &&\n workLogSectionStatus !== statusIncomplete\n )\n saveDisabled = false;\n } else if (doesTypeRequireCr(timeType)) {\n if (\n workLogSectionStatus !== statusIncomplete &&\n crLocationStatus !== statusIncomplete &&\n borsSectionStatus !== statusIncomplete &&\n holdSectionStatus !== statusIncomplete &&\n internalCommentSectionStatus !== statusIncomplete &&\n crSectionStatus !== statusIncomplete\n )\n saveDisabled = false;\n }\n }\n\n return {\n top: topSectionStatus,\n timeType: timeTypeSectionStatus,\n internalProject: internalProjectSectionStatus,\n cr: crSectionStatus,\n crLocation: crLocationStatus,\n bors: borsSectionStatus,\n hold: holdSectionStatus,\n internalComments: internalCommentSectionStatus,\n workLog: workLogSectionStatus,\n noCrCustomer: noCrCustomerSectionStatus,\n saveDisabled: saveDisabled,\n };\n}\n\nfunction doesTypeRequireCr(timeType) {\n return (\n timeType === timeTypes.travel.value ||\n timeType === timeTypes.onsite.value ||\n timeType === timeTypes.cr.value\n );\n}\n\nfunction getTopSectionStatus(userId, hoursInvalid, billingNoteInValid) {\n return _.isEmpty(userId) || hoursInvalid || billingNoteInValid\n ? statusIncomplete\n : statusDone;\n}\n\nfunction getTypeSectionStatus(timeType) {\n return _.isEmpty(timeType) ? statusIncomplete : statusDone;\n}\n\nfunction getInternalProjectSectionStatus(internalProjectId) {\n return _.isEmpty(internalProjectId) ? statusIncomplete : statusDone;\n}\n\nfunction getCrSectionStatus(crIsValid) {\n return crIsValid ? statusDone : statusIncomplete;\n}\n\nfunction getLocationSectionStatus({\n crIsValid,\n timeType,\n locationId,\n travelDirection,\n}) {\n let output = statusNull;\n\n const isTravelType = timeType === timeTypes.travel.value;\n const isOnsiteType = timeType === timeTypes.onsite.value;\n\n if (crIsValid && (isOnsiteType || isTravelType)) {\n if (_.isEmpty(locationId)) {\n output = statusIncomplete;\n } else if (\n isTravelType &&\n travelDirection !== \"F\" &&\n travelDirection !== \"T\"\n ) {\n output = statusIncomplete;\n } else {\n output = statusDone;\n }\n }\n return output;\n}\n\nfunction getBorsSectionStatus({ crIsValid, isInternalCr, borsRecord }) {\n return crIsValid && isInternalCr\n ? statusNull\n : _.isEmpty(borsRecord)\n ? statusNull\n : statusDone;\n}\n\nfunction getHoldSectionStatus({\n crIsValid,\n isInternalCr,\n holdDate,\n holdReasonRecord,\n}) {\n return crIsValid && isInternalCr\n ? statusNull\n : _.isEmpty(holdReasonRecord)\n ? statusNull\n : _.isEmpty(holdDate) ||\n (typeof holdDate.isValid === \"function\" && !holdDate.isValid())\n ? statusIncomplete\n : statusDone;\n}\n\nfunction getInternalCommentsSectionStatus({\n internalComments,\n billableOverrideReasonId,\n holdReasonId,\n borsRecord,\n holdReasonRecord,\n}) {\n return !_.isEmpty(internalComments) && internalComments.trim() !== \"\"\n ? statusDone\n : (!_.isEmpty(borsRecord) && billableOverrideReasonId === \"OTHR\") ||\n (!_.isEmpty(holdReasonRecord) && holdReasonId === \"OTHR\")\n ? statusIncomplete\n : statusNull;\n}\n\nfunction getWorkLogSectionStatus({\n isCustomerContacted,\n isWorkPerformed,\n isNeither,\n timeType,\n customerId,\n showOnInvoice,\n crIsValid,\n mode,\n startTimer,\n customerValue,\n cr,\n}) {\n let workLogSectionStatus =\n isCustomerContacted || isWorkPerformed || isNeither\n ? statusDone\n : statusIncomplete;\n\n if (\n timeType === timeTypes.cr.value &&\n (customerId === null ||\n customerId === \"\" ||\n customerValue.customer?.isInternal)\n )\n workLogSectionStatus = statusNull;\n\n if (\n timeType === timeTypes.customer.value &&\n customerValue?.customer?.isInternal\n )\n workLogSectionStatus = statusNull;\n\n if (timeType === timeTypes.cr.value) {\n if (crIsValid && cr.isInternalCr) workLogSectionStatus = statusNull;\n if (showOnInvoice === false) workLogSectionStatus = statusNull;\n }\n\n if (startTimer && mode === \"new\" && workLogSectionStatus === statusIncomplete)\n workLogSectionStatus = statusNull;\n\n if (\n timeType === timeTypes.onsite.value ||\n timeType === timeTypes.travel.value\n ) {\n workLogSectionStatus = statusNull;\n }\n return workLogSectionStatus;\n}\n\nfunction getIsBillingNoteValid(billingNote, timeType) {\n const invalid =\n _.isEmpty(billingNote) ||\n billingNote.trim() === \"\" ||\n (billingNote.includes(\"XXXXXX\") && timeType === timeTypes.travel.value);\n return !invalid;\n}\n\n// The point of this hook is to pay attention to all the fields\n// along with building up \"so to say\" work variables based on those fields\n// Then the \"original\" or \"split\" record can go off the same logic\n// and then even the save button can use this logic\nfunction useGetAllFormVals({ timeIsInvoiced, mode, stopTimer, splitRecord }) {\n const { watch } = useFormContext();\n const [, setNow] = useState(moment());\n const o = {};\n\n o.id = watch(splitRecord + \".id\");\n o.startTimer = watch(splitRecord + \".startTimer\");\n o.invoiceNumber = watch(splitRecord + \".invoiceNumber\");\n o.createDateTime = watch(splitRecord + \".createDateTime\");\n o.modifyDateTime = watch(splitRecord + \".modifyDateTime\");\n o.splitWasPerformed = watch(\"splitWasPerformed\");\n o.splitIsVisible = watch(\"splitIsVisible\");\n o.originalIsVisible = watch(\"originalIsVisible\");\n o.datetime = watch(splitRecord + \".datetime\");\n o.momentDatetime = _datetime.fromStamp(o.datetime);\n\n o.userId = watch(splitRecord + \".userId\");\n o.originalUserId = watch(splitRecord + \".originalUserId\");\n o.hours = watch(splitRecord + \".hours\");\n o.billingNote = watch(splitRecord + \".billingNote\");\n o.lastManualbillingNote = watch(splitRecord + \".lastManualbillingNote\");\n o.timeType = watch(splitRecord + \".timeType\");\n o.crId = watch(splitRecord + \".crId\");\n o.originalCrId = watch(splitRecord + \".originalCrId\");\n o.cr = watch(splitRecord + \".cr\");\n o.customerId = watch(splitRecord + \".customerId\");\n o.locationId = watch(splitRecord + \".locationId\");\n o.internalProjectId = watch(splitRecord + \".internalProjectId\");\n o.travelDirection = watch(splitRecord + \".travelDirection\");\n o.holdReasonId = watch(splitRecord + \".holdReasonId\");\n o.holdDate = watch(splitRecord + \".holdDate\");\n o.holdDateMoment =\n o.holdDate !== null && o.holdDate !== \"\"\n ? _date.fromStamp(o.holdDate)\n : null;\n o.internalComments = watch(splitRecord + \".internalComments\");\n o.billableOverrideReasonId = watch(splitRecord + \".billableOverrideReasonId\");\n o.showOnInvoice = watch(splitRecord + \".showOnInvoice\");\n o.overrideBillableFlag = watch(splitRecord + \".overrideBillableFlag\");\n const timers = watch(splitRecord + \".timers\");\n o.timers = _.isUndefined(timers) ? [] : JSON.parse(timers);\n\n o.isCustomerContacted = watch(splitRecord + \".isCustomerContacted\");\n o.isWorkPerformed = watch(splitRecord + \".isWorkPerformed\");\n o.isNeither = watch(splitRecord + \".isNeither\");\n\n // Billable override reasons and record, same with hold reasons\n o.originalIsBillable = watch(splitRecord + \".originalIsBillable\");\n o.borsState = useSelector((state) => state.times.billableOverrideReasons);\n o.borsRecord = o.borsState.entities[o.billableOverrideReasonId];\n o.holdReasonsState = useSelector((state) => state.times.holdReasons);\n o.holdReasonRecord = o.holdReasonsState.entities[o.holdReasonId];\n\n o.timeIsNotInvoiced = !timeIsInvoiced;\n o.isTravelType = o.timeType === timeTypes.travel.value;\n o.isOnsiteType = o.timeType === timeTypes.onsite.value;\n o.isCrType = o.timeType === timeTypes.cr.value;\n o.isInternalType = o.timeType === timeTypes.internal.value;\n o.isCustomerType = o.timeType === timeTypes.customer.value;\n o.typeRequiresCr = doesTypeRequireCr(o.timeType);\n o.customerValue = Customer.useOne({ id: o.customerId });\n\n o.crIsValid = watch(splitRecord + \".crIsValid\");\n\n o.isBillingNoteValid = getIsBillingNoteValid(o.billingNote, o.timeType);\n\n o.workLogValue = [];\n if (o.isCustomerContacted) o.workLogValue.push(1);\n if (o.isWorkPerformed) o.workLogValue.push(2);\n if (o.isNeither) o.workLogValue.push(3);\n\n const { roundedHours: timerHours, hhmmss: timerHoursFormatted } =\n timerCalculation(o.momementDatetime, o.timers);\n\n o.timerHoursFormatted = timerHoursFormatted;\n o.timerHours = timerHours;\n o.totalHours = o.hours + timerHours;\n\n o.runningTimer = false;\n let hasTimers = false;\n if (o.timers !== null) {\n for (let i = 0; i < o.timers.length; i++) {\n hasTimers = true;\n if (o.timers[i].endTime === \"\") {\n o.runningTimer = true;\n break;\n }\n }\n }\n o.hoursInvalid =\n o.totalHours === 0 && o.startTimer === false && o.runningTimer === false;\n\n // Travel Section //\n // eslint-disable-next-line react-hooks/rules-of-hooks\n o.travelInfo = useMemo(\n () => getTravelInfo(o.totalHours, o.cr?.customers[0], o.locationId),\n [o.cr?.customers, o.locationId, o.totalHours],\n );\n\n o.userSelectProps = {};\n if (hasTimers || timeIsInvoiced) {\n o.userSelectProps.isDisabled = true;\n }\n o.dateEditDisabled = o.userSelectProps.isDisabled;\n\n // Auto refresh the screen for running timers\n useEffect(() => {\n if (o.timers !== null && o.timers.length > 0) {\n const id = setInterval(() => {\n if (o.timers !== null && o.timers.length > 0) setNow(moment());\n }, 60000);\n return () => clearInterval(id);\n }\n }, [o.timers]);\n\n o.billableOverrideYesProps = o.overrideBillableFlag\n ? { variant: \"success\", disabled: true }\n : {\n variant: \"outline-success\",\n disabled: timeIsInvoiced,\n };\n // re-enabling other for all crs, not just internal\n // || !cr?.isInternalCr\n\n o.billableOverrideNoProps = o.overrideBillableFlag\n ? { variant: \"outline-danger\", disabled: false || timeIsInvoiced }\n : { variant: \"danger\", disabled: true };\n\n o.showOnInvoiceYesProps = o.showOnInvoice\n ? { variant: \"success\", disabled: true }\n : { variant: \"outline-success\", disabled: false || timeIsInvoiced };\n\n o.showOnInvoiceNoProps = o.showOnInvoice\n ? { variant: \"outline-danger\", disabled: false || timeIsInvoiced }\n : { variant: \"danger\", disabled: true };\n\n o.travelToProps =\n o.travelDirection === \"T\"\n ? { variant: \"primary\", disabled: true }\n : { variant: \"secondary\", disabled: false || timeIsInvoiced };\n\n o.travelFromProps =\n o.travelDirection === \"F\"\n ? { variant: \"primary\", disabled: true }\n : { variant: \"secondary\", disabled: false || timeIsInvoiced };\n\n //if you are not allowed to change the billability based on the\n // reason code you chose. Then disable the ability to change\n // the billability. Most reason codes can only be used for non-bill\n // and thus you can't change it to billable.\n //const temp = timeIsInvoiced || !cr?.isInternalCr;\n if (o.borsRecord?.allowBillFlagChange === \"N\" || timeIsInvoiced) {\n o.billableOverrideYesProps.disabled = true;\n o.billableOverrideNoProps.disabled = true;\n }\n\n // if you have marked the time as override billable of true\n // then clearly you can't hide the time.\n if (o.overrideBillableFlag) {\n o.showOnInvoiceYesProps.disabled = true;\n o.showOnInvoiceNoProps.disabled = true;\n }\n\n //-----------------Section statuses ----------------------//\n\n o.sectionStatuses = getSectionStatuses({\n userId: o.userId,\n hoursInvalid: o.hoursInvalid,\n timeType: o.timeType,\n internalProjectId: o.internalProjectId,\n billingNote: o.billingNote,\n crIsValid: o.crIsValid,\n locationId: o.locationId,\n travelDirection: o.travelDirection,\n billableOverrideReasonId: o.billableOverrideReasonId,\n holdReasonId: o.holdReasonId,\n holdDate: o.holdDate,\n internalComments: o.internalComments,\n cr: o.cr,\n isCustomerContacted: o.isCustomerContacted,\n isWorkPerformed: o.isWorkPerformed,\n isNeither: o.isNeither,\n customerId: o.customerId,\n showOnInvoice: o.showOnInvoice,\n mode,\n startTimer: o.startTimer,\n customerValue: o.customerValue,\n borsRecord: o.borsRecord,\n holdReasonRecord: o.holdReasonRecord,\n });\n\n //--------------END Section statuses ----------------------//\n\n o.billingNoteDisabled = o.isTravelType && o.locationId !== \"other\";\n o.locationDisabled = getLocationDisabled(\n o.isOnsiteType,\n o.isTravelType,\n o.travelDirection,\n );\n\n o.internalCommentHelp =\n o.sectionStatuses.internalComments === statusIncomplete\n ? \"Internal comments are required\"\n : \"Not required\";\n\n o.billabilitySection = false;\n\n let billMessage = \"\";\n if (o.borsRecord != null) {\n o.billabilitySection = o.overrideBillableFlag;\n billMessage = o.billabilitySection\n ? \"Time record has been overriden to Billable.\"\n : o.showOnInvoice\n ? \"Time record has been overridden to non-billable\"\n : \"Time record has been overridden to be non-billable AND hidden\";\n } else {\n if (\n o.cr?.id === o.originalCrId &&\n !_.isUndefined(o.cr?.id) &&\n mode !== \"new\" &&\n o.billableOverrideReasonId === \"\"\n ) {\n o.billabilitySection = o.originalIsBillable;\n billMessage = o.originalIsBillable\n ? \"Time record is billable\"\n : \"Time record is non-billable\";\n } else if (o.cr?.defaultBillability === true) {\n o.billabilitySection = true;\n billMessage = \"Time record will be billable\";\n } else {\n billMessage = \"Time record will be non-billable\";\n }\n }\n o.billMessage = billMessage;\n o.billMessage2 = o.hasSetAllInfo\n ? \"'Set All Time' settings were found and applied. Override at your own peril.\"\n : null;\n\n const customerId2 = o.customerId;\n o.createTimePayload = {\n //top section\n id: o.id,\n userId: o.userId,\n datetime: o.datetime,\n hours: o.hours,\n billingNote: o.billingNote,\n // time type\n timeType: o.timeType,\n //internal time records\n internalProjectId: o.internalProjectId,\n\n //CR tbd\n customerId: _.isNil(customerId2) ? \"\" : customerId2,\n\n //CR\n crId: o.crId,\n //CR - Billable Override Reason related stuff\n billableOverrideReasonId: _.isEmpty(o.billableOverrideReasonId)\n ? \"\"\n : o.billableOverrideReasonId,\n overrideBillableFlag: o.overrideBillableFlag,\n showOnInvoice: o.showOnInvoice,\n\n //CR - HoldReason\n holdReasonId: _.isEmpty(o.holdReasonId) ? \"\" : o.holdReasonId,\n holdDate: o.holdDate,\n\n // Onsite and travel time\n locationId: o.locationId,\n // Travel\n travelDirection: o.travelDirection,\n travelBacReason: o.travelBacReason,\n\n //Work log (CR + CR TBD)\n isCustomerContacted: o.isCustomerContacted,\n isWorkPerformed: o.isWorkPerformed,\n isNeither: o.isNeither,\n\n //Internal comments (CR + CR TBD)\n internalComments: o.internalComments,\n startTimer: o.startTimer,\n stopTimer: stopTimer,\n stopTimerTime: _datetime.stamp(),\n timers: o.timers,\n createDateTime: o.createDateTime,\n modifyDateTime: o.modifyDateTime,\n overrideReason: o.modifyReason,\n };\n\n return o;\n}\n\nfunction SplitModal({ okButtonText, show, hours, onOk, onCancel }) {\n const [origHours, setOrigHours] = useState(hours);\n const [splitHours, setSplitHours] = useState(0.0);\n\n return (\n \n \n \n Split hours\n \n \n \n \n \n Original Time\n {\n setOrigHours(e?.value);\n setSplitHours(hours - e?.value);\n }}\n />\n \n \n New Time\n {\n setOrigHours(hours - e?.value);\n setSplitHours(e?.value);\n }}\n />\n \n \n Combined\n \n \n \n \n \n
    \n
    \n {\n onOk(origHours, splitHours);\n }}\n variant=\"primary\"\n >\n {okButtonText}\n \n \n
    \n
    \n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport React, { useEffect, useState } from \"react\";\nimport { Alert, Spinner } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\n\nimport { timeActions } from \"./state\";\nimport TimeForm from \"./TimeForm\";\n\nexport default function TimeModify({\n timeId,\n onSaveSuccess,\n onCancel,\n onDelete,\n openTimers = false,\n stopTimer = false,\n onSplit = () => {},\n}) {\n const [time, setTime] = useState();\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (timeId != null) {\n dispatch(timeActions.getTime({ id: timeId }))\n .then(unwrapResult)\n .then((result) => {\n setTime(result);\n })\n .catch(() => {\n onCancel();\n });\n }\n }, [timeId, dispatch, onCancel]);\n\n return (\n <>\n {time != null ? (\n \n ) : (\n
    \n \n Loading...\n \n \n
    \n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Modal } from \"react-bootstrap\";\n\nimport TimeModify from \"./TimeModify\";\n\nexport default function TimeModifyModal({\n id,\n show,\n onHide,\n onCancel,\n onSave,\n onDelete,\n openTimers = false,\n stopTimer = false,\n}) {\n const [splitted, setSplitted] = useState(false);\n\n //This setSplitted in the onHide to false is needed\n //because this component doesn't unload\n return (\n {\n if (splitted) {\n onSave();\n setSplitted(false);\n } else onHide();\n }}\n size=\"lg\"\n aria-labelledby=\"contained-modal-title-vcenter\"\n backdrop=\"static\"\n >\n \n \n {\"Time record: \" + id}\n {stopTimer ? \" (Timer will be stopped)\" : null}\n \n \n \n {\n setSplitted(false);\n onSave();\n }}\n onCancel={onCancel}\n onDelete={() => {\n setSplitted(false);\n onDelete();\n }}\n onSplit={() => setSplitted(true)}\n />\n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { _datetime } from \"../common/functions/dates\";\nimport TimeForm from \"./TimeForm\";\nimport timeTypes from \"./timeTypes\";\n\nexport default function TimeNew({\n defaultUser,\n defaultDate,\n defaultCrId,\n onSaveSuccess,\n onCancel,\n startTimer = false,\n}) {\n const timeType =\n defaultCrId != null\n ? timeTypes.cr.value\n : startTimer\n ? timeTypes.customer.value\n : null;\n const loggedInUser = useSelector((state) => state.auth.user);\n const defaultUser2 =\n _.isEmpty(defaultUser) || startTimer ? loggedInUser : defaultUser;\n\n let isToday = true;\n const rightNow = moment();\n\n if (defaultDate != null && defaultDate !== \"\" && startTimer === false)\n isToday = rightNow.isSame(defaultDate, \"day\");\n\n const defaultDate2 = isToday ? moment() : moment(defaultDate);\n let dbcStamp = _datetime.stamp(defaultDate2);\n\n const time = {\n id: null,\n datetime: dbcStamp,\n userId: defaultUser2,\n timeType: timeType,\n crId: defaultCrId,\n showOnInvoice: true,\n timers: [],\n invoiceNumber: \"\",\n modifyDateTime: \"\",\n createDateTime: \"\",\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\n\nimport TimeNew from \"./TimeNew\";\n\nexport default function TimeNewModal({\n show,\n onHide,\n onCancel,\n onSave,\n userId,\n date,\n crId,\n startTimer = false,\n}) {\n return (\n \n \n \n New Time Record\n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\n\nimport timeTypes from \"./timeTypes\";\n\nexport const TIME_LISTING_TYPES = {\n INTERNAL: \"Internal\",\n TBD: \"TBD\",\n BILLABLE: \"Billable\",\n NON_BILLABLE_SHOWN: \"Non-Billable\",\n NON_BILLABLE_HIDDEN: \"Non-Billable (Hidden)\",\n};\n\nexport function getTimeType(time) {\n if (_.isUndefined(time) || _.isNull(time)) return null;\n\n if (time.timeType === timeTypes.internal.value) {\n return TIME_LISTING_TYPES.INTERNAL;\n } else if (time.timeType === timeTypes.customer.value) {\n return TIME_LISTING_TYPES.TBD;\n } else if (time.isBillable) {\n return TIME_LISTING_TYPES.BILLABLE;\n } else if (time.isInternalCr || time.showOnInvoice) {\n return TIME_LISTING_TYPES.NON_BILLABLE_SHOWN;\n } else {\n return TIME_LISTING_TYPES.NON_BILLABLE_HIDDEN;\n }\n}\n","import { useCallback, useState } from \"react\";\n\nimport TimeModifyModal from \"./TimeModifyModal\";\n\nconst DEFAULT_STATE = { id: null, stopTimer: false };\n\nexport default function useTimeModifyModal({\n handleChange = () => {},\n showTimers = false,\n}) {\n const [state, setState] = useState(DEFAULT_STATE);\n const updateState = useCallback(\n (id, stopTimer = false) => setState(id ? { id, stopTimer } : DEFAULT_STATE),\n [],\n );\n\n const resetState = useCallback(() => {\n updateState();\n }, [updateState]);\n\n const modalProps = {\n id: state?.id,\n show: Boolean(state?.id),\n openTimers: showTimers,\n stopTimer: state?.stopTimer,\n onHide: resetState,\n onSave: handleChange,\n onDelete: handleChange,\n onCancel: resetState,\n };\n\n return [TimeModifyModal, modalProps, updateState, Boolean(state?.id)];\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport {\n formatTotalSeconds,\n timerCalculation,\n} from \"../common/functions/timerCalculation\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Cr from \"../crs\";\nimport { getTimeType, TIME_LISTING_TYPES } from \"./timeListingTypes\";\nimport useTimeModifyModal from \"./useTimeModifyModal\";\n\nfunction TimersTable({\n times = [],\n layout,\n isLoading,\n onSelect,\n initialSort,\n onRefresh,\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n\n const today = useMemo(() => moment(), []);\n\n const [ModifyModal, modifyModelProps, setModifyShow] = useTimeModifyModal({\n showTimers: true,\n handleChange: () => {\n setModifyShow();\n onRefresh();\n },\n });\n\n let timers = [];\n for (let i = 0; i < times.length; i++) {\n for (let r = 0; r < times[i].timers.length; r++) {\n const timer = { ...times[i] };\n timer.startTime = times[i].timers[r].startTime;\n timer.endTime = times[i].timers[r].endTime;\n timer.gap = false;\n timers.push(timer);\n }\n }\n timers = timers.sort((a, b) => (a.startTime > b.startTime ? 1 : -1));\n const tableData = [];\n let lastEndTime = \"\";\n let lastDate = \"\";\n let lastMoment = null;\n\n for (let i = 0; i < timers.length; i++) {\n if (i !== 0) {\n const startMoment = _datetime.fromStamp(\n timers[i].date + timers[i].startTime,\n );\n const gapEnd = moment(startMoment).subtract(1, \"seconds\");\n if (lastEndTime !== \"\") {\n lastMoment = _datetime.fromStamp(lastDate + lastEndTime);\n const secondsDiff = startMoment.diff(lastMoment, \"seconds\");\n if (secondsDiff >= 60) {\n const gapStart = moment(lastMoment).add(1, \"seconds\");\n const gapTimer = {\n startTime: _datetime.timeOnlyStamp(gapStart),\n endTime: _datetime.timeOnlyStamp(gapEnd),\n date: _date.stamp(lastMoment),\n timeType: \"Gap\",\n projectId: \"\",\n crId: \"\",\n customers: [],\n billingNote: \"Gap in timer records\",\n };\n tableData.push(gapTimer);\n }\n }\n lastEndTime = timers[i].endTime;\n lastDate = timers[i].date;\n }\n tableData.push(timers[i]);\n }\n\n for (let d = 0; d < tableData.length; d++) {\n const dateMoment = _date.fromStamp(tableData[d].date);\n const timerArray = [];\n timerArray.push({\n startTime: tableData[d].startTime,\n endTime: tableData[d].endTime,\n });\n const output = timerCalculation(dateMoment, timerArray);\n tableData[d].totalSeconds = output.totalSeconds;\n tableData[d].formattedSeconds = output.hhmmss;\n }\n\n const columns = React.useMemo(\n () => [\n {\n id: \"user\",\n Header: \"User\",\n accessor: \"userId\",\n disableFilters: true,\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: \"date\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"project\",\n Header: \"Project\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.TBD:\n return \"TBD\";\n case TIME_LISTING_TYPES.INTERNAL:\n return \"Internal\";\n default:\n return t.projectId;\n }\n },\n Cell: (o) =>\n (function (o) {\n if (o?.row?.original?.timeType === \"CR\") {\n return (\n \n {o?.value}\n \n );\n } else return <>{o?.value};\n })(o),\n disableFilters: true,\n },\n {\n id: \"cr\",\n Header: \"CR\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.TBD:\n return \"TBD\";\n case TIME_LISTING_TYPES.INTERNAL:\n return t.internalProjectName || t.internalProjectId;\n default:\n return t.crId;\n }\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ row: { original: time }, value }) => {\n if (\n time?.timeType === \"CR\" ||\n time?.timeType === \"Travel\" ||\n time?.timeType === \"On-site\"\n ) {\n return ;\n } else return <>{value};\n },\n aggregate: \"count\",\n },\n {\n id: \"customer\",\n Header: \"Customer\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.TBD:\n return t.customer.name;\n default:\n if (t?.customers?.length) {\n if (t.customers.length === 1) return t.customers[0]?.name;\n else return \"Multiple custommers\";\n }\n }\n },\n\n Cell: ({ value }) =>
    {value}
    ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"billingNote\",\n Header: \"Billing Note\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: \"billingNote\",\n\n Cell: ({ row, value }) => {\n const displayVal =\n value?.trim().length < 2\n ? value +\n \" ******* Billing note is too short. Please fix ******* \"\n : value;\n return (\n
    \n {row?.original?.timeType === \"Gap\" ? (\n {displayVal}\n ) : (\n {\n e.preventDefault();\n if (_.isFunction(onSelect)) onSelect(row?.original?.id);\n else setModifyShow(row?.original?.id);\n }}\n >\n {displayVal}\n \n )}\n
    \n );\n },\n },\n {\n id: \"startTime\",\n Header: \"Start\",\n accessor: \"startTime\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n
    \n {_datetime.displayTimeSeconds(\n _datetime.fromMomentDateStringTime(today, value),\n )}\n
    \n ),\n },\n {\n id: \"endTime\",\n Header: \"End\",\n accessor: \"endTime\",\n disableFilters: true,\n\n Cell: ({ value }) => {\n return value === \"\" ? (\n
    {\"Running\"}
    \n ) : (\n
    \n {_datetime.displayTimeSeconds(\n _datetime.fromMomentDateStringTime(today, value),\n )}\n
    \n );\n },\n },\n {\n id: \"duration\",\n Header: \"Duration\",\n accessor: (t) => {\n if (loggedInUser.trim() === t?.userId?.trim() && t.hasRunningTimer) {\n return (\n setModifyShow(t.id, true)}\n >\n Stop\n \n );\n } else {\n return
    {t.formattedSeconds}
    ;\n }\n },\n disableSortBy: true,\n disableFilters: true,\n\n Footer: (info) => {\n // Only calculate total visits if rows change\n const total = React.useMemo(\n () =>\n info.rows.reduce((sum, row) => {\n if (row.original.timeType === \"Gap\") return sum;\n\n return sum + row.original.totalSeconds;\n }, 0),\n [info.rows],\n );\n return (\n
    \n {formatTotalSeconds(total).hhmmss}\n
    \n );\n },\n },\n ],\n [loggedInUser, onSelect, setModifyShow, today],\n );\n return (\n <>\n {\n switch (getTimeType(row?.original)) {\n case TIME_LISTING_TYPES.BILLABLE:\n return {\n className: \"table-success\",\n };\n case TIME_LISTING_TYPES.TBD:\n return {\n className: \"table-warning\",\n };\n case TIME_LISTING_TYPES.INTERNAL:\n return {\n className: \"table-secondary\",\n };\n default:\n if (row?.original.timeType === \"Gap\") {\n return {\n className: \"bg-dark text-light\",\n };\n } else if (row?.original.isInternalCr) {\n return {\n className: \"table-info\",\n };\n } else if (row?.original?._skeleton) return {};\n else\n return {\n className: \"table-danger\",\n };\n }\n }}\n isLoading={isLoading}\n moveFooterToTop\n />\n \n \n );\n}\n\nexport default React.memo(TimersTable);\n","import { useCallback, useMemo } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport useCurrentTimer from \"./currentTimer/useCurrentTimer\";\nimport { timeActions } from \"./state\";\n\nexport default function useTimer() {\n const { currentTimer } = useCurrentTimer();\n const dispatch = useDispatch();\n const current = useMemo(() => {\n return currentTimer || { status: \"none\" };\n }, [currentTimer]);\n\n const restartTimer = useCallback(\n (id) => {\n dispatch(timeActions.restartTimer({ timeId: id }));\n },\n [dispatch],\n );\n\n return useMemo(() => {\n return { current, restart: restartTimer };\n }, [current, restartTimer]);\n}\n","import _ from \"lodash\";\nimport React, { useMemo } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { BsStopwatchFill } from \"react-icons/bs\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date, _datetime } from \"../common/functions/dates\";\nimport {\n formatTotalSeconds,\n timerCalculation,\n} from \"../common/functions/timerCalculation\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Cr from \"../crs\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\nimport TimeBillableOverrideReason from \"./billableOverrideReasons\";\nimport TimeBillingNoteLink from \"./TimeBillingNoteLink\";\nimport { getTimeType, TIME_LISTING_TYPES } from \"./timeListingTypes\";\nimport useTimeModifyModal from \"./useTimeModifyModal\";\nimport useTimer from \"./useTimer\";\n\nconst DEFAULT_COMPONENTS = {\n CrLink: Cr.Link,\n Customer: Customer.Link,\n};\n\nexport default function TimeTable({\n times,\n onSelect,\n onRefresh,\n isMultiSelect,\n additionalColumns,\n Components: OverrideComponents,\n ...props\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n\n const todayStamp = useMemo(() => _date.stamp(), []);\n const {\n current: { status: timerStatus },\n restart: restartTimer,\n } = useTimer();\n\n const [ModifyModal, modifyModelProps, setModifyShow] = useTimeModifyModal({\n handleChange: () => {\n setModifyShow();\n onRefresh();\n },\n });\n\n const Components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...OverrideComponents }),\n [OverrideComponents],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"user\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"created by\",\n Header: \"Created by\",\n accessor: \"createUserId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: \"date\",\n aggregate: \"uniqueCount\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value, row: { original: time }, cell }) =>\n !cell.isGrouped ? (\n \n {_date.display(_date.fromStamp(value))}\n \n ) : (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"totalHours\",\n Header: \"Hours\",\n disableFilters: true,\n accessor: (t) => {\n if (t.hasRunningTimer) {\n return parseFloat(t.hours) + getRoundedHours(t.date, t.timers);\n } else return parseFloat(t.totalHours);\n },\n\n format: {\n alignment: { horizontal: \"right\" },\n number: {\n decimals: 2,\n },\n },\n dataType: \"number\",\n aggregate: \"sum\",\n sortType: \"numeric\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n const hours = parseFloat(row.original.hours) + total.hours;\n const roundedHours =\n getRoundedHours(row.original.date, row.original.timers) +\n total.roundedHours;\n\n const seconds =\n getSeconds(row.original.date, row.original.timers) +\n total.seconds;\n\n return {\n hours: hours,\n roundedHours: roundedHours,\n seconds: seconds,\n };\n };\n // Only calculate total visits if rows change\n const total = rows.reduce(calcRow, {\n hours: 0,\n roundedHours: 0,\n seconds: 0,\n });\n\n const totalSeconds = total.hours * 60 * 60 + total.seconds;\n const secondsFormatted =\n total.seconds !== 0 ? formatTotalSeconds(totalSeconds).hhmmss : \"\";\n return (\n
    \n {secondsFormatted +\n \" \" +\n (total.roundedHours + total.hours)\n .toFixed(2)\n .toString()\n .padStart(4)}\n
    \n );\n },\n },\n {\n id: \"project\",\n Header: \"Project\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.TBD:\n return \"TBD\";\n case TIME_LISTING_TYPES.INTERNAL:\n return \"Internal\";\n default:\n return t.projectId;\n }\n },\n Cell: (o) =>\n (function (o) {\n if (o?.row?.original?.timeType === \"CR\") {\n return (\n \n {o?.value}\n \n );\n } else return <>{o?.value};\n })(o),\n disableFilters: true,\n },\n {\n id: \"cr\",\n Header: \"CR\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.TBD:\n return \"TBD\";\n case TIME_LISTING_TYPES.INTERNAL:\n return t.internalProjectName || t.internalProjectId;\n default:\n if (t.crId === 0) return \"N/A\";\n else return t.crId;\n }\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ row: { original: time }, value }) => {\n if (\n time?.timeType === \"CR\" ||\n time?.timeType === \"Travel\" ||\n time?.timeType === \"On-site\"\n ) {\n return (\n \n );\n } else return <>{value};\n },\n aggregate: \"count\",\n },\n {\n id: \"customer\",\n Header: \"Customer\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.TBD:\n return t.customer?.id || t.customer?.name;\n default:\n if (t?.customers?.length) {\n if (t.customers.length === 1)\n return t.customers[0]?.id || t.customers[0]?.name;\n else return \"Multiple customers\";\n }\n }\n },\n\n Cell: ({ value }) =>\n typeof value === \"number\" ? (\n \n ) : (\n
    {value}
    \n ),\n Filter: Customer.TableFilter,\n filter: \"equals\",\n aggregate: allSameOrEmpty,\n },\n {\n id: \"billingNote\",\n Header: \"Billing Note\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: \"billingNote\",\n\n Cell: ({ value, row }) => {\n return (\n \n );\n },\n aggregate: \"count\",\n Aggregated: ({ row }) => {\n return row.leafRows[0].original?.billingNoteAggregate || \"\";\n },\n },\n {\n id: \"isBillable\",\n Header: \"Bill\",\n accessor: (t) => {\n switch (getTimeType(t)) {\n case TIME_LISTING_TYPES.BILLABLE:\n return String.fromCodePoint(\"0x1F4B2\");\n case TIME_LISTING_TYPES.TBD:\n return \"\\u2753\";\n case TIME_LISTING_TYPES.NON_BILLABLE_HIDDEN:\n return String.fromCodePoint(\"0x1F648\");\n case TIME_LISTING_TYPES.INTERNAL:\n return String.fromCodePoint(\"0x1F6AB\");\n default:\n return String.fromCodePoint(\"0x1F193\");\n }\n },\n format: {\n alignment: { horizontal: \"center\" },\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrEmpty,\n },\n {\n id: \"nonTimerHours\",\n Header: \"Non Timer\",\n accessor: \"hours\",\n dataType: \"number\",\n disableFilters: true,\n format: {\n number: { decimals: 2 },\n },\n aggregate: \"sum\",\n sortType: \"numeric\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"rate\",\n Header: \"Rate\",\n disableFilters: true,\n dataType: \"number\",\n format: {\n number: {\n decimals: 2,\n },\n },\n aggregate: \"average\",\n accessor: \"rate\",\n },\n {\n id: \"amount\",\n Header: \"Amount\",\n disableFilters: true,\n dataType: \"number\",\n format: {\n number: {\n decimals: 2,\n },\n },\n aggregate: \"sum\",\n accessor: (t) => {\n const totalHours = t.hasRunningTimer\n ? parseFloat(t.hours) + getRoundedHours(t.date, t.timers)\n : t.totalHours;\n\n if (t.rate !== 0 && t.isBillable)\n return Number(parseFloat(t.rate) * totalHours);\n },\n },\n {\n id: \"timerHours\",\n Header: \"Timer hours\",\n accessor: (t) => {\n const roundedHours = getRoundedHours(t.date, t.timers);\n if (roundedHours !== 0) return Number(roundedHours);\n },\n disableSortBy: true,\n disableFilters: true,\n dataType: \"number\",\n format: {\n number: {\n decimals: 2,\n },\n },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return (\n parseFloat(\n getRoundedHours(row.original.date, row.original.timers),\n ) + total\n );\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"timer\",\n\n Header: () => (\n
    \n \n
    \n ),\n accessor: (t) => {\n let hhmmss = getHHMMSS(t.date, t.timers);\n if (hhmmss === \"0:00:00\") hhmmss = \"\";\n if (loggedInUser.trim() === t?.userId?.trim()) {\n if (t.hasRunningTimer) {\n return (\n setModifyShow(t.id, true)}\n >\n Stop\n \n );\n } else if (t.date === todayStamp && timerStatus !== \"running\") {\n if (hhmmss !== \"\")\n return (\n restartTimer(t.id)}\n >\n {hhmmss + \" Restart\"}\n \n );\n else\n return (\n restartTimer(t.id)}\n >\n Start\n \n );\n } else {\n return
    {hhmmss}
    ;\n }\n } else {\n if (t.hasRunningTimer) {\n return (\n
    \n {hhmmss + (t.hasRunningTimer ? \"*\" : \"\")}\n
    \n );\n } else {\n return (\n
    \n {hhmmss + (t.hasRunningTimer ? \"*\" : \"\")}\n
    \n );\n }\n }\n },\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return getSeconds(row.original.date, row.original.timers) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n {formatTotalSeconds(total).hhmmss}\n
    \n );\n },\n disableSortBy: true,\n disableFilters: true,\n },\n {\n id: \"invoiceNumber\",\n Header: \"Invoice\",\n accessor: (t) => {\n if (t?.invoiceNumber?.trim() !== \"\") {\n return t?.invoiceNumber;\n } else if (t?.holdDate?.trim() !== \"\") {\n return \"Held until \" + _date.display(_date.fromStamp(t?.holdDate));\n } else {\n return \" \";\n }\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n format: {\n alignment: { horizontal: \"center\" },\n },\n },\n {\n Header: \"Override Reason\",\n id: \"Override Reason\",\n accessor: \"billableOverrideReasonId\",\n Filter: TimeBillableOverrideReason.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"Internal Comments\",\n Header: \"Internal Comments\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: \"internalComments\",\n\n Cell: ({ value }) => {\n return
    {value}
    ;\n },\n aggregate: \"count\",\n Aggregated: ({ row }) => {\n return row.leafRows[0].original?.internalCommentsAggregate || \"\";\n },\n },\n {\n Header: \"Create Date\",\n id: \"createDate\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Create Time\",\n id: \"createTime\",\n accessor: \"createDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_datetime.displayTime(_datetime.fromStamp(value))}\n ),\n },\n {\n Header: \"Modify Date\",\n id: \"modifyDate\",\n accessor: \"modifyDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Modify Time\",\n id: \"modifyTime\",\n accessor: \"modifyDateTime\",\n disableFilters: true,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value ? _datetime.displayTime(_datetime.fromStamp(value)) : null}\n \n ),\n },\n ...(additionalColumns || []),\n ],\n [\n additionalColumns,\n onRefresh,\n setModifyShow,\n onSelect,\n loggedInUser,\n todayStamp,\n timerStatus,\n restartTimer,\n Components,\n ],\n );\n\n return (\n <>\n {\n if (row.isSelected) return { className: \"table-primary\" };\n if (row.isGrouped) return {};\n switch (getTimeType(row?.original)) {\n case TIME_LISTING_TYPES.BILLABLE:\n return {\n className: \"table-success\",\n };\n case TIME_LISTING_TYPES.TBD:\n return {\n className: \"table-warning\",\n };\n case TIME_LISTING_TYPES.INTERNAL:\n return {\n className: \"table-secondary\",\n };\n default:\n if (row?.original?.isInternalCr || row?.original?._skeleton)\n return {};\n else\n return {\n className: \"table-danger\",\n };\n }\n }}\n moveFooterToTop\n {...props}\n />\n \n \n );\n}\n\nfunction getRoundedHours(dbcDate, timers) {\n const momentDate = _date.fromStamp(dbcDate);\n return timerCalculation(momentDate, timers).roundedHours;\n}\n\nfunction getHHMMSS(dbcDate, timers) {\n const momentDate = _date.fromStamp(dbcDate);\n return timerCalculation(momentDate, timers).hhmmss;\n}\n\nfunction getSeconds(dbcDate, timers) {\n const momentDate = _date.fromStamp(dbcDate);\n return timerCalculation(momentDate, timers).totalSeconds;\n}\n\nfunction allSameOrEmpty(leafValues) {\n return _.uniq(leafValues).length === 1 ? leafValues[0] || \"\" : \"\";\n}\n","import TimeBillableOverrideReason from \"./billableOverrideReasons\";\nimport useCurrentTimer from \"./currentTimer/useCurrentTimer\";\nimport TimeHoldReason from \"./holdReasons\";\nimport TimeInternalProject from \"./internalProjects\";\nimport { timeActions, timeSelectors } from \"./state\";\nimport TimeBillingNoteLink from \"./TimeBillingNoteLink\";\nimport TimeCrEditor from \"./TimeCrEditor\";\nimport TimeEstimateTable from \"./TimeEstimateTable\";\nimport TimeFilters from \"./TimeFilters\";\nimport TimeModify from \"./TimeModify\";\nimport TimeModifyModal from \"./TimeModifyModal\";\nimport TimeNewModal from \"./TimeNewModal\";\nimport TimersTable from \"./TimersTable\";\nimport TimeTable from \"./TimeTable\";\nimport useTimeModifyModal from \"./useTimeModifyModal\";\nimport useTimer from \"./useTimer\";\nimport useTimes from \"./useTimes\";\nimport useTimeStats from \"./useTimeStats\";\n\nconst Time = {\n // Backend API\n // api: timeApi,\n // State\n actions: timeActions,\n selectors: timeSelectors,\n // Hooks\n useAll: useTimes,\n useTimer: useTimer,\n useCurrentTimer: useCurrentTimer,\n useModifyModal: useTimeModifyModal,\n useStats: useTimeStats,\n // Components\n Table: TimeTable,\n NewModal: TimeNewModal,\n ModifyModal: TimeModifyModal,\n EstimateTable: TimeEstimateTable,\n Filters: TimeFilters,\n TimersTable: TimersTable,\n Modify: TimeModify,\n CrEditor: TimeCrEditor,\n // Related Entity Objects\n BillableOverrideReason: TimeBillableOverrideReason,\n HoldReason: TimeHoldReason,\n InternalProject: TimeInternalProject,\n BillingNoteLink: TimeBillingNoteLink,\n};\nexport default Time;\n","import moment from \"moment\";\nimport { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { _date } from \"../common/functions/dates\";\nimport { timeActions, timeSelectors } from \"./state\";\n\nexport default function useTimes({\n filter: {\n crs,\n projectId,\n date,\n userId = \"\",\n startDate,\n endDate,\n timeType = \"\",\n } = {},\n blocked = false,\n}) {\n const dispatch = useDispatch();\n const times = useSelector((state) => timeSelectors.selectAll(state));\n const loading = useSelector((state) => state.times.times.requests.loading);\n const lastUpdate = useSelector((state) => state.times.times.lastUpdate);\n\n const getTimes = useCallback(() => {\n dispatch(timeActions.clearTimes());\n const searchParams = { userId, timeType };\n const dateMoment = date ? moment(date) : undefined;\n const dateParm = dateMoment?.isValid() ? dateMoment.format(\"YYYYMMDD\") : \"\";\n if (crs?.length) {\n crs.map((cr) =>\n dispatch(\n timeActions.getTimes({ date: dateParm, cr: cr, ...searchParams }),\n ),\n );\n } else if (projectId) {\n dispatch(\n timeActions.getTimes({\n date: dateParm,\n project: projectId,\n ...searchParams,\n }),\n );\n } else if (userId) {\n if (dateMoment?.isValid()) {\n dispatch(timeActions.getTimes({ date: dateParm, ...searchParams }));\n } else if (endDate) {\n dispatch(\n timeActions.getTimes({\n startDate: _date.stamp(startDate),\n endDate: _date.stamp(endDate),\n ...searchParams,\n }),\n );\n }\n }\n }, [dispatch, userId, timeType, date, crs, projectId, endDate, startDate]);\n\n useEffect(() => {\n if (blocked) return;\n getTimes();\n }, [getTimes, blocked]);\n\n return { times, loading, lastUpdate, getTimes };\n}\n","import { useEffect } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\n\nimport { timeActions } from \"./state\";\n\nexport default function useTimeStats({\n key,\n blocked = false,\n startDate,\n endDate,\n userId,\n}) {\n const stats = useSelector(\n (state) => state.times.times.stats[key],\n shallowEqual,\n );\n const loading = useSelector((state) => state.times.times.requests.loading);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (blocked && startDate && endDate) return;\n dispatch(timeActions.getStats({ key, startDate, endDate, userId }));\n }, [dispatch, blocked, key, startDate, endDate, userId]);\n\n return { stats, loading };\n}\n","import React, { useCallback } from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\n\nimport FieldDate from \"../common/fields/FieldDate\";\nimport { _date } from \"../common/functions/dates\";\nimport User from \"../users\";\n\nexport default function TimeFilters({ user, date, showTimers, onRefresh }) {\n const history = useHistory();\n\n const updateUrl = useCallback(\n ({ user, date }) => {\n history.push(\n \"/time?user=\" +\n user +\n \"&date=\" +\n _date.urlParams(date) +\n \"&showTimers=\" +\n showTimers,\n );\n },\n [history, showTimers],\n );\n\n const onDateChange = (newDate) => {\n if (_date.stamp(date) === _date.stamp(newDate)) onRefresh();\n else {\n updateUrl({\n user,\n date: newDate,\n });\n }\n };\n\n return (\n
    \n \n \n \n \n \n updateUrl({ user: value, date })}\n hasMeButton\n />\n \n \n
    \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Col, Form, Modal, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory, useLocation } from \"react-router\";\nimport Select, { createFilter } from \"react-select\";\nimport { toast } from \"react-toastify\";\n\nimport useUserActivity from \"./activity/userActivity/useUserActivity\";\nimport { OptionExtended } from \"./common/fields/FieldSelect\";\nimport useTinykeys from \"./common/hooks/useTinykeys\";\nimport Contact from \"./contacts\";\nimport Customer from \"./customers\";\nimport Project from \"./projects\";\nimport useSettings from \"./settings/useSettings\";\nimport Time from \"./time\";\nimport User from \"./users\";\n\nconst prCrTextSearchUrl = \"/reports/pr-cr-text-search/\";\n\nconst filterOption = createFilter({\n ignoreCase: true,\n ignoreAccents: true,\n matchFromStart: true,\n stringify: ({ data }) => {\n return `${data.label} ${data?.info || \"\"}`.replace(/[-']/g, \"\");\n },\n trim: true,\n});\n\nconst ContactTableComponents = {\n Customer: ({ value }) => ,\n};\n\nconst SelectComponents = { Option: OptionExtended };\n\nexport default function NavSearch({ isLoading, links }) {\n const [input, setInput] = useState(\"\");\n const [focus, setFocus] = useState(false);\n const [value, setValue] = useState(null);\n\n const [showNewTime, setShowNewTime] = useState(false);\n const hideShowNewTime = () => setShowNewTime(false);\n const [showNewProject, setShowNewProject] = useState(false);\n const [showContactLookup, setShowContactLookup] = useState(false);\n const [showGroupLookup, setShowGroupLookup] = useState(false);\n\n const { entities: userActivity } = useUserActivity();\n\n const history = useHistory();\n\n let ref = useRef(null);\n\n const user = useSelector((state) => state.auth.user);\n const date = moment();\n const currentCr = useSelector((state) => state.crs.crs.currentCr);\n\n const getFocus = (e) => {\n e.preventDefault();\n ref.current.focus();\n setFocus(true);\n };\n\n let keyCfg = {\n \"Alt+KeyC\": () => setShowNewProject(true),\n \"Alt+KeyT\": () => setShowNewTime(true),\n \"Alt+KeyL\": () => setShowContactLookup(true),\n \"Alt+KeyS\": () => {\n var win = window.open(prCrTextSearchUrl, \"_blank\");\n win.focus();\n },\n };\n if (focus) {\n keyCfg[\"Escape\"] = () => {\n if (!_.isFunction(ref.current.blur())) return;\n ref.current.blur();\n setFocus(false);\n };\n } else if (_.isFunction(ref?.current?.focus)) {\n keyCfg[\"Alt+Slash\"] = getFocus;\n keyCfg[\"$mod+k\"] = getFocus;\n }\n useTinykeys(keyCfg);\n\n useEffect(() => {\n if (!value) return;\n setInput(\"\");\n if (value?.redirect) {\n history.push(value?.redirect);\n } else if (value?.openInNewTab) {\n var win = window.open(value?.openInNewTab, \"_blank\");\n win.focus();\n } else if (_.isFunction(value?.action)) {\n value.action();\n } else if (value?.toast) {\n toast.info(value?.toast);\n }\n setValue(null);\n }, [value, history]);\n\n const location = useLocation();\n useEffect(() => {\n setShowNewProject(false);\n setShowNewTime(false);\n setShowContactLookup(false);\n setShowGroupLookup(false);\n }, [location]);\n\n let options = [];\n\n const actions = [\n {\n label: (\n \n New Project \n \n \n alt + c\n \n \n \n ),\n value: { action: () => setShowNewProject(true) },\n },\n {\n label: (\n \n New Time Entry \n \n \n alt + t\n \n \n \n ),\n value: { action: () => setShowNewTime(true) },\n },\n {\n label: (\n \n Contact Lookup \n \n \n alt + l\n \n \n \n ),\n value: { action: () => setShowContactLookup(true) },\n },\n {\n label: \"Group Lookup by Program\",\n value: { action: () => setShowGroupLookup(true) },\n },\n {\n label: (\n \n Project/CR Text Search\n \n \n alt + s\n \n \n \n ),\n value: { openInNewTab: prCrTextSearchUrl },\n },\n ];\n options.push({ label: \"Perform Action...\", options: actions });\n\n const routes = useMemo(\n () =>\n links\n .filter((l) => l.to)\n .map((l) => ({ label: l.label, value: { redirect: l.to } })),\n [links],\n );\n options.push({ label: \"Navigate to...\", options: routes });\n\n Project.useFindOption({\n input,\n options,\n getValue: (input, typeOf) => ({ openInNewTab: `/${typeOf}s/${input}` }),\n });\n\n if (userActivity?.length) {\n const _userActivity = _.uniqBy(\n _.reverse(_.sortBy(userActivity, \"dateTime\")),\n (a) => a.source + a.key,\n ).map((a) => {\n if (a.source === \"CR\")\n return {\n label: \"CR: \" + a.key,\n info: a.moreInfo,\n value: { openInNewTab: \"/crs/\" + a.key },\n };\n else if (a.source === \"PR\")\n return {\n label: \"Project: \" + a.key,\n info: a.moreInfo,\n value: { openInNewTab: \"/projects/\" + a.key },\n };\n return {\n label: \"Unknown: \" + a.key,\n info: a.moreInfo,\n value: { toast: \"Unknown search result\" },\n };\n });\n options.push({\n label: \"Based on Activity...\",\n options: _userActivity,\n });\n }\n\n const { customers } = Customer.useAll();\n const { settings: { customerSort } = {} } = useSettings();\n\n const _customers = customers\n .filter((c) => c.inactive === false)\n .map((f) => {\n return {\n label: customerSort === \"A\" || !f?.sortName ? f.name : f.sortName,\n title: f.name,\n info: f.name,\n value: { openInNewTab: \"/customers/\" + f.id },\n };\n })\n .sort((a, b) => {\n const sortValueA = a.label;\n const sortValueB = b.label;\n return sortValueA.toLowerCase().localeCompare(sortValueB.toLowerCase());\n });\n\n options.push({\n label: \"Open Customer...\",\n options: _customers,\n });\n\n return (\n
    \n ({\n ...style,\n minWidth: 150,\n }),\n container: (style) => ({\n ...style,\n width: \"auto\",\n }),\n menu: (style) => ({\n ...style,\n width: \"150%\",\n }),\n }}\n options={options}\n onChange={(opt) => opt?.value && setValue(opt.value)}\n onInputChange={(s) => setInput(s)}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n maxMenuHeight={600}\n blurInputOnSelect\n isDisabled={isLoading}\n />\n \n setShowNewProject(false)}\n />\n setShowContactLookup(false)}\n TableComponents={ContactTableComponents}\n />\n setShowGroupLookup(false)}\n />\n \n );\n}\n\nfunction NewProjectModal({ show, onHide }) {\n return (\n \n \n New Project\n \n \n \n \n \n );\n}\n\nfunction GroupLookupByProgramModal({ show, onHide }) {\n const ref = useRef();\n\n useEffect(() => {\n if (show) ref.current.focus();\n }, [show]);\n\n return (\n \n \n \n Group Lookup by Program\n \n \n\n \n \n \n \n );\n}\n","import moment from \"moment\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { Button, Col, Form, OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { BiPlay, BiRepost, BiStop } from \"react-icons/bi\";\nimport { useSelector } from \"react-redux\";\n\nimport { _datetime } from \"../common/functions/dates\";\nimport useIntervalUpdateComponent from \"../common/hooks/useIntervalUpdateComponent\";\nimport TimeNewModal from \"./TimeNewModal\";\nimport useTimeModifyModal from \"./useTimeModifyModal\";\nimport useTimer from \"./useTimer\";\n\nconst getTimerText = (startTime) => {\n const d = moment.duration(moment().diff(startTime));\n const hours = `${d.hours()}`.padStart(2, \"0\");\n const minutes = `${d.minutes()}`.padStart(2, \"0\");\n const seconds = `${d.seconds()}`.padStart(2, \"0\");\n return `${hours}:${minutes}:${seconds}`;\n};\n\nexport default function NavTimer({ isLoading }) {\n const timer = useTimer();\n const [showNewModal, setShowNewModal] = useState(false);\n const hideNewModal = useCallback(() => setShowNewModal(false), []);\n const [ModifyModal, modifyModelProps, setModifyShow, modifyShow] =\n useTimeModifyModal({\n handleChange: () => {\n setModifyShow();\n },\n });\n\n const currentCr = useSelector((state) => state.crs.crs.currentCr);\n\n const ref = useRef();\n\n const {\n current: { status },\n } = timer;\n\n if (isLoading) return null;\n return (\n
    \n \n \n {status === \"running\"\n ? `Started at ${_datetime.displayTime(timer.current.startTime)}`\n : timer.current.endTime\n ? `Ended at ${_datetime.displayTime(timer.current.endTime)}`\n : \"No previous timer\"}\n \n \n {timer.current.timerDescription || \"Press Start New Timer button\"}\n \n \n }\n >\n \n \n
    \n \n
    \n \n \n {status === \"running\" ? (\n setModifyShow(timer.current.id, true)}\n title=\"Stop Timer\"\n >\n \n \n ) : (\n <>\n {\n setShowNewModal(true);\n }}\n title=\"Start New Timer\"\n >\n \n \n {timer.current.id ? (\n timer.restart(timer.current.id)}\n title=\"Restart Last Timer\"\n >\n \n \n ) : null}\n \n )}\n {\n hideNewModal();\n // onChange();\n }}\n onCancel={hideNewModal}\n />\n \n \n
    \n \n \n );\n}\n\nfunction TimerText({ start, status }) {\n useIntervalUpdateComponent(1000);\n return (\n \n {status === \"running\" ? getTimerText(start) : \"None\"}\n \n );\n}\n","import _ from \"lodash\";\nimport React, { useMemo, useState } from \"react\";\nimport {\n Col,\n Dropdown,\n ListGroup,\n Nav,\n Navbar,\n NavDropdown,\n Row,\n Tab,\n Tabs,\n} from \"react-bootstrap\";\nimport { BsLink45Deg } from \"react-icons/bs\";\nimport { useSelector } from \"react-redux\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nimport { SHARK_URL } from \"./apis/shark\";\nimport CenteredModal from \"./common/modals/CenteredModal\";\nimport CrNav from \"./crs/CrNav\";\nimport NavSearch from \"./NavSearch\";\nimport NavTimer from \"./time/NavTimer\";\n\nfunction useNavLinks() {\n const { accessApprovals } = useSelector((state) => state.auth);\n\n const links = useMemo(() => {\n let links = [\n { label: \"Home\", to: \"/home\" },\n { label: \"Projects\", to: \"/projects\" },\n { label: \"CRs\", to: \"/crs\" },\n { label: \"Time\", to: \"/time\" },\n { label: \"Customers\", to: \"/customers\" },\n { label: \"Users\", to: \"/users\", more: 0 },\n { label: \"Reports\", to: \"/reports\", more: 1 },\n { label: \"Servers\", to: \"/servers\", more: 1 },\n { label: \"EDI\", to: \"/edi\", more: 1 },\n { label: \"Invoices\", to: \"/invoices\", more: 1 },\n { label: \"Contracts\", to: \"/contracts\", more: 1 },\n { label: \"Code Reviews\", to: \"/code-reviews\", more: 1 },\n {\n label: (\n <>\n {\"Support Portal \"}\n \n \n ),\n href: \"https://support.producepro.com/\",\n more: 2,\n },\n {\n label: (\n <>\n {\"Knowledge Base \"}\n \n \n ),\n href: \"http://kb.producepro.com/\",\n more: 2,\n },\n {\n label: (\n <>\n {\"Notion: Developer Landing\"}\n \n \n ),\n href: \"https://www.notion.so/producepro/Developer-Landing-dd9fbb4757ae4b63b4933f6261f37228\",\n more: 2,\n },\n {\n label: (\n <>\n {\"Helix TeamHub \"}\n \n \n ),\n href: \"https://helixteamhub.cloud/producepro/\",\n more: 2,\n },\n {\n label: (\n <>\n {\"Jira \"}\n \n \n ),\n href: \"https://pprosoftware.atlassian.net/jira/\",\n more: 2,\n },\n {\n label: (\n <>\n {\"Analytics \"}\n \n \n ),\n\n href: \"https://analytics.producepro.com/bi\",\n more: 2,\n },\n ];\n if (accessApprovals)\n links.push({ label: \"Approvals\", to: \"/approvals\", more: 1 });\n\n links.push({ label: \"Expenses\", to: \"/expenses\", more: 1 });\n links.push({ label: \"DBC Code Management\", to: \"/dbc\", more: 1 });\n\n return links;\n }, [accessApprovals]);\n return links;\n}\n\nexport default function NavBarCommon({ isLoading }) {\n const { isLoggedIn, name } = useSelector((state) => state.auth);\n\n const links = useNavLinks();\n const { NavLinks, NavMore } = useMemo(() => {\n const NavLinks = ({ children }) => (\n \n );\n const NavMore = () => {\n const mapLinks = (l, idx) =>\n l.to ? (\n \n {l.label}\n \n ) : (\n \n {l.label}\n \n );\n return (\n \n {links.filter((l) => l.more === 0).map(mapLinks)}\n \n {links.filter((l) => l.more === 1).map(mapLinks)}\n \n {links.filter((l) => l.more === 2).map(mapLinks)}\n \n );\n };\n return { NavLinks, NavMore };\n }, [links]);\n\n const [showShortcuts, setShowShortcuts] = useState(false);\n const [showColors, setShowColors] = useState(false);\n return (\n <>\n \n \n \n {SHARK_URL.includes(\"shark-test\") ? \"PPro T3 (Test)\" : \"PPro T3\"}\n \n \n \n {!isLoggedIn ? (\n \n Login\n \n ) : (\n \n \n \n \n \n \n \n setShowShortcuts(true)}\n clickedColors={() => setShowColors(true)}\n />\n \n )}\n \n setShowShortcuts(false)}\n modalTitle=\"Shortcuts in T3\"\n body={}\n />\n setShowColors(false)}\n modalTitle=\"Colors in T3\"\n body={}\n />\n \n );\n}\n\nfunction ShortcutKeys() {\n return (\n \n \n Global\n \n \n \n New Project\n \n \n \n \n \n Alt + C\n \n \n \n \n \n New Time Entry\n \n \n \n \n \n Alt + T\n \n \n \n \n Search box\n \n \n \n Gain Focus\n \n \n \n \n \n Control + K OR Alt + /\n \n \n \n \n \n After gaining Focus\n \n \n \n \n Up/Down Arrow to choose menu options or recent activity\n \n \n Type to search through menu or recent activity\n \n \n Type a CR or Project # to jump to it.\n \n \n Enter to submit your choice\n \n \n \n Time add/modification Form\n \n \n \n Save the record\n \n \n \n \n \n Control + S OR Control + Enter\n \n \n \n \n \n Cancel changes\n \n \n \n \n \n Esc\n \n \n \n \n Tables\n \n \n \n Sorting\n \n \n \n \n Click column header to toggle sorting\n \n \n \n Hold Shift and click column header to sort by multiple\n columns\n \n \n \n \n Expense Entry Pages\n \n \n \n Add expense\n \n \n \n \n \n Alt + A\n \n \n \n \n \n Save the record\n \n \n \n \n \n Control + Enter\n \n \n \n \n {\"Mac users: Control means the Command key\"}\n \n \n );\n}\n\nfunction Colors() {\n return (\n \n \n \n \n Emergency issue\n \n \n Critical issue\n \n \n Priority or important issue\n \n \n Practice upgrade issue\n \n \n CR is late based on first contact or start work targets.\n \n \n CR will be late within the next 60 minutes based on first contact or\n start work targets.\n \n Default color\n \n \n \n \n \n Billable time\n \n \n Customer time that does not have a CR yet.\n \n \n Internal project time. Example: Vacation time\n \n \n Time against an internal CR\n \n \n Non-billable time\n \n \n \n \n );\n}\n\nfunction NavBarUser({ name, clickedShortcuts, clickedColors }) {\n const version = localStorage.getItem(\"version\");\n const versionBuild = localStorage.getItem(\"versionBuild\");\n return (\n \n \n Settings\n \n clickedShortcuts()}>\n Shortcut keys\n \n clickedColors()}>\n Colors\n \n \n Logout\n \n \n \n {`${version}${\n versionBuild && versionBuild !== \"master\" ? \"-\" + versionBuild : \"\"\n }`}\n \n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport { isNaN } from \"lodash\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport useInterval from \"../../common/hooks/useInterval\";\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport { jobsActions, jobsSelectors } from \"./state\";\n\nexport default function useJob({\n id,\n functionName,\n blocked = false,\n redirect,\n} = {}) {\n const job = useSelector((state) => jobsSelectors.selectById(state, id));\n const loadingSelection = useSelector(\n (state) => state.activity.jobs.requests.loading,\n );\n const dispatch = useDispatch();\n const [finishedGetJobId, setFinishedGetJobId] = useState(null);\n const [inProgressJobId, setInProgessJobId] = useState(null);\n const [redirecting, setRedirect] = useRedirect();\n const [error, setError] = useState(null);\n\n const getJob = useCallback(() => {\n setFinishedGetJobId(null);\n return dispatch(jobsActions.getJob({ id: id }))\n .then(unwrapResult)\n .then((result) => {\n if (result.isDone) setFinishedGetJobId(id);\n if (result.isWaiting || result.isInProgress) setInProgessJobId(id);\n return result;\n });\n }, [id, dispatch]);\n\n const submitJob = useCallback(\n (options, description = \"\") => {\n setFinishedGetJobId(null);\n return dispatch(\n jobsActions.submitJob({\n functionName,\n options,\n description: description,\n }),\n )\n .then(unwrapResult)\n .then((result) => {\n if (redirect) setRedirect(redirect + \"/\" + result.id);\n return result;\n });\n },\n [dispatch, functionName, redirect, setRedirect],\n );\n\n const resubmitJob = useCallback(\n () =>\n dispatch(jobsActions.resubmitJob({ id: id }))\n .then(unwrapResult)\n .then((result) => {\n if (redirect) setRedirect(redirect + \"/\" + result.id);\n\n return result;\n }),\n [id, dispatch, redirect, setRedirect],\n );\n\n const shouldGet = !isNaN(id) && !blocked && error === null;\n const shouldGetInterval = shouldGet && !job?.isDone && !job?.isErrored;\n\n useInterval(() => getJob().catch(setError), shouldGetInterval ? 3000 : 0, [\n getJob,\n shouldGetInterval,\n ]);\n\n const loading = useMemo(() => {\n return loadingSelection || redirecting !== null;\n }, [loadingSelection, redirecting]);\n\n return {\n job,\n loading,\n error,\n getJob,\n submitJob,\n resubmitJob,\n ...(job?.functionName === functionName\n ? { finishedGetJobId, inProgressJobId }\n : {}),\n };\n}\n","import _ from \"lodash\";\nimport React, { useState } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport Select from \"react-select\";\n\nimport FieldDate from \"../common/fields/FieldDate\";\nimport { _date } from \"../common/functions/dates\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\n\nexport function ApprovalsFilters({\n championDefault,\n customerDefault,\n projectTypeDefault,\n billThruDateDefault,\n showOpenDefault,\n showApprovedDefault,\n projectOwnerDefault,\n onSubmit,\n disableAll = false,\n}) {\n const [champion, setChampion] = useState(championDefault);\n const [customer, setCustomer] = useState(customerDefault);\n const [date, setDate] = useState(billThruDateDefault);\n const useCustomerValue = Customer.useOne({ id: customer });\n\n const [showOpen, setShowOpen] = useState(\n showOpenDefault !== undefined ? showOpenDefault : \"Y\",\n );\n const [showApproved, setShowApproved] = useState(\n showApprovedDefault !== undefined ? showApprovedDefault : \"B\",\n );\n const [projectType, setProjectType] = useState(\n projectTypeDefault !== undefined ? projectTypeDefault : \"O\",\n );\n const [projectOwner, setProjectOwner] = useState(\n projectOwnerDefault !== undefined ? projectOwnerDefault : null,\n );\n\n const onDateChange = (newDate) => {\n setDate(_date.stamp(newDate));\n };\n const onCustomerChange = (newCustomer) => {\n setCustomer(newCustomer);\n };\n const onChampionChange = (newChampion) => {\n setChampion(newChampion);\n setCustomer(null);\n };\n const onProjectTypeChange = (newValue) => {\n setProjectType(newValue.value);\n };\n const onProjectOwnerChange = (newValue) => {\n setProjectOwner(newValue);\n };\n const onShowApprovedChange = (newValue) => {\n setShowApproved(newValue.value);\n };\n const onShowOpenChange = (newValue) => {\n setShowOpen(newValue.value);\n };\n\n const projectTypeOptions = [];\n projectTypeOptions.push({ label: \"Contract\", value: \"C\" });\n projectTypeOptions.push({ label: \"Trips\", value: \"T\" });\n projectTypeOptions.push({ label: \"All other\", value: \"O\" });\n\n let currentProjectTypeValue = null;\n for (let i = 0; i < projectTypeOptions.length; i++) {\n if (projectTypeOptions[i].value === projectType) {\n currentProjectTypeValue = projectTypeOptions[i];\n break;\n }\n }\n\n const approvedStatusOptions = [];\n approvedStatusOptions.push({ label: \"Only Approved\", value: \"O\" });\n approvedStatusOptions.push({ label: \"Only Unapproved\", value: \"U\" });\n approvedStatusOptions.push({ label: \"Approved and Unapproved\", value: \"B\" });\n\n let currentShowApproved = null;\n for (let i = 0; i < approvedStatusOptions.length; i++) {\n if (approvedStatusOptions[i].value === showApproved) {\n currentShowApproved = approvedStatusOptions[i];\n break;\n }\n }\n\n const projectStatusOptions = [];\n projectStatusOptions.push({ label: \"Closed only\", value: \"N\" });\n projectStatusOptions.push({ label: \"Open and closed\", value: \"Y\" });\n\n let currentShowOpen = null;\n for (let i = 0; i < projectStatusOptions.length; i++) {\n if (projectStatusOptions[i].value === showOpen) {\n currentShowOpen = projectStatusOptions[i];\n break;\n }\n }\n\n // Need a customer if you say All other\n const disableSubmit =\n (_.isNil(customer) || customer === \"\") &&\n (_.isNil(champion) || champion === \"\") &&\n (_.isNil(projectOwner) || projectOwner === \"\") &&\n projectType === \"O\";\n\n const clickedSubmit = () => {\n const options = {};\n\n options.customer = _.isNil(customer) ? \"\" : customer;\n options.projectType = projectType;\n options.projectOwner = _.isNil(projectOwner) ? \"\" : projectOwner;\n options.champion = _.isNil(champion) ? \"\" : champion;\n options.showApproved = showApproved;\n options.showOpen = showOpen;\n options.billThruDate = date;\n\n let desc = \"\";\n\n if (projectType === \"C\") desc = \"Contracts\";\n else if (projectType === \"T\") desc = \"Trips\";\n else desc = \"All other\";\n\n if (_.isNil(customer) || customer === \"\") {\n if (!_.isNil(champion) || champion === \"\") {\n desc = \"Champion \" + champion + \" \" + desc;\n }\n } else {\n desc = useCustomerValue.customer.name + \" \" + desc;\n }\n onSubmit(options, desc);\n };\n\n return (\n
    \n \n \n Champion\n onChampionChange(value)}\n isClearable\n isDisabled={disableAll}\n styles={{ menu: (provided) => ({ ...provided, zIndex: 9999 }) }}\n />\n \n \n Customer\n onCustomerChange(value)}\n isClearable\n styles={{ menu: (provided) => ({ ...provided, zIndex: 9999 }) }}\n isDisabled={disableAll}\n />\n \n \n \n \n Project Type\n \n \n \n Project Owner\n onProjectOwnerChange(value)}\n pseudo={true}\n isClearable\n styles={{ menu: (provided) => ({ ...provided, zIndex: 9999 }) }}\n isDisabled={disableAll}\n />\n \n \n \n \n Approved Projects\n ({ ...provided, zIndex: 9999 }) }}\n />\n \n \n Project status\n \n \n \n \n \n {\"Bill thru date:\"}{\" \"}\n \n \n \n \n \n \n Submit job\n \n \n \n
    \n );\n}\n\nexport default React.memo(ApprovalsFilters);\n","import React, { useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../common/functions/dates\";\nimport TimeModifyModal from \"../time/TimeModifyModal\";\nimport UserLink from \"../users/UserLink\";\n\nfunction ApprovalsSkipped({ data, loading, project = \"\" }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState();\n const [, setTimeRecordsChanged] = useState(false);\n\n /*\n const { approvals, loading, reset } = useApprovals({\n customer: paramsCustomer,\n projectCategory: \"O\",\n });\n */\n\n const popupTimeModal = (timeId) => {\n setShowModifyModal(true);\n setShowTimeId(timeId);\n };\n\n const handleChange = () => {\n setShowModifyModal(false);\n setTimeRecordsChanged(true);\n };\n\n let activeLines = [];\n let foundMode = false;\n let currentSectionPtr = -1;\n if (project !== \"\" && project !== null)\n for (let i = 0; i < data?.length; i++) {\n if (data[i].type === \"section\") {\n if (foundMode === true) {\n foundMode = false;\n }\n currentSectionPtr = i;\n } else if (data[i].type === \"project\") {\n if (project === data[i].project) {\n foundMode = true;\n if (currentSectionPtr !== -1)\n activeLines.push(data[currentSectionPtr]);\n } else {\n foundMode = false;\n }\n }\n if (foundMode) activeLines.push(data[i]);\n }\n else activeLines = data;\n\n return (\n <>\n setShowModifyModal(false)}\n onSave={handleChange}\n onDelete={handleChange}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n Description\n \n \n Hours\n \n \n Total\n \n \n Date\n \n \n Reason\n \n \n \n Skipped charges\n \n {loading ? (\n

    loading

    \n ) : (\n activeLines?.map((x, idx) => (\n \n ))\n )}\n \n );\n}\n\nfunction SkippedLine({ data: x, popupTimeModal }) {\n switch (x.type) {\n case \"project\":\n return (\n <>\n \n \n {\"Project \"}\n \n {x.project}\n \n \n \n \n {x.synopsis}\n \n \n );\n case \"cr\":\n return (\n <>\n \n \n {\"CR \"}\n \n {x.cr}\n \n \n \n \n {x.synopsis}\n \n \n );\n case \"user\":\n return (\n <>\n \n \n \n \n \n \n );\n case \"T\":\n return (\n \n \n {\n e.preventDefault();\n popupTimeModal(x.keyfield);\n }}\n >\n {x.description}\n \n \n \n {x.hours}\n \n \n {x.total}\n \n \n {_date.display(_date.fromStamp(x.date))}\n \n \n {x.reason}\n \n \n );\n case \"C\":\n return (\n \n \n {\"Charge: \"}\n {x.description}\n \n \n \n {x.total}\n \n \n {_date.display(_date.fromStamp(x.date))}\n \n \n {x.reason}\n \n \n );\n default:\n }\n return <>;\n}\n\nexport default React.memo(ApprovalsSkipped);\n","import React, { useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport TimeModifyModal from \"../time/TimeModifyModal\";\n\nfunction ApprovalsStatement({ data, loading, project = \"\" }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState();\n const [, setTimeRecordsChanged] = useState(false);\n\n /*\n const { approvals, loading, reset } = useApprovals({\n customer: paramsCustomer,\n projectCategory: \"O\",\n });\n */\n\n const popupTimeModal = (timeId) => {\n setShowModifyModal(true);\n setShowTimeId(timeId);\n };\n\n const handleChange = () => {\n setShowModifyModal(false);\n setTimeRecordsChanged(true);\n };\n\n let activeLines = [];\n\n let foundMode = false;\n let currentSectionPtr = -1;\n if (project !== \"\" && project !== null)\n for (let i = 0; i < data?.length; i++) {\n if (data[i].type === \"section\") {\n if (foundMode === true) {\n foundMode = false;\n }\n currentSectionPtr = i;\n } else if (data[i].type === \"project\") {\n if (project === data[i].project) {\n foundMode = true;\n activeLines.push(data[currentSectionPtr]);\n } else {\n foundMode = false;\n }\n }\n if (foundMode) activeLines.push(data[i]);\n }\n else activeLines = data;\n\n return (\n <>\n setShowModifyModal(false)}\n onSave={handleChange}\n onDelete={handleChange}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n Description\n \n \n Quantity\n \n \n Price\n \n \n Total\n \n \n {loading ? (\n

    loading

    \n ) : (\n activeLines?.map((x, idx) => (\n \n ))\n )}\n \n );\n}\n\nfunction Line({ data: x, onSelect }) {\n switch (x.type) {\n case \"section\":\n return (\n \n {x.description}\n \n );\n case \"project\":\n return (\n <>\n \n \n {\"Project \"}\n \n {x.project}\n \n \n {x.contact}\n {x.cspo}\n \n \n {x.synopsis}\n \n {x.fixNotes !== \"\" ? (\n \n \n {\"SOLUTION: \" + x.fixNotes}\n \n \n ) : null}\n \n );\n case \"travel\":\n return (\n <>\n \n {\"TRAVEL\"}\n \n \n );\n case \"cr\":\n return (\n <>\n \n \n {\"CR \"}\n \n {x.cr}\n \n \n \n \n {x.synopsis}\n \n \n );\n case \"timeLine\":\n // eslint-disable-next-line no-case-declarations\n const rowClassName = x.total === \"\" ? \"text-danger\" : \"\";\n\n return (\n \n \n \n {x.description}\n {x.dateRange}\n \n \n \n {x.quantity}\n \n \n {x.price}\n \n \n {x.total}\n \n \n );\n case \"timeDetail\":\n case \"discount\":\n // eslint-disable-next-line no-case-declarations\n const rowClassName2 = x.total === \"\" ? \"text-danger\" : \"\";\n // eslint-disable-next-line no-case-declarations\n const rowClassName3 = x.type === \"timeDetail\" ? \"font-italic\" : \"\";\n return (\n \n \n {x.type === \"timeDetail\" ? (\n {\n e.preventDefault();\n onSelect(x.timeId);\n }}\n >\n {x.description}\n \n ) : (\n x.description\n )}\n \n \n {x.quantity}\n \n \n {x.price}\n \n \n {x.total}\n \n \n );\n case \"sectionTotal\":\n case \"sectionTotalTax\":\n return (\n \n {x.description}\n \n \n \n {x.total}\n \n \n );\n case \"sectionTotalPreviousBilled\":\n case \"sectionTotalEstimate\":\n return (\n \n {x.description}\n \n );\n default:\n }\n return <>;\n}\nexport default React.memo(ApprovalsStatement);\n","import React from \"react\";\nimport { Alert, Button, Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { CurrencyFormatter, HoursFormatter } from \"../common/formatters\";\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Project from \"../projects\";\nimport User from \"../users\";\n\nfunction ApprovalsTable({\n projects = [],\n layout,\n isLoading,\n initialSort,\n onRefresh,\n clickedProject = () => {},\n approveProject = () => {},\n approveAll,\n customerId,\n showTheDiscountModal,\n}) {\n const projectAlertClasses = \"py-1 my-0 mx-0 px-1 rounded-0\";\n const alertClassName = \"py-1 my-0 mx-0 px-1 rounded-0 text-right\";\n\n const columns = React.useMemo(\n () => [\n {\n id: \"project\",\n Header: \"Project\",\n accessor: \"project\",\n\n Cell: (o) => {\n return (\n <>\n \n \n {\n e.preventDefault();\n clickedProject(o?.value);\n }}\n >\n {o?.value}\n \n \n \n {o?.row?.original?.alertOverBudget ? (\n \n Over Budget\n \n ) : null}\n {o?.row?.original?.alertFutureClosed ? (\n \n Closed prj has future time\n \n ) : null}\n {o?.row?.original?.alertHeldTime ? (\n \n Held Time\n \n ) : null}\n {o?.row?.original?.alertHoldingOlder ? (\n \n Odd mix of held/unheld time\n \n ) : null}\n {o?.row?.original?.alertCrsClosed ? (\n \n All Crs closed Prj not\n \n ) : null}\n {o?.row?.original?.alertSeparateInvoice ? (\n \n Separate Invoice\n \n ) : null}\n \n \n {o?.row?.original?.approved === \"Y\" ? (\n approveProject(o?.value, customerId, \"U\")}\n disabled={isLoading}\n >\n Unapprove\n \n ) : (\n approveProject(o?.value, customerId, \"A\")}\n disabled={isLoading}\n >\n Approve\n \n )}\n \n \n \n );\n },\n disableFilters: true,\n },\n {\n id: \"owner\",\n Header: \"Owner\",\n accessor: \"owner\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"status\",\n Header: \"Status\",\n accessor: \"statusId\",\n Filter: Project.Status.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n id: \"service\",\n Header: \"Service\",\n accessor: \"product\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: (o) => {\n return (\n <>\n
    \n {o?.row?.original?.product}\n
    \n
    {o?.row?.original?.projectType}
    \n
    \n \n );\n },\n },\n {\n id: \"synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"billHours\",\n Header: \"Bill Hours\",\n accessor: \"billHours\",\n format: {\n alignment: { horizontal: \"right\" },\n },\n disableFilters: true,\n },\n {\n id: \"nonbillHours\",\n Header: \"Non-bill Hours\",\n accessor: \"nonbillHours\",\n format: {\n alignment: { horizontal: \"right\" },\n },\n disableFilters: true,\n },\n {\n id: \"billTotal\",\n Header: \"Bill Total\",\n accessor: \"billTotal\",\n format: {\n alignment: { horizontal: \"right\" },\n },\n disableFilters: true,\n },\n {\n id: \"billThruDate\",\n Header: \"Approved thru\",\n accessor: \"billThruDate\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"past\",\n Header: \"Past\",\n disableFilters: true,\n accessor: (t) => t.pastTotal,\n format: {\n alignment: { horizontal: \"right\" },\n },\n\n Cell: (o) => {\n return (\n <>\n {o?.row?.original?.pastTotal !== \".00\" ? (\n \n {\"$\" + o?.row?.original?.pastTotal}\n \n ) : (\n  \n )}\n {o?.row?.original?.pastBillHours !== \".00\" ? (\n \n {o?.row?.original?.pastBillHours + \" hr\"}\n \n ) : (\n  \n )}\n {o?.row?.original?.pastNonbillHours !== \".00\" ? (\n \n {o?.row?.original?.pastNonbillHours + \" hr\"}\n \n ) : (\n  \n )}\n \n );\n },\n },\n {\n id: \"current\",\n Header: \"Current\",\n disableFilters: true,\n accessor: (t) => t.billTotal,\n format: {\n alignment: { horizontal: \"right\" },\n },\n\n Cell: (o) => {\n return (\n <>\n \n {\"$\" + o?.row?.original?.billTotal}\n \n {o?.row?.original?.billHours !== \".00\" ? (\n \n {o?.row?.original?.billHours + \" hr\"}\n \n ) : (\n  \n )}\n {o?.row?.original?.nonbillHours !== \".00\" ? (\n \n {o?.row?.original?.nonbillHours + \" hr\"}\n \n ) : (\n  \n )}\n \n );\n },\n },\n {\n id: \"skipped\",\n Header: \"Skipped\",\n disableFilters: true,\n accessor: (t) => t.futureTotal,\n format: {\n alignment: { horizontal: \"right\" },\n },\n\n Cell: (o) => {\n return (\n <>\n {o?.row?.original?.futureTotal !== \".00\" ? (\n \n \n \n ) : (\n  \n )}\n {o?.row?.original?.futureBillHours !== \".00\" ? (\n \n \n \n ) : (\n  \n )}\n {o?.row?.original?.futureNonbillHours !== \".00\" ? (\n \n \n \n ) : (\n  \n )}\n \n );\n },\n },\n {\n id: \"nonbillTotal\",\n Header: \"Non-bill Total\",\n accessor: \"nonbillTotal\",\n format: {\n alignment: { horizontal: \"right\" },\n },\n\n Cell: ({ value }) => ,\n disableFilters: true,\n },\n {\n id: \"discount\",\n Header: \"Discount\",\n accessor: \"discount\",\n format: {\n alignment: { horizontal: \"center\" },\n },\n\n Cell: (o) => {\n if (o?.row?.original?.discountAmount === 0) {\n return (\n \n showTheDiscountModal(\n o?.row?.original?.project,\n o?.row?.original?.discountAmount,\n o?.row?.original?.discountComment,\n )\n }\n disabled={isLoading}\n >\n None\n \n );\n } else {\n return (\n \n showTheDiscountModal(\n o?.row?.original?.project,\n o?.row?.original?.discountAmount,\n o?.row?.original?.discountComment,\n )\n }\n disabled={isLoading}\n >\n \n \n );\n }\n },\n disableFilters: true,\n },\n {\n id: \"estimate\",\n Header: \"Estimate\",\n accessor: \"estimate\",\n format: {\n alignment: { horizontal: \"right\" },\n },\n\n Cell: ({ value }) => ,\n disableFilters: true,\n },\n ],\n [\n isLoading,\n clickedProject,\n approveProject,\n customerId,\n showTheDiscountModal,\n projectAlertClasses,\n alertClassName,\n ],\n );\n\n return (\n <>\n
    \n \n \n approveAll(projects, customerId, \"A\")}\n disabled={isLoading}\n >\n Approve All\n \n \n \n approveAll(projects, customerId, \"U\")}\n disabled={isLoading}\n >\n Unapprove All\n \n \n \n
    \n \n {\n if (row.isGrouped) return {};\n switch (row?.original.approved) {\n case \"Y\":\n return {\n className: \"table-success\",\n };\n case \"P\":\n return {\n className: \"table-warning\",\n };\n default:\n if (row?.original.statusId !== \"OP\") {\n return {\n className: \"table-secondary\",\n };\n }\n }\n }}\n />\n \n \n );\n}\n\n/*\nfunction comparison(prev, next) {\n console.log(\"******start comparison\");\n if (prev.projects !== next.projects) {\n console.log(\"projects are not equal\");\n return false;\n }\n if (prev.layout !== next.layout) {\n console.log(\"layout are not equal\");\n return false;\n }\n if (prev.isLoading !== next.isLoading) {\n console.log(\"isloading are not equal\");\n console.log(prev.isLoading);\n console.log(next.isLoading);\n return false;\n }\n if (prev.initialSort !== next.initialSort) {\n console.log(\"initialsort are not equal\");\n return false;\n }\n if (prev.onRefresh !== next.onRefresh) {\n console.log(\"onrefresh are not equal\");\n return false;\n }\n if (prev.clickedProject !== next.clickedProject) {\n console.log(\"clickedproject are not equal\");\n return false;\n }\n if (prev.approveProject !== next.approveProject) {\n console.log(\"approveproject are not equal\");\n return false;\n }\n if (prev.approveAll !== next.approveAll) {\n console.log(\"approveall are not equal\");\n return false;\n }\n if (prev.customerId !== next.customerId) {\n console.log(\"customerid are not equal\");\n return false;\n }\n if (prev.showTheDiscountModal !== next.showTheDiscountModal) {\n console.log(\"sd m not equal\");\n return false;\n }\n\n console.log(\"******end comparison\");\n return true;\n}\n*/\nexport default React.memo(ApprovalsTable);\n","import { ApprovalsFilters } from \"./ApprovalsFilters\";\nimport ApprovalsSkipped from \"./ApprovalsSkipped\";\nimport ApprovalsStatement from \"./ApprovalsStatement\";\nimport ApprovalsTable from \"./ApprovalsTable\";\nimport { approvalsActions } from \"./state\";\n\nconst Approvals = {\n // State\n actions: approvalsActions,\n // Components\n Filters: ApprovalsFilters,\n Statement: ApprovalsStatement,\n Skipped: ApprovalsSkipped,\n Table: ApprovalsTable,\n};\n\nexport default Approvals;\n","import React from \"react\";\n\nimport NoEscapeModal from \"./NoEscapeModal\";\n\n// Don't rename modalTitle to Title..\n// there is something weird going on with that prop\nexport default function LoadingModal({\n modalTitle = \"\",\n bodyHeader = \"Loading\",\n body,\n show,\n}) {\n return (\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Alert,\n Button,\n Col,\n ListGroup,\n Modal,\n Nav,\n Row,\n Spinner,\n Tab,\n} from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport Select from \"react-select\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport useJob from \"../../activity/jobs/useJob\";\nimport Approvals from \"../../approvals\";\nimport FieldInput from \"../../common/fields/FieldInput\";\nimport { _date } from \"../../common/functions/dates\";\nimport LoadingModal from \"../../common/modals/LoadingModal\";\nimport SavingModal from \"../../common/modals/SavingModal\";\nimport Page from \"../../common/pages/Page\";\nimport Customer from \"../../customers\";\nimport User from \"../../users\";\n\n// don't move this inside the function unless you memo it\nconst layout = [\n \"project\",\n \"service\",\n \"owner\",\n \"status\",\n \"synopsis\",\n \"past\",\n \"current\",\n \"skipped\",\n \"discount\",\n \"estimate\",\n];\n\nexport default function ApprovalsIndex() {\n const [jobSubmitted, setJobSubmitted] = useState(false);\n const [showProject, setShowProject] = useState(\"\");\n const [showStatementModal, setShowStatementModal] = useState(false);\n const [showSavingModal, setShowSavingModal] = useState(false);\n const [showRefreshModal, setShowRefreshModal] = useState(false);\n const [showLoadingModal, setShowLoadingModal] = useState(false);\n const [showDiscountModal, setShowDiscountModal] = useState(false);\n const [discountAmount, setDiscountAmount] = useState(0);\n const [discountComment, setDiscountComment] = useState(\" \");\n const [discountProject, setDiscountProject] = useState(null);\n const [newJobId, setNewJobId] = useState(null);\n const [activeCustomerId, setActiveCustomerId] = useState(null);\n const jobId = parseInt(useParams().id);\n const history = useHistory();\n const dispatch = useDispatch();\n const x = useSelector((state) => state.auth.user);\n const { user: loggedInUser } = User.useOne({ id: x });\n const { customer: activeCustomer } = Customer.useOne({\n id: activeCustomerId,\n });\n\n const {\n job,\n loading,\n finishedGetJobId,\n inProgressJobId,\n submitJob,\n resubmitJob,\n } = useJob({\n id: jobId,\n redirect: false,\n functionName: \"statement\",\n });\n\n const dispatchApprove = useCallback(\n (project, customer, action) => {\n setShowSavingModal(true);\n dispatch(\n Approvals.actions.approveProject({\n jobId: jobId,\n projectId: project,\n action: action,\n date: job.options.billThruDate,\n customerId: customer,\n }),\n )\n .then(() => {\n setShowSavingModal(false);\n })\n .catch(() => {\n setShowSavingModal(false);\n });\n },\n [dispatch, jobId, job],\n );\n\n const refreshProjects = useCallback(\n (theJob) => {\n let reqCusts = [];\n for (let c = 0; c < theJob?.output.customers.length; c++) {\n const custProjs = theJob?.output.customers[c].projects.map(\n (p) => p.project,\n );\n const custObj = {\n customerId: theJob?.output.customers[c].customerId,\n projects: custProjs,\n };\n reqCusts.push(custObj);\n }\n setShowRefreshModal(true);\n dispatch(\n Approvals.actions.refreshProjects({\n jobId: jobId,\n customers: reqCusts,\n billThruDate: theJob.options.billThruDate,\n }),\n )\n .then(() => {\n setShowRefreshModal(false);\n })\n .catch(() => {\n setShowRefreshModal(false);\n });\n },\n [dispatch, jobId],\n );\n\n useEffect(() => {\n if (\n !_.isNil(finishedGetJobId) &&\n inProgressJobId !== finishedGetJobId &&\n newJobId !== finishedGetJobId\n ) {\n setNewJobId(finishedGetJobId);\n refreshProjects(job);\n }\n }, [finishedGetJobId, inProgressJobId, job, refreshProjects, newJobId]);\n\n useEffect(() => {\n if (loading && _.isNil(newJobId)) setShowLoadingModal(true);\n else setShowLoadingModal(false);\n }, [loading, newJobId]);\n\n const submitSuccess = useCallback(\n (result) => {\n setJobSubmitted(false);\n setNewJobId(result.id);\n setShowProject(\"\");\n setShowSavingModal(false);\n setShowLoadingModal(false);\n setShowDiscountModal(false);\n setDiscountAmount(0);\n setDiscountComment(\" \");\n setActiveCustomerId(null);\n history.push(\"/approvals/\" + result.id);\n },\n [history],\n );\n\n const submitFail = useCallback(() => {\n setJobSubmitted(false);\n }, []);\n\n const dispatchApproveAll = useCallback(\n (projects, customer, action) => {\n setShowSavingModal(true);\n\n const prjs = projects.map((v) => v.project);\n\n dispatch(\n Approvals.actions.approveProjects({\n jobId: jobId,\n projects: prjs,\n action: action,\n date: job.options.billThruDate,\n customerId: customer,\n }),\n )\n .then(() => {\n setShowSavingModal(false);\n })\n .catch(() => {\n setShowSavingModal(false);\n });\n },\n [dispatch, jobId, job],\n );\n\n const showTheDiscountModal = useCallback((projectId, amount, comment) => {\n setDiscountComment(comment);\n setDiscountAmount(amount);\n setDiscountProject(projectId);\n setShowDiscountModal(true);\n }, []);\n\n const saveDiscount = useCallback(() => {\n setShowSavingModal(true);\n\n dispatch(\n Approvals.actions.discountProject({\n projectId: discountProject,\n amount: discountAmount,\n comment: discountComment,\n jobId: jobId,\n }),\n )\n .then(() => {\n setShowSavingModal(false);\n setShowDiscountModal(false);\n })\n .catch(() => {\n setShowSavingModal(false);\n });\n }, [dispatch, discountProject, discountAmount, discountComment, jobId]);\n\n const clickedProject = useCallback((project) => {\n setShowProject(project);\n setShowStatementModal(true);\n }, []);\n\n //const champion = _.isEmpty(paramsChampion) ? loggedInUser : paramsChampion;\n\n const handleSubmit = (options, description) => {\n setActiveCustomerId(null);\n setJobSubmitted(true);\n setNewJobId(\"unknown\");\n submitJob(options, description).then(submitSuccess).catch(submitFail);\n };\n\n const clickedRebuild = () => {\n setJobSubmitted(true);\n resubmitJob()\n .then((result) => {\n setJobSubmitted(false);\n history.push(\"/approvals/\" + result.id);\n })\n .catch(() => {\n setJobSubmitted(false);\n });\n };\n\n const isJob = jobId !== null && jobId !== undefined && !isNaN(jobId);\n const jobHasData =\n isJob && job !== null && job !== undefined && jobId === job.id;\n const jobRunning = jobHasData && job.status > \"6\";\n\n let championDefault = loggedInUser?.isChampion ? loggedInUser.id : null;\n let customerDefault = null;\n let showOpenDefault = \"Y\";\n let showApprovedDefault = \"B\";\n let projectTypeDefault = \"O\";\n let projectOwnerDefault = null;\n let defaultBillThruDate = _date.stamp(moment().endOf(\"months\"));\n defaultBillThruDate = \"20221231\";\n\n if (jobHasData) {\n championDefault = job.options.champion;\n customerDefault = job.options.customer;\n showOpenDefault = job.options.showOpen;\n showApprovedDefault = job.options.showApproved;\n projectTypeDefault = job.options.projectType;\n projectOwnerDefault = job.options.projectOwner;\n defaultBillThruDate = job.options.billThruDate;\n }\n\n const ApprovalFiltersJsx = (\n \n );\n\n const { customers, currentActiveCustomerIndex, currentActiveCustomer } =\n parseJobsCustomers(job, activeCustomerId);\n\n // job info was set/changed and we only have 1 customer\n // so auto set the customer\n if (\n customers.length === 1 &&\n activeCustomerId !== customers[0].value &&\n jobSubmitted === false &&\n (newJobId === null || newJobId === jobId)\n ) {\n setActiveCustomerId(customers[0].value);\n }\n\n const projects = useMemo(() => {\n const prjs = [];\n const data = job?.output?.customers[currentActiveCustomerIndex]?.projects;\n if (data !== undefined) {\n for (let i = 0; i < data.length; i++) {\n prjs.push(data[i]);\n }\n }\n return prjs;\n }, [currentActiveCustomerIndex, job]);\n\n return (\n \n \n \n \n setShowStatementModal(false)}\n backdrop=\"static\"\n >\n \n Statement for Project {showProject}\n \n \n \n \n \n \n setShowDiscountModal(false)}\n backdrop=\"static\"\n >\n \n Discount for Project {discountProject}\n \n \n \n Amount\n \n setDiscountAmount(v)}\n onChangeOnBlur={false}\n />\n \n \n \n Internal comments\n \n \n \n setDiscountComment(e.target.value)}\n value={discountComment}\n maxLength={256}\n />\n \n \n \n \n \n Save\n \n setShowDiscountModal(false)}\n variant=\"secondary\"\n >\n Cancel\n \n \n \n\n {isJob ? (\n jobHasData ? (\n \n \n \n \n {job.isErrored || job.isDone ? (\n \n Rebuild\n \n ) : null}\n \n \n

    {job.description}

    \n \n {activeCustomerId ? (\n \n \n {\"Current support plan: \" +\n (activeCustomer?.supportPlan === \"P\"\n ? \"Premium\"\n : \"Standard\")}\n \n \n ) : null}\n
    \n\n {job.isWaiting ? (\n \n

    Job is waiting...

    \n \n
    \n ) : job.isInProgress ? (\n \n

    Job is in progress...

    \n \n
    \n ) : job.isErrored ? (\n \n

    Job has encountered an error

    \n
    \n ) : null}\n
    \n {job.isDone && job.options.customer === \"\" ? (\n <>\n \n setActiveCustomerId(newValue.value)}\n isMulti={false}\n placeholder=\"Select customer\"\n />\n \n {activeCustomerId === null && customers.length > 0 ? (\n Choose a customer above\n ) : activeCustomerId === null && customers.length === 0 ? (\n No customers found\n ) : null}\n \n ) : null}\n {job.isDone && activeCustomerId !== null ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {ApprovalFiltersJsx}\n \n \n \n \n Approved project\n \n \n Partially approved\n \n \n Not approved but project is closed\n \n \n Not approved but project is open\n \n
    \n \n \n \n \n \n \n ) : job.isDone && customers.length === 0 ? (\n <> {ApprovalFiltersJsx} \n ) : null}\n \n ) : (\n Job not found\n )\n ) : (\n \n \n \n {ApprovalFiltersJsx}\n \n \n \n )}\n
    \n );\n}\n\nfunction parseJobsCustomers(job, activeCustomerId) {\n let currentActiveCustomerIndex = -1;\n let customers = [];\n if (job?.output?.customers.length === 1) {\n customers.push({\n value: job?.output?.customers[0].customerId,\n label: job?.output?.customers[0].customerName,\n });\n currentActiveCustomerIndex = 0;\n } else if (job?.output?.customers.length > 1)\n for (let i = 0; i < job?.output?.customers.length; i++)\n if (\n job?.output?.customers[i].lines.length > 0 ||\n job?.output?.customers[i].unbilledLines.length > 0\n ) {\n customers.push({\n value: job?.output?.customers[i].customerId,\n label:\n job?.output?.customers[i].customerName +\n \" [\" +\n job?.output?.customers[i].projects.length +\n \"]\",\n });\n if (job?.output?.customers[i].customerId === activeCustomerId) {\n currentActiveCustomerIndex = i;\n }\n }\n\n let currentActiveCustomer = null;\n for (let i = 0; i < customers.length; i++) {\n if (customers[i].value === activeCustomerId) {\n currentActiveCustomer = customers[i];\n break;\n }\n }\n\n return {\n currentActiveCustomerIndex: currentActiveCustomerIndex,\n currentActiveCustomer: currentActiveCustomer,\n customers: customers,\n };\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport ApprovalsIndex from \"./ApprovalsIndex\";\n\nexport default function ApprovalsRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { SHARK_URL } from \"../apis/shark\";\nimport isDev from \"../common/isDev\";\nimport { persistor } from \"../store\";\nimport { authActions } from \"./state\";\nimport { getToken } from \"./state/token\";\n\n/**\n * Check Token authentication and set state persistence\n * @param {object} options\n * @param {boolean} options.blocked Blocked from performing actions\n */\nexport default function useToken({ blocked = false } = {}) {\n const [checked, setChecked] = useState(false);\n const authToken = getToken();\n const dispatch = useDispatch();\n const loading = useSelector((state) => state.auth.loading);\n const isLoggedIn = useSelector((state) => state.auth.isLoggedIn);\n const error = useSelector((state) => state.auth.error);\n const experimentalFeatures = useSelector(\n (state) => state.auth.experimentalFeatures,\n );\n\n // Check login status and enable persistence\n useEffect(() => {\n if (blocked) return;\n if (\n !_.isEmpty(authToken) &&\n !_.isUndefined(authToken) &&\n authToken !== \"undefined\"\n ) {\n dispatch(authActions.checkToken(authToken)).then(() => {\n const versionBuild = localStorage.getItem(\"versionBuild\");\n if (!isDev() && SHARK_URL === \"https://shark.producepro.com/services\") {\n if (experimentalFeatures === \"B\" && versionBuild !== \"beta\") {\n let url = new URL(window.location.href);\n url.hostname = `beta.t3.producepro.com`;\n window.location.replace(url.href);\n }\n }\n setChecked(true);\n persistor.persist();\n });\n } else {\n setChecked(true);\n }\n }, [dispatch, authToken, blocked, experimentalFeatures]);\n\n return { loading: loading || !checked, isLoggedIn, error };\n}\n","import useLogin from \"./useLogin\";\nimport useLogout from \"./useLogout\";\nimport useToken from \"./useToken\";\n\nconst Auth = {\n useLogout: useLogout,\n useToken: useToken,\n useLogin: useLogin,\n};\n\nexport default Auth;\n","import { useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport { authActions } from \"./state\";\n\nexport default function useLogin() {\n const dispatch = useDispatch();\n const loading = useSelector((state) => state.auth.loading);\n const login = useCallback(\n (args) => dispatch(authActions.login(args)),\n [dispatch],\n );\n const resetPassword = useCallback(\n (args) => dispatch(authActions.resetPassword(args)),\n [dispatch],\n );\n const updatePassword = useCallback(\n (args) => dispatch(authActions.updatePassword(args)),\n [dispatch],\n );\n return { loading, login, resetPassword, updatePassword };\n}\n","import React from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, useHistory } from \"react-router\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nimport Auth from \"../../auth\";\nimport { Forms, FormsField, useFormContext } from \"../../common/forms\";\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\n\nexport default function Login() {\n const { loading, login, resetPassword } = Auth.useLogin();\n const isLoggedIn = useSelector((state) => state.auth.isLoggedIn);\n\n const redirect = useSearchParams(\"redirect\");\n const history = useHistory();\n\n if (loading) return ;\n if (isLoggedIn) return ;\n return (\n \n \n \n {\n login(values).then(() => {\n history.push(redirect || \"/\");\n });\n }}\n >\n \n \n \n \n \n );\n}\n\nfunction LoginForm({ isLoading }) {\n const { submitForm, watch } = useFormContext();\n\n const userId = watch(\"userId\");\n\n return (\n \n \n
    \n \n \n \n \n \n \n \n \n
    \n );\n}\n","import React, { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect } from \"react-router\";\n\nimport Auth from \"../../auth\";\nimport Page from \"../../common/pages/Page\";\n\nexport default function Logout() {\n const logout = Auth.useLogout({ canResetState: true });\n const isLoggedIn = useSelector((state) => state.auth.isLoggedIn);\n\n useEffect(() => {\n logout();\n }, [logout]);\n\n if (isLoggedIn) return ;\n return ;\n}\n","import React from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, useHistory } from \"react-router\";\n\nimport Auth from \"../../auth\";\nimport { Forms, FormsField, useFormContext } from \"../../common/forms\";\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\n\nexport default function ResetPassword() {\n const { loading, resetPassword } = Auth.useLogin();\n const isLoggedIn = useSelector((state) => state.auth.isLoggedIn);\n\n const history = useHistory();\n const userId = useSearchParams(\"user\");\n\n if (loading) return ;\n if (isLoggedIn) return ;\n return (\n \n \n \n {\n resetPassword(values).then(() => {\n history.push(\"/login\");\n });\n }}\n >\n \n \n \n \n \n );\n}\n\nfunction ResetPasswordForm() {\n const { submitForm } = useFormContext();\n\n return (\n \n \n
    \n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch } from \"react-router\";\n\nimport Login from \"./Login\";\nimport Logout from \"./Logout\";\nimport ResetPassword from \"./ResetPassword\";\n\nexport default function AuthRouting() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","const REPOSITORIES = {\n P: {\n id: \"P\",\n description: \"Produce (DBC)\",\n },\n I: {\n id: \"I\",\n description: \"Images (Latex)\",\n },\n V: {\n id: \"V\",\n description: \"Vocollect\",\n },\n A: {\n id: \"A\",\n description: \"Ppro-apps\",\n },\n};\n\nexport function useRepository({ id }) {\n return REPOSITORIES[id];\n}\n\nexport function useRepositories() {\n const repositories = Object.entries(REPOSITORIES).map(([, value]) => value);\n return { repositories };\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport { useRepositories } from \"./hooks\";\n\nconst RepositorySelect = React.forwardRef(\n (\n { value, isMulti = false, placeholder = \"Select Repository...\", ...props },\n ref,\n ) => {\n const { repositories } = useRepositories();\n\n const _options = repositories.map((f) => {\n return { label: f.description, value: f.id };\n });\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n);\n\nRepositorySelect.displayName = \"RepositorySelect\";\nexport default RepositorySelect;\n","import { useRepositories, useRepository } from \"./hooks\";\nimport RepositoryDescription from \"./RepositoryDescription\";\nimport RepositorySelect from \"./RepositorySelect\";\n\nconst Repository = {\n // Hooks\n useAll: useRepositories,\n useOne: useRepository,\n // Components\n Select: RepositorySelect,\n Description: RepositoryDescription,\n};\n\nexport default Repository;\n","import React from \"react\";\n\nimport { useRepository } from \"./hooks\";\n\nexport default function RepositoryDescription({ id }) {\n const { repository } = useRepository({ id });\n if (!repository) return null;\n\n return <>{repository.description};\n}\n","import moment from \"moment\";\nimport React from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport Repository from \"../../codeReviews/repositories\";\nimport {\n Forms,\n FormsField,\n useFormContext,\n useWatch,\n} from \"../../common/forms\";\nimport { _date } from \"../../common/functions/dates\";\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport User from \"../../users\";\n\nexport default function CodeReviewOptions({\n startDate: sd = moment().startOf(\"month\").toISOString(),\n endDate: ed = moment().endOf(\"month\").toISOString(),\n group = \"\",\n fileOwner = \"\",\n author = \"\",\n authorTeam = \"\",\n allCommitsFromCr = true,\n repository = \"\",\n onSubmit = () => {},\n}) {\n const [, setRedirect] = useRedirect();\n const loggedInUser = useSelector((state) => state.auth.user);\n return (\n {\n onSubmit();\n setRedirect(\n \"/code-reviews/show?startDate=\" +\n _date.stamp(options.startDate) +\n \"&endDate=\" +\n _date.stamp(options.endDate) +\n \"&allCommitsFromCr=\" +\n options.allCommitsFromCr +\n \"&group=\" +\n options.groupId +\n \"&fileOwner=\" +\n options.fileOwner +\n \"&author=\" +\n options.author +\n \"&authorTeam=\" +\n options.authorTeam +\n \"&repository=\" +\n options.repository,\n );\n }}\n showDevTool\n >\n \n \n );\n}\n\nfunction CodeReviewOptionsForm() {\n const { submitForm } = useFormContext();\n\n const endDate = useWatch({ name: \"endDate\" });\n const startDate = useWatch({ name: \"startDate\" });\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 \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport Page from \"../../common/pages/Page\";\nimport CodeReviewOptions from \"./CodeReviewOptions\";\n\nexport default function CodeReviewNew() {\n const { canPerformCodeReview, isManager, isAdmin } = useSelector(\n (state) => state.auth,\n );\n\n if (!(isManager || canPerformCodeReview || isAdmin))\n return (\n \n );\n\n return (\n \n \n \n );\n}\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nimport helixUrl from \"../functions/helixUrl\";\n\nexport default function HelixLink({ revisionType, revision }) {\n return (\n {\n let url = helixUrl(revisionType, revision);\n window.open(url, \"_blank\");\n }}\n >\n {revision}\n \n );\n}\n","// Pass in the revision type variable and revision and\n// get back the url to call.\nexport default function helixUrl(revType, revision) {\n let url = \"https://helixteamhub.cloud/producepro/projects/\";\n\n if (revType === \"A\") url = url + \"online_solutions/repositories/ppro-apps\";\n else if (revType === \"V\") url = url + \"wms/repositories/ppro-voiceartisan\";\n else if (revType === \"I\") url = url + \"ppro/repositories/images\";\n else url = url + \"ppro/repositories/produce\";\n return url + \"/changesets/\" + revision + \"?ignore_whitespace=true\";\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport codeReviewState from \"./state\";\n\nexport const {\n useEntities: useCodeReviews,\n useEntity: useCodeReview,\n useEntitiesBySearch: useCodeReviewsSearch,\n} = createEntityHooks({\n entity: codeReviewState.entity,\n actions: codeReviewState.actions,\n});\n","export const STATUSES = {\n P: {\n id: \"P\",\n description: \"Passed\",\n variant: \"table-success\",\n },\n W: {\n id: \"W\",\n description: \"Warned\",\n variant: \"table-warning\",\n },\n F: {\n id: \"F\",\n description: \"Failed\",\n variant: \"table-danger\",\n },\n O: {\n id: \"O\",\n description: \"Open\",\n variant: \"table-light\",\n },\n};\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Col,\n Modal,\n OverlayTrigger,\n Popover,\n Row,\n} from \"react-bootstrap\";\nimport {\n FaCheckCircle,\n FaCommentDots,\n FaEdit,\n FaRegComment,\n FaTimesCircle,\n} from \"react-icons/fa\";\nimport { FiCircle } from \"react-icons/fi\";\nimport { MdInfo, MdWarning } from \"react-icons/md\";\nimport { useSelector } from \"react-redux\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport HelixLink from \"../common/components/HelixLink\";\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport {\n DateRangeColumnFilter,\n filterDateRange,\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Cr from \"../crs\";\nimport Project from \"../projects\";\nimport User from \"../users\";\nimport { useCodeReview } from \"./hooks\";\nimport { STATUSES } from \"./statuses\";\n\nconst defaultInitialSort = { id: \"CR\", desc: false };\nconst defaultLayout = [\n \"Actions\",\n \"Last Reviewed By\",\n \"Assigned To\",\n \"CR\",\n \"CR Group\",\n \"Source Group\",\n \"Source Owner\",\n \"Revision\",\n \"Revision Date\",\n \"File\",\n \"Revision Comment\",\n \"Author\",\n \"CR Type\",\n \"CR Status\",\n];\n\nconst RevisionColumnMemo = React.memo(RevisionColumn);\nconst DateColumnMemo = React.memo(DateColum);\nconst SourceGroupColumnMemo = React.memo(SourceGroupColumn);\nconst OwnerEditableColumnMemo = React.memo(OwnerEditableColumn);\nconst CommentsColumnMemo = React.memo(CommentsColumn);\nconst ReviewedCommentsColumnMemo = React.memo(ReviewedCommentsColumn);\nconst CrColumnMemo = React.memo(CrColumn);\nconst ActionsColumnMemo = React.memo(ActionsColumn);\nconst UserLinkMemo = React.memo(User.Link);\nconst TableMemo = React.memo(Table);\n\nexport default function CodeReviewTable({\n data,\n layout = defaultLayout,\n onRefresh,\n initialSort = defaultInitialSort,\n disabled = false,\n loading = false,\n colorMethod = \"last\",\n}) {\n const userId = useSelector((state) => state.auth.user);\n const [showCommentsModal, setShowCommentsModal] = useState(false);\n const [showCommentsRecord, setShowCommentsRecord] = useState(null);\n const [showSourceModal, setShowSourceModal] = useState(false);\n const [showSourceRecord, setShowSourceRecord] = useState(null);\n const [showInfoModal, setShowInfoModal] = useState(false);\n const [showInfoApprovals, setShowInfoApprovals] = useState(null);\n const [showAssignedToModal, setShowAssignedToModal] = useState(false);\n const [showAssignedToRecord, setShowAssignedToRecord] = useState(null);\n\n const { updateOne } = useCodeReview({\n canGet: false,\n });\n\n const approveReview = useCallback(\n (codeReview) => {\n updateOne({ ...codeReview, myApprovalStatus: \"P\" });\n },\n [updateOne],\n );\n\n const saveAssignedTo = useCallback(\n (newUser) => {\n updateOne({\n ...showAssignedToRecord,\n assignedTo: newUser,\n });\n setShowAssignedToModal(false);\n },\n [showAssignedToRecord, updateOne],\n );\n\n const saveSourceCodeOwnership = useCallback(\n (newGroup, newOwner) => {\n updateOne({\n ...showSourceRecord,\n sourceGroup: newGroup,\n sourceOwner: newOwner,\n });\n setShowSourceModal(false);\n },\n [showSourceRecord, updateOne],\n );\n\n const saveCodeReviewAndComment = useCallback(\n (newComment) => {\n updateOne({ ...showCommentsRecord, myApprovalComment: newComment });\n setShowCommentsModal(false);\n },\n [showCommentsRecord, updateOne],\n );\n\n const clearReview = useCallback(\n (codeReview) => {\n updateOne({\n ...codeReview,\n myApprovalStatus: \"O\",\n myApprovalComment: \"\",\n });\n },\n [updateOne],\n );\n const warnReview = useCallback((codeReview) => {\n setShowCommentsModal(true);\n setShowCommentsRecord({ ...codeReview, myApprovalStatus: \"W\" });\n }, []);\n\n const failReview = useCallback((codeReview) => {\n setShowCommentsModal(true);\n setShowCommentsRecord({ ...codeReview, myApprovalStatus: \"F\" });\n }, []);\n\n const changeComments = useCallback((codeReview) => {\n setShowCommentsModal(true);\n setShowCommentsRecord({ ...codeReview });\n }, []);\n\n const showInfo = useCallback((approvals) => {\n setShowInfoModal(true);\n setShowInfoApprovals(approvals);\n }, []);\n\n const changeAssignedTo = useCallback((codeReview) => {\n setShowAssignedToModal(true);\n setShowAssignedToRecord({ ...codeReview });\n }, []);\n\n const changeSourceCodeOwnership = useCallback((codeReview) => {\n setShowSourceModal(true);\n setShowSourceRecord({ ...codeReview });\n }, []);\n\n const columns = useMemo(\n () => [\n {\n id: \"Actions\",\n Header: \"Actions\",\n Cell: ({ row }) => (\n \n ),\n },\n {\n id: \"CR Type\",\n Header: \"CR Type\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n accessor: \"crType\",\n Cell: ({ value }) => ,\n },\n {\n id: \"CR Status\",\n Header: \"CR Status\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n accessor: \"crStatus\",\n Cell: ({ value }) => ,\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: (row) => (row.crId === 0 ? \" \" : row.crId),\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ row, value }) => (\n \n ),\n },\n {\n id: \"Project\",\n Header: \"Project\",\n accessor: (row) => (row.projectId === 0 ? \"N/A\" : row.projectId),\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Revision\",\n Header: \"Revision\",\n accessor: \"revision\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row }) => (\n \n ),\n },\n {\n id: \"Revision Date\",\n Header: \"Revision Date\",\n accessor: \"revisionDate\",\n filter: filterDateRange,\n Filter: DateRangeColumnFilter,\n sortType: \"custom\",\n\n Cell: ({ value }) => ,\n },\n {\n id: \"Author\",\n Header: \"Author\",\n accessor: \"author\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Revision Comment\",\n Header: \"Revision Comment\",\n accessor: \"revisionComment\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsisNotes\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"CR Group\",\n Header: \"CR Group\",\n accessor: \"crGroup\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n id: \"Source Group\",\n Header: \"Source Group\",\n accessor: \"sourceGroup\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ row, value }) => (\n \n ),\n },\n {\n id: \"Source Owner\",\n Header: \"Source Owner\",\n accessor: \"sourceOwner\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ row, value }) => (\n \n ),\n },\n {\n id: \"File\",\n Header: \"File\",\n accessor: \"filename\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Full Path\",\n Header: \"Full Path\",\n accessor: \"filePath\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Assigned To\",\n Header: \"Assigned To\",\n accessor: \"assignedTo\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ row, value }) => (\n \n ),\n },\n {\n id: \"Reviewed Comments\",\n Header: \"Reviewed Comments\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ row }) => (\n \n ),\n },\n {\n id: \"Last Reviewed By\",\n Header: \"Last Reviewed By\",\n accessor: \"lastApprover\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Last Reviewed Date\",\n Header: \"Last Reviewed Date\",\n accessor: \"approvalDate\",\n filter: filterDateRange,\n Filter: DateRangeColumnFilter,\n sortType: \"custom\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Last Review Status\",\n Header: \"Last Review Status\",\n accessor: (record) =>\n STATUSES[record?.lastApprovalStatus]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n ],\n [\n approveReview,\n failReview,\n warnReview,\n clearReview,\n changeComments,\n showInfo,\n disabled,\n userId,\n changeSourceCodeOwnership,\n changeAssignedTo,\n ],\n );\n\n const closeInfo = () => {\n setShowInfoModal(false);\n setShowInfoApprovals(null);\n };\n\n const cancelComments = () => {\n setShowCommentsModal(false);\n setShowCommentsRecord(null);\n };\n const cancelSource = () => {\n setShowSourceModal(false);\n setShowSourceRecord(null);\n };\n const cancelAssignedTo = () => {\n setShowAssignedToModal(false);\n setShowSourceRecord(null);\n };\n\n const getRowColors = useCallback(\n (row) => {\n if (row.isGrouped) return {};\n const statusValue =\n colorMethod === \"last\"\n ? row?.original.lastApprovalStatus\n : row?.original.myApprovalStatus;\n\n switch (statusValue) {\n case \"P\":\n return row?.original.isExtraCommit === true\n ? { className: \"table-success font-italic font-weight-light\" }\n : { className: \"table-success\" };\n case \"W\":\n return row?.original.isExtraCommit === true\n ? { className: \"table-warning font-italic font-weight-light\" }\n : { className: \"table-warning\" };\n case \"F\":\n return row?.original.isExtraCommit === true\n ? { className: \"table-danger font-italic font-weight-light\" }\n : { className: \"table-danger\" };\n default:\n return row?.original.isExtraCommit === true\n ? { className: \"font-italic font-weight-light\" }\n : {};\n }\n },\n [colorMethod],\n );\n\n return (\n <>\n {showInfoModal ? (\n \n ) : null}\n {showCommentsModal ? (\n \n ) : null}\n {showSourceModal ? (\n \n ) : null}\n {showAssignedToModal ? (\n \n ) : null}\n \n \n );\n}\n\nfunction SourceGroupColumn({ group, codeReview, onClick, disabled }) {\n return (\n
    \n \n {!disabled ? (\n onClick(codeReview)}\n className=\"px-2\"\n >\n \n \n ) : null}\n
    \n );\n}\n\nfunction OwnerEditableColumn({ owner, codeReview, onClick, disabled }) {\n return (\n
    \n \n {!disabled ? (\n onClick(codeReview)}\n className=\"px-2\"\n >\n \n \n ) : null}\n
    \n );\n}\n\nfunction CommentsColumn({ comment }) {\n return
    {comment}
    ;\n}\n\nfunction ReviewedCommentsColumn(codeReview, userId) {\n let approvals = getAllApprovals(codeReview, userId);\n let comments = \"\";\n\n approvals.forEach((e) => {\n if (e.comment.trim() !== \"\") {\n comments = comments + \"/n\" + e.approver + \"/n\" + e.comment.trim();\n }\n });\n\n return
    {comments}
    ;\n}\n\nfunction CrColumn({ cr, group, type, synopsis, status }) {\n return (\n \n \n \n
    \n {\"CR \"}\n {cr}\n
    \n
    \n \n
    \n
    \n
    \n {synopsis}\n \n \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n }\n >\n \n \n );\n}\n\nfunction DateColum({ date }) {\n return <>{_date.display(_date.fromStamp(date))};\n}\n\nfunction RevisionColumn({ revision, revisionType, comment, date, authorName }) {\n return (\n \n \n \n
    {\"Revision: \" + revision}
    \n
    \n \n
    \n
    \n
    \n {comment}\n {authorName}\n \n }\n >\n \n \n );\n}\n\nfunction getAllApprovals(codeReview, currentUser) {\n let approvals = [];\n if (codeReview?.myApprovalDate !== \"\") {\n approvals.push({\n approver: currentUser,\n date: codeReview.myApprovalDate,\n status: codeReview.myApprovalStatus,\n comment: codeReview.myApprovalComment,\n });\n }\n let otherApprovals = codeReview ? [...codeReview.otherApprovals] : [];\n otherApprovals.sort((a, b) => (a?.date > b?.date ? 1 : -1));\n\n return approvals.concat(otherApprovals);\n}\n\nfunction ActionsColumn({\n codeReview,\n approveReview,\n clearReview,\n changeComments,\n showInfo,\n warnReview,\n failReview,\n disabled,\n userId,\n}) {\n const iHaveComments = codeReview?.myApprovalComment.trim() !== \"\";\n const approvals = getAllApprovals(codeReview, userId);\n\n return (\n <>\n \n approveReview(codeReview)}\n className=\"px-2\"\n disabled={disabled}\n >\n \n \n\n clearReview(codeReview)}\n className=\"px-2\"\n disabled={disabled}\n >\n \n \n changeComments(codeReview)}\n className=\"px-2\"\n disabled={disabled}\n >\n {!iHaveComments ? (\n \n ) : (\n \n )}\n \n \n \n warnReview(codeReview)}\n className=\"px-2\"\n disabled={disabled}\n >\n \n \n\n failReview(codeReview)}\n className=\"px-2\"\n disabled={disabled}\n >\n \n \n {approvals.length > 0 ? (\n \n \n \n
    {\"Approval Info: \"}
    \n
    \n
    \n {approvals.map((x) => (\n \n \n \n
    \n \n
    \n
    \n \n
    \n
    {STATUSES[x.status]?.description || \"\"}
    \n \n
    \n {x.comment}\n
    \n ))}\n \n }\n >\n 0 ? \"primary\" : \"secondary\"\n }\n onClick={() => {\n showInfo(approvals);\n }}\n className=\"px-2\"\n >\n {codeReview.otherApprovals.length > 0 ? (\n \"*\" + approvals.length + \"*\"\n ) : (\n \n )}\n \n \n ) : null}\n
    \n \n );\n}\n\n//\n// Separate function desired for performance reasons.\n// It was spending way too much time deciding to re-render the table or not\n// as a user types in comments.\n//\nfunction InfoModal({ approvals, onCancel }) {\n return (\n \n \n Code Reviews\n \n \n {approvals.map((x, index) => (\n <>\n {index > 0 ?
    : null}\n \n \n \n
    \n \n
    \n
    \n \n
    \n
    {STATUSES[x.status]?.description || \"\"}
    \n

    \n
    \n {x.comment.trim() != \"\" ? (\n <>\n \n \n \n \n \n \n ) : null}\n \n
    \n \n ))}\n
    \n
    \n );\n}\n\n//\n// Separate function desired for performance reasons.\n// It was spending way too much time deciding to re-render the table or not\n// as a user types in comments.\n//\nfunction CommentsModal({ record, onCancel, onSave }) {\n const [modalComment, setModalComment] = useState(record.myApprovalComment);\n\n const variant = STATUSES[record?.myApprovalStatus].variant;\n\n return (\n \n \n \n Code Review Comment\n
    \n
    {record.filename}
    \n
    \n
    \n \n \n \n setModalComment(e.target.value)}\n value={modalComment}\n maxLength={500}\n />\n \n \n \n \n \n \n \n
    \n );\n}\n\n//\n// Separate function desired for performance reasons.\n// It was spending way too much time deciding to re-render the table or not\n// as a user types in comments.\n//\nfunction SourceModal({ record, onCancel, onSave }) {\n const [modalGroup, setModalGroup] = useState(record.sourceGroup);\n const [modalOwner, setModalOwner] = useState(record.sourceOwner);\n\n const variant = STATUSES[record?.myApprovalStatus].variant;\n\n return (\n \n \n \n Source Code Ownership\n
    \n
    {record.filename}
    \n
    \n
    \n \n \n \n setModalGroup(value)}\n pseudo={true}\n isClearable\n styles={{ menu: (provided) => ({ ...provided, zIndex: 9999 }) }}\n />\n \n \n \n \n setModalOwner(value)}\n pseudo={false}\n isClearable\n styles={{ menu: (provided) => ({ ...provided, zIndex: 9999 }) }}\n />\n \n \n \n \n onSave(modalGroup, modalOwner)}\n variant=\"primary\"\n >\n Save\n \n \n \n
    \n );\n}\n\n//\n// Separate function desired for performance reasons.\n// It was spending way too much time deciding to re-render the table or not\n// as a user types in comments.\n//\nfunction AssignedToModal({ record, onCancel, onSave }) {\n const [modalAssignedTo, setModalAssignedTo] = useState(record.assignedTo);\n\n return (\n \n \n \n Assigned To Reviewer\n
    \n
    {record.filename}
    \n
    \n
    \n \n \n \n ({ ...provided, zIndex: 9999 }) }}\n />\n \n \n \n \n \n \n \n
    \n );\n}\n","import CodeReviewTable from \"./CodeReviewTable\";\nimport { useCodeReview, useCodeReviews, useCodeReviewsSearch } from \"./hooks\";\nimport Repository from \"./repositories/\";\nimport state from \"./state\";\n\nconst CodeReview = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useCodeReview,\n useAll: useCodeReviews,\n useSearch: useCodeReviewsSearch,\n // Components\n Table: CodeReviewTable,\n Repository,\n};\nexport default CodeReview;\n","import React, { useCallback, useState } from \"react\";\nimport { Button, Col, ListGroup, Nav, Row, Tab } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport CodeReview from \"../../codeReviews\";\nimport CodeReviewTable from \"../../codeReviews/CodeReviewTable\";\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\nimport CodeReviewOptions from \"./CodeReviewOptions\";\n\nconst CodeReviewOptionsMemo = React.memo(CodeReviewOptions);\nconst CodeReviewTableMemo = React.memo(CodeReviewTable);\n\nexport default function CodeReviewShow() {\n const startDate = useSearchParams(\"startDate\");\n const endDate = useSearchParams(\"endDate\");\n const group = useSearchParams(\"group\");\n const fileOwner = useSearchParams(\"fileOwner\");\n const allCommitsFromCr = useSearchParams(\"allCommitsFromCr\");\n const author = useSearchParams(\"author\");\n const authorTeam = useSearchParams(\"authorTeam\");\n const repository = useSearchParams(\"repository\");\n const title = \"Code Review\";\n\n const { canPerformCodeReview, isManager, isAdmin } = useSelector(\n (state) => state.auth,\n );\n\n if (!(canPerformCodeReview || isManager || isAdmin)) {\n return (\n \n );\n } else if (startDate === \"\" || !startDate) {\n return (\n \n );\n }\n return (\n \n );\n}\n\nfunction CodeReviewShowTable({\n startDate,\n endDate,\n fileOwner,\n author,\n authorTeam,\n allCommitsFromCr,\n group,\n title,\n repository,\n}) {\n const [key, setKey] = useState(\"Commits\");\n const [colorMethod, setColorMethod] = useState(\"last\");\n const { codeReviews, reset, getMany, loading } = CodeReview.useSearch({\n canGet: \"true\",\n search: {\n startDate: startDate,\n endDate: endDate,\n group: group,\n sourceOwner: fileOwner,\n includeAllCommitsFromCr: allCommitsFromCr,\n authorUserId: author,\n authorTeam: authorTeam,\n revisionType: repository,\n },\n });\n\n const setKeyCommits = useCallback(() => setKey(\"Commits\"), []);\n const onRefresh = useCallback(() => {\n reset();\n getMany();\n }, [getMany, reset]);\n const onTabSelect = useCallback((k) => setKey(k), []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n setColorMethod(\"last\")}\n variant={colorMethod === \"last\" ? \"primary\" : \"secondary\"}\n >\n Last Review\n \n setColorMethod(\"my\")}\n variant={colorMethod === \"my\" ? \"primary\" : \"secondary\"}\n >\n My Review\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport CodeReviewNew from \"./CodeReviewNew\";\nimport CodeReviewShow from \"./CodeReviewShow\";\n\nexport default function CodeReviewsRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Col, Row, Table } from \"react-bootstrap\";\n\nimport { _datetime } from \"../functions/dates\";\n\nfunction StampDisplay({ record, variant = \"secondary\" }) {\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
    StampWhenUser
    Created\n {_datetime.displayDateTime(\n _datetime.fromStamp(record?.createDate + record.createTime),\n )}\n {record?.createOperator}
    Last Modified\n {record?.modifyOperator === \"\"\n ? \"Never\"\n : _datetime.displayDateTime(\n _datetime.fromStamp(\n record?.modifyDate + record.modifyTime,\n ),\n )}\n {record?.modifyOperator}
    \n \n
    \n );\n}\n\nexport default StampDisplay;\n","import { bool, number, object, string } from \"yup\";\n\nconst serverSchema = object().shape({\n description: string().label(\"Description\").required().max(40),\n customerId: number().label(\"Customer\").required(),\n isInactive: bool().required().default(false),\n isNewInstall: bool().required().default(false),\n projectCreateWarning: bool().required().default(false),\n salesperson: string().label(\"Salesperson\"),\n totalContractAmount: number().label(\"Total contract amount\").max(99999999.99),\n blendedRate: number().label(\"Blended Rate\").max(9999.99),\n blendedTravelRate: number().label(\"Blended Travel Rate\").max(9999.99),\n});\n\nexport default serverSchema;\n","import React from \"react\";\nimport { Col, Form, InputGroup, Row } from \"react-bootstrap\";\n\nimport { CurrencyFormatter } from \"../common/formatters\";\nimport { Forms, FormsField, useFormsKeys } from \"../common/forms\";\nimport Customer from \"../customers\";\nimport RealUserSelect from \"../users/RealUserSelect\";\nimport contractSchema from \"./contractSchema\";\n\nexport default function ContractEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: contractSchema }}\n isDisabled={isDisabled}\n showDevTool\n >\n \n \n );\n}\n\nfunction ContractForm({ isNew, values }) {\n useFormsKeys();\n return (\n
    \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n {\"Description\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n {\"Blended Rate\"}\n \n \n \n \n \n \n \n \n \n \n \n {\"Blended Travel Rate\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Total Prepay Expected\n \n \n \n \n \n Total Prepay Received\n \n \n \n \n \n \n \n Total Billed\n \n \n \n \n \n Total Tax\n \n \n \n \n \n Total Travel\n \n \n \n \n
    \n );\n}\n\n// function CustomerSelect({ name, id = name, label, ...props }) {\n// const {\n// field: { onChange, ...field },\n// fieldState: { error },\n// } = useController({ name });\n// const {\n// formsContext: { isDisabled = false },\n// } = useFormContext();\n\n// return (\n// \n// {label ? {label} : null}\n// {\n// onChange(v);\n// }}\n// {...props}\n// />\n// \n// {error?.message}\n// \n// \n// );\n// }\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function ContractLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { bool, object, string } from \"yup\";\n\nconst contractProductCategorySchema = object().shape({\n id: string().label(\"Id\").required().max(4),\n description: string().label(\"Description\").max(30).required(),\n isInactive: bool().required().default(false),\n});\n\nexport default contractProductCategorySchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport contractProductCategorySchema from \"./contractProductCategorySchema\";\n\nexport default function ContractProductCategoryEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: contractProductCategorySchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction ContractProductCategoryForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function ContractProductCategoryLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport contractProductCategoryState from \"./state\";\n\nexport const {\n useEntities: useContractProductCategories,\n useEntity: useContractProductCategory,\n} = createEntityHooks({\n entity: contractProductCategoryState.entity,\n actions: contractProductCategoryState.actions,\n});\n","import { entitySelect } from \"../../common/entity\";\nimport { useContractProductCategories } from \"./hooks\";\n\nconst ContractProductCategorySelect = entitySelect({\n name: \"contractProductCategory\",\n useEntities: useContractProductCategories,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.description + \"(\" + e.id + \")\",\n});\n\nexport default ContractProductCategorySelect;\n","import React from \"react\";\n\nimport { SelectColumnFilterWithOptions } from \"../../common/tables/TableFilters\";\nimport { useContractProductCategories } from \"./hooks\";\n\nexport default function ContractProductCategoryTableFilter({ column }) {\n const { filterValue } = column;\n const { contractProductCategories } = useContractProductCategories();\n const _options = contractProductCategories\n .filter((s) => s.isInactive === false || s.id === filterValue)\n .map((f) => {\n return { label: f.description, value: f.id };\n });\n return ;\n}\n","import ContractProductCategoryEditor from \"./ContractProductCategoryEditor\";\nimport ContractProductCategoryLink from \"./ContractProductCategoryLink\";\nimport ContractProductCategorySelect from \"./ContractProductCategorySelect\";\nimport Table from \"./ContractProductCategoryTable\";\nimport ContractProductCategoryTableFilter from \"./ContractProductCategoryTableFilter\";\nimport {\n useContractProductCategories,\n useContractProductCategory,\n} from \"./hooks\";\nimport contractProductCategoryState from \"./state\";\n\nconst ContractProductCategory = {\n // API\n api: contractProductCategoryState.api,\n // State\n actions: contractProductCategoryState.actions,\n selectors: contractProductCategoryState.entity.selectors,\n // Hooks\n useOne: useContractProductCategory,\n useAll: useContractProductCategories,\n // Components\n TableFilter: ContractProductCategoryTableFilter,\n Table,\n Link: ContractProductCategoryLink,\n Editor: ContractProductCategoryEditor,\n Select: ContractProductCategorySelect,\n // Related Entity Objects\n};\n\nexport default ContractProductCategory;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport ContractProductCategoryLink from \"./ContractProductCategoryLink\";\n\nexport default function ContractProductCategoryTable({\n contractProductCategories,\n contractProductCategoryLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Description\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: contractProductCategory } }) =>\n contractProductCategoryLink ? (\n \n {value || contractProductCategory?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [contractProductCategoryLink],\n );\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport categoryState from \"./state\";\n\nexport const {\n useEntities: useExpenseCategories,\n useEntity: useExpenseCategory,\n} = createEntityHooks({\n entity: categoryState.entity,\n actions: categoryState.actions,\n});\n","import { entitySelect } from \"../../common/entity\";\nimport { useExpenseCategories } from \"./hooks\";\n\nconst ExpenseCategorySelect = entitySelect({\n name: \"expenseCategory\",\n useEntities: useExpenseCategories,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default ExpenseCategorySelect;\n","import { createEntityHooks } from \"../../common/entity\";\nimport taxProductState from \"./state\";\n\nexport const { useEntities: useTaxProducts, useEntity: useTaxProduct } =\n createEntityHooks({\n entity: taxProductState.entity,\n actions: taxProductState.actions,\n });\n","import { createEntityHooks } from \"../../common/entity\";\nimport taxProductCategoryState from \"./state\";\n\nexport const {\n useEntities: useTaxProductCategories,\n useEntity: useTaxProductCategory,\n} = createEntityHooks({\n entity: taxProductCategoryState.entity,\n actions: taxProductCategoryState.actions,\n});\n","import { bool, object, string } from \"yup\";\n\nconst taxProductCategorySchema = object().shape({\n id: string()\n .label(\"Id\")\n .required()\n .max(12)\n .transform((v) => `${v}`.toUpperCase()),\n description: string().label(\"Description\").max(30).required(),\n isInactive: bool().required().default(false),\n avalaraTaxCodeSaleOfSoftware: string()\n .label(\"Avalara tax code (With Sale of Software)\")\n .max(8),\n avalaraTaxCode: string().label(\"Avalara tax code\").max(8),\n});\n\nexport default taxProductCategorySchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport taxProductCategorySchema from \"./taxProductCategorySchema\";\n\nexport default function TaxProductCategoryEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: taxProductCategorySchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction TaxProductCategoryForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function TaxProductCategoryLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useTaxProductCategories } from \"./hooks\";\n\nconst TaxProductCategorySelect = entitySelect({\n name: \"taxProductCategory\",\n useEntities: useTaxProductCategories,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.description + \"(\" + e.id + \")\",\n});\n\nexport default TaxProductCategorySelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useTaxProductCategories } from \"./hooks\";\n\nconst TaxProductCategoryTableFilter = entityTableFilter({\n name: \"taxProductCategory\",\n useEntities: useTaxProductCategories,\n filter: (e, value) => e.isInactive === false || e.id === value,\n});\n\nexport default TaxProductCategoryTableFilter;\n","import { useTaxProductCategories, useTaxProductCategory } from \"./hooks\";\nimport taxProductCategoryState from \"./state\";\nimport TaxProductCategoryEditor from \"./TaxProductCategoryEditor\";\nimport TaxProductCategoryLink from \"./TaxProductCategoryLink\";\nimport TaxProductCategorySelect from \"./TaxProductCategorySelect\";\nimport Table from \"./TaxProductCategoryTable\";\nimport TaxProductCategoryTableFilter from \"./TaxProductCategoryTableFilter\";\n\nconst TaxProductCategory = {\n // API\n api: taxProductCategoryState.api,\n // State\n actions: taxProductCategoryState.actions,\n selectors: taxProductCategoryState.entity.selectors,\n // Hooks\n useOne: useTaxProductCategory,\n useAll: useTaxProductCategories,\n // Components\n Table,\n TableFilter: TaxProductCategoryTableFilter,\n Link: TaxProductCategoryLink,\n Editor: TaxProductCategoryEditor,\n Select: TaxProductCategorySelect,\n // Related Entity Objects\n};\n\nexport default TaxProductCategory;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport TaxProductCategoryLink from \"./TaxProductCategoryLink\";\n\nexport default function TaxProductCategoryTable({\n taxProductCategories,\n taxProductCategoryLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Description\", \"Avalara Tax Code\", \"Avalara Code w/ Sale\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: taxProductCategory } }) =>\n taxProductCategoryLink ? (\n \n {value || taxProductCategory?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Avalara Tax Code\",\n Header: \"Avalara Tax Code\",\n accessor: \"avalaraTaxCode\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Avalara Code w/ Sale\",\n Header: \"Avalara Code w/ Sale\",\n accessor: \"avalaraTaxCodeSaleOfSoftware\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n ],\n [taxProductCategoryLink],\n );\n return (\n \n );\n}\n","import { bool, object, string } from \"yup\";\n\nconst taxProductSchema = object().shape({\n id: string()\n .label(\"Id\")\n .required()\n .max(12)\n .transform((v) => `${v}`.toUpperCase()),\n description: string().label(\"Description\").max(60).required(),\n longDescription: string().label(\"Description\").max(500),\n isInactive: bool().required().default(false),\n productTaxCategory: string().label(\"Product Tax Category\").max(12).required(),\n});\n\nexport default taxProductSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport TaxProductCategory from \"../taxProductCategories\";\nimport taxProductSchema from \"./taxProductSchema\";\n\nexport default function TaxProductEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n TaxProductCategory.useAll({\n canGet: true,\n });\n\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: taxProductSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction TaxProductForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { useTaxProduct } from \"./hooks\";\n\nexport default function TaxProductLink({ id, children }) {\n const { taxProduct } = useTaxProduct({ id });\n\n if (!taxProduct?.id) return ;\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n \n {children || taxProduct?.description}\n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useTaxProducts } from \"./hooks\";\n\nconst TaxProductSelect = entitySelect({\n name: \"taxProduct\",\n useEntities: useTaxProducts,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.description + \"(\" + e.id + \")\",\n});\n\nexport default TaxProductSelect;\n","import { useTaxProduct, useTaxProducts } from \"./hooks\";\nimport taxProductState from \"./state\";\nimport TaxProductEditor from \"./TaxProductEditor\";\nimport TaxProductLink from \"./TaxProductLink\";\nimport TaxProductSelect from \"./TaxProductSelect\";\nimport Table from \"./TaxProductTable\";\nimport TaxProductTableFilter from \"./TaxProductTableFilter\";\n\nconst TaxProduct = {\n // API\n api: taxProductState.api,\n // State\n actions: taxProductState.actions,\n selectors: taxProductState.entity.selectors,\n // Hooks\n useOne: useTaxProduct,\n useAll: useTaxProducts,\n // Components\n Table,\n TableFilter: TaxProductTableFilter,\n Link: TaxProductLink,\n Editor: TaxProductEditor,\n Select: TaxProductSelect,\n // Related Entity Objects\n};\n\nexport default TaxProduct;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport TaxProductCategory from \"../taxProductCategories\";\nimport TaxProductLink from \"./TaxProductLink\";\n\nexport default function TaxProductTable({\n taxProducts,\n taxProductLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Description\", \"Tax Category\", \"Long Description\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: taxProduct } }) =>\n taxProductLink ? (\n \n {value || taxProduct?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Long Description\",\n Header: \"Long Description\",\n accessor: \"longDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Tax Category\",\n Header: \"Tax Category\",\n accessor: \"taxProductCategory\",\n Filter: TaxProductCategory.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n ],\n [taxProductLink],\n );\n return (\n \n );\n}\n","import React from \"react\";\n\nimport { SelectColumnFilterWithOptions } from \"../../common/tables/TableFilters\";\nimport { useTaxProducts } from \"./hooks\";\n\nexport default function TaxProductTableFilter({ column }) {\n const { filterValue } = column;\n const { taxProducts } = useTaxProducts();\n const _options = taxProducts\n .filter((s) => s.isInactive === false || s.id === filterValue)\n .map((f) => {\n return { label: f.description, value: f.id };\n });\n return ;\n}\n","import { bool, object, string } from \"yup\";\n\nconst contractProductSchema = object().shape({\n id: string().label(\"Id\").required().max(6),\n description: string().label(\"Description\").required().max(30),\n isInactive: bool().required().default(false),\n isPriorityIssue: bool().required().default(false),\n isApplicbleForCommission: bool().required().default(false),\n isFixedCostWithAllNonbillTime: bool().required().default(false),\n isExpenseTripBillable: bool().required().default(false),\n willCreateProject: bool().required().default(false),\n willCreateExpenseTrip: bool().required().default(false),\n taxProduct: string().label(\"Tax Product\").required().max(12),\n projectGroup: string().label(\"Project Group\").max(6),\n defaultOwner: string().label(\"Default Owner\").max(3),\n projectType: string().label(\"Project Type\").max(2),\n sortValue: string().label(\"Sort value\").max(6),\n});\n\nexport default contractProductSchema;\n","import React from \"react\";\nimport { Button, Card, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport ExpenseCategorySelect from \"../../expenses/categories/ExpenseCategorySelect\";\nimport TaxProduct from \"../../invoices/taxProducts\";\nimport TypeSelect from \"../../projects/types/TypeSelect\";\nimport GroupSelect from \"../../users/groups/GroupSelect\";\nimport RealUserSelect from \"../../users/RealUserSelect\";\nimport ContractProductCategory from \"../contractProductCategories\";\nimport contractProductSchema from \"./contractProductSchema\";\n\nexport default function ContractProductEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: contractProductSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction ContractProductForm({ isNew }) {\n const { submitForm, watch } = useFormContext();\n\n const willCreateProject = watch(\"willCreateProject\");\n const willCreateExpenseTrip = watch(\"willCreateExpenseTrip\");\n\n useFormsKeys();\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 \n \n \n\n \n {!willCreateProject ? (\n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n )}\n \n\n \n {!willCreateExpenseTrip ? (\n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n {\n submitForm();\n }}\n >\n Submit\n \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport contractProductState from \"./state\";\n\nexport const {\n useEntities: useContractProducts,\n useEntity: useContractProduct,\n} = createEntityHooks({\n entity: contractProductState.entity,\n actions: contractProductState.actions,\n});\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { useContractProduct } from \"./hooks\";\n\nexport default function ContractProductLink({ id, children }) {\n const { contractProduct } = useContractProduct({ id });\n\n if (!contractProduct?.id) return ;\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n \n {children || contractProduct?.description}\n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useContractProducts } from \"./hooks\";\n\nconst ContractProductSelect = entitySelect({\n name: \"contractProduct\",\n useEntities: useContractProducts,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.description + \"(\" + e.id + \")\",\n});\n\nexport default ContractProductSelect;\n","import React from \"react\";\n\nimport { SelectColumnFilterWithOptions } from \"../../common/tables/TableFilters\";\nimport { useContractProducts } from \"./hooks\";\n\nexport default function ContractProductTableFilter({ column }) {\n const { filterValue } = column;\n const { contractProducts } = useContractProducts();\n const _options = contractProducts\n .filter((s) => s.isInactive === false || s.id === filterValue)\n .map((f) => {\n return { label: f.description, value: f.id };\n });\n return ;\n}\n","import ContractProductEditor from \"./ContractProductEditor\";\nimport ContractProductLink from \"./ContractProductLink\";\nimport ContractProductSelect from \"./ContractProductSelect\";\nimport Table from \"./ContractProductTable\";\nimport ContractProductTableFilter from \"./ContractProductTableFilter\";\nimport { useContractProduct, useContractProducts } from \"./hooks\";\nimport contractProductState from \"./state\";\n\nconst ContractProduct = {\n // API\n api: contractProductState.api,\n // State\n actions: contractProductState.actions,\n selectors: contractProductState.entity.selectors,\n // Hooks\n useOne: useContractProduct,\n useAll: useContractProducts,\n // Components\n Table,\n TableFilter: ContractProductTableFilter,\n Link: ContractProductLink,\n Editor: ContractProductEditor,\n Select: ContractProductSelect,\n // Related Entity Objects\n};\n\nexport default ContractProduct;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport TaxProduct from \"../../invoices/taxProducts\";\nimport ContractProductCategory from \"../contractProductCategories\";\nimport ContractProductLink from \"./ContractProductLink\";\n\nexport default function ContractProductTable({\n contractProducts,\n contractProductLink = true,\n Components: OverrideComponents,\n layout = [\n \"Id\",\n \"Description\",\n \"Sort Value\",\n \"Contract Product Category\",\n \"Tax Product\",\n ],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: contractProduct } }) =>\n contractProductLink ? (\n \n {value || contractProduct?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Sort Value\",\n Header: \"Sort Value\",\n accessor: \"sortValue\",\n },\n {\n id: \"Tax Product\",\n Header: \"Tax Product\",\n accessor: \"taxProduct\",\n Filter: TaxProduct.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Contract Product Category\",\n Header: \"Contract Product Category\",\n accessor: \"contractProductCategory\",\n Filter: ContractProductCategory.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n ],\n [contractProductLink],\n );\n return (\n \n );\n}\n","import { bool, number, object, string } from \"yup\";\n\nconst contractProductDefaultCrSchema = object().shape({\n synopsis: string().label(\"Synopsis\").required().max(60),\n description: string().label(\"Description\").required().max(500),\n isInactive: bool().required().default(false),\n willPrefixDateOnSynopsis: bool().required().default(false),\n targetDeliveryDays: number().label(\"Target Delivery Days\"),\n group: string().label(\"Group\").max(6),\n type: string().label(\"Project Type\").max(2),\n module: string().label(\"Module\").max(10),\n});\n\nexport default contractProductDefaultCrSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport ModuleSelect from \"../../crs/modules/ModuleSelect\";\nimport TypeSelect from \"../../projects/types/TypeSelect\";\nimport GroupSelect from \"../../users/groups/GroupSelect\";\nimport contractProductDefaultCrSchema from \"./contractProductDefaultCrSchema\";\n\nexport default function ContractProductDefaultCrEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: contractProductDefaultCrSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction ContractProductDefaultCrForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\n return (\n
    \n \n \n \n \n {!isNew ? (\n \n ) : null}\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n {\n submitForm();\n }}\n >\n Submit\n \n \n );\n}\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nexport default function ContractProductDefaultCrLink({\n id,\n children,\n onClick,\n}) {\n if (!id) return ;\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n {onClick ? (\n \n ) : (\n \n {children || id}\n \n )}\n \n );\n}\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport TypeDescription from \"../../projects/types/TypeDescription\";\nimport TypeTableFilter from \"../../projects/types/TypeTableFilter\";\nimport GroupDescription from \"../../users/groups/GroupDescription\";\nimport GroupTableFilter from \"../../users/groups/GroupTableFilter\";\nimport ContractProductDefaultCrLink from \"./ContractProductDefaultCrLink\";\n\nexport default function ContractProductDefaultCrTable({\n contractProductDefaultCrs,\n contractProductDefaultCrLink = true,\n onClick,\n Components: OverrideComponents,\n layout = [\"Id\", \"Synopsis\", \"Description\", \"Group\", \"Type\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: contractProductDefaultCr } }) =>\n contractProductDefaultCrLink ? (\n \n {value || contractProductDefaultCr?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Inactive?\",\n Header: \"Inactive?\",\n accessor: ({ isInactive }) => (isInactive ? \"☠\" : \" \"),\n },\n {\n id: \"Group\",\n Header: \"Group\",\n accessor: \"group\",\n Filter: GroupTableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Type\",\n Header: \"Type\",\n accessor: \"type\",\n Filter: TypeTableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n ],\n [contractProductDefaultCrLink, onClick],\n );\n return (\n {\n if (row.isGrouped) return {};\n if (row?.original.isInactive)\n return {\n className: \"table-danger\",\n };\n else return {};\n }}\n {...props}\n />\n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport contractProductDefaultCrState from \"./state\";\n\nexport const {\n useEntities: useContractProductDefaultCrs,\n useEntity: useContractProductDefaultCr,\n} = createEntityHooks({\n entity: contractProductDefaultCrState.entity,\n actions: contractProductDefaultCrState.actions,\n});\n","import ContractProductDefaultCrEditor from \"./ContractProductDefaultCrEditor\";\nimport ContractProductDefaultCrLink from \"./ContractProductDefaultCrLink\";\nimport Table from \"./ContractProductDefaultCrTable\";\nimport {\n useContractProductDefaultCr,\n useContractProductDefaultCrs,\n} from \"./hooks\";\nimport contractProductDefaultCrState from \"./state\";\n\nconst ContractProductDefaultCr = {\n // API\n api: contractProductDefaultCrState.api,\n // State\n actions: contractProductDefaultCrState.actions,\n selectors: contractProductDefaultCrState.entity.selectors,\n // Hooks\n useOne: useContractProductDefaultCr,\n useAll: useContractProductDefaultCrs,\n // Components\n Table,\n Link: ContractProductDefaultCrLink,\n Editor: ContractProductDefaultCrEditor,\n // Related Entity Objects\n};\n\nexport default ContractProductDefaultCr;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Customer from \"../customers\";\nimport UserLink from \"../users/UserLink\";\nimport ContractLink from \"./ContractLink\";\n\nconst DEFAULT_COMPONENTS = {\n Customer: ({ value }) => (\n \n {value}\n \n ),\n};\n\nexport default function ContractTable({\n contracts,\n contractLink = true,\n Components: OverrideComponents,\n layout = [\n \"Customer\",\n \"Description\",\n \"Go Live Date\",\n \"New Install?\",\n \"Project Manager\",\n \"Projects Open / Total\",\n ],\n ...props\n}) {\n const Components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...OverrideComponents }),\n [OverrideComponents],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: contract } }) =>\n contractLink ? (\n \n {value || contract?.hostname || contract?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"text\",\n Cell: Components.Customer,\n },\n {\n id: \"Go Live Date\",\n Header: \"Go Live Date\",\n accessor: \"goliveDate\",\n disableFilters: true,\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"New Install?\",\n Header: \"New Install?\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isNewInstall }) => (isNewInstall ? \"✅\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Salesperson\",\n Header: \"Salesperson\",\n accessor: \"salesperson\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Project Manager\",\n Header: \"Project Manager\",\n accessor: \"projectManager\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Projects Open / Total\",\n Header: \"Projects Open / Total\",\n format: { alignment: { horizontal: \"center\" } },\n Cell: ({ row: { original: contract } }) =>\n contract?.openProjects +\n \" / \" +\n (contract?.closedProjects + contract?.openProjects),\n },\n ],\n [Components, contractLink],\n );\n return (\n \n );\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport contractState from \"./state\";\n\nexport const {\n useEntities: useContracts,\n useEntity: useContract,\n useEntitiesBySearch: useContractsSearch,\n} = createEntityHooks({\n entity: contractState.entity,\n actions: contractState.actions,\n parseId: (id) => {\n const nextId = parseIntId(id);\n return nextId === 0 ? undefined : nextId;\n },\n expire: {\n key: \"hours\",\n value: 12,\n },\n});\n","import ContractEditor from \"./ContractEditor\";\nimport ContractLink from \"./ContractLink\";\nimport ContractProductCategory from \"./contractProductCategories\";\nimport ContractProduct from \"./contractProducts\";\nimport ContractProductDefaultCr from \"./contractProductsDefaultCrs\";\nimport Table from \"./ContractTable\";\nimport { useContract, useContracts, useContractsSearch } from \"./hooks\";\nimport state from \"./state\";\n\nconst Contract = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useContract,\n useAll: useContracts,\n useSearch: useContractsSearch,\n // Components\n Table,\n Link: ContractLink,\n Editor: ContractEditor,\n // Related Entity Objects\n ContractProduct: ContractProduct,\n ContractProductDefaultCr: ContractProductDefaultCr,\n ContractProductCategory: ContractProductCategory,\n};\n\nexport default Contract;\n","import React, { useMemo } from \"react\";\n\nimport { CurrencyFormatter } from \"../common/formatters\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport ProjectLink from \"../projects/ProjectLink\";\nimport ContractProductCategoryLink from \"./contractProductCategories/ContractProductCategoryLink\";\nimport ContractProductCategoryTableFilter from \"./contractProductCategories/ContractProductCategoryTableFilter\";\nimport ContractProductLink from \"./contractProducts/ContractProductLink\";\nimport ContractProductTableFilter from \"./contractProducts/ContractProductTableFilter\";\n\nexport default function ContractDetailTable({\n data,\n layout = [\n \"Description\",\n \"Project\",\n \"Open CRs?\",\n \"Add On\",\n \"Budget\",\n \"Invoiced\",\n \"Open\",\n \"Writeoff\",\n \"Budget Difference\",\n \"Travel Time & Expenses\",\n \"License\",\n ],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Contract Product\",\n Header: \"Contract Product\",\n accessor: \"contractProduct\",\n Filter: ContractProductTableFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n {value}\n ),\n },\n {\n id: \"Contract Product Category\",\n Header: \"Contract Product Category\",\n accessor: \"contractProductCategory\",\n Filter: ContractProductCategoryTableFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n id: \"Project\",\n Header: \"Project\",\n accessor: \"project\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => {value},\n },\n {\n id: \"Open CRs?\",\n Header: \"Open CRs?\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ openCrs }) => (openCrs !== \"\" ? \"❗\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"License\",\n Header: \"License\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isLicense }) => (isLicense ? \"✅\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Add On\",\n Header: \"Add On\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ isAddOn }) => (isAddOn ? \"➕\" : \" \"),\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Budget\",\n Header: \"Budget\",\n accessor: \"budgetedAmount\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.budgetedAmount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Invoiced\",\n Header: \"Invoiced\",\n accessor: \"billedAmount\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.billedAmount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Budget Difference\",\n Header: \"Budget Difference\",\n accessor: \"budgetDifference\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.budgetDifference) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Open\",\n Header: \"Open\",\n accessor: \"toBeBilled\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.toBeBilled) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Writeoff\",\n Header: \"Writeoff\",\n accessor: \"nonBillAmount\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.nonBillAmount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Travel Time & Expenses\",\n Header: \"Travel Time & Expenses\",\n accessor: ({ travelBillableTime, travelExpense }) =>\n travelBillableTime + travelExpense,\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return (\n parseFloat(row.original.travelBillableTime) +\n parseFloat(row.original.travelExpense) +\n total\n );\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Travel Time\",\n Header: \"Travel Time\",\n accessor: \"travelBillableTime\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.travelBillableTime) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Travel Time Writeoff\",\n Header: \"Travel Time Writeoff\",\n accessor: \"travelNonBillableTime\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.travelNonBillableTime) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n {\n id: \"Travel Expense\",\n Header: \"Travel Expense\",\n accessor: \"travelExpense\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.travelExpense) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n \n );\n },\n },\n ],\n [],\n );\n return (\n {\n if (row.isGrouped) return {};\n\n if (row?.original) {\n if (row?.original?.srce === \"R\") {\n return { className: \"table-info\" };\n } else if (\n row?.original.toBeBilled === 0 &&\n row?.original.billedAmount === 0 &&\n row?.original.nonBillAmount === 0\n ) {\n return {};\n } else if (\n row?.original.budgetedAmount >\n row?.original.toBeBilled + row?.original.billedAmount\n ) {\n return { className: \"table-success\" };\n } else if (\n row?.original.budgetedAmount ===\n row?.original.toBeBilled + row?.original.billedAmount\n ) {\n return { className: \"table-warning\" };\n } else {\n return {\n className: \"table-danger\",\n };\n }\n }\n }}\n {...props}\n />\n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function NavSidebarItem({ children, to, className, ...props }) {\n const classNames = `text-secondary text-decoration-none ${className}`;\n\n const Item = ({ to, children, ...props }) => {\n if (to) {\n return (\n \n {children}\n \n );\n } else if (_.isString(children)) {\n return

    {children}

    ;\n }\n };\n\n return (\n
  • \n \n {children}\n \n
  • \n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function ContractNavSidebar({ children }) {\n return (\n \n Contracts\n New Contract\n
    \n \n Contract Products\n \n \n New Contract Product\n \n
    \n \n Contract Product Categories\n \n \n New Contract Product Category\n \n
    \n Scheduling\n {children}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../common/components/StampDisplay\";\nimport Page from \"../../common/pages/Page\";\nimport Contract from \"../../contracts\";\nimport ContractDetailTable from \"../../contracts/ContractDetailTable\";\nimport ContractNavSidebar from \"./ContractNavSidebar\";\n\nexport default function ContractEdit() {\n const id = parseInt(useParams().id);\n const { contract, updateOne, loading } = Contract.useOne({\n id,\n canGet: true,\n });\n const title = `Contract${\n contract?.description ? \": \" + contract.id + \"-\" + contract.description : \"\"\n }`;\n\n const { isAdmin, canMaintainContracts } = useSelector((state) => state.auth);\n\n const tableData = useMemo(() => {\n let output = [];\n if (contract?.details) output = output.concat(contract?.details);\n if (contract?.oslProjects) output = output.concat(contract?.oslProjects);\n return output;\n }, [contract?.details, contract?.oslProjects]);\n\n if (!(canMaintainContracts || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n // eslint-disable-next-line no-constant-condition\n\n return (\n }\n >\n {contract ? (\n <>\n updateOne(contract)}\n isDisabled={loading || !(canMaintainContracts || isAdmin)}\n />\n \n\n \n \n ) : null}\n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Button, Col, Form, Row, Tab, Tabs } from \"react-bootstrap\";\nimport { useDispatch } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport Select from \"react-select\";\n\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\nimport Contract from \"../../contracts\";\nimport Customer from \"../../customers\";\nimport ContractNavSidebar from \"./ContractNavSidebar\";\n\nconst TABLE_COMPONENTS = {\n Customer: ({ value }) => {value},\n};\n\nconst projectOpenOptions = [];\nprojectOpenOptions.push({ label: \"\\u00A0\", value: \"\" });\nprojectOpenOptions.push({ label: \"Projects are open\", value: \"O\" });\nprojectOpenOptions.push({ label: \"All projects are closed\", value: \"C\" });\n\nconst contractStatusOptions = [];\ncontractStatusOptions.push({ label: \"\\u00A0\", value: \"\" });\ncontractStatusOptions.push({ label: \"Active\", value: \"N\" });\ncontractStatusOptions.push({ label: \"Inactive\", value: \"Y\" });\n\nexport default function ContractIndex() {\n const [activeTab, setActiveTab] = useState(\"contracts\");\n const [loading, setLoading] = useState(false);\n const customerIdParam = parseInt(useSearchParams(\"customer\"));\n const contractProductIdParam = useSearchParams(\"contractProduct\");\n const projectsOpenParam = useSearchParams(\"projectsOpen\");\n const statusParam = useSearchParams(\"status\");\n const [searchCtr, setSearchCtr] = useState(0);\n const [contracts, setContracts] = useState([]);\n\n const [projectsOpenSearch, setProjectsOpenSearch] = useState(\n _.isUndefined(projectsOpenParam) ? \"\" : projectsOpenParam,\n );\n const [contractProductIdSearch, setContractProductIdSearch] = useState(\n contractProductIdParam,\n );\n const [customerIdSearch, setCustomerIdSearch] = useState(customerIdParam);\n const [statusSearch, setStatusSearch] = useState(\n _.isUndefined(statusParam) ? \"N\" : statusParam,\n );\n\n const history = useHistory();\n const dispatch = useDispatch();\n\n Contract.ContractProduct.useAll({\n canGet: true,\n });\n Contract.ContractProductCategory.useAll({\n canGet: true,\n });\n\n let title = \"Contract Search\";\n\n const searchObject = useMemo(() => {\n const out = {};\n if (!_.isNaN(customerIdParam)) out.customerId = customerIdParam;\n if (!_.isEmpty(contractProductIdParam))\n out.contractProductId = contractProductIdParam;\n if (!_.isEmpty(projectsOpenParam)) out.projectsOpen = projectsOpenParam;\n if (!_.isEmpty(statusParam)) out.isInactive = statusParam;\n return out;\n }, [contractProductIdParam, customerIdParam, projectsOpenParam, statusParam]);\n\n // const { contracts, reset, getMany } = Contract.useAll({\n // canGet: \"false\",\n // });\n\n const runSearch = useCallback(() => {\n setLoading(true);\n dispatch(Contract.actions.getMany(searchObject))\n .then(unwrapResult)\n .then((result) => {\n setContracts(result.data);\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n })\n .catch(setLoading(false));\n }, [dispatch, searchObject]);\n\n useEffect(() => {\n runSearch();\n }, [runSearch, searchCtr]);\n\n const clickedSearch = () => {\n let searchString = \"/contracts?projectsOpen=\" + projectsOpenSearch;\n if (!_.isUndefined(customerIdSearch) && customerIdSearch !== \"\")\n searchString = searchString + \"&customer=\" + customerIdSearch;\n if (\n !_.isUndefined(contractProductIdSearch) &&\n contractProductIdSearch !== \"\"\n )\n searchString =\n searchString + \"&contractProduct=\" + contractProductIdSearch;\n if (!_.isEmpty(statusSearch) && statusSearch !== \"\")\n searchString = searchString + \"&status=\" + statusSearch;\n\n setActiveTab(\"contracts\");\n setSearchCtr(searchCtr + 1);\n history.push(searchString);\n };\n\n return (\n }>\n setActiveTab(k)}\n >\n \n {\n setSearchCtr(searchCtr + 1);\n }}\n />\n \n \n \n \n Contract Product\n setContractProductIdSearch(value)}\n isClearable\n styles={{\n menu: (provided) => ({ ...provided, zIndex: 9999 }),\n }}\n />\n \n \n \n \n Customer\n setCustomerIdSearch(value)}\n isClearable\n styles={{\n menu: (provided) => ({ ...provided, zIndex: 9999 }),\n }}\n />\n \n \n \n \n Contract status\n x.value === statusSearch,\n )}\n options={contractStatusOptions}\n onChange={(x) => setStatusSearch(x.value)}\n >\n \n \n Project statuses\n x.value === projectsOpenSearch,\n )}\n options={projectOpenOptions}\n onChange={(x) => setProjectsOpenSearch(x.value)}\n >\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport Page from \"../../common/pages/Page\";\nimport Contract from \"../../contracts\";\nimport ContractNavSidebar from \"./ContractNavSidebar\";\n\nexport default function ContractNew() {\n const { createOne } = Contract.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n // eslint-disable-next-line no-constant-condition\n else if (true) {\n return (\n }\n lead=\"This is not supported yet\"\n />\n );\n } else {\n return (\n }>\n \n createOne(server).then(({ id }) => setRedirect(`/contracts/${id}`))\n }\n />\n \n );\n }\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\n\nexport default function ContractProductCategoryEdit() {\n const id = String(useParams().id).toUpperCase();\n const { contractProductCategory, loading, updateOne } =\n Contract.ContractProductCategory.useOne({\n id,\n canGet: true,\n });\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n }\n\n return (\n }>\n {contractProductCategory ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Contract Product Category not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\n\nexport default function ContractProductCategoryIndex() {\n const [active, setActive] = useState(true);\n const { contractProductCategories, loading, reset } =\n Contract.ContractProductCategory.useAll({\n canGet: true,\n });\n const data = useMemo(() => {\n return contractProductCategories.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, contractProductCategories]);\n return (\n }\n >\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport ContractProductCategory from \"../../../contracts/contractProductCategories\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\n\nexport default function ContractProductCategoryNew() {\n const { createOne } = ContractProductCategory.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }\n >\n \n createOne(contractProductCategory).then(({ id }) =>\n setRedirect(`/contracts/contract-product-categories/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\nimport ContractProductCategoryEdit from \"./ContractProductCategoryEdit\";\nimport ContractProductCategoryIndex from \"./ContractProductCategoryIndex\";\nimport ContractProductCategoryNew from \"./ContractProductCategoryNew\";\n\nexport default function ContractProductCategoriesPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Contract from \"../../../contracts\";\n\nexport default function ContractProductDefaultCrEdit({\n loading,\n onSubmit,\n contractProductDefaultCr,\n}) {\n return (\n <>\n {contractProductDefaultCr ? (\n <>\n \n\n \n \n ) : (\n

    Contract Product Default Cr not found.

    \n )}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\nimport ContractProductDefaultCrEdit from \"./ContractProductDefaultCrEdit\";\n\nexport default function ContractProductDefaultCrEditPage() {\n const id = String(useParams().id).toUpperCase();\n const { contractProductDefaultCr, loading, updateOne } =\n Contract.ContractProductDefaultCr.useOne({\n id,\n canGet: true,\n });\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n }\n\n return (\n }\n >\n {\n updateOne(values);\n }}\n />\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\n\nexport default function ContractProductDefaultCrIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Contract.ContractProductDefaultCr.useAll(\n {\n canGet: true,\n },\n );\n\n const data = useMemo(() => {\n return entities.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, entities]);\n\n return (\n }\n >\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport Contract from \"../../../contracts\";\n\nexport default function ContractProductDefaultCrNew({\n loading,\n onSubmit,\n values,\n}) {\n return (\n <>\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\nimport ContractProductDefaultCrNew from \"./ContractProductDefaultCrNew\";\n\nexport default function ContractProductDefaultCrNewPage() {\n const contractProductId = String(useParams().id).toUpperCase();\n const { contractProduct } = Contract.ContractProduct.useOne({\n id: contractProductId,\n canGet: true,\n });\n\n const { loading, createOne } = Contract.ContractProductDefaultCr.useOne({\n canGet: true,\n });\n const [, setRedirect] = useRedirect();\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n }\n\n return (\n }\n >\n {contractProduct ? (\n \n createOne(contractProduct).then(({ id }) =>\n setRedirect(`/contracts/contract-product-default-crs/${id}`),\n )\n }\n />\n ) : (\n

    Contract Product Not found.

    \n )}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\nimport ContractProductDefaultCrEditPage from \"./ContractProductDefaultCrEditPage\";\nimport ContractProductDefaultCrIndex from \"./ContractProductDefaultCrIndex\";\nimport ContractProductDefaultCrNewPage from \"./ContractProductDefaultCrNewPage\";\n\nexport default function ContractProductDefaultCrsPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport Contract from \"../../../contracts\";\nimport ContractProductDefaultCrEdit from \"./ContractProductDefaultCrEdit\";\n\nexport default function ContractProductDefaultCrEditModal({\n id,\n show,\n onHide,\n onSave,\n}) {\n const { contractProductDefaultCr, loading, updateOne } =\n Contract.ContractProductDefaultCr.useOne({\n id,\n canGet: true,\n });\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n \n \n \n {\"You do not have access to this feature\"}\n \n \n \n );\n }\n\n return (\n \n \n \n {\"Default Cr record: \" + id}\n \n \n \n updateOne(values).then(() => onSave())}\n />\n \n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport Contract from \"../../../contracts\";\nimport ContractProductDefaultCrNew from \"./ContractProductDefaultCrNew\";\n\nexport default function ContractProductDefaultCrNewModal({\n contractProductId,\n show,\n onHide,\n onSave,\n}) {\n const { createOne } = Contract.ContractProductDefaultCr.useOne({});\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n \n \n \n {\"You do not have access to this feature\"}\n \n \n \n );\n }\n\n return (\n \n \n \n {\"New Default CR Record for \" + contractProductId}\n \n \n \n createOne(values).then(() => onSave())}\n />\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Accordion, Button, Card } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractProductCategory from \"../../../contracts/contractProductCategories\";\nimport ContractProductDefaultCrTable from \"../../../contracts/contractProductsDefaultCrs/ContractProductDefaultCrTable\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\nimport ContractProductDefaultCrEditModal from \"../contractProductDefaultCrs/ContractProductDefaultCrEditModal\";\nimport ContractProductDefaultCrNewModal from \"../contractProductDefaultCrs/ContractProductDefaultCrNewModal\";\n\nexport default function ContractProductEdit() {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showNewModal, setShowNewModal] = useState(false);\n const [modifyModalId, setModifyModalId] = useState();\n\n const id = String(useParams().id).toUpperCase();\n const { contractProduct, loading, updateOne, reset } =\n Contract.ContractProduct.useOne({\n id,\n canGet: true,\n });\n\n ContractProductCategory.useAll({\n canGet: true,\n });\n\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n }\n\n return (\n }>\n {contractProduct ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n \n Default Crs\n \n \n \n {\n setShowModifyModal(true);\n setModifyModalId(defaultCrId);\n }}\n />\n setShowNewModal(true)}\n >\n Add Default Cr\n \n \n \n \n \n\n \n\n {showModifyModal ? (\n setShowModifyModal(false)}\n onSave={() => {\n setShowModifyModal(false);\n reset();\n }}\n show={true}\n />\n ) : null}\n\n {showNewModal ? (\n setShowNewModal(false)}\n onSave={() => {\n setShowNewModal(false);\n reset();\n }}\n show={true}\n contractProductId={id}\n />\n ) : null}\n \n ) : (\n

    Contract Product not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Contract from \"../../../contracts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\n\nexport default function ContractProductIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Contract.ContractProduct.useAll({\n canGet: true,\n });\n\n Contract.ContractProductCategory.useAll({\n canGet: true,\n });\n\n const data = useMemo(() => {\n return entities.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, entities]);\n\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport ContractProduct from \"../../../contracts/contractProducts\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\n\nexport default function ContractProductNew() {\n const { createOne } = ContractProduct.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainContracts, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainContracts || isAdmin)) {\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n }\n\n return (\n }>\n \n createOne(contractProduct).then(({ id }) =>\n setRedirect(`/contracts/contract-products/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport ContractNavSidebar from \"../ContractNavSidebar\";\nimport ContractProductEdit from \"./ContractProductEdit\";\nimport ContractProductIndex from \"./ContractProductIndex\";\nimport ContractProductNew from \"./ContractProductNew\";\n\nexport default function ContractProductsPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useState } from \"react\";\nimport { Button, ButtonGroup, Col, Row, ToggleButton } from \"react-bootstrap\";\nimport {\n BsArrowLeftShort,\n BsArrowRightShort,\n BsArrowsCollapse,\n BsArrowsExpand,\n BsEye,\n BsEyeSlashFill,\n BsFillLockFill,\n} from \"react-icons/bs\";\n\nimport useSettings from \"../../../settings/useSettings\";\nimport { _date } from \"../../functions/dates\";\n\nexport function GoogleCalendarForm({\n showMode = \"MONTH\",\n calendars = [],\n height = 800,\n toggleLock = false,\n}) {\n const [startDate, setStartDate] = useState(moment());\n const [endDate, setEndDate] = useState(moment());\n const [modeValue, setModeValue] = useState(showMode);\n const [lastCalendarInput, setLastCalendarInput] = useState([]);\n const [calendarValues, setCalendarValues] = useState([]);\n const [currentHeight, setCurrentHeight] = useState(height);\n\n const colors = [\n { input: \"#4285F4\", actual: \"#668CD9\" }, //cobalt\n { input: \"#33B679\", actual: \"#65AD89\" }, //sage\n { input: \"#EF6C00\", actual: \"#C7561E\" }, //pumpkin\n { input: \"#D81B60\", actual: \"#E67399\" }, //cherry blossom\n { input: \"#E4C441\", actual: \"#E0C240\" }, //citron\n { input: \"#9E69AF\", actual: \"#603F99\" }, //amethyst\n { input: \"#D50000\", actual: \"#AD2D2D\" }, //tomato\n { input: \"#A79B8E\", actual: \"#C4A883\" }, //birch\n { input: \"#616161\", actual: \"#737373\" }, //graphite\n { input: \"#F4511E\", actual: \"#E6804D\" }, //tangerine\n { input: \"#795548\", actual: \"#914D14\" }, //cocoa\n { input: \"#B39DDB\", actual: \"#8C66D9\" }, //wisteria\n { input: \"#E67C73\", actual: \"#B5515D\" }, //flamingo\n { input: \"#039BE5\", actual: \"#59BFB3\" }, //peacock\n { input: \"#F6BF26\", actual: \"#CF9911\" }, //banana\n { input: \"#0B8043\", actual: \"#3C995B\" }, //basil\n { input: \"#C0CA33\", actual: \"#A7B828\" }, //avocado\n { input: \"#7986CB\", actual: \"#668CB3\" }, //lavendar\n { input: \"#AD1457\", actual: \"#BE9494\" }, //radicchio\n { input: \"#8E24AA\", actual: \"#9643A5\" }, //grape\n { input: \"#F09300\", actual: \"#D47F1E\" }, //mango\n { input: \"#3F51B5\", actual: \"#536CA6\" }, //blueberry\n { input: \"#7CB342\", actual: \"#7EC225\" }, //pistachio\n { input: \"#009688\", actual: \"#41A587\" }, //eucalyptus\n ];\n\n const offsetDate = (offset = 0) => {\n let key = \"month\";\n if (modeValue === \"WEEK\") key = \"week\";\n if (modeValue === \"DAY\") key = \"day\";\n setStartDate((d) => {\n return moment(d).subtract(offset, key);\n });\n setEndDate((d) => {\n return moment(d).subtract(offset, key);\n });\n };\n\n if (!_.isEqual(lastCalendarInput, calendars)) {\n let newCalendarsValues = [];\n\n // retain existing records if its Locked status or still exists\n // don't change colors, etc\n calendarValues.forEach((cv) => {\n if (cv.toggle === \"L\") {\n newCalendarsValues.push({ ...cv });\n } else {\n calendars.some((value) => {\n if (cv.id === value.id) {\n newCalendarsValues.push({ ...cv });\n return true;\n } else {\n return false;\n }\n });\n }\n });\n\n // Add new records\n for (let c = 0; c < calendars.length; c++) {\n let found = false;\n for (let n = 0; n < newCalendarsValues.length; n++) {\n if (newCalendarsValues[n].id === calendars[c].id) {\n found = true;\n break;\n }\n }\n if (!found) {\n newCalendarsValues.push({ ...calendars[c], toggle: \"V\" });\n }\n }\n\n //color counter, try to make each ID unique color..\n //but we may have more calendars than colors?\n let colorCounters = [];\n for (let r = 0; r < colors.length; r++) {\n let counter = 0;\n for (let n = 0; n < newCalendarsValues.length; n++) {\n if (newCalendarsValues[n]?.color?.input === colors[r].input) {\n counter++;\n }\n }\n colorCounters.push(counter);\n }\n\n // Try to assign new calendar ids a unique color\n for (let n = 0; n < newCalendarsValues.length; n++) {\n if (!newCalendarsValues[n].color) {\n for (let pass = 0; pass < 50; pass++) {\n let found = false;\n for (let r = 0; r < colors.length; r++) {\n if (colorCounters[r] === pass) {\n colorCounters[r]++;\n newCalendarsValues[n].color = { ...colors[r] };\n found = true;\n break;\n }\n }\n if (found) break;\n }\n }\n }\n\n setLastCalendarInput(calendars);\n setCalendarValues(newCalendarsValues);\n }\n\n const toggleCalendar = (id, currentValue) => {\n let newValue = \"V\";\n if (currentValue === \"V\") newValue = \"H\";\n else if (currentValue === \"H\") newValue = toggleLock ? \"L\" : \"V\";\n\n let newCals = [];\n for (let c = 0; c < calendarValues.length; c++) {\n if (calendarValues[c].id === id) {\n newCals.push({ ...calendarValues[c], toggle: newValue });\n } else {\n newCals.push({ ...calendarValues[c] });\n }\n }\n setCalendarValues(newCals);\n };\n\n let rawCalendarData = calendarValues.filter((cal) => {\n return cal.toggle !== \"H\";\n });\n\n return (\n <>\n \n \n \n offsetDate(1)}\n >\n \n \n offsetDate(-1)}\n >\n \n \n setStartDate(moment())}\n >\n Today\n \n \n \n \n \n setModeValue(\"MONTH\")}\n >\n Month\n \n setModeValue(\"WEEK\")}\n >\n Week\n \n setModeValue(\"DAY\")}\n >\n Day\n \n setModeValue(\"AGENDA\")}\n >\n Agenda\n \n \n \n \n \n {\n if (currentHeight > 400) setCurrentHeight(currentHeight - 100);\n }}\n >\n \n \n {\n setCurrentHeight(currentHeight + 100);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n {\"Calendars\"}\n \n \n {calendarValues.map((c) => {\n return (\n toggleCalendar(c.id, c.toggle)}\n >\n \n {c.name ? c.name : c.id}\n \n \n {c.toggle === \"V\" ? (\n \n ) : c.toggle === \"H\" ? (\n \n ) : (\n \n )}\n \n \n );\n })}\n \n \n \n );\n}\n\nexport function GoogleCalendarRaw({\n calendars = [],\n mode = \"MONTH\",\n showPrint = 0,\n showNav = 1,\n showTabs = 1,\n showTitle = 1,\n showCalendars = 1,\n startDate = null,\n endDate = null,\n height = \"800px\",\n}) {\n // \"&dates=20220110/20220207\" +\n\n let dates = null;\n if (startDate !== null && endDate !== null) {\n let sd = _date.stamp(startDate);\n let ed = _date.stamp(endDate);\n dates = sd + \"/\" + ed;\n }\n const { settings } = useSettings({ canGet: true });\n\n let timeZone = settings.googleCalendarTimeZone;\n if (timeZone === \"\" || timeZone === null) {\n timeZone = \"America/Chicago\";\n }\n if (!timeZone) timeZone = \"America/Chicago\";\n timeZone = timeZone.replaceAll(\"/\", \"%2F\");\n\n const urlBase = \"https://calendar.google.com/calendar/embed?ctz=\" + timeZone;\n let finalUrl = urlBase + \"\";\n finalUrl = finalUrl + \"&showPrint=\" + showPrint;\n finalUrl = finalUrl + \"&showTitle=\" + showTitle;\n finalUrl = finalUrl + \"&mode=\" + mode;\n finalUrl = finalUrl + \"&showCalendars=\" + showCalendars;\n finalUrl = finalUrl + \"&showNav=\" + showNav;\n finalUrl = finalUrl + \"&showTabs=\" + showTabs;\n if (dates !== null) {\n finalUrl = finalUrl + \"&dates=\" + dates;\n }\n\n for (let c = 0; c < calendars.length; c++) {\n let src = btoa(calendars[c].id);\n src = src.replaceAll(\"=\", \"\");\n finalUrl = finalUrl + \"&src=\" + src;\n if (calendars[c].color) {\n finalUrl =\n finalUrl + \"&color=\" + calendars[c].color.input.replaceAll(\"#\", \"%23\");\n }\n }\n\n return (\n <>\n \n \n
    \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useState } from \"react\";\nimport { ButtonGroup, Col, Row, ToggleButton } from \"react-bootstrap\";\n\nimport { GoogleCalendarForm } from \"../../common/components/calendars\";\nimport Page from \"../../common/pages/Page\";\nimport User from \"../../users\";\nimport ContractNavSidebar from \"./ContractNavSidebar\";\n\nexport default function ContractScheduling() {\n const [userGroupingsChosen, setUserGroupingsChosen] = useState([]);\n const [usersChosen, setUsersChosen] = useState([]);\n const [andMode, setAndMode] = useState(false);\n\n const { userGroupings } = User.UserGrouping.useAll({\n canGet: true,\n });\n const { users } = User.useAll({\n canGet: true,\n });\n\n let calendars = [];\n\n for (let g = 0; g < userGroupingsChosen.length; g++) {\n let thisUserGroupCals = [];\n userGroupings.forEach((userGrouping) => {\n if (userGrouping.id === userGroupingsChosen[g]) {\n userGrouping.members?.forEach((member) => {\n users.forEach((user) => {\n if (\n !user.inactive &&\n ((user.id === member.keyField && member.type === \"U\") ||\n (user.teamId === member.keyField && member.type === \"T\"))\n )\n thisUserGroupCals.push({ id: user.email, name: user.name });\n });\n });\n }\n });\n if (andMode === true && g > 0) {\n calendars = thisUserGroupCals.filter((value) =>\n calendars.some((cVal) => value.id === cVal.id),\n );\n } else {\n calendars = calendars.concat(thisUserGroupCals);\n }\n }\n\n usersChosen.forEach((uc) => {\n users.some((user) => {\n if (uc === user.id) {\n calendars.push({ id: user.email, name: user.name });\n return true;\n } else {\n return false;\n }\n });\n });\n\n // They changed the user group\n const changeUserGrouping = (value, index) => {\n let newUserGroups = [];\n for (let ug = 0; ug < userGroupingsChosen.length; ug++) {\n if (ug === index) {\n if (value !== \"\") newUserGroups.push(value);\n } else {\n newUserGroups.push(userGroupingsChosen[ug]);\n }\n }\n setUserGroupingsChosen(newUserGroups);\n };\n // They changed the user group\n const addUserGrouping = (value) => {\n let newUserGroups = [];\n for (let ug = 0; ug < userGroupingsChosen.length; ug++) {\n newUserGroups.push(userGroupingsChosen[ug]);\n }\n newUserGroups.push(value);\n setUserGroupingsChosen(newUserGroups);\n };\n\n // They changed the user\n const changeUser = (value, index) => {\n let newUsers = [];\n for (let u = 0; u < usersChosen.length; u++) {\n if (u === index) {\n if (value !== \"\") newUsers.push(value);\n } else {\n newUsers.push(usersChosen[u]);\n }\n }\n setUsersChosen(newUsers);\n };\n // They changed the user group\n const addUser = (value) => {\n let newUsers = [];\n for (let u = 0; u < usersChosen.length; u++) {\n newUsers.push(usersChosen[u]);\n }\n newUsers.push(value);\n setUsersChosen(newUsers);\n };\n\n const companyCalendar = {\n id: \"producepro.com_44jjf4ktbs146u0mojtf7d3000@group.calendar.google.com\",\n name: \"Company Calendar\",\n };\n calendars.push(companyCalendar);\n calendars = _.uniq(calendars);\n calendars = calendars.sort((a, b) => {\n if (a.name === \"Company Calendar\") return -1;\n else if (b.name === \"Company Calendar\") return 1;\n\n if (a.name > b.name) return 1;\n return -1;\n });\n\n return (\n }\n tableOfContents={false}\n >\n \n {userGroupingsChosen.map((userGrouping, index) => {\n return (\n <>\n \n changeUserGrouping(x, index)}\n isClearable={true}\n />\n \n {index === 0 ? (\n \n \n setAndMode(true)}\n className={\"mb-3 pt-1\"}\n >\n {\" \"}\n AND{\" \"}\n \n setAndMode(false)}\n className={\"mb-3 pt-1\"}\n >\n {\" \"}\n OR{\" \"}\n \n \n \n ) : null}\n \n );\n })}\n \n addUserGrouping(val)} />\n \n \n \n {usersChosen.map((user, index) => {\n return (\n \n changeUser(x, index)}\n isClearable={true}\n />\n \n );\n })}\n \n addUser(val)} />\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport ContractEdit from \"./ContractEdit\";\nimport ContractIndex from \"./ContractIndex\";\nimport ContractNew from \"./ContractNew\";\nimport ContractProductCategoriesPages from \"./contractProductCategories\";\nimport ContractProductDefaultCrPages from \"./contractProductDefaultCrs\";\nimport ContractProductsPages from \"./contractProducts\";\nimport ContractScheduling from \"./ContractScheduling\";\n\nexport default function ContractsRouting() {\n let { path } = useRouteMatch();\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","import React from \"react\";\nimport Skeleton from \"react-loading-skeleton\";\n\nimport Page from \"../../common/pages/Page\";\n\nexport default function CrPage({\n cr,\n heading,\n lead,\n isLoading,\n children,\n navSidebar,\n tableOfContents,\n}) {\n const title = cr\n ? `${heading}: ${cr.customers[0] ? cr.customers[0].name : \"\"} - ${\n cr.synopsis\n }`\n : heading;\n\n const _lead = lead ? (\n lead\n ) : cr?.synopsis ? (\n cr?.synopsis\n ) : isLoading ? (\n \n ) : (\n \"\"\n );\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function CrNavSidebar({ children }) {\n return (\n \n CRs\n New Project\n
    \n {children}\n
    \n );\n}\n","import { sum } from \"lodash\";\nimport React from \"react\";\n\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport Cr from \"../../crs\";\nimport CrNavSidebar from \"./CrNavSidebar\";\n\nexport default function CrShowNavSidebar({ id }) {\n const { cr } = Cr.useOne({ id, canGet: false });\n const revisionsClassName = cr?.code_revisions?.length ? \"\" : \"font-italic\";\n\n const timeClassName =\n sum([\n cr?.actualInvoicedHours,\n cr?.actualInvoicedNbHours,\n cr?.actualBillableHours,\n cr?.actualNonBillableHours,\n ]) > 0\n ? \"\"\n : \"font-italic\";\n return (\n \n {`CR ${id}`}\n Edit\n Project\n \n Time\n \n \n Revisions\n \n Log\n QA\n \n );\n}\n","import React, { useState } from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\nimport CrPage from \"./CrPage\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\n\nexport default function CrEdit() {\n const id = parseInt(useParams().id);\n const { cr, loading, updateOne } = Cr.useOne({ id });\n const [error, setError] = useState(null);\n const { project } = Project.useOne({\n id: cr?.projectId,\n logActivity: true,\n });\n\n return (\n }\n >\n {cr && !loading ? (\n \n updateOne(nextCr).catch((error) => setError(error?.message))\n }\n error={error}\n project={project}\n />\n ) : null}\n \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo, useRef, useState } from \"react\";\nimport { Col, ListGroup, OverlayTrigger, Row, Tooltip } from \"react-bootstrap\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\n\nimport useAppCanStateExpire from \"../../app/useAppCanStateExpire\";\nimport Cr from \"../../crs\";\nimport Time from \"../../time\";\nimport ContextMenu from \"../popovers/ContextMenu\";\n\nexport default function CrLinkWithContextMenu({\n id,\n onNewTime,\n label,\n readOnly,\n tooltipData: tooltipDataProp,\n}) {\n const ref = useRef(null);\n const [show, setShow] = useState(false);\n const [target, setTarget] = useState(null);\n const {\n cr,\n updateOne: updateCr,\n getCr,\n } = Cr.useOne({\n id: id,\n canGet: false,\n redirect: false,\n });\n\n const tooltipData = { ...tooltipDataProp, ...cr };\n\n const canShowTooltip = !!tooltipData?.customers || !!tooltipData?.synopsis;\n\n const setCanStateExpire = useAppCanStateExpire.set(\n `CrLink.ContextMenu.${id}`,\n );\n\n return (\n <>\n \n {tooltipData?.customers ? (\n
    \n \n {tooltipData?.customers?.[0]?.name}\n \n
    \n ) : null}\n \n {tooltipData?.synopsis}\n \n \n }\n >\n {\n e.preventDefault();\n setTarget(e.target);\n setShow(true);\n setCanStateExpire(false);\n }}\n >\n {label || id}\n \n \n {\n setShow(false);\n setCanStateExpire(true);\n }}\n onNewTime={onNewTime}\n update={updateCr}\n get={getCr}\n readOnly={readOnly}\n />\n \n );\n}\n\nfunction CrContextMenu({\n id,\n cr,\n target,\n show,\n onHide,\n onNewTime = () => {},\n get,\n update,\n readOnly = false,\n}) {\n const [showNewTime, setShowNewTime] = useState(false);\n\n const user = useSelector((state) => state.auth.user);\n const date = useMemo(() => moment(), []);\n\n const setCanStateExpire = useAppCanStateExpire.set(`CrLink.NewTime.${id}`);\n\n const hideShowNewTime = () => {\n setShowNewTime(false);\n setCanStateExpire(true);\n };\n return (\n <>\n {\n onHide();\n }}\n placement=\"right\"\n >\n \n \n Open in new tab\n \n toast.success(\"CR # copied\")}\n >\n \n Copy CR #\n \n \n {!readOnly && (\n <>\n {\n setShowNewTime(true);\n setCanStateExpire(false);\n }}\n disabled={readOnly ?? false}\n >\n Add time\n \n \n get().then(({ data: fetchedCr }) => {\n if (cr?.owner && cr?.owner !== fetchedCr?.owner) {\n toast.error(\n \n Try again\n {`\\nCurrent owner is outdated\\n${cr?.owner} -> ${fetchedCr?.owner}`}\n

    ,\n );\n } else update({ owner: user });\n })\n }\n disabled={readOnly ?? false}\n >\n Assign to me\n \n \n )}\n
    \n \n {\n hideShowNewTime();\n onNewTime();\n }}\n />\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\n\nimport CrLinkWithContextMenu from \"../../common/components/CrLinkWithContextMenu\";\nimport queryToString from \"../../common/functions/queryToString\";\nimport useIntervalUpdateComponent from \"../../common/hooks/useIntervalUpdateComponent\";\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport Page from \"../../common/pages/Page\";\nimport Cr from \"../../crs\";\nimport useSettings from \"../../settings/useSettings\";\nimport CrNavSidebar from \"./CrNavSidebar\";\n\nconst CrTableComponents = {\n CrLink: CrLinkWithContextMenu,\n};\n\nexport default function CrIndex() {\n const {\n settings: { crFilterId: defaultFilterId },\n } = useSettings();\n\n const urlFilterId = useSearchParams(\"filter\");\n const {\n crTableSettings: { filter, layout },\n setCrTableSettings,\n } = Cr.useTableSettings({\n crFilterId: urlFilterId,\n canSet: true,\n });\n\n const [, setRedirect] = useRedirect();\n\n // Set the URL including the filterId\n useEffect(() => {\n if (filter?.id && urlFilterId !== filter?.id) {\n setCrTableSettings({ filter: null, layout: null });\n }\n if (urlFilterId) return;\n if (filter?.id) {\n setRedirect(`/crs?filter=${filter.id}`);\n } else if (defaultFilterId) {\n setRedirect(`/crs?filter=${defaultFilterId}`);\n }\n }, [\n defaultFilterId,\n filter?.id,\n setCrTableSettings,\n setRedirect,\n urlFilterId,\n ]);\n\n const isFilterValid = !_.isEmpty(filter?.filter);\n const { crs, loading, hasMore, getMore, reset, lastUpdate } = Cr.useSearch({\n filter: filter?.filter,\n canGet: isFilterValid,\n });\n\n useIntervalUpdateComponent(15000);\n\n const _loading = loading;\n\n const layoutColumns = layout?.columns?.map((c) => c.column);\n\n return (\n \n }\n tableOfContents={false}\n >\n {isFilterValid ? (\n \n ) : null}\n \n );\n}\n\nfunction IndexNavSidebar({ filter, layout, setCrTableSettings, setRedirect }) {\n function submitHandler(crTableSettings) {\n setShow(false);\n setCrTableSettings(crTableSettings);\n const crFilterId = crTableSettings?.filter?.id;\n setRedirect(`/crs${crFilterId ? `?filter=${crFilterId}` : \"\"}`);\n }\n const [show, setShow] = useState(false);\n return (\n \n setShow(true)}\n title=\"CR Query Filters\"\n >\n Filters\n \n setShow(false)}\n aria-labelledby=\"contained-modal-title-vcenter\"\n >\n \n \n CR Query Filters\n \n \n \n \n \n \n setCrTableSettings({ filter: null, layout: null })}\n />\n \n );\n}\n\nfunction CrFilterFavorites({ onClick }) {\n const { favorites } = Cr.Filter.Favorite.useAll();\n if (favorites?.length === 0) return null;\n return (\n <>\n
    \n {favorites.map(({ crFilterId }) => (\n \n {crFilterId}\n \n ))}\n \n );\n}\n","import React from \"react\";\n\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\nimport Cr from \"../../crs\";\nimport CrNavSidebar from \"./CrNavSidebar\";\n\nexport default function CrNew() {\n const projectId = useSearchParams(\"project\");\n return (\n }>\n \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useCallback, useMemo } from \"react\";\nimport {\n Button,\n Col,\n Form,\n OverlayTrigger,\n Row,\n Tooltip,\n} from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\n\nimport User from \"../../users\";\nimport { _datetime } from \"../functions/dates\";\nimport useAttachment from \"../hooks/useAttachment\";\nimport useReinitState from \"../hooks/useReinitState\";\nimport Table from \"../tables/Table\";\nimport { TextColumnFilter } from \"../tables/TableFilters\";\n\nexport default function AttachmentsTable({\n attachments: initial,\n source,\n create,\n isDisabled,\n onDelete,\n}) {\n const [attachments, setAttachments] = useReinitState(initial);\n const { getAttachment, deleteAttachment } = useAttachment();\n\n const deleteFile = useCallback(\n async (id, filename) => {\n const toastId = toast.info(`Deleting ${filename}...`, {\n autoClose: false,\n hideProgressBar: false,\n progress: 0.5,\n });\n await deleteAttachment(id)\n .then(() => {\n setAttachments((as) => as.filter((a) => a?.id !== id));\n onDelete();\n toast.update(toastId, {\n render: `Delete ${filename} Complete`,\n type: toast.TYPE.SUCCESS,\n progress: undefined,\n hideProgressBar: true,\n autoClose: 5000,\n });\n })\n .catch((error) =>\n toast.update(toastId, {\n render: `Delete ${filename} Failed: ${error}`,\n type: toast.TYPE.ERROR,\n autoClose: 5000,\n }),\n );\n },\n [deleteAttachment, onDelete, setAttachments],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"filename\",\n Header: \"File\",\n accessor: \"filename\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ row, value }) => (\n Download {value}}>\n getAttachment(row.original?.id, value)}\n >\n {value}\n \n \n ),\n },\n {\n id: \"source\",\n Header: \"Log Source\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: ({ source, sourceId }) => {\n switch (source) {\n case \"PR\":\n return \"Project \" + sourceId;\n case \"CR\":\n return \"CR \" + sourceId;\n default:\n return sourceId || null;\n }\n },\n aggregate: \"uniqueCount\",\n Cell: ({ row: { original: { source, sourceId } = {} }, value }) => {\n if (source === \"CR\")\n return (\n \n {value || null}\n \n );\n else if (source === \"PR\")\n return (\n \n {value || null}\n \n );\n else {\n return {value || null};\n }\n },\n },\n {\n id: \"dateTime\",\n Header: \"Date\",\n accessor: \"dateTime\",\n\n Cell: ({ value }) => (\n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n ),\n },\n {\n id: \"userId\",\n Header: \"User\",\n accessor: \"userId\",\n\n Cell: ({ value }) => ,\n },\n {\n id: \"delete\",\n Header: \"Delete\",\n accessor: \"id\",\n\n Cell: ({ value, row: { original: { filename } = {} } }) => (\n Delete Attachment}>\n deleteFile(value, filename)}\n disabled={isDisabled}\n >\n Delete\n \n \n ),\n },\n ],\n [getAttachment, deleteFile, isDisabled],\n );\n\n async function uploadFiles(e) {\n const files = e.target.files;\n if (!files?.length) return;\n const toastId = toast.info(\"Uploading \" + files.length + \" files...\", {\n autoClose: false,\n hideProgressBar: false,\n progress: 0.1,\n });\n let successfulCount = 0;\n const success = () => successfulCount++;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const updateToast = () =>\n toast.update(toastId, {\n progress: (i + 1) / files.length,\n });\n\n await create({ files: [file] })\n .then(success)\n .catch(() => {})\n .finally(updateToast);\n }\n\n toast.update(toastId, {\n render: `Upload Complete (${successfulCount} of ${files.length})`,\n type: toast.TYPE.SUCCESS,\n progress: undefined,\n hideProgressBar: true,\n autoClose: 5000,\n });\n }\n return (\n <>\n {isDisabled ? null : (\n \n \n \n \n \n )}\n \n \n {\n if (row.isGrouped) return {};\n const a = row?.original;\n if (_.isEqual({ source: a.source, sourceId: a.sourceId }, source))\n return {\n className: \"table-primary\",\n };\n else return {};\n }}\n />\n \n \n \n );\n}\n","import FileSaver from \"file-saver\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { toast } from \"react-toastify\";\n\nimport { deleteAttachmentAPI, getAttachmentAPI } from \"../../apis/attachments\";\n\nexport default function useAttachment() {\n const [loading, setLoading] = useState(false);\n const toastId = useRef(null);\n\n const getAttachment = useCallback(async (id, filename) => {\n setLoading(true);\n\n toastId.current = toast.info(\"Downloading \" + filename + \"...\", {\n autoClose: false,\n });\n getAttachmentAPI({ id })\n .then((file) => {\n FileSaver.saveAs(file, filename);\n setLoading(false);\n toast.update(toastId.current, {\n render: \"Downloaded (\" + filename + \")\",\n type: toast.TYPE.SUCCESS,\n autoClose: 5000,\n });\n })\n .catch((error) => {\n toast.update(toastId.current, {\n render: `Download Failed (${filename}): ${error}`,\n type: toast.TYPE.ERROR,\n autoClose: 5000,\n });\n console.log(error);\n return Promise.reject(error);\n });\n }, []);\n\n const deleteAttachment = useCallback(async (id) => {\n return deleteAttachmentAPI({ id })\n .then((resp) => resp)\n .catch((error) => {\n return Promise.reject(error);\n });\n }, []);\n return { loading, getAttachment, deleteAttachment };\n}\n","import React, { useState } from \"react\";\nimport { Badge, Button, Modal } from \"react-bootstrap\";\nimport { IoMdAttach } from \"react-icons/io\";\n\nimport AttachmentsTable from \"./AttachmentsTable\";\n\nexport default function AttachmentsButton({\n attachments,\n source,\n create,\n isDisabled,\n onChange,\n variant = \"primary\",\n label = \"Attachments\",\n as: Component = Button,\n ...props\n}) {\n const [showAttachments, setshowAttachments] = useState(false);\n const [changes, setChanges] = useState(false);\n\n return (\n <>\n setshowAttachments(true)}\n {...props}\n >\n {label}{\" \"}\n {attachments?.length}\n \n {\n setshowAttachments(false);\n if (changes && onChange) onChange();\n }}\n >\n \n {label || \"Attachments\"}\n \n \n setChanges(true)}\n source={source}\n />\n \n \n \n );\n}\n","import { isUndefined, map, sortBy, stubObject, times } from \"lodash\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Row } from \"react-bootstrap\";\nimport { BiLinkAlt } from \"react-icons/bi\";\nimport { FaSortDown, FaSortUp } from \"react-icons/fa\";\nimport Skeleton from \"react-loading-skeleton\";\nimport { useSelector } from \"react-redux\";\nimport { Prompt } from \"react-router\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { object, string } from \"yup\";\n\nimport useAppFormsState from \"../../app/useAppFormsState\";\nimport User from \"../../users\";\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsAutoSubmit,\n} from \"../forms\";\nimport { _datetime } from \"../functions/dates\";\nimport useTinykeys from \"../hooks/useTinykeys\";\n\nconst INITIAL_COMMENT = {\n text: \"\",\n title: \"\",\n};\n\nexport default function Comments({\n comments,\n isLoading = false,\n isDisabled = false,\n create,\n id,\n update,\n}) {\n const [isReversed, setIsReversed] = useState(true);\n\n if (isUndefined(comments) && !isLoading) return null;\n const isLoadingAndInvalid = isUndefined(comments) && isLoading;\n\n const _comments = isLoadingAndInvalid\n ? times(3, stubObject)\n : sortBy(comments, (c) =>\n isReversed ? 9999 - parseInt(c.id) : parseInt(c.id),\n );\n\n return (\n <>\n {create ? (\n \n ) : null}\n \n \n setIsReversed(!isReversed)}\n >\n {isReversed ? (\n <>\n {\"Newest first \"}\n \n \n ) : (\n <>\n {\"Oldest first \"}\n {\" \"}\n \n )}\n \n \n \n {map(_comments, (c, i) => (\n \n ))}\n \n );\n}\n\nfunction Comment({ comment, isLoading, update, isDisabled }) {\n const [isEdit, setIsEdit] = useState(false);\n\n if (isUndefined(comment)) return null;\n\n let onEdit = null;\n if (update && !isDisabled) {\n onEdit = () => setIsEdit(true);\n if (isEdit)\n return (\n {\n update({ ...values, id: comment.id });\n setIsEdit(false);\n }}\n onCancel={() => setIsEdit(false)}\n />\n );\n }\n\n return (\n \n );\n}\n\nfunction ShowComment({ comment, isLoading, onEdit, isDisabled }) {\n const { title, author, createDateTime, text, updateDateTime, updateUser } =\n comment;\n const createString = _datetime.displayDateTime(\n _datetime.fromStamp(createDateTime),\n );\n const editString = _datetime.displayDateTime(\n _datetime.fromStamp(updateDateTime),\n );\n\n const id = `comment-${comment?.id}`;\n\n return (\n
    \n \n \n \n {!isLoading ? : }\n {\" \" + createString + \" \"}\n \n \n \n \n \n \n {editString && !isLoading ? (\n \n Edited by {editString}\n \n ) : null}\n {!isLoading && !isDisabled && onEdit ? (\n \n Edit\n \n ) : null}\n \n \n \n \n
    {!isLoading ? title : }
    \n \n
    \n \n \n

    \n {!isLoading ? text : }\n

    \n \n
    \n
    \n );\n}\n\nfunction CreateComment({ isLoading = false, create, id, isDisabled }) {\n const [focus, setFocus] = useState(false);\n const {\n state: savedComment,\n initial: savedCommentInitial,\n setState: setSavedComment,\n loading: formsLoading,\n } = useAppFormsState({\n key: id,\n });\n const user = useSelector((state) => state.auth.user);\n\n const shouldWarnOnLeave = !!(savedComment?.title || savedComment?.text);\n\n const comment = useMemo(\n () => ({ ...INITIAL_COMMENT, ...savedCommentInitial, author: user }),\n [savedCommentInitial, user],\n );\n\n return (\n <>\n \n\n {focus ? (\n {\n setFocus(false);\n if (title || text)\n return create({ title, text, ...values }).then(() => {\n setSavedComment(null, true);\n });\n }}\n onCancel={() => {\n setFocus(false);\n }}\n onChange={(values) => {\n setSavedComment(values?.text || values?.title ? values : null);\n }}\n isNew\n />\n ) : (\n
    \n \n \n \n {!isLoading ? : }\n \n \n \n \n \n \n {\n if (!(isDisabled || isLoading)) {\n setFocus(true);\n setSavedComment(savedComment, true);\n }\n }}\n disabled={isLoading || isDisabled}\n />\n \n \n \n
    \n )}\n \n );\n}\n\nconst commentSchema = object().shape({\n title: string().label(\"Title\").max(100),\n});\n\nfunction EditComment({\n comment,\n isDisabled = false,\n isLoading = false,\n focus = true,\n onSubmit,\n onCancel,\n onChange,\n isNew = false,\n}) {\n return (\n \n \n \n );\n}\n\nfunction EditCommentForms({ focus, onCancel, onChange, isNew, isLoading }) {\n const {\n reset,\n watch,\n submitForm,\n setFocus,\n formsContext: { isDisabled },\n } = useFormContext();\n\n const values = watch();\n\n useFormsAutoSubmit({\n blocked: !onChange,\n onSubmit: (values) => {\n if (!isDisabled && !isLoading) onChange(values);\n },\n });\n\n const [textFocus, setTextFocus] = useState(false);\n\n useTinykeys({\n Escape: () => {\n if (textFocus && onCancel) onCancel(values);\n },\n \"$mod+Enter\": () => {\n if (textFocus) submitForm();\n },\n });\n\n useEffect(() => {\n if (!focus) return;\n setFocus(\"text\");\n }, [setFocus, focus]);\n\n return (\n
    \n \n \n \n {!isLoading ? : }\n \n \n \n \n \n \n setTextFocus(false)}\n onFocus={() => setTextFocus(true)}\n autoComplete=\"off\"\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n onCancel(values)}\n disabled={isDisabled}\n >\n Cancel\n \n {\n const onReset = (values) => {\n reset(values);\n onChange && onChange(null);\n };\n isNew\n ? onReset({ ...INITIAL_COMMENT, author: values?.author })\n : onReset();\n }}\n disabled={isDisabled}\n >\n Reset\n \n \n \n \n
    \n );\n}\n\nfunction CommentTextField({ name, id = name, setFocus, ...props }) {\n const {\n field: { onBlur, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {\n onBlur(e);\n setFocus(false);\n }}\n onFocus={() => setFocus(true)}\n className=\"form-control\"\n readOnly={isDisabled}\n {...props}\n />\n \n {error?.message}\n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Collapse, Table } from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\n\nimport User from \"../../users\";\nimport { useController, useFormContext } from \"../forms\";\nimport useOwnerGroupFields from \"../hooks/forms/useGroupOwnerFields\";\n\nexport default function DetailTableEdit({ isDisabled, children }) {\n return (\n \n {children}\n
    \n );\n}\nfunction TableRow({\n name,\n label,\n value,\n isLoading,\n isDisabled = false,\n getRowProps = () => {},\n as,\n ...props\n}) {\n const [edit, setEdit] = useState(false);\n\n useEffect(() => {\n if (isLoading || isDisabled) setEdit(false);\n }, [isLoading, isDisabled]);\n\n const [title, onClickShowEdit] =\n as && !isDisabled && !isLoading\n ? [\"Click to edit\", () => setEdit(true)]\n : [\"\", undefined];\n\n return (\n \n \n {isLoading ? : label}\n \n {as ? (\n \n \n setEdit(false)}\n focus={edit}\n as={as}\n {...props}\n />\n \n \n ) : null}\n \n {isLoading ? : value}\n \n \n );\n}\n\nfunction Input({ name, onBlur: onBlurProp, focus, as: As, ...props }) {\n const {\n field: { onBlur: onBlurField, ...field },\n fieldState: { error },\n } = useController({ name });\n\n const onBlur = (e) => {\n onBlurProp(e);\n onBlurField(e);\n };\n\n const { setFocus } = useFormContext();\n\n useEffect(() => {\n if (focus) setTimeout(() => setFocus(name));\n }, [name, focus, setFocus]);\n\n return (\n \n );\n}\n\nfunction OwnerGroup({ entity, isLoading, isDisabled }) {\n const { handleGroupChange, handleOwnerChange } = useOwnerGroupFields();\n return (\n <>\n }\n as={User.Select}\n isLoading={isLoading}\n onChange={handleOwnerChange}\n pseudo\n isClearable\n isDisabled={isDisabled}\n />\n {\n handleGroupChange(value);\n }}\n />\n }\n value={}\n as={User.Group.Select}\n isLoading={isLoading}\n onChange={handleGroupChange}\n isDisabled={isDisabled}\n />\n \n );\n}\n\nDetailTableEdit.Row = TableRow;\nDetailTableEdit.Row.OwnerGroup = OwnerGroup;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport DetailTableEdit from \"../../common/details/DetailTableEdit\";\nimport { Forms, useFormsAutoSubmit } from \"../../common/forms\";\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\n\nexport default function CrShowDetails({\n cr,\n project,\n update,\n isLoading,\n isDisabled,\n}) {\n return (\n \n {\n return update(e);\n }}\n defaultValues={cr}\n schema={{ schema: Cr.schema }}\n >\n \n \n \n );\n}\n\nfunction TableBody({ cr, project, isLoading, isDisabled }) {\n useFormsAutoSubmit({ debounceMs: 300, shouldResetOnError: true });\n return (\n \n \n \n {cr?.projectId}\n \n }\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n }\n isLoading={isLoading}\n isDisabled={isDisabled}\n getRowProps={() => ({ className: Cr.getPriorityClassName(cr) })}\n />\n \n }\n as={Project.Type.Select}\n isLoading={isLoading}\n placeholder=\"Select Type Override...\"\n isClearable\n isDisabled={isDisabled}\n />\n }\n as={Cr.Module.Select}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n }\n as={Cr.Difficulty.Select}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n \n );\n}\n","import React from \"react\";\nimport { Col, Form, Row, Table } from \"react-bootstrap\";\nimport Skeleton from \"react-loading-skeleton\";\nimport { useSelector } from \"react-redux\";\n\nexport default function CrShowToggles({ cr, isLoading, update, isDisabled }) {\n const { isManager, isChampion, isAdmin } = useSelector((state) => state.auth);\n return (\n \n \n \n \n \n \n \n \n
    \n {isLoading ? (\n \n ) : (\n <>\n \n update({ isWaitingOnCustomer: e.target.checked })\n }\n disabled={isDisabled}\n />\n \n update({ isReadyForCodeCheckin: e.target.checked })\n }\n disabled={isDisabled}\n />\n \n update({ isTestingRequired: e.target.checked })\n }\n disabled={isDisabled}\n />\n \n update({ isSAMFollowup: e.target.checked })\n }\n disabled={\n isDisabled || !(isManager || isChampion || isAdmin)\n }\n />\n \n )}\n
    \n \n
    \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, ButtonGroup, Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router\";\n\nimport AttachmentsButton from \"../../common/details/AttachmentsButton\";\nimport Comments from \"../../common/details/Comments\";\nimport DetailField from \"../../common/details/DetailField\";\nimport DetailSection from \"../../common/details/DetailSection\";\nimport { _datetime } from \"../../common/functions/dates\";\nimport useIntervalUpdateComponent from \"../../common/hooks/useIntervalUpdateComponent\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport CrNavSidebar from \"./CrNavSidebar\";\nimport CrPage from \"./CrPage\";\nimport CrShowDetails from \"./CrShowDetails\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\nimport CrShowToggles from \"./CrShowToggles\";\n\nexport default function CrShow() {\n const id = parseInt(useParams().id);\n const {\n cr,\n loading,\n updateOne,\n getCr,\n createComment,\n updateComment,\n createAttachment,\n lastUpdate,\n updateWatch,\n } = Cr.useOne({\n id: id,\n logActivity: true,\n redirect: false,\n });\n\n const isLoadingAndInvalid = loading && _.isEmpty(cr);\n\n const transferred =\n cr?.transferredFolder && cr?.transferredFolder !== \"CURRENT\";\n\n useIntervalUpdateComponent(15000);\n\n if (loading === false && !cr)\n return (\n }\n />\n );\n\n return (\n }\n isLoading={loading}\n >\n \n {\n return c.id;\n })}\n isLoading={isLoadingAndInvalid}\n />\n \n \n \n \n updateOne({ internalNotes: value })\n }\n isLoading={loading}\n header=\"Internal Notes\"\n text={cr?.internalNotes}\n heightRem={2}\n />\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction Details({\n cr,\n isLoading: loadingProp,\n transferred,\n update,\n createAttachment,\n getCr,\n lastUpdate,\n updateWatch,\n}) {\n const {\n project,\n getProject,\n loading: loadingProject,\n } = Project.useOne({\n id: cr?.projectId,\n });\n const isLoading = loadingProp || loadingProject;\n const isLoadingAndInvalid =\n isLoading && (_.isEmpty(cr) || _.isEmpty(project));\n\n const isDisabled = isLoading || transferred;\n const isDisabledOrClosed =\n isDisabled || cr?.statusId === \"CL\" || cr?.statusId === \"FX\";\n\n const attachments = useMemo(\n () => cr?.attachments?.concat(project?.attachments || []) || [],\n [cr, project],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n update({ description: value })\n }\n isLoading={isLoading}\n header=\"Description\"\n text={cr?.description}\n heightRem={20}\n />\n \n \n \n \n \n \n \n getCr()}\n title=\"Refresh CR data\"\n >\n {isLoading\n ? \"Loading...\"\n : \"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isLoadingAndInvalid ? null : (\n \n {`Created on ${_datetime.displayDateTime(\n _datetime.fromStamp(cr?.createDateTime),\n )}\\nby `}\n \n \n )}\n \n \n \n \n {isLoadingAndInvalid ? null : (\n \n \n {\n getCr();\n getProject();\n }}\n />\n \n )}\n \n \n \n \n );\n}\n\nfunction JiraNotes({ jiraKey, notes }) {\n if (!notes) return null;\n return (\n \n \n \n \n
    Jira Notes
    \n \n
    \n \n \n \n \n {\"Jira Issue: \"} {jiraKey}\n \n \n {notes.split(/\\r\\n|\\r|\\n/).map((x) => {\n if (x.startsWith(\"https\")) {\n return (\n \n \n \n {x}\n \n \n \n );\n } else {\n return (\n \n {x}\n \n );\n }\n })}\n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { _datetime } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\n\nexport default function UserActivityTable({\n userActivity,\n layout = [\"dateTime\", \"source\", \"info\", \"description\"],\n initialSort = { id: \"dateTime\", desc: true },\n ...props\n}) {\n const columns = React.useMemo(\n () => [\n {\n id: \"dateTime\",\n Header: \"Date\",\n accessor: \"dateTime\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n ),\n },\n {\n id: \"source\",\n Header: \"Log Source\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: (t) => {\n switch (t.source) {\n case \"PR\":\n return \"Project \" + t.key;\n case \"CR\":\n return \"CR \" + t.key;\n default:\n return t.key || null;\n }\n },\n aggregate: \"uniqueCount\",\n Cell: ({ row: { original: { key: id, source } = {} }, value }) => {\n if (source === \"CR\")\n return (\n \n {value || null}\n \n );\n else if (source === \"PR\")\n return (\n \n {value || null}\n \n );\n else {\n return {value || null};\n }\n },\n },\n {\n id: \"info\",\n Header: \"Information\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: \"moreInfo\",\n\n Cell: ({ value }) => {\n return (\n
    \n {value || null}\n
    \n );\n },\n },\n {\n id: \"description\",\n Header: \"Log Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"type\",\n Header: \"Log Type\",\n accessor: (l) => l.type || null,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"count\",\n },\n {\n id: \"userId\",\n Header: \"User\",\n accessor: \"userId\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"duration\",\n Header: \"Duration\",\n accessor: \"duration\",\n disableFilters: true,\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n {\n if (row?.original?.read) {\n return { className: \"table-secondary\" };\n }\n }}\n {...props}\n />\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport UserActivityTable from \"../../activity/userActivity/UserActivityTable\";\nimport Cr from \"../../crs\";\nimport CrPage from \"./CrPage\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\n\nexport default function CrShowLog() {\n const id = parseInt(useParams().id);\n const { cr, loading } = Cr.useOne({\n id,\n logActivity: false,\n includeLogs: true,\n shouldSetCurrent: true,\n });\n\n return (\n }\n isLoading={loading}\n >\n \n \n );\n}\n","import React from \"react\";\nimport { Redirect, useParams } from \"react-router\";\n\nimport Cr from \"../../crs\";\nimport CrPage from \"./CrPage\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\n\nexport default function CrShowProject() {\n const id = parseInt(useParams().id);\n const { cr, loading } = Cr.useOne({ id: id });\n if (loading || !cr?.projectId)\n return (\n }\n />\n );\n\n return ;\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { createEntityHooks } from \"../../common/entity\";\nimport state from \"./state\";\n\nconst {\n useEntities: useQaReviews,\n useEntity,\n useEntitiesBySearch: useQaReviewsSearch,\n} = createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n});\n\nconst useQaReview = ({ id, ...args } = {}) => {\n const dispatch = useDispatch();\n return {\n createAttachment: useCallback(\n (args) =>\n dispatch(state.actions.createAttachment({ id, ...args })).then(\n unwrapResult,\n ),\n [dispatch, id],\n ),\n ...useEntity({ id, ...args }),\n };\n};\n\nexport { useQaReview, useQaReviews, useQaReviewsSearch };\n","import React from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nexport default function QaReviewLink({ id, children, setModifyShow }) {\n return (\n {\n setModifyShow(id);\n }}\n >\n {children || id}\n \n );\n}\n","import React, { useMemo } from \"react\";\n\nimport AttachmentsButton from \"../../common/details/AttachmentsButton\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\nimport QaStatus from \"../qaStatuses\";\nimport { useQaReview } from \"./hooks\";\nimport QaReviewLink from \"./QaReviewLink\";\n\nexport default function QaReviewTable({\n qaReviews,\n layout = [\n \"QA Review #\",\n \"CR\",\n \"QA Status\",\n \"Reviewer\",\n \"Date\",\n \"Attachments\",\n ],\n setModifyShow,\n isLoading = false,\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"QA Review #\",\n Header: \"QA Review #\",\n accessor: \"id\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: (o) => (\n \n {\"QA \" + o?.row?.original?.id}\n \n ),\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: \"crId\",\n },\n {\n Header: \"QA Status\",\n id: \"QA Status\",\n format: { alignment: { horizontal: \"center\" } },\n accessor: ({ qaStatus }) => QaStatus.entities?.[qaStatus]?.emojii || \"\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Reviewer\",\n Header: \"Reviewer\",\n accessor: \"reviewer\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Date\",\n Header: \"Date\",\n accessor: \"reviewDate\",\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n },\n {\n id: \"Attachments\",\n Header: \"Attachments\",\n accessor: \"attachments\",\n Cell: ({ value, row }) => (\n \n ),\n },\n ],\n [setModifyShow],\n );\n return (\n \n );\n}\n\nfunction QaReviewAttachmentsButton({ attachments, id }) {\n const { createAttachment } = useQaReview({\n id,\n canGet: false,\n });\n return (\n \n );\n}\n","import { useQaReview, useQaReviews, useQaReviewsSearch } from \"./hooks\";\nimport QaReviewTable from \"./QaReviewTable\";\nimport state from \"./state\";\n\nconst QaReview = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useQaReview,\n useAll: useQaReviews,\n useSearch: useQaReviewsSearch,\n // Components\n Table: QaReviewTable,\n};\nexport default QaReview;\n","import { object, string } from \"yup\";\n\nconst qaReviewSchema = object().shape({\n reviewer: string().label(\"Reviewer\").required(),\n date: string().label(\"Date\").required(),\n qaStatus: string().label(\"QA Status\").required(),\n});\n\nexport default qaReviewSchema;\n","import { isUndefined } from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport User from \"../../users\";\nimport CrQaStatusSelect from \"../qaStatuses/QaStatusSelect\";\nimport qaReviewSchema from \"./qaReviewSchema\";\n\nexport default function QaReviewEditor({\n values,\n onSubmit,\n isDisabled = false,\n isNew = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: qaReviewSchema }}\n isDisabled={isDisabled}\n showDevTool\n >\n \n \n );\n}\n\nfunction QaReviewForm() {\n const { submitForm, setValue, watch } = useFormContext();\n const { isAdmin, user } = useSelector((state) => state.auth);\n\n const comment = watch(\"comment\");\n const reviewer = watch(\"reviewer\");\n useFormsKeys();\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 setValue(\"comment\", e.target.value);\n }}\n value={comment}\n maxLength={20000}\n />\n \n \n \n \n \n
    \n );\n}\n\nfunction OwnerSelect({ name, id = name, label, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n {...props}\n />\n \n {error?.message}\n \n \n );\n}\n\nfunction QaReviewStatusSelect({ name, id = name, label, isInvalid }) {\n const {\n field: { onChange, onBlur, value },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n return (\n \n {label ? {label} : null}\n \n \n );\n}\n","import React from \"react\";\nimport { Alert, Modal } from \"react-bootstrap\";\n\nimport StampDisplay from \"../../common/components/StampDisplay\";\nimport AttachmentsTable from \"../../common/details/AttachmentsTable\";\nimport QaReviewEditor from \"./QaReviewEditor\";\n\nexport default function QaReviewEditorModal({\n title,\n show,\n onHide,\n isNew,\n values,\n createAttachment,\n refreshRecord,\n id,\n ...props\n}) {\n return (\n \n \n {title}\n \n \n \n

    \n {!isNew ? (\n <>\n \n \n \n \n \n ) : null}\n
    \n
    \n );\n}\n","import React from \"react\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport { useQaReview } from \"./hooks\";\nimport QaReviewEditorModal from \"./QaReviewEditorModal\";\n\n//When no qaReviewId is given then we want to throw away the modal.\n//Then when an qaReviewID is given it will be initiliazed again\n//Which will get our qaReview record a new.\nexport default function QaReviewModifyModal({ qaReviewId, ...props }) {\n return (\n <>\n {qaReviewId ? : null}\n \n );\n}\n\n// Get the qaReview record and show the modal.\nfunction ShowTheModal({ onUpdate, qaReviewId, onClose }) {\n const { qaReview, updateOne, getOne, loading } = useQaReview({\n id: qaReviewId,\n canGet: true,\n });\n\n return (\n {\n const payloadQaReview = { ...qaReview };\n payloadQaReview.reviewDate = _date.stamp(qaReview.reviewDate);\n updateOne(payloadQaReview).then(() => {\n onUpdate();\n onClose();\n });\n }}\n />\n );\n}\n","import React, { useState } from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport useTinykeys from \"../../common/hooks/useTinykeys\";\nimport { useQaReview } from \"./hooks\";\nimport QaReviewEditorModal from \"./QaReviewEditorModal\";\n\nexport default function QaReviewNewButton({\n label = \"Add New QA Review\",\n onCreate,\n initialValues,\n disabled = false,\n}) {\n const { createOne } = useQaReview();\n const [showAdd, setShowAdd] = useState(false);\n\n useTinykeys(\n showAdd\n ? {}\n : {\n \"Alt+KeyA\": () => setShowAdd(true),\n },\n );\n\n return (\n <>\n setShowAdd(true)}\n disabled={disabled}\n >\n {label}\n \n setShowAdd(false)}\n isNew={true}\n onSubmit={(qaReview) => {\n const payloadQaReview = { ...qaReview };\n payloadQaReview.reviewDate = _date.stamp(qaReview.reviewDate);\n createOne(payloadQaReview).then(() => {\n onCreate();\n setShowAdd(false);\n });\n }}\n />\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport CodeReview from \"../../codeReviews\";\nimport CodeReviewTable from \"../../codeReviews/CodeReviewTable\";\nimport Comments from \"../../common/details/Comments\";\nimport DetailSection from \"../../common/details/DetailSection\";\nimport Cr from \"../../crs\";\nimport QaReview from \"../../crs/qaReviews\";\nimport QaReviewModifyModal from \"../../crs/qaReviews/QaReviewModifyModal\";\nimport QaReviewNewButton from \"../../crs/qaReviews/QaReviewNewButton\";\nimport QaReviewTable from \"../../crs/qaReviews/QaReviewTable\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport CrPage from \"./CrPage\";\nimport CrShowDetails from \"./CrShowDetails\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\nimport CrShowToggles from \"./CrShowToggles\";\n\nexport default function CrShowQa() {\n const id = parseInt(useParams().id);\n const userId = useSelector((state) => state.auth.user);\n\n const {\n cr,\n loading,\n updateOne,\n updateWatch,\n getCr,\n lastUpdate,\n createQaComment,\n updateQaComment,\n } = Cr.useOne({\n id,\n logActivity: false,\n shouldSetCurrent: true,\n includeLogs: true,\n redirect: false,\n });\n\n const { project } = Project.useOne({\n id: cr?.projectId,\n });\n\n const { isAdmin, user, canPerformCodeReview } = useSelector(\n (state) => state.auth,\n );\n\n const isLoadingAndInvalid = loading && _.isEmpty(cr);\n\n const transferred =\n cr?.transferredFolder && cr?.transferredFolder !== \"CURRENT\";\n\n const isReviewer = isAdmin || canPerformCodeReview;\n\n const [showQaReviewModifyModalId, setShowQaReviewModifyModalId] =\n useState(null);\n\n const {\n qaReviews,\n reset: resetQaReviews,\n getMany: qaReviewsGetMany,\n loading: qaReviewsLoading,\n } = QaReview.useSearch({\n canGet: \"true\",\n search: {\n crId: id,\n },\n });\n\n const onFormsUpdateLocal = () => {\n resetQaReviews({ cr: id });\n qaReviewsGetMany();\n getCr();\n };\n\n const showQaReviewModify = (id) => {\n setShowQaReviewModifyModalId(id);\n };\n\n const closeQaReviewModify = () => {\n setShowQaReviewModifyModalId(null);\n };\n\n const onQaReviewsRefresh = useCallback(() => {\n resetQaReviews();\n qaReviewsGetMany();\n }, [qaReviewsGetMany, resetQaReviews]);\n\n //This is needed to prevent rerenders causing data to be wiped\n //out on the new estimate form\n const qaReviewNewInitVals = useMemo(() => {\n return {\n crId: id,\n reviewer: userId,\n reviewDate: moment(),\n };\n }, [id, userId]);\n\n return (\n }\n isLoading={loading}\n tableOfContents={false}\n >\n \n \n \n \n \n \n updateOne({\n qaOwner: id,\n ...(cr?.qaStatusId === \"\" ? { qaStatusId: \"WA\" } : {}),\n })\n }\n isClearable\n isDisabled={transferred || !isReviewer}\n isLoading={isLoadingAndInvalid}\n />\n \n \n {\n let newCr = { qaStatusId: id };\n if (!id) newCr.qaOwner = \"\";\n else if (id === \"PA\" || id === \"PW\") newCr.statusId = \"CL\";\n else if (id === \"FA\") newCr.statusId = \"OP\";\n\n if (id) {\n if (!cr?.qaOwner) {\n newCr.qaOwner = user;\n }\n }\n\n return updateOne(newCr);\n }}\n isClearable\n isDisabled={transferred || !isReviewer}\n isLoading={isLoadingAndInvalid}\n />\n \n \n \n \n \n onQaReviewsRefresh()}\n layout={[\n \"QA Review #\",\n \"QA Status\",\n \"Reviewer\",\n \"Date\",\n \"Attachments\",\n ]}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n getCr()}\n title=\"Refresh CR data\"\n >\n {loading\n ? \"Loading...\"\n : \"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst defaultLayout = [\n \"Actions\",\n \"Last Reviewed By\",\n \"File\",\n \"Revision Date\",\n \"Revision\",\n \"Author\",\n \"Revision Comment\",\n \"Source Group\",\n \"Source Owner\",\n];\n\nconst defaultInitialSort = { id: \"Revision Date\", desc: false };\n\nfunction CrShowQaCodeReview({ crId, canPerformCodeReview }) {\n const [colorMethod, setColorMethod] = useState(\"last\");\n const { codeReviews, reset, getMany, loading } = CodeReview.useSearch({\n canGet: \"true\",\n search: {\n crId: crId,\n },\n });\n\n const onRefresh = useCallback(() => {\n reset();\n getMany();\n }, [getMany, reset]);\n\n return (\n <>\n \n \n \n setColorMethod(\"last\")}\n variant={colorMethod === \"last\" ? \"primary\" : \"secondary\"}\n >\n Last Review\n \n setColorMethod(\"my\")}\n variant={colorMethod === \"my\" ? \"primary\" : \"secondary\"}\n >\n My Review\n \n \n \n \n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router\";\n\nimport HelixLink from \"../../common/components/HelixLink\";\nimport { _datetime } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport Cr from \"../../crs\";\nimport User from \"../../users\";\nimport CrPage from \"./CrPage\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\n\nexport default function CrShowRevisions() {\n const id = parseInt(useParams().id);\n const { cr, loading } = Cr.useOne({ id, logActivity: true });\n\n const data = cr?.code_revisions.reduce((acc, r) => {\n const recs = r?.files.map((rf) => {\n return {\n revision: r.revision,\n type: r.type,\n comment: r.comment,\n authorId: r.authorId,\n filename: rf.filename,\n datetime: r.datetime,\n };\n });\n return acc.concat(recs);\n }, []);\n\n const columns = useMemo(\n () => [\n {\n id: \"revision\",\n Header: \"Revisions\",\n accessor: \"revision\",\n Cell: ({ value, row }) => (\n \n ),\n },\n {\n id: \"author\",\n Header: \"Author\",\n accessor: \"authorId\",\n\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: \"datetime\",\n\n Cell: ({ value }) => {\n if (!value) return \"\";\n return (\n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n );\n },\n },\n {\n id: \"comment\",\n Header: \"Comment\",\n accessor: \"comment\",\n },\n {\n id: \"filename\",\n Header: \"File\",\n accessor: \"filename\",\n },\n ],\n [],\n );\n return (\n }\n isLoading={loading}\n >\n \n \n \n \n \n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Col, Form, ListGroup, Modal, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { toast } from \"react-toastify\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport SavingModal from \"../../common/modals/SavingModal\";\nimport Cr from \"../../crs\";\nimport Time from \"../../time\";\n\nexport default function CrShowTimeSetAll({\n cr,\n show,\n onHide,\n onSaveSuccess = () => {},\n}) {\n const dispatch = useDispatch();\n const [saving, setSaving] = useState(false);\n const [internalComments, setInternalComments] = useState(\n cr?.setAllInternalComments,\n );\n const [hold, setHold] = useState(cr?.setallHold);\n const [holdReasonId, setHoldReasonId] = useState(cr?.setallHoldReasonId);\n const holdReasonsState = useSelector((state) => state.times.holdReasons);\n const holdReasonRecord = holdReasonsState.entities[holdReasonId];\n const [holdDate, setHoldDate] = useState(null);\n\n const [billability, setBillability] = useState(cr?.setallBillability);\n const [invoiceFlag, setInvoiceFlag] = useState(cr?.setallInvoiceFlag);\n const [showOnInvoice, setShowOnInvoice] = useState(cr?.setallShowOnInvoice);\n const [overrideBillableFlag, setOverrideBillableFlag] = useState(\n cr?.setallOverrideBillableFlag,\n );\n const [billableOverrideReasonId, setBillableOverrideReasonId] = useState(\n cr?.setallBillableOverrideReasonId,\n );\n\n const borsState = useSelector((state) => state.times.billableOverrideReasons);\n const borsRecord = borsState.entities[billableOverrideReasonId];\n\n const changeBillableOverrideReasonId = (value) => {\n if (billableOverrideReasonId === value) return;\n\n const oldBors = billableOverrideReasonId;\n setBillableOverrideReasonId(value);\n if (borsState.entities[value]?.billFlagDefault === \"N\") {\n changeOverrideBillableFlag(false);\n if (value === \"HELP\" || value === \"FIXN\" || value === \"QA\")\n setShowOnInvoice(false);\n else if (oldBors === \"HELP\" || oldBors === \"FIXN\" || oldBors === \"QA\")\n setShowOnInvoice(true);\n } else {\n changeOverrideBillableFlag(true);\n if (showOnInvoice !== true) setShowOnInvoice(true);\n }\n };\n const changeOverrideBillableFlag = (v) => {\n if (showOnInvoice !== true && v === true) setShowOnInvoice(true);\n setOverrideBillableFlag(v);\n };\n\n const changeHoldReasonId = (value) => {\n setHoldReasonId(value);\n };\n const changeHoldDate = (v) => {\n setHoldDate(v.value);\n };\n\n const billableSectionVariant = !billability ? \"secondary\" : \"primary\";\n const holdSectionVariant = !hold ? \"secondary\" : \"primary\";\n\n const invoiceFlagYesButtonVariant = invoiceFlag\n ? \"primary\"\n : \"outline-primary\";\n const invoiceFlagNoButtonVariant = invoiceFlag\n ? \"outline-primary\"\n : \"primary\";\n\n const holdYesButtonVariant = hold ? \"primary\" : \"outline-primary\";\n const holdNoButtonVariant = hold ? \"outline-primary\" : \"primary\";\n\n const billabilityYesButtonVariant = billability\n ? \"primary\"\n : \"outline-primary\";\n const billabilityNoButtonVariant = billability\n ? \"outline-primary\"\n : \"primary\";\n\n const billableOverrideYesProps = overrideBillableFlag\n ? { variant: \"success\", disabled: true }\n : {\n variant: \"outline-success\",\n disabled:\n !billability ||\n (billableOverrideReasonId !== \"OTHR\" &&\n billableOverrideReasonId !== \"SWTS\"),\n };\n\n const billableOverrideNoProps = overrideBillableFlag\n ? { variant: \"outline-danger\", disabled: false || !billability }\n : { variant: \"danger\", disabled: true };\n\n const showOnInvoiceYesProps = showOnInvoice\n ? { variant: \"success\", disabled: true }\n : { variant: \"outline-success\", disabled: false || !billability };\n\n const showOnInvoiceNoProps = showOnInvoice\n ? {\n variant: \"outline-danger\",\n disabled: false || !billability || overrideBillableFlag,\n }\n : { variant: \"danger\", disabled: true };\n\n const internalCommentsVariant =\n _.isEmpty(internalComments) || internalComments.trim() === \"\"\n ? \"warning\"\n : \"primary\";\n\n useEffect(() => {\n setInternalComments(cr?.setallInternalComments);\n setHold(cr?.setallHold);\n setHoldReasonId(cr?.setallHoldReasonId);\n\n const nextMonth = moment().startOf(\"month\").add(1, \"months\");\n\n const defaultHoldDate =\n !_.isEmpty(cr?.setallHoldDate) && cr?.setallHoldDate !== \"\"\n ? _date.fromStamp(cr?.setallHoldDate)\n : nextMonth;\n setHoldDate(defaultHoldDate);\n\n setBillability(cr?.setallBillability);\n setInvoiceFlag(cr?.setallInvoiceFlag);\n setShowOnInvoice(cr?.setallShowOnInvoice);\n setOverrideBillableFlag(cr?.setallOverrideBillableFlag);\n setBillableOverrideReasonId(cr?.setallBillableOverrideReasonId);\n }, [cr]);\n\n const setAllPayload = {\n setallInternalComments: internalComments,\n setallHold: hold,\n setallHoldReasonId: holdReasonId,\n setallHoldDate: _date.stamp(holdDate),\n setallBillability: billability,\n setallInvoiceFlag: invoiceFlag,\n setallShowOnInvoice: showOnInvoice,\n setallBillableOverrideReasonId: billableOverrideReasonId,\n setallOverrideBillableFlag: overrideBillableFlag,\n };\n\n useEffect(() => {\n if (saving === true) {\n dispatch(\n Cr.actions.updateSetAll({\n id: cr?.id,\n setAll: setAllPayload,\n }),\n )\n .then(unwrapResult)\n .then(({ data: result }) => {\n setSaving(false);\n onSaveSuccess(result);\n })\n .catch(() => {\n setSaving(false);\n });\n }\n //TODO review dependencies\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dispatch, saving]);\n\n const saveDisabled =\n (billability || hold) && internalCommentsVariant === \"warning\";\n\n const clickSave = () => {\n if (saveDisabled) {\n toast.error(\"Cannot save, please fully fill out the form\");\n return;\n }\n setSaving(true);\n };\n\n return (\n \n \n \n Set All Time Settings\n \n \n \n \n \n \n \n \n \n {\"Override billability settings?\\u00A0\"}\n \n setBillability(true)}\n >\n Yes\n \n setBillability(false)}\n >\n No\n \n \n \n {billability ? (\n <>\n \n \n \n Billable override reason\n \n \n \n \n {borsRecord != null ? (\n <>\n \n \n \n Override Billability\n \n \n \n \n \n changeOverrideBillableFlag(true)}\n >\n Bill\n \n changeOverrideBillableFlag(false)}\n >\n {\"Don't\"}\n \n \n \n \n ) : billability ? (\n <>\n \n {\"Note:\"}\n \n \n \n {\n \"By not selecting a reason, all existing time records' reason would be cleared\"\n }\n \n \n \n ) : null}\n \n \n {borsRecord != null ? (\n <>\n \n \n \n {\"\\u00A0\"}\n \n \n \n \n {\"Override show on invoice?\\u00A0\"}\n \n setInvoiceFlag(true)}\n >\n Yes\n \n setInvoiceFlag(false)}\n >\n No\n \n \n \n \n {invoiceFlag ? (\n \n \n \n \n Show on Invoice\n \n \n \n \n \n setShowOnInvoice(true)}\n >\n Show\n \n setShowOnInvoice(false)}\n >\n Hide\n \n \n \n \n ) : null}\n \n {\" \"}\n \n ) : null}\n \n ) : null}\n \n\n \n \n \n {\"Override hold settings?\\u00A0\"}\n setHold(true)}\n >\n Yes\n \n setHold(false)}\n >\n No\n \n \n \n {hold ? (\n \n \n Hold Reason\n \n \n \n {holdReasonRecord != null ? (\n <>\n \n \n Hold until\n \n \n \n \n \n \n \n \n ) : null}\n \n \n ) : null}\n \n {billability || hold ? (\n \n \n \n Internal Comments\n setInternalComments(e.target.value)}\n value={internalComments}\n maxLength={120}\n autoFocus\n />\n \n \n \n ) : null}\n \n \n \n clickSave()}\n >\n Save\n \n \n \n onHide()}\n >\n Cancel\n \n \n \n \n \n \n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Button, Col, ListGroup, Modal, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\nimport { toast } from \"react-toastify\";\n\nimport { _datetime } from \"../../common/functions/dates\";\nimport OkCancelModal from \"../../common/modals/OkCancelModal\";\nimport SavingModal from \"../../common/modals/SavingModal\";\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\nimport Time from \"../../time\";\nimport CrPage from \"./CrPage\";\nimport CrShowNavSidebar from \"./CrShowNavSidebar\";\nimport CrShowTimeSetAll from \"./CrShowTimeSetAll\";\n\nexport default function CrShowTime() {\n const id = parseInt(useParams().id);\n const { cr, loading, updateOne, getCr } = Cr.useOne({\n id,\n redirect: false,\n logActivity: true,\n });\n const crs = useMemo(() => {\n return [id];\n }, [id]);\n const {\n times,\n getTimes,\n loading: timesLoading,\n } = Time.useAll({\n filter: { crs },\n });\n const { project } = Project.useOne({\n id: cr?.projectId,\n });\n const [showEstimate, setShowEstimate] = useState(false);\n const [selectedRows, setSelectedRows] = useState([]);\n const [isMultiSelect, setIsMultiSelect] = useState(false);\n\n const onRefresh = useCallback(() => {\n getCr();\n getTimes();\n }, [getCr, getTimes]);\n\n const onSelectedRowsChange = useCallback(\n (x) => {\n if (x === selectedRows) return;\n\n if (x == null || selectedRows == null) {\n setSelectedRows(x);\n return;\n } else if (x.length !== selectedRows.length) {\n setSelectedRows(x);\n return;\n } else {\n for (let a = 0; a < x.length; a++) {\n if (x[a].id !== selectedRows[a].id) {\n setSelectedRows(x);\n return;\n }\n }\n }\n },\n [selectedRows],\n );\n\n const transferred =\n cr?.transferredFolder && cr?.transferredFolder !== \"CURRENT\";\n const estimate = {\n minCost: _.multiply(cr?.estimateRate, cr?.estimateMinHours),\n maxCost: _.multiply(cr?.estimateRate, cr?.estimateMaxHours),\n minHours: cr?.estimateMinHours,\n maxHours: cr?.estimateMaxHours,\n rate: cr?.estimateRate,\n };\n const actual = {\n invoicedBlHours: cr?.actualInvoicedHours,\n invoicedNbHours: cr?.actualInvoicedNbHours,\n billableHours: cr?.actualBillableHours,\n nonBillHours: cr?.actualNonBillableHours,\n totalHours: _.sum([\n cr?.actualInvoicedHours,\n cr?.actualBillableHours,\n cr?.actualNonBillableHours,\n ]),\n invoicedBlCost: cr?.actualInvoicedCost,\n invoicedNbCost: cr?.actualInvoicedNbCost,\n billableCost: cr?.actualBillableCost,\n nonBillCost: cr?.actualNonBillableCost,\n totalCost: _.sum([\n cr?.actualInvoicedCost,\n cr?.actualBillableCost,\n cr?.actualNonBillableCost,\n ]),\n };\n\n return (\n }\n isLoading={loading}\n >\n \n \n \n \n \n \n \n \n }\n isLoading={loading}\n onEdit={transferred ? undefined : () => setShowEstimate(true)}\n />\n setShowEstimate(false)}\n update={updateOne}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction TimeButtons({\n cr,\n id,\n onChange,\n getTimes,\n setMultiSelect,\n selectedRows,\n isLoading = false,\n}) {\n const dispatch = useDispatch();\n const timer = Time.useTimer();\n const [showSetall, setShowSetall] = useState(false);\n const [showStartMove, setShowStartMove] = useState(false);\n const [showMoveFinish, setShowMoveFinish] = useState(false);\n const [moveStarted, setMoveStarted] = useState(false);\n const [moveCr, setMoveCr] = useState(null);\n const [moveTheRecords, setMoveTheRecords] = useState(false);\n\n const [ModifyModal, modifyModelProps, setModifyShow] = Time.useModifyModal({\n handleChange: () => {\n setModifyShow();\n onChange();\n },\n });\n\n const clickedMoveTimeButton = () => {\n if (moveStarted === false) setShowStartMove(true);\n else if (selectedRows.length === 0) {\n setMoveStarted(false);\n setMultiSelect(false);\n } else {\n let errorMessage = \"\";\n for (let i = 0; i < selectedRows.length; i++) {\n if (selectedRows[i].invoiceNumber !== \"\") {\n errorMessage = \"You can not move time that is already on an invoice\";\n break;\n }\n }\n if (errorMessage === \"\") setShowMoveFinish(true);\n else toast.error(errorMessage);\n }\n };\n\n useEffect(() => {\n if (moveTheRecords === true) {\n const times = selectedRows.map((single) => single.id);\n dispatch(Time.actions.moveTime({ crId: moveCr.id, times: times }))\n .then(unwrapResult)\n .then(() => {\n setMoveTheRecords(false);\n setMoveStarted(false);\n setMultiSelect(false);\n onChange();\n })\n .catch((result) => {\n console.log(result);\n setMoveTheRecords(false);\n });\n }\n }, [\n dispatch,\n moveCr,\n moveTheRecords,\n onChange,\n selectedRows,\n setMultiSelect,\n ]);\n\n const moveMessage =\n selectedRows.length > 1\n ? \"Are you sure you want to move these \" +\n selectedRows.length +\n \" records?\"\n : \"Are you sure you want to move this time record?\";\n\n return (\n <>\n setShowSetall(false)}\n onSaveSuccess={() => {\n setShowSetall(false);\n getTimes();\n }}\n />\n {cr ? (\n setShowStartMove(false)}\n onOk={(x) => {\n setShowStartMove(false);\n setMoveStarted(true);\n setMoveCr(x);\n setMultiSelect(true);\n }}\n />\n ) : null}\n \n {\n setShowMoveFinish(false);\n }}\n onOk={() => {\n setShowMoveFinish(false);\n setMoveTheRecords(true);\n }}\n okText={\"Yes\"}\n modalTitle={\"Move time records\"}\n body={\n <>\n \n {\"Move to CR \" + moveCr?.id}\n \n \n {moveCr?.customers[0].name}\n \n \n {moveCr?.synopsis}\n \n \n  \n \n \n {moveMessage}\n \n \n }\n />\n \n \n
    \n \n
    \n
    \n \n {moveStarted && selectedRows.length > 0\n ? \"Move finish\"\n : moveStarted\n ? \"Move cancel\"\n : \"Move time\"}\n {\" \"}\n setShowSetall(true)}\n disabled={isLoading}\n >\n Set All\n \n
    \n
    \n {timer.current.status !== \"running\" ? (\n \n ) : (\n setModifyShow(timer.current.id, true)}\n variant=\"danger\"\n disabled={isLoading}\n >\n \n {\"Stop timer\"}\n \n \n \n {\"Started on: \" +\n _datetime.displayTime(timer.current.startTime)}\n \n \n \n {timer.current.timeProject}\n \n \n )}\n
    \n \n \n
    \n \n );\n}\n\nfunction NewTimeButton({ crId, onNewTime, startTimer = false }) {\n const [showNewModal, setShowNewModal] = useState(false);\n const onCancelModify = useCallback(() => setShowNewModal(false), []);\n\n const user = useSelector((state) => state.auth.user);\n const date = useMemo(() => moment(), []);\n\n const desc = startTimer === true ? \"Start New Timer\" : \"New Time Entry\";\n const variant = startTimer === true ? \"success\" : \"primary\";\n return (\n <>\n \n {\n onCancelModify();\n onNewTime();\n }}\n onCancel={onCancelModify}\n />\n \n );\n}\n\nfunction CrStartMoveTime({ cr, onHide, onOk, show }) {\n const [newCr, setNewCr] = useState(null);\n const [, setNewCrId] = useState(\"\");\n const [crIsValid, setCrIsValid] = useState(false);\n\n const handleCrChange = (p) => {\n if (p.setallHold || p.setallBillability) {\n toast.warning(\"'Set All Time' settings were found on this new Cr.\");\n }\n setNewCrId(p.id);\n setNewCr(p);\n setCrIsValid(true);\n };\n\n return (\n onHide()} backdrop=\"static\">\n \n Move time to another CR\n \n \n \n \n {\n if (cr) handleCrChange(cr);\n else {\n setCrIsValid(false);\n setNewCr(null);\n setNewCrId(null);\n }\n }}\n />\n \n \n \n \n onOk(newCr)}\n disabled={!crIsValid}\n variant=\"primary\"\n >\n Ok\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport CrEdit from \"./CrEdit\";\nimport CrIndex from \"./CrIndex\";\nimport CrNew from \"./CrNew\";\nimport CrShow from \"./CrShow\";\nimport CrShowLog from \"./CrShowLog\";\nimport CrShowProject from \"./CrShowProject\";\nimport CrShowQa from \"./CrShowQa\";\nimport CrShowRevisions from \"./CrShowRevisions\";\nimport CrShowTime from \"./CrShowTime\";\n\nexport default function CrsRouting() {\n let { path } = useRouteMatch();\n\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","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function CustomerNavSidebar({ children }) {\n return (\n \n Customers\n
    \n {children}\n
    \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport CustomerNavSidebar from \"./CustomerNavSidebar\";\n\nexport default function CustomerIndexNavSidebar({ children }) {\n return (\n \n \n Third Party Licenses\n \n \n Jira Projects\n \n \n Hosting Agreements\n \n {children}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { ButtonGroup, Col, Row, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../common/pages/Page\";\nimport Customer from \"../../customers\";\nimport CustomerIndexNavSidebar from \"./CustomerIndexNavSidebar\";\n\nexport default function CustomerIndex() {\n const [active, setActive] = useState(true);\n const [modules, setModules] = useState([]);\n const [organizations, setOrganizations] = useState([]);\n const filter = {\n active: active,\n modules: modules,\n organizations: organizations,\n };\n\n return (\n }\n >\n \n \n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n \n \n {\"Modules\"}\n \n \n \n {\"Organizations\"}\n \n \n \n \n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Badge, Col, Row } from \"react-bootstrap\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { toast } from \"react-toastify\";\n\nexport default function Address({ address: adr, className }) {\n const { href, adrString } = useMemo(() => {\n const adrString = `${adr.address} ${\n adr.address2 ? adr.address2 + \" \" : \"\"\n }${adr.city}, ${adr.state} ${adr.zipCode}`;\n const href = `https://maps.google.com/?q=${encodeURIComponent(adrString)}`;\n return { href, adrString };\n }, [adr]);\n return (\n \n \n \n {`${adr.address}\\n${adr.address2 ? adr.address2 + \"\\n\" : \"\"}${\n adr.city\n }, ${adr.state} ${adr.zipCode}`}\n \n \n \n toast.success(\"Address copied\")}\n >\n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport CustomerNavSidebar from \"./CustomerNavSidebar\";\n\nexport default function CustomerShowNavSidebar({ id }) {\n return (\n \n {`Customer ${id}`}\n Projects\n CRs\n Servers\n \n S3 Buckets\n \n \n Third Party Licenses\n \n \n Jira Projects\n \n \n Hosting Agreements\n \n \n );\n}\n","import _, { groupBy } from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Col, Form, ListGroup, Row, Table as BSTable } from \"react-bootstrap\";\nimport { useParams } from \"react-router\";\n\nimport Address from \"../../common/details/Address\";\nimport DetailField from \"../../common/details/DetailField\";\nimport DetailSection from \"../../common/details/DetailSection\";\nimport DetailTable from \"../../common/details/DetailTable\";\nimport Tel from \"../../common/details/Tel\";\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Table from \"../../common/tables/Table\";\nimport Contact from \"../../contacts\";\nimport Customer from \"../../customers\";\nimport User from \"../../users\";\nimport CustomerShowNavSidebar from \"./CustomerShowNavSidebar\";\n\nexport default function CustomerShow() {\n const id = parseInt(useParams().id);\n const { customer, loading } = Customer.useOne({ id, canGet: true });\n const _loading = loading && _.isEmpty(customer);\n\n const sections = [\n \n
    \n ,\n \n \n

    {customer?.comment}

    \n
    ,\n \n \n ,\n \n \n ,\n \n \n ,\n \n \n \n \n \n \n \n \n \n \n {customer?.thirdPartyApps?.map((a, idx) => (\n \n {a.description}\n \n ))}\n \n \n \n \n ,\n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n \n \n ,\n \n \n ,\n ];\n\n return (\n }\n >\n {sections}\n \n );\n}\n\nfunction isValidUrl(string) {\n try {\n new URL(string);\n } catch (_) {\n return false;\n }\n\n return true;\n}\n\nfunction Details({ customer, isLoading }) {\n const today = useMemo(() => moment(), []);\n const warranty = _date.fromStamp(customer?.warrantyExpirationDate);\n return (\n \n \n \n ,\n },\n {\n value: ,\n hide: !customer?.phone2,\n },\n {\n header: \"Fax\",\n value: customer?.fax,\n },\n {\n header: \"Website\",\n value: isValidUrl(customer?.website) ? (\n \n {customer?.website}\n \n ) : (\n customer?.website\n ),\n },\n {\n header: \"IP Address\",\n value: customer?.ipAddress,\n },\n ]}\n isLoading={isLoading}\n />\n \n \n \n \n
      \n {customer?.businessTypes?.map((t, idx) => (\n
    • \n {t.description}\n
    • \n ))}\n
    \n
    \n \n
      \n {customer?.produceOrganizations?.map((t, idx) => (\n
    • \n {t.description}\n
    • \n ))}\n
    \n
    \n \n \n \n \n \n {customer?.futureUpgradeDate ? (\n * future pending\n ) : null}\n \n \n \n

    \n \n

    \n {customer?.otherChampions?.map((c, idx) => (\n

    \n \n

    \n ))}\n \n ),\n },\n {\n header: \"Engineering\",\n value: customer?.engineeringResponsibilty,\n },\n {\n header: \"Support\",\n value: customer?.supportPlan === \"P\" ? \"Premium\" : \"Standard\",\n },\n {\n header: \"Parent Customer\",\n value: ,\n hide: !customer?.parentCustomerId,\n },\n {\n header: \"Server Customer\",\n value: ,\n hide: !customer?.serverCustomerId,\n },\n {\n header: \"Alias\",\n value: customer?.alias,\n },\n ]}\n isLoading={isLoading}\n />\n \n
    \n );\n}\n\nfunction CustomerLocationType({ locations, header }) {\n if (!locations?.length) return null;\n\n return (\n \n \n {locations?.map((t, idx) => (\n \n \n \n ))}\n \n \n );\n}\n\nfunction CustomerLocations({ locations, locationsInfo }) {\n const { primary, secondary, invoice, ...others } = useMemo(\n () => groupBy(locations, \"type\"),\n [locations],\n );\n\n return (\n <>\n {locationsInfo && locationsInfo !== \"\" ? (\n \n \n \n \n
    Locations Information
    \n \n
    \n \n \n {locationsInfo?.split(/\\r\\n|\\r|\\n/).map((x) => {\n return (\n \n {x}\n \n );\n })}\n \n \n \n
    \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction CustomerModules({ modules, isLoading }) {\n const _loading = isLoading && _.isEmpty(modules);\n const columns = React.useMemo(\n () => [\n {\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n Header: \"Status\",\n accessor: \"status\",\n },\n {\n Header: \"Date\",\n accessor: \"date\",\n Cell: ({ value }) => value && _date.display(_date.fromStamp(value)),\n },\n {\n Header: \"Licenses\",\n accessor: \"licenses\",\n dataType: \"number\",\n },\n ],\n [],\n );\n return (\n \n \n \n \n \n );\n}\n\nfunction CustomerUpgradeDates({ upgradeDates, isLoading }) {\n const _loading = isLoading && _.isEmpty(upgradeDates);\n const columns = React.useMemo(\n () => [\n {\n Header: \"Date\",\n accessor: \"date\",\n Cell: ({ value }) => value && _date.display(_date.fromStamp(value)),\n },\n {\n Header: \"Completed\",\n accessor: \"isComplete\",\n Cell: ({ value }) => (value ? \"Yes\" : \"No\"),\n },\n {\n Header: \"Code Date\",\n accessor: \"codeDate\",\n Cell: ({ value }) =>\n (value && _date.display(_date.fromStamp(value))) || null,\n },\n ],\n [],\n );\n if (upgradeDates === undefined) return null;\n\n return (\n \n \n \n \n \n );\n}\n\nfunction CustomerCodeDates({ codeDates, isLoading }) {\n const _loading = isLoading && _.isEmpty(codeDates);\n const columns = React.useMemo(\n () => [\n {\n Header: \"System\",\n accessor: \"system\",\n },\n {\n Header: \"Date\",\n accessor: \"date\",\n Cell: ({ value }) => value && _date.display(_date.fromStamp(value)),\n },\n ],\n [],\n );\n return (\n \n \n
    \n \n \n );\n}\n\nfunction CustomerLicense({ license }) {\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 \n \n \n \n \n \n );\n}\n\nfunction CustomerLogins({ logins, isLoading }) {\n const _loading = isLoading && _.isEmpty(logins);\n const columns = React.useMemo(\n () => [\n {\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n Header: \"Password\",\n accessor: \"password\",\n },\n ],\n [],\n );\n return (\n \n \n
    TypeUsersLicense
    PPro{license?.pproUsers}
    PPro Single Function{license?.singleFunctionUsers}
    PPro Extra Sessions\n {license?.extraSessionsUnlimted\n ? \"Unlimited\"\n : license?.extraSessionsUsers}\n
    DBC/DX{license?.dbcdxUsers}{license?.dbcdx}
    DBC/FS{license?.dbcfsUsers}{license?.dbcfs}
    \n \n \n );\n}\n\nfunction CustomerAccounting({ travelInformation, isPoRequired }) {\n return (\n \n \n ,\n },\n {\n header: \"Travel Billable\",\n value: (\n \n ),\n },\n {\n header: \"Travel Billable Hours\",\n value: travelInformation?.billableHours,\n },\n {\n header: \"Travel Non-Billable Hours\",\n value: travelInformation?.nonBillableHours,\n },\n ]}\n />\n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport CrLinkWithContextMenu from \"../../common/components/CrLinkWithContextMenu\";\nimport Page from \"../../common/pages/Page\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport CustomerShowNavSidebar from \"./CustomerShowNavSidebar\";\n\nconst CrTableComponents = {\n CrLink: CrLinkWithContextMenu,\n};\n\nconst defLayout = [\n \"createDate\",\n \"id\",\n \"project\",\n \"group\",\n \"owner\",\n \"status\",\n \"synopsis\",\n];\n\nconst defSort = [{ id: \"createDate\", desc: true }, { id: \"id\" }];\n\nexport default function CustomerShowCrs() {\n const id = parseInt(useParams().id);\n const { data: customer } = Customer.useOne({ id });\n const { crs, loading, hasMore, getMore, reset } = Cr.useSearch({\n filter: {\n folderId: \"CURRENT\",\n customers: [id],\n customersInclude: true,\n },\n });\n\n return (\n }\n lead={customer?.name}\n >\n \n \n );\n}\n","import moment from \"moment\";\nimport React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../common/pages/Page\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport CustomerShowNavSidebar from \"./CustomerShowNavSidebar\";\n\nexport default function CustomerShowProjects() {\n const id = parseInt(useParams().id);\n const { customer } = Customer.useOne({ id });\n const { projects, loading, hasMore, getMore, lastUpdate, reset } =\n Project.useSearch({\n filter: {\n folderId: \"CURRENT\",\n customers: [id.toString().padStart(6, \"0\")],\n },\n });\n\n return (\n }\n lead={customer?.name}\n >\n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport CustomerNavSidebar from \"../CustomerNavSidebar\";\n\nexport default function HostingAgreementNavSidebar({ children, customerId }) {\n return (\n \n \n Hosting Agreements\n \n \n New Agreement\n \n \n Monthly Run\n \n
    \n {children}\n
    \n );\n}\n","import React, { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport HostingAgreementNavSidebar from \"./HostingAgreementNavSidebar\";\n\nexport default function HostingAgreementIndex() {\n const customerId = useSearchParams(\"customer\");\n\n const { hostingAgreementAccess, isAdmin } = useSelector(\n (state) => state.auth,\n );\n if (\n !(\n hostingAgreementAccess === \"V\" ||\n hostingAgreementAccess === \"M\" ||\n isAdmin\n )\n )\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return ;\n}\n\nfunction HostingAgreementIndexDisplay() {\n const customerId = useSearchParams(\"customer\");\n const { customer } = Customer.useOne({ id: customerId, canGet: false });\n\n const { entities, reset, getMany, loading } =\n Customer.HostingAgreements.useAll({\n canGet: false,\n });\n\n const title = customer?.name\n ? `${customer?.name} Hosting Agreements`\n : \"Customer Hosting Agreements\";\n\n useEffect(() => {\n reset();\n getMany({ customerId });\n }, [customerId, getMany, reset]);\n return (\n }\n >\n {\n reset();\n getMany({ customerId });\n }}\n />\n \n );\n}\n","import React, { useState } from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport ReactDatePicker from \"react-datepicker\";\nimport { useSelector } from \"react-redux\";\n\nimport { _date } from \"../../../common/functions/dates\";\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport HostingAgreementNavSidebar from \"./HostingAgreementNavSidebar\";\n\nexport default function HostingAgreementMonthNew() {\n const customerId = useSearchParams(\"customerId\");\n const [, setRedirect] = useRedirect();\n var x = new Date();\n x.setDate(1);\n x.setMonth(x.getMonth());\n const [date, setDate] = useState(x);\n\n const { hostingAgreementAccess, isAdmin } = useSelector(\n (state) => state.auth,\n );\n\n if (\n !(\n hostingAgreementAccess === \"M\" ||\n hostingAgreementAccess === \"V\" ||\n isAdmin\n )\n )\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }\n >\n \n
    {\"Month\"}\n \n setDate(x)}\n dateFormat=\"MM/yyyy\"\n showMonthYearPicker\n />\n \n \n \n setRedirect(\n `/customers/hosting-agreements/month/${_date.monthStamp(date)}`,\n )\n }\n >\n Go\n \n \n \n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Button, Tab, Tabs } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport HostingAgreementNavSidebar from \"./HostingAgreementNavSidebar\";\n\nexport default function HostingAgreementMonthShow() {\n const id = parseInt(useParams().id);\n const title = \"Hosting Agreement Month\";\n\n const { hostingAgreementAccess, isAdmin } = useSelector(\n (state) => state.auth,\n );\n\n if (\n !(\n hostingAgreementAccess === \"V\" ||\n hostingAgreementAccess === \"M\" ||\n isAdmin\n )\n ) {\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n }\n\n const canEditHostingAgreements = hostingAgreementAccess === \"M\" || isAdmin;\n\n return (\n \n );\n}\n\nfunction HostingAgreementMonthReview({ id, title, canSubmit }) {\n const { entity, getOne, updateOne, loading } =\n Customer.HostingAgreementMonths.useOne({\n id,\n canGet: true,\n });\n\n const dataCharges = useMemo(() => {\n if (entity?.charges) {\n const charges = [];\n for (let i = 0; i < entity?.charges.length; i++) {\n charges.push({ ...entity?.charges[i], exceptionsExist: false });\n for (let x = 0; x < entity?.exceptions.length; x++) {\n if (\n entity?.exceptions[x].customerId === entity?.charges[i].customerId\n ) {\n charges[i].exceptionsExist = true;\n break;\n }\n }\n }\n return charges;\n } else return null;\n }, [entity]);\n\n return (\n }\n >\n \n \n {\n getOne({ id });\n }}\n />\n \n \n {\n getOne({ id });\n }}\n />\n \n \n updateOne({ id: id })}\n disabled={loading || !canSubmit}\n >\n Generate Monthly Charges\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport HostingAgreementNavSidebar from \"./HostingAgreementNavSidebar\";\n\nexport default function HostingAgreementShow() {\n const { createOne } = Customer.HostingAgreements.useOne();\n const customerId = useSearchParams(\"customerId\");\n const [, setRedirect] = useRedirect();\n\n const { hostingAgreementAccess, isAdmin } = useSelector(\n (state) => state.auth,\n );\n\n if (!(hostingAgreementAccess === \"M\" || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }\n >\n {\n createOne(values).then(({ id }) =>\n customerId\n ? setRedirect(\n `/customers/hosting-agreements?customer=${customerId}`,\n )\n : setRedirect(`/customers/hosting-agreements/${id}`),\n );\n }}\n />\n \n );\n}\n","import React from \"react\";\nimport { Alert } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport UserActivityTable from \"../../../activity/userActivity/UserActivityTable\";\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport AttachmentsTable from \"../../../common/details/AttachmentsTable\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport HostingAgreementNavSidebar from \"./HostingAgreementNavSidebar\";\n\nexport default function HostingAgreementShow() {\n const id = parseInt(useParams().id);\n const { entity, updateOne, getOne, loading, createAttachment } =\n Customer.HostingAgreements.useOne({\n id,\n canGet: true,\n });\n const title = \"Hosting Agreement\";\n\n const { hostingAgreementAccess, isAdmin } = useSelector(\n (state) => state.auth,\n );\n\n const canEditHostingAgreements = hostingAgreementAccess === \"M\" || isAdmin;\n\n if (\n !(\n hostingAgreementAccess === \"V\" ||\n hostingAgreementAccess === \"M\" ||\n isAdmin\n )\n )\n return (\n \n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n const disabled = loading || !canEditHostingAgreements;\n\n return (\n \n }\n >\n {entity ? (\n <>\n updateOne(agreement)}\n isDisabled={disabled}\n />\n

    \n \n \n \n \n \n \n \n \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport HostingAgreementIndex from \"./HostingAgreementIndex\";\nimport HostingAgreementMonthNew from \"./HostingAgreementMonthNew\";\nimport HostingAgreementMonthShow from \"./HostingAgreementMonthShow\";\nimport HostingAgreementNew from \"./HostingAgreementNew\";\nimport HostingAgreementShow from \"./HostingAgreementShow\";\n\nexport default function HostingAgreementsPages({ NavSidebar }) {\n let { path } = useRouteMatch();\n\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\nfunction HostingAgreementNavSidebar({ NavSidebar }) {\n return (\n \n
    \n \n New License\n \n
    \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport jiraState from \"./state\";\n\nexport const {\n useEntities: useJiraProjects,\n useEntity: useJiraProject,\n useEntitiesBySearch: useJiraProjectsByCustomer,\n} = createEntityHooks({\n entity: jiraState.entity,\n actions: jiraState.actions,\n});\n","import { number, object, string } from \"yup\";\n\nconst jiraProjectSchema = object().shape({\n id: string().label(\"Jira Project ID\").required().max(6),\n jiraKey: string().label(\"Jira Prefix\").required().max(6),\n description: string().label(\"Description\").required(),\n customerId: number().label(\"Customer\").required(),\n projectType: string().label(\"Type\").required().max(1),\n});\n\nexport default jiraProjectSchema;\n","// TODO: Display is still messed up for practice upgrade / onsite project\n// fields. The variables appear to be getting filled in... the form\n// just isn't displaying them.\n\nimport { isUndefined } from \"lodash\";\nimport React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport DetailTable from \"../../common/details/DetailTable\";\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport { _date } from \"../../common/functions/dates\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport CustomersSelect from \"../CustomerSelect\";\nimport jiraSchema from \"./jiraProjectSchema\";\n\nexport default function JiraProjectEditor({\n values: { startDate, endDate, ...values } = {},\n onSubmit,\n isDisabled = false,\n isNew = false,\n}) {\n return (\n \n
    \n \n onSubmit({\n startDate: startDate ? _date.stamp(startDate) : \"\",\n endDate: endDate ? _date.stamp(endDate) : \"\",\n ...values,\n })\n }\n schema={{ schema: jiraSchema }}\n isDisabled={isDisabled}\n showDevTool\n >\n \n \n \n \n \n \n \n );\n}\n\nfunction JiraForm({ isNew }) {\n const { submitForm } = useFormContext();\n useFormsKeys();\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 \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction ProjectId({ name, label, isDisabled }) {\n const {\n field: { onChange, value, onBlur },\n fieldState: { error },\n } = useController({ name });\n\n return (\n \n \n {\n const value = v === null ? \"\" : v?.id;\n onChange(value);\n }}\n value={value || null}\n onBlur={onBlur}\n isInvalid={error}\n isDisabled={isDisabled}\n errors={error?.message}\n canFetch={\"auto\"}\n isClearable\n canAllowTransferred\n />\n \n \n );\n}\n\nfunction JiraTypeSelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n disabled={isDisabled}\n isInvalid={isUndefined(isInvalid) ? !!error : isInvalid}\n {...field}\n {...props}\n >\n \n \n \n \n \n \n \n \n \n {error?.message}\n \n \n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function JiraProjectLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport parseIntId from \"../../common/functions/parseIntId\";\nimport { useJiraProjectsByCustomer } from \"./hooks\";\n\nconst JiraProjectSelectByCustomer = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n customerId,\n placeholder = \"Select Jira Project...\",\n ...props\n },\n ref,\n ) => {\n const { jiraProjects, loading } = useJiraProjectsByCustomer({\n search: { customerId },\n canGet: !!customerId,\n });\n\n const _options = _.sortBy(\n jiraProjects\n .filter((c) => c.inactive === false || c.id === value)\n .map((f) => {\n return { label: f.name, value: parseIntId(f.id) };\n }),\n \"label\",\n );\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n return (\n \n );\n },\n);\n\nexport default JiraProjectSelectByCustomer;\n","export const JIRA_PROJECT_TYPES = {\n W: {\n id: \"W\",\n description: \"WMS\",\n },\n L: {\n id: \"L\",\n description: \"Go live\",\n },\n U: {\n id: \"U\",\n description: \"Upgrade\",\n },\n M: {\n id: \"M\",\n description: \"Merger\",\n },\n Q: {\n id: \"Q\",\n description: \"QA\",\n },\n C: {\n id: \"C\",\n description: \"Consulting trip\",\n },\n};\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\nimport CustomerTableFilter from \"../CustomerTableFilter\";\nimport JiraLink from \"./JiraProjectLink\";\nimport { JIRA_PROJECT_TYPES } from \"./types\";\n\nconst DEFAULT_COMPONENTS = {\n Customer: ({ value }) => (\n \n {value}\n \n ),\n};\n\nexport default function JiraProjectTable({\n jiraProjects,\n jiraLink = true,\n Components: OverrideComponents,\n layout = [\n \"description\",\n \"customer\",\n \"jiraKey\",\n \"openDefectCount\",\n \"openCustomCount\",\n \"closedDefectCount\",\n \"closedCustomCount\",\n ],\n initialSort = { id: \"jiraKey\" },\n ...props\n}) {\n const Components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...OverrideComponents }),\n [OverrideComponents],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: jira } }) =>\n jiraLink ? (\n \n {value || jira?.description || jira?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: Components.Customer,\n },\n\n {\n id: \"jiraKey\",\n Header: \"JIRA Prefix\",\n accessor: \"jiraKey\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"openDefectCount\",\n Header: \"Open Defects\",\n accessor: \"openDefectCount\",\n disableFilters: true,\n },\n {\n id: \"openCustomCount\",\n Header: \"Open Custom\",\n accessor: \"openCustomCount\",\n disableFilters: true,\n },\n {\n id: \"closedDefectCount\",\n Header: \"Closed Defects\",\n accessor: \"closedDefectCount\",\n disableFilters: true,\n },\n {\n id: \"closedCustomCount\",\n Header: \"Closed Custom\",\n accessor: \"closedCustomCount\",\n disableFilters: true,\n },\n {\n id: \"techLead\",\n Header: \"Tech Lead\",\n accessor: \"techLead\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"projectType\",\n Header: \"Type\",\n accessor: (jiraProject) =>\n JIRA_PROJECT_TYPES[jiraProject?.projectType]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n ],\n [Components, jiraLink],\n );\n return (\n \n );\n}\n","import React from \"react\";\n\nimport { useJiraProjectsByCustomer } from \"./hooks\";\nimport JiraTable from \"./JiraProjectTable\";\n\nconst layout = [\"customerId\", \"jiraKey\", \"description\"];\n\nexport default function JiraProjectTableByCustomer({ customerId }) {\n const { jiraProjects, loading, reset } = useJiraProjectsByCustomer({\n search: { customerId },\n canGet: true,\n });\n return (\n reset({ customerId })}\n skeletonLines={8}\n />\n );\n}\n","import {\n useJiraProject,\n useJiraProjects,\n useJiraProjectsByCustomer,\n} from \"./hooks\";\nimport JiraProjectEditor from \"./JiraProjectEditor\";\nimport JiraProjectLink from \"./JiraProjectLink\";\nimport JiraProjectSelectByCustomer from \"./JiraProjectSelectByCustomer\";\nimport JiraProjectTable from \"./JiraProjectTable\";\nimport JiraProjectTableByCustomer from \"./JiraProjectTableByCustomer\";\nimport state from \"./state\";\n\nconst JiraProject = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useJiraProject,\n useAll: useJiraProjects,\n useSearch: useJiraProjectsByCustomer,\n // Components\n Table: JiraProjectTable,\n Link: JiraProjectLink,\n SelectByCustomer: JiraProjectSelectByCustomer,\n TableByCustomer: JiraProjectTableByCustomer,\n Editor: JiraProjectEditor,\n // Related Entity Objects\n};\n\nexport default JiraProject;\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport CustomerNavSidebar from \"../CustomerNavSidebar\";\n\nexport default function JiraProjectNavSidebar({ children }) {\n return (\n \n \n Jira Projects\n \n \n New Jira Project\n \n
    \n {children}\n \n );\n}\n","import React from \"react\";\n\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport JiraProject from \"../../../customers/jiraProjects\";\nimport JiraProjectNavSidebar from \"./JiraProjectNavSidebar\";\n\nconst TABLE_COMPONENTS = {\n Customer: ({ value }) => {value},\n};\n\nexport default function JiraProjectIndex() {\n const customerId = useSearchParams(\"customer\");\n const { customer } = Customer.useOne({ id: customerId, canGet: false });\n const { jiraProjects, reset, getMany, loading } = JiraProject.useSearch({\n canGet: true,\n search: customerId ? { customerId } : {},\n });\n\n const title = customer?.name\n ? `Jira Projects: ${customer?.name}`\n : \"Jira Projects\";\n\n return (\n }>\n {\n reset();\n getMany();\n }}\n />\n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport JiraProject from \"../../../customers/jiraProjects\";\nimport JiraProjectNavSidebar from \"./JiraProjectNavSidebar\";\n\nexport default function JiraProjectNew() {\n const { createOne } = JiraProject.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }>\n \n createOne(jiraProject).then(({ id }) =>\n setRedirect(`/jira-projects/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport JiraProject from \"../../../customers/jiraProjects\";\nimport JiraProjectNavSidebar from \"./JiraProjectNavSidebar\";\n\nexport default function JiraProjectShow() {\n const id = parseInt(useParams().id);\n const { jiraProject, updateOne, loading } = JiraProject.useOne({\n id,\n canGet: true,\n });\n\n const title = `Jira${\n jiraProject?.description ? \": \" + jiraProject.description : \"\"\n }`;\n return (\n }\n >\n {jiraProject ? (\n updateOne(jiraProject)}\n isDisabled={loading}\n />\n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport JiraProjectIndex from \"./JiraProjectIndex\";\nimport JiraProjectNew from \"./JiraProjectNew\";\nimport JiraProjectShow from \"./JiraProjectShow\";\n\nexport default function JiraProjectsRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport CustomerNavSidebar from \"../CustomerNavSidebar\";\n\nexport default function ThirdPartyLicenseNavSidebar({ children, customerId }) {\n return (\n \n \n Third Party Licenses\n \n \n New License\n \n
    \n {children}\n
    \n );\n}\n","import React, { useEffect } from \"react\";\n\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport ThirdPartyLicenseNavSidebar from \"./ThirdPartyLicenseNavSidebar\";\n\nexport default function ThirdPartyLicenseIndex() {\n const customerId = useSearchParams(\"customer\");\n const { customer } = Customer.useOne({ id: customerId, canGet: false });\n\n const { entities, reset, getMany, loading } =\n Customer.ThirdPartyLicenses.useAll({\n canGet: false,\n });\n\n const title = customer?.name\n ? `${customer?.name} Third Party Licenses`\n : \"Customer Third Party Licenses\";\n\n useEffect(() => {\n reset();\n getMany({ customerId });\n }, [customerId, getMany, reset]);\n return (\n }\n >\n {\n reset();\n getMany({ customerId });\n }}\n />\n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport ThirdPartyLicenseNavSidebar from \"./ThirdPartyLicenseNavSidebar\";\n\nexport default function ThirdPartyLicenseShow() {\n const { createOne } = Customer.ThirdPartyLicenses.useOne();\n const customerId = useSearchParams(\"customerId\");\n const [, setRedirect] = useRedirect();\n return (\n }\n >\n \n createOne(license).then(({ id }) =>\n customerId\n ? setRedirect(\n `/customers/third-party-licenses?customer=${customerId}`,\n )\n : setRedirect(`/customers/third-party-licenses/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Comments from \"../../../common/details/Comments\";\nimport DetailSection from \"../../../common/details/DetailSection\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport { LICENSE_TYPES } from \"../../../customers/thirdPartyLicenses/types\";\nimport ThirdPartyLicenseNavSidebar from \"./ThirdPartyLicenseNavSidebar\";\n\nexport default function ThirdPartyLicenseShow() {\n const id = parseInt(useParams().id);\n const { entity, updateOne, loading, createComment, updateComment } =\n Customer.ThirdPartyLicenses.useOne({\n id,\n canGet: true,\n });\n const { customer } = Customer.useOne({ id: entity?.customerId });\n const title = customer\n ? `${customer?.name} - ${LICENSE_TYPES?.[entity?.type]?.description}`\n : `Customer Third Party License${entity?.id ? \": \" + entity.id : \"\"}`;\n return (\n \n }\n >\n {entity ? (\n updateOne(license)}\n isDisabled={loading}\n />\n ) : null}\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport ThirdPartyLicenseIndex from \"./ThirdPartyLicenseIndex\";\nimport ThirdPartyLicenseNew from \"./ThirdPartyLicenseNew\";\nimport ThirdPartyLicenseShow from \"./ThirdPartyLicenseShow\";\n\nexport default function ThirdPartyLicensesPages({ NavSidebar }) {\n let { path } = useRouteMatch();\n\n return (\n \n \n }\n />\n \n \n }\n />\n \n \n }\n />\n \n \n );\n}\n\nfunction ThirdPartyLicenseNavSidebar({ NavSidebar }) {\n return (\n \n
    \n \n New License\n \n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport CustomerIndex from \"./CustomerIndex\";\nimport CustomerShow from \"./CustomerShow\";\nimport CustomerShowCrs from \"./CustomerShowCrs\";\nimport CustomerShowProjects from \"./CustomerShowProjects\";\nimport HostingAgreementsPages from \"./hostingAgreements\";\nimport JiraProjectsRouting from \"./jiraProjects\";\nimport ThirdPartyLicensesPages from \"./third-party-licenses\";\n\nexport default function CustomersRouting() {\n let { path } = useRouteMatch();\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","import { createEntityHooks } from \"../../common/entity\";\nimport branchState from \"./state\";\n\nexport const { useEntities: useBranches, useEntity: useBranch } =\n createEntityHooks({\n entity: branchState.entity,\n actions: branchState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useBranch } from \"./hooks\";\n\nconst BranchDescription = entityDescription({\n name: \"branch\",\n useEntity: useBranch,\n});\n\nexport default BranchDescription;\n","import { bool, object, string } from \"yup\";\n\nconst branchSchema = object().shape({\n id: string()\n .label(\"Id\")\n .required()\n .max(8)\n .transform((v) => `${v}`.toLowerCase()),\n description: string().label(\"Description\").max(30).required(),\n customerId: string().label(\"Customer\"),\n date: (string().label = \"Code date\"),\n liveDate: (string().label = \"Live date\"),\n branchType: string()\n .oneOf([\"C\", \"R\", \"I\"])\n .default(\"C\")\n .required()\n .label(\"Branch Type\"),\n inactive: bool().required().default(false),\n});\n\nexport default branchSchema;\n","import React from \"react\";\nimport { Col, Form, InputGroup, Row } from \"react-bootstrap\";\n\nimport { Forms, FormsField } from \"../../common/forms\";\nimport Customer from \"../../customers\";\nimport branchSchema from \"./branchSchema\";\n\nexport default function BranchEditor({ values = {}, onSubmit, isLoading }) {\n return (\n <>\n \n \n \n \n );\n}\n\nfunction BranchForm() {\n return (\n
    \n \n
    \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n {\"Customer\"}\n \n \n \n \n ({\n ...style,\n minWidth: 243,\n }),\n container: (style) => ({\n ...style,\n width: \"auto\",\n }),\n menu: (style) => ({\n ...style,\n width: \"150%\",\n }),\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction BranchTextField({ id, label }) {\n return (\n \n \n \n \n \n {label}\n \n \n \n \n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useBranches } from \"./hooks\";\n\nconst BranchSelect = entitySelect({\n name: \"branch\",\n useEntities: useBranches,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default BranchSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useBranches } from \"./hooks\";\n\nconst BranchTableFilter = entityTableFilter({\n name: \"branch\",\n useEntities: useBranches,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default BranchTableFilter;\n","import BranchDescription from \"./BranchDescription\";\nimport BranchEditor from \"./BranchEditor\";\nimport BranchSelect from \"./BranchSelect\";\nimport BranchTable from \"./BranchTable\";\nimport BranchTableFilter from \"./BranchTableFilter\";\nimport { useBranch, useBranches } from \"./hooks\";\nimport branchState from \"./state\";\n\nconst Branch = {\n // Backend API\n api: branchState.api,\n // State\n actions: branchState.actions,\n selectors: branchState.entity.selectors,\n // Hooks\n useAll: useBranches,\n useOne: useBranch,\n // Components\n Select: BranchSelect,\n TableFilter: BranchTableFilter,\n Description: BranchDescription,\n Table: BranchTable,\n Editor: BranchEditor,\n};\n\nexport default Branch;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\n\nexport default function BranchTable({ branches, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Branch\",\n accessor: \"id\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Customer\",\n accessor: \"customerId\",\n disableFilters: true,\n Cell: ({ value }) => {\n return ;\n },\n },\n {\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Code Date\",\n accessor: \"date\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n Header: \"Live Date\",\n accessor: \"liveDate\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { object, string } from \"yup\";\n\nconst codeTestSchema = object().shape({\n id: string().label(\"Id\").required().max(8),\n});\n\nexport default codeTestSchema;\n","import React from \"react\";\nimport { Col, Form, InputGroup } from \"react-bootstrap\";\n\nimport { Forms, FormsField } from \"../../common/forms\";\nimport codeTestSchema from \"./codeTestSchema\";\n\nexport default function CodeTestEditor({ values = {}, onSubmit, isLoading }) {\n return (\n <>\n \n \n \n \n );\n}\n\nfunction CodeTestForm() {\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n*/\n\nfunction CodeTestTextField({ id, label }) {\n return (\n \n \n \n \n \n {label}\n \n \n \n \n \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport codeTestState from \"./state\";\n\nexport const { useEntities: useCodeTests, useEntity: useCodeTest } =\n createEntityHooks({\n entity: codeTestState.entity,\n actions: codeTestState.actions,\n });\n","import { entitySelect } from \"../../common/entity\";\nimport { useCodeTests } from \"./hooks\";\n\nconst CodeTestSelect = entitySelect({\n name: \"codeTest\",\n useEntities: useCodeTests,\n});\n\nexport default CodeTestSelect;\n","import CodeTestEditor from \"./CodeTestEditor\";\nimport CodeTestFailuresTable from \"./CodeTestFailuresTable\";\nimport CodeTestSelect from \"./CodeTestSelect\";\nimport CodeTestTable from \"./CodeTestTable\";\nimport { useCodeTest, useCodeTests } from \"./hooks\";\nimport codeTestState from \"./state\";\n\nconst CodeTest = {\n // Backend API\n api: codeTestState.api,\n // State\n actions: codeTestState.actions,\n selectors: codeTestState.entity.selectors,\n // Hooks\n useAll: useCodeTests,\n useOne: useCodeTest,\n // Components\n Select: CodeTestSelect,\n Table: CodeTestTable,\n FailuresTable: CodeTestFailuresTable,\n Editor: CodeTestEditor,\n};\n\nexport default CodeTest;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\n\nexport default function CodeTestTable({ codeTests, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Date\",\n accessor: \"id\",\n id: \"Date\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n // eslint-disable-next-line react/display-name\n Cell: ({ value }) => (\n \n {_date.display(_date.fromStamp(value))}\n \n ),\n },\n {\n // Dont include self loading reusable reviews.\n Header: \"Total Errors\",\n id: \"Total Errors\",\n accessor: (r) => {\n return (\n r.eose +\n r.gete +\n r.imh2 +\n r.it01 +\n r.mkvr +\n r.ifer +\n r.nobl +\n r.tede +\n r.lmod +\n r.qury +\n r.rkqy +\n r.meme +\n r.swtc\n );\n },\n },\n {\n Header: \"Reusable Reviews Needed\",\n id: \"Reusable Reviews Needed\",\n accessor: \"slre\",\n },\n {\n Header: \"EOS Errors\",\n id: \"Eos Errors\",\n accessor: \"eose\",\n },\n {\n Header: \"Get/Read Errors\",\n id: \"Get Errors\",\n accessor: \"gete\",\n },\n {\n Header: \"IMH2 Errors\",\n id: \"IMH2 Errors\",\n accessor: \"imh2\",\n },\n {\n Header: \"IT1 Errors\",\n id: \"IT1 Errors?\",\n accessor: \"it01\",\n },\n {\n Header: \"Makevar Errors\",\n id: \"Makevar Errors\",\n accessor: \"mkvr\",\n },\n {\n Header: \"IF Errors\",\n id: \"IF Errors\",\n accessor: \"ifer\",\n },\n {\n Header: \"Noblank Errors\",\n id: \"Noblank Errors\",\n accessor: \"nobl\",\n },\n {\n Header: \"TEDIT Errors\",\n id: \"TEDIT Errors\",\n accessor: \"tede\",\n },\n {\n Header: \"LMOD Errors\",\n id: \"LMOD Errors\",\n accessor: \"lmod\",\n },\n {\n Header: \"Query Errors\",\n id: \"Query Errors\",\n accessor: \"qury\",\n },\n {\n Header: \"Query/RK Errors\",\n id: \"Query/RK Errors\",\n accessor: \"rkqy\",\n },\n {\n Header: \"Memory Errors\",\n id: \"Memory Errors\",\n accessor: \"meme\",\n },\n {\n Header: \"Switch errors\",\n id: \"Switch Errors\",\n accessor: \"swtc\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\n\nexport default function CodeTestFailuresTable({ values, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"type\",\n accessor: \"type\",\n id: \"Type\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n // eslint-disable-next-line react/display-name\n Cell: ({ value }) => {\n let text = \"?\";\n if (value == \"E\") text = \"RETURN.EOS\";\n else if (value == \"F\") text = \"Bad Ifs\";\n else if (value == \"G\") text = \"Get/Read\";\n else if (value == \"H\") text = \"Help msg\";\n else if (value == \"I\") text = \"IT1\";\n else if (value == \"L\") text = \"LMOD\";\n else if (value == \"M\") text = \"IMH2\";\n else if (value == \"N\") text = \"NOBLANK\";\n else if (value == \"Q\") text = \"Query\";\n else if (value == \"R\") text = \"RK/RP with Query\";\n else if (value == \"S\") text = \"Duplicate CASE\";\n else if (value == \"T\") text = \"TEDIT\";\n else if (value == \"V\") text = \"MAKEVAR\";\n else if (value == \"Y\") text = \"Memory\";\n else if (value == \"Z\") text = \"Reusable verbs\";\n\n return {text};\n },\n },\n {\n // Dont include self loading reusable reviews.\n Header: \"Filename\",\n id: \"Filename\",\n accessor: \"flnm\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Line\",\n id: \"Line\",\n accessor: \"line\",\n Cell: ({ value }) => {\n if (value === 0) return \"\";\n else {\n return {value};\n }\n },\n },\n {\n Header: \"Code\",\n id: \"Code\",\n accessor: \"text\",\n Cell: ({ value }) => (\n \n {value}\n

    \n ),\n },\n {\n Header: \"Blamed User\",\n id: \"Blamed User\",\n accessor: \"blmu\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Blamed Date\",\n id: \"Blamed Date\",\n accessor: \"blmd\",\n Cell: ({ value }) => {\n if (value === \"\") return \"\";\n else {\n return (\n \n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n \n );\n }\n },\n },\n {\n Header: \"Blamed Comment\",\n id: \"Blamed Comment\",\n accessor: \"blmc\",\n Cell: ({ value }) => (\n \n {value}\n

    \n ),\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport reusableProgramState from \"./state\";\n\nexport const {\n useEntities: useReusablePrograms,\n useEntity: useReusableProgram,\n} = createEntityHooks({\n entity: reusableProgramState.entity,\n actions: reusableProgramState.actions,\n});\n","import { object, string } from \"yup\";\n\nconst reusableProgramSchema = object().shape({\n id: string().label(\"Id\").required().max(20),\n isReviewed: string().label(\"Reviewed?\"),\n reviewedBy: string().label(\"Reviewed by\"),\n createdOn: string().label(\"Created On\"),\n});\n\nexport default reusableProgramSchema;\n","import React from \"react\";\nimport { Col, Form, InputGroup, Row } from \"react-bootstrap\";\n\nimport { Forms, FormsField } from \"../../common/forms\";\nimport User from \"../../users\";\nimport reusableProgramSchema from \"./reusableProgramSchema\";\n\nexport default function ReusableProgramEditor({\n values = {},\n onSubmit,\n isLoading,\n}) {\n return (\n <>\n \n \n \n \n );\n}\n\nfunction ReusableProgramForm() {\n return (\n
    \n \n
    \n \n \n \n\n \n \n \n \n \n \n {\"Reviewed?\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\"Owner\"}\n \n \n \n \n ({\n ...style,\n minWidth: 243,\n }),\n container: (style) => ({\n ...style,\n width: \"auto\",\n }),\n menu: (style) => ({\n ...style,\n width: \"150%\",\n }),\n }}\n />\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction ReusableProgramTextField({ id, label }) {\n return (\n \n \n \n \n \n {label}\n \n \n \n \n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useReusablePrograms } from \"./hooks\";\n\nconst ReusableProgramSelect = entitySelect({\n name: \"branch\",\n useEntities: useReusablePrograms,\n});\n\nexport default ReusableProgramSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useReusablePrograms } from \"./hooks\";\n\nconst ReusableProgramTableFilter = entityTableFilter({\n name: \"reusableProgram\",\n useEntities: useReusablePrograms,\n});\n\nexport default ReusableProgramTableFilter;\n","import { useReusableProgram, useReusablePrograms } from \"./hooks\";\nimport ReusableProgramEditor from \"./ReusableProgramEditor\";\nimport ReusableProgramSelect from \"./ReusableProgramSelect\";\nimport ReusableProgramTable from \"./ReusableProgramTable\";\nimport ReusableProgramTableFilter from \"./ReusableProgramTableFilter\";\nimport reusableProgramState from \"./state\";\n\nconst ReusableProgram = {\n // Backend API\n api: reusableProgramState.api,\n // State\n actions: reusableProgramState.actions,\n selectors: reusableProgramState.entity.selectors,\n // Hooks\n useAll: useReusablePrograms,\n useOne: useReusableProgram,\n // Components\n Select: ReusableProgramSelect,\n TableFilter: ReusableProgramTableFilter,\n Table: ReusableProgramTable,\n Editor: ReusableProgramEditor,\n};\n\nexport default ReusableProgram;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\n\nexport default function ReusableProgramTable({ reusablePrograms, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Program\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Reviewed?\",\n id: \"Reviewed?\",\n accessor: ({ isReviewed }) =>\n isReviewed ? String.fromCodePoint(\"0x1f44d\") : \" \",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Reviewed By\",\n id: \"Reviewed By\",\n accessor: \"reviewedBy\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport sourceCodeState from \"./state\";\n\nexport const { useEntities: useSourceCodes, useEntity: useSourceCode } =\n createEntityHooks({\n entity: sourceCodeState.entity,\n actions: sourceCodeState.actions,\n });\n","import { object, string } from \"yup\";\n\nconst sourceCodeSchema = object().shape({\n id: string().label(\"Id\").required().max(30),\n groupId: string().label(\"Group\"),\n ownerId: string().label(\"Group\"),\n});\n\nexport default sourceCodeSchema;\n","import React from \"react\";\nimport { Col, Form, InputGroup, Row } from \"react-bootstrap\";\n\nimport { Forms, FormsField } from \"../../common/forms\";\nimport User from \"../../users\";\nimport sourceCodeSchema from \"./sourceCodeSchema\";\n\nexport default function SourceCodeEditor({ values = {}, onSubmit, isLoading }) {\n return (\n <>\n \n \n \n \n );\n}\n\nfunction SourceCodeForm() {\n return (\n
    \n \n
    \n \n \n \n\n \n \n \n \n \n \n {\"Group\"}\n \n \n \n \n ({\n ...style,\n minWidth: 243,\n }),\n container: (style) => ({\n ...style,\n width: \"auto\",\n }),\n menu: (style) => ({\n ...style,\n width: \"150%\",\n }),\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n {\"Owner\"}\n \n \n \n \n ({\n ...style,\n minWidth: 243,\n }),\n container: (style) => ({\n ...style,\n width: \"auto\",\n }),\n menu: (style) => ({\n ...style,\n width: \"150%\",\n }),\n }}\n />\n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction SourceCodeTextField({ id, label }) {\n return (\n \n \n \n \n \n {label}\n \n \n \n \n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useSourceCodes } from \"./hooks\";\n\nconst SourceCodeSelect = entitySelect({\n name: \"branch\",\n useEntities: useSourceCodes,\n});\n\nexport default SourceCodeSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useSourceCodes } from \"./hooks\";\n\nconst SourceCodeTableFilter = entityTableFilter({\n name: \"sourceCode\",\n useEntities: useSourceCodes,\n});\n\nexport default SourceCodeTableFilter;\n","import Branch from \"./branches\";\nimport CodeTest from \"./codeTests\";\nimport ReusableProgram from \"./reusablePrograms\";\nimport SourceCode from \"./sourceCodes\";\n\nconst Dbc = {\n // Backend API\n // api: crState.api,\n // State\n // actions: crState.actions,\n // selectors: crState.entity.selectors,\n // Hooks\n // Components\n // Related Entity Objects\n Branch: Branch,\n SourceCode: SourceCode,\n ReusableProgram: ReusableProgram,\n CodeTest: CodeTest,\n};\n\nexport default Dbc;\n","import { useSourceCode, useSourceCodes } from \"./hooks\";\nimport SourceCodeEditor from \"./SourceCodeEditor\";\nimport SourceCodeSelect from \"./SourceCodeSelect\";\nimport SourceCodeTable from \"./SourceCodeTable\";\nimport SourceCodeTableFilter from \"./SourceCodeTableFilter\";\nimport sourceCodeState from \"./state\";\n\nconst SourceCode = {\n // Backend API\n api: sourceCodeState.api,\n // State\n actions: sourceCodeState.actions,\n selectors: sourceCodeState.entity.selectors,\n // Hooks\n useAll: useSourceCodes,\n useOne: useSourceCode,\n // Components\n Select: SourceCodeSelect,\n TableFilter: SourceCodeTableFilter,\n Table: SourceCodeTable,\n Editor: SourceCodeEditor,\n};\n\nexport default SourceCode;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\n\nexport default function SourceCodeTable({\n sourceCode,\n hasMore,\n getMore,\n isLoading,\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n Header: \"Filename\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n \n {value}\n \n ),\n },\n {\n Header: \"Group\",\n id: \"Group\",\n accessor: \"groupId\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Owner\",\n id: \"Owner\",\n accessor: \"ownerId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function DbcNavSidebar({ children }) {\n return (\n \n DBC Home\n Branches\n Source Code\n Code Tests\n \n Reusable Programs\n \n
    \n {children}\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function BranchIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Dbc.Branch.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => entities.filter((e) => e.inactive === !active),\n [active, entities],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function BranchShow() {\n const id =\n String(useParams().base).toLowerCase() +\n \"/\" +\n String(useParams().id).toLowerCase();\n const { branch, loading } = Dbc.Branch.useOne({\n id: id,\n canGet: true,\n });\n\n return (\n }>\n {branch ? (\n \n ) : (\n

    Branch not found.

    \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport BranchIndex from \"./BranchIndex\";\nimport BranchShow from \"./BranchShow\";\n\nexport default function BranchesPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function CodeTestIndex() {\n const { entities, loading, reset } = Dbc.CodeTest.useAll({\n canGet: true,\n });\n return (\n }>\n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function CodeTestShow() {\n const id = useParams().id;\n const { codeTest, loading } = Dbc.CodeTest.useOne({\n id: id,\n canGet: true,\n });\n\n return (\n }>\n {codeTest ? (\n <>\n \n \n \n ) : (\n

    Code Test not found.

    \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport CodeTestIndex from \"./CodeTestIndex\";\nimport CodeTestShow from \"./CodeTestShow\";\n\nexport default function CodeTestsPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../common/pages/Page\";\nimport DbcNavSidebar from \"./DbcNavSidebar\";\n\nexport default function DbcIndex() {\n return (\n
    \n }\n >\n
    \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function ReusableProgramIndex() {\n const { entities, loading, reset } = Dbc.ReusableProgram.useAll({\n canGet: true,\n });\n return (\n }>\n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function ReusableProgramShow() {\n const id = useParams().id;\n const { reusableProgram, loading } = Dbc.ReusableProgram.useOne({\n id: id,\n canGet: true,\n });\n\n return (\n }>\n {reusableProgram ? (\n \n ) : (\n

    Reusable Program not found.

    \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport ReusableProgramIndex from \"./ReusableProgramIndex\";\nimport ReusableProgramShow from \"./ReusableProgramShow\";\n\nexport default function ReusableProgramsPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function SourceCodeIndex() {\n const { entities, loading, reset } = Dbc.SourceCode.useAll({\n canGet: true,\n });\n return (\n }>\n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Dbc from \"../../../dbc\";\nimport DbcNavSidebar from \"../DbcNavSidebar\";\n\nexport default function SourceCodeShow() {\n const id = useParams().id;\n const { sourceCode, loading } = Dbc.SourceCode.useOne({\n id: id,\n canGet: true,\n });\n\n return (\n }>\n {sourceCode ? (\n \n ) : (\n

    Source Code not found.

    \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport SourceCodeIndex from \"./SourceCodeIndex\";\nimport SourceCodeShow from \"./SourceCodeShow\";\n\nexport default function SourceCodesPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport DbcBranchesPages from \"./branches\";\nimport DbcCodeTestPages from \"./codeTests\";\nimport DbcIndex from \"./DbcIndex\";\nimport DbcReusableProgramsPages from \"./reusablePrograms\";\nimport DbcSourceCodesPages from \"./sourceCodes\";\n\nexport default function DbcsRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport tradingPartnerState from \"./state\";\n\nexport const { useEntities: useTradingPartners, useEntity: useTradingPartner } =\n createEntityHooks({\n entity: tradingPartnerState.entity,\n actions: tradingPartnerState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useTradingPartner } from \"./hooks\";\n\nconst TradingPartnerDescription = entityDescription({\n name: \"tradingPartner\",\n useEntity: useTradingPartner,\n});\n\nexport default TradingPartnerDescription;\n","import { bool, object, string } from \"yup\";\n\nconst tradingPartnerSchema = object().shape({\n description: string().label(\"Description\").max(50).required(),\n isInactive: bool().required().default(false),\n notes: string().label(\"Description\").max(500),\n});\n\nexport default tradingPartnerSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport { Forms, FormsField, useFormContext } from \"../../common/forms\";\nimport tradingPartnerSchema from \"./tradingPartnerSchema\";\n\nexport default function TradingPartnerEditor({\n values = {},\n onSubmit,\n isLoading,\n}) {\n return (\n <>\n \n \n \n \n );\n}\n\nfunction TradingPartnerForm() {\n const { submitForm } = useFormContext();\n return (\n
    \n \n
    \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useTradingPartners } from \"./hooks\";\n\nconst TradingPartnerSelect = entitySelect({\n name: \"tradingPartner\",\n useEntities: useTradingPartners,\n filter: (e, value) => e.isInactive === false || e.id === value,\n});\n\nexport default TradingPartnerSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useTradingPartners } from \"./hooks\";\n\nconst TradingPartnerTableFilter = entityTableFilter({\n name: \"tradingPartner\",\n useEntities: useTradingPartners,\n filter: (e, value) => e.isInactive === false || e.id === value,\n});\n\nexport default TradingPartnerTableFilter;\n","import { useTradingPartner, useTradingPartners } from \"./hooks\";\nimport tradingPartnerState from \"./state\";\nimport TradingPartnerDescription from \"./TradingPartnerDescription\";\nimport TradingPartnerEditor from \"./TradingPartnerEditor\";\nimport TradingPartnerSelect from \"./TradingPartnerSelect\";\nimport TradingPartnerTable from \"./TradingPartnerTable\";\nimport TradingPartnerTableFilter from \"./TradingPartnerTableFilter\";\n\nconst TradingPartner = {\n // Backend API\n api: tradingPartnerState.api,\n // State\n actions: tradingPartnerState.actions,\n selectors: tradingPartnerState.entity.selectors,\n // Hooks\n useAll: useTradingPartners,\n useOne: useTradingPartner,\n // Components\n Select: TradingPartnerSelect,\n TableFilter: TradingPartnerTableFilter,\n Description: TradingPartnerDescription,\n Table: TradingPartnerTable,\n Editor: TradingPartnerEditor,\n};\n\nexport default TradingPartner;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\n\nexport default function TradingPartnerTable({ tradingPartners, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Trading Partner\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: (x) => {\n return (\n \n {x?.value}\n \n );\n },\n },\n {\n Header: \"Notes\",\n accessor: \"notes\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { bool, number, object, string } from \"yup\";\n\nconst customerEdiSetupSchema = object().shape({\n subscriber: string().max(6).label(\"Subscriber\").required(),\n company: string().max(4).label(\"Company\").required(),\n tradingPartnerId: number().required(),\n customerId: number().required(),\n notes: string().max(500).label(\"Notes\"),\n isInactive: bool().required().default(false),\n});\n\nexport default customerEdiSetupSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport { Forms, FormsField, useFormContext } from \"../../common/forms\";\nimport Customer from \"../../customers\";\nimport TradingPartner from \"../tradingPartners\";\nimport customerEdiSetupSchema from \"./customerEdiSetupSchema\";\n\nexport default function CustomerEdiSetupEditor({\n values = {},\n onSubmit,\n isLoading,\n}) {\n TradingPartner.useAll({\n canGet: true,\n });\n\n return (\n <>\n \n \n \n \n );\n}\n\nfunction CustomerEdiSetupForm() {\n const { submitForm } = useFormContext();\n\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","import { createEntityHooks } from \"../../common/entity\";\nimport customerEdiSetupState from \"./state\";\n\nexport const {\n useEntities: useCustomerEdiSetups,\n useEntity: useCustomerEdiSetup,\n} = createEntityHooks({\n entity: customerEdiSetupState.entity,\n actions: customerEdiSetupState.actions,\n});\n","import { entitySelect } from \"../../common/entity\";\nimport { useCustomerEdiSetups } from \"./hooks\";\n\nconst CustomerEdiSetupSelect = entitySelect({\n name: \"customerEdiSetup\",\n useEntities: useCustomerEdiSetups,\n});\n\nexport default CustomerEdiSetupSelect;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { useTradingPartner } from \"./hooks\";\n\nexport default function TradingPartnerLink({ id }) {\n const { tradingPartner } = useTradingPartner({ id });\n\n if (!tradingPartner?.id) return ;\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n \n {tradingPartner?.description}\n \n \n );\n}\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useCustomerEdiSetups } from \"./hooks\";\n\nconst CustomerEdiSetupTableFilter = entityTableFilter({\n name: \"customerEdiSetup\",\n useEntities: useCustomerEdiSetups,\n filter: (e, value) => e.isInactive === false || e.id === value,\n});\n\nexport default CustomerEdiSetupTableFilter;\n","import CustomerEdiSetupEditor from \"./CustomerEdiSetupEditor\";\nimport CustomerEdiSetupSelect from \"./CustomerEdiSetupSelect\";\nimport CustomerEdiSetupTable from \"./CustomerEdiSetupTable\";\nimport CustomerEdiSetupTableFilter from \"./CustomerEdiSetupTableFilter\";\nimport { useCustomerEdiSetup, useCustomerEdiSetups } from \"./hooks\";\nimport customerEdiSetupState from \"./state\";\n\nconst CustomerEdiSetup = {\n // Backend API\n api: customerEdiSetupState.api,\n // State\n actions: customerEdiSetupState.actions,\n selectors: customerEdiSetupState.entity.selectors,\n // Hooks\n useAll: useCustomerEdiSetups,\n useOne: useCustomerEdiSetup,\n // Components\n Select: CustomerEdiSetupSelect,\n TableFilter: CustomerEdiSetupTableFilter,\n Table: CustomerEdiSetupTable,\n Editor: CustomerEdiSetupEditor,\n};\n\nexport default CustomerEdiSetup;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport CustomerLink from \"../../customers/CustomerLink\";\nimport CustomerTableFilter from \"../../customers/CustomerTableFilter\";\nimport TradingPartnerLink from \"../tradingPartners/TradingPartnerLink\";\nimport TradingPartnerTableFilter from \"../tradingPartners/TradingPartnerTableFilter\";\n\nexport default function CustomerEdiSetupTable({ customerEdiSetups, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Subscriber\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: (x) => (\n \n {x?.row?.original?.subscriber + \" - \" + x?.row?.original?.company}\n \n ),\n },\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Trading Partner\",\n Header: \"Trading Partner\",\n accessor: \"tradingPartnerId\",\n Filter: TradingPartnerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Notes\",\n accessor: \"notes\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { bool, number, object, string } from \"yup\";\n\nconst ftpUserSchema = object().shape({\n tradingPartnerPrefix: string().max(15).required(),\n overridePostfix: string().max(15),\n customerId: number().required(),\n notes: string().max(500).label(\"Notes\"),\n isInactive: bool().required().default(false),\n});\n\nexport default ftpUserSchema;\n","import React, { useEffect } from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport { Forms, FormsField, useFormContext } from \"../../common/forms\";\nimport Customer from \"../../customers\";\nimport ftpUserSchema from \"./ftpUserSchema\";\n\nexport default function FtpUserEditor({\n values = {},\n onSubmit,\n isLoading,\n isNew,\n}) {\n return (\n <>\n \n \n \n \n );\n}\n\nfunction FtpUserForm({ isNew }) {\n const { submitForm, watch, setValue } = useFormContext();\n const customerId = watch(\"customerId\");\n const tradingPartnerPrefix = watch(\"tradingPartnerPrefix\");\n const overridePostfix = watch(\"overridePostfix\");\n\n let username = tradingPartnerPrefix + customerId;\n if (overridePostfix?.trim() !== \"\")\n username = tradingPartnerPrefix + overridePostfix;\n if (isNaN(customerId)) username = \"(Choose a customer)\";\n else if (tradingPartnerPrefix?.trim() === \"\") username = \"(Enter the prefix)\";\n\n useEffect(() => {\n if (!!tradingPartnerPrefix && tradingPartnerPrefix !== \"\") {\n const x = tradingPartnerPrefix.replace(/[^a-zA-z]/gi, \"\");\n if (x !== tradingPartnerPrefix) setValue(\"tradingPartnerPrefix\", x);\n }\n }, [tradingPartnerPrefix, setValue]);\n\n useEffect(() => {\n if (!!overridePostfix && overridePostfix !== \"\") {\n const x = overridePostfix.replace(/[^0-9a-zA-z]/gi, \"\");\n if (x !== overridePostfix) setValue(\"overridePostfix\", x);\n }\n }, [overridePostfix, setValue]);\n\n const existingUsename = watch(\"username\");\n\n return (\n
    \n \n
    \n \n \n {!isNew && (\n \n \n \n )}\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n Username\n \n \n \n \n \n\n \n\n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n
    \n \n \n {isNew ? (\n <>Username: {username}\n ) : (\n <>Username: {existingUsename}\n )}\n \n \n \n \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport ftpUserState from \"./state\";\n\nexport const { useEntities: useFtpUsers, useEntity: useFtpUser } =\n createEntityHooks({\n entity: ftpUserState.entity,\n actions: ftpUserState.actions,\n });\n","import { entitySelect } from \"../../common/entity\";\nimport { useFtpUsers } from \"./hooks\";\n\nconst FtpUserSelect = entitySelect({\n name: \"ftpUser\",\n useEntities: useFtpUsers,\n});\n\nexport default FtpUserSelect;\n","import FtpUserEditor from \"./FtpUserEditor\";\nimport FtpUserSelect from \"./FtpUserSelect\";\nimport FtpUserTable from \"./FtpUserTable\";\nimport { useFtpUser, useFtpUsers } from \"./hooks\";\nimport ftpUserState from \"./state\";\n\nconst FtpUser = {\n // Backend API\n api: ftpUserState.api,\n // State\n actions: ftpUserState.actions,\n selectors: ftpUserState.entity.selectors,\n // Hooks\n useAll: useFtpUsers,\n useOne: useFtpUser,\n // Components\n Select: FtpUserSelect,\n Table: FtpUserTable,\n Editor: FtpUserEditor,\n};\n\nexport default FtpUser;\n","import React, { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport CustomerLink from \"../../customers/CustomerLink\";\nimport CustomerTableFilter from \"../../customers/CustomerTableFilter\";\n\nexport default function FtpUserTable({ ftpUsers, ...props }) {\n const columns = useMemo(\n () => [\n {\n Header: \"FTP User\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: (x) => {\n return (\n \n {x?.value}\n \n );\n },\n },\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: CustomerTableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Username\",\n Header: \"Username\",\n accessor: \"username\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"ID\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n dataType: \"number\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import CustomerEdiSetup from \"./customerEdiSetups\";\nimport FtpUser from \"./ftpUsers\";\nimport TradingPartner from \"./tradingPartners\";\n\nconst Edi = {\n // Related Entity Objects\n TradingPartner: TradingPartner,\n CustomerEdiSetup: CustomerEdiSetup,\n FtpUser: FtpUser,\n};\n\nexport default Edi;\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function DbcNavSidebar({ children }) {\n return (\n \n EDI Home\n
    \n \n Trading Partners\n \n \n New Trading Partner\n \n
    \n \n Customer EDI Setups\n \n \n New Customer EDI Setup\n \n
    \n FTP Users\n New FTP User\n
    \n {children}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Edi from \"../../../edi\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function CustomerEdiSetupShow() {\n const id = parseInt(useParams().id);\n const { customerEdiSetup, loading, updateOne } = Edi.CustomerEdiSetup.useOne({\n id: id,\n canGet: true,\n });\n const { canMaintainEdi, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainEdi || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {customerEdiSetup ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Customer EDI Setup record not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Edi from \"../../../edi\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function CustomerEdiSetupIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Edi.CustomerEdiSetup.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => entities.filter((e) => e.isInactive === !active),\n [active, entities],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport CustomerEdiSetup from \"../../../edi/customerEdiSetups\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function CustomerEdiSetupNew() {\n const { createOne } = CustomerEdiSetup.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainEdi, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainEdi || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n createOne(customerEdiSetup).then(({ id }) =>\n setRedirect(`/edi/customerEdiSetups/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport CustomerEdiSetupEdit from \"./CustomerEdiSetupEdit\";\nimport CustomerEdiSetupIndex from \"./CustomerEdiSetupIndex\";\nimport CustomerEdiSetupNew from \"./CustomerEdiSetupNew\";\n\nexport default function CustomerEdiSetupsPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../common/pages/Page\";\nimport EdiNavSidebar from \"./EdiNavSidebar\";\n\nexport default function EdiIndex() {\n return (\n
    \n }>\n
    \n );\n}\n","import React, { useMemo } from \"react\";\n\nimport { _datetime } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\n\nexport default function FtpUserDeleteLogTable({ logs, ...props }) {\n const columns = useMemo(\n () => [\n {\n id: \"When\",\n Header: \"When\",\n accessor: \"datetimeStamp\",\n Cell: ({ value }) =>\n _datetime.displayDateTime(_datetime.fromStamp(value)),\n },\n {\n id: \"filename\",\n Header: \"Filename\",\n accessor: \"filename\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import React, { useCallback } from \"react\";\nimport { Alert, Button } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\nimport { toast } from \"react-toastify\";\n\nimport shark from \"../../../apis/shark\";\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Edi from \"../../../edi\";\nimport FtpUserDeleteLogTable from \"../../../edi/ftpUsers/FtpUserDeleteLogTable\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function FtpUserEdit() {\n const id = parseInt(useParams().id);\n const { ftpUser, loading, updateOne } = Edi.FtpUser.useOne({\n id: id,\n canGet: true,\n });\n const { canMaintainEdi, isAdmin } = useSelector((state) => state.auth);\n\n const emailPwFtpUser = useCallback(async (id) => {\n const toastId = toast.info(`Emailing password...`, {\n autoClose: false,\n hideProgressBar: false,\n progress: 0.5,\n });\n\n await shark\n .post({ command: \"emailPwFtpUser\", id: id })\n .then(() => {\n toast.update(toastId, {\n render: `Email Sent`,\n type: toast.TYPE.SUCCESS,\n progress: undefined,\n hideProgressBar: true,\n autoClose: 5000,\n });\n })\n // eslint-disable-next-line unused-imports/no-unused-vars\n .catch((error) =>\n toast.update(toastId, {\n render: `Email Failed`,\n type: toast.TYPE.ERROR,\n autoClose: 5000,\n }),\n );\n }, []);\n\n if (!(canMaintainEdi || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {ftpUser ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n \n \n \n \n ) : (\n

    FTP User not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Edi from \"../../../edi\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function FtpUserIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Edi.FtpUser.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => entities.filter((e) => e.isInactive === !active),\n [active, entities],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport FtpUser from \"../../../edi/ftpUsers\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function FtpUserNew() {\n const { createOne } = FtpUser.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainEdi, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainEdi || isAdmin))\n return (\n }\n />\n );\n\n return (\n }>\n \n createOne(ftpUser).then(({ id }) =>\n setRedirect(`/edi/ftpUsers/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport FtpUserEdit from \"./FtpUserEdit\";\nimport FtpUserIndex from \"./FtpUserIndex\";\nimport FtpUserNew from \"./FtpUserNew\";\n\nexport default function FtpUsersPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Edi from \"../../../edi\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function TradingPartnerShow() {\n const id = parseInt(useParams().id);\n const { tradingPartner, loading, updateOne } = Edi.TradingPartner.useOne({\n id: id,\n canGet: true,\n });\n const { canMaintainEdi, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainEdi || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {tradingPartner ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Trading Partner not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Edi from \"../../../edi\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function TradingPartnerIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Edi.TradingPartner.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => entities.filter((e) => e.isInactive === !active),\n [active, entities],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport TradingPartner from \"../../../edi/tradingPartners\";\nimport EdiNavSidebar from \"../EdiNavSidebar\";\n\nexport default function TradingPartnerNew() {\n const { createOne } = TradingPartner.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainEdi, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainEdi || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n createOne(tradingPartner).then(({ id }) =>\n setRedirect(`/edi/tradingPartners/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport TradingPartnerEdit from \"./TradingPartnerEdit\";\nimport TradingPartnerIndex from \"./TradingPartnerIndex\";\nimport TradingPartnerNew from \"./TradingPartnerNew\";\n\nexport default function TradingPartnersPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport CustomerEdiSetupPages from \"./customerEdiSetups\";\nimport EdiIndex from \"./EdiIndex\";\nimport FtpUsersPages from \"./ftpUsers\";\nimport TradingPartnersPages from \"./tradingPartners\";\n\nexport default function EdiRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { entityDescription } from \"../../common/entity\";\nimport { useExpenseCategory } from \"./hooks\";\n\nconst ExpenseCategoryDescription = entityDescription({\n name: \"expenseCategory\",\n useEntity: useExpenseCategory,\n});\n\nexport default ExpenseCategoryDescription;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useExpenseCategories } from \"./hooks\";\n\nconst ExpenseCategoryTableFilter = entityTableFilter({\n name: \"expenseCategory\",\n useEntities: useExpenseCategories,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default ExpenseCategoryTableFilter;\n","import ExpenseCategoryDescription from \"./ExpenseCategoryDescription\";\nimport ExpenseCategorySelect from \"./ExpenseCategorySelect\";\nimport ExpenseCategoryTableFilter from \"./ExpenseCategoryTableFilter\";\nimport { useExpenseCategories, useExpenseCategory } from \"./hooks\";\nimport categoryState from \"./state\";\n\nconst Category = {\n // Backend API\n api: categoryState.api,\n // State\n actions: categoryState.actions,\n selectors: categoryState.entity.selectors,\n // Hooks\n useAll: useExpenseCategories,\n useOne: useExpenseCategory,\n // Components\n Select: ExpenseCategorySelect,\n TableFilter: ExpenseCategoryTableFilter,\n Description: ExpenseCategoryDescription,\n};\n\nexport default Category;\n","import React from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\n\nexport default function ConfirmModal({\n title,\n message,\n buttons,\n show,\n onHide,\n ...props\n}) {\n return (\n \n \n {title}\n \n {message}\n \n {buttons.map((b) => (\n {\n b.onClick && b.onClick(e);\n onHide();\n }}\n variant={b.variant}\n key={`confirm-${b.label}-${b.idx}`}\n >\n {b.label}\n \n ))}\n \n \n );\n}\n","import { useCallback, useMemo, useState } from \"react\";\n\nimport ConfirmModal from \"./ConfirmModal\";\n\nexport default function useConfirmModal({\n title = \"Please Confirm\",\n message = \"\",\n buttons = [],\n} = {}) {\n const [modalOptions, setModalOptions] = useState({ show: false });\n const onHide = useCallback(() => setModalOptions({ show: false }), []);\n\n const showConfirm = useCallback(\n (opts) => setModalOptions({ show: true, ...opts }),\n [],\n );\n const props = useMemo(() => {\n const { onHide: onHideAlso, ...opts } = modalOptions;\n return {\n title,\n message,\n buttons,\n onHide: () => {\n onHide();\n onHideAlso && onHideAlso();\n },\n ...opts,\n };\n }, [message, modalOptions, buttons, title, onHide]);\n return [ConfirmModal, props, showConfirm];\n}\n","import { isEmpty } from \"lodash\";\nimport { number, object, string } from \"yup\";\n\nconst expenseSchema = object().shape({\n date: string().label(\"Date\").required(),\n overrideDescription: string().label(\"Description\").max(30),\n expenseTypeId: string()\n .label(\"Type\")\n .when([\"expenseTripId\", \"customerId\"], {\n is: (t, c) => !!t || !!c,\n then: string().required(),\n }),\n expenseCategoryId: string()\n .label(\"Category\")\n .when([\"expenseTripId\", \"customerId\"], {\n is: (t, c) => !t && !c,\n then: string().required(),\n }),\n expenseTripId: number().label(\"Expense Trip\"),\n customerId: number().label(\"Customer\"),\n note: string()\n .label(\"Notes\")\n .test(\n \"testPerDiemAmount\",\n \"Per Diem is greater than specified max. Notes are required.\",\n (_, { parent, createError }) => {\n const { amount, perDiem, expenseTypeId, note } = parent;\n if (\n expenseTypeId === \"ME\" &&\n amount > perDiem.max &&\n isEmpty(note?.trim())\n )\n return createError({\n message: `Per Diem is greater than specified max (${perDiem.max}). Notes are required.`,\n });\n return true;\n },\n ),\n amount: number().label(\"Amount\").required(),\n});\n\nexport default expenseSchema;\n","import { createEntityHooks } from \"../../common/entity\";\nimport tripState from \"./state\";\n\nexport const {\n useEntities: useExpenseTrips,\n useEntitiesBySearch: useExpenseTripsBySearch,\n useEntity: useExpenseTrip,\n} = createEntityHooks({\n entity: tripState.entity,\n actions: tripState.actions,\n});\n","import React from \"react\";\n\nimport { entityDescription } from \"../../common/entity\";\nimport { _date } from \"../../common/functions/dates\";\nimport Customer from \"../../customers\";\nimport { useExpenseTrip } from \"./hooks\";\n\nconst CustomerLabel = (t) => (\n <>\n -{\" \"}\n {`${t.description} (${_date.display(_date.fromStamp(t.date))})`}\n \n);\n\nconst ExpenseTripDescription = entityDescription({\n name: \"expenseTrip\",\n useEntity: useExpenseTrip,\n label: CustomerLabel,\n getHookArgs: ({ id, value, canGet }) => {\n return { id: id || value, canGet };\n },\n});\n\nexport default ExpenseTripDescription;\n","import React from \"react\";\n\nimport { entitySelect } from \"../../common/entity\";\nimport { _date } from \"../../common/functions/dates\";\nimport Customer from \"../../customers\";\nimport { useExpenseTripsBySearch } from \"./hooks\";\n\nconst CustomerLabel = (t) => (\n <>\n -{\" \"}\n {`${t.description} (${_date.display(_date.fromStamp(t.date))})`}\n \n);\n\nconst ExpenseTripSelect = entitySelect({\n name: \"expenseTrip\",\n useEntities: useExpenseTripsBySearch,\n getHookArgs: ({ search }) => ({\n canGet: !!search,\n search,\n }),\n label: CustomerLabel,\n});\n\nexport default ExpenseTripSelect;\n","import { createEntityHooks } from \"../../../common/entity\";\nimport userState from \"./state\";\n\nexport const {\n useEntities: useExpenseTripUsers,\n useEntity: useExpenseTripUser,\n useEntityByFind: useExpenseTripUserByFind,\n} = createEntityHooks({\n entity: userState.entity,\n actions: userState.actions,\n getToastMessage: ({ entity, type }) => {\n return `${entity.userId} on Trip ${entity.expenseTripId} ${type}`;\n },\n});\n","import { entityDescription } from \"../../../common/entity\";\nimport { useExpenseTripUser } from \"./hooks\";\n\nconst ExpenseTripUserDescription = entityDescription({\n name: \"expenseTripUser\",\n useEntity: useExpenseTripUser,\n});\n\nexport default ExpenseTripUserDescription;\n","import { entitySelect } from \"../../../common/entity\";\nimport { useExpenseTripUsers } from \"./hooks\";\n\nconst ExpenseTripUserSelect = entitySelect({\n name: \"expenseTripUser\",\n useEntities: useExpenseTripUsers,\n});\n\nexport default ExpenseTripUserSelect;\n","import { entityTableFilter } from \"../../../common/entity\";\nimport { useExpenseTripUsers } from \"./hooks\";\n\nconst ExpenseTripUserTableFilter = entityTableFilter({\n name: \"expenseTripUser\",\n useEntities: useExpenseTripUsers,\n});\n\nexport default ExpenseTripUserTableFilter;\n","import ExpenseTripUserDescription from \"./ExpenseTripUserDescription\";\nimport ExpenseTripUserSelect from \"./ExpenseTripUserSelect\";\nimport ExpenseTripUserTableFilter from \"./ExpenseTripUserTableFilter\";\nimport {\n useExpenseTripUser,\n useExpenseTripUserByFind,\n useExpenseTripUsers,\n} from \"./hooks\";\nimport expenseTripUserState from \"./state\";\n\nconst ExpenseTripUser = {\n // Backend API\n api: expenseTripUserState.api,\n // State\n actions: expenseTripUserState.actions,\n selectors: expenseTripUserState.entity.selectors,\n //Hooks\n useAll: useExpenseTripUsers,\n useOne: useExpenseTripUser,\n useOneByFind: useExpenseTripUserByFind,\n //Components\n Select: ExpenseTripUserSelect,\n Description: ExpenseTripUserDescription,\n TableFilter: ExpenseTripUserTableFilter,\n};\nexport default ExpenseTripUser;\n","import ExpenseTripDescription from \"./ExpenseTripDescription\";\nimport ExpenseTripSelect from \"./ExpenseTripSelect\";\nimport {\n useExpenseTrip,\n useExpenseTrips,\n useExpenseTripsBySearch,\n} from \"./hooks\";\nimport tripState from \"./state\";\nimport ExpenseUser from \"./users\";\n\n//export const expenseTripReducer = expenseTripState.reducer;\n\nconst ExpenseTrip = {\n // Backend API\n api: tripState.api,\n // State\n actions: tripState.actions,\n selectors: tripState.entity.selectors,\n // Hooks\n useAll: useExpenseTrips,\n useSearch: useExpenseTripsBySearch,\n useOne: useExpenseTrip,\n // Components\n Select: ExpenseTripSelect,\n Description: ExpenseTripDescription,\n // Related entities\n User: ExpenseUser,\n};\nexport default ExpenseTrip;\n","import { createEntityHooks } from \"../../common/entity\";\nimport typeState from \"./state\";\n\nexport const { useEntities: useExpenseTypes, useEntity: useExpenseType } =\n createEntityHooks({\n entity: typeState.entity,\n actions: typeState.actions,\n });\n","import { entityDescription } from \"../../common/entity\";\nimport { useExpenseType } from \"./hooks\";\n\nconst ExpenseTypeDescription = entityDescription({\n name: \"expenseType\",\n useEntity: useExpenseType,\n});\n\nexport default ExpenseTypeDescription;\n","import { entitySelect } from \"../../common/entity\";\nimport { useExpenseTypes } from \"./hooks\";\n\nconst ExpenseTypeSelect = entitySelect({\n name: \"expenseType\",\n useEntities: useExpenseTypes,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default ExpenseTypeSelect;\n","import { entityTableFilter } from \"../../common/entity\";\nimport { useExpenseTypes } from \"./hooks\";\n\nconst ExpenseTypeTableFilter = entityTableFilter({\n name: \"expenseType\",\n useEntities: useExpenseTypes,\n filter: (e, value) => e.inactive === false || e.id === value,\n});\n\nexport default ExpenseTypeTableFilter;\n","import ExpenseTypeDescription from \"./ExpenseTypeDescription\";\nimport ExpenseTypeSelect from \"./ExpenseTypeSelect\";\nimport ExpenseTypeTableFilter from \"./ExpenseTypeTableFilter\";\nimport { useExpenseType, useExpenseTypes } from \"./hooks\";\nimport expenseTypeState from \"./state\";\n\nconst ExpenseType = {\n // Backend API\n api: expenseTypeState.api,\n // State\n actions: expenseTypeState.actions,\n selectors: expenseTypeState.entity.selectors,\n // Hooks\n useAll: useExpenseTypes,\n useOne: useExpenseType,\n // Components\n Select: ExpenseTypeSelect,\n TableFilter: ExpenseTypeTableFilter,\n Description: ExpenseTypeDescription,\n};\n\nexport default ExpenseType;\n","import moment from \"moment\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport {\n Button,\n ButtonGroup,\n Col,\n Form,\n Modal,\n Row,\n Table,\n} from \"react-bootstrap\";\n\nimport FieldDate from \"../common/fields/FieldDate\";\nimport { CurrencyFormatter } from \"../common/formatters\";\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport { _date } from \"../common/functions/dates\";\nimport useConfirmModal from \"../common/modals/useConfirmModal\";\nimport Customer from \"../customers\";\nimport ExpenseCategory from \"./categories\";\nimport expenseSchema from \"./expenseSchema\";\nimport expenseState from \"./state\";\nimport ExpenseTrip from \"./trips\";\nimport ExpenseType from \"./types\";\n\nconst DEFAULT_VALUES = {\n paymentType: \"C\",\n amount: 0,\n miles: \"\",\n mileageRate: 0,\n perDiem: {\n max: 0,\n breakfast: 0,\n lunch: 0,\n dinner: 0,\n },\n overrideBillableFlag: \"\",\n};\n\nexport default function ExpenseEditor({\n expense = {},\n onSubmit,\n onCancel,\n onDelete,\n}) {\n const today = useMemo(() => _date.stamp(), []);\n\n return (\n \n \n \n );\n}\n\nfunction ExpenseForms({ onCancel, onDelete }) {\n const { watch, setValue, reset, submitForm } = useFormContext();\n\n const [\n id,\n expenseTypeId,\n expenseCategoryId,\n expenseDate,\n expenseMiles,\n expenseMileageRate,\n perDiem,\n expenseTripId,\n customerId,\n ] = watch([\n \"id\",\n \"expenseTypeId\",\n \"expenseCategoryId\",\n \"date\",\n \"miles\",\n \"mileageRate\",\n \"perDiem\",\n \"expenseTripId\",\n \"customerId\",\n ]);\n const { type: { isMileage: typeIsMileage } = {} } = ExpenseType.useOne({\n id: expenseTypeId,\n });\n const { category: { isMileage: categoryIsMileage } = {} } =\n ExpenseCategory.useOne({\n id: expenseCategoryId,\n });\n\n const isExpenseType = expenseTripId || customerId;\n const isMileage =\n (isExpenseType && typeIsMileage) || (!isExpenseType && categoryIsMileage);\n const isPerDiem = isExpenseType && expenseTypeId === \"ME\";\n\n useEffect(() => {\n expenseState.api.getDateSettings({ date: expenseDate }).then((response) => {\n setValue(\"mileageRate\", response.mileageRate);\n setValue(\"perDiem\", {\n breakfast: response.breakfast,\n lunch: response.lunch,\n dinner: response.dinner,\n max: response.maxPerDiem,\n });\n });\n }, [expenseDate, setValue]);\n\n useEffect(() => {\n if (isMileage)\n setValue(\"amount\", (expenseMileageRate * expenseMiles).toFixed(2), {\n shouldDirty: true,\n shouldValidate: true,\n });\n }, [expenseMiles, isMileage, expenseMileageRate, setValue]);\n\n useFormsKeys();\n\n const [ConfirmModal, confirmModalProps, showConfirm] = useConfirmModal();\n\n return (\n
    \n \n

    \n {expenseTripId ? (\n <>\n Trip Expense\n \n ) : customerId ? (\n <>\n Customer Expense\n \n ) : (\n <>Other Expense\n )}\n

    \n
    \n \n \n
    \n \n \n \n \n \n \n \n {customerId || expenseTripId ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Billable\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n reset();\n onCancel();\n }}\n >\n Cancel\n \n \n \n\n \n {id && onDelete ? (\n \n ) : null}\n \n \n \n \n \n \n \n \n \n {isMileage ? (\n \n ) : isPerDiem ? (\n <>\n \n \n \n ) : null}\n \n \n \n \n \n\n \n \n );\n}\n\nfunction PerDiemTable({ values }) {\n return (\n \n \n Per Diem Values\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Breakfast\n \n
    Lunch\n \n
    Dinner\n \n
    Max\n \n
    \n \n
    \n );\n}\n\nfunction MileageTable({ rate }) {\n return (\n \n \n Mileage Values\n \n \n \n \n \n \n \n
    Rate / Mile\n \n
    \n \n
    \n );\n}\n\nfunction ExpenseDate({ name, showConfirm }) {\n const {\n field: { onChange, onBlur, value },\n fieldState: { error },\n } = useController({ name });\n\n return (\n {\n const updateField = () => onChange(_date.stamp(v));\n if (moment(v) < moment().subtract(60, \"days\"))\n showConfirm({\n title: \"Date is older than 60 days\",\n message: \"Are you sure you want to use this date?\",\n buttons: [\n {\n label: \"Confirm\",\n onClick: updateField,\n variant: \"success\",\n },\n {\n label: \"Cancel\",\n variant: \"secondary\",\n },\n ],\n });\n else updateField();\n }}\n includeNow={false}\n isInvalid={!!error}\n errors={error?.message}\n />\n );\n}\n\nconst initialValue = {\n breakfast: true,\n lunch: true,\n dinner: true,\n};\nfunction PerDiemCalculator({ startDate, perDiemAmounts, setValue }) {\n const [show, setShow] = useState(false);\n const [days, setDays] = useState(1);\n const [values, setValues] = useState([initialValue]);\n const [totals, setTotals] = useState([]);\n const [shouldChangeNotes, setShouldChangeNotes] = useState(true);\n useEffect(() => {\n setTotals(\n values.map((v) => {\n let total = 0;\n if (v.breakfast) total += perDiemAmounts.breakfast;\n if (v.lunch) total += perDiemAmounts.lunch;\n if (v.dinner) total += perDiemAmounts.dinner;\n return total;\n }),\n );\n }, [values, perDiemAmounts]);\n return (\n \n \n setShow(true)}\n variant=\"outline-secondary\"\n block\n >\n Calculator\n \n \n setShow(false)}\n className=\"modal2\"\n backdropClassName=\"modal2-backdrop\"\n >\n Per Diem Calculator\n \n \n {`${days} Days starting on ${_date.display(\n startDate,\n )}`}\n {\n const d = e.target.value;\n setDays(d);\n setValues((old) => {\n const newValues = [...old];\n if (old.length > d) {\n return old.slice(0, d);\n } else {\n for (var i = 0; i < d - old.length; i++)\n newValues.push(initialValue);\n return newValues;\n }\n });\n }}\n />\n \n {values.map((v, idx) => (\n \n \n \n \n {_date.display(moment(startDate).add(idx, \"days\"))}\n \n \n \n \n setValues((old) => {\n old[idx] = { ...old[idx], breakfast: e.target.checked };\n return [...old];\n })\n }\n />\n \n setValues((old) => {\n old[idx] = { ...old[idx], lunch: e.target.checked };\n return [...old];\n })\n }\n />\n \n setValues((old) => {\n old[idx] = { ...old[idx], dinner: e.target.checked };\n return [...old];\n })\n }\n />\n \n \n \n \n \n \n ))}\n \n \n \n \n \n {\n setShow(false);\n setValue(\n \"amount\",\n totals.reduce((a, b) => a + b, 0),\n {\n shouldDirty: true,\n shouldValidate: true,\n },\n );\n if (shouldChangeNotes)\n setValue(\n \"note\",\n totals.reduce((notes, total, idx) => {\n return (\n notes +\n `${_date.display(\n moment(startDate).add(idx, \"days\"),\n )} - $${total.toFixed(2)}\\n`\n );\n }, \"\"),\n );\n }}\n >\n Set Amount\n \n \n \n setShouldChangeNotes(e.target.checked)}\n />\n \n \n \n \n Total{\" \"}\n a + b, 0)}\n className=\"font-weight-bold\"\n />\n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Modal } from \"react-bootstrap\";\n\nimport ExpenseEditor from \"./ExpenseEditor\";\n\nexport default function ExpenseEditorModal({ title, show, onHide, ...props }) {\n return (\n \n \n {title}\n \n \n \n \n \n );\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\n\nimport { createEntityHooks } from \"../common/entity\";\nimport state from \"./state\";\n\nconst {\n useEntities: useExpenses,\n useEntitiesBySearch: useExpensesBySearch,\n useEntity,\n} = createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n});\n\nconst useExpense = ({ id, ...args } = {}) => {\n const dispatch = useDispatch();\n return {\n createAttachment: useCallback(\n (args) =>\n dispatch(state.actions.createAttachment({ id, ...args })).then(\n unwrapResult,\n ),\n [dispatch, id],\n ),\n ...useEntity({ id, ...args }),\n };\n};\n\nexport { useExpense, useExpenses, useExpensesBySearch };\n","import React, { useMemo, useState } from \"react\";\nimport { Badge, Button, ButtonGroup, Modal } from \"react-bootstrap\";\nimport { BiEdit } from \"react-icons/bi\";\nimport { IoMdAttach } from \"react-icons/io\";\n\nimport AttachmentsTable from \"../common/details/AttachmentsTable\";\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Customer from \"../customers\";\nimport User from \"../users\";\nimport ExpenseCategory from \"./categories\";\nimport ExpenseEditorModal from \"./ExpenseEditorModal\";\nimport { useExpense } from \"./hooks\";\nimport ExpenseTrip from \"./trips\";\nimport ExpenseType from \"./types\";\n\nexport default function ExpenseTable({\n expenses,\n isDisabled,\n onRefresh = () => {},\n ...props\n}) {\n const [editId, setEditId] = useState(null);\n const [attachmentId, setAttachmentId] = useState(null);\n\n const columns = useMemo(\n () => [\n {\n id: \"edit\",\n Header: \"\",\n accessor: \"status\",\n disableSortBy: true,\n Cell: ({ value, row: { original: expense } }) => {\n const disabled = value === \"C\" || isDisabled;\n return (\n \n setEditId(expense?.id)}\n disabled={disabled}\n >\n \n \n setAttachmentId(expense?.id)}\n >\n {\" \"}\n {expense?.attachments?.length}\n \n \n );\n },\n },\n {\n id: \"user\",\n Header: \"User\",\n accessor: \"userId\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: \"date\",\n Cell: ({ value }) => _date.displayLong(_date.fromStamp(value)),\n },\n {\n id: \"id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"source\",\n Header: \"Source\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ row: { original: expense } }) => {\n if (expense?.expenseTripId)\n return ;\n else if (expense?.customerId)\n return ;\n else return Other;\n },\n },\n {\n id: \"expenseType\",\n Header: \"Type\",\n accessor: \"expenseTypeId\",\n Filter: ExpenseType.TableFilter,\n filter: \"equals\",\n Cell: ExpenseType.Description,\n },\n {\n id: \"customer\",\n Header: \"Customer\",\n accessor: \"customerId\",\n Cell: Customer.Name,\n },\n {\n id: \"expenseCategory\",\n Header: \"Category\",\n accessor: \"expenseCategoryId\",\n Filter: ExpenseCategory.TableFilter,\n filter: \"equals\",\n Cell: ExpenseCategory.Description,\n },\n {\n id: \"overrideDescription\",\n Header: \"Description\",\n accessor: \"overrideDescription\",\n },\n {\n id: \"note\",\n Header: \"Notes\",\n accessor: \"note\",\n Cell: ({ value }) => (\n \n {value}\n

    \n ),\n },\n {\n id: \"paymentType\",\n Header: \"Payment Type\",\n accessor: (e) =>\n e.paymentType === \"E\"\n ? \"Employee Paid\"\n : e.paymentType === \"C\"\n ? \"Company Credit Card\"\n : \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"overrideBillableFlag\",\n Header: \"Billable\",\n accessor: \"overrideBillableFlag\",\n },\n {\n id: \"mileage\",\n Header: \"Mileage\",\n accessor: \"miles\",\n dataType: \"number\",\n format: {\n number: { decimals: 2 },\n },\n },\n {\n id: \"amount\",\n Header: \"Amount\",\n accessor: \"amount\",\n dataType: \"number\",\n format: {\n number: { decimals: 2 },\n },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.amount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"billCustomerAmount\",\n Header: \"Bill Customer Amount\",\n accessor: \"billCustomerAmount\",\n dataType: \"number\",\n format: {\n number: { decimals: 2 },\n },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.billCustomerAmount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"reimburseAmount\",\n Header: \"Reimburse Amount\",\n accessor: \"reimburseAmount\",\n dataType: \"number\",\n format: {\n number: { decimals: 2 },\n },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.reimburseAmount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n ],\n [isDisabled],\n );\n return (\n <>\n \n setEditId(null)}\n />\n setAttachmentId(null)}\n isDisabled={isDisabled}\n />\n \n );\n}\n\nfunction ExpenseEditModal({ id, onHide, isDisabled, onRefresh }) {\n const {\n expense,\n updateOne: updateExpense,\n deleteOne: deleteExpense,\n } = useExpense({\n id,\n });\n return (\n {\n updateExpense(expense).then(() => {\n onHide();\n onRefresh();\n });\n }}\n onDelete={() => {\n deleteExpense().then(() => {\n onHide();\n onRefresh();\n });\n }}\n isDisabled={isDisabled}\n />\n );\n}\n\nfunction ExpenseAttachmentsModal({ id, onHide, isDisabled }) {\n const { expense, createAttachment, getExpense } = useExpense({\n id,\n });\n return (\n \n \n Expense Attachments\n \n \n \n \n \n );\n}\n","import Category from \"./categories\";\nimport ExpenseNewButton from \"./ExpenseNewButton\";\nimport ExpenseTable from \"./ExpenseTable\";\nimport { useExpense, useExpenses, useExpensesBySearch } from \"./hooks\";\nimport state from \"./state\";\nimport ExpenseTrip from \"./trips\";\nimport ExpenseType from \"./types\";\n\nconst Expense = {\n // Backend API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useAll: useExpenses,\n useSearch: useExpensesBySearch,\n useOne: useExpense,\n // Components\n Table: ExpenseTable,\n NewButton: ExpenseNewButton,\n // Related Entity Objects\n Trip: ExpenseTrip,\n Category: Category,\n Type: ExpenseType,\n};\nexport default Expense;\n","import React, { useState } from \"react\";\nimport { Button } from \"react-bootstrap\";\n\nimport useTinykeys from \"../common/hooks/useTinykeys\";\nimport ExpenseEditorModal from \"./ExpenseEditorModal\";\nimport { useExpense } from \"./hooks\";\n\nexport default function ExpenseNewButton({\n label = \"Add Expense\",\n onCreate,\n initialValues,\n disabled = false,\n}) {\n const { createOne } = useExpense();\n const [showAdd, setShowAdd] = useState(false);\n\n useTinykeys(\n showAdd\n ? {}\n : {\n \"Alt+KeyA\": () => setShowAdd(true),\n },\n );\n return (\n <>\n setShowAdd(true)}\n disabled={disabled}\n >\n {label}\n \n setShowAdd(false)}\n onSubmit={(expense) =>\n createOne(expense).then(() => {\n onCreate();\n setShowAdd(false);\n })\n }\n />\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function ExpenseNavSidebar({ children }) {\n return (\n \n Expenses\n
    \n {children}\n
    \n );\n}\n\nexport function ExpenseIndexNavSidebar() {\n return (\n \n Trip\n Customer\n Other\n Search\n \n );\n}\n","import moment from \"moment\";\nimport React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../common/pages/Page\";\nimport Expense from \"../../expenses\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nconst useIdParam = () => parseInt(useParams().id);\n\nexport default function ExpenseCustomerEntry() {\n const customerId = useIdParam();\n const user = useSelector((state) => state.auth.user);\n const { expenses, loading, lastUpdate, reset } = Expense.useSearch({\n canGet: !!customerId,\n search: { userId: user, customerId: customerId, status: \"O\", mode: \"C\" },\n });\n\n return (\n }>\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Alert, Button, Form } from \"react-bootstrap\";\n\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport Page from \"../../common/pages/Page\";\nimport Customer from \"../../customers\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nexport default function ExpenseCustomerIndex() {\n const [customerId, setCustomerId] = useState();\n const [, setRedirect] = useRedirect();\n return (\n }\n >\n \n Expenses for go-lives, upgrades, consulting trips, etc.. should be\n entered up Trip expenses.\n \n
    \n setCustomerId(id)}\n />\n \n customerId && setRedirect(`/expenses/customers/${customerId}`)\n }\n >\n Next\n \n \n \n );\n}\n","import React from \"react\";\nimport { Col, ListGroup, Row } from \"react-bootstrap\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nimport Page from \"../../common/pages/Page\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nexport default function ExpenseIndex() {\n return (\n }>\n \n \n \n \n Enter Trip Expenses\n \n \n Enter Customer Expenses\n \n \n Enter Other Expenses\n \n \n Search\n \n \n \n \n \n );\n}\n","import moment from \"moment\";\nimport React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport Page from \"../../common/pages/Page\";\nimport Expense from \"../../expenses\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nexport default function ExpenseOtherEntry() {\n const user = useSelector((state) => state.auth.user);\n const { expenses, loading, lastUpdate, reset } = Expense.useSearch({\n canGet: true,\n search: { userId: user, status: \"O\", mode: \"O\" },\n });\n\n return (\n }\n tableOfContents={false}\n >\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Alert, Button, Col, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { object, string } from \"yup\";\n\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport {\n Controller,\n Forms,\n FormsField,\n useFormContext,\n} from \"../../common/forms\";\nimport { _date } from \"../../common/functions/dates\";\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\nimport Customer from \"../../customers\";\nimport Expense from \"../../expenses\";\nimport User from \"../../users\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nexport default function ExpenseSearch() {\n const startDate = useSearchParams(\"startDate\");\n const endDate = useSearchParams(\"endDate\");\n const userId = useSearchParams(\"userId\");\n const customerId = useSearchParams(\"customerId\");\n const expenseTripId = useSearchParams(\"expenseTripId\");\n const status = useSearchParams(\"status\");\n const mode = useSearchParams(\"mode\");\n\n const {\n user: currentUserId,\n canEnterOtherUserExpenses,\n isAdmin,\n } = useSelector((state) => state.auth);\n\n const hasPermissionsError =\n currentUserId !== userId && !canEnterOtherUserExpenses && !isAdmin;\n\n const search = useMemo(() => {\n const searchParms = {\n startDate,\n endDate,\n userId,\n customerId,\n expenseTripId,\n status,\n mode,\n };\n const search = { ..._.pickBy(searchParms || {}, Boolean) };\n\n return _.isEmpty(search) ? null : search;\n }, [customerId, expenseTripId, endDate, startDate, status, userId, mode]);\n\n const { expenses, loading, reset, lastUpdate } = Expense.useSearch({\n canGet: !!search && !hasPermissionsError,\n search,\n });\n\n const startArr = [\"edit\"];\n if (!search?.userId) startArr.push(\"user\");\n\n const typeArr = [\n \"date\",\n \"source\",\n \"expenseType\",\n \"overrideDescription\",\n \"note\",\n \"paymentType\",\n \"mileage\",\n \"overrideBillableFlag\",\n \"amount\",\n \"reimburseAmount\",\n \"billCustomerAmount\",\n ];\n\n const otherArray = [\n \"date\",\n \"source\",\n \"expenseCategory\",\n \"overrideDescription\",\n \"note\",\n \"paymentType\",\n \"mileage\",\n \"amount\",\n \"reimburseAmount\",\n ];\n\n const layout = startArr.concat(search?.mode === \"O\" ? otherArray : typeArr);\n\n return (\n }\n tableOfContents={false}\n >\n {hasPermissionsError ? (\n Invalid Search: Permissions Error\n ) : null}\n {search ? (\n \n ) : (\n \n )}\n \n );\n}\n\nconst searchSchema = object().shape({\n startDate: string().transform(_date.stamp).label(\"Start Date\"),\n endDate: string().transform(_date.stamp).label(\"End Date\"),\n userId: string().label(\"User\").when(\"$userRequired\", {\n is: true,\n then: string().required(),\n otherwise: string(),\n }),\n});\n\nfunction SearchOptions({ userId, userRequired }) {\n const [, setRedirect] = useRedirect();\n\n return (\n {\n setRedirect(\n `/expenses/search?${new URLSearchParams({\n ..._.pickBy(search || {}, Boolean),\n }).toString()}`,\n );\n }}\n defaultValues={{\n userId,\n status: \"C\",\n mode: \"T\",\n startDate: \"\",\n endDate: \"\",\n }}\n schema={{ schema: searchSchema }}\n context={{ userRequired }}\n showDevTool\n >\n \n \n );\n}\n\nfunction SearchOptionsForms() {\n const {\n watch,\n submitForm,\n setValue,\n context: { userRequired },\n } = useFormContext();\n\n const [mode, startDate, endDate, userId] = watch([\n \"mode\",\n \"startDate\",\n \"endDate\",\n \"userId\",\n ]);\n\n return (\n
    \n \n \n \n \n (\n onChange(v)}\n includeNow={false}\n maxDate={endDate}\n autoComplete=\"off\"\n isClearable\n />\n )}\n />\n \n \n (\n onChange(v)}\n includeNow={false}\n minDate={startDate}\n autoComplete=\"off\"\n isClearable\n />\n )}\n />\n \n \n \n \n \n \n \n {\n const id = e.target.value;\n setValue(\"mode\", id);\n if (id === \"T\") {\n setValue(\"customerId\", null);\n } else if (id === \"C\") {\n setValue(\"expenseTripId\", null);\n } else if (id === \"O\") {\n setValue(\"expenseTripId\", null);\n setValue(\"customerId\", null);\n }\n }}\n >\n \n \n \n \n {mode === \"C\" ? (\n \n ) : mode === \"T\" ? (\n \n ) : null}\n \n \n \n \n \n \n\n \n \n \n
    \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Alert, Button, Col, Form, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\nimport { toast } from \"react-toastify\";\n\nimport useConfirmModal from \"../../common/modals/useConfirmModal\";\nimport Page from \"../../common/pages/Page\";\nimport Expense from \"../../expenses\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nexport default function ExpenseTripEntry() {\n const tripId = parseInt(useParams().id);\n const user = useSelector((state) => state.auth.user);\n const { expenses, loading, lastUpdate, reset } = Expense.useSearch({\n canGet: !!tripId,\n search: { userId: user, expenseTripId: tripId },\n });\n\n const {\n user: expenseTripUser,\n updateOne: updateExpenseTripUser,\n loading: loadingExpenseTripUser,\n } = Expense.Trip.User.useOneByFind({ find: { tripId, userId: user } });\n\n const isDisabled = expenseTripUser?.isExpensesFinished || loading;\n\n return (\n }\n title={`Expenses: Trip ${tripId}`}\n navSidebar={}\n tableOfContents={false}\n >\n \n \n \n \n \n {\n Expense.Trip.User.api\n .sendEmail({ userId: user, tripId: tripId })\n .then(() => toast.info(\"Confirmation email sent.\"));\n }}\n >\n Send Email Confirmation\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction FinishCheck({ expenseTripUser, isLoading, update, expenses = [] }) {\n const { types: expenseTypes } = Expense.Type.useAll();\n const missingTypes = useMemo(() => {\n const requiredTypes = expenseTypes\n .filter((t) => t.shouldShowReminder)\n .map((t) => t.id);\n const currentTypes = _.uniq(expenses.map((e) => e.expenseTypeId));\n const missing = _.difference(requiredTypes, currentTypes);\n return missing;\n }, [expenseTypes, expenses]);\n\n const [ConfirmModal, confirmModalProps, showConfirm] = useConfirmModal();\n\n return (\n <>\n {\n const newExpensesFinished = e.target.checked;\n const performUpdate = () =>\n update({\n ...expenseTripUser,\n isExpensesFinished: newExpensesFinished,\n });\n\n if (newExpensesFinished)\n showConfirm({\n title: `Finish Trip (${expenseTripUser?.userId})`,\n message: (\n \n \n {missingTypes.length > 0 ? (\n \n \n \n Warning: Common expenses missing\n\n
      \n {missingTypes.map((t, idx) => (\n \n \n \n ))}\n
    \n
    \n \n
    \n ) : null}\n \n {\"Mark trip expenses as finished?\"}\n \n \n
    \n ),\n buttons: [\n {\n label: \"Finished\",\n onClick: performUpdate,\n variant: \"success\",\n },\n {\n label: \"Cancel\",\n variant: \"secondary\",\n },\n ],\n });\n else performUpdate();\n }}\n />\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { Button, Form } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nimport Page from \"../../common/pages/Page\";\nimport Expense from \"../../expenses\";\nimport { ExpenseIndexNavSidebar } from \"./ExpenseNavSidebar\";\n\nexport default function ExpenseTripIndex() {\n const [tripId, setTripId] = useState();\n const user = useSelector((state) => state.auth.user);\n return (\n }>\n
    \n setTripId(tripId)}\n />\n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport ExpenseCustomerEntry from \"./ExpenseCustomerEntry\";\nimport ExpenseCustomerIndex from \"./ExpenseCustomerIndex\";\nimport ExpenseIndex from \"./ExpenseIndex\";\nimport ExpenseOtherEntry from \"./ExpenseOtherEntry\";\nimport ExpenseSearch from \"./ExpenseSearch\";\nimport ExpenseTripEntry from \"./ExpenseTripEntry\";\nimport ExpenseTripIndex from \"./ExpenseTripIndex\";\n\nexport default function ExpensesRouting() {\n let { path } = useRouteMatch();\n\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","import _ from \"lodash\";\nimport React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { _datetime } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\n\nfunction JobsTable({\n jobs = [],\n layout = [\"dateTime\", \"type\", \"description\", \"status\"],\n initialSort = { id: \"dateTime\", desc: true },\n ...props\n}) {\n const columns = React.useMemo(\n () => [\n {\n id: \"dateTime\",\n Header: \"Date\",\n accessor: \"dateTime\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n ),\n },\n {\n id: \"job\",\n Header: \"Job\",\n accessor: \"id\",\n disableFilters: true,\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n disableFilters: true,\n },\n {\n id: \"type\",\n Header: \"Type\",\n disableFilters: false,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n accessor: (job) => _.startCase(job.functionName),\n Cell: ({ row: { original: job }, value }) => {\n switch (job?.functionName) {\n case \"statement\":\n return (\n \n Invoice approval statement\n \n );\n case \"InternalTime\":\n return (\n \n Internal Time Report\n \n );\n case \"CodeChanges\":\n return (\n \n Code Changes\n \n );\n case \"CustomAnalysis\":\n return (\n \n Custom Analysis\n \n );\n case \"CustomerBilledByProduct\":\n return (\n \n Customer Billed By Product\n \n );\n case \"CustomerCrs\":\n return (\n \n Customer Crs Report\n \n );\n case \"ARYearlySummary\":\n return (\n \n AR Yearly Summary\n \n );\n case \"CustomerProducts\":\n return (\n \n Customer Products\n \n );\n case \"CustomerStatement\":\n return (\n \n Customer Statement\n \n );\n case \"CustomerTime\":\n return (\n \n Customer Time Report\n \n );\n case \"DailyBreakdown\":\n return (\n \n Daily Breakdown Report\n \n );\n case \"EmployeeMeasures\":\n return (\n \n Employee by Measures Report\n \n );\n case \"HostingYearBreakdown\":\n return (\n \n Hosting Year Breakdown\n \n );\n case \"Activity\":\n return (\n \n Activity Report\n \n );\n case \"ModuleSummary\":\n return (\n \n Module Summary Report\n \n );\n case \"NonbillableTime\":\n return (\n \n Nonbillable Time Report\n \n );\n case \"OutOfOffice\":\n return (\n \n Out of Office Report\n \n );\n case \"Overtime\":\n return (\n \n Billable Additional Compensation Report\n \n );\n case \"TimeOnHold\":\n return (\n \n Time On Hold Report\n \n );\n case \"UnbilledTime\":\n return (\n \n Unbilled Time Report\n \n );\n case \"WorkSummary\":\n return (\n \n Work Summary Report\n \n );\n case \"ContractorWork\":\n return (\n \n Contractor Work Summary Report\n \n );\n case \"PrCrTextSearch\":\n return (\n \n PR/CR Text Search\n \n );\n case \"QaReviewers\":\n return (\n \n QA Reviewers\n \n );\n default:\n return value;\n }\n },\n },\n {\n id: \"status\",\n Header: \"Status\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n accessor: (t) => {\n switch (t.status) {\n case \"9\":\n return \"Waiting\";\n case \"7\":\n return \"In progress\";\n case \"6\":\n return \"Failed\";\n case \"5\":\n return \"Completed\";\n default:\n return \"Error: \" + t.status;\n }\n },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default React.memo(JobsTable);\n","import { createEntityHooks } from \"../../common/entity\";\nimport { jobsActions, jobsSelectors } from \"./state\";\n\nconst getJobsState = (state) => state.activity.jobs;\n\nconst { useEntities: useJobs } = createEntityHooks({\n entity: {\n name: \"job\",\n selectors: jobsSelectors,\n getState: getJobsState,\n },\n actions: { getMany: jobsActions.getJobs, reset: jobsActions.clearJobs },\n expire: {\n key: \"minutes\",\n value: 30,\n },\n});\n\nexport default useJobs;\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nimport { _datetime } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport User from \"../../users\";\n\nfunction NotificationsTable({\n notifications = [],\n layout = [\"dateTime\", \"creator\", \"message\"],\n initialSort = { id: \"dateTime\", desc: true },\n ...props\n}) {\n const columns = React.useMemo(\n () => [\n {\n id: \"dateTime\",\n Header: \"Date\",\n accessor: \"createDateTime\",\n disableFilters: true,\n\n Cell: ({ value }) => (\n {_datetime.displayDateTime(_datetime.fromStamp(value))}\n ),\n },\n {\n id: \"type\",\n Header: \"Type\",\n disableFilters: false,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n accessor: (t) => {\n switch (t.notifyPartySource) {\n case \"CM\":\n return \"Champion\";\n case \"EMP\":\n return \"User\";\n case \"PSU\":\n return \"Team\";\n case \"EMG\":\n return \"Emergency\";\n default:\n return \"Error: \" + t.notifyPartySource;\n }\n },\n },\n {\n id: \"message\",\n Header: \"Message\",\n Filter: TextColumnFilter,\n filter: \"text\",\n accessor: \"message\",\n Cell: (o) =>\n (function (o) {\n return (\n {\n // e.preventDefault();\n // onSelect(o?.row?.original?.id);\n //}}\n >\n {o.value}\n \n );\n })(o),\n },\n {\n Header: \"Cause\",\n id: \"creator\",\n accessor: \"creator\",\n\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"read\",\n Header: \"Read\",\n accessor: (t) => {\n if (t.read) {\n return \"\\u2714\";\n } else {\n return \"\";\n }\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n {\n if (row?.original?.read) {\n return { className: \"table-secondary\" };\n }\n }}\n {...props}\n />\n \n \n \n \n );\n}\n\nexport default React.memo(NotificationsTable);\n","import { createEntityHooks } from \"../../common/entity\";\nimport { notificationsActions, notificationsSelectors } from \"./state\";\n\nconst getNotificationsState = (state) => state.activity.notifications;\n\nconst { useEntities: useNotifications } = createEntityHooks({\n entity: {\n name: \"notification\",\n selectors: notificationsSelectors,\n getState: getNotificationsState,\n },\n actions: {\n getMany: notificationsActions.getNotifications,\n reset: notificationsActions.clearNotifications,\n },\n expire: {\n key: \"minutes\",\n value: 3,\n },\n});\n\nexport default useNotifications;\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect } from \"react\";\nimport { Col, Nav, Row, Tab } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport JobsTable from \"../activity/jobs/JobsTable\";\nimport useJobs from \"../activity/jobs/useJobs\";\nimport NotificationsTable from \"../activity/notifications/NotificationsTable\";\nimport useNotifications from \"../activity/notifications/useNotifications\";\nimport UserActivityTable from \"../activity/userActivity/UserActivityTable\";\nimport useUserActivity from \"../activity/userActivity/useUserActivity\";\nimport { GoogleCalendarForm } from \"../common/components/calendars\";\nimport Page from \"../common/pages/Page\";\n\nexport default function Home() {\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\nfunction CalendarTab() {\n const { email, name } = useSelector((state) => state.auth);\n const calendars = [];\n const companyCalendar = {\n id: \"producepro.com_44jjf4ktbs146u0mojtf7d3000@group.calendar.google.com\",\n name: \"Company Calendar\",\n };\n const myCalendar = {\n id: email,\n name: name,\n };\n calendars.push(companyCalendar);\n calendars.push(myCalendar);\n\n return (\n <>\n
    \n {\" \"}\n \n );\n}\n\nfunction NotificationTab() {\n const {\n entities: notifications,\n loading: notificationsLoading,\n getMany: getNotifications,\n lastUpdate: lastUpdateNotifications,\n } = useNotifications();\n\n return (\n {\n getNotifications();\n }}\n refreshLabel={\n \"Fetched \" + moment(lastUpdateNotifications).fromNow() + \" \\u27F3\"\n }\n />\n );\n}\n\nfunction ActivityTab() {\n const {\n entities: userActivity,\n loading: userActivityLoading,\n getMany: getUserActivity,\n lastUpdate: lastUpdateUserActivity,\n } = useUserActivity();\n\n const _userActivity = _.uniqBy(\n _.reverse(_.sortBy(userActivity, \"dateTime\")),\n (a) => a.source + a.key + a.logDescription,\n );\n\n return (\n {\n getUserActivity();\n }}\n refreshLabel={\n \"Fetched \" + moment(lastUpdateUserActivity).fromNow() + \" \\u27F3\"\n }\n />\n );\n}\n\nfunction JobsTab() {\n const { jobs, loading, getMany, lastUpdate } = useJobs({\n canGet: false,\n });\n\n useEffect(() => {\n getMany();\n }, [getMany]);\n\n return (\n {\n getMany();\n }}\n refreshLabel={\"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"}\n />\n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function InvoicesNavSidebar({ children }) {\n return (\n \n Invoices Home\n
    \n \n Tax Product Categories\n \n \n New Tax Product Category\n \n
    \n Tax Products\n \n New Tax Product\n \n
    \n {children}\n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../common/pages/Page\";\nimport InvoicesNavSidebar from \"./InvoicesNavSidebar\";\n\nexport default function InvoicesIndex() {\n return (\n
    \n }\n >\n
    \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport TaxProductCategory from \"../../../invoices/taxProductCategories\";\nimport InvoicesNavSidebar from \"../InvoicesNavSidebar\";\n\nexport default function TaxProductCategoryShow() {\n const id = useParams().id.toUpperCase();\n const { taxProductCategory, loading, updateOne } = TaxProductCategory.useOne({\n id: id,\n canGet: true,\n });\n const { canMaintainInvoices, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainInvoices || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {taxProductCategory ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Tax product category not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport TaxProductCategory from \"../../../invoices/taxProductCategories\";\nimport InvoicesNavSidebar from \"../InvoicesNavSidebar\";\n\nexport default function TaxProductCategoryIndex() {\n const [active, setActive] = useState(true);\n const { taxProductCategories, loading, reset } = TaxProductCategory.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => taxProductCategories.filter((e) => e.isInactive === !active),\n [active, taxProductCategories],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport TaxProductCategory from \"../../../invoices/taxProductCategories\";\nimport InvoicesNavSidebar from \"../InvoicesNavSidebar\";\n\nexport default function TaxProductCategoryNew() {\n const { createOne } = TaxProductCategory.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainInvoices, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainInvoices || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n createOne(taxProductCategory).then(({ id }) =>\n setRedirect(`/invoices/tax-product-categories/${id.toUpperCase()}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport TaxProductCategoryEdit from \"./TaxProductCategoryEdit\";\nimport TaxProductCategoryIndex from \"./TaxProductCategoryIndex\";\nimport TaxProductCategoryNew from \"./TaxProductCategoryNew\";\n\nexport default function TaxProductCategoriesPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import TaxProductCategory from \"./taxProductCategories\";\nimport TaxProduct from \"./taxProducts\";\n\nconst Invoice = {\n // API\n // Hooks\n // Components\n // Related Entity Objects\n\n TaxProduct: TaxProduct,\n TaxProductCategory: TaxProductCategory,\n};\n\nexport default Invoice;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Invoice from \"../../../invoices\";\nimport TaxProduct from \"../../../invoices/taxProducts\";\nimport InvoicesNavSidebar from \"../InvoicesNavSidebar\";\n\nexport default function TaxProductShow() {\n const id = useParams().id.toUpperCase();\n const { taxProduct, loading, updateOne } = Invoice.TaxProduct.useOne({\n id: id,\n canGet: true,\n });\n const { canMaintainInvoices, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainInvoices || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {taxProduct ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Tax Product record not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport TaxProduct from \"../../../invoices/taxProducts\";\nimport InvoicesNavSidebar from \"../InvoicesNavSidebar\";\n\nexport default function TaxProductIndex() {\n const [active, setActive] = useState(true);\n const { taxProducts, loading, reset } = TaxProduct.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => taxProducts.filter((e) => e.isInactive === !active),\n [active, taxProducts],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport TaxProduct from \"../../../invoices/taxProducts\";\nimport InvoicesNavSidebar from \"../InvoicesNavSidebar\";\n\nexport default function TaxProductNew() {\n const { createOne } = TaxProduct.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainInvoices, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainInvoices || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n createOne(taxProduct).then(({ id }) =>\n setRedirect(`/invoices/tax-products/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport TaxProductEdit from \"./TaxProductEdit\";\nimport TaxProductIndex from \"./TaxProductIndex\";\nimport TaxProductNew from \"./TaxProductNew\";\n\nexport default function TaxProductsPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport InvoicesIndex from \"./InvoicesIndex\";\nimport TaxProductCategoriesPages from \"./taxProductCategories\";\nimport TaxProductsPages from \"./taxProducts\";\n\nexport default function InvoicesRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Skeleton from \"react-loading-skeleton\";\n\nimport Page from \"../../common/pages/Page\";\n\nexport default function ProjectPage({\n project,\n heading,\n lead,\n isLoading,\n children,\n navSidebar,\n}) {\n const title = project ? `${heading}: ${project.synopsis}` : heading;\n\n const _lead = lead ? (\n lead\n ) : project?.synopsis ? (\n project?.synopsis\n ) : isLoading ? (\n \n ) : (\n \"\"\n );\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function ProjectNavSidebar({ children }) {\n return (\n \n Projects\n New Project\n
    \n {children}\n
    \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport ProjectNavSidebar from \"./ProjectNavSidebar\";\n\nexport default function ProjectShowNavSidebar({ id }) {\n return (\n \n {`Project ${id}`}\n Edit\n Time\n Log\n \n );\n}\n","import React, { useState } from \"react\";\nimport { useParams } from \"react-router\";\n\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\nimport ProjectPage from \"./ProjectPage\";\nimport ProjectShowNavSidebar from \"./ProjectShowNavSidebar\";\n\nexport default function ProjectEdit() {\n const id = parseInt(useParams().id);\n const { project, loading, updateOne } = Project.useOne({ id });\n const [error, setError] = useState(null);\n\n return (\n }\n >\n {project && !loading ? (\n {\n updateOne(projectModified, Cr.updatePrompt).catch((err) =>\n setError(err?.message),\n );\n }}\n error={error}\n />\n ) : null}\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, Col, Modal, Row } from \"react-bootstrap\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\n\nimport queryToString from \"../../common/functions/queryToString\";\nimport useIntervalUpdateComponent from \"../../common/hooks/useIntervalUpdateComponent\";\nimport Page from \"../../common/pages/Page\";\nimport Project from \"../../projects\";\nimport ProjectFilters from \"../../projects/ProjectFilters\";\nimport useSettings from \"../../settings/useSettings\";\nimport ProjectNavSidebar from \"./ProjectNavSidebar\";\n\nexport default function ProjectIndex() {\n const { settings, loading: loadingSettings } = useSettings();\n\n const filter = useSelector(\n (state) => state.projects.projects.filter,\n shallowEqual,\n );\n const { projects, loading, hasMore, getMore, reset, lastUpdate } =\n Project.useSearch({\n filter,\n blocked: _.isEmpty(filter) || loadingSettings,\n });\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (_.isEmpty(filter) && !_.isUndefined(settings) && !loadingSettings) {\n const {\n projectFilterOwner,\n projectFilterStatusId,\n projectFilterChampionId,\n projectFilterGroupId,\n } = settings;\n const filterDefault = {\n folderId: \"CURRENT\",\n owners: projectFilterOwner ? [projectFilterOwner] : [],\n projectStatuses: projectFilterStatusId ? [projectFilterStatusId] : [],\n champions: projectFilterChampionId ? [projectFilterChampionId] : [],\n groups: projectFilterGroupId ? [projectFilterGroupId] : [],\n };\n dispatch(Project.actions.setFilter(filterDefault));\n }\n }, [filter, settings, loadingSettings, dispatch]);\n\n useIntervalUpdateComponent(15000);\n\n return (\n }\n tableOfContents={false}\n >\n \n \n \n \n \n \n );\n}\n\nfunction IndexNavSidebar({ filter }) {\n const dispatch = useDispatch();\n\n function submitHandler(filter) {\n dispatch(Project.actions.setFilter(filter));\n setShow(false);\n }\n const [show, setShow] = useState(false);\n return (\n \n setShow(true)}\n title=\"Project Query Filters\"\n >\n Filters\n \n setShow(false)}>\n \n Project Query Filters\n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../common/pages/Page\";\nimport Project from \"../../projects\";\nimport ProjectNavSidebar from \"./ProjectNavSidebar\";\n\nexport default function ProjectNew() {\n return (\n }>\n \n \n );\n}\n","import React from \"react\";\n\nimport DetailTableEdit from \"../../common/details/DetailTableEdit\";\nimport { Forms, useFormsAutoSubmit } from \"../../common/forms\";\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\n\nexport default function ProjectShowDetails({\n project,\n update,\n isLoading,\n isDisabled,\n}) {\n return (\n \n update(e, Cr.updatePrompt)}\n defaultValues={project}\n schema={{ schema: Project.schema }}\n >\n \n \n \n );\n}\n\nfunction TableBody({ project, isLoading, isDisabled }) {\n useFormsAutoSubmit({\n debounceMs: 300,\n shouldResetOnError: true,\n });\n return (\n \n \n }\n as={Project.Priority.Select}\n isLoading={isLoading}\n isDisabled={isDisabled}\n getRowProps={() => ({\n className: Project.getPriorityClassName(project),\n })}\n />\n }\n as={Project.Type.Select}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n }\n as={Project.Source.Select}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n \n }\n as={Project.EstimateStatus.Select}\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nimport CrLinkWithContextMenu from \"../../common/components/CrLinkWithContextMenu\";\nimport AttachmentsButton from \"../../common/details/AttachmentsButton\";\nimport Comments from \"../../common/details/Comments\";\nimport DetailField from \"../../common/details/DetailField\";\nimport DetailSection from \"../../common/details/DetailSection\";\nimport { _datetime } from \"../../common/functions/dates\";\nimport useIntervalUpdateComponent from \"../../common/hooks/useIntervalUpdateComponent\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport ProjectNavSidebar from \"./ProjectNavSidebar\";\nimport ProjectPage from \"./ProjectPage\";\nimport ProjectShowDetails from \"./ProjectShowDetails\";\nimport ProjectShowNavSidebar from \"./ProjectShowNavSidebar\";\n\nconst CrTableComponents = {\n CrLink: CrLinkWithContextMenu,\n};\n\nexport default function ProjectShow() {\n const id = parseInt(useParams().id);\n const {\n project,\n loading: isLoading,\n updateOne,\n getProject,\n createComment,\n updateComment,\n createAttachment,\n lastUpdate,\n updateWatch,\n } = Project.useOne({ id, logActivity: true, redirect: false });\n\n const transferred =\n project?.transferredFolder && project?.transferredFolder !== \"CURRENT\";\n\n useIntervalUpdateComponent(15000);\n\n if (isLoading === false && !project)\n return (\n }\n />\n );\n\n const isLoadingAndInvalid = isLoading && _.isEmpty(project);\n\n return (\n }\n isLoading={isLoadingAndInvalid}\n >\n \n {\n return c.customerId;\n })}\n isLoading={isLoadingAndInvalid}\n />\n \n \n \n \n \n \n \n \n Add CR\n \n \n \n {project?.statusId !== \"OP\" ? \"Project is closed\" : \"\"}\n \n \n \n \n \n \n \n updateOne({ fixNotes: value })}\n isDisabled={transferred}\n isLoading={isLoading}\n header=\"Fix Notes\"\n text={project?.fixNotes}\n heightRem={2}\n />\n \n \n \n \n updateOne({ internalNotes: value })}\n isDisabled={transferred}\n isLoading={isLoading}\n header=\"Internal Notes\"\n text={project?.internalNotes}\n heightRem={2}\n />\n \n \n\n \n \n \n );\n}\n\nfunction Details({\n project,\n isLoading,\n transferred,\n update,\n createAttachment,\n getProject,\n lastUpdate,\n updateWatch,\n}) {\n const isLoadingAndInvalid = isLoading && _.isEmpty(project);\n\n const isDisabled = isLoading || transferred;\n const isDisabledOrClosed = isDisabled || project?.statusId != \"OP\";\n\n const attachments = useMemo(\n () =>\n project?.crs?.reduce(\n (attachments, cr) => attachments?.concat(cr?.attachments),\n project?.attachments || [],\n ),\n [project],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n update({ description: value })\n }\n isLoading={isLoading}\n header=\"Description\"\n text={project?.description}\n heightRem={14}\n />\n \n \n \n \n \n \n \n getProject()}\n disabled={isLoadingAndInvalid}\n >\n {isLoading\n ? \"Loading...\"\n : \"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"}\n \n \n \n \n \n \n update(changes, Cr.updatePrompt)}\n isLoading={isLoading}\n isDisabled={isDisabled}\n updateWatch={updateWatch}\n AdditionalForms={ProjectCrStatusEditor}\n />\n \n \n \n \n \n \n \n \n \n {isLoadingAndInvalid ? null : (\n \n {`Created on ${_datetime.displayDateTime(\n _datetime.fromStamp(project?.createDateTime),\n )}\\nby `}\n \n \n )}\n \n \n\n \n \n {isLoadingAndInvalid ? null : (\n \n \n \n \n )}\n \n \n \n \n );\n}\n\nfunction ProjectCrStatusEditor({ project }) {\n const canShow = project?.crs?.length === 1;\n const { cr, updateOne: updateCr } = Cr.useOne({\n id: canShow ? project?.crs?.[0].id : null,\n redirect: false,\n });\n\n if (!canShow) return null;\n\n return (\n \n \n CR {cr?.id} Status\n \n \n \n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router\";\n\nimport UserActivityTable from \"../../activity/userActivity/UserActivityTable\";\nimport Project from \"../../projects\";\nimport ProjectPage from \"./ProjectPage\";\nimport ProjectShowNavSidebar from \"./ProjectShowNavSidebar\";\n\nexport default function ProjectShowLog() {\n const id = parseInt(useParams().id);\n const { project, loading } = Project.useOne({\n id,\n logActivity: false,\n includeLogs: true,\n });\n\n return (\n }\n isLoading={loading}\n >\n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useState } from \"react\";\nimport { Button, Col, Row, Table as BsTable } from \"react-bootstrap\";\nimport NumberFormat from \"react-number-format\";\nimport { useParams } from \"react-router\";\n\nimport Project from \"../../projects\";\nimport Time from \"../../time\";\nimport ProjectPage from \"./ProjectPage\";\nimport ProjectShowNavSidebar from \"./ProjectShowNavSidebar\";\n\nexport default function ProjectShowTime() {\n const id = parseInt(useParams().id);\n const [showEstimate, setShowEstimate] = useState(false);\n\n const { project, loading, updateOne, getProject, lastUpdate } =\n Project.useOne({\n id,\n redirect: false,\n logActivity: true,\n });\n const { times, loading: loadingTimes } = Time.useAll({\n filter: { projectId: id },\n blocked: loading,\n });\n\n const transferred =\n project?.transferredFolder && project?.transferredFolder !== \"CURRENT\";\n\n const estimate = {\n minCost: project?.estimateMinCost,\n maxCost: project?.estimateMaxCost,\n minHours: project?.estimateMinHours,\n maxHours: project?.estimateMaxHours,\n rate: project?.estimateRate,\n };\n const actual = {\n invoicedBlHours: project?.actualInvoicedHours,\n invoicedNbHours: project?.actualInvoicedNbHours,\n billableHours: project?.actualBillableHours,\n nonBillHours: project?.actualNonBillableHours,\n totalHours: _.sum([\n project?.actualInvoicedHours,\n project?.actualInvoicedNbHours,\n project?.actualBillableHours,\n project?.actualNonBillableHours,\n ]),\n invoicedBlCost: project?.actualInvoicedCost,\n invoicedNbCost: project?.actualInvoicedNbCost,\n billableCost: project?.actualBillableCost,\n nonBillCost: project?.actualNonBillableCost,\n totalCost: _.sum([\n project?.actualInvoicedCost,\n project?.actualBillableCost,\n project?.actualNonBillableCost,\n ]),\n };\n return (\n }\n isLoading={loading}\n >\n \n \n \n getProject()}\n disabled={loading}\n >\n {loading\n ? \"Loading...\"\n : \"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"}\n \n \n \n \n \n \n \n \n }\n isLoading={loading}\n onEdit={transferred ? undefined : () => setShowEstimate(true)}\n />\n setShowEstimate(false)}\n update={updateOne}\n onFormsUpdate={() => getProject()}\n />\n \n \n \n \n \n \n

    CR Estimates

    \n \n \n \n \n Hours\n Cost\n \n \n\n \n \n Hours\n \n \n \n \n \n \n \n \n Cost\n \n \n \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport ProjectEdit from \"./ProjectEdit\";\nimport ProjectIndex from \"./ProjectIndex\";\nimport ProjectNew from \"./ProjectNew\";\nimport ProjectShow from \"./ProjectShow\";\nimport ProjectShowLog from \"./ProjectShowLog\";\nimport ProjectShowTime from \"./ProjectShowTime\";\n\nexport default function ProjectsRouting() {\n let { path } = useRouteMatch();\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","import React, { useEffect } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useParams, useRouteMatch } from \"react-router\";\n\nimport { _datetime } from \"../../common/functions/dates\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport Page from \"../../common/pages/Page\";\nimport useJob from \"./useJob\";\n\nexport default function JobPage(props) {\n let { path } = useRouteMatch();\n const pageProps = {\n path,\n ...props,\n };\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction JobPageContent({\n title,\n functionName,\n path,\n doOptions = false,\n Options,\n defaultOptions = {},\n Report,\n NavSidebar,\n tableOfContents,\n}) {\n const jobId = parseInt(useParams().id);\n const loggedInUser = useSelector((state) => state.auth.user);\n const { job, loading, submitJob, error, getJob } = useJob({\n id: jobId,\n functionName: functionName,\n redirect: path,\n });\n\n useEffect(() => {\n if (job?.isDone && !job?.output && !loading) getJob();\n }, [job, getJob, loading]);\n\n const jobString = `Report ${jobId || \"N/A\"}: ${\n job\n ? job?.isWaiting\n ? \"Waiting...\"\n : job?.isInProgress\n ? \"Running...\"\n : `${\n job?.isErrored ? \"Failed\" : \"Completed\"\n } @ ${_datetime.displayDateTime(_datetime.fromStamp(job?.dateTime))}`\n : \"Report not found\"\n }`;\n\n const navSidebarProps = { id: jobId, NavSidebar, path, title };\n const pageProps = {\n title: `${title}: ${jobId ? `${jobId} - ${job?.description}` : \"New\"}`,\n heading: title,\n navSidebar: ,\n tableOfContents: tableOfContents,\n };\n if (!jobId || doOptions)\n return (\n \n \n \n {jobId ? jobString : \"Report: New\"}\n \n \n \n \n \n \n \n \n );\n\n return (\n \n \n \n {jobId ? jobString : \"Report: New\"}\n \n \n \n \n {job ? (\n loggedInUser !== job?.userId ? (\n \"Unauthorized\"\n ) : (\n \n )\n ) : (\n error?.message || \"Failed to fetch report\"\n )}\n \n \n \n );\n}\n\nfunction JobNavSidebar({ title, id, NavSidebar, path }) {\n return (\n \n \n {title}\n \n {id ? (\n [\n \n Options\n ,\n \n Report\n ,\n ]\n ) : (\n \n Options\n \n )}\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function ReportNavSidebar({ children }) {\n return (\n \n Reports\n
    \n {children}\n
    \n );\n}\n","import moment from \"moment\";\nimport React from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useWatch,\n} from \"../../common/forms\";\nimport { _date } from \"../../common/functions/dates\";\nimport User from \"../../users\";\n\nexport default function ReportOptions({\n children,\n submitJob,\n job,\n startDate: sd = moment().startOf(\"month\").toISOString(),\n endDate: ed = moment().endOf(\"month\").toISOString(),\n options,\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options: jobOptions = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n },\n } = job;\n const allEmployeeReports = useSelector(\n (state) => state.auth.allEmployeeReports,\n );\n\n return (\n {\n submitJob({\n ...options,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: `${\n options?.userId ? options?.userId + \" \" : \"\"\n } from ${_date.display(options.startDate)} to ${_date.display(\n options.endDate,\n )}`,\n });\n }}\n showDevTool\n >\n {children}\n \n );\n}\n\nfunction ReportOptionsForms({ children }) {\n const {\n submitForm,\n context: { allEmployeeReports, loggedInUser },\n } = useFormContext();\n\n const endDate = useWatch({ name: \"endDate\" });\n const startDate = useWatch({ name: \"startDate\" });\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n value === loggedInUser || allEmployeeReports,\n },\n }}\n isClearable\n isDisabled={!allEmployeeReports}\n />\n \n \n {children}\n \n \n \n \n \n
    \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo } from \"react\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport UserActivityTable from \"../../activity/userActivity/UserActivityTable\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportActivity() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.data || [], [job]);\n return (\n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"./FieldSelect\";\n\nexport default function FieldYesNoSelect({\n value,\n loading = false,\n placeholder = \"\",\n ...props\n}) {\n const _options = [\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ];\n\n let valueOption = null;\n if (!_.isNil(value)) valueOption = _.find(_options, [\"value\", value]);\n\n return (\n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportARYearlyCustomerSummary() {\n const { isAdmin, isChampion } = useSelector((state) => state.auth);\n\n if (!(isChampion || isAdmin))\n return (\n \n );\n // eslint-disable-next-line\n\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.customers || [], [job]);\n\n const columns = useMemo(() => {\n const output = [\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Champion\",\n Header: \"Champion\",\n accessor: \"champion\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Net Yearly Avg\",\n Header: \"Net Yearly Avg\",\n accessor: \"netInvoicedYearlyAvg\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"Invoiced Yearly Avg\",\n Header: \"Invoiced Yearly Avg\",\n accessor: \"invoicedYearlyAvg\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"Credited Yearly Avg\",\n Header: \"Credited Yearly Avg\",\n accessor: \"creditedYearlyAvg\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"Net Total\",\n Header: \"Net Total\",\n accessor: \"netInvoicedTotal\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"Invoiced Total\",\n Header: \"Invoiced Total\",\n accessor: \"invoicedTotal\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"Credited Total\",\n Header: \"Credited Total\",\n accessor: \"creditedTotal\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n },\n ];\n\n if (job.options?.startYear)\n for (\n let i = parseInt(job.options.startYear);\n i <= parseInt(job.options.endYear);\n i++\n ) {\n output.push({\n id: \"Net Invoiced \" + i,\n Header: \"Net Invoiced \" + i,\n accessor: \"netInvoiced\" + i,\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n });\n output.push({\n id: \"Invoiced \" + i,\n Header: \"Invoiced \" + i,\n accessor: \"invoiced\" + i,\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n });\n output.push({\n id: \"Credited \" + i,\n Header: \"Credited \" + i,\n accessor: \"credited\" + i,\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n });\n }\n return output;\n }, [job]);\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n\nfunction ARYearlyCustomerSummaryOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"year\"),\n endDate: ed = moment().startOf(\"year\"),\n includeOther: incO = true,\n includeMaintenance: incM = false,\n includeHardware: incH = false,\n includeLicenses: incL = false,\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n customerId: null,\n accountManager: \"\",\n includeHardware: incH,\n includeMaintenance: incM,\n includeOther: incO,\n includeLicenses: incL,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n setValue,\n trigger,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n ...options,\n },\n });\n\n const startDate = watch(\"startDate\");\n const endDate = watch(\"endDate\");\n const customerId = watch(\"customerId\");\n const accountManager = watch(\"accountManager\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n const useUserValue = User.useOne({ id: accountManager });\n\n return (\n {\n let desc =\n customerId !== \"\" && customerId !== null\n ? \"AR Yearly summary for \" + useCustomerValue?.customer?.name\n : accountManager !== \"\" && accountManager !== null\n ? \"AR Yearly summary for \" + useUserValue?.user?.name\n : \"AR Yearly summary from \" +\n _date.stamp(options.startDate).substring(0, 4) +\n \" - \" +\n _date.stamp(options.endDate).substring(0, 4);\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n accountManager: _.isNil(options.accountManager)\n ? \"\"\n : options.accountManager,\n startYear: _date.stamp(options.startDate).substring(0, 4),\n endYear: _date.stamp(options.endDate).substring(0, 4),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n\n \n  \n \n\n \n \n (\n {\n onChange(v);\n setValue(\"accountManager\", \"\");\n trigger();\n }}\n isClearable={true}\n isInvalid={errors.customerId}\n errors={\"Invalid Customer\"}\n />\n )}\n />\n \n \n (\n {\n onChange(v);\n setValue(\"customerId\", \"\");\n trigger();\n }}\n isClearable={true}\n isChampion={true}\n isInvalid={errors.accountManager}\n errors={\"Invalid Account Manager\"}\n />\n )}\n />\n \n \n\n \n \n (\n \n )}\n />\n \n \n\n \n \n (\n \n )}\n />\n \n \n\n \n \n (\n \n )}\n />\n \n \n\n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport HelixLink from \"../../common/components/HelixLink\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport { _date, _datetime } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportCodeChanges() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.revisions || [], [job]);\n\n const columns = useMemo(\n () => [\n {\n id: \"Cr Owner\",\n Header: \"CR Owner\",\n accessor: \"crOwner\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Revision\",\n Header: \"Revision\",\n accessor: \"revision\",\n\n Cell: ({ value, row }) => (\n \n ),\n },\n {\n id: \"Author\",\n Header: \"Author\",\n accessor: \"authorId\",\n\n Cell: ({ value }) => (\n \n ),\n },\n {\n id: \"File Path\",\n Header: \"File Path\",\n accessor: \"filepath\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Comment\",\n Header: \"Comment\",\n accessor: \"comment\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Commit Time\",\n Header: \"Commit Time\",\n accessor: \"datetime\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => (\n <>{_datetime.displayDateTime(_datetime.fromStamp(value))}\n ),\n },\n {\n id: \"Cr\",\n Header: \"Cr\",\n accessor: \"crId\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n\nfunction CodeChangesOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"month\"),\n endDate: ed = moment().endOf(\"month\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n },\n } = job;\n const { handleSubmit, control, watch, errors } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n customerId: \"\",\n startDate: \"\",\n endDate: \"\",\n hiddenTime: false,\n projectType: \"\",\n ...options,\n },\n });\n\n const endDate = watch(\"endDate\");\n const startDate = watch(\"startDate\");\n const customerId = watch(\"customerId\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n\n return (\n {\n let desc =\n \"from \" +\n _date.display(options.startDate) +\n \" to \" +\n _date.display(options.endDate);\n\n if (_.isNil(customerId) || customerId === \"\") {\n desc = \"All customers \" + desc;\n } else {\n desc = useCustomerValue?.customer?.name + \" \" + desc;\n }\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n hiddenTime: _.isNil(options.hiddenTime) ? false : options.hiddenTime,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport AttachmentsTable from \"../../common/details/AttachmentsTable\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport LoadingModal from \"../../common/modals/LoadingModal\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Time from \"../../time\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportContractorWorkSummary() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState(null);\n const formattedVersion = job?.output?.formattedVersion;\n const attachments = useMemo(() => job?.output?.attachments || [], [job]);\n const data = useMemo(() => job?.output?.time || [], [job]);\n\n const clickedBillingNote = useCallback(\n (timeId) => {\n setShowTimeId(timeId);\n setShowModifyModal(true);\n },\n [setShowTimeId, setShowModifyModal],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"User\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Date\",\n Header: \"Date\",\n accessor: \"date\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n // eslint-disable-next-line react/display-name\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Billable\",\n Header: \"Bill?\",\n accessor: \"isBillable\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Show on Invoice\",\n Header: \"Show on Invoice\",\n accessor: \"showOnInvoice\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Held\",\n Header: \"Held\",\n accessor: \"held\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Contractor Billable\",\n Header: \"Contractor Bill?\",\n accessor: \"isContractorBillable\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: (row) => (row.crId === 0 ? \"N/A\" : row.crId),\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Estimate\",\n Header: \"Estimate\",\n accessor: \"estimate\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Billing note\",\n Header: \"Billing note\",\n accessor: \"billingNote\",\n Filter: TextColumnFilter,\n filter: \"text\",\n // eslint-disable-next-line react/display-name\n Cell: ({ value, row }) => {\n return (\n \n );\n },\n },\n {\n id: \"Invoice Project Type\",\n Header: \"Invoice Project Type\",\n accessor: \"invoiceType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Project Type\",\n Header: \"Project Type\",\n accessor: \"projectTypeDescription\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Rate\",\n Header: \"Rate\",\n accessor: \"rate\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n // eslint-disable-next-line react/display-name\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"total\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n // eslint-disable-next-line react/display-name\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n ],\n [clickedBillingNote],\n );\n\n if (isLoading) {\n return ;\n } else if (formattedVersion) {\n return (\n \n );\n } else {\n return (\n <>\n setShowModifyModal(false)}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n \n \n \n \n );\n }\n}\n\nfunction ContractorWorkOptions(props) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const { user } = User.useOne({ id: loggedInUser });\n return (\n \n \n \n (\n \n )}\n />\n \n \n \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row, Tab, Tabs } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { CurrencyFormatter, PercentFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Module from \"../../crs/modules\";\nimport Project from \"../../projects\";\nimport Time from \"../../time\";\nimport BillableOverrideReasons from \"../../time/billableOverrideReasons\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nconst estimateLayout = [\n \"Group\",\n \"Project/Cr\",\n \"Owner\",\n \"Champion\",\n \"Estimate $\",\n \"Bill $\",\n \"N/B $\",\n \"Under Budget?\",\n \"Flat Gain $\",\n \"Flat Loss $\",\n \"N/B Flip Gain $\",\n \"Billable %\",\n];\n\nconst groupBy = [\"Group\"];\n\nconst noEstimateLayout = [\n \"Group\",\n \"Project/Cr\",\n \"Owner\",\n \"Champion\",\n \"Bill $\",\n \"N/B $\",\n \"Billable %\",\n];\n\nconst oslLayout = [\n \"Group\",\n \"Project/Cr\",\n \"Champion\",\n \"Bill $\",\n \"N/B $\",\n \"Billable %\",\n];\n\nexport default function ReportCustomAnalysis() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const estimates = useMemo(() => job?.output?.estimates || [], [job]);\n const noEstimates = useMemo(() => job?.output?.noEstimates || [], [job]);\n const osls = useMemo(() => job?.output?.osls || [], [job]);\n const nbReasons = useMemo(() => job?.output?.nbReasons || [], [job]);\n const summary = useMemo(() => job?.output?.summary || [], [job]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n //initialGroupBy={groupBy}\n}\n\nfunction Detail({ data, isLoading, layout }) {\n const columns = useMemo(\n () => [\n {\n id: \"Champion\",\n Header: \"Champion\",\n accessor: \"champion\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Owner\",\n Header: \"Owner\",\n accessor: \"ownerId\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Project/Cr\",\n Header: \"Project/Cr\",\n accessor: \"reference\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row }) =>\n row?.original?.source === \"CR\" ? (\n \n ) : (\n \n ),\n },\n {\n id: \"Status\",\n Header: \"Status\",\n accessor: \"statusId\",\n Filter: Cr.Status.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerName\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n disableFilters: true,\n },\n {\n id: \"Custom type\",\n Header: \"Custom Type\",\n accessor: \"customType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n Header: \"Group\",\n id: \"Group\",\n accessor: \"group\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n id: \"Estimate $\",\n Header: \"Estimate $\",\n accessor: \"estimateDollars\",\n disableFilters: true,\n aggregate: \"sum\",\n dataType: \"currency\",\n format: { number: { decimals: 0 } },\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.estimateDollars) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n return ;\n },\n },\n {\n id: \"Bill $\",\n Header: \"Bill $\",\n accessor: \"billDollars\",\n disableFilters: true,\n dataType: \"currency\",\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else {\n return row.subRows.reduce(calcRow, total);\n }\n return parseFloat(row.original.billDollars) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n\n {\n Header: \"Billable %\",\n id: \"Billable %\",\n accessor: (values) => {\n return (\n (values.billDollars /\n (values.billDollars + values.nonbillDollars)) *\n 100.0\n ).toFixed(2);\n },\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n disableFilters: true,\n Cell: ({ value }) => ,\n Aggregated: ({ row }) => {\n let total = 0;\n let bill = 0;\n row.leafRows.forEach((leaf) => {\n total =\n total + leaf.original.billDollars + leaf.original.nonbillDollars;\n bill = bill + leaf.original.billDollars;\n });\n return (\n \n );\n },\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return {\n bill: parseFloat(row.original.billDollars) + total.bill,\n nonbill: parseFloat(row.original.nonbillDollars) + total.nonbill,\n };\n };\n\n const total = rows.reduce(calcRow, { nonbill: 0, bill: 0 });\n\n return (\n \n );\n },\n },\n {\n id: \"N/B $\",\n Header: \"N/B $\",\n accessor: \"nonbillDollars\",\n disableFilters: true,\n dataType: \"currency\",\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.nonbillDollars) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n {\n id: \"Bill Hr\",\n Header: \"Bill Hr\",\n accessor: \"billHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.billHours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"N/B Hr\",\n Header: \"N/B Hr\",\n accessor: \"nonbillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.nonbillHours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Under Budget?\",\n Header: \"Under Budget?\",\n accessor: \"underBudget\",\n format: {\n alignment: {\n horizontal: \"center\",\n },\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Aggregated: ({ row, column }) => {\n let total = 0;\n let under = 0;\n row.leafRows.forEach((leaf) => {\n total++;\n if (leaf.values[column.id] === \"Yes\") under++;\n });\n return (\n \n );\n },\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n\n if (row.original.underBudget == \"Yes\")\n return { under: total.under + 1, total: total.total + 1 };\n else return { under: total.under, total: total.total + 1 };\n };\n\n const total = rows.reduce(calcRow, { under: 0, total: 0 });\n\n return (\n \n );\n },\n },\n {\n id: \"Flat Gain $\",\n Header: \"Flat Gain $\",\n accessor: \"flatGain\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.flatGain) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n {\n id: \"Flat Loss $\",\n Header: \"Flat Loss $\",\n accessor: \"flatLoss\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.flatLoss) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n {\n id: \"N/B Flip Gain $\",\n Header: \"N/B Flip Gain $\",\n accessor: \"nbFlipGain\",\n disableFilters: true,\n dataType: \"currency\",\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.nbFlipGain) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n );\n}\n\nfunction NbReasons({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Group\",\n id: \"Group\",\n accessor: \"group\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Reason\",\n id: \"Reason\",\n accessor: \"nonbillReason\",\n Filter: Time.BillableOverrideReason.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => (\n \n ),\n },\n {\n Header: \"User\",\n id: \"User\",\n accessor: \"userId\",\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n Filter: SelectColumnFilter,\n },\n {\n id: \"Dollars\",\n Header: \"Dollars\",\n accessor: \"dollars\",\n disableFilters: true,\n dataType: \"currency\",\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.dollars) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n {\n id: \"Hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n );\n}\n\nfunction Summary({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n Header: \"Group\",\n id: \"Group\",\n accessor: \"group\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"# Pr/Crs\",\n id: \"# Pr/Crs\",\n accessor: \"projectCount\",\n aggregate: \"sum\",\n dataType: \"number\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.projectCount) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Billable Dollars\",\n Header: \"Billable Dollars\",\n accessor: \"billDollars\",\n disableFilters: true,\n dataType: \"currency\",\n aggregate: \"sum\",\n Cell: ({ value }) => ,\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.billDollars) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n {\n Header: \"Billable %\",\n id: \"Billable %\",\n accessor: \"billableRatio\",\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n disableFilters: true,\n Cell: ({ value }) => ,\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return {\n bill: parseFloat(row.original.billDollars) + total.bill,\n nonbill: parseFloat(row.original.nonbillDollars) + total.nonbill,\n };\n };\n\n const total = rows.reduce(calcRow, { nonbill: 0, bill: 0 });\n\n return (\n \n );\n },\n },\n {\n id: \"Bill Dollar Avg\",\n Header: \"Bill Dollar Avg\",\n accessor: \"billDollarAverage\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n Cell: ({ value }) => ,\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return {\n bill: parseFloat(row.original.billDollars) + total.bill,\n count: row.original.projectCount + total.count,\n };\n };\n\n const total = rows.reduce(calcRow, { count: 0, bill: 0 });\n\n return (\n \n );\n },\n },\n {\n id: \"N/B Dollar Avg\",\n Header: \"N/B Dollar Avg\",\n accessor: \"nonbillDollarAverage\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n Cell: ({ value }) => ,\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return {\n nonbill: parseFloat(row.original.nonbillDollars) + total.nonbill,\n count: row.original.projectCount + total.count,\n };\n };\n\n const total = rows.reduce(calcRow, { count: 0, nonbill: 0 });\n\n return (\n \n );\n },\n },\n {\n id: \"% with Estimates\",\n Header: \"% with Estimates\",\n accessor: \"percentWithEstimates\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n Cell: ({ value }) => ,\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return {\n estimates:\n parseFloat(row.original.projectCountE) + total.estimates,\n noEstimates:\n parseFloat(row.original.projectCountN) + total.noEstimates,\n };\n };\n\n const total = rows.reduce(calcRow, { estimates: 0, noEstimates: 0 });\n\n return (\n \n );\n },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n );\n}\n\nfunction CustomAnalysisOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"year\"),\n endDate: ed = moment().endOf(\"year\"),\n}) {\n const {\n options = {\n startDate: sd,\n endDate: ed,\n modules: [],\n modulesExclude: false,\n nbReasons: [],\n nbReasonsExclude: false,\n includeOpen: false,\n },\n } = job;\n const { handleSubmit, control, watch } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n startDate: \"\",\n endDate: \"\",\n modules: [],\n modulesExclude: false,\n nbReasons: [],\n nbReasonsExclude: false,\n includeOpen: false,\n ...options,\n },\n });\n\n const endDate = watch(\"endDate\");\n const startDate = watch(\"startDate\");\n\n return (\n {\n submitJob({\n ...options,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: `${\n options?.userId ? options?.userId + \" \" : \"\"\n } from ${_date.display(options.startDate)} to ${_date.display(\n options.endDate,\n )}`,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n
    \n
    Modules
    \n
    \n (\n onChange(e.target.checked)}\n />\n )}\n />\n
    \n
    \n \n
    \n \n \n (\n \n )}\n />\n \n \n \n \n
    \n
    N/B Reasons
    \n
    \n (\n onChange(e.target.checked)}\n />\n )}\n />\n
    \n
    \n \n
    \n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo, useState } from \"react\";\nimport {\n Alert,\n Button,\n ButtonGroup,\n Col,\n Form,\n Row,\n ToggleButton,\n} from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport { CurrencyFormatter, NumberFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportHostingYearBreakdown() {\n const { isAdmin, hostingAgreementAccess } = useSelector(\n (state) => state.auth,\n );\n\n if (\n !(\n hostingAgreementAccess === \"V\" ||\n hostingAgreementAccess === \"M\" ||\n isAdmin\n )\n )\n return (\n \n );\n // eslint-disable-next-line\n\n return (\n \n );\n}\n\nfunction MonthlyTotal({ rows, ptr, showDollars, showHours, showCrCount }) {\n const calcRow = (total, row) => {\n if (row.isGrouped) {\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n } else {\n if (ptr === 13) {\n let sum = [0, 0, 0];\n for (let p = 1; p < 13; p++) {\n let mm = String(p);\n if (p < 10) mm = \"0\" + p;\n\n sum[0] = sum[0] + parseFloat(row.original[\"billed\" + mm]);\n sum[1] = sum[1] + parseFloat(row.original[\"hours\" + mm]);\n sum[2] = sum[2] + parseFloat(row.original[\"crs\" + mm]);\n }\n total[0] = total[0] + sum[0];\n total[1] = total[1] + sum[1];\n total[2] = total[2] + sum[2];\n return total;\n } else {\n let mm = String(ptr);\n if (ptr < 10) mm = \"0\" + ptr;\n total[0] = total[0] + parseFloat(row.original[\"billed\" + mm]);\n total[1] = total[1] + parseFloat(row.original[\"hours\" + mm]);\n total[2] = total[2] + parseFloat(row.original[\"crs\" + mm]);\n return total;\n }\n }\n };\n\n const x = rows.reduce(calcRow, [0, 0, 0]);\n const billed = x[0];\n const hours = x[1];\n const crs = x[2];\n\n return (\n <>\n {showDollars ? (\n \n \n \n ) : null}\n {showHours ? (\n \n \n \n ) : null}\n {showCrCount ? (\n \n \n \n ) : null}\n \n );\n}\n\nfunction MonthCell({ row, showDollars, showHours, showCrCount, ptr }) {\n let output = [0, 0, 0];\n\n for (let p = 1; p < 13; p++) {\n if (p === ptr || ptr === 13) {\n let mm = String(p);\n if (p < 10) mm = \"0\" + mm;\n output[0] = output[0] + row[\"billed\" + mm];\n output[1] = output[1] + row[\"hours\" + mm];\n output[2] = output[2] + row[\"crs\" + mm];\n }\n }\n\n return (\n <>\n {showDollars ? (\n
    \n  \n \n
    \n ) : null}\n {showHours ? (\n
    \n  \n \n
    \n ) : null}\n {showCrCount ? (\n
    \n  \n \n
    \n ) : null}\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showCrCount, setShowCrCount] = useState(true);\n const [showHours, setShowHours] = useState(true);\n const [showDollars, setShowDollars] = useState(true);\n\n const data = useMemo(() => job?.output?.customer_and_proj || [], [job]);\n\n const columns = useMemo(() => {\n const output = [\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Product\",\n Header: \"Product\",\n accessor: \"product\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Jan\",\n Header: \"Jan\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Feb\",\n Header: \"Feb\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Mar\",\n Header: \"Mar\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Apr\",\n Header: \"Apr\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"May\",\n Header: \"May\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Jun\",\n Header: \"Jun\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Jul\",\n Header: \"Jul\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Aug\",\n Header: \"Aug\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Sep\",\n Header: \"Sep\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Oct\",\n Header: \"Oct\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Nov\",\n Header: \"Nov\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Dec\",\n Header: \"Dec\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Total\",\n Header: \"Total\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ row }) => (\n \n ),\n Footer: ({ rows }) => (\n \n ),\n },\n ];\n\n return output;\n }, [showCrCount, showDollars, showHours]);\n\n return (\n <>\n \n \n \n setShowDollars(!showDollars)}\n >\n Dollars\n \n setShowHours(!showHours)}\n >\n Hours\n \n setShowCrCount(!showCrCount)}\n >\n CR Count\n \n \n \n \n \n  \n \n \n \n \n \n \n \n );\n}\n\nfunction CustomerBilledByProductOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"year\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n customerId: null,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n ...options,\n },\n });\n\n const customerId = watch(\"customerId\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n\n return (\n {\n let desc =\n customerId !== \"\" && customerId !== null\n ? \"Customer Billed By Product for \" +\n useCustomerValue?.customer?.name\n : \"Customer Billed By Product for \" +\n _date.stamp(options.startDate).substring(0, 4);\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n year: _date.stamp(options.startDate).substring(0, 4),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n\n \n  \n \n\n \n \n (\n \n )}\n />\n \n \n\n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportCustomerTime() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.crs || [], [job]);\n\n const columns = useMemo(\n () => [\n {\n id: \"Cr Owner\",\n Header: \"Cr Owner\",\n accessor: \"crOwner\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Project Owner\",\n Header: \"Project Owner\",\n accessor: \"prOwner\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrCount,\n },\n {\n Header: \"Cr Group\",\n id: \"Cr Group\",\n accessor: \"crGroup\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Project Group\",\n id: \"Project Group\",\n accessor: \"projectGroup\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Cr Status\",\n id: \"Cr Status\",\n accessor: \"crStatus\",\n Filter: Cr.Status.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Project Status\",\n id: \"Project Status\",\n accessor: \"projectStatus\",\n Filter: Project.Status.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Cr Type\",\n id: \"Cr Type\",\n accessor: \"crType\",\n Filter: Project.Type.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Project Type\",\n id: \"Project Type\",\n accessor: \"projectType\",\n Filter: Project.Type.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n Header: \"Project Priority\",\n id: \"Project Priority\",\n accessor: \"projectPriority\",\n Filter: Project.Priority.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Folder\",\n Header: \"Folder\",\n accessor: \"folder\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Project\",\n Header: \"Project\",\n accessor: \"project\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Cr\",\n Header: \"Cr\",\n accessor: \"cr\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Contact\",\n Header: \"Contact\",\n accessor: \"contactName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Cr Create Date\",\n Header: \"Cr Create Date\",\n accessor: \"crCreateDate\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrEmpty,\n Aggregated: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Cr Last Updated Date\",\n Header: \"Cr Last Updated\",\n accessor: \"crLastUpdatedDate\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrEmpty,\n Aggregated: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Cr Last Updated User\",\n Header: \"Cr Last Updated User\",\n accessor: \"crLastUpdatedUser\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Cr Synopsis\",\n Header: \"Cr Synopsis\",\n accessor: \"crSynopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Project Synopsis\",\n Header: \"Project Synopsis\",\n accessor: \"prSynopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Cr Description\",\n Header: \"Cr Description\",\n accessor: \"crDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Project Description\",\n Header: \"Project Description\",\n accessor: \"prDescription\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Fix Notes\",\n Header: \"Fix notes\",\n accessor: \"fixNotes\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n ],\n [],\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n\nfunction CustomerCrsOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"month\"),\n endDate: ed = moment().endOf(\"month\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n customerId: \"\",\n startDate: \"\",\n endDate: \"\",\n ...options,\n },\n });\n\n const endDate = watch(\"endDate\");\n const startDate = watch(\"startDate\");\n const customerId = watch(\"customerId\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n\n return (\n {\n let desc =\n \"from \" +\n _date.display(options.startDate) +\n \" to \" +\n _date.display(options.endDate);\n\n desc = useCustomerValue?.customer?.name + \" \" + desc;\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n );\n}\n\nfunction allSameOrCount(leafValues) {\n return _.uniq(leafValues).length === 1\n ? leafValues[0]\n : _.uniq(leafValues).length + \"*\";\n}\n\nfunction allSameOrEmpty(leafValues) {\n return _.uniq(leafValues).length === 1 ? leafValues[0] || \"\" : \"\";\n}\n","import React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row, Tab, Tabs } from \"react-bootstrap\";\nimport { useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport Page from \"../../common/pages/Page\";\n//import { CurrencyFormatter, PercentFormatter } from \"../../common/formatters\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportCustomerProducts() {\n const { isManager, isChampion, isAdmin } = useSelector((state) => state.auth);\n\n if (!(isManager || isChampion || isAdmin))\n return (\n \n );\n // eslint-disable-next-line\n\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const products = useMemo(() => job?.output?.products || [], [job]);\n const details = useMemo(() => job?.output?.details || [], [job]);\n const busTypes = useMemo(() => job?.output?.busTypes || [], [job]);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n );\n //initialGroupBy={groupBy}\n}\n\nfunction Detail({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Business Type\",\n Header: \"Business Type\",\n accessor: \"busType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Product\",\n Header: \"Product\",\n accessor: \"product\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"License Type\",\n Header: \"License Type\",\n accessor: \"licenseType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"License Count\",\n Header: \"License Count\",\n accessor: \"licenseCount\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { number: { decimals: 0 } },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n );\n}\n\nfunction Products({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n id: \"Product\",\n Header: \"Product\",\n accessor: \"product\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"License Type\",\n Header: \"License Type\",\n accessor: \"licenseType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"License Count\",\n Header: \"License Count\",\n accessor: \"licenseCount\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { number: { decimals: 0 } },\n },\n {\n id: \"Customer Count\",\n Header: \"Customer Count\",\n accessor: \"customerCount\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { number: { decimals: 0 } },\n },\n {\n id: \"Customer Percent\",\n Header: \"Customer Percent\",\n accessor: \"customerPercent\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { number: { decimals: 2 } },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n );\n}\n\nfunction BusTypes({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n id: \"Business Type\",\n Header: \"Business Type\",\n accessor: \"busType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Customer Count\",\n Header: \"Customer Count\",\n accessor: \"customerCount\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { number: { decimals: 0 } },\n },\n {\n id: \"Customer Percent\",\n Header: \"Customer Percent\",\n accessor: \"customerPercent\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { number: { decimals: 2 } },\n },\n ],\n [],\n );\n\n return (\n \n \n \n \n \n );\n}\n\nfunction CustomerProductsOptions({ submitJob, job }) {\n const { options = {} } = job;\n const { handleSubmit } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n ...options,\n },\n });\n\n return (\n {\n submitJob({\n ...options,\n });\n })}\n >\n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportCustomerStatement() {\n const { isAdmin, isChampion } = useSelector((state) => state.auth);\n\n if (!(isChampion || isAdmin))\n return (\n \n );\n // eslint-disable-next-line\n\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.invoices || [], [job]);\n\n const columns = useMemo(\n () => [\n {\n id: \"Invoice Number\",\n Header: \"Invoice #\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n },\n {\n id: \"Aging Current\",\n Header: \"Current\",\n accessor: (inv) => (inv?.agingBucketPtr === 1 ? inv.balance : \"\"),\n disableFilters: true,\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return row?.original?.agingBucketPtr === 1\n ? parseFloat(row.original.balance) + total\n : parseFloat(total) + 0;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n {\n id: \"Aging 1-30\",\n Header: \"1-30\",\n accessor: (inv) => (inv?.agingBucketPtr === 2 ? inv.balance : \"\"),\n disableFilters: true,\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return row?.original?.agingBucketPtr === 2\n ? parseFloat(row.original.balance) + total\n : parseFloat(total) + 0;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n {\n id: \"Aging 31-60\",\n Header: \"31-60\",\n accessor: (inv) => (inv?.agingBucketPtr === 3 ? inv.balance : \"\"),\n disableFilters: true,\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return row?.original?.agingBucketPtr === 3\n ? parseFloat(row.original.balance) + total\n : parseFloat(total) + 0;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n {\n id: \"Aging 61-90\",\n Header: \"61-90\",\n accessor: (inv) => (inv?.agingBucketPtr === 4 ? inv.balance : \"\"),\n disableFilters: true,\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return row?.original?.agingBucketPtr === 4\n ? parseFloat(row.original.balance) + total\n : parseFloat(total) + 0;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n {\n id: \"Aging 91-120\",\n Header: \"91-120\",\n accessor: (inv) => (inv?.agingBucketPtr === 5 ? inv.balance : \"\"),\n disableFilters: true,\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return row?.original?.agingBucketPtr === 5\n ? parseFloat(row.original.balance) + total\n : parseFloat(total) + 0;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n {\n id: \"Over 120\",\n Header: \"Over 120\",\n accessor: (inv) => (inv?.agingBucketPtr === 6 ? inv.balance : \"\"),\n disableFilters: true,\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return row?.original?.agingBucketPtr === 6\n ? parseFloat(row.original.balance) + total\n : parseFloat(total) + 0;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"balance\",\n disableFilters: true,\n dataType: \"currency\",\n aggregate: \"sum\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => (\n \n ),\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.balance) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return (\n
    \n \n
    \n );\n },\n },\n ],\n [],\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n\n/*\n\"Aging 31-60 \",\n \"Aging 61-90\",\n \"Aging 91-120\",\n \"Aging Over 120\",\n*/\n\nfunction CustomerStatementOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"month\"),\n endDate: ed = moment().endOf(\"month\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n customerId: \"\",\n startDate: \"\",\n endDate: \"\",\n hiddenTime: false,\n projectType: \"\",\n ...options,\n },\n });\n\n const customerId = watch(\"customerId\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n\n return (\n {\n let desc = \"Statement for \" + useCustomerValue?.customer?.name;\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n hiddenTime: _.isNil(options.hiddenTime) ? false : options.hiddenTime,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportCustomerTime() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState(null);\n const data = useMemo(() => job?.output?.time || [], [job]);\n\n const clickedBillingNote = useCallback(\n (timeId) => {\n setShowTimeId(timeId);\n setShowModifyModal(true);\n },\n [setShowTimeId, setShowModifyModal],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"User\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Project\",\n Header: \"Project\",\n accessor: (row) => (row.projectId === 0 ? \"N/A\" : row.projectId),\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: (row) => (row.crId === 0 ? \"N/A\" : row.crId),\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Contact\",\n Header: \"Contact\",\n accessor: \"contactName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Date\",\n Header: \"Date\",\n accessor: \"date\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: allSameOrEmpty,\n Aggregated: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n },\n {\n id: \"Billing note\",\n Header: \"Billing note\",\n accessor: \"billingNote\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: allSameOrCount,\n\n Cell: ({ value, row }) => {\n return (\n \n );\n },\n },\n {\n id: \"Invoice number\",\n Header: \"Invoice #\",\n accessor: \"invoiceNumber\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n aggregate: allSameOrCount,\n },\n {\n id: \"Invoice project type\",\n Header: \"Invoice Project Type\",\n accessor: \"invoiceTypeDescription\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n aggregate: allSameOrCount,\n },\n {\n id: \"Hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"total\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n ],\n [clickedBillingNote],\n );\n\n return (\n <>\n setShowModifyModal(false)}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n \n \n \n \n );\n}\n\nfunction CustomerTimeOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"month\"),\n endDate: ed = moment().endOf(\"month\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n customerId: \"\",\n startDate: \"\",\n endDate: \"\",\n hiddenTime: false,\n projectType: \"\",\n ...options,\n },\n });\n\n const endDate = watch(\"endDate\");\n const startDate = watch(\"startDate\");\n const customerId = watch(\"customerId\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n\n return (\n {\n let desc =\n \"from \" +\n _date.display(options.startDate) +\n \" to \" +\n _date.display(options.endDate);\n\n if (_.isNil(customerId) || customerId === \"\") {\n desc = \"All customers \" + desc;\n } else {\n desc = useCustomerValue?.customer?.name + \" \" + desc;\n }\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n hiddenTime: _.isNil(options.hiddenTime) ? false : options.hiddenTime,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n \n \n \n \n \n \n );\n}\n\nfunction allSameOrCount(leafValues) {\n return _.uniq(leafValues).length === 1\n ? leafValues[0]\n : _.uniq(leafValues).length + \"*\";\n}\n\nfunction allSameOrEmpty(leafValues) {\n return _.uniq(leafValues).length === 1 ? leafValues[0] || \"\" : \"\";\n}\n","import moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Col, Form, ProgressBar, Row } from \"react-bootstrap\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport { HoursFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n filterLessThan,\n SelectColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportDailyBreakdown() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const { data, maxHours } = useMemo(() => {\n const maxHours = job?.output?.data.reduce((max, r) => {\n const total = r.nonbillHours + r.billHours;\n if (total > max) return total;\n return max;\n }, 0);\n return {\n data: job?.output?.data || [],\n maxHours: maxHours,\n };\n }, [job]);\n const columns = useMemo(\n () => [\n {\n id: \"user\",\n Header: \"User\",\n accessor: \"userId\",\n aggregate: \"uniqueCount\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: \"date\",\n disableFilters: true,\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"week start date\",\n Header: \"Week Start\",\n accessor: \"weekStartDate\",\n disableFilters: true,\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"day\",\n Header: \"Day\",\n accessor: ({ date }) => moment(_date.fromStamp(date)).format(\"dddd\"),\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"nonbillHours (Hours)\",\n Header: \"Non-Billable\",\n accessor: \"nonbillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"billHours\",\n Header: \"Billable (Hours)\",\n accessor: \"billHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"billableDollars\",\n Header: \"Billable (Dollars)\",\n accessor: \"billableDollars\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"total hours\",\n Header: \"Hours\",\n dataType: \"number\",\n disableFilters: true,\n format: { number: { decimals: 2 } },\n accessor: (r) => {\n return r.nonbillHours + r.billHours;\n },\n aggregate: \"sum\",\n Aggregated: ({ row }) => {\n let total = 0;\n row.leafRows.forEach((leaf) => {\n total =\n total + leaf.original.nonbillHours + leaf.original.billHours;\n });\n return ;\n },\n },\n {\n id: \"hours\",\n Header: \"Hour Breakdown\",\n filter: filterLessThan,\n Filter: SliderColumnFilter,\n accessor: (r) => {\n return r.nonbillHours + r.billHours;\n },\n Aggregated: () => {\n return <>;\n },\n Cell: ({ row: { original: r }, value }) => {\n const hoursInADay = 8.0;\n return (\n \n \n \n \n \n \n \n \n \n \n \n {value.toFixed(2)}\n \n \n );\n },\n },\n ],\n [maxHours],\n );\n\n return (\n \n \n \n moment(_date.fromStamp(date)).week() % 2 === 0\n ? { className: \"table-primary\" }\n : {}\n }\n />\n \n \n );\n}\n\n// This is a custom filter UI that uses a\n// slider to set the filter value between a column's\n// min and max values\nexport function SliderColumnFilter({\n column: { filterValue, setFilter, preFilteredRows, id },\n}) {\n // Calculate the min and max\n // using the preFilteredRows\n\n const [min, max] = React.useMemo(() => {\n let min = preFilteredRows.length ? preFilteredRows[0].values[id] : 0;\n let max = preFilteredRows.length ? preFilteredRows[0].values[id] : 0;\n preFilteredRows.forEach((row) => {\n min = Math.floor(Math.min(row.values[id], min));\n max = Math.ceil(Math.max(row.values[id], max));\n });\n return [min || 0, max || 0];\n }, [id, preFilteredRows]);\n\n return (\n <>\n \n ≤{parseFloat(filterValue || max).toFixed(2)}\n \n {\n setFilter(parseFloat(e.target.value));\n }}\n />\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportEmployeeByMeasuress() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.users || [], [job]);\n const columns = useMemo(\n () => [\n {\n id: \"User\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Regular billable hours\",\n Header: \"Regular Billed Hours\",\n accessor: \"regBillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Regular nonbill hours\",\n Header: \"Regular Non-Bill Hours\",\n accessor: \"regNonbillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Regular total hours\",\n Header: \"Total Regular Hours\",\n accessor: \"regTotalHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"BAC billable hours\",\n Header: \"BAC Billed Hours\",\n accessor: \"bacBillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"BAC nonbill hours\",\n Header: \"BAC Non-Bill Hours\",\n accessor: \"bacNonbillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"BAC total hours\",\n Header: \"Total BAC Hours\",\n accessor: \"bacTotalHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Vacation hours\",\n Header: \"Vacation Hours\",\n accessor: \"vacationHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Float hours\",\n Header: \"Float Hours\",\n accessor: \"floatHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Sick hours\",\n Header: \"Sick Hours\",\n accessor: \"sickHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Hours needed\",\n Header: \"Hours Needed\",\n accessor: \"hoursNeeded\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Billed dollars\",\n Header: \"Billed Dollars\",\n accessor: \"billedDollars\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"BAC billed dollars\",\n Header: \"BAC Billed Dollars\",\n accessor: \"bacDollars\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n },\n ],\n [],\n );\n\n return (\n <>\n \n {\"Mininimum Work hours: \"}\n \n {job?.output?.minWorkHours}\n \n {\"Holiday hours: \"}\n \n {job?.output?.holidayHours}\n \n \n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useMemo, useState } from \"react\";\nimport {\n Alert,\n Button,\n ButtonGroup,\n Col,\n Form,\n Row,\n ToggleButton,\n} from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Table from \"../../common/tables/Table\";\nimport Customer from \"../../customers\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportHostingYearBreakdown() {\n const { isAdmin, hostingAgreementAccess } = useSelector(\n (state) => state.auth,\n );\n\n if (\n !(\n hostingAgreementAccess === \"V\" ||\n hostingAgreementAccess === \"M\" ||\n isAdmin\n )\n )\n return (\n \n );\n // eslint-disable-next-line\n\n return (\n \n );\n}\n\nfunction RevenueTotal({\n rows,\n expectedStart,\n ptr,\n reservationCosts,\n planCosts,\n diskCosts,\n serverCosts,\n otherCosts,\n showCosts,\n}) {\n const calcRow = (total, row) => {\n if (row.isGrouped) {\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n } else {\n if (ptr === 13) {\n let sum = 0;\n for (let p = 1; p < 13; p++) {\n sum = sum + parseFloat(row.original[\"revenue\" + p]);\n }\n return sum + total;\n } else {\n return parseFloat(row.original[\"revenue\" + ptr]) + total;\n }\n }\n };\n\n const total = rows.reduce(calcRow, 0);\n\n let reservationCostSum = 0;\n let planCostSum = 0;\n let diskCostSum = 0;\n let serverCostSum = 0;\n let otherCostSum = 0;\n\n for (let p = 1; p < 13; p++) {\n if (ptr === 13 || ptr === p) {\n reservationCostSum = reservationCostSum + reservationCosts[p - 1];\n planCostSum = planCostSum + planCosts[p - 1];\n diskCostSum = diskCostSum + diskCosts[p - 1];\n serverCostSum = serverCostSum + serverCosts[p - 1];\n otherCostSum = otherCostSum + otherCosts[p - 1];\n }\n }\n\n if (showCosts) {\n return (\n <>\n \n \n {ptr >= expectedStart ? \"*\" : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n } else {\n return ;\n }\n}\n\nfunction revenueCell(value, expectedStart, ptr) {\n return (\n
    \n \n {ptr >= expectedStart ? \"*\" : null}\n
    \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showCosts, setShowCosts] = useState(true);\n const data = useMemo(() => job?.output?.customers || [], [job]);\n const expectedStart = job?.output?.expectedStart;\n const reservationCosts = useMemo(\n () => (job?.output?.reservationCosts ? job?.output?.reservationCosts : []),\n [job?.output?.reservationCosts],\n );\n const planCosts = useMemo(\n () => (job?.output?.savingsPlanCosts ? job?.output?.savingsPlanCosts : []),\n [job?.output?.savingsPlanCosts],\n );\n const diskCosts = useMemo(\n () =>\n job?.output?.serverDiskSpaceCosts\n ? job?.output?.serverDiskSpaceCosts\n : [],\n [job?.output?.serverDiskSpaceCosts],\n );\n const serverCosts = useMemo(\n () =>\n job?.output?.serverHostingCosts ? job?.output?.serverHostingCosts : [],\n [job?.output?.serverHostingCosts],\n );\n const otherCosts = useMemo(\n () => (job?.output?.otherCosts ? job?.output?.otherCosts : []),\n [job?.output?.otherCosts],\n );\n\n const columns = useMemo(() => {\n const output = [\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Jan\",\n Header: \"Jan\",\n accessor: \"revenue1\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 1),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Feb\",\n Header: \"Feb\",\n accessor: \"revenue2\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 2),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Mar\",\n Header: \"Mar\",\n accessor: \"revenue3\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 3),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Apr\",\n Header: \"Apr\",\n accessor: \"revenue4\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 4),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"May\",\n Header: \"May\",\n accessor: \"revenue5\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 5),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Jun\",\n Header: \"Jun\",\n accessor: \"revenue6\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 6),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Jul\",\n Header: \"Jul\",\n accessor: \"revenue7\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 7),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Aug\",\n Header: \"Aug\",\n accessor: \"revenue8\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 8),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Sep\",\n Header: \"Sep\",\n accessor: \"revenue9\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 9),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Oct\",\n Header: \"Oct\",\n accessor: \"revenue10\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 10),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Nov\",\n Header: \"Nov\",\n accessor: \"revenue11\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 11),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Dec\",\n Header: \"Dec\",\n accessor: \"revenue12\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 12),\n Footer: ({ rows }) => (\n \n ),\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"revenue13\",\n format: { alignment: { horizontal: \"right\" } },\n Cell: ({ value }) => revenueCell(value, expectedStart, 13),\n Footer: ({ rows }) => (\n \n ),\n },\n ];\n\n return output;\n }, [\n diskCosts,\n expectedStart,\n otherCosts,\n planCosts,\n reservationCosts,\n serverCosts,\n showCosts,\n ]);\n\n return (\n <>\n \n \n \n setShowCosts(e.currentTarget.value === \"true\")}\n >\n Revenue and Costs\n \n setShowCosts(e.currentTarget.value !== \"false\")}\n >\n Revenue Only\n \n \n \n \n \n  \n \n \n \n \n \n \n \n );\n}\n\nfunction HostingYearBreakdownOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"year\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n customerId: null,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n ...options,\n },\n });\n\n const customerId = watch(\"customerId\");\n const useCustomerValue = Customer.useOne({ id: customerId });\n\n return (\n {\n let desc =\n customerId !== \"\" && customerId !== null\n ? \"Hosting year breakdown for \" + useCustomerValue?.customer?.name\n : \"Hosting year breakdown for \" +\n _date.stamp(options.startDate).substring(0, 4);\n submitJob({\n ...options,\n customerId: _.isNil(options.customerId) ? \"\" : options.customerId,\n year: _date.stamp(options.startDate).substring(0, 4),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n\n \n  \n \n\n \n \n (\n \n )}\n />\n \n \n\n \n \n \n \n \n \n );\n}\n","import moment from \"moment\";\nimport React, { useEffect } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nimport JobsTable from \"../../activity/jobs/JobsTable\";\nimport useJobs from \"../../activity/jobs/useJobs\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport Page from \"../../common/pages/Page\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportIndex() {\n const reportJobFunctions = [\n \"Activity\",\n \"ARYearlyCustomerSummary\",\n \"CustomerTime\",\n \"CodeChanges\",\n \"ContractorWork\",\n \"CustomAnalysis\",\n \"CustomerBilledByProduct\",\n \"CustomerCrs\",\n \"CustomerStatement\",\n \"DailyBreakdown\",\n \"EmployeeMeasures\",\n \"HostingYearBreakdown\",\n \"InternalTime\",\n \"NonbillableTime\",\n \"OutOfOffice\",\n \"Overtime\",\n \"PrCrTextSearch\",\n \"TimeOnHold\",\n \"UnbilledTime\",\n \"WorkSummary\",\n \"QaReviewers\",\n \"CustomerProducts\",\n ];\n\n const {\n jobs,\n loading: jobsLoading,\n getMany,\n lastUpdate,\n } = useJobs({\n blocked: true,\n });\n\n useEffect(() => {\n getMany();\n }, [getMany]);\n return (\n }>\n \n \n \n reportJobFunctions.includes(j.functionName),\n )}\n isLoading={jobsLoading}\n onRefresh={() => {\n getMany();\n }}\n layout={[\"dateTime\", \"type\", \"description\", \"status\"]}\n refreshLabel={\"Fetched \" + moment(lastUpdate).fromNow() + \" \\u27F3\"}\n />\n \n \n \n );\n}\n\nfunction IndexNavSidebar() {\n return (\n \n Activity\n \n AR Yearly Customer Summary\n \n \n Billable Additional Compensation\n \n Code Changes\n \n Contractor Work Summary\n \n \n Custom Analysis\n \n \n Customer Billed By Product\n \n Customer Crs\n \n Customer Statement\n \n Customer Time\n \n Daily Breakdown\n \n \n Employee by Measures\n \n \n Hosting Year Breakdown\n \n Internal Time\n \n Module Summary\n \n \n Nonbillable Time\n \n Out of Office\n \n Project/CR Text Search\n \n Time on Hold\n Unbilled Time\n Work Summary\n QA Reviewers\n \n Customer Products\n \n \n );\n}\n","import React from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportInternalTime() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n return (\n \n \n \n \n \n );\n}\n\nfunction Options(props) {\n return (\n \n \n \n (\n onChange(e.target.checked)}\n />\n )}\n />\n \n \n \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportModuleSummary() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.crs || [], [job]);\n\n const columns = useMemo(\n () => [\n {\n id: \"Group\",\n Header: \"Group\",\n accessor: \"groupId\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Module\",\n Header: \"Module\",\n accessor: \"moduleId\",\n Filter: Cr.Module.TableFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n Cell: ({ value }) => ,\n },\n {\n id: \"CR Type\",\n Header: \"Cr Type\",\n accessor: \"crType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: \"crId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Create Date\",\n Header: \"Create Date\",\n accessor: \"createDate\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Average Number of Users\",\n Header: \"Avg # Users\",\n accessor: \"numberOfUsers\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 0 } },\n Aggregated: ({ row }) => {\n const calcRow = (total, row1) => {\n if (row1.isGrouped)\n if (row1.isExpanded) return total;\n else return row1.subRows.reduce(calcRow, total);\n const newCrs = total.crs + 1;\n const newUsers = total.users + row1.original.numberOfUsers;\n return { crs: newCrs, users: newUsers };\n };\n\n const total = row.subRows.reduce(calcRow, { crs: 0, users: 0 });\n const avg = total.users / total.crs;\n return
    {avg.toFixed(2)}
    ;\n },\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n const newCrs = total.crs + 1;\n const newUsers = total.users + row.original.numberOfUsers;\n return { crs: newCrs, users: newUsers };\n };\n\n const total = rows.reduce(calcRow, { crs: 0, users: 0 });\n const avg = total.users / total.crs;\n return
    {avg.toFixed(2)}
    ;\n },\n },\n {\n id: \"Total Hours\",\n Header: \"Hours\",\n accessor: \"totalHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.totalHours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Billable Hours\",\n Header: \"Billable Hours\",\n accessor: \"billHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.billHours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Nonbill Hours\",\n Header: \"Nonbill Hours\",\n accessor: \"nonbillHours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.nonbillHours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"total\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n ],\n [],\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n\nfunction ModuleSummaryOptions({\n submitJob,\n job,\n startDate: sd = moment().startOf(\"month\"),\n endDate: ed = moment().endOf(\"month\"),\n}) {\n const loggedInUser = useSelector((state) => state.auth.user);\n const {\n options = {\n userId: loggedInUser,\n startDate: sd,\n endDate: ed,\n },\n } = job;\n const {\n handleSubmit,\n control,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n startDate: \"\",\n endDate: \"\",\n ...options,\n },\n });\n\n const endDate = watch(\"endDate\");\n const startDate = watch(\"startDate\");\n\n return (\n {\n let desc =\n \"from \" +\n _date.display(options.startDate) +\n \" to \" +\n _date.display(options.endDate);\n\n submitJob({\n ...options,\n modules: options.modules,\n startDate: _date.stamp(options.startDate),\n endDate: _date.stamp(options.endDate),\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nconst layout = [\n \"Team\",\n \"User\",\n \"Reason\",\n \"CR\",\n \"Billing note\",\n \"User\",\n \"Owner\",\n \"Date\",\n \"Hours\",\n \"Lost Revenue\",\n];\n\nconst groupBy = [\"Team\", \"User\", \"Reason\"];\n\nexport default function ReportNonbillableTime() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState(null);\n const data = useMemo(() => job?.output?.time || [], [job]);\n\n const clickedBillingNote = useCallback(\n (timeId) => {\n setShowTimeId(timeId);\n setShowModifyModal(true);\n },\n [setShowTimeId, setShowModifyModal],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"User\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: (row) => (row.crId === 0 ? \"N/A\" : row.crId),\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Date\",\n Header: \"Date\",\n accessor: \"date\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Billing note\",\n Header: \"Billing note\",\n accessor: \"billingNote\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value, row }) => {\n return (\n \n );\n },\n },\n {\n id: \"Team\",\n Header: \"Team\",\n accessor: \"team\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Reason\",\n Header: \"Reason\",\n accessor: \"reason\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Project Type\",\n Header: \"Project Type\",\n accessor: \"projectType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Rate\",\n Header: \"Rate\",\n accessor: \"rate\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Lost Revenue\",\n Header: \"Lost Revenue\",\n accessor: \"total\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n {\n id: \"Cr in Warranty\",\n Header: \"In Warranty?\",\n accessor: \"crInWarranty\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n ],\n [clickedBillingNote],\n );\n\n return (\n <>\n setShowModifyModal(false)}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n \n \n \n \n );\n}\n\nfunction NonbillableTimeOptions(props) {\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 );\n}\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportOutOfOffice() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n return (\n \n \n \n \n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Col, Form, Row, Tab, Tabs } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport AttachmentsTable from \"../../common/details/AttachmentsTable\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { _date } from \"../../common/functions/dates\";\nimport LoadingModal from \"../../common/modals/LoadingModal\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportOvertime() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const { output: { users = [] } = {} } = job;\n const formattedVersion = job?.output?.formattedVersion;\n const attachments = useMemo(() => job?.output?.attachments || [], [job]);\n const { summary, details } = useMemo(\n () =>\n users?.reduce(\n (usersData, user) => {\n const data = user.days.reduce((daysData, day) => {\n const data = {\n details: daysData.details.concat(\n day?.time?.map((t) => {\n return {\n ...t,\n userId: user.userId,\n date: day.date,\n totalHours: t.hours,\n };\n }),\n ),\n summary: daysData.summary.concat([\n { ...day, userId: user.userId, expanded: true },\n ]),\n };\n return data;\n }, usersData);\n return data;\n },\n { details: [], summary: [] },\n ) || [],\n [users],\n );\n if (isLoading) {\n return ;\n } else if (formattedVersion) {\n return (\n \n );\n } else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nfunction OvertimeOptions(props) {\n return (\n \n \n \n (\n \n )}\n />\n \n \n \n );\n}\n\nfunction Summary({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n id: \"user\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"count\",\n },\n {\n id: \"date\",\n Header: \"Date\",\n accessor: ({ date }) => _date.display(_date.fromStamp(date)),\n aggregate: \"uniqueCount\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value, row: { original } }) =>\n `${value} ${original.holidayDescription}`,\n },\n {\n id: \"bacHours\",\n Header: \"BAC Hours\",\n accessor: \"bacHours\",\n dataType: \"number\",\n format: {\n number: { decimals: 2 },\n },\n aggregate: \"sum\",\n\n Aggregated: ({ value, column: { getFormattedValue, format } }) => {\n const formattedValue = getFormattedValue(value, format);\n return {`${formattedValue}`};\n },\n },\n ],\n [],\n );\n return (\n {\n if (row.isGrouped) return { className: \"table-secondary\" };\n else return {};\n }}\n />\n );\n}\n","import moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { Alert, Button, Col, Form, Row } from \"react-bootstrap\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { Link } from \"react-router-dom\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport FieldInput from \"../../common/fields/FieldInput\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n DateRangeColumnFilter,\n filterDateRange,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\nimport Project from \"../../projects\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\n\nexport default function ReportPrCrTextSearch() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.results || [], [job]);\n\n const columns = useMemo(\n () => [\n {\n id: \"Project/CR\",\n Header: \"Project/CR\",\n accessor: \"reference\",\n Filter: TextColumnFilter,\n filter: \"equals\",\n Cell: ({ value, row }) => (\n <>\n {row?.original?.source === \"PR\" ? (\n \n {row?.original?.source + \" \" + value}\n \n ) : (\n \n {row?.original?.source + \" \" + value}\n \n )}\n \n ),\n },\n {\n id: \"Owner\",\n Header: \"Owner\",\n accessor: \"ownerId\",\n\n Cell: ({ value }) => ,\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n Header: \"Group\",\n id: \"Group\",\n accessor: \"groupId\",\n Filter: User.Group.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Project Status\",\n id: \"Project Status\",\n accessor: \"projectStatus\",\n Filter: Project.Status.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Type\",\n id: \"Type\",\n accessor: \"typeId\",\n Filter: Project.Type.TableFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => ,\n },\n {\n Header: \"Create Date\",\n id: \"Create Date\",\n accessor: \"createDateTime\",\n filter: filterDateRange,\n Filter: DateRangeColumnFilter,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value?.substring(0, 8)))}\n ),\n aggregate: \"uniqueCount\",\n },\n {\n Header: \"Modify Date\",\n id: \"Modify Date\",\n accessor: \"lastUpdateDateTime\",\n filter: filterDateRange,\n Filter: DateRangeColumnFilter,\n sortType: \"custom\",\n\n Cell: ({ value }) => (\n \n {value\n ? _date.display(_date.fromStamp(value?.substring(0, 8)))\n : null}\n \n ),\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Synopsis\",\n Header: \"Synopsis\",\n accessor: \"synopsis\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n
    {value}
    \n ),\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => (\n
    {value}
    \n ),\n },\n {\n id: \"Search Found In\",\n Header: \"Search Found In\",\n accessor: \"foundIn\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [],\n );\n\n return (\n <>\n \n \n {job?.response === \"FAIL\" ? (\n {job?.responseMessage}\n ) : (\n \n )}\n \n \n \n );\n}\n\nfunction PrCrTextSearchOptions({\n submitJob,\n job,\n startDate = moment().startOf(\"month\").subtract(4, \"years\"),\n endDate = \"\",\n}) {\n const { options } = job;\n const {\n handleSubmit,\n control,\n watch,\n setError,\n formState: { errors },\n } = useForm({\n mode: \"onTouched\",\n defaultValues: {\n customers: [],\n types: [],\n groups: [],\n createStartDate: startDate,\n createEndDate: endDate,\n lastStartDate: \"\",\n lastEndDate: \"\",\n searchInTime: true,\n searchText1: \"\",\n searchText2: \"\",\n searchText3: \"\",\n ...options,\n },\n });\n\n const createEndDate = watch(\"createEndDate\");\n const createStartDate = watch(\"createStartDate\");\n\n const lastEndDate = watch(\"lastEndDate\");\n const lastStartDate = watch(\"lastStartDate\");\n\n return (\n {\n let searches = [];\n let counter = 0;\n\n let noWhitespace = options.searchText1.replace(/\\s/g, \"\");\n if (noWhitespace.length < 3) {\n setError(\"searchText1\", {\n type: \"custom\",\n message: \"Please enter at least 3 non space characters\",\n });\n return;\n }\n\n noWhitespace = options.searchText2.replace(/\\s/g, \"\");\n if (noWhitespace.length > 0 && noWhitespace.length < 3) {\n setError(\"searchText2\", {\n type: \"custom\",\n message: \"Please enter at least 3 non space characters\",\n });\n return;\n }\n noWhitespace = options.searchText3.replace(/\\s/g, \"\");\n if (noWhitespace.length > 0 && noWhitespace.length < 3) {\n setError(\"searchText3\", {\n type: \"custom\",\n message: \"Please enter at least 3 non space characters\",\n });\n return;\n }\n\n if (options.searchText1.trim() !== \"\") {\n searches.push({ val: options.searchText1, type: \"v\" });\n counter++;\n }\n if (options.searchText2.trim() !== \"\") {\n if (counter > 0) searches.push({ val: \"AND\", type: \"o\" });\n searches.push({ val: options.searchText2, type: \"v\" });\n counter++;\n }\n if (options.searchText3.trim() !== \"\") {\n if (counter > 0) searches.push({ val: \"AND\", type: \"o\" });\n searches.push({ val: options.searchText3, type: \"v\" });\n counter++;\n }\n\n let desc = \"\";\n for (let i = 0; i < searches.length; i++) {\n desc = desc + searches[i].val + \" \";\n }\n\n submitJob({\n ...options,\n createStartDate: _date.stamp(options.createStartDate),\n createEndDate: _date.stamp(options.createEndDate),\n lastStartDate: _date.stamp(options.lastStartDate),\n lastEndDate: _date.stamp(options.lastEndDate),\n searches: searches,\n description: desc,\n });\n })}\n >\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n (\n \n )}\n />\n \n \n \n \n \n \n \n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function QaReviewersReport() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const data = useMemo(() => job?.output?.results || [], [job]);\n\n const columns = useMemo(\n () => [\n {\n id: \"Reviewer\",\n Header: \"Reviewer\",\n accessor: \"reviewer\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"QA Passed\",\n Header: \"QA Passed\",\n accessor: \"qaPassed\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.qaPassed) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"QA Failed\",\n Header: \"QA Failed\",\n accessor: \"qaFailed\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.qaFailed) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"QA Warned\",\n Header: \"QA Warned\",\n accessor: \"qaWarned\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.qaWarned) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"QA Code Reviewed\",\n Header: \"QA Code Reviewed\",\n accessor: \"qaCodeReviewed\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.qaCodeReviewed) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"QA Tests Written\",\n Header: \"QA Tests Written\",\n accessor: \"qaTestsWritten\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.qaTestsWritten) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"QA Front End Tested\",\n Header: \"QA Front End Tested\",\n accessor: \"qaFrontEndTested\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.qaFrontEndTested) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n\n {\n id: \"File Passed\",\n Header: \"File Passed\",\n accessor: \"filePassed\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.filePassed) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"File Failed\",\n Header: \"File Failed\",\n accessor: \"fileFailed\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.fileFailed) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n {\n id: \"File Warned\",\n Header: \"File Warned\",\n accessor: \"fileWarned\",\n disableFilters: true,\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.fileWarned) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return <>{total};\n },\n },\n ],\n [],\n );\n\n return (\n <>\n \n \n \n \n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Col, Form, Row, Table } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Project from \"../../projects\";\nimport Time from \"../../time\";\nimport User from \"../../users\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportTimeOnHold() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState(null);\n const data = useMemo(() => job?.output?.time || [], [job]);\n\n const clickedBillingNote = useCallback(\n (timeId) => {\n setShowTimeId(timeId);\n setShowModifyModal(true);\n },\n [setShowTimeId, setShowModifyModal],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"User\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Owner\",\n Header: \"Owner\",\n accessor: \"ownerId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: \"crId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Date\",\n Header: \"Date\",\n accessor: \"date\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Billing note\",\n Header: \"Billing note\",\n accessor: \"billingNote\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value, row }) => {\n return (\n \n );\n },\n },\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Invoice Project\",\n Header: \"Invoice Project\",\n accessor: \"invoiceType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n },\n {\n id: \"Rate\",\n Header: \"Rate\",\n accessor: \"rate\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"total\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n ],\n [clickedBillingNote],\n );\n\n return (\n <>\n setShowModifyModal(false)}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n \n \n \n \n );\n}\n\nfunction TimeOnHoldOptions(props) {\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","import React, { useCallback, useMemo, useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport Cr from \"../../crs\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportUnbilledTime() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const [showModifyModal, setShowModifyModal] = useState(false);\n const [showTimeId, setShowTimeId] = useState(null);\n const data = useMemo(() => job?.output?.time || [], [job]);\n\n const clickedBillingNote = useCallback(\n (timeId) => {\n setShowTimeId(timeId);\n setShowModifyModal(true);\n },\n [setShowTimeId, setShowModifyModal],\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"User\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Owner\",\n Header: \"Owner\",\n accessor: \"ownerId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"CR\",\n Header: \"CR\",\n accessor: (row) => (row.crId === 0 ? \"N/A\" : row.crId),\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Date\",\n Header: \"Date\",\n accessor: \"date\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n\n Cell: ({ value }) => <>{_date.display(_date.fromStamp(value))},\n },\n {\n id: \"Billing note\",\n Header: \"Billing note\",\n accessor: \"billingNote\",\n Filter: TextColumnFilter,\n filter: \"text\",\n\n Cell: ({ value, row }) => {\n return (\n \n );\n },\n },\n {\n id: \"Customer\",\n Header: \"Customer\",\n accessor: \"customerName\",\n Filter: TextColumnFilter,\n filter: \"text\",\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Invoice project type\",\n Header: \"Invoice Project Type\",\n accessor: \"projectType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n aggregate: \"uniqueCount\",\n },\n {\n id: \"Held\",\n Header: \"Held\",\n accessor: \"held\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n format: { alignment: { horizontal: \"center\" } },\n },\n {\n id: \"Rate\",\n Header: \"Rate\",\n accessor: \"rate\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n },\n {\n id: \"Hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableFilters: true,\n dataType: \"number\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.hours) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return
    {total.toFixed(2)}
    ;\n },\n },\n {\n id: \"Total\",\n Header: \"Total\",\n accessor: \"total\",\n disableFilters: true,\n dataType: \"currency\",\n format: { number: { decimals: 2 } },\n aggregate: \"sum\",\n\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else return row.subRows.reduce(calcRow, total);\n return parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n\n return ;\n },\n },\n ],\n [clickedBillingNote],\n );\n\n return (\n <>\n setShowModifyModal(false)}\n onCancel={() => setShowModifyModal(false)}\n />\n \n \n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useMemo, useState } from \"react\";\nimport { Col, Form, Row, Tab, Table as BsTable, Tabs } from \"react-bootstrap\";\nimport { Controller } from \"react-hook-form\";\n\nimport JobPage from \"../../activity/jobs/JobPage\";\nimport CrLinkWithContextMenu from \"../../common/components/CrLinkWithContextMenu\";\nimport AttachmentsTable from \"../../common/details/AttachmentsTable\";\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport FieldYesNoSelect from \"../../common/fields/FieldYesNoSelect\";\nimport { CurrencyFormatter } from \"../../common/formatters\";\nimport useReinitState from \"../../common/hooks/useReinitState\";\nimport LoadingModal from \"../../common/modals/LoadingModal\";\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport Project from \"../../projects\";\nimport Time from \"../../time\";\nimport ReportNavSidebar from \"./ReportNavSidebar\";\nimport ReportOptions from \"./ReportOptions\";\n\nexport default function ReportWorkSummary() {\n return (\n \n );\n}\n\nfunction Report({ job, isLoading }) {\n const { output: { users = [], requiredHours = 0 } = {} } = job;\n const formattedVersion = job?.output?.formattedVersion;\n const attachments = useMemo(() => job?.output?.attachments || [], [job]);\n\n const buildTimes = (user) => (crs, cr) => {\n const data = crs.concat(\n cr?.time?.map((t) => {\n return {\n ...t,\n userId: user.userId,\n totalHours: t.hours,\n crId: cr.id,\n crTypeId: cr.typeId,\n synopsis: cr.synopsis,\n customers: [\n {\n name: cr.customerName,\n },\n ],\n billingNoteAggregate: (\n {`${cr.synopsis}\\n${cr.estimate}`}

    \n ),\n };\n }),\n );\n return data;\n };\n const { summary, details } = useMemo(\n () =>\n users?.reduce(\n (usersData, { TimebyCR, BillableTime, NonbillableTime, ...user }) => {\n const times = []\n .concat(TimebyCR?.crs?.reduce(buildTimes(user), []) || [])\n .concat(BillableTime?.crs?.reduce(buildTimes(user), []) || [])\n .concat(NonbillableTime?.crs?.reduce(buildTimes(user), []) || []);\n const details = usersData.details.concat({\n userId: user.userId,\n times,\n });\n const summary = usersData.summary.concat([\n {\n userId: user.userId,\n type: \"BAC Non-Bill\",\n ...user.BACNonbillTimeTotal,\n },\n {\n userId: user.userId,\n type: \"BAC Billable\",\n ...user.BACBillableTimeTotal,\n },\n {\n userId: user.userId,\n type: \"Regular Non-Bill\",\n ...user.RegularNonbillTimeTotal,\n },\n {\n userId: user.userId,\n type: \"Regular Billable\",\n ...user.RegularBillableTimeTotal,\n },\n ]);\n return { summary, details };\n },\n { summary: [], details: [] },\n ) || [],\n [users],\n );\n\n const [currentTab, setCurrentTab] = useState(\"summary\");\n\n if (isLoading) {\n return ;\n } else if (formattedVersion) {\n return (\n \n );\n } else {\n return (\n setCurrentTab(k)}>\n \n \n \n \n \n \n Required hours\n {requiredHours}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nfunction WorkSummaryOptions(props) {\n return (\n \n \n \n (\n \n )}\n />\n \n \n \n );\n}\n\nfunction Summary({ data, isLoading }) {\n const columns = useMemo(\n () => [\n {\n id: \"user\",\n Header: \"User\",\n accessor: \"userId\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"count\",\n },\n {\n id: \"type\",\n Header: \"Type\",\n accessor: \"type\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"count\",\n },\n {\n id: \"hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n dataType: \"number\",\n format: {\n number: { decimals: 2 },\n },\n aggregate: \"sum\",\n },\n {\n id: \"amount\",\n Header: \"Amount\",\n accessor: \"total\",\n dataType: \"currency\",\n format: { number: { decimals: 0 } },\n aggregate: \"sum\",\n Aggregated: ({ value }) => (\n \n ),\n Footer: ({ rows }) => {\n const calcRow = (total, row) => {\n if (row.isGrouped)\n if (row.isExpanded) return total;\n else {\n return row.subRows.reduce(calcRow, total);\n }\n // some records have missing data so check if its a number\n return isNaN(row.original.total)\n ? total\n : parseFloat(row.original.total) + total;\n };\n\n const total = rows.reduce(calcRow, 0);\n return ;\n },\n },\n ],\n [],\n );\n return (\n {\n if (row.isGrouped) return { className: \"table-secondary\" };\n else return {};\n }}\n />\n );\n}\n\nconst TimeTableComponents = {\n CrLink: CrLink,\n};\n\nfunction Detail({ data = [], isLoading }) {\n const users = data\n .filter((user) => user?.times.length)\n .map((user) => {\n return { value: user.userId, label: user.userId };\n });\n const [user, setUser] = useReinitState(users?.[0]?.value);\n const userValue = _.find(users, [\"value\", user]);\n const times = useMemo(\n () => _.find(data, (u) => u.userId === user)?.times || [],\n [data, user],\n );\n\n const columns = useMemo(\n () => [\n {\n Header: \"CR Type\",\n id: \"crType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n aggregate: \"uniqueCount\",\n accessor: \"crTypeId\",\n Cell: ({ value }) => ,\n },\n ],\n [],\n );\n return (\n \n \n \n \n \n {\n if (row.isGrouped) return { className: \"table-secondary\" };\n else return {};\n }}\n additionalColumns={columns}\n Components={TimeTableComponents}\n />\n \n \n \n \n );\n}\n\nfunction CrLink(props) {\n return ;\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport ReportActivity from \"./ReportActivity\";\nimport ReportARYearlyCustomerSummary from \"./ReportARYearlyCustomerSummary\";\nimport ReportCodeChanges from \"./ReportCodeChanges\";\nimport ReportContractorWorkSummary from \"./ReportContractorWorkSummary\";\nimport ReportCustomAnalysis from \"./ReportCustomAnalysis\";\nimport ReportCustomerBilledByProduct from \"./ReportCustomerBilledByProduct\";\nimport ReportCustomerCrs from \"./ReportCustomerCrs\";\nimport ReportCustomerProducts from \"./ReportCustomerProducts\";\nimport ReportCustomerStatement from \"./ReportCustomerStatement\";\nimport ReportCustomerTime from \"./ReportCustomerTime\";\nimport ReportDailyBreakdown from \"./ReportDailyBreakdown\";\nimport ReportEmployeeByMeasures from \"./ReportEmployeeByMeasures\";\nimport ReportHostingYearBreakdown from \"./ReportHostingYearBreakdown\";\nimport ReportIndex from \"./ReportIndex\";\nimport ReportInternalTime from \"./ReportInternalTime\";\nimport ReportModuleSummary from \"./ReportModuleSummary\";\nimport ReportNonbillableTime from \"./ReportNonbillableTime\";\nimport ReportOutOfOffice from \"./ReportOutOfOffice\";\nimport ReportOvertime from \"./ReportOvertime\";\nimport ReportPrCrTextSearch from \"./ReportPrCrTextSearch\";\nimport ReportQaReviewers from \"./ReportQaReviewers\";\nimport ReportTimeOnHold from \"./ReportTimeOnHold\";\nimport ReportUnbilledTime from \"./ReportUnbilledTime\";\nimport ReportWorkSummary from \"./ReportWorkSummary\";\n\nexport default function ReportsRouting() {\n let { path } = useRouteMatch();\n\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { bool, object, string } from \"yup\";\n\nconst awsAccountSchema = object().shape({\n description: string().label(\"Description\").required().max(30),\n id: string().label(\"Id\").required().max(20),\n isInactive: bool().required().default(false),\n isInternalAccount: bool().required().default(false),\n accessKey: string().label(\"Access Key\"),\n secretKey: string().label(\"Secret Key\"),\n});\n\nexport default awsAccountSchema;\n","import React from \"react\";\nimport { Alert, Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport awsAccountSchema from \"./awsAccountSchema\";\n\nexport default function AwsAccountEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: awsAccountSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction AwsAccountForm({ isNew }) {\n const { submitForm, setValue } = useFormContext();\n\n useFormsKeys();\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 Key information will not be displayed. However, entering of data\n will set/update these fields.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n submitForm();\n setValue(\"accessKey\", \"\");\n setValue(\"secretKey\", \"\");\n }}\n >\n Submit\n \n \n );\n}\n","import { createEntityHooks } from \"../../common/entity\";\nimport awsAccountState from \"./state\";\n\nexport const { useEntities: useAwsAccounts, useEntity: useAwsAccount } =\n createEntityHooks({\n entity: awsAccountState.entity,\n actions: awsAccountState.actions,\n });\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { useAwsAccount } from \"./hooks\";\n\nexport default function AwsAccountLink({ id, children }) {\n const { awsAccount } = useAwsAccount({ id });\n\n if (!awsAccount?.id) return ;\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n \n {children || awsAccount?.description}\n \n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useAwsAccounts } from \"./hooks\";\n\nconst AwsAccountSelect = entitySelect({\n name: \"awsAccount\",\n useEntities: useAwsAccounts,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.description + \"(\" + e.id.substring(0, 4) + \"...)\",\n});\n\nexport default AwsAccountSelect;\n","import AwsAccountEditor from \"./AwsAccountEditor\";\nimport AwsAccountLink from \"./AwsAccountLink\";\nimport AwsAccountSelect from \"./AwsAccountSelect\";\nimport Table from \"./AwsAccountTable\";\nimport AwsAccountTableFilter from \"./AwsAccountTableFilter\";\nimport { useAwsAccount, useAwsAccounts } from \"./hooks\";\nimport awsAccountState from \"./state\";\n\nconst AwsAccount = {\n // API\n api: awsAccountState.api,\n // State\n actions: awsAccountState.actions,\n selectors: awsAccountState.entity.selectors,\n // Hooks\n useOne: useAwsAccount,\n useAll: useAwsAccounts,\n // Components\n Table,\n TableFilter: AwsAccountTableFilter,\n Link: AwsAccountLink,\n Editor: AwsAccountEditor,\n Select: AwsAccountSelect,\n // Related Entity Objects\n};\n\nexport default AwsAccount;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport AwsAccountLink from \"./AwsAccountLink\";\n\nexport default function AwsAccountTable({\n awsAccounts,\n awsAccountLink = true,\n Components: OverrideComponents,\n layout = [\"Id\", \"Description\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: awsAccount } }) =>\n awsAccountLink ? (\n \n {value || awsAccount?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: SelectColumnFilter,\n filter: \"text\",\n },\n ],\n [awsAccountLink],\n );\n return (\n \n );\n}\n","import React from \"react\";\n\nimport { SelectColumnFilterWithOptions } from \"../../common/tables/TableFilters\";\nimport { useAwsAccounts } from \"./hooks\";\n\nexport default function AwsAccountTableFilter({ column }) {\n const { filterValue } = column;\n const { awsAccounts } = useAwsAccounts();\n const _options = awsAccounts\n .filter((s) => s.isInactive === false || s.id === filterValue)\n .map((f) => {\n return { label: f.description, value: f.id };\n });\n return ;\n}\n","import { createEntityHooks } from \"../common/entity\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport serverState from \"./state\";\n\nexport const {\n useEntities: useServers,\n useEntity: useServer,\n useEntitiesBySearch: useServersByCustomer,\n} = createEntityHooks({\n entity: serverState.entity,\n actions: serverState.actions,\n parseId: (id) => {\n const nextId = parseIntId(id);\n return nextId === 0 ? undefined : nextId;\n },\n expire: {\n key: \"hours\",\n value: 12,\n },\n});\n","import { createEntityHooks } from \"../../common/entity\";\nimport reservationState from \"./state\";\n\nexport const { useEntities: useReservations, useEntity: useReservation } =\n createEntityHooks({\n entity: reservationState.entity,\n actions: reservationState.actions,\n });\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport { SelectColumnFilter } from \"../../common/tables/TableFilters\";\nimport AwsAccount from \"../awsAccounts\";\nimport AwsInstanceTypeLink from \"../awsInstanceTypes/AwsInstanceTypeLink\";\nimport AwsZoneLink from \"../awsZones/AwsZoneLink\";\n\nexport default function ReservationComparisonTable({ comparisons, ...props }) {\n const columns = useMemo(\n () => [\n {\n id: \"AWS Account\",\n Header: \"AWS Account\",\n accessor: \"awsAccount\",\n Filter: AwsAccount.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Zone\",\n Header: \"AWS Zone\",\n accessor: \"awsZone\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Instance Type\",\n Header: \"AWS Instance Type\",\n accessor: \"awsInstanceType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Server Count\",\n Header: \"Server Count\",\n accessor: \"serverCount\",\n },\n {\n id: \"Reservation Count\",\n Header: \"Reservation Count\",\n accessor: \"reservationCount\",\n },\n ],\n [],\n );\n\n return (\n \n );\n}\n","import { number, object, string } from \"yup\";\n\nconst reservationSchema = object().shape({\n id: string().label(\"Id\").required().max(36),\n awsAccount: string().label(\"Account\").max(20),\n awsZone: string().label(\"Zone\").max(20),\n startDate: string().label(\"Start date\").required(),\n endDate: string().label(\"End date\").required(),\n awsInstanceType: string().label(\"Instance Type\").max(20),\n unitPrice: number().label(\"Unit price $\").min(0),\n instanceCount: number().label(\"Instance count\").min(0),\n effectiveMonth: string().label(\"Effective Month\").required(),\n});\n\nexport default reservationSchema;\n","import React from \"react\";\nimport { Col, Form } from \"react-bootstrap\";\n\nimport { Forms, FormsField } from \"../../common/forms\";\nimport AwsAccount from \"../awsAccounts\";\nimport AwsInstanceType from \"../awsInstanceTypes\";\nimport AwsZone from \"../awsZones\";\nimport reservationSchema from \"./reservationSchema\";\n\nexport default function ReservationEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: reservationSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction ReservationForm({ isNew }) {\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 \n \n \n \n \n
    \n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport default function ReservationLink({ id, children }) {\n return (\n \n {children || id}\n \n );\n}\n","import { entitySelect } from \"../../common/entity\";\nimport { useReservations } from \"./hooks\";\n\nconst ReservationSelect = entitySelect({\n name: \"reservation\",\n useEntities: useReservations,\n filter: (e, value) => e.isInactive === false || e.id === value,\n label: (e) => e.id,\n});\n\nexport default ReservationSelect;\n","import { useReservation, useReservations } from \"./hooks\";\nimport ReservationComparisonTable from \"./ReservationComparisonTable\";\nimport ReservationEditor from \"./ReservationEditor\";\nimport ReservationLink from \"./ReservationLink\";\nimport ReservationSelect from \"./ReservationSelect\";\nimport Table from \"./ReservationTable\";\nimport reservationState from \"./state\";\n\nconst Reservation = {\n // API\n api: reservationState.api,\n // State\n actions: reservationState.actions,\n selectors: reservationState.entity.selectors,\n // Hooks\n useOne: useReservation,\n useAll: useReservations,\n // Components\n Table,\n ComparisonTable: ReservationComparisonTable,\n Link: ReservationLink,\n Editor: ReservationEditor,\n Select: ReservationSelect,\n // Related Entity Objects\n};\n\nexport default Reservation;\n","import React, { useMemo } from \"react\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Table from \"../../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../../common/tables/TableFilters\";\nimport AwsAccount from \"../awsAccounts\";\nimport AwsInstanceTypeLink from \"../awsInstanceTypes/AwsInstanceTypeLink\";\nimport AwsZoneLink from \"../awsZones/AwsZoneLink\";\nimport ReservationLink from \"./ReservationLink\";\n\nexport default function ReservationTable({\n reservations,\n reservationLink = true,\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: reservation } }) =>\n reservationLink ? (\n \n {value || reservation?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"AWS Account\",\n Header: \"AWS Account\",\n accessor: \"awsAccount\",\n Filter: AwsAccount.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Zone\",\n Header: \"AWS Zone\",\n accessor: \"awsZone\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Instance Type\",\n Header: \"AWS Instance Type\",\n accessor: \"awsInstanceType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"Instance Count\",\n Header: \"Instance Count\",\n accessor: \"instanceCount\",\n },\n {\n id: \"Total Price\",\n Header: \"Total Price\",\n accessor: \"totalPrice\",\n },\n {\n id: \"Start Date\",\n Header: \"Start Date\",\n accessor: \"startDate\",\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n {\n id: \"End Date\",\n Header: \"End Date\",\n accessor: \"endDate\",\n Cell: ({ value }) => (\n {_date.display(_date.fromStamp(value))}\n ),\n },\n ],\n [reservationLink],\n );\n\n return (\n \n );\n}\n","import { bool, object, string } from \"yup\";\n\nconst s3BucketSchema = object().shape({\n id: string().label(\"Id\").required().max(63),\n customerId: string().label(\"Customer\").required(),\n awsAccount: string().label(\"Account\").max(20),\n awsRegion: string().label(\"Region\").max(19),\n isInactive: bool().required().default(false),\n});\n\nexport default s3BucketSchema;\n","import React from \"react\";\nimport { Button, Col, Form } from \"react-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useFormContext,\n useFormsKeys,\n} from \"../../common/forms\";\nimport Customer from \"../../customers\";\nimport AwsAccount from \"../awsAccounts\";\nimport AwsRegion from \"../awsRegions\";\nimport s3BucketSchema from \"./s3BucketSchema\";\n\nexport default function S3BucketEditor({\n values,\n onSubmit,\n isNew = false,\n isDisabled = false,\n}) {\n return (\n \n onSubmit({\n ...values,\n })\n }\n schema={{ schema: s3BucketSchema }}\n isDisabled={isDisabled}\n isNew={isNew}\n showDevTool\n >\n \n \n );\n}\n\nfunction S3BucketForm({ isNew }) {\n const { submitForm } = useFormContext();\n\n useFormsKeys();\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
    \n );\n}\n","import { useS3Bucket, useS3Buckets, useS3BucketsByCustomer } from \"./hooks\";\nimport S3BucketEditor from \"./S3BucketEditor\";\nimport S3BucketLink from \"./S3BucketLink\";\nimport S3BucketSelect from \"./S3BucketSelect\";\nimport Table from \"./S3BucketTable\";\nimport s3BucketState from \"./state\";\n\nconst S3Bucket = {\n // API\n api: s3BucketState.api,\n // State\n actions: s3BucketState.actions,\n selectors: s3BucketState.entity.selectors,\n // Hooks\n useOne: useS3Bucket,\n useAll: useS3Buckets,\n useSearch: useS3BucketsByCustomer,\n // Components\n Table,\n Link: S3BucketLink,\n Editor: S3BucketEditor,\n Select: S3BucketSelect,\n // Related Entity Objects\n};\n\nexport default S3Bucket;\n","import React, { useMemo } from \"react\";\n\nimport Table from \"../../common/tables/Table\";\nimport { TextColumnFilter } from \"../../common/tables/TableFilters\";\nimport Customer from \"../../customers\";\nimport S3BucketLink from \"./S3BucketLink\";\n\nexport default function S3BucketTable({\n s3Buckets,\n s3BucketLink = true,\n layout = [\"Id\", \"Customer\", \"Size\"],\n ...props\n}) {\n const columns = useMemo(\n () => [\n {\n id: \"Id\",\n Header: \"Id\",\n accessor: \"id\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: s3Bucket } }) =>\n s3BucketLink ? (\n \n {value || s3Bucket?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"text\",\n Cell: ({ value }) => {value},\n },\n {\n id: \"Size\",\n Header: \"Size in GB\",\n accessor: \"size\",\n },\n ],\n [s3BucketLink],\n );\n\n return (\n \n );\n}\n","export const SERVER_TYPES = {\n P: {\n id: \"P\",\n description: \"Production\",\n postfix: \"\",\n },\n T: {\n id: \"T\",\n description: \"Test\",\n postfix: \"test\",\n },\n M: {\n id: \"M\",\n description: \"Mirror\",\n postfix: \"mir\",\n },\n R: {\n id: \"R\",\n description: \"Printer\",\n postfix: \"printer\",\n },\n W: {\n id: \"W\",\n description: \"Web\",\n postfix: \"web\",\n },\n Y: {\n id: \"Y\",\n description: \"Web Mirror\",\n postfix: \"web-mir\",\n },\n A: {\n id: \"A\",\n description: \"Analytics\",\n postfix: \"ana\",\n },\n E: {\n id: \"E\",\n description: \"EDI/FTP\",\n postfix: \"edi\",\n },\n O: {\n id: \"O\",\n description: \"Other\",\n postfix: \"other\",\n },\n};\n","import { SERVER_TYPES } from \"./types\";\n\nexport default function getServerAlias(\n { aliasPostfix, serverType, status, shouldGenerateSSHAlias } = {},\n { alias } = {},\n) {\n let generatedAlias = \"\";\n if (alias && shouldGenerateSSHAlias === true) {\n generatedAlias = alias;\n if (!!aliasPostfix && aliasPostfix.trim() !== \"\")\n generatedAlias = generatedAlias + \"-\" + aliasPostfix.trim();\n else {\n if (serverType !== \"P\")\n generatedAlias =\n generatedAlias + \"-\" + SERVER_TYPES[serverType]?.postfix;\n }\n if (status === \"O\") generatedAlias = generatedAlias + \"-old\";\n }\n return generatedAlias;\n}\n","import { bool, number, object, string } from \"yup\";\n\nconst serverSchema = object().shape({\n description: string().label(\"Description\").required().max(60),\n customerId: number().label(\"Customer\"),\n hostname: string().label(\"Hostname\").required().max(60),\n awsInstanceId: string().label(\"AWS Instance Id\").max(20),\n severType: string().label(\"Type\").required().max(1),\n aliasPostfix: string().label(\"Type\").max(15),\n locality: string().label(\"Locality\").required().max(1),\n engineeringResponsibility: string().label(\"Engineering\").required().max(1),\n status: string().label(\"Status\").required().max(1).default(\"A\"),\n isOldServer: bool().required().default(false),\n});\n\nexport default serverSchema;\n","import { isUndefined } from \"lodash\";\nimport React, { useEffect } from \"react\";\nimport { Button, Col, Form, InputGroup, Row } from \"react-bootstrap\";\nimport { LinkContainer } from \"react-router-bootstrap\";\n\nimport {\n Forms,\n FormsField,\n useController,\n useFormContext,\n useFormsKeys,\n} from \"../common/forms\";\nimport { _date } from \"../common/functions/dates\";\nimport Customer from \"../customers\";\nimport AwsAccount from \"./awsAccounts\";\nimport AwsInstanceType from \"./awsInstanceTypes\";\nimport AwsZone from \"./awsZones\";\nimport getServerAlias from \"./getServerAlias\";\nimport serverSchema from \"./serverSchema\";\nimport { SERVER_TYPES } from \"./types\";\n\nexport default function ServerEditor({\n values: { hardwareExpirationDate, redHatLicenseExpirationDate, ...values },\n onSubmit,\n isDisabled = false,\n}) {\n AwsAccount.useAll({\n canGet: true,\n });\n AwsZone.useAll({\n canGet: true,\n });\n AwsInstanceType.useAll({\n canGet: true,\n });\n\n return (\n \n onSubmit({\n hardwareExpirationDate: hardwareExpirationDate\n ? _date.stamp(hardwareExpirationDate)\n : \"\",\n redHatLicenseExpirationDate: redHatLicenseExpirationDate\n ? _date.stamp(redHatLicenseExpirationDate)\n : \"\",\n ...values,\n })\n }\n schema={{ schema: serverSchema }}\n isDisabled={isDisabled}\n showDevTool\n >\n \n \n );\n}\n\nfunction getDefaultDescription(customerName, serverType, status) {\n const serverTypeDesc =\n status === \"O\"\n ? SERVER_TYPES[serverType]?.description + \"-OLD\"\n : SERVER_TYPES[serverType]?.description;\n return customerName + \" [\" + serverTypeDesc + \"]\";\n}\n\nfunction ServerForm() {\n const { watch, submitForm, setValue } = useFormContext();\n\n const locality = watch(\"locality\");\n const ipAddress = watch(\"ipAddress\");\n const hostname = watch(\"hostname\");\n const customerId = watch(\"customerId\");\n const serverType = watch(\"serverType\");\n const status = watch(\"status\");\n const description = watch(\"description\");\n const aliasPostfix = watch(\"aliasPostfix\");\n const shouldGenerateSSHAlias = watch(\"shouldGenerateSSHAlias\");\n const vpnRequired = watch(\"vpnRequired\");\n const isRedHatLicenseRequired = watch(\"isRedHatLicenseRequired\");\n\n const { customer } = Customer.useOne({ id: customerId });\n\n useEffect(() => {\n if (!!aliasPostfix && aliasPostfix !== \"\") {\n const x = aliasPostfix.replace(/[^\\-0-9a-zA-z]/gi, \"\");\n if (x !== aliasPostfix) setValue(\"aliasPostfix\", x);\n }\n }, [aliasPostfix, setValue]);\n\n useEffect(() => {\n const defaultDesc = getDefaultDescription(\n customer?.name,\n serverType,\n status,\n );\n\n if (defaultDesc === description || description === \"\") {\n const newDesc = getDefaultDescription(customer?.name, serverType, status);\n setValue(\"description\", newDesc, {\n shouldValidate: true,\n shouldDirty: true,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [customer, status, serverType, setValue]);\n\n useFormsKeys();\n return (\n
    \n \n \n \n {\"Customer\"}\n\n {customerId ? (\n <>\n \n \n Link\n \n \n \n \n Servers\n \n \n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\"Description\"}\n {\n setValue(\n \"description\",\n getDefaultDescription(\n customer?.name,\n serverType,\n status,\n ),\n );\n }}\n >\n Default\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {shouldGenerateSSHAlias ? (\n \n \n \n \n \n \n \n \n \n \n Generated alias:{\" \"}\n \n \n \n \n \n \n {getServerAlias(\n {\n aliasPostfix,\n serverType,\n status,\n shouldGenerateSSHAlias,\n },\n customer,\n )}{\" \"}\n \n \n \n \n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n \n {locality === \"A\" ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : null}\n \n \n \n \n \n \n \n \n \n \n \n \n \n

    Hardware Details

    \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isRedHatLicenseRequired && (\n \n )}\n \n \n \n
    \n
    \n );\n}\n// redHatLicenseExpirationDate\n// isRedHatLicenseRequired\n\nfunction FormsRow({ children, ...props }) {\n return (\n \n {children}\n \n );\n}\n\nfunction CustomerSelect({ name, id = name, label, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n {...props}\n />\n \n {error?.message}\n \n \n );\n}\n\nfunction TypeSelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n disabled={isDisabled}\n isInvalid={isUndefined(isInvalid) ? !!error : isInvalid}\n {...field}\n {...props}\n >\n \n {Object.values(SERVER_TYPES).map((l, idx) => (\n \n ))}\n \n \n {error?.message}\n \n \n );\n}\n\nfunction LocalitySelect({ name, id = name, label, isInvalid, ...props }) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n {label ? {label} : null}\n {\n onChange(v);\n }}\n disabled={isDisabled}\n isInvalid={isUndefined(isInvalid) ? !!error : isInvalid}\n {...field}\n {...props}\n >\n \n \n \n \n \n \n {error?.message}\n \n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport { useServersByCustomer } from \"./hooks\";\n\nconst ServerSelectByCustomer = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n customerId,\n placeholder = \"Select Server...\",\n ...props\n },\n ref,\n ) => {\n const { servers, loading } = useServersByCustomer({\n search: { customerId },\n canGet: !!customerId,\n });\n\n const _options = _.sortBy(\n servers\n .filter((c) => c.inactive === false || c.id === value)\n .map((f) => {\n return { label: f.name, value: parseIntId(f.id) };\n }),\n\n \"label\",\n );\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n);\n\nexport default ServerSelectByCustomer;\n","import React, { useMemo } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { _date } from \"../common/functions/dates\";\nimport Table from \"../common/tables/Table\";\nimport {\n SelectColumnFilter,\n TextColumnFilter,\n} from \"../common/tables/TableFilters\";\nimport Customer from \"../customers\";\nimport AwsAccount from \"./awsAccounts/\";\nimport AwsInstanceTypeLink from \"./awsInstanceTypes/AwsInstanceTypeLink\";\nimport AwsZoneLink from \"./awsZones/AwsZoneLink\";\nimport getServerAlias from \"./getServerAlias\";\nimport ServerLink from \"./ServerLink\";\nimport { SERVER_TYPES } from \"./types\";\n\nexport default function ServerTable({\n servers,\n serverLink = true,\n layout = [\n \"Description\",\n \"Customer\",\n \"Hostname\",\n \"Type\",\n \"Alias\",\n \"Engineering Responsibility\",\n \"Locality\",\n ],\n ...props\n}) {\n const customers = useSelector((state) =>\n Customer.selectors.selectEntities(state),\n );\n\n const columns = useMemo(\n () => [\n {\n id: \"Description\",\n Header: \"Description\",\n accessor: \"description\",\n Filter: TextColumnFilter,\n filter: \"text\",\n Cell: ({ value, row: { original: server } }) =>\n serverLink ? (\n \n {value || server?.hostname || server?.id}\n \n ) : (\n value\n ),\n },\n {\n id: \"Customer\",\n Header: \"Customer Name\",\n accessor: \"customerId\",\n Filter: Customer.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n\n {\n id: \"Type\",\n Header: \"Type\",\n accessor: (server) =>\n SERVER_TYPES[server?.serverType]?.description || \"\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Engineering Responsibility\",\n Header: \"Engineering\",\n accessor: (server) => {\n switch (server?.engineeringResponsibility) {\n case \"P\":\n return \"Produce Pro\";\n case \"E\":\n return \"Ed White\";\n case \"C\":\n return \"Customer IT\";\n case \"3\":\n return \"3rd Party\";\n }\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"Locality\",\n Header: \"Locality\",\n accessor: (server) => {\n switch (server?.locality) {\n case \"A\":\n return \"AWS hosted by Ppro\";\n case \"L\":\n return \"Local hardware\";\n case \"R\":\n return \"Other-remote\";\n default:\n return \"\";\n }\n },\n Filter: SelectColumnFilter,\n filter: \"equals\",\n },\n {\n id: \"AWS Account\",\n Header: \"AWS Account\",\n accessor: \"awsAccount\",\n Filter: AwsAccount.TableFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Zone\",\n Header: \"AWS Zone\",\n accessor: \"awsZone\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Instance Type\",\n Header: \"AWS Instance Type\",\n accessor: \"awsInstanceType\",\n Filter: SelectColumnFilter,\n filter: \"equals\",\n Cell: ({ value }) => ,\n },\n {\n id: \"AWS Instance Id\",\n Header: \"AWS Instance Id\",\n accessor: \"awsInstanceId\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Hostname\",\n Header: \"Hostname\",\n accessor: \"hostname\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"IP Address\",\n Header: \"IP Address\",\n accessor: \"ipAddress\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"OS Version\",\n Header: \"OS Version\",\n accessor: \"osVersion\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Hardware Expiration Date\",\n Header: \"Hardware Warranty Expiration\",\n accessor: \"hardwareExpirationDate\",\n Cell: ({ value }) => _date.display(_date.fromStamp(value)),\n },\n {\n id: \"redHatLicenseExpirationDate\",\n Header: \"RedHat License Expiration\",\n accessor: \"redHatLicenseExpirationDate\",\n Cell: ({ value }) => _date.display(_date.fromStamp(value)),\n },\n {\n id: \"sshOptions\",\n Header: \"SSH Options\",\n accessor: \"sshOptions\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"sshConfig\",\n Header: \"SSH Config\",\n accessor: \"sshConfig\",\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n {\n id: \"Alias\",\n Header: \"Alias\",\n accessor: (server) =>\n getServerAlias(server, customers?.[server.customerId]),\n Filter: TextColumnFilter,\n filter: \"text\",\n },\n ],\n [serverLink, customers],\n );\n return (\n \n );\n}\n","import React from \"react\";\n\nimport { useServersByCustomer } from \"./hooks\";\nimport ServerTable from \"./ServerTable\";\n\nconst layout = [\"name\", \"title\", \"types\", \"phones\", \"email\"];\n\nexport default function ServerTableByCustomer({ customerId }) {\n const { servers, loading, reset } = useServersByCustomer({\n search: { customerId },\n canGet: true,\n });\n\n return (\n reset({ customerId })}\n skeletonLines={8}\n />\n );\n}\n","import AwsAccount from \"./awsAccounts\";\nimport AwsInstanceType from \"./awsInstanceTypes\";\nimport AwsRegion from \"./awsRegions\";\nimport AwsZone from \"./awsZones\";\nimport { useServer, useServers, useServersByCustomer } from \"./hooks\";\nimport Reservation from \"./reservations\";\nimport S3Bucket from \"./s3Buckets\";\nimport ServerEditor from \"./ServerEditor\";\nimport ServerLink from \"./ServerLink\";\nimport SelectByCustomer from \"./ServerSelectByCustomer\";\nimport Table from \"./ServerTable\";\nimport ServerTableByCustomer from \"./ServerTableByCustomer\";\nimport state from \"./state\";\n\nconst Server = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useServer,\n useAll: useServers,\n useSearch: useServersByCustomer,\n // Components\n Table,\n Link: ServerLink,\n SelectByCustomer,\n TableByCustomer: ServerTableByCustomer,\n Editor: ServerEditor,\n // Related Entity Objects\n\n AwsInstanceType: AwsInstanceType,\n AwsZone: AwsZone,\n AwsRegion: AwsRegion,\n AwsAccount: AwsAccount,\n S3Bucket: S3Bucket,\n Reservation: Reservation,\n};\n\nexport default Server;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function ServerNavSidebar({ children }) {\n const { isAdmin } = useSelector((state) => state.auth);\n return (\n \n Servers\n New Server\n
    \n S3 Buckets\n
    \n Reservations\n \n Reservation Comparison\n \n {isAdmin ? (\n <>\n
    \n \n Aws Instance Types\n \n Aws Regions\n Aws Zones\n \n Aws Accounts\n \n \n ) : null}\n {children}\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function AwsAccountNavSidebar({ children }) {\n return (\n \n {children}\n
    \n \n New Aws Account\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsAccountNavSidebar from \"./AwsAccountNavSidebar\";\n\nexport default function AwsAccountEdit() {\n const id = String(useParams().id).toLowerCase();\n const { awsAccount, loading, updateOne } = Server.AwsAccount.useOne({\n id,\n canGet: true,\n });\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {awsAccount ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Aws Account not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsAccountNavSidebar from \"./AwsAccountNavSidebar\";\n\nexport default function AwsAccountIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = Server.AwsAccount.useAll({\n canGet: true,\n });\n\n const data = useMemo(() => {\n return entities.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, entities]);\n\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport AwsAccount from \"../../../servers/awsAccounts\";\nimport AwsAccountNavSidebar from \"./AwsAccountNavSidebar\";\n\nexport default function AwsAccountNew() {\n const { createOne } = AwsAccount.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }>\n \n createOne(awsAccount).then(({ id }) =>\n setRedirect(`/servers/aws-accounts/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport AwsAccountEdit from \"./AwsAccountEdit\";\nimport AwsAccountIndex from \"./AwsAccountIndex\";\nimport AwsAccountNavSidebar from \"./AwsAccountNavSidebar\";\nimport AwsAccountNew from \"./AwsAccountNew\";\n\nexport default function AwsAccountsPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function AwsInstanceTypeNavSidebar({ children }) {\n return (\n \n {children}\n
    \n \n New Aws Instance Type\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsInstanceTypeNavSidebar from \"./AwsInstanceTypeNavSidebar\";\n\nexport default function AwsInstanceTypeEdit() {\n const id = String(useParams().id).toLowerCase();\n const { awsInstanceType, loading, updateOne } = Server.AwsInstanceType.useOne(\n {\n id,\n canGet: true,\n },\n );\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {awsInstanceType ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Aws Instance Type not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsInstanceTypeNavSidebar from \"./AwsInstanceTypeNavSidebar\";\n\nexport default function AwsInstanceTypeIndex() {\n const [active, setActive] = useState(true);\n const { awsInstanceTypes, loading, reset } = Server.AwsInstanceType.useAll({\n canGet: true,\n });\n const data = useMemo(() => {\n return awsInstanceTypes.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, awsInstanceTypes]);\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport AwsInstanceType from \"../../../servers/awsInstanceTypes\";\nimport AwsInstanceTypeNavSidebar from \"./AwsInstanceTypeNavSidebar\";\n\nexport default function AwsInstanceTypeNew() {\n const { createOne } = AwsInstanceType.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }>\n \n createOne(awsInstanceType).then(({ id }) =>\n setRedirect(`/servers/aws-instance-types/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport AwsInstanceTypeEdit from \"./AwsInstanceTypeEdit\";\nimport AwsInstanceTypeIndex from \"./AwsInstanceTypeIndex\";\nimport AwsInstanceTypeNavSidebar from \"./AwsInstanceTypeNavSidebar\";\nimport AwsInstanceTypeNew from \"./AwsInstanceTypeNew\";\n\nexport default function AwsInstanceTypesPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function AwsRegionNavSidebar({ children }) {\n return (\n \n {children}\n
    \n \n New Aws Region\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsRegionNavSidebar from \"./AwsRegionNavSidebar\";\n\nexport default function AwsRegionEdit() {\n const id = String(useParams().id).toLowerCase();\n const { awsRegion, loading, updateOne } = Server.AwsRegion.useOne({\n id,\n canGet: true,\n });\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {awsRegion ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Aws Region not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsRegionNavSidebar from \"./AwsRegionNavSidebar\";\n\nexport default function AwsRegionIndex() {\n const [active, setActive] = useState(true);\n const { awsRegions, loading, reset } = Server.AwsRegion.useAll({\n canGet: true,\n });\n\n const data = useMemo(() => {\n return awsRegions.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, awsRegions]);\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport AwsRegion from \"../../../servers/awsRegions\";\nimport AwsRegionNavSidebar from \"./AwsRegionNavSidebar\";\n\nexport default function AwsRegionNew() {\n const { createOne } = AwsRegion.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }>\n \n createOne(awsRegion).then(({ id }) =>\n setRedirect(`/servers/aws-regions/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport AwsRegionEdit from \"./AwsRegionEdit\";\nimport AwsRegionIndex from \"./AwsRegionIndex\";\nimport AwsRegionNavSidebar from \"./AwsRegionNavSidebar\";\nimport AwsRegionNew from \"./AwsRegionNew\";\n\nexport default function AwsRegionsPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function AwsZoneNavSidebar({ children }) {\n return (\n \n {children}\n
    \n New Aws Zone\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsZoneNavSidebar from \"./AwsZoneNavSidebar\";\n\nexport default function AwsZoneEdit() {\n const id = String(useParams().id).toLowerCase();\n const { awsZone, loading, updateOne } = Server.AwsZone.useOne({\n id,\n canGet: true,\n });\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {awsZone ? (\n <>\n {\n updateOne(values);\n }}\n />\n \n \n ) : (\n

    Aws Zone not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport AwsZoneNavSidebar from \"./AwsZoneNavSidebar\";\n\nexport default function AwsZoneIndex() {\n const [active, setActive] = useState(true);\n const { awsZones, loading, reset } = Server.AwsZone.useAll({\n canGet: true,\n });\n\n const data = useMemo(() => {\n return awsZones.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, awsZones]);\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport AwsZone from \"../../../servers/awsZones\";\nimport AwsZoneNavSidebar from \"./AwsZoneNavSidebar\";\n\nexport default function AwsZoneNew() {\n const { createOne } = AwsZone.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }>\n \n createOne(awsZone).then(({ id }) =>\n setRedirect(`/servers/aws-zones/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport AwsZoneEdit from \"./AwsZoneEdit\";\nimport AwsZoneIndex from \"./AwsZoneIndex\";\nimport AwsZoneNavSidebar from \"./AwsZoneNavSidebar\";\nimport AwsZoneNew from \"./AwsZoneNew\";\n\nexport default function AwsZonesPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport Page from \"../../../common/pages/Page\";\nimport ReservationComparisonTable from \"../../../servers/reservations/ReservationComparisonTable\";\nimport { getReservationComparisonAPI } from \"../../../servers/reservations/state/api\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function ReservationComparison() {\n const { isAdmin, canMaintainServers } = useSelector((state) => state.auth);\n\n if (!isAdmin && !canMaintainServers)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return ;\n}\n\nfunction AllowedPage() {\n const [data, setData] = useState([]);\n const [refreshCtr, setRefreshCtr] = useState(1);\n const [loading, setLoading] = useState(false);\n\n const runComparison = useCallback(() => {\n setLoading(true);\n getReservationComparisonAPI()\n .then(({ data: data }) => {\n setData(data.comparisons);\n })\n .finally(() => setLoading(false));\n }, []);\n\n useEffect(() => {\n runComparison();\n }, [runComparison, refreshCtr]);\n\n return (\n }>\n setRefreshCtr(refreshCtr + 1)}\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function ReservationEdit() {\n const id = String(useParams().id);\n const { reservation, loading, updateOne } = Server.Reservation.useOne({\n id,\n canGet: true,\n });\n const { isAdmin, canMaintainServers } = useSelector((state) => state.auth);\n\n if (!isAdmin && !canMaintainServers)\n return (\n \n );\n\n return (\n }>\n {reservation ? (\n <>\n {\n updateOne(values);\n }}\n isDisabled={true}\n />\n \n \n ) : (\n

    Reservation not found.

    \n )}\n
    \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\n\nimport { _date } from \"../../../common/functions/dates\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nconst today = _date.stamp(moment());\n\nexport default function ReservationIndex() {\n const [active, setActive] = useState(true);\n const { reservations, loading, reset } = Server.Reservation.useAll({\n canGet: true,\n });\n\n const data = useMemo(() => {\n return reservations.filter((e) => {\n const expired = today > e.endDate;\n return expired === !active;\n });\n }, [active, reservations]);\n\n const { isAdmin, canMaintainServers } = useSelector((state) => state.auth);\n\n if (!isAdmin && !canMaintainServers)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport ReservationComparison from \"./ReservationComparison\";\nimport ReservationEdit from \"./ReservationEdit\";\nimport ReservationIndex from \"./ReservationIndex\";\n\nexport default function ReservationsPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport ServerNavSidebar from \"../ServerNavSidebar\";\n\nexport default function S3BucketNavSidebar({ children }) {\n return (\n \n {children}\n
    \n \n New S3 Bucket\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport StampDisplay from \"../../../common/components/StampDisplay\";\nimport Page from \"../../../common/pages/Page\";\nimport Server from \"../../../servers\";\nimport S3BucketNavSidebar from \"./S3BucketNavSidebar\";\n\nexport default function S3BucketEdit() {\n const id = String(useParams().id);\n const { s3Bucket, loading, updateOne } = Server.S3Bucket.useOne({\n id,\n canGet: true,\n });\n const { isAdmin, canMaintainServers } = useSelector((state) => state.auth);\n\n return (\n }>\n {s3Bucket ? (\n <>\n {\n updateOne(values);\n }}\n isDisabled={loading || !(canMaintainServers || isAdmin)}\n />\n \n \n ) : (\n

    S3 Bucket not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport useSearchParams from \"../../../common/hooks/useSearchParams\";\nimport Page from \"../../../common/pages/Page\";\nimport Customer from \"../../../customers\";\nimport Server from \"../../../servers\";\nimport S3BucketNavSidebar from \"./S3BucketNavSidebar\";\n\nexport default function S3BucketIndex() {\n const customerId = useSearchParams(\"customer\");\n const { customer } = Customer.useOne({ id: customerId, canGet: false });\n const [active, setActive] = useState(true);\n const { s3Buckets, loading, reset } = Server.S3Bucket.useSearch({\n canGet: true,\n search: customerId ? { customerId } : {},\n });\n\n const data = useMemo(() => {\n return s3Buckets.filter((e) => {\n return e.isInactive === !active;\n });\n }, [active, s3Buckets]);\n\n const title = customer?.name ? `S3 Buckets: ${customer?.name}` : \"S3 Buckets\";\n\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport S3Bucket from \"../../../servers/s3Buckets\";\nimport S3BucketNavSidebar from \"./S3BucketNavSidebar\";\n\nexport default function S3BucketNew() {\n const { createOne } = S3Bucket.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainServers, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainServers || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n createOne(s3Bucket).then(({ id }) =>\n setRedirect(`/servers/s3-buckets/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport S3BucketEdit from \"./S3BucketEdit\";\nimport S3BucketIndex from \"./S3BucketIndex\";\nimport S3BucketNew from \"./S3BucketNew\";\n\nexport default function S3BucketsPages() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\nimport Customer from \"../../customers\";\nimport Server from \"../../servers\";\nimport ServerNavSidebar from \"./ServerNavSidebar\";\n\nexport default function ServerIndex() {\n const customerId = useSearchParams(\"customer\");\n const { customer } = Customer.useOne({ id: customerId, canGet: false });\n const [statusFilter, setStatusFilter] = useState(\"A\");\n\n Server.AwsAccount.useAll({\n canGet: true,\n });\n Server.AwsZone.useAll({\n canGet: true,\n });\n Server.AwsInstanceType.useAll({\n canGet: true,\n });\n\n const { servers, reset, getMany, loading } = Server.useSearch({\n canGet: \"true\",\n search: customerId ? { customerId } : {},\n });\n\n const title = customer?.name ? `Servers: ${customer?.name}` : \"Servers\";\n\n const data = useMemo(() => {\n return servers.filter((e) => {\n return e.status === statusFilter;\n });\n }, [statusFilter, servers]);\n\n return (\n }>\n \n setStatusFilter(\"A\")}\n >\n Active\n \n setStatusFilter(\"O\")}\n >\n Old\n \n setStatusFilter(\"I\")}\n >\n Inactive\n \n \n\n {\n reset();\n getMany();\n }}\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../common/hooks/useRedirect\";\nimport Page from \"../../common/pages/Page\";\nimport Server from \"../../servers\";\nimport ServerNavSidebar from \"./ServerNavSidebar\";\n\nexport default function ServerNew() {\n const { createOne } = Server.useOne();\n const [, setRedirect] = useRedirect();\n\n const { canMaintainServers, isAdmin } = useSelector((state) => state.auth);\n\n if (!(canMaintainServers || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n \n createOne(server).then(({ id }) => setRedirect(`/servers/${id}`))\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { Alert } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport UserActivityTable from \"../../activity/userActivity/UserActivityTable\";\nimport StampDisplay from \"../../common/components/StampDisplay\";\nimport Page from \"../../common/pages/Page\";\nimport Server from \"../../servers\";\nimport ServerNavSidebar from \"./ServerNavSidebar\";\n\nexport default function ServerShow() {\n const id = parseInt(useParams().id);\n const { server, updateOne, loading } = Server.useOne({ id, canGet: true });\n const title = `Server${server?.description ? \": \" + server.description : \"\"}`;\n\n const { isAdmin, canMaintainServers } = useSelector((state) => state.auth);\n\n return (\n }\n >\n {server ? (\n <>\n updateOne(server)}\n isDisabled={loading || !(canMaintainServers || isAdmin)}\n />\n \n \n \n \n \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport AwsAccountsPages from \"./awsAccounts\";\nimport AwsInstanceTypePages from \"./awsInstanceTypes\";\nimport AwsRegionsPages from \"./awsRegions\";\nimport AwsZonesPages from \"./awsZones\";\nimport ReservationsPages from \"./reservations\";\nimport S3BucketsPages from \"./s3Buckets\";\nimport ServerIndex from \"./ServerIndex\";\nimport ServerNew from \"./ServerNew\";\nimport ServerShow from \"./ServerShow\";\n\nexport default function ServersRouting() {\n let { path } = useRouteMatch();\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","import FileSaver from \"file-saver\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { toast } from \"react-toastify\";\n\nimport { SHARK_URL } from \"../../apis/shark\";\nimport { getToken } from \"../../auth/state/token\";\n\nexport default function useGetPuttyKey() {\n const [loading, setLoading] = useState(false);\n const toastId = useRef(null);\n\n const getPuttyKey = useCallback(async (filename) => {\n setLoading(true);\n\n toastId.current = toast.info(\"Downloading \" + filename + \"...\", {\n autoClose: false,\n });\n getUserPuttyKeyAPI()\n .then((file) => {\n FileSaver.saveAs(file, filename);\n setLoading(false);\n toast.update(toastId.current, {\n render: \"Downloaded (\" + filename + \")\",\n type: toast.TYPE.SUCCESS,\n autoClose: 5000,\n });\n })\n .catch((error) => {\n toast.update(toastId.current, {\n render: `Download Failed (${filename}): ${error}`,\n type: toast.TYPE.ERROR,\n autoClose: 5000,\n });\n console.log(error);\n return Promise.reject(error);\n });\n }, []);\n return { loading, getPuttyKey };\n}\n\nexport async function getUserPuttyKeyAPI() {\n const payload = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n appId: \"T3\",\n command: \"getServerLoginPuttyKey\",\n authToken: getToken(),\n }),\n };\n\n // console.log(payload);\n\n // Step 1: start the fetch and obtain a reader\n let response = await fetch(SHARK_URL + \"/services\", payload);\n\n const type = response.headers.get(\"Content-Type\");\n\n if (type === \"application/json\") {\n const json = await response.json();\n return Promise.reject(json.responseMessage);\n }\n\n return response.blob();\n}\n","import React from \"react\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function SettingsNavSidebar({ children }) {\n return (\n \n Settings\n Watched\n Cache\n
    \n {children}\n
    \n );\n}\n","import _ from \"lodash\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Button, Col, Form, Row } from \"react-bootstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\n\nimport DetailSection from \"../../common/details/DetailSection\";\nimport FieldInput from \"../../common/fields/FieldInput\";\nimport FieldSelect from \"../../common/fields/FieldSelect\";\nimport useGetPuttyKey from \"../../common/hooks/useGetPuttyKey\";\nimport Page from \"../../common/pages/Page\";\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\nimport { settingsActions } from \"../../settings/state\";\nimport useSettings from \"../../settings/useSettings\";\nimport User from \"../../users\";\nimport SettingsNavSidebar from \"./SettingsNavSidebar\";\n\nconst timeZoneOptions = [\n { label: \"America/New_York\", value: \"America/New_York\" },\n { label: \"America/Chicago\", value: \"America/Chicago\" },\n { label: \"America/Denver\", value: \"America/Denver\" },\n { label: \"America/Phoenix\", value: \"America/Phoenix\" },\n { label: \"America/Los_Angeles\", value: \"America/Los_Angeles\" },\n { label: \"Pacific/Honolulu\", value: \"Pacific/Honolulu\" },\n];\n\nexport default function Settings() {\n const { settings: settingsServer } = useSettings({ canGet: true });\n const [settings, setSettings] = useState(settingsServer);\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n setSettings(settingsServer);\n }, [settingsServer]);\n\n useEffect(() => {\n dispatch(settingsActions.updateSettings(settings));\n }, [settings, dispatch]);\n\n const handleChange = useCallback(\n (field, value) => {\n setSettings({\n ...settings,\n [field]: _.isNull(value) || _.isUndefined(value) ? \"\" : value,\n });\n },\n [settings],\n );\n\n return (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction SettingsGeneral({ settings, handleChange }) {\n const { isManager } = useSelector((state) => state.auth);\n\n let timeZoneOption = null;\n if (settings?.googleCalendarTimeZone)\n timeZoneOption = _.find(timeZoneOptions, [\n \"value\",\n settings?.googleCalendarTimeZone,\n ]);\n\n return (\n <>\n \n Customer Sorting\n handleChange(\"customerSort\", e.target.value)}\n value={settings.customerSort}\n >\n \n \n \n \n \n handleChange(\"gmailEmailFromAccount\", value)}\n value={settings?.gmailEmailFromAccount}\n >\n \n \n handleChange(\"googleCalendarTimeZone\", value)}\n value={timeZoneOption}\n options={timeZoneOptions}\n placeholder={\"Select your time zone\"}\n >\n \n \n Experimental Features\n handleChange(\"experimentalFeatures\", e.target.value)}\n value={settings.experimentalFeatures || \"N\"}\n >\n \n \n \n \n \n New Project/CR Settings\n \n Owner\n handleChange(\"defaultOwner\", value)}\n pseudo={true}\n isClearable={true}\n />\n \n\n \n Group\n handleChange(\"defaultGroupId\", value)}\n isClearable={true}\n />\n \n\n \n \n handleChange(\"emailOnOwnerCreate\", e.target.checked)\n }\n />\n \n\n {isManager ? (\n \n \n handleChange(\"emailOnNewDirect\", e.target.checked)\n }\n />\n \n ) : null}\n \n \n );\n}\n\nfunction SettingsDefaults({ settings, handleChange }) {\n return (\n <>\n \n Default CR Filter\n handleChange(\"crFilterId\", value)}\n isClearable={true}\n />\n \n \n Default Project Filter\n \n Owner\n handleChange(\"projectFilterOwner\", value)}\n pseudo={true}\n isClearable={true}\n />\n \n \n Status\n handleChange(\"projectFilterStatusId\", value)}\n isClearable={true}\n />\n \n \n Champion\n handleChange(\"projectFilterChampionId\", value)}\n pseudo={false}\n isChampion={true}\n isClearable={true}\n />\n \n \n Group\n handleChange(\"projectFilterGroupId\", value)}\n isClearable={true}\n />\n \n \n \n );\n}\n\nfunction SettingsTime({ settings, handleChange }) {\n return (\n <>\n \n handleChange(\"minBillableHours\", value)}\n value={settings?.minBillableHours}\n min=\"0\"\n max=\"999\"\n >\n \n \n handleChange(\"minBillableDollars\", value)}\n value={settings?.minBillableDollars}\n min=\"0\"\n max=\"99999\"\n >\n \n \n );\n}\n\nfunction ServerLogin() {\n const { user: id } = useSelector((state) => state.auth);\n const { user } = User.useOne({\n id,\n canGet: true,\n });\n const serverLogin = user?.serverLogin || \"\";\n\n const { getPuttyKey } = useGetPuttyKey();\n return (\n \n \n \n \n \n \n \n \n \n {serverLogin ? (\n getPuttyKey(`${serverLogin}.ppk`)}\n >\n Download Putty Key\n \n ) : null}\n \n \n \n \n );\n}\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../common/fields/FieldSelect\";\nimport parseIntId from \"../common/functions/parseIntId\";\nimport { useEstimatesBySource } from \"./hooks\";\n\nconst EstimateSelectBySource = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n source,\n reference,\n placeholder = \"Select Estimate...\",\n ...props\n },\n ref,\n ) => {\n const { estimates, loading } = useEstimatesBySource({\n search: { source, reference },\n canGet: !!reference && !!source,\n });\n\n const _options = _.sortBy(\n estimates\n .filter((c) => c.inactive === false || c.id === value)\n .map((f) => {\n return { label: f.id, value: parseIntId(f.id) };\n }),\n\n \"label\",\n );\n\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = _options.filter((o) => value.includes(o.value));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n);\n\nexport default EstimateSelectBySource;\n","import React from \"react\";\n\nimport EstimateTable from \"./EstimateTable\";\nimport { useEstimatesBySource } from \"./hooks\";\n\nconst layout = [\"id\", \"type\", \"status\", \"owner\"];\n\nexport default function EstimateTableBySource({ source, reference }) {\n const { estimates, loading, reset } = useEstimatesBySource({\n search: { source, reference },\n canGet: true,\n });\n\n return (\n reset({ source, reference })}\n skeletonLines={3}\n />\n );\n}\n","import EstimateEditorModal from \"./EstimateEditorModal\";\nimport EstimateLink from \"./EstimateLink\";\nimport SelectBySource from \"./EstimateSelectBySource\";\nimport Table from \"./EstimateTable\";\nimport EstimateTableBySource from \"./EstimateTableBySource\";\nimport { useEstimate, useEstimates, useEstimatesBySource } from \"./hooks\";\nimport state from \"./state\";\n\nconst Estimate = {\n // API\n api: state.api,\n // State\n actions: state.actions,\n selectors: state.entity.selectors,\n // Hooks\n useOne: useEstimate,\n useAll: useEstimates,\n useSearch: useEstimatesBySource,\n // Components\n Table,\n Link: EstimateLink,\n SelectBySource,\n TableBySource: EstimateTableBySource,\n Editor: EstimateEditorModal,\n // Related Entity Objects\n};\n\nexport default Estimate;\n","import React, { useEffect, useMemo } from \"react\";\nimport { toast } from \"react-toastify\";\n\nimport Contact from \"./contacts\";\nimport Cr from \"./crs\";\nimport Customer from \"./customers\";\nimport ExpenseCategory from \"./expenses/categories\";\nimport ExpenseType from \"./expenses/types\";\nimport Project from \"./projects\";\nimport useSettings from \"./settings/useSettings\";\nimport { persistor } from \"./store\";\nimport Time from \"./time\";\nimport User from \"./users\";\n\nexport default function usePreloader({ canGet = false }) {\n const opts = { canGet };\n const preloadedEntities = {\n settings: useSettings(opts),\n customers: Customer.useAll(opts),\n\n users: User.useAll(opts),\n pseudoUser: User.Pseudo.useAll(opts),\n groups: User.Group.useAll(opts),\n groupPrograms: User.Group.Program.useAll(opts),\n teams: User.Team.useAll(opts),\n\n projectStatuses: Project.Status.useAll(opts),\n projectPriorities: Project.Priority.useAll(opts),\n projectSources: Project.Source.useAll(opts),\n projectTypes: Project.Type.useAll(opts),\n projectFolders: Project.Folder.useAll(opts),\n projectEstimateStatuses: Project.EstimateStatus.useAll(opts),\n\n crFilters: Cr.Filter.useAll(opts),\n crFilterFavorites: Cr.Filter.Favorite.useAll(opts),\n crStatuses: Cr.Status.useAll(opts),\n crNotificationTypes: Cr.NotificationType.useAll(opts),\n crDifficulties: Cr.Difficulty.useAll(opts),\n crModules: Cr.Module.useAll(opts),\n crTableLayouts: Cr.TableLayout.useAll(opts),\n\n timeHoldReasons: Time.HoldReason.useAll(opts),\n timeInternalProjects: Time.InternalProject.useAll(opts),\n timeBillableOverrideReasons: Time.BillableOverrideReason.useAll(opts),\n\n expenseCategories: ExpenseCategory.useAll(opts),\n expenseTypes: ExpenseType.useAll(opts),\n\n contactTypes: Contact.ContactType.useAll(opts),\n };\n\n const toastId = React.useRef(null);\n\n const loadingArgs = Object.entries(preloadedEntities).map(\n ([, e]) => e.loading,\n );\n\n const [loading, isLoading, progress] = useMemo(() => {\n const loaded = loadingArgs.reduce((sum, l) => (l ? sum : sum + 1), 0);\n const isLoading = loaded !== loadingArgs.length;\n const progress = loaded / loadingArgs.length;\n return [loadingArgs, isLoading, progress];\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, loadingArgs);\n\n useEffect(() => {\n // console.log(progress);\n if (!canGet) return;\n if (isLoading) {\n if (toastId.current === null && progress < 0.8) {\n toastId.current = toast(\"Loading cache from server...\", {\n type: toast.TYPE.INFO,\n hideProgressBar: false,\n progress: 0.01,\n autoClose: 0,\n });\n console.log(\"Master files loading...\");\n } else {\n toast.update(toastId.current, {\n progress: progress,\n });\n }\n } else if (!isLoading && toastId.current !== null) {\n console.log(\"Master files loaded.\");\n persistor.flush().then(() => {\n console.log(\"Master files saved.\");\n toast.update(toastId.current, {\n render: \"Cache loaded.\",\n type: toast.TYPE.SUCCESS,\n hideProgressBar: true,\n progress: undefined,\n autoClose: 5000,\n });\n });\n }\n }, [loading, isLoading, progress, canGet]);\n\n return { loading: isLoading, progress, entities: preloadedEntities };\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React from \"react\";\nimport { Button, Col, Row, Table } from \"react-bootstrap\";\n\nimport useLogout from \"../../auth/useLogout\";\nimport Page from \"../../common/pages/Page\";\nimport Contact from \"../../contacts\";\nimport Cr from \"../../crs\";\nimport Customer from \"../../customers\";\nimport JiraProject from \"../../customers/jiraProjects\";\nimport Dbc from \"../../dbc\";\nimport Estimate from \"../../estimates\";\nimport Expense from \"../../expenses\";\nimport Project from \"../../projects\";\nimport Server from \"../../servers\";\nimport usePreloader from \"../../usePreloader\";\nimport SettingsNavSidebar from \"./SettingsNavSidebar\";\n\nfunction CacheItem({ entity, name }) {\n const _name = _.startCase(name);\n const {\n reset,\n loading,\n entities,\n lastUpdate,\n [_.camelCase(name)]: namedEntities,\n } = entity;\n const _entities = namedEntities || entities;\n return (\n \n {_name}\n \n {loading ? \"Loading\" : _entities ? _entities.length : null}\n \n {moment(lastUpdate).fromNow()}\n \n {\n reset();\n }}\n >\n Reload\n \n \n \n );\n}\n\nexport default function SettingsCache() {\n const { entities } = usePreloader({ canGet: false });\n const caches = Object.entries(entities).map(([key, e]) => {\n return ;\n });\n const logout = useLogout({ canResetState: true });\n return (\n }>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {caches}\n
    NameEntriesLast Updated
    \n \n \n \n \n
    \n
    \n );\n}\n\nfunction CacheClearableItem({ hook, name }) {\n const { entities, reset } = hook({ canGet: false });\n return (\n \n {name}\n {entities.length}\n \n {\n reset();\n }}\n >\n Clear\n \n \n \n );\n}\n\nfunction CacheClearables() {\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
    NameEntries
    \n );\n}\n","import React, { useEffect, useMemo } from \"react\";\nimport { Card, Col, Row } from \"react-bootstrap\";\n\nimport Watch from \"../../activity/watches\";\nimport Page from \"../../common/pages/Page\";\nimport Cr from \"../../crs\";\nimport Project from \"../../projects\";\nimport SettingsNavSidebar from \"./SettingsNavSidebar\";\n\nexport default function SettingsWatched() {\n const { watches, reset, getMany, loading } = Watch.useAll({ canGet: false });\n useEffect(() => {\n reset();\n getMany();\n }, [reset, getMany]);\n return (\n }\n lead={loading ? \"Loading...\" : null}\n >\n {loading ? null : }\n \n );\n}\n\nfunction Cards({ watches }) {\n const { projects, crs } = useMemo(() => {\n const projects = watches.filter((w) => w.type === \"project\");\n const crs = watches.filter((w) => w.type === \"cr\");\n return { projects, crs };\n }, [watches]);\n return (\n \n \n

    Projects

    \n {projects?.length\n ? projects.map((p, idx) => (\n \n ))\n : \"No Projects currently being watched\"}\n \n \n

    CRs

    \n {crs?.length\n ? crs.map((p, idx) => (\n \n ))\n : \"No CRs currently being watched\"}\n \n
    \n );\n}\n\nfunction WatchCard({ data }) {\n let link = \"\";\n switch (data?.type) {\n case \"project\":\n link = (\n {`Project ${data?.key}`}\n );\n break;\n\n case \"cr\":\n link = {`CR ${data?.key}`};\n break;\n }\n\n return (\n \n {link || \"\"}\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport Settings from \"./Settings\";\nimport SettingsCache from \"./SettingsCache\";\nimport SettingsWatched from \"./SettingsWatched\";\n\nexport default function SettingsRouting() {\n let { path } = useRouteMatch();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import moment from \"moment\";\nimport React from \"react\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function TimeNavSidebar({ children }) {\n return (\n \n \n Daily Time\n \n Statistics\n Unassigned\n Internal\n {children}\n \n );\n}\n","import React from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useHistory, useParams } from \"react-router-dom\";\n\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\nimport Page from \"../../common/pages/Page\";\nimport Time from \"../../time\";\nimport TimeNavSidebar from \"./TimeNavSidebar\";\n\nexport default function TimeEdit() {\n const id = useParams().id;\n const openTimers = useSearchParams(\"openTimers\");\n let history = useHistory();\n return (\n \n
    \n {`Time ${id}`}\n \n }\n >\n \n \n history.push(\"/home\")}\n onCancel={() => history.push(\"/home\")}\n onDelete={() => history.push(\"/home\")}\n />\n \n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useState } from \"react\";\nimport { Button, Col, Row, Tab } from \"react-bootstrap\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, useHistory } from \"react-router-dom\";\n\nimport CrLinkWithContextMenu from \"../../common/components/CrLinkWithContextMenu\";\nimport { _date, _datetime } from \"../../common/functions/dates\";\nimport { timerCalculation } from \"../../common/functions/timerCalculation\";\nimport useSearchParams from \"../../common/hooks/useSearchParams\";\nimport Page from \"../../common/pages/Page\";\nimport Time from \"../../time\";\nimport TimeNavSidebar from \"./TimeNavSidebar\";\n\nconst TimeTableComponents = {\n CrLink: CrLinkWithContextMenu,\n};\n\nexport default function TimeIndex() {\n const loggedInUser = useSelector((state) => state.auth.user);\n const paramsUser = useSearchParams(\"user\");\n const paramsDate = useSearchParams(\"date\");\n const showTimersParam = useSearchParams(\"showTimers\");\n const user = _.isEmpty(paramsUser) ? loggedInUser : paramsUser;\n const date = moment(paramsDate);\n const history = useHistory();\n\n const { times, loading, getTimes } = Time.useAll({\n filter: {\n userId: user,\n date: paramsDate,\n },\n });\n\n const showTimers = showTimersParam === \"true\";\n const { getCurrentTimer } = Time.useCurrentTimer({\n canGet: true,\n });\n\n const onRefresh = useCallback(() => {\n getTimes();\n getCurrentTimer();\n }, [getCurrentTimer, getTimes]);\n\n function getUrl({ user, date, showTimers = false }) {\n return `/time?user=${user}&date=${date}&showTimers=${showTimers}`;\n }\n\n if (!date.isValid() || !paramsUser) {\n const parmsDate = date.isValid()\n ? _date.urlParams(date)\n : _date.urlParams(moment());\n return ;\n }\n\n const totalHours = times.reduce(\n (total, row) => {\n //if (isNaN(parseFloat(row.values.totalHours))) {\n // return sum;\n // } else {\n\n let hours = parseFloat(row.hours) + getRoundedHours(row.date, row.timers);\n if (row.isBillable) {\n return { bill: total.bill + hours, nonbill: total.nonbill };\n } else {\n return { bill: total.bill, nonbill: total.nonbill + hours };\n }\n\n // return hours;\n },\n { bill: 0, nonbill: 0 },\n );\n\n return (\n }\n >\n \n \n \n \n \n \n \n \n \n \n \n history.push(\n getUrl({\n user,\n date: paramsDate,\n showTimers: false,\n }),\n )\n }\n variant={showTimers ? \"secondary\" : \"primary\"}\n >\n Time\n \n \n history.push(\n getUrl({\n user,\n date: paramsDate,\n showTimers: true,\n }),\n )\n }\n variant={showTimers ? \"primary\" : \"secondary\"}\n >\n Timers\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction IndexNavSidebar({ date, onChange }) {\n const [startTimer, setStartTimer] = useState(false);\n const [showNewModal, setShowNewModal] = useState(false);\n const hideNewModal = useCallback(() => setShowNewModal(false), []);\n\n const timer = Time.useTimer();\n\n const [ModifyModal, modifyModelProps, setModifyShow] = Time.useModifyModal({\n handleChange: () => {\n setModifyShow();\n onChange();\n },\n });\n\n /*\n useEffect(() => {\n if (stoppingTimer) {\n dispatch(currentTimerActions.stopCurrentTimer({}))\n .then(unwrapResult)\n .then(result => {\n setStoppingTimer(false);\n //onSaveSuccess(result);\n })\n .catch(result => {\n setStoppingTimer(false);\n });\n }\n }, [dispatch, stoppingTimer]);\n */\n\n return (\n \n
    \n \n \n {\n setStartTimer(false);\n setShowNewModal(true);\n }}\n >\n New Time Entry\n \n \n \n\n {timer.current.status !== \"running\" ? (\n \n \n {\n setStartTimer(true);\n setShowNewModal(true);\n }}\n >\n Start Timer (New)\n \n \n \n ) : (\n \n \n setModifyShow(timer.current.id, true)}\n variant=\"danger\"\n block\n >\n \n {\"Stop timer\"}\n \n \n \n {\"Started on: \" +\n _datetime.displayTime(timer.current.startTime)}\n \n \n \n {timer.current.timerDescription}\n \n \n \n \n )}\n {timer.current.status === \"stopped\" ? (\n \n \n timer.restart(timer.current.id)}\n variant=\"warning\"\n >\n \n {\"Restart last timer:\"}\n \n \n \n {\"Ended: \" + _datetime.displayTime(timer.current.endTime)}\n \n \n \n {timer.current.timerDescription}\n \n \n \n \n ) : null}\n {\n hideNewModal();\n onChange();\n }}\n onCancel={hideNewModal}\n />\n \n \n );\n}\n\nfunction getRoundedHours(dbcDate, timers) {\n const momentDate = _date.fromStamp(dbcDate);\n return timerCalculation(momentDate, timers).roundedHours;\n}\n","import moment from \"moment\";\nimport React, { useMemo, useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport ReactDatePicker from \"react-datepicker\";\nimport { useSelector } from \"react-redux\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Time from \"../../time\";\nimport TimeNavSidebar from \"./TimeNavSidebar\";\n\nexport default function TimeInternal() {\n const loggedInUser = useSelector((state) => state.auth.user);\n\n const [startDate, setStartDate] = useState(moment());\n const dateRange = useMemo(() => {\n const year = moment().year(startDate.year());\n return {\n startDate: moment(year).startOf(\"year\"),\n endDate: moment(year).endOf(\"year\"),\n };\n }, [startDate]);\n\n const { times, loading, getTimes } = Time.useAll({\n filter: {\n userId: loggedInUser,\n timeType: \"Internal\",\n ...dateRange,\n },\n });\n return (\n }\n >\n \n \n setStartDate(moment(date))}\n showYearPicker\n dateFormat=\"yyyy\"\n />\n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../common/pages/Page\";\nimport Time from \"../../time\";\nimport TimeNavSidebar from \"./TimeNavSidebar\";\n\nexport default function TimeNew() {\n return (\n }>\n \n \n );\n}\n","import _ from \"lodash\";\nimport moment from \"moment\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { Button, Col, Form, InputGroup, Row } from \"react-bootstrap\";\nimport { BsArrowLeftShort, BsArrowRightShort } from \"react-icons/bs\";\nimport NumberFormat from \"react-number-format\";\nimport { useSelector } from \"react-redux\";\n\nimport FieldDate from \"../../common/fields/FieldDate\";\nimport { _date } from \"../../common/functions/dates\";\nimport useReinitState from \"../../common/hooks/useReinitState\";\nimport Page from \"../../common/pages/Page\";\nimport Table from \"../../common/tables/Table\";\nimport useSettings from \"../../settings/useSettings\";\nimport Time from \"../../time\";\nimport User from \"../../users\";\nimport TimeNavSidebar from \"./TimeNavSidebar\";\n\nexport default function TimeStats() {\n const loggedInUser = useSelector((state) => state.auth.user);\n const [key, setKey] = useState(\"weeks\");\n const [startDate, setStartDate] = useState(moment());\n const [endDate, setEndDate] = useState(moment());\n const [userId, setUserId] = useState(loggedInUser);\n\n const offsetDate = (offset = 0) => {\n setStartDate((d) => {\n return moment(d).subtract(offset, key);\n });\n setEndDate((d) => {\n return moment(d).subtract(offset, key);\n });\n };\n\n const getDates = useCallback(() => {\n if (key !== \"custom\") {\n let start = moment(startDate);\n let end = moment(startDate);\n start.startOf(key);\n end.endOf(key);\n return [start.toISOString().toString(), end.toISOString().toString()];\n } else {\n return [\n startDate.startOf(\"days\").toISOString().toString(),\n endDate.endOf(\"days\").toISOString().toString(),\n ];\n }\n }, [key, startDate, endDate]);\n\n const [_startDate, _endDate] = getDates();\n\n const onUserChange = (userIdNew) => setUserId(userIdNew);\n\n return (\n }>\n \n \n onUserChange(value)}\n isClearable={false}\n hasMeButton={true}\n styles={{ menu: (provided) => ({ ...provided, zIndex: 9999 }) }}\n className={\"py=1\"}\n />\n \n \n \n \n \n Date Range\n {\n const k = e.target.value;\n setKey(k);\n if (k === \"custom\") {\n if (startDate > endDate) setStartDate(moment(endDate));\n }\n }}\n >\n \n \n \n \n \n \n \n \n {key !== \"custom\" ? (\n \n \n {_date.display(startDate)}\n \n \n offsetDate(1)}\n >\n \n \n offsetDate(-1)}\n >\n \n \n setStartDate(moment())}\n >\n Today\n \n \n \n \n \n ) : (\n {\n setStartDate(start);\n setEndDate(end);\n }}\n />\n )}\n \n \n \n \n \n \n \n );\n}\n\nfunction TimeStatsTable({ startDate, endDate, type, userId, canSeeTargets }) {\n const { stats = {}, loading } = Time.useStats({\n key: \"day\",\n startDate: startDate,\n endDate: endDate,\n userId: userId,\n });\n\n const { requiredHours } = stats;\n\n const { settings: { minBillableDollars } = {} } = useSettings({\n blocked: true,\n });\n\n const getMinBillDollars = useMemo(() => {\n if (!minBillableDollars) return 0;\n const rate = parseFloat(minBillableDollars);\n if (!rate) return 0;\n\n // Moment handles months/years differently since 1/1 2/1 = 1.0\n let start = moment(startDate);\n let end = moment(endDate);\n if (type === \"days\" && !_.isUndefined(requiredHours)) {\n // base it off of the hourly rate\n // (yearly work hours per opm.gov minus average vacation 1 week + 2 days)\n return requiredHours * ((minBillableDollars * 12) / (2087 - 56));\n } else {\n end.add(1, type).startOf(type);\n\n const months = end.diff(start, \"months\", true);\n return months * rate;\n }\n }, [minBillableDollars, requiredHours, startDate, endDate, type]);\n\n const data = [\n {\n header: \"Billable\",\n hours: stats?.billableHours,\n overtimeHours: stats?.overtimeBillableHours,\n totalHours: _.sum([stats?.billableHours, stats?.overtimeBillableHours]),\n totalDollars: stats?.totalBillableDollars,\n },\n {\n header: \"Non-Billable\",\n hours: stats?.NonBillHours,\n overtimeHours: stats?.overtimeNonBillHours,\n totalHours: _.sum([stats?.NonBillHours, stats?.overtimeNonBillHours]),\n },\n {\n header: \"Total\",\n hours: _.sum([stats?.billableHours, stats?.NonBillHours]),\n overtimeHours: _.sum([\n stats?.overtimeBillableHours,\n stats?.overtimeNonBillHours,\n ]),\n totalHours: _.sum([\n stats?.NonBillHours,\n stats?.overtimeNonBillHours,\n stats?.billableHours,\n stats?.overtimeBillableHours,\n ]),\n totalDollars: stats?.totalBillableDollars,\n },\n {\n header: \"Required\",\n hours: stats?.requiredHours,\n totalDollars: getMinBillDollars,\n },\n {\n header: \"Targets\",\n hours:\n _.sum([stats?.billableHours, stats?.NonBillHours]) /\n stats?.requiredHours,\n totalDollars: stats?.totalBillableDollars / getMinBillDollars,\n },\n ];\n return (\n \n \n \n \n

    \n {_date.display(startDate) + \" - \" + _date.display(endDate)}\n

    \n \n
    \n \n \n {value},\n },\n {\n id: \"hours\",\n Header: \"Hours\",\n accessor: \"hours\",\n disableSortBy: true,\n dataType: \"number\",\n\n Cell: ({ row: { index }, value }) => {\n let decScale = 2;\n let suffix = \"\";\n let printValue = value;\n if (index == 4) {\n decScale = 1;\n suffix = \"%\";\n printValue *= 100;\n }\n return canSeeTargets || index != 4 ? (\n \n \n \n ) : (\n \n );\n },\n },\n {\n id: \"overtimeHours\",\n Header: \"BAC\",\n accessor: \"overtimeHours\",\n disableSortBy: true,\n dataType: \"number\",\n className: \"border-right\",\n\n Cell: ({ value }) => (\n \n \n \n ),\n },\n {\n id: \"totalHours\",\n Header: \"Total Hours\",\n accessor: \"totalHours\",\n disableSortBy: true,\n dataType: \"number\",\n\n Cell: ({ value }) => (\n \n \n \n ),\n },\n {\n id: \"totalDollars\",\n Header: \"Total Dollars\",\n accessor: \"totalDollars\",\n disableSortBy: true,\n dataType: \"number\",\n\n Cell: ({ row: { index }, value }) => {\n let decScale = 2;\n let suffix = \"\";\n let prefix = \"$\";\n let printValue = value;\n if (index == 4) {\n decScale = 1;\n suffix = \"%\";\n prefix = \"\";\n printValue *= 100;\n }\n return canSeeTargets || (index != 3 && index != 4) ? (\n \n \n \n ) : (\n \n );\n },\n },\n ]}\n data={loading ? [] : data}\n />\n \n \n \n
    \n );\n}\n\nfunction CustomDateRange({ onChange, startDate: start, endDate: end }) {\n const [startDate, setStartDate] = useReinitState(start);\n const [endDate, setEndDate] = useReinitState(end);\n\n return (\n \n \n \n {\n setStartDate(value);\n console.log(value);\n }}\n includeNow={false}\n maxDate={endDate}\n />\n \n \n setEndDate(value)}\n includeNow={false}\n minDate={startDate}\n />\n \n \n onChange(moment(startDate), moment(endDate))}\n >\n Submit\n \n \n \n \n );\n}\n","import moment from \"moment\";\nimport React, { useMemo } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { _date } from \"../../common/functions/dates\";\nimport Page from \"../../common/pages/Page\";\nimport Time from \"../../time\";\nimport TimeNavSidebar from \"./TimeNavSidebar\";\n\nexport default function TimeUnassigned() {\n const loggedInUser = useSelector((state) => state.auth.user);\n const [startDate, endDate] = useMemo(\n () => [moment().month(-1).startOf(\"month\"), moment().endOf(\"month\")],\n [],\n );\n const { times, loading, getTimes } = Time.useAll({\n filter: {\n userId: loggedInUser,\n startDate,\n endDate,\n timeType: \"Customer\",\n },\n });\n return (\n }\n >\n \n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport TimeEdit from \"./TimeEdit\";\nimport TimeIndex from \"./TimeIndex\";\nimport TimeInternal from \"./TimeInternal\";\nimport TimeNew from \"./TimeNew\";\nimport TimeStats from \"./TimeStats\";\nimport TimeUnassigned from \"./TimeUnassigned\";\n\nexport default function TimeRouting() {\n let { path } = useRouteMatch();\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","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport NavSidebar from \"../../common/navs/NavSidebar\";\nimport NavSidebarItem from \"../../common/navs/NavSidebarItem\";\n\nexport default function UserNavSidebar({ children }) {\n const { isManager, isAdmin, canMaintainContracts } = useSelector(\n (state) => state.auth,\n );\n return (\n \n Users\n\n {isManager || isAdmin ? (\n \n Notification Groups\n \n ) : null}\n {isManager || isAdmin || canMaintainContracts ? (\n \n User Groupings\n \n ) : null}\n {isAdmin ? (\n Pseudo Users\n ) : null}\n
    \n {children}\n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport UserNavSidebar from \"../UserNavSidebar\";\n\nexport default function NotificationGroupNavSidebar({ children }) {\n return (\n \n \n New group\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport NotificationGroupNavSidebar from \"./NotificationGroupNavSidebar\";\n\nexport default function NotificationGroupEdit() {\n const id = String(useParams().id).toUpperCase();\n const { notificationGroup, loading, updateOne } =\n User.NotificationGroup.useOne({ id, canGet: true });\n const { isManager, isAdmin } = useSelector((state) => state.auth);\n\n if (!(isManager || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }\n >\n {notificationGroup ? (\n updateOne(values)}\n />\n ) : (\n

    Notification group not found.

    \n )}\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport NotificationGroupNavSidebar from \"./NotificationGroupNavSidebar\";\n\nexport default function NotificationGroupIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = User.NotificationGroup.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => entities.filter((e) => e.inactive === !active),\n [active, entities],\n );\n return (\n }\n >\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport NotificationGroupNavSidebar from \"./NotificationGroupNavSidebar\";\n\nexport default function NotificationGroupNew() {\n const [, setRedirect] = useRedirect();\n return (\n }\n >\n setRedirect(`/users/notification-groups/${id}`)}\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport NotificationGroupEdit from \"./NotificationGroupEdit\";\nimport NotificationGroupIndex from \"./NotificationGroupIndex\";\nimport NotificationGroupNavSidebar from \"./NotificationGroupNavSidebar\";\nimport NotificationGroupNew from \"./NotificationGroupNew\";\n\nexport default function NotificationGroupsPages() {\n let { path } = useRouteMatch();\n\n const { isManager, isAdmin } = useSelector((state) => state.auth);\n\n if (!(isManager || isAdmin))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport UserNavSidebar from \"../UserNavSidebar\";\n\nexport default function PseudoNavSidebar({ children }) {\n return (\n \n New Pseudo User\n {children}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport PseudoNavSidebar from \"./PseudoNavSidebar\";\n\nexport default function PseudoEdit() {\n const id = String(useParams().id).toUpperCase();\n const { pseudo, loading, updateOne } = User.Pseudo.useOne({\n id,\n canGet: true,\n });\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {pseudo ? (\n {\n updateOne(values);\n }}\n />\n ) : (\n

    Pseudo user not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport PseudoNavSidebar from \"./PseudoNavSidebar\";\n\nexport default function PseudoIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = User.Pseudo.useAll({\n canGet: true,\n });\n const data = useMemo(() => {\n return entities.filter((e) => {\n return e.inactive === !active;\n });\n }, [active, entities]);\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport Pseudo from \"../../../users/pseudo\";\nimport PseudoNavSidebar from \"./PseudoNavSidebar\";\n\nexport default function PseudoNew() {\n const { createOne } = Pseudo.useOne();\n const [, setRedirect] = useRedirect();\n return (\n }>\n \n createOne(pseudo).then(({ id }) =>\n setRedirect(`/users/pseudos/${id}`),\n )\n }\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport PseudoEdit from \"./PseudoEdit\";\nimport PseudoIndex from \"./PseudoIndex\";\nimport PseudoNavSidebar from \"./PseudoNavSidebar\";\nimport PseudoNew from \"./PseudoNew\";\n\nexport default function PseudosPages() {\n let { path } = useRouteMatch();\n\n const { isAdmin } = useSelector((state) => state.auth);\n\n if (!isAdmin)\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport NavSidebarItem from \"../../../common/navs/NavSidebarItem\";\nimport UserNavSidebar from \"../UserNavSidebar\";\n\nexport default function UserGroupingNavSidebar({ children }) {\n return (\n \n \n New grouping\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport UserGroupingNavSidebar from \"./UserGroupingNavSidebar\";\n\nexport default function UserGroupingEdit() {\n const id = String(useParams().id).toUpperCase();\n const { userGrouping, loading, updateOne } = User.UserGrouping.useOne({\n id,\n canGet: true,\n });\n const { isManager, isAdmin, canMaintainContracts } = useSelector(\n (state) => state.auth,\n );\n\n if (!(isManager || isAdmin || canMaintainContracts))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n {userGrouping ? (\n updateOne(values)}\n />\n ) : (\n

    User Grouping not found.

    \n )}\n
    \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport { ButtonGroup, ToggleButton } from \"react-bootstrap\";\n\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport UserGroupingNavSidebar from \"./UserGroupingNavSidebar\";\n\nexport default function UserGroupingIndex() {\n const [active, setActive] = useState(true);\n const { entities, loading, reset } = User.UserGrouping.useAll({\n canGet: true,\n });\n const data = useMemo(\n () => entities.filter((e) => e.isInactive === !active),\n [active, entities],\n );\n return (\n }>\n \n setActive(e.currentTarget.value === \"true\")}\n >\n Active\n \n setActive(e.currentTarget.value !== \"false\")}\n >\n Inactive\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport useRedirect from \"../../../common/hooks/useRedirect\";\nimport Page from \"../../../common/pages/Page\";\nimport User from \"../../../users\";\nimport UserGroupingNavSidebar from \"./UserGroupingNavSidebar\";\n\nexport default function UserGroupingNew() {\n const [, setRedirect] = useRedirect();\n const { isManager, isAdmin, canMaintainContracts } = useSelector(\n (state) => state.auth,\n );\n\n if (!(isManager || isAdmin || canMaintainContracts))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n }>\n setRedirect(`/users/user-groupings/${id}`)}\n />\n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Route, Switch, useRouteMatch } from \"react-router\";\n\nimport Page from \"../../../common/pages/Page\";\nimport UserGroupingEdit from \"./UserGroupingEdit\";\nimport UserGroupingIndex from \"./UserGroupingIndex\";\nimport UserGroupingNavSidebar from \"./UserGroupingNavSidebar\";\nimport UserGroupingNew from \"./UserGroupingNew\";\n\nexport default function UserGroupingsPages() {\n let { path } = useRouteMatch();\n\n const { isManager, isAdmin, canMaintainContracts } = useSelector(\n (state) => state.auth,\n );\n\n if (!(isManager || isAdmin || canMaintainContracts))\n return (\n }\n lead=\"You do not have access to this feature\"\n />\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport Page from \"../../common/pages/Page\";\nimport User from \"../../users\";\nimport UserNavSidebar from \"./UserNavSidebar\";\n\nexport default function UserIndex() {\n const { users } = User.useAll();\n return (\n
    \n }>\n e.inactive === false)} />\n \n
    \n );\n}\n","import React, { useState } from \"react\";\nimport { Col, Row } from \"react-bootstrap\";\nimport { useParams } from \"react-router\";\n\nimport Page from \"../../common/pages/Page\";\nimport User from \"../../users\";\nimport UserNavSidebar from \"./UserNavSidebar\";\n\nexport default function UserShow() {\n const id = String(useParams().id).toUpperCase();\n const {\n user,\n loading,\n updateOne,\n createServerLogin,\n deleteServerLogin,\n updateServerLoginKeys,\n updateServerLoginPassword,\n } = User.useOne({\n id,\n canGet: true,\n });\n const title = `User ${user?.id}`;\n\n const [generatedPassword, setGeneratedPassword] = useState(\"\");\n return (\n }\n >\n {user ? (\n \n \n \n \n updateOne(server)}\n isDisabled={loading}\n />\n \n \n \n \n

    Server Login

    \n {\n setGeneratedPassword(\"\");\n switch (submitType) {\n case \"create\":\n return createServerLogin(data).then(\n ({ serverLoginPassword }) =>\n setGeneratedPassword(serverLoginPassword),\n );\n case \"key\":\n return updateServerLoginKeys(data);\n case \"password\":\n return updateServerLoginPassword(data).then(\n ({ serverLoginPassword }) => {\n setGeneratedPassword(serverLoginPassword);\n },\n );\n case \"delete\":\n return deleteServerLogin(data);\n default:\n break;\n }\n }}\n serverLoginPassword={generatedPassword}\n />\n \n
    \n \n
    \n ) : null}\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\n\nimport NotificationGroupsPages from \"./notification-groups\";\nimport PseudosPages from \"./pseudos\";\nimport UserGroupingsPages from \"./userGroupings\";\nimport UserIndex from \"./UserIndex\";\nimport UserShow from \"./UserShow\";\n\nexport default function UsersRouting() {\n let { path } = useRouteMatch();\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\n\nimport ErrorFallback from \"../ErrorFallback\";\nimport ApprovalsRouting from \"./approvals\";\nimport AuthRouting from \"./auth\";\nimport CodeReviewsRouting from \"./codeReviews\";\nimport ContractsRouting from \"./contracts\";\nimport CrsRouting from \"./crs\";\nimport CustomersRouting from \"./customers\";\nimport DbcRouting from \"./dbc\";\nimport EdiRouting from \"./edi\";\nimport ExpensesRouting from \"./expenses\";\nimport Home from \"./Home\";\nimport InvoicesRouting from \"./invoices\";\nimport ProjectsRouting from \"./projects\";\nimport ReportsRouting from \"./reports\";\nimport ServersRouting from \"./servers\";\nimport SettingsRouting from \"./settings\";\nimport TimeRouting from \"./time\";\nimport UsersRouting from \"./users\";\n\nexport default function Routing() {\n const authError = useSelector((state) => state.auth.error);\n\n if (authError)\n return (\n window.location.reload(false)}\n />\n );\n return ;\n}\n\nfunction PrivateRoute({ children, ...props }) {\n const { isLoggedIn } = useSelector((state) => state.auth);\n return (\n {\n return isLoggedIn === true ? (\n children\n ) : (\n \n );\n }}\n />\n );\n}\n\nexport function Routes() {\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport useNotifications from \"./activity/notifications/useNotifications\";\nimport useUserActivity from \"./activity/userActivity/useUserActivity\";\nimport useToken from \"./auth/useToken\";\nimport useIntervalUpdateComponent from \"./common/hooks/useIntervalUpdateComponent\";\nimport Page from \"./common/pages/Page\";\nimport useCurrentTimer from \"./time/currentTimer/useCurrentTimer\";\nimport usePreloader from \"./usePreloader\";\n\nexport default function Preloader({ children, isLoading: cacheLoading }) {\n // Check Token authentication and enable state persistence\n const { loading: loadingAuth, isLoggedIn, error: authError } = useToken();\n\n const blocked = loadingAuth || !isLoggedIn || cacheLoading;\n const canGet = !blocked;\n\n usePreloader({ canGet });\n\n const canRoute =\n !loadingAuth && (!cacheLoading || !isLoggedIn || authError !== null);\n\n return (\n <>\n \n {canRoute ? (\n children\n ) : (\n \n )}\n \n );\n}\n\nfunction Reloader({ canGet }) {\n useIntervalUpdateComponent(5000);\n\n useUserActivity({ canGet });\n useNotifications({ canGet });\n useCurrentTimer({ canGet });\n return null;\n}\n","import moment from \"moment\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Button, Col, Row } from \"react-bootstrap\";\nimport { toast } from \"react-toastify\";\n\nimport useIntervalUpdateComponent from \"./common/hooks/useIntervalUpdateComponent\";\n\nconst compareVersions = (next, prev) => {\n const nextVersions = next.split(/\\./g);\n\n const prevVersions = prev.split(/\\./g);\n while (nextVersions.length || prevVersions.length) {\n const a = Number(nextVersions.shift());\n\n const b = Number(prevVersions.shift());\n // eslint-disable-next-line no-continue\n if (a === b) continue;\n // eslint-disable-next-line no-restricted-globals\n return a > b || isNaN(b);\n }\n return false;\n};\n\nexport default function useVersion({ blocked = false }) {\n const version = localStorage.getItem(\"version\");\n\n const refreshAndUpdate = useCallback((nextVersion, nextBuild) => {\n localStorage.setItem(\"version\", nextVersion);\n localStorage.setItem(\"versionBuild\", nextBuild);\n //Delay clear to make sure version gets saved via redux-persist\n setTimeout(() => {\n if (caches) {\n // Service worker cache should be cleared with caches.delete()\n caches.keys().then(function (names) {\n for (let name of names) caches.delete(name);\n });\n }\n // delete browser cache and hard reload\n window.location.reload();\n }, 500);\n }, []);\n\n useIntervalUpdateComponent(30000);\n const [lastUpdate, setLastUpdate] = useState(null);\n\n const shouldFetch =\n (lastUpdate === null || moment().diff(lastUpdate, \"minutes\") > 5) &&\n !blocked;\n\n const toastId = \"updateVersion\";\n\n useEffect(() => {\n if (!shouldFetch) return;\n fetch(\"/meta.json\")\n .then((response) => response.json())\n .then((meta) => {\n const nextVersion = meta.version;\n const nextBuild = meta.build;\n setLastUpdate(moment());\n if (!version || compareVersions(nextVersion, version))\n toast(\n (props) => (\n refreshAndUpdate(nextVersion, nextBuild)}\n />\n ),\n {\n position: \"bottom-right\",\n autoClose: false,\n closeOnClick: false,\n toastId: toastId,\n },\n );\n })\n .catch(() => {});\n }, [version, shouldFetch, refreshAndUpdate]);\n\n return version;\n}\n\nfunction UpdateToast({ onUpgradeClick, version, versionBuild }) {\n return (\n <>\n \n \n Update Available\n \n \n \n \n \n \n \n \n \n \n v\n {`${version}${\n versionBuild && versionBuild !== \"master\"\n ? \"-\" + versionBuild\n : \"\"\n }`}\n \n \n \n \n );\n}\n","import \"./App.css\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nimport React from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport { Slide, ToastContainer } from \"react-toastify\";\n\nimport AppStateHandler from \"./app/AppStateHandler\";\nimport ErrorFallback from \"./ErrorFallback\";\nimport NavBarCommon from \"./NavBarCommon\";\nimport Routing from \"./pages\";\nimport Preloader from \"./Preloader\";\nimport useVersion from \"./useVersion\";\n\nexport default function App({ isLoading = false }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nfunction VersionChecker({ isLoading }) {\n useVersion({ blocked: isLoading });\n\n return null;\n}\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\",\n );\n });\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import \"./index.css\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\nimport { PersistGate } from \"redux-persist/integration/react\";\n\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport { persistor, store } from \"./store\";\n\nReactDOM.render(\n // \n \n } persistor={persistor}>\n \n \n ,\n // ,\n document.getElementById(\"root\"),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import _ from \"lodash\";\nimport React from \"react\";\n\n/**\n * @typedef {Object} Opts\n * @property {string} name Entity name\n * @property {function} useEntity Hook that returns entity based on id\n * @property {function} label Callback to determine entity label\n */\n\n/**\n * Create Description component based on entity\n * @param {Opts} opts Options\n */\nexport function entityDescription({\n name,\n useEntity,\n label = (e) => e.description,\n getHookArgs = ({ id, value }) => ({ id: id || value }),\n}) {\n const entityDescription = React.memo((props) => {\n const { entity } = useEntity(getHookArgs(props));\n if (!entity) return null;\n\n return <>{label(entity)};\n });\n entityDescription.displayName = `${_.upperFirst(name)}Description`;\n return entityDescription;\n}\n\nexport default entityDescription;\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport FieldSelect from \"../fields/FieldSelect\";\n\n/**\n * @typedef {Object} Opts\n * @property {string} name Entity name\n * @property {function} useEntities Hook that returns entities\n * @property {function} getHookArgs Callback to get hook arguments from props\n * @property {function} label Callback to determine entity label\n * @property {function} filter Callback to filter entities\n */\n\n/**\n * Create Description component based on entity\n * @param {Opts} opts Options\n */\nexport function entitySelect({\n name,\n useEntities,\n getHookArgs = () => ({ canGet: false }),\n label = (e) => e.description || e.id,\n filter = () => true,\n}) {\n const entitySelect = React.forwardRef(\n (\n {\n value,\n isMulti = false,\n placeholder = `Select ${_.startCase(name)}...`,\n shouldValuesSortLikeOptions = false,\n ...props\n } = {},\n ref,\n ) => {\n const { entities = [], loading } = useEntities(getHookArgs(props));\n\n const _options = entities\n .filter((e) => filter(e, value))\n .map((e) => {\n return { label: label(e), value: e.id };\n });\n let valueOption = null;\n if (value)\n if (isMulti) {\n valueOption = shouldValuesSortLikeOptions\n ? _options.filter((o) => value.includes(o.value))\n : value.map((v) => _.find(_options, (o) => o.value === v));\n } else {\n valueOption = _.find(_options, [\"value\", value]);\n }\n\n return (\n \n );\n },\n );\n entitySelect.displayName = `${_.upperFirst(name)}Select`;\n return React.memo(entitySelect);\n}\n\nexport default entitySelect;\n","import _ from \"lodash\";\nimport React from \"react\";\n\nimport { SelectColumnFilterWithOptions } from \"../tables/TableFilters\";\n\n/**\n * @typedef {Object} Opts\n * @property {string} name Entity name\n * @property {function} useEntities Hook that returns entities\n * @property {function} label Callback to determine entity label\n * @property {function} filter Callback to filter entities\n */\n\n/**\n * Create Description component based on entity\n * @param {Opts} opts Options\n */\nexport function entityTableFilter({\n name,\n useEntities,\n label = (e) => e.description,\n filter = () => true,\n}) {\n const entityTableFilter = React.memo(({ column } = {}) => {\n const { filterValue: value } = column;\n const { entities } = useEntities({ canGet: true });\n const _options = entities\n .filter((e) => filter(e, value))\n .map((e) => {\n return { label: label(e), value: e.id };\n });\n return ;\n });\n entityTableFilter.displayName = `${_.upperFirst(name)}Select`;\n return entityTableFilter;\n}\n\nexport default entityTableFilter;\n","export default function parseIntId(id) {\n const idInt = parseInt(id);\n if (isNaN(idInt)) {\n return 0;\n } else {\n return idInt;\n }\n}\n","import { useEffect, useState } from \"react\";\nimport { shallowEqual, useDispatch, useSelector } from \"react-redux\";\n\nimport { settingsActions } from \"./state\";\n\nexport default function useSettings({ canGet = false } = {}) {\n const [loaded, setLoaded] = useState(false);\n const settings = useSelector(\n (state) => state.settings.settings,\n shallowEqual,\n );\n const loading = useSelector((state) => state.settings.requests.loading);\n const dispatch = useDispatch();\n\n useEffect(() => {\n if (canGet) {\n dispatch(settingsActions.getSettings()).then(() => setLoaded(true));\n }\n }, [dispatch, canGet]);\n\n const _loading = canGet && (loading || !loaded);\n\n return { settings, loading: _loading };\n}\n","import { flatMap, isArray, isObject } from \"lodash\";\nimport React from \"react\";\nimport { useFormState } from \"react-hook-form\";\n\nexport function Errors() {\n const { isValid, errors } = useFormState();\n function getFlatValues(prevValues) {\n if (isArray(prevValues))\n return flatMap(prevValues.map((v) => getFlatValues(v)));\n else if (isObject(prevValues)) {\n if (prevValues?.message) return prevValues?.message;\n else return getFlatValues(flatMap(prevValues));\n } else return prevValues;\n }\n const values = getFlatValues(errors);\n if (isValid) return null;\n return (\n
      \n {values?.map((v, idx) => (\n
    • {v}
    • \n ))}\n
    \n );\n}\n","import { isEmpty } from \"lodash\";\nimport React from \"react\";\nimport { OverlayTrigger, Popover } from \"react-bootstrap\";\nimport { useFormState } from \"react-hook-form\";\nimport { BiErrorAlt } from \"react-icons/bi\";\n\nimport { Errors } from \"./Errors\";\n\nexport function ErrorIcon(props) {\n const { isValid, errors } = useFormState();\n if (isValid || isEmpty(errors)) return null;\n return (\n \n Errors\n \n \n \n \n }\n >\n \n \n );\n}\n","import { yupResolver as yupResolverDefault } from \"@hookform/resolvers/yup\";\nimport { isFunction, isUndefined } from \"lodash\";\nimport { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\n\nimport useMemoCompare from \"../hooks/useMemoCompare\";\nimport useReinitState from \"../hooks/useReinitState\";\n\nexport function useForms({\n mode = \"onChange\",\n defaultValues: initialDefaultValues,\n context: initialContext,\n schema: schemaOptions,\n onSubmit,\n ...props\n}) {\n const [context, setContext] = useReinitState(initialContext);\n const defaultValues = useMemoCompare(\n () => initialDefaultValues || {},\n [initialDefaultValues],\n );\n\n const resolver = !isUndefined(schemaOptions)\n ? yupResolver(schemaOptions)\n : undefined;\n const formProps = useForm({\n resolver,\n ...props,\n mode,\n defaultValues,\n context,\n });\n\n const { reset } = formProps;\n useEffect(() => reset(defaultValues), [defaultValues, reset]);\n\n return {\n ...formProps,\n context,\n setContext,\n defaultValues,\n submitForm: isFunction(onSubmit)\n ? (args = {}) =>\n formProps.handleSubmit((data, event) => onSubmit(data, event, args))(\n args,\n )\n : undefined,\n };\n}\n\n// Wrapper around the yup resolver to only return errors that are\n// valid fields for the form\nconst yupResolver =\n ({\n schema: schemaInitial,\n options: schemaOptions = {\n abortEarly: false,\n },\n reduce: shouldReduceSchema = true,\n }) =>\n async (values, context, resolverOptions = {}) => {\n const fields = Object.entries(resolverOptions.fields).map(([name]) => name);\n\n const schema =\n shouldReduceSchema !== true ? schemaInitial : schemaInitial.pick(fields);\n\n // console.log(schema, resolverOptions, values);\n\n // try {\n // const castValues = await schema.validate(\n // values,\n // Object.assign({}, schemaOptions, { context }),\n // );\n // console.log(\"yupResolver.cast\", castValues);\n // } catch (e) {\n // console.log(\"yupResolver.error\", e);\n // }\n\n return await yupResolverDefault(schema, schemaOptions)(\n values,\n context,\n resolverOptions,\n );\n };\n","import { DevTool } from \"@hookform/devtools\";\nimport React from \"react\";\nimport { FormProvider } from \"react-hook-form\";\n\nimport { useForms } from \"./useForms\";\n\nexport function Forms({\n children,\n onSubmit,\n isDisabled,\n showDevTool = false,\n ...props\n}) {\n const formProps = useForms({ onSubmit, ...props });\n\n return (\n \n {children}\n {showDevTool ? : null}\n \n );\n}\n","import { at, isUndefined } from \"lodash\";\nimport moment from \"moment\";\nimport React from \"react\";\nimport { Form } from \"react-bootstrap\";\nimport { useController, useFormContext } from \"react-hook-form\";\nimport TextareaAutosize from \"react-textarea-autosize\";\n\nimport FieldDate from \"../fields/FieldDate\";\n\nfunction FormsControl({ isInvalid, name, rules, children, ...props }) {\n const {\n register,\n formState: { errors },\n formsContext: { isDisabled = false },\n } = useFormContext();\n const [error] = at(errors, name);\n\n return (\n <>\n \n {children}\n \n \n {error?.message}\n \n \n );\n}\n\nexport function FormsField({\n name,\n id = name,\n label,\n children,\n formGroupClassName,\n ...props\n}) {\n return (\n \n {label ? {label} : null}\n \n {children}\n \n \n );\n}\n\nfunction FormsCheck({\n name,\n id = name,\n rules,\n label,\n isInvalid,\n children,\n ...props\n}) {\n const {\n register,\n formState: { errors },\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n const [error] = at(errors, name);\n\n return (\n \n \n {children}\n \n \n {error?.message}\n \n \n );\n}\n\nfunction FormsController({\n name,\n id = name,\n rules,\n label,\n isInvalid,\n isValid,\n className,\n as: As,\n asLabel,\n ...props\n}) {\n const {\n field,\n fieldState: { error },\n } = useController({ name, rules });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n const _isInvalid = isUndefined(isInvalid) ? !!error : !!isInvalid;\n\n let classNames = [\"form-control\"];\n if (className) classNames.push(className);\n if (_isInvalid) classNames.push(\"is-invalid\");\n if (isValid) classNames.push(\"is-valid\");\n\n return (\n \n {label ? {label} : null}\n \n \n {error?.message}\n \n \n );\n}\n\nfunction FormsTextArea(props) {\n return ;\n}\n\nfunction FormsDate({\n name,\n id = name,\n rules,\n label,\n isInvalid,\n isValid,\n className,\n maxDate,\n minDate,\n ...props\n}) {\n const {\n field: { onChange, ...field },\n fieldState: { error },\n } = useController({ name, rules });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n const _isInvalid = isUndefined(isInvalid) ? !!error : !!isInvalid;\n\n let classNames = [\"form-control\"];\n if (className) classNames.push(className);\n if (_isInvalid) classNames.push(\"is-invalid\");\n if (isValid) classNames.push(\"is-valid\");\n\n return (\n \n {\n const newV = moment(v).toISOString();\n onChange(newV);\n }}\n className={classNames.join(\" \")}\n disabled={isDisabled}\n label={label}\n {...props}\n />\n \n {error?.message}\n \n \n );\n}\n\nfunction FormsSelect({\n name,\n id = name,\n rules,\n label,\n isValid,\n as: As,\n ...props\n}) {\n const {\n field,\n fieldState: { error },\n } = useController({ name, rules });\n const {\n formsContext: { isDisabled = false },\n } = useFormContext();\n\n return (\n \n );\n}\n\nFormsField.Control = FormsControl;\nFormsField.Check = FormsCheck;\nFormsField.TextArea = FormsTextArea;\nFormsField.Date = FormsDate;\nFormsField.Select = FormsSelect;\n","import { debounce, isEmpty, isUndefined } from \"lodash\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport isEqual from \"react-fast-compare\";\nimport { useFormContext } from \"react-hook-form\";\n\nconst DEFAULT_LAST = {\n values: null,\n datetime: null,\n hasSubmit: false,\n error: null,\n};\n\nexport function useFormsAutoSubmit({\n debounceMs = 500,\n blocked = false,\n onSubmit: onSubmitOverride,\n onError = () => {},\n shouldResetOnError = false,\n} = {}) {\n const {\n watch,\n handleSubmit,\n reset,\n formState: { dirtyFields, isSubmitting, isValid },\n formsContext: { onSubmit },\n } = useFormContext();\n\n const [last, setLast] = useState(DEFAULT_LAST);\n\n const values = watch();\n const shouldSubmit =\n !(blocked || isUndefined(values) || isEmpty(dirtyFields) || isSubmitting) &&\n isValid;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const debouncer = useCallback(\n debounce(async (func) => await func(), debounceMs),\n [debounceMs],\n );\n // debounce(, debounceMs);\n\n useEffect(() => {\n const submit = async () => {\n let error = null;\n await handleSubmit(\n async (v) =>\n await Promise.resolve(\n onSubmitOverride ? onSubmitOverride(v) : onSubmit(v),\n )\n .then((r) => {\n setLast({\n datetime: new Date().toISOString(),\n values: v,\n hasSubmit: true,\n error: null,\n });\n return r;\n })\n .catch((err) => {\n setLast({\n datetime: new Date().toISOString(),\n values: v,\n hasSubmit: false,\n error: err.message,\n });\n error = err.message;\n throw err;\n }),\n )().finally(() => {\n if (error) {\n if (shouldResetOnError) reset();\n const err = new Error(error);\n onError(err);\n }\n });\n };\n if (shouldSubmit && !isEqual(last.values, values)) {\n debouncer(submit);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values, shouldSubmit]);\n\n const resetAutoSubmit = useCallback(\n ({ hasSubmit, error }) => setLast({ ...DEFAULT_LAST, hasSubmit, error }),\n [],\n );\n\n return { last, reset: resetAutoSubmit };\n}\n","import { debounce } from \"lodash\";\nimport { useState } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\n\nimport useTinykeys from \"../hooks/useTinykeys\";\n\nexport function useFormsKeys({\n debounceMs = 500,\n blocked = false,\n beforeSubmit = () => {},\n afterSubmit = (x) => x,\n} = {}) {\n const {\n handleSubmit,\n formsContext: { onSubmit },\n } = useFormContext();\n\n const [last, setLast] = useState({ values: null, datetime: null });\n\n useTinykeys({\n \"$mod+Enter\": () => {\n const debouncedSubmit = debounce(\n () => {\n beforeSubmit();\n return handleSubmit((v) =>\n Promise.resolve(onSubmit(v)).then((data) => {\n setLast({ datetime: new Date().toISOString(), values: v });\n return afterSubmit(data);\n }),\n )();\n },\n debounceMs,\n { leading: true, trailing: false },\n );\n if (!blocked) debouncedSubmit();\n },\n });\n\n return last;\n}\n","import shark from \"../../apis/shark\";\n\nfunction getUserAPI({ id }) {\n const payload = {\n command: \"getUser\",\n id: id,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\nfunction updateUserAPI(args) {\n const payload = {\n command: \"getUser\",\n ...args,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction getUsersAPI() {\n const payload = {\n command: \"getUsers\",\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData.users }));\n}\n\nfunction getUserRateAPI({ id, projectId, crId }) {\n const payload = {\n command: \"getUserRate\",\n id: id,\n projectId: projectId,\n crId: crId,\n };\n return shark.post(payload);\n}\n\nfunction createServerLoginAPI(args) {\n const payload = {\n command: \"createServerLogin\",\n ...args,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction deleteServerLoginAPI(args) {\n const payload = {\n command: \"deleteServerLogin\",\n ...args,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateServerLoginKeysAPI(args) {\n const payload = {\n command: \"updateServerLoginKeys\",\n ...args,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateServerLoginPasswordAPI(args) {\n const payload = {\n command: \"updateServerLoginPassword\",\n ...args,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nexport const api = {\n getMany: getUsersAPI,\n getOne: getUserAPI,\n updateOne: updateUserAPI,\n getRate: getUserRateAPI,\n createServerLogin: createServerLoginAPI,\n deleteServerLogin: deleteServerLoginAPI,\n updateServerLoginKeys: updateServerLoginKeysAPI,\n updateServerLoginPassword: updateServerLoginPasswordAPI,\n};\n","import { createEntity } from \"../../common/entity\";\n\nexport const entity = createEntity({\n name: \"user\",\n type: \"users\",\n getState: (state) => state.users.users,\n});\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport { createEntityActions } from \"../../common/entity\";\nimport { testStateLoading } from \"../../common/functions/state\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nconst entityActions = createEntityActions({ entity, api });\n\nconst getRate = createAsyncThunk(\n \"users/getRate\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().users.users, requestId)) return;\n\n const { responseData } = await api.getRate(args);\n return responseData;\n },\n);\n\nconst createServerLogin = createAsyncThunk(\n \"users/createServerLogin\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().users.users, requestId)) return;\n\n return await api.createServerLogin(args);\n },\n);\nconst deleteServerLogin = createAsyncThunk(\n \"users/deleteServerLogin\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().users.users, requestId)) return;\n\n return await api.deleteServerLogin(args);\n },\n);\nconst updateServerLoginKeys = createAsyncThunk(\n \"users/updateServerLoginKeys\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().users.users, requestId)) return;\n\n return await api.updateServerLoginKeys(args);\n },\n);\nconst updateServerLoginPassword = createAsyncThunk(\n \"users/updateServerLoginPassword\",\n async (args, { getState, requestId }) => {\n if (!testStateLoading(getState().users.users, requestId)) return;\n\n return await api.updateServerLoginPassword(args);\n },\n);\n\nexport const actions = {\n ...entityActions,\n getRate,\n createServerLogin,\n deleteServerLogin,\n updateServerLoginKeys,\n updateServerLoginPassword,\n};\n","import { createEntityReducer } from \"../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../common/functions/state\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity,\n actions,\n persist: true,\n extraReducers: (builder, adapter) => {\n buildAsyncThunkReducer(builder, actions.getRate, (state, action) => {\n if (action?.payload?.rate) state.rate = action?.payload?.rate;\n });\n buildAsyncThunkReducer(\n builder,\n actions.createServerLogin,\n (state, { payload: { data } = {} }) => {\n const { serverLoginPassword, ...dataNew } = data || {};\n adapter.upsertOne(state, dataNew);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.deleteServerLogin,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateServerLoginKeys,\n (state, { payload: { data } = {} }) => {\n adapter.upsertOne(state, data);\n },\n );\n buildAsyncThunkReducer(\n builder,\n actions.updateServerLoginPassword,\n (state, { payload: { data } = {} }) => {\n const { serverLoginPassword, ...dataNew } = data || {};\n adapter.upsertOne(state, dataNew);\n },\n );\n },\n});\n","import { combineReducers } from \"@reduxjs/toolkit\";\n\nimport groupState from \"../groups/state\";\nimport notificationGroupState from \"../notificationGroups/state\";\nimport pseudoState from \"../pseudo/state\";\nimport teamState from \"../teams/state\";\nimport userGroupingsState from \"../userGroupings/state\";\nimport { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst userReducer = combineReducers({\n users: reducer,\n pseudo: pseudoState.reducer,\n groups: groupState.reducer,\n teams: teamState.reducer,\n notificationGroups: notificationGroupState.reducer,\n userGroupings: userGroupingsState.reducer,\n});\n\nconst userState = {\n api,\n entity,\n actions,\n reducer: userReducer,\n};\n\nexport default userState;\n","import moment from \"moment\";\n\nconst FORMATS = {\n DATE_STAMP: \"YYYYMMDD\",\n MONTH_STAMP: \"YYYYMM\",\n DATE_DISPLAY: \"MM/DD/YY\",\n DATE_DISPLAY_LONG: \"dddd, MMMM Do YYYY\",\n DATE_DISPLAY_MM_YYYY: \"MM / YYYY\",\n DATE_URL_PARAMS: \"YYYY-MM-DD\",\n DATETIME_STAMP: \"YYYYMMDDHHmmss\",\n TIME_ONLY_STAMP: \"HHmmss\",\n DATETIME_DISPLAY_TIME: \"h:mm a\",\n DATETIME_DISPLAY_TIME_SECONDS: \"h:mm:ss a\",\n DATETIME_DISPLAY: \"MM/DD/YY, h:mm a\",\n DATETIME_DISPLAY_LONG: \"dddd, MMMM Do YYYY, h:mm a\",\n};\n\nfunction formatIfValid(date, format) {\n if (date?.isValid()) return date.format(format);\n else return \"\";\n}\n\n//Note: Since fromMomentDatStringTime uses fromStamp\n// we need them to be functions non anonymous functions\nexport const _datetime = {\n fromStamp: function (datetime) {\n return moment(datetime, FORMATS.DATETIME_STAMP);\n },\n fromMomentDateStringTime: function (momentDate, stringTime) {\n return this.fromStamp(_date.stamp(momentDate) + stringTime);\n },\n display: (datetime) => formatIfValid(moment(datetime), FORMATS.DATE_DISPLAY),\n displayLong: (datetime) =>\n formatIfValid(moment(datetime), FORMATS.DATE_DISPLAY_LONG),\n displayTimeSeconds: (datetime) =>\n formatIfValid(moment(datetime), FORMATS.DATETIME_DISPLAY_TIME_SECONDS),\n displayTime: (datetime) =>\n formatIfValid(moment(datetime), FORMATS.DATETIME_DISPLAY_TIME),\n displayDateTime: (date = {}) =>\n formatIfValid(moment(date), FORMATS.DATETIME_DISPLAY),\n displayLongDateTime: (date = {}) =>\n formatIfValid(moment(date), FORMATS.DATETIME_DISPLAY_LONG),\n stamp: (datetime = moment()) =>\n formatIfValid(moment(datetime), FORMATS.DATETIME_STAMP),\n timeOnlyStamp: (datetime = moment()) =>\n moment(datetime).format(FORMATS.TIME_ONLY_STAMP),\n stampUtc: (date = moment()) => {\n // copy moment input, turn on UTC, and return formatted version\n moment(date).utc().format(FORMATS.DATE_STAMP);\n },\n};\n\nexport const _date = {\n fromStamp: (date) => moment(date, FORMATS.DATE_STAMP),\n fromMonthStamp: (date) => moment(date, FORMATS.MONTH_STAMP),\n fromUrlParams: (date) => moment(date, FORMATS.DATE_URL_PARAMS),\n\n display: (date = {}) => formatIfValid(moment(date), FORMATS.DATE_DISPLAY),\n displayLong: (date = {}) =>\n formatIfValid(moment(date), FORMATS.DATE_DISPLAY_LONG),\n displayMM_YYYY: (date = {}) =>\n formatIfValid(moment(date), FORMATS.DATE_DISPLAY_MM_YYYY),\n stamp: (date = {}) => formatIfValid(moment(date), FORMATS.DATE_STAMP),\n monthStamp: (date = {}) => formatIfValid(moment(date), FORMATS.MONTH_STAMP),\n stampUtc: (date = {}) => {\n // copy moment input, turn on UTC, and return formatted version\n moment(date).utc().format(FORMATS.DATE_STAMP);\n },\n urlParams: (date = {}) =>\n formatIfValid(moment(date), FORMATS.DATE_URL_PARAMS),\n};\n","import _ from \"lodash\";\nimport { useEffect } from \"react\";\nimport tinykeys from \"tinykeys\";\n\nexport default function useTinykeys(cfg = {}) {\n useEffect(() => {\n if (cfg && !_.isEmpty(cfg)) {\n // console.debug(\"keys: Add\", cfg);\n const unsubscribe = tinykeys(window, cfg);\n return () => {\n // console.debug(\"keys: Remove\", cfg);\n unsubscribe();\n };\n }\n });\n}\n","import { unwrapResult } from \"@reduxjs/toolkit\";\nimport { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { toast } from \"react-toastify\";\n\nimport { createEntityHooks } from \"../common/entity\";\nimport state from \"./state\";\n\nconst { useEntities: useUsers, useEntity } = createEntityHooks({\n entity: state.entity,\n actions: state.actions,\n expire: {\n key: \"days\",\n value: 1,\n },\n});\n\nconst useUser = ({ id, ...args } = {}) => {\n const dispatch = useDispatch();\n return {\n createServerLogin: useCallback(\n ({ ...entity }) =>\n dispatch(state.actions.createServerLogin({ ...entity, id: id }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\"Server login created\");\n return result;\n }),\n [dispatch, id],\n ),\n updateServerLoginKeys: useCallback(\n ({ ...entity }) =>\n dispatch(state.actions.updateServerLoginKeys({ ...entity, id: id }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\"Server login keys updated\");\n return result;\n }),\n [dispatch, id],\n ),\n updateServerLoginPassword: useCallback(\n ({ ...entity }) =>\n dispatch(state.actions.updateServerLoginPassword({ ...entity, id: id }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\"Server login password updated\");\n return result;\n }),\n [dispatch, id],\n ),\n deleteServerLogin: useCallback(\n ({ ...entity }) =>\n dispatch(state.actions.deleteServerLogin({ ...entity, id: id }))\n .then(unwrapResult)\n .then(({ data: result } = {}) => {\n toast.success(\"Server login delete\");\n return result;\n }),\n [dispatch, id],\n ),\n ...useEntity({ id, ...args }),\n };\n};\n\nexport { useUser, useUsers };\n","import React, { useState } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nimport { useUser } from \"./hooks\";\nimport Pseudo from \"./pseudo\";\nimport UserModal from \"./UserModal\";\n\nexport default function UserLink({ id, showId = false }) {\n const authUser = useSelector((state) => state.auth.user);\n const { user } = useUser({ id });\n const { pseudo } = Pseudo.useOne({ id });\n const [show, setShow] = useState(false);\n\n const _user = id?.charAt(0) !== \"*\" ? user : pseudo;\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const text = showId || !_user ? id : _user?.name;\n\n if (!_user?.id)\n return {text === \"CUSTSUP\" ? \"Customer Support Portal\" : text};\n\n return (\n e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n \n {id === authUser ? {text} : text}\n \n \n \n );\n}\n","import _ from \"lodash\";\nimport React, { useState } from \"react\";\nimport { Button, ButtonGroup, Col, Form, Modal, Row } from \"react-bootstrap\";\n\nimport { Forms, FormsField, useFormContext } from \"../forms\";\nimport { _date } from \"../functions/dates\";\n\n// This is a custom filter UI for selecting\n// a unique option from a list\nexport function SelectColumnFilter({\n column: { filterValue, setFilter, preFilteredRows, id },\n}) {\n // Calculate the options for filtering\n // using the preFilteredRows\n const optionsFromRows = React.useMemo(() => {\n const options = _.uniq(preFilteredRows.map((row) => row.values[id])).sort();\n // Remove blanks\n return _.remove(options, (o) => o);\n }, [id, preFilteredRows]);\n\n let options = optionsFromRows;\n if (filterValue && !options.includes(filterValue))\n optionsFromRows.push(filterValue);\n\n // Render a multi-select box\n return (\n {\n setFilter(e.target.value || undefined);\n }}\n title=\"Filter table records\"\n >\n \n {options.map((option, i) => (\n \n ))}\n \n );\n}\n\n// This is a custom filter UI for selecting\n// a unique option from a list based on options objects\nexport function SelectColumnFilterWithOptions({\n column: { filterValue, setFilter, preFilteredRows, id },\n options,\n}) {\n // Calculate the options for filtering\n // using the preFilteredRows\n const _options = React.useMemo(() => {\n const filteredValues = _.uniq(\n preFilteredRows.map((row) => row.values[id]),\n ).filter((o) => o);\n if (!options?.length)\n return filteredValues.map((v) => {\n return { label: v, value: v };\n });\n else return options.filter((o) => filteredValues.includes(o.value));\n }, [id, preFilteredRows, options]);\n\n return (\n {\n setFilter(e.target.value || undefined);\n }}\n title=\"Filter table records\"\n >\n \n {_options.map((option, i) => (\n \n ))}\n \n );\n}\n\n// Define a text based search for filtering\nexport function TextColumnFilter({ column: { filterValue, setFilter } }) {\n return (\n {\n setFilter(e.target.value || undefined); // Set undefined to remove the filter entirely\n }}\n placeholder={`Filter`}\n title=\"Filter table records\"\n />\n );\n}\n\nexport function filterGreaterThan(rows, id, filterValue) {\n return rows.filter((row) => {\n const rowValue = row.values[id];\n return rowValue >= filterValue;\n });\n}\n\n// This is an autoRemove method on the filter function that\n// when given the new filter value and returns true, the filter\n// will be automatically removed. Normally this is just an undefined\n// check, but here, we want to remove the filter if it's not a number\nfilterGreaterThan.autoRemove = (val) => typeof val !== \"number\";\n\nexport function filterLessThan(rows, id, filterValue) {\n return rows.filter((row) => {\n const rowValue = row.values[id];\n return rowValue <= filterValue;\n });\n}\nfilterLessThan.autoRemove = (val) => typeof val !== \"number\";\n\nexport function DateRangeColumnFilter({ column: { setFilter } }) {\n const [showModal, setShowModal] = useState(false);\n const [dateFilterStart, setDateFilterStart] = useState(\"\");\n const [dateFilterEnd, setDateFilterEnd] = useState(\"\");\n\n return (\n <>\n \n \n \n {_date.display(dateFilterStart)}\n {dateFilterStart || dateFilterEnd ? \"-\" : \"\"}\n {_date.display(dateFilterEnd)}\n \n \n \n \n \n \n\n setShowModal(false)}>\n Edit Date Range Filter\n \n {\n setFilter({\n startDate: _date.stamp(startDate),\n endDate: _date.stamp(endDate),\n });\n setShowModal(false);\n setDateFilterStart(startDate);\n setDateFilterEnd(endDate);\n }}\n defaultValues={{\n startDate: dateFilterStart,\n endDate: dateFilterEnd,\n }}\n >\n \n \n \n \n \n );\n}\n\nfunction DateRangeForms() {\n const { watch, submitForm, reset } = useFormContext();\n\n const endDate = watch(\"endDate\");\n const startDate = watch(\"startDate\");\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n reset({ startDate: \"\", endDate: \"\" })}\n >\n Clear\n \n \n \n \n
    \n );\n}\n\nexport function filterDateRange(rows, id, filterValue) {\n return rows.filter((row) => {\n const rowValue = row.values[id];\n return (\n (!filterValue?.startDate || rowValue >= filterValue?.startDate) &&\n (!filterValue?.endDate || rowValue <= filterValue?.endDate)\n );\n });\n}\n","import useAppCanStateExpire from \"./useAppCanStateExpire\";\nimport useAppIsActive from \"./useAppIsActive\";\n\nconst app = {\n useCanStateExpire: useAppCanStateExpire,\n useIsActive: useAppIsActive,\n};\nexport default app;\n","import { useSelector } from \"react-redux\";\n\nexport default function useAppIsActive() {\n return useSelector((state) => state.app.isActive);\n}\n","import React from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { toast } from \"react-toastify\";\n\nimport useSettings from \"../../settings/useSettings\";\n\nexport default function Mailto({\n email = \"\",\n subject = \"\",\n body = \"\",\n as: Component = \"a\",\n children,\n copy = true,\n ...props\n}) {\n const {\n settings: { gmailEmailFromAccount },\n } = useSettings();\n if (!email && !subject && !body) return null;\n\n const mailto = `mailto:${email}?subject=${\n encodeURIComponent(subject) || \"\"\n }&body=${encodeURIComponent(body) || \"\"}`;\n const href = gmailEmailFromAccount\n ? `https://mail.google.com/mail/b/${gmailEmailFromAccount}/?extsrc=mailto&url=${encodeURIComponent(\n mailto,\n )}`\n : mailto;\n\n return (\n <>\n \n {children ? children : email || \"Email\"}\n {\" \"}\n {copy ? (\n toast.success(\"Email copied\")}\n >\n \n \n \n \n ) : null}\n \n );\n}\n","import React, { useRef } from \"react\";\nimport { Overlay, Popover } from \"react-bootstrap\";\n\nimport useClickOutsideEvent from \"../hooks/useClickOutsideEvent\";\n\nexport default function ContextMenu({\n show,\n target,\n onHide,\n closeOnClick = true,\n placement = \"bottom\",\n title,\n children,\n}) {\n const ref = useRef(null);\n useClickOutsideEvent(ref, () => {\n onHide();\n });\n return (\n \n \n
    \n {title ? {title} : null}\n {children}\n
    \n
    \n
    \n );\n}\n","import _ from \"lodash\";\nimport { useEffect } from \"react\";\n\n/**\n * Hook that call eventHandler for clicks outside of the passed ref\n */\nexport default function useClickOutsideEvent(ref, eventHandler) {\n useEffect(() => {\n if (!_.isFunction(eventHandler)) return;\n /**\n * Alert if clicked on outside of element\n */\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n eventHandler(event);\n }\n }\n\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, eventHandler]);\n}\n","import React from \"react\";\nimport { Badge } from \"react-bootstrap\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { BiCopy } from \"react-icons/bi\";\nimport { toast } from \"react-toastify\";\n\nimport { formatPhone } from \"../functions/phone\";\n\nexport default function Tel({ phone, ext, children, copy = true }) {\n if (!phone) return null;\n const _phone = formatPhone(phone, ext) || \"\";\n const _phoneNums = _phone.replace(\"+\", \"\");\n return (\n <>\n \n {children ? children : _phone}\n {\" \"}\n {copy ? (\n toast.success(\"Phone number copied\")}\n >\n \n \n \n \n ) : null}\n \n );\n}\n","import parsePhoneNumberFromString from \"libphonenumber-js\";\n\nexport function formatPhone(phone, extension) {\n if (!phone) return phone;\n let _phone = phone;\n if (extension) {\n _phone = phone + \" x\" + extension;\n }\n const newPhone = parsePhoneNumberFromString(\n _phone,\n \"US\",\n )?.formatInternational();\n\n if (!newPhone) return phone;\n return newPhone;\n}\n","import shark from \"../../../apis/shark\";\n\nfunction getNotificationGroupsAPI() {\n const payload = {\n command: \"getNotificationGroups\",\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData.notificationGroups }));\n}\n\nfunction getNotificationGroupAPI({ id }) {\n const payload = {\n command: \"getNotificationGroup\",\n id: id,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction createNotificationGroupAPI(payload1) {\n const payload = {\n command: \"createNotificationGroup\",\n ...payload1,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateNotificationGroupAPI(payload1) {\n const payload = {\n command: \"updateNotificationGroup\",\n ...payload1,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction createNotificationMemberAPI(payload1) {\n const payload = {\n command: \"createNotificationMember\",\n ...payload1,\n };\n return shark.post(payload).then(({ responseData }) => responseData);\n}\n\nfunction deleteNotificationMemberAPI(payload1) {\n const payload = {\n command: \"deleteNotificationMember\",\n ...payload1,\n };\n return shark.post(payload).then(({ responseData }) => responseData);\n}\n\nexport const api = {\n getMany: getNotificationGroupsAPI,\n getOne: getNotificationGroupAPI,\n createOne: createNotificationGroupAPI,\n updateOne: updateNotificationGroupAPI,\n addMember: createNotificationMemberAPI,\n deleteMember: deleteNotificationMemberAPI,\n};\n","import { createEntity } from \"../../../common/entity\";\n\nexport const entity = createEntity({\n name: \"notificationGroups\",\n type: \"users/notificationGroups\",\n getState: (state) => state.users.notificationGroups,\n});\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport { createEntityActions } from \"../../../common/entity\";\nimport { testStateLoading } from \"../../../common/functions/state\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nconst entityActions = createEntityActions({\n entity,\n api: api,\n});\n\nexport const addMember = createAsyncThunk(\n \"notificationsGroups/addMember\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().users.notificationGroups, requestId))\n return;\n\n const response = await api.addMember({\n ...payload,\n });\n return response;\n },\n);\n\nexport const deleteMember = createAsyncThunk(\n \"notificationsGroups/deleteMember\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().users.notificationGroups, requestId))\n return;\n\n const response = await api.deleteMember({\n ...payload,\n });\n return response;\n },\n);\n\nexport const actions = {\n ...entityActions,\n addMember,\n deleteMember,\n};\n","import { toast } from \"react-toastify\";\n\nimport { createEntityReducer } from \"../../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../../common/functions/state\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity: entity,\n actions: actions,\n persist: true,\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, actions.addMember, (state, action) => {\n state.entities[action.payload.id].members = action.payload.members;\n //notificationGroupsAdapter.upsertOne(state, action.payload);\n\n toast.success(\"Member Added\", {\n autoClose: 2000,\n closeButton: false,\n });\n });\n buildAsyncThunkReducer(builder, actions.deleteMember, (state, action) => {\n state.entities[action.payload.id].members = action.payload.members;\n //notificationGroupsAdapter.upsertOne(state, action.payload);\n\n toast.success(\"Member Deleted\", {\n autoClose: 2000,\n closeButton: false,\n });\n });\n },\n});\n","import { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst notificationGroupState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default notificationGroupState;\n","import shark from \"../../../apis/shark\";\n\nfunction getUserGroupingsAPI() {\n const payload = {\n command: \"getUserGroupings\",\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData.userGroupings }));\n}\n\nfunction getUserGroupingAPI({ id }) {\n const payload = {\n command: \"getUserGrouping\",\n id: id,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction createUserGroupingAPI(payload1) {\n const payload = {\n command: \"createUserGrouping\",\n ...payload1,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction updateUserGroupingAPI(payload1) {\n const payload = {\n command: \"updateUserGrouping\",\n ...payload1,\n };\n return shark\n .post(payload)\n .then(({ responseData }) => ({ data: responseData }));\n}\n\nfunction createUserGroupingMemberAPI(payload1) {\n const payload = {\n command: \"createUserGroupingMember\",\n ...payload1,\n };\n return shark.post(payload).then(({ responseData }) => responseData);\n}\n\nfunction deleteUserGroupingMemberAPI(payload1) {\n const payload = {\n command: \"deleteUserGroupingMember\",\n ...payload1,\n };\n return shark.post(payload).then(({ responseData }) => responseData);\n}\n\nexport const api = {\n getMany: getUserGroupingsAPI,\n getOne: getUserGroupingAPI,\n createOne: createUserGroupingAPI,\n updateOne: updateUserGroupingAPI,\n addMember: createUserGroupingMemberAPI,\n deleteMember: deleteUserGroupingMemberAPI,\n};\n","import { createEntity } from \"../../../common/entity\";\n\nexport const entity = createEntity({\n name: \"userGroupings\",\n type: \"users/userGroupings\",\n getState: (state) => state.users.userGroupings,\n});\n","import { createAsyncThunk } from \"@reduxjs/toolkit\";\n\nimport { createEntityActions } from \"../../../common/entity\";\nimport { testStateLoading } from \"../../../common/functions/state\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\n\nconst entityActions = createEntityActions({\n entity,\n api: api,\n});\n\nexport const addMember = createAsyncThunk(\n \"userGroupings/addMember\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().users.userGroupings, requestId)) return;\n\n const response = await api.addMember({\n ...payload,\n });\n return response;\n },\n);\n\nexport const deleteMember = createAsyncThunk(\n \"userGroupings/deleteMember\",\n async (payload, { getState, requestId }) => {\n if (!testStateLoading(getState().users.userGroupings, requestId)) return;\n\n const response = await api.deleteMember({\n ...payload,\n });\n return response;\n },\n);\n\nexport const actions = {\n ...entityActions,\n addMember,\n deleteMember,\n};\n","import { toast } from \"react-toastify\";\n\nimport { createEntityReducer } from \"../../../common/entity\";\nimport { buildAsyncThunkReducer } from \"../../../common/functions/state\";\nimport { actions } from \"./actions\";\nimport { entity } from \"./entity\";\n\nexport const reducer = createEntityReducer({\n entity: entity,\n actions: actions,\n persist: true,\n extraReducers: (builder) => {\n buildAsyncThunkReducer(builder, actions.addMember, (state, action) => {\n state.entities[action.payload.id].members = action.payload.members;\n //userGroupingsAdapter.upsertOne(state, action.payload);\n\n toast.success(\"Member Added\", {\n autoClose: 2000,\n closeButton: false,\n });\n });\n buildAsyncThunkReducer(builder, actions.deleteMember, (state, action) => {\n state.entities[action.payload.id].members = action.payload.members;\n //userGroupingsAdapter.upsertOne(state, action.payload);\n\n toast.success(\"Member Deleted\", {\n autoClose: 2000,\n closeButton: false,\n });\n });\n },\n});\n","import { actions } from \"./actions\";\nimport { api } from \"./api\";\nimport { entity } from \"./entity\";\nimport { reducer } from \"./reducer\";\n\nconst userGroupingState = {\n api,\n entity,\n actions,\n reducer,\n};\n\nexport default userGroupingState;\n"],"sourceRoot":""}