@solidxai/core-ui 0.1.12-beta.5 → 0.1.12-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +5 -2
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +6 -2
- package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
- package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
- package/dist/components/auth/SolidOTPVerify.js +67 -0
- package/dist/components/auth/SolidOTPVerify.js.map +1 -0
- package/dist/components/auth/SolidOTPVerify.tsx +133 -0
- package/dist/components/common/AuthBanner.d.ts +3 -0
- package/dist/components/common/AuthBanner.d.ts.map +1 -0
- package/dist/components/common/AuthBanner.js +15 -0
- package/dist/components/common/AuthBanner.js.map +1 -0
- package/dist/components/common/AuthBanner.tsx +41 -0
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts +2 -0
- package/dist/components/common/SingleSelectAutoCompleteField.d.ts.map +1 -0
- package/dist/components/common/SingleSelectAutoCompleteField.js +92 -0
- package/dist/components/common/SingleSelectAutoCompleteField.js.map +1 -0
- package/dist/components/common/SingleSelectAutoCompleteField.tsx +73 -0
- package/dist/components/common/SolidExportStepper.d.ts +12 -0
- package/dist/components/common/SolidExportStepper.d.ts.map +1 -0
- package/dist/components/common/SolidExportStepper.js +30 -0
- package/dist/components/common/SolidExportStepper.js.map +1 -0
- package/dist/components/common/SolidExportStepper.tsx +135 -0
- package/dist/components/core/card/CardGrid.d.ts +1 -1
- package/dist/components/core/card/CardGrid.d.ts.map +1 -1
- package/dist/components/core/card/CardGrid.js +2 -2
- package/dist/components/core/card/CardGrid.js.map +1 -1
- package/dist/components/core/card/CardGrid.tsx +4 -0
- package/dist/components/core/card/CardItem.d.ts +2 -0
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +7 -2
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +30 -8
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +87 -21
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +96 -40
- package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +9 -7
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +14 -1
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts +2 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.d.ts.map +1 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js +16 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.js.map +1 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportWrapper.tsx +29 -0
- package/dist/components/core/common/SolidGlobalSearchElement.js +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +1 -1
- package/dist/components/core/dashboard/DashboardFilter.d.ts +13 -0
- package/dist/components/core/dashboard/DashboardFilter.d.ts.map +1 -0
- package/dist/components/core/dashboard/DashboardFilter.js +299 -0
- package/dist/components/core/dashboard/DashboardFilter.js.map +1 -0
- package/dist/components/core/dashboard/DashboardFilter.tsx +348 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts +3 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.d.ts.map +1 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.js +21 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.js.map +1 -0
- package/dist/components/core/dashboard/PrimeDataTableWrapper.tsx +40 -0
- package/dist/components/core/dashboard/SolidDashboard.d.ts +28 -0
- package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboard.js +183 -0
- package/dist/components/core/dashboard/SolidDashboard.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboard.module.css +83 -0
- package/dist/components/core/dashboard/SolidDashboard.tsx +263 -0
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts +24 -0
- package/dist/components/core/dashboard/SolidDashboardBody.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardBody.js +162 -0
- package/dist/components/core/dashboard/SolidDashboardBody.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardBody.tsx +168 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +11 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +28 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.d.ts +3 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.js +6 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardHeader.tsx +10 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.js +10 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardLoading.tsx +61 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts +3 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +12 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +32 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts +2 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.js +11 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardRenderError.tsx +28 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.d.ts +19 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.js +171 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -0
- package/dist/components/core/dashboard/SolidDashboardVariable.tsx +259 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts +9 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.js +42 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.js.map +1 -0
- package/dist/components/core/dashboard/SolidQuestionRenderer.tsx +99 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts +9 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js +35 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/ChartJsRenderer.tsx +48 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts +7 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js +22 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/PrimeReactDatatableRenderer.tsx +51 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts +2 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.d.ts.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.js +4 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.js.map +1 -0
- package/dist/components/core/dashboard/chart-renderers/init-chartjs.ts +25 -0
- package/dist/components/core/dashboard/dashboard-utils.d.ts +2 -0
- package/dist/components/core/dashboard/dashboard-utils.d.ts.map +1 -0
- package/dist/components/core/dashboard/dashboard-utils.js +38 -0
- package/dist/components/core/dashboard/dashboard-utils.js.map +1 -0
- package/dist/components/core/dashboard/dashboard-utils.ts +39 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts +10 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js +16 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardFormViewChangeHandler.ts +19 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts +8 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js +64 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionFieldChangeHandler.ts +30 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts +8 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js +62 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboard/dashboardQuestionOnFormLoadHandler.ts +29 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js +23 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/dashboardQuestion/ChartFormPreviewWidget.tsx +36 -0
- package/dist/components/core/form/SolidFormView.js +1 -1
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +11 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +26 -19
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +13 -5
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +16 -9
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js +111 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.tsx +122 -0
- package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +10 -5
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +28 -12
- package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +2 -2
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +154 -25
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +129 -16
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js +13 -10
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +18 -3
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts +12 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js +145 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.tsx +164 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js +87 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js +73 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js +20 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js +81 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js +21 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +20 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +56 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +140 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +42 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +164 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js +11 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +37 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +121 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js +7 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +1 -1
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +1 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +6 -1
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +6 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +2 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +39 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -0
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +40 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.js +81 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/list/SolidVarInputsFilterElement.tsx +184 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js +33 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.tsx +50 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js +158 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.tsx +185 -0
- package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -1
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +119 -102
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +82 -39
- package/dist/components/core/model/FieldSelector.d.ts +5 -1
- package/dist/components/core/model/FieldSelector.d.ts.map +1 -1
- package/dist/components/core/model/FieldSelector.js +25 -6
- package/dist/components/core/model/FieldSelector.js.map +1 -1
- package/dist/components/core/model/FieldSelector.tsx +50 -5
- package/dist/components/core/tree/SolidTreeTable.d.ts +2 -1
- package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.js +2 -2
- package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.tsx +3 -1
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +38 -15
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +48 -23
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +45 -32
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +15 -4
- package/dist/components/layout/DashboardHeader.d.ts +3 -0
- package/dist/components/layout/DashboardHeader.d.ts.map +1 -0
- package/dist/components/layout/DashboardHeader.js +20 -0
- package/dist/components/layout/DashboardHeader.js.map +1 -0
- package/dist/components/layout/DashboardHeader.tsx +94 -0
- package/dist/components/shad-cn-ui/SolidSelect.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.js +12 -4
- package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.tsx +13 -1
- package/dist/helpers/# no such endpoints exist, need to calle +3 -0
- package/dist/helpers/ToastContainer.d.ts +4 -0
- package/dist/helpers/ToastContainer.d.ts.map +1 -0
- package/dist/helpers/ToastContainer.js +49 -0
- package/dist/helpers/ToastContainer.js.map +1 -0
- package/dist/helpers/ToastContainer.tsx +94 -0
- package/dist/helpers/showToast.d.ts +5 -0
- package/dist/helpers/showToast.d.ts.map +1 -0
- package/dist/helpers/showToast.js +17 -0
- package/dist/helpers/showToast.js.map +1 -0
- package/dist/helpers/showToast.ts +13 -0
- package/dist/helpers/studioSandbox.d.ts +31 -0
- package/dist/helpers/studioSandbox.d.ts.map +1 -0
- package/dist/helpers/studioSandbox.js +104 -0
- package/dist/helpers/studioSandbox.js.map +1 -0
- package/dist/helpers/studioSandbox.ts +117 -0
- package/dist/nextAuth/authProviders.d.ts +4 -0
- package/dist/nextAuth/authProviders.d.ts.map +1 -0
- package/dist/nextAuth/authProviders.js +198 -0
- package/dist/nextAuth/authProviders.js.map +1 -0
- package/dist/nextAuth/authProviders.tsx +232 -0
- package/dist/nextAuth/handleLogout.d.ts +2 -0
- package/dist/nextAuth/handleLogout.d.ts.map +1 -0
- package/dist/nextAuth/handleLogout.js +36 -0
- package/dist/nextAuth/handleLogout.js.map +1 -0
- package/dist/nextAuth/handleLogout.tsx +39 -0
- package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
- package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
- package/dist/nextAuth/refreshAccessToken.js +24 -0
- package/dist/nextAuth/refreshAccessToken.js.map +1 -0
- package/dist/nextAuth/refreshAccessToken.tsx +28 -0
- package/dist/redux/api/dashboardApi.d.ts +23 -0
- package/dist/redux/api/dashboardApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardApi.js +35 -0
- package/dist/redux/api/dashboardApi.js.map +1 -0
- package/dist/redux/api/dashboardApi.ts +56 -0
- package/dist/redux/api/dashboardLayoutApi.d.ts +24 -0
- package/dist/redux/api/dashboardLayoutApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardLayoutApi.js +34 -0
- package/dist/redux/api/dashboardLayoutApi.js.map +1 -0
- package/dist/redux/api/dashboardLayoutApi.ts +55 -0
- package/dist/redux/api/dashboardQuestionApi.d.ts +5 -0
- package/dist/redux/api/dashboardQuestionApi.d.ts.map +1 -0
- package/dist/redux/api/dashboardQuestionApi.js +18 -0
- package/dist/redux/api/dashboardQuestionApi.js.map +1 -0
- package/dist/redux/api/dashboardQuestionApi.ts +17 -0
- package/dist/redux/api/datasourceIntrospectionApi.d.ts +1 -0
- package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
- package/dist/redux/api/datasourceIntrospectionApi.ts +1 -0
- package/dist/redux/features/settingsSlice.d.ts +20 -0
- package/dist/redux/features/settingsSlice.d.ts.map +1 -0
- package/dist/redux/features/settingsSlice.js +39 -0
- package/dist/redux/features/settingsSlice.js.map +1 -0
- package/dist/redux/features/settingsSlice.ts +60 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +5 -5
- package/dist/resources/images/Footerbg.png +0 -0
- package/dist/resources/images/LoginBanner.png +0 -0
- package/dist/resources/images/dashboard/Ellipse 1.svg +10 -0
- package/dist/resources/images/dashboard/Rectangle 17.svg +10 -0
- package/dist/resources/images/dashboard/Rectangle 25.svg +11 -0
- package/dist/resources/images/dashboard/image 5.svg +9 -0
- package/dist/resources/images/loginhero.png +0 -0
- package/dist/resources/images/logo.png +0 -0
- package/dist/resources/images/radix-logo-white.png +0 -0
- package/dist/resources/images/radix-logo.png +0 -0
- package/dist/resources/images/signupBanner.png +0 -0
- package/dist/resources/shadcn-base.css +16 -70
- package/dist/resources/solid-custom.css +55 -0
- package/dist/resources/solid-responsive.css +4 -4
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +12 -0
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +160 -59
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +293 -41
- package/package.json +1 -1
- package/dist/helpers/modulePackageResumeState.d.ts +0 -6
- package/dist/helpers/modulePackageResumeState.d.ts.map +0 -1
- package/dist/helpers/modulePackageResumeState.js +0 -46
- package/dist/helpers/modulePackageResumeState.js.map +0 -1
- package/dist/helpers/modulePackageResumeState.ts +0 -57
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasourceIntrospectionPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourceIntrospectionPage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EACL,SAAS,EACT,KAAK,EACL,GAAG,EACH,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,MAAM,EACN,WAAW,EACX,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAOL,8CAA8C,EAC9C,0DAA0D,EAC1D,8CAA8C,EAC9C,2CAA2C,EAC3C,6CAA6C,EAC7C,wCAAwC,EACxC,gDAAgD,EAChD,8CAA8C,GAC/C,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,mCAAmC,CAAC;AA4D3C,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,eAAe,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAM,sBAAsB,GAAG;IAC7B,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACtC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE;IACzC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACtC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAClC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;CACzC,CAAC;AAEF,IAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,KAAK,EAAZ,CAAY,CAAC,CAAC,CAAC;AAC9F,IAAM,sBAAsB,GAAG;IAC7B,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE;IACvD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE;CACtD,CAAC;AAEF,SAAS,6BAA6B,CAAC,KAA8C;IACnF,OAAO,KAAK,KAAK,aAAa;QAC5B,CAAC,CAAC,kCAAkC;QACpC,CAAC,CAAC,mCAAmC,CAAC;AAC1C,CAAC;AAED,SAAS,mCAAmC,CAAC,UAAkB,EAAE,eAAwD;;IACvH,IAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAM,cAAc,GAA2B;QAC7C,aAAa,EAAE,WAAW;QAC1B,aAAa,EAAE,WAAW;QAC1B,aAAa,EAAE,WAAW;QAC1B,kBAAkB,EAAE,gBAAgB;QACpC,eAAe,EAAE,aAAa;QAC9B,cAAc,EAAE,YAAY;QAC5B,2BAA2B,EAAE,uBAAuB;QACpD,gBAAgB,EAAE,WAAW;QAC7B,gBAAgB,EAAE,WAAW;KAC9B,CAAC;IAEF,IAAI,UAAU,KAAK,OAAO,IAAI,eAAe,KAAK,cAAc,EAAE;QAChE,OAAO,IAAI,CAAC;KACb;IAED,OAAO,MAAA,cAAc,CAAC,UAAU,CAAC,mCAAI,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,kCAAkC,CAAC,MAAiE,EAAE,eAAwD;IACrK,IAAI,eAAe,KAAK,aAAa,IAAI,MAAM,CAAC,eAAe,EAAE;QAC/D,OAAO,IAAI,CAAC;KACb;IAED,IAAI,eAAe,KAAK,cAAc,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAClF,OAAO,UAAU,CAAC;KACnB;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,kCAAkC,CAAC,cAAsB,EAAE,cAAsB;;IACxF,IAAM,wBAAwB,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IAE9D,IAAM,oBAAoB,GAA2C;QACnE,KAAK,EAAE;YACL,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,UAAU;SACrB;QACD,KAAK,EAAE;YACL,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,SAAS;SACpB;QACD,QAAQ,EAAE;YACR,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,SAAS;YACd,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,SAAS;SACpB;KACF,CAAC;IAEF,OAAO,MAAA,MAAA,oBAAoB,CAAC,wBAAwB,CAAC,0CAAG,cAAc,CAAC,mCAAI,SAAS,CAAC;AACvF,CAAC;AAED,SAAS,WAAW,CAAC,MAA0C;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC;AACnD,CAAC;AAED,SAAS,cAAc,CAAC,KAAU;;IAChC,OAAO,CACL,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,OAAO;YACjB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAA;YACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAA;WACd,uBAAuB,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,KAAU;;IAChD,IAAM,MAAM,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,cAAc,CAAC;IACtD,IAAM,OAAO,GAAG;QACd,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK;QACZ,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO;QACd,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,OAAO;QACpB,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,KAAK;KACnB;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC;SACT,WAAW,EAAE,CAAC;IAEjB,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,eAAe,EAAE;QACxF,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;WAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;WAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;WAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA6D,EAAE,WAAkB;;IAC/G,OAAO,MAAA,WAAW,CAAC,IAAI,CAAC,UAAC,KAAK;;QAC5B,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ;YAAE,OAAO,KAAK,CAAC;QAElC,IAAM,cAAc,GAAG,aAAa,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,mCAAI,EAAE,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnG,IAAI,cAAc;YAAE,OAAO,IAAI,CAAC;QAEhC,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,IAAI,CAAC,CAAC;IAC9F,CAAC,CAAC,mCAAI,IAAI,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAU;IAC9C,IAAM,KAQF,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,EAPb,SAAS,eAAA,EACT,SAAS,eAAA,EACT,SAAS,eAAA,EACT,KAAK,WAAA,EACL,oBAAoB,0BAAA,EACpB,UAAU,gBAAA,EACP,IAAI,cAPH,sFAQL,CAAc,CAAC;IAEhB,IAAI,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,EAAE,KAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;QAC5D,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,EAAE,CAAC;KACvD;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACvB,WAA+C,EAC/C,aAAiD,EACjD,eAAqB;;IAErB,IAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,IAAM,WAAW,GAAG,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,EAAE,CAAC;IAC5C,IAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,KAAU,IAAK,OAAA,4BAA4B,CAAC,KAAK,CAAC,EAAnC,CAAmC,CAAC,CAAC;IAC7F,IAAM,iBAAiB,GACrB,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,0CAAE,IAAI;YAC1B,MAAA,WAAW,CAAC,IAAI,CAAC,UAAC,KAAU,IAAK,OAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,EAAhB,CAAgB,CAAC,0CAAE,IAAI,CAAA;WACxD,EAAE,CAAC;IAER,IAAM,OAAO,GAAwB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;;QAClE,IAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClE,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,mCAAI,MAAM,CAAC,SAAS;YAClD,WAAW,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,mCAAI,MAAM,CAAC,WAAW;YAC7D,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,mCAAI,MAAM,CAAC,cAAc;YAC5D,OAAO,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,mCAAI,MAAM,CAAC,OAAO;YACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,mCAAI,MAAM,CAAC,YAAY;YAChE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;YACrD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,oBAAoB,EAAE,MAAM,CAAC,YAAY;YACzC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,OAAO,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,EAAE,mCAAI,IAAI;YAClC,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;YAC7F,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;YAC/B,YAAY,EAAE,OAAO,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC;SACnI,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAM,iBAAiB,GAAG,iBAAiB,IAAI,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC;IAE1F,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,OAAO,EAAE,aAAa,CAAC,aAAa;QACpC,iBAAiB,EAAE,aAAa,CAAC,uBAAuB,IAAI,aAAa,CAAC,gBAAgB,IAAI,IAAI;QAClG,YAAY,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,mCAAI,WAAW,CAAC,iBAAiB,CAAC,YAAY;QACnF,UAAU,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,mCAAI,WAAW,CAAC,iBAAiB,CAAC,UAAU;QAC7E,WAAW,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,mCAAI,WAAW,CAAC,iBAAiB,CAAC,WAAW;QAChF,WAAW,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,mCAAI,WAAW,CAAC,iBAAiB,CAAC,WAAW;QAChF,SAAS,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,mCAAI,WAAW,CAAC,iBAAiB,CAAC,SAAS;QAC1E,MAAM,EAAE,WAAW,CAAC,iBAAiB,CAAC,MAAM;QAC5C,UAAU,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,mCAAI,WAAW,CAAC,iBAAiB,CAAC,UAAU;QAC7E,cAAc,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,mCAAI,WAAW,CAAC,iBAAiB,CAAC,cAAc;QACzF,eAAe,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,mCAAI,WAAW,CAAC,iBAAiB,CAAC,eAAe;QAC5F,aAAa,EAAE,WAAW,CAAC,iBAAiB,CAAC,aAAa;QAC1D,YAAY,EAAE,iBAAiB;QAC/B,mBAAmB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,mBAAmB,mCAAI,IAAI;QAC3D,gBAAgB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,gBAAgB,mCAAI,KAAK;QACtD,oBAAoB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,oBAAoB,mCAAI,KAAK;QAC9D,oBAAoB,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,oBAAoB,mCAAI,KAAK;QAC9D,OAAO,SAAA;QACP,eAAe,iBAAA;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAkB;IACnD,IAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,OAAO,EAA7C,CAA6C,CAAC,CAAC;IACxG,IAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;KAC3C;IACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;KACzC;IACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;KAC1C;IACD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;QAC3B,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;KAC/E;IAED,KAAqB,UAAe,EAAf,mCAAe,EAAf,6BAAe,EAAf,IAAe,EAAE;QAAjC,IAAM,MAAM,wBAAA;QACf,IAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,mBAAmB,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,8CAAsC,MAAM,CAAC,UAAU,QAAI,CAAC,CAAC;YACzE,SAAS;SACV;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,+CAAuC,MAAM,CAAC,UAAU,QAAI,CAAC,CAAC;YAC1E,SAAS;SACV;QAED,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;YACvD,MAAM,CAAC,IAAI,CAAC,wBAAgB,MAAM,CAAC,cAAc,sDAA0C,MAAM,CAAC,UAAU,QAAI,CAAC,CAAC;YAClH,SAAS;SACV;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,EAAE;YACzD,MAAM,CAAC,IAAI,CAAC,uBAAe,mBAAmB,2CAAuC,CAAC,CAAC;YACvF,SAAS;SACV;QAED,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC;KACvD;IAED,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;KACnE;SAAM;QACL,IAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,YAAY,EAAvC,CAAuC,CAAC,CAAC;QAChG,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;SAClF;KACF;IAED,IAAI,KAAK,CAAC,eAAe,KAAK,aAAa,EAAE;QAC3C,IAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;SAC3G;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAkB,EAClB,yBAAyC;;IAEzC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;QACvC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QACnC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;QACjE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAI;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,yBAAyB,EAAE,yBAAyB,aAAzB,yBAAyB,cAAzB,yBAAyB,GAAI,IAAI;QAC5D,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC;YACtC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;YACrD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,EApBqC,CAoBrC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CACxC,gBAAwB,EACxB,KAAkB;;IAElB,IAAI,MAAW,CAAC;IAEhB,IAAI;QACF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACvC;IAAC,OAAO,KAAU,EAAE;QACnB,OAAO;YACL,KAAK,EAAE,2CAAoC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,sBAAsB,CAAE;YACrF,MAAM,EAAE,IAAI;SACb,CAAC;KACH;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClE,OAAO;YACL,KAAK,EAAE,kCAAkC;YACzC,MAAM,EAAE,IAAI;SACb,CAAC;KACH;IAED,IAAM,kBAAkB,GAAG;QACzB,cAAc;QACd,YAAY;QACZ,aAAa;QACb,aAAa;QACb,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,qBAAqB;KACtB,CAAC;IAEF,KAAkB,UAAkB,EAAlB,yCAAkB,EAAlB,gCAAkB,EAAlB,IAAkB,EAAE;QAAjC,IAAM,GAAG,2BAAA;QACZ,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1D,OAAO;gBACL,KAAK,EAAE,mDAA2C,GAAG,eAAW;gBAChE,MAAM,EAAE,IAAI;aACb,CAAC;SACH;KACF;IAED,IAAM,eAAe,GAA6C;QAChE,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE;QACjD,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE;QACzD,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE;QAC/C,EAAE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAE;KAC5D,CAAC;IAEF,KAAoB,UAAe,EAAf,mCAAe,EAAf,6BAAe,EAAf,IAAe,EAAE;QAAhC,IAAM,KAAK,wBAAA;QACd,IAAI,UAAG,MAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAE,KAAK,UAAG,KAAK,CAAC,QAAQ,CAAE,EAAE;YACxD,OAAO;gBACL,KAAK,EAAE,8DAAsD,KAAK,CAAC,GAAG,QAAI;gBAC1E,MAAM,EAAE,IAAI;aACb,CAAC;SACH;KACF;IAED,IAAM,mBAAmB,GAAG;QAC1B,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;KACvB,CAAC;IAEF,KAAkB,UAAmB,EAAnB,2CAAmB,EAAnB,iCAAmB,EAAnB,IAAmB,EAAE;QAAlC,IAAM,GAAG,4BAAA;QACZ,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACpC,OAAO;gBACL,KAAK,EAAE,iDAAyC,GAAG,cAAU;gBAC7D,MAAM,EAAE,IAAI;aACb,CAAC;SACH;KACF;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACjC,OAAO;YACL,KAAK,EAAE,4CAA4C;YACnD,MAAM,EAAE,IAAI;SACb,CAAC;KACH;IAED,IAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAA6B,UAAuB,EAAvB,KAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAvB,cAAuB,EAAvB,IAAuB,EAAE;QAA3C,IAAA,WAAc,EAAb,KAAK,QAAA,EAAE,KAAK,QAAA;QACtB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/D,OAAO;gBACL,KAAK,EAAE,yBAAkB,KAAK,4BAAyB;gBACvD,MAAM,EAAE,IAAI;aACb,CAAC;SACH;QAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACxD,OAAO;gBACL,KAAK,EAAE,yBAAkB,KAAK,wCAAmC;gBACjE,MAAM,EAAE,IAAI;aACb,CAAC;SACH;QAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACxD,OAAO;gBACL,KAAK,EAAE,kBAAU,KAAK,CAAC,IAAI,0CAAoC;gBAC/D,MAAM,EAAE,IAAI;aACb,CAAC;SACH;QAED,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;YAC9D,OAAO;gBACL,KAAK,EAAE,kBAAU,KAAK,CAAC,IAAI,6CAAuC;gBAClE,MAAM,EAAE,IAAI;aACb,CAAC;SACH;QAED,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE;YACpE,OAAO;gBACL,KAAK,EAAE,kBAAU,KAAK,CAAC,IAAI,gDAA0C;gBACrE,MAAM,EAAE,IAAI;aACb,CAAC;SACH;QAED,IAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,IAAI,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC3C,OAAO;gBACL,KAAK,EAAE,uBAAe,KAAK,CAAC,IAAI,uCAAmC;gBACnE,MAAM,EAAE,IAAI;aACb,CAAC;SACH;QAED,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;KACzC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,KAAU,IAAK,OAAA,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,CAAA,EAAxE,CAAwE,CAAC,EAAE;QACjH,OAAO;YACL,KAAK,EAAE,0EAA0E;YACjF,MAAM,EAAE,IAAI;SACb,CAAC;KACH;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,MAAM,QAAA;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B;IAA3C,iBA4tDC;;IA3tDC,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAA,MAAM,CAAC,QAAQ,mCAAI,CAAC,CAAC,CAAC;IAC9C,IAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;IAE5D,IAAA,KAMF,2CAA2C,CAAC,QAAQ,EAAE;QACxD,IAAI,EAAE,CAAC,eAAe;KACvB,CAAC,EAPM,SAAS,UAAA,EACJ,kBAAkB,eAAA,EACjB,mBAAmB,gBAAA,EACxB,cAAc,WAAA,EACZ,gBAAgB,aAGzB,CAAC;IAEG,IAAA,KAA8C,QAAQ,CAAC,EAAE,CAAC,EAAzD,kBAAkB,QAAA,EAAE,qBAAqB,QAAgB,CAAC;IAC3D,IAAA,KAAkC,QAAQ,CAAuC,EAAE,CAAC,EAAnF,YAAY,QAAA,EAAE,eAAe,QAAsD,CAAC;IACrF,IAAA,KAA4C,QAAQ,CAAC,EAAE,CAAC,EAAvD,iBAAiB,QAAA,EAAE,oBAAoB,QAAgB,CAAC;IACzD,IAAA,KAAgC,QAAQ,CAAC,EAAE,CAAC,EAA3C,WAAW,QAAA,EAAE,cAAc,QAAgB,CAAC;IAC7C,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IAClD,IAAA,KAAgC,QAAQ,CAAC,iBAAiB,CAAC,EAA1D,WAAW,QAAA,EAAE,cAAc,QAA+B,CAAC;IAC5D,IAAA,KAAgC,QAAQ,CAAqB,IAAI,CAAC,EAAjE,WAAW,QAAA,EAAE,cAAc,QAAsC,CAAC;IACnE,IAAA,KAA4B,QAAQ,CAAC,cAAc,CAAC,EAAnD,SAAS,QAAA,EAAE,YAAY,QAA4B,CAAC;IACrD,IAAA,KAAoC,QAAQ,CAAgB,WAAW,CAAC,EAAvE,aAAa,QAAA,EAAE,gBAAgB,QAAwC,CAAC;IACzE,IAAA,KAAsC,QAAQ,CAA+C,IAAI,CAAC,EAAjG,cAAc,QAAA,EAAE,iBAAiB,QAAgE,CAAC;IACnG,IAAA,KAAsD,QAAQ,CAA8C,IAAI,CAAC,EAAhH,sBAAsB,QAAA,EAAE,yBAAyB,QAA+D,CAAC;IAClH,IAAA,KAA0D,QAAQ,CAAwD,IAAI,CAAC,EAA9H,wBAAwB,QAAA,EAAE,2BAA2B,QAAyE,CAAC;IAChI,IAAA,KAA8C,QAAQ,CAAC,EAAE,CAAC,EAAzD,kBAAkB,QAAA,EAAE,qBAAqB,QAAgB,CAAC;IAC3D,IAAA,KAA0D,QAAQ,CAAC,KAAK,CAAC,EAAxE,wBAAwB,QAAA,EAAE,2BAA2B,QAAmB,CAAC;IAC1E,IAAA,KAA4D,QAAQ,CAAC,EAAE,CAAC,EAAvE,yBAAyB,QAAA,EAAE,4BAA4B,QAAgB,CAAC;IACzE,IAAA,KAA8D,QAAQ,CAAgB,IAAI,CAAC,EAA1F,0BAA0B,QAAA,EAAE,6BAA6B,QAAiC,CAAC;IAC5F,IAAA,KAA4C,QAAQ,CAAC,KAAK,CAAC,EAA1D,iBAAiB,QAAA,EAAE,oBAAoB,QAAmB,CAAC;IAC5D,IAAA,KAA0D,QAAQ,CAAC,KAAK,CAAC,EAAxE,wBAAwB,QAAA,EAAE,2BAA2B,QAAmB,CAAC;IAC1E,IAAA,MAA8C,QAAQ,CAAC,EAAE,CAAC,EAAzD,kBAAkB,SAAA,EAAE,qBAAqB,SAAgB,CAAC;IAC3D,IAAA,MAAoD,QAAQ,CAAC,KAAK,CAAC,EAAlE,qBAAqB,SAAA,EAAE,wBAAwB,SAAmB,CAAC;IACpE,IAAA,MAA4D,QAAQ,CAAM,IAAI,CAAC,EAA9E,yBAAyB,SAAA,EAAE,4BAA4B,SAAuB,CAAC;IAChF,IAAA,MAA0C,QAAQ,CAAC,EAAE,CAAC,EAArD,gBAAgB,SAAA,EAAE,mBAAmB,SAAgB,CAAC;IACvD,IAAA,MAAgE,QAAQ,CAAgB,IAAI,CAAC,EAA5F,2BAA2B,SAAA,EAAE,8BAA8B,SAAiC,CAAC;IAC9F,IAAA,MAAsD,QAAQ,CAAC,SAAS,CAAC,EAAxE,sBAAsB,SAAA,EAAE,yBAAyB,SAAuB,CAAC;IAC1E,IAAA,MAAgD,QAAQ,CAAC,KAAK,CAAC,EAA9D,mBAAmB,SAAA,EAAE,sBAAsB,SAAmB,CAAC;IAChE,IAAA,MAAwC,QAAQ,CAAkB;QACtE,wBAAwB,EAAE,KAAK;QAC/B,wBAAwB,EAAE,IAAI;KAC/B,CAAC,EAHK,eAAe,SAAA,EAAE,kBAAkB,SAGxC,CAAC;IACG,IAAA,MAAkD,QAAQ,CAAkB,eAAe,CAAC,EAA3F,oBAAoB,SAAA,EAAE,uBAAuB,SAA8C,CAAC;IACnG,IAAM,uBAAuB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEtD,IAAA,MAGF,gDAAgD,EAAE,EAFpD,cAAc,SAAA,EACD,uBAAuB,mBACgB,CAAC;IAEjD,IAAA,MAGF,8CAA8C,EAAE,EAFlD,YAAY,SAAA,EACC,qBAAqB,mBACgB,CAAC;IAC/C,IAAA,MAGF,0DAA0D,EAAE,EAF9D,wBAAwB,SAAA,EACX,iCAAiC,mBACgB,CAAC;IAC3D,IAAA,MAGF,8CAA8C,EAAE,EAFlD,YAAY,SAAA,EACC,qBAAqB,mBACgB,CAAC;IAC/C,IAAA,MAGF,8CAA8C,EAAE,EAFlD,YAAY,SAAA,EACC,qBAAqB,mBACgB,CAAC;IAErD,IAAM,eAAe,GAAG,qBAAqB,CAAC;IAC9C,IAAM,4BAA4B,GAAG,iCAAiC,CAAC;IAEvE,SAAS,CAAC;QACR,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,kBAAkB;YAAE,OAAO;QAC/B,IAAI,SAAS,CAAC,yBAAyB,EAAE;YACvC,qBAAqB,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;SAC5D;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEpC,SAAS,CAAC;QACR,eAAe,CAAC,EAAE,CAAC,CAAC;QACpB,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,cAAc,CAAC,EAAE,CAAC,CAAC;QACnB,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAChC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,4BAA4B,CAAC,EAAE,CAAC,CAAC;QACjC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACnC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrC,yBAAyB,CAAC,qBAAc,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC,CAAC;IACxD,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzB,SAAS,CAAC,cAAM,OAAA;QACd,IAAI,uBAAuB,CAAC,OAAO,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACtD;IACH,CAAC,EAJe,CAIf,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,iBAAiB,GAAG,OAAO,CAC/B;;QAAM,OAAA,CAAC,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,UAAU,IAAK,OAAA,CAAC;YACxD,KAAK,EAAE,UAAG,UAAU,CAAC,WAAW,eAAK,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAG;YACtE,KAAK,EAAE,UAAU,CAAC,IAAI;SACvB,CAAC,EAHuD,CAGvD,CAAC,CAAA;KAAA,EACH,CAAC,SAAS,CAAC,CACZ,CAAC;IAEI,IAAA,MAMF,wCAAwC,CAC1C,EAAE,QAAQ,UAAA,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAC5C;QACE,IAAI,EAAE,CAAC,eAAe,IAAI,CAAC,kBAAkB;KAC9C,CACF,EAVO,cAAc,WAAA,EACT,eAAe,gBAAA,EACd,gBAAgB,iBAAA,EACrB,WAAW,YAAA,EACT,aAAa,cAMvB,CAAC;IAEF,IAAM,eAAe,GAAG,MAAA,YAAY,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC;IAChD,IAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC,UAAG,MAAA,eAAe,CAAC,MAAM,mCAAI,EAAE,eAAK,eAAe,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClH,IAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEnD,IAAM,aAAa,GAAG,OAAO,CAC3B,0BAAM,OAAA,MAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,0CAAE,IAAI,CAAC,UAAC,MAAM,YAAK,OAAA,UAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,eAAK,MAAM,CAAC,SAAS,CAAE,KAAK,iBAAiB,CAAA,EAAA,CAAC,mCAAI,IAAI,CAAA,EAAA,EAC5H,CAAC,cAAc,EAAE,iBAAiB,CAAC,CACpC,CAAC;IAEI,IAAA,MAMF,6CAA6C,CAC/C;QACE,QAAQ,UAAA;QACR,UAAU,EAAE,kBAAkB;QAC9B,KAAK,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,mCAAI,EAAE;QACrC,MAAM,EAAE,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,mCAAI,SAAS;KAC3C,EACD;QACE,IAAI,EAAE,CAAC,eAAe,IAAI,CAAC,eAAe,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,kBAAkB,CAAA;KAC5H,CACF,EAfO,WAAW,WAAA,EACN,oBAAoB,gBAAA,EACnB,qBAAqB,iBAAA,EAC1B,gBAAgB,YAAA,EACd,kBAAkB,cAW5B,CAAC;IAEI,IAAA,MAKF,oBAAoB,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,mCAAI,CAAC,EAAE;QAC1D,IAAI,EAAE,CAAC,eAAe,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAA,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAA;KAClF,CAAC,EANM,mBAAmB,WAAA,EACd,oBAAoB,gBAAA,EACnB,qBAAqB,iBAAA,EAC1B,gBAAgB,YAGvB,CAAC;IAEH,IAAM,eAAe,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,IAAI,CAAC;IAClD,IAAM,wBAAwB,GAAG,MAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,0CAAE,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,IAAI,KAAK,kBAAkB,EAAtC,CAAsC,CAAC,mCAAI,IAAI,CAAC;IAC9H,IAAM,kBAAkB,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,EAAC,CAAC,CAAC,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC7G,IAAM,uBAAuB,GAAG,OAAO,CACrC,aAAa;WACV,CACD,mBAAmB;eAChB,CAAC,WAAW;eACZ,oBAAoB;eACpB,qBAAqB;eACrB,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,oBAAoB,IAAI,qBAAqB,CAAC,CAAC,CAC7E,CACF,CAAC;IAEF,SAAS,CAAC;QACR,IAAI,CAAC,eAAe,EAAE;YACpB,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;SACR;QAED,IAAI,uBAAuB,CAAC,OAAO,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7B,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAChC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,4BAA4B,CAAC,EAAE,CAAC,CAAC;QACjC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACnC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrC,yBAAyB,CAAC,gBAAS,iBAAiB,cAAI,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC,CAAC;QACtE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEzC,SAAS,CAAC;QACR,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;YAAE,OAAO;QAC/C,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;IAErC,SAAS,CAAC;QACR,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW;YAAE,OAAO;QAC/D,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC,eAAe,IAAI,eAAe,CAAC,EAAE,KAAK,aAAa,CAAC,aAAa,CAAC;YAAE,OAAO;QAE7G,IAAI,uBAAuB,CAAC,OAAO,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,cAAc,CAAC,gBAAgB,CAC7B,WAAW,EACX,aAAa,EACb,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC,CAAC;QACH,uBAAuB,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;YAClD,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAExF,IAAM,eAAe,GAAG,OAAO,CAAC;;QAC9B,IAAM,OAAO,qBAAO,CAAC,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,mCAAI,EAAE,CAAC,OAAC,CAAC;QACrD,IAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEtD,IAAM,QAAQ,GAAG,YAAY;YAC3B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM;;gBACtB,IAAM,QAAQ,GAAG,UAAG,MAAM,CAAC,SAAS,cAAI,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,cAAI,MAAA,MAAM,CAAC,uBAAuB,mCAAI,EAAE,cAAI,MAAA,MAAM,CAAC,sBAAsB,mCAAI,EAAE,cAAI,MAAA,MAAM,CAAC,gBAAgB,mCAAI,EAAE,cAAI,MAAA,MAAM,CAAC,uBAAuB,mCAAI,EAAE,CAAE,CAAC,WAAW,EAAE,CAAC;gBACpO,OAAO,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC,CAAC;YACF,CAAC,CAAC,OAAO,CAAC;QAEZ,IAAI,eAAe,CAAC,wBAAwB,EAAE;YAC5C,QAAQ,CAAC,IAAI,CAAC,UAAC,IAAI,EAAE,KAAK;;gBACxB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;oBAChC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7B;gBAED,IAAM,SAAS,GAAG,UAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,cAAI,IAAI,CAAC,SAAS,CAAE,CAAC,WAAW,EAAE,CAAC;gBACzE,IAAM,UAAU,GAAG,UAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,EAAE,cAAI,KAAK,CAAC,SAAS,CAAE,CAAC,WAAW,EAAE,CAAC;gBAC5E,OAAO,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,EAAE,CAAC,eAAe,CAAC,wBAAwB,EAAE,WAAW,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,CAAC,CAAC,CAAC;IAErF,IAAM,oBAAoB,GAAG,OAAO,CAAC;;QACnC,IAAM,OAAO,GAAG,IAAI,GAAG,EAA4C,CAAC;QAEpE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,0CAAE,OAAO,CAAC,UAAC,SAAS;YAChD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;gBAC1B,KAAK,EAAE,UAAG,SAAS,CAAC,KAAK,qBAAM,SAAS,CAAC,MAAM,CAAE;gBACjD,KAAK,EAAE,SAAS,CAAC,IAAI;aACtB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CACjB,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,OAAO,EAA7C,CAA6C,EAChE,OAAO,CAAC,UAAC,MAAM;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;oBAC5B,KAAK,EAAE,UAAG,MAAM,CAAC,SAAS,iCAAkB,MAAM,CAAC,UAAU,CAAE;oBAC/D,KAAK,EAAE,MAAM,CAAC,SAAS;iBACxB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEL,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAC,CAAC,CAAC;IAE3D,IAAM,YAAY,GAAG;QACnB;YACE,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,CACP,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAK,SAAS,EAAC,sBAAsB,aACnC,2CAA0B,EAC1B,2BAAS,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,WAAW,GAAU,IAC7C,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,gDAA+B,EAC/B,2BAAS,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,iBAAiB,KAAI,SAAS,GAAU,IAChE,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,6CAA4B,EAC5B,2BAAS,CAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,WAAW,KAAI,cAAc,GAAU,IACtE,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,6CAA4B,EAC5B,2BAAS,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAU,IAC5F,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,kCAAiB,EACjB,2BAAS,CAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,IAAI,KAAI,GAAG,GAAU,IACpD,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,kCAAiB,EACjB,2BAAS,MAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,IAAI,mCAAI,GAAG,GAAU,IACpD,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,sCAAqB,EACrB,2BAAS,CAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,QAAQ,KAAI,GAAG,GAAU,IACxD,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,wCAAuB,EACvB,2BAAS,CAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,SAAS,KAAI,GAAG,GAAU,IACzD,EACN,eAAK,SAAS,EAAC,sBAAsB,aACnC,yCAAwB,EACxB,2BAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAU,IAClH,IACF,CACP;SACF;QACD;YACE,KAAK,EAAE,kBAAkB;YACzB,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,CACP,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAK,SAAS,EAAC,mBAAmB,aAChC,0BACE,iDAAiC,EACjC,2GAAuF,IACnF,EACN,KAAC,WAAW,IACV,OAAO,EAAE,oBAAoB,CAAC,wBAAwB,EACtD,QAAQ,EAAE,UAAC,OAAO,IAAK,OAAA,uBAAuB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAAM,OAAO,KAAE,wBAAwB,EAAE,OAAO,IAAG,EAAnD,CAAmD,CAAC,EAAzF,CAAyF,GAChH,IACE,EAEN,eAAK,SAAS,EAAC,mBAAmB,aAChC,0BACE,yDAAyC,EACzC,8GAA0F,IACtF,EACN,KAAC,WAAW,IACV,OAAO,EAAE,oBAAoB,CAAC,wBAAwB,EACtD,QAAQ,EAAE,UAAC,OAAO,IAAK,OAAA,uBAAuB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAAM,OAAO,KAAE,wBAAwB,EAAE,OAAO,IAAG,EAAnD,CAAmD,CAAC,EAAzF,CAAyF,GAChH,IACE,IACF,CACP;SACF;KACF,CAAC;IAEF,IAAM,aAAa,GAAG;;;wBACpB,qBAAM,gBAAgB,EAAE,EAAA;;oBAAxB,SAAwB,CAAC;yBACrB,kBAAkB,EAAlB,wBAAkB;oBACpB,qBAAM,aAAa,EAAE,EAAA;;oBAArB,SAAqB,CAAC;;;yBAEpB,CAAA,eAAe,IAAI,aAAa,CAAA,EAAhC,wBAAgC;oBAClC,qBAAM,kBAAkB,EAAE,EAAA;;oBAA1B,SAA0B,CAAC;;;;;SAE9B,CAAC;IAEF,IAAM,qBAAqB,GAAG,UAAC,MAA0C;;QACvE,IAAI,uBAAuB,CAAC,OAAO,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1B,oBAAoB,CAAC,UAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,eAAK,MAAM,CAAC,SAAS,CAAE,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,IAAI,uBAAuB,CAAC,OAAO,EAAE;YACnC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAChC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,4BAA4B,CAAC,EAAE,CAAC,CAAC;QACjC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACnC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxB,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrC,yBAAyB,CAAC,2BAAoB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC,CAAC;QAC5D,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG;QACzB,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;QACzC,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UAAC,OAA8C;QACvE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAChC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,4BAA4B,CAAC,EAAE,CAAC,CAAC;QACjC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACnC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1B,cAAc,CAAC,UAAC,OAAO,IAAK,OAAA,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAtC,CAAsC,CAAC,CAAC;IACtE,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG,UAAC,KAAwB,EAAE,KAAU;QAC9D,iBAAiB,CAAC,UAAC,OAAO;;YAAK,OAAA,uBAAM,OAAO,gBAAG,KAAK,IAAG,KAAK,OAAG;QAAhC,CAAgC,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,IAAM,qBAAqB,GAAG,UAAC,UAAkB,EAAE,aAAqB;QACtE,iBAAiB,CAAC,UAAC,OAAO;;YAAK,OAAA,uBAC1B,OAAO,KACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;oBAClC,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU;wBAAE,OAAO,MAAM,CAAC;oBAEpD,IAAM,sBAAsB,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC3D,IAAM,uBAAuB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;oBACzD,6BACK,MAAM,KACT,SAAS,EAAE,uBAAuB,EAClC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,WAAW,KAAK,sBAAsB;4BACtF,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC;4BACpC,CAAC,CAAC,MAAM,CAAC,WAAW,IACtB;gBACJ,CAAC,CAAC,EACF,YAAY,EAAE,OAAO,CAAC,YAAY,MAAK,MAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,KAAK,UAAU,EAAhC,CAAgC,CAAC,0CAAE,SAAS,CAAA;oBAClH,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;oBAC1B,CAAC,CAAC,OAAO,CAAC,YAAY,IACxB,CAAA;SAAA,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,uBAAuB,GAAG,UAAC,UAAkB,EAAE,eAAuB;QAC1E,iBAAiB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAC1B,OAAO,KACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CACvC,MAAM,CAAC,UAAU,KAAK,UAAU;gBAC9B,CAAC,uBAAM,MAAM,KAAE,WAAW,EAAE,eAAe,IAC3C,CAAC,CAAC,MAAM,CACX,EAJwC,CAIxC,CAAC,IACF,EAP6B,CAO7B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,0BAA0B,GAAG,UAAC,UAAkB,EAAE,kBAA0B;QAChF,iBAAiB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAC1B,OAAO,KACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;gBAClC,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU;oBAAE,OAAO,MAAM,CAAC;gBACpD,IAAI,MAAM,CAAC,mBAAmB;oBAAE,OAAO,MAAM,CAAC;gBAE9C,6BACK,MAAM,KACT,cAAc,EAAE,kBAAkB,EAClC,OAAO,EAAE,kCAAkC,CAAC,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC,IACvF;YACJ,CAAC,CAAC,IACF,EAZ6B,CAY7B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,qBAAqB,GAAG,UAAC,eAAwD;QACrF,iBAAiB,CAAC,UAAC,OAAO;;YACxB,IAAM,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;YAExD,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;gBACzC,IAAM,uBAAuB,GAAG,mCAAmC,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBACxG,IAAM,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;gBACjE,IAAM,sBAAsB,GAAG,kCAAkC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC3F,IAAM,sBAAsB,GAAG,MAAM,CAAC,mBAAmB,KAAK,uBAAuB;uBAChF,CAAC,eAAe,KAAK,aAAa,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC;uBAC/H,CAAC,eAAe,KAAK,cAAc,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;gBACtF,IAAM,aAAa,GAAG,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzF,IAAM,eAAe,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;oBACtG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;oBAC1B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;gBACvB,IAAM,WAAW,GAAG,uBAAuB;oBACzC,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,CAAC,eAAe,KAAK,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1F,IAAM,gBAAgB,GAAG,CACvB,eAAe,KAAK,aAAa,IAAI,MAAM,CAAC,eAAe,IAAI,aAAa,KAAK,IAAI,CACtF,IAAI,CACH,eAAe,KAAK,cAAc,IAAI,MAAM,CAAC,oBAAoB,CAClE,CAAC;gBAEF,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,aAAa,EAAE;oBACvF,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;iBAC5D;gBAED,6BACK,MAAM,KACT,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EAAE,uBAAuB,EAC5C,mBAAmB,EAAE,uBAAuB,EAC5C,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,gBAAgB,IAC9B;YACJ,CAAC,CAAC,CAAC;YAEH,6BACK,OAAO,KACV,eAAe,iBAAA,EACf,aAAa,EAAE,6BAA6B,CAAC,eAAe,CAAC,EAC7D,OAAO,SAAA,EACP,YAAY,EAAE,MAAA,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,mCAAI,OAAO,CAAC,YAAY,IACrF;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UAAC,UAAkB,EAAE,OAAgB;QAC7D,iBAAiB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAC1B,OAAO,KACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;gBAClC,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU;oBAAE,OAAO,MAAM,CAAC;gBACpD,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,YAAY;oBAAE,OAAO,MAAM,CAAC;gBACrE,6BAAY,MAAM,KAAE,OAAO,SAAA,IAAG;YAChC,CAAC,CAAC,IACF,EAP6B,CAO7B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG,UAAC,SAAiB;QAC3C,iBAAiB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAC1B,OAAO,KACV,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,CACvC,MAAM,CAAC,SAAS,KAAK,SAAS;gBAC5B,CAAC,uBAAM,MAAM,KAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IACjE,CAAC,CAAC,MAAM,CACX,EAJwC,CAIxC,CAAC,IACF,EAR6B,CAQ7B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,0BAA0B,GAAG,UAAC,OAAgB;QAClD,iBAAiB,CAAC,UAAC,OAAO,IAAK,OAAA,uBAC1B,OAAO,KACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;gBAClC,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvE,OAAO,MAAM,CAAC;iBACf;gBACD,6BAAY,MAAM,KAAE,OAAO,SAAA,IAAG;YAChC,CAAC,CAAC,IACF,EAR6B,CAQ7B,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,mBAAmB,GAAG;;QAC1B,IAAM,aAAa,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,mCAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAC;QAC3E,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,CAAC,IAAI,CAAC,qDAA8C,aAAa,CAAE,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IAC9G,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG;;;;;;oBACxB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,EAAE,CAAA;wBAAE,sBAAO;oBAE7C,gBAAgB,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;oBAChE,IAAI,gBAAgB,CAAC,MAAM,EAAE;wBAC3B,gBAAgB,CAAC,OAAO,CAAC,UAAC,MAAM;4BAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC,CAAC;wBAC5E,CAAC,CAAC,CAAC;wBACH,sBAAO;qBACR;;;;oBAGiB,qBAAM,cAAc,CAAC;4BACnC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;4BAC7B,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC;yBAC1C,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAHL,OAAO,GAAG,SAGL;oBAEX,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAC3B,4BAA4B,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACzD,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzE,8BAA8B,CAAC,IAAI,CAAC,CAAC;oBACrC,yBAAyB,CAAC,kBAAW,OAAO,CAAC,YAAY,CAAC,QAAQ,cAAI,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC,CAAC;oBACpF,yBAAyB,CAAC,IAAI,CAAC,CAAC;oBAChC,2BAA2B,CAAC,IAAI,CAAC,CAAC;oBAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;oBAC1B,qBAAqB,CAAC,EAAE,CAAC,CAAC;oBAC1B,gBAAgB,CAAC,aAAa,CAAC,CAAC;;;;oBAEhC,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,gBAAgB;wBACzB,MAAM,EAAE,cAAc,CAAC,OAAK,CAAC;qBAC9B,CAAC,CAAC,CAAC;;;;;SAEP,CAAC;IAEF,IAAM,uBAAuB,GAAG;;;;;;oBAC9B,IAAI,CAAC,WAAW,IAAI,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,EAAE,CAAA;wBAAE,sBAAO;oBAE7C,gBAAgB,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;oBAChE,IAAI,gBAAgB,CAAC,MAAM,EAAE;wBAC3B,gBAAgB,CAAC,OAAO,CAAC,UAAC,MAAM;4BAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC,CAAC;wBAC5E,CAAC,CAAC,CAAC;wBACH,gBAAgB,CAAC,WAAW,CAAC,CAAC;wBAC9B,sBAAO;qBACR;oBAEK,uBAAuB,GAAG,iCAAiC,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;oBACjG,IAAI,uBAAuB,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE;wBACpE,8BAA8B,CAAC,MAAA,uBAAuB,CAAC,KAAK,mCAAI,2BAA2B,CAAC,CAAC;wBAC7F,gBAAgB,CAAC,aAAa,CAAC,CAAC;wBAChC,QAAQ,CAAC,SAAS,CAAC;4BACjB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,YAAY;4BACrB,MAAM,EAAE,MAAA,uBAAuB,CAAC,KAAK,mCAAI,2BAA2B;yBACrE,CAAC,CAAC,CAAC;wBACJ,sBAAO;qBACR;oBAED,8BAA8B,CAAC,IAAI,CAAC,CAAC;;;;oBAGlB,qBAAM,YAAY,CAAC;4BAClC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;4BAC7B,OAAO,wBACF,mBAAmB,CAAC,WAAW,EAAE,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAC,SAAS,mCAAI,IAAI,CAAC,KAChF,aAAa,EAAE,uBAAuB,CAAC,MAAM,GAC9C;yBACF,CAAC,CAAC,MAAM,EAAE,EAAA;;oBANL,aAAW,SAMN;oBAEX,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,SAAS;wBACnB,OAAO,EAAE,eAAe;wBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;4BACxB,CAAC,CAAC,sDAAsD;4BACxD,CAAC,CAAC,sDAAsD;qBAC3D,CAAC,CAAC,CAAC;oBAEJ,yBAAyB,CAAC,UAAQ,CAAC,CAAC;oBACpC,2BAA2B,CAAC,IAAI,CAAC,CAAC;oBAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;oBAC1B,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBACnC,4BAA4B,CAAC,EAAE,CAAC,CAAC;oBACjC,6BAA6B,CAAC,IAAI,CAAC,CAAC;oBACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBAC5B,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBACnC,qBAAqB,CAAC,EAAE,CAAC,CAAC;oBAC1B,wBAAwB,CAAC,KAAK,CAAC,CAAC;oBAChC,cAAc,CAAC,UAAC,OAAO,IAAK,OAAA,CAC1B,OAAO;wBACL,CAAC,uBACI,OAAO,KACV,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,UAAQ,CAAC,OAAO,IAE3B,CAAC,CAAC,OAAO,CACZ,EAR2B,CAQ3B,CAAC,CAAC;oBACH,gBAAgB,CAAC,eAAe,CAAC,CAAC;;;;oBAElC,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,aAAa;wBACtB,MAAM,EAAE,cAAc,CAAC,OAAK,CAAC;qBAC9B,CAAC,CAAC,CAAC;;;;;SAEP,CAAC;IAEF,IAAM,kBAAkB,GAAG;;;;;;oBACzB,IAAI,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,EAAE,CAAA;wBAAE,sBAAO;oBAEnC,2BAA2B,CAAC,IAAI,CAAC,CAAC;oBAClC,wBAAwB,CAAC,KAAK,CAAC,CAAC;oBAChC,2BAA2B,CAAC,IAAI,CAAC,CAAC;oBAClC,4BAA4B,CAAC,4CAA4C,CAAC,CAAC;oBAC3E,6BAA6B,CAAC,IAAI,CAAC,CAAC;oBACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBACxB,eAAe,GAAG,EAAE,CAAC;;;;oBAGN,qBAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAAzE,QAAQ,GAAG,SAA8D;oBAC/E,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;oBAC5D,qBAAqB,CAAC,eAAe,CAAC,CAAC;oBACvC,4BAA4B,CAAC,mDAAmD,CAAC,CAAC;;;;oBAElF,IAAI,CAAC,8BAA8B,CAAC,OAAK,CAAC,EAAE;wBAC1C,2BAA2B,CAAC,KAAK,CAAC,CAAC;wBACnC,4BAA4B,CAAC,EAAE,CAAC,CAAC;wBACjC,6BAA6B,CAAC,IAAI,CAAC,CAAC;wBACpC,oBAAoB,CAAC,KAAK,CAAC,CAAC;wBAC5B,QAAQ,CAAC,SAAS,CAAC;4BACjB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,sBAAsB;4BAC/B,MAAM,EAAE,cAAc,CAAC,OAAK,CAAC;yBAC9B,CAAC,CAAC,CAAC;wBACJ,sBAAO;qBACR;oBAED,4BAA4B,CAAC,2FAA2F,CAAC,CAAC;;wBAG5H,qBAAM,IAAI,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAhC,CAAgC,CAAC,EAAA;;oBAAhE,SAAgE,CAAC;oBACjE,4BAA4B,CAAC,2CAA2C,CAAC,CAAC;oBAE/C,qBAAM,0BAA0B,CAAC;4BAC1D,OAAO,EAAE,EAAE;4BACX,OAAO,EAAE,IAAI;yBACd,CAAC,EAAA;;oBAHI,kBAAkB,GAAG,SAGzB;oBAEF,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBAEnC,IAAI,CAAC,kBAAkB,EAAE;wBACvB,6BAA6B,CAC3B,iPAAiP,CAClP,CAAC;wBACF,QAAQ,CAAC,SAAS,CAAC;4BACjB,QAAQ,EAAE,MAAM;4BAChB,OAAO,EAAE,iCAAiC;4BAC1C,MAAM,EAAE,2FAA2F;yBACpG,CAAC,CAAC,CAAC;wBACJ,sBAAO;qBACR;oBAED,4BAA4B,CAAC,2CAA2C,CAAC,CAAC;oBAC1E,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBAC3B,2BAA2B,CAAC,IAAI,CAAC,CAAC;oBAClC,qBAAqB,CAAC,EAAE,CAAC,CAAC;oBAC1B,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,SAAS;wBACnB,OAAO,EAAE,gBAAgB;wBACzB,MAAM,EAAE,eAAe,IAAI,+EAA+E;qBAC3G,CAAC,CAAC,CAAC;;;;SACL,CAAC;IAEF,IAAM,8BAA8B,GAAG;;;;;;oBACrC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,EAAE,CAAA,IAAI,CAAC,CAAA,sBAAsB,aAAtB,sBAAsB,uBAAtB,sBAAsB,CAAE,OAAO,CAAA;wBAAE,sBAAO;oBAEjF,uBAAuB,GAAG,iCAAiC,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;oBACjG,IAAI,uBAAuB,CAAC,KAAK,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE;wBACpE,8BAA8B,CAAC,MAAA,uBAAuB,CAAC,KAAK,mCAAI,2BAA2B,CAAC,CAAC;wBAC7F,gBAAgB,CAAC,aAAa,CAAC,CAAC;wBAChC,QAAQ,CAAC,SAAS,CAAC;4BACjB,QAAQ,EAAE,OAAO;4BACjB,OAAO,EAAE,YAAY;4BACrB,MAAM,EAAE,MAAA,uBAAuB,CAAC,KAAK,mCAAI,2BAA2B;yBACrE,CAAC,CAAC,CAAC;wBACJ,sBAAO;qBACR;;;;oBAGkB,qBAAM,wBAAwB,CAAC;4BAC9C,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;4BAC7B,OAAO,wBACF,mBAAmB,uBAEf,WAAW,KACd,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,sBAAsB,CAAC,OAAO,KAEzC,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAC,SAAS,mCAAI,IAAI,CAC5C,KACD,aAAa,EAAE,uBAAuB,CAAC,MAAM,GAC9C;yBACF,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAbL,QAAQ,GAAG,SAaN;oBAEX,2BAA2B,CAAC,QAAQ,CAAC,CAAC;oBACtC,gBAAgB,CAAC,eAAe,CAAC,CAAC;oBAClC,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,SAAS;wBACnB,OAAO,EAAE,6BAA6B;wBACtC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,OAAO;4BAChC,CAAC,CAAC,2EAA2E;4BAC7E,CAAC,CAAC,2FAA2F;qBAChG,CAAC,CAAC,CAAC;;;;oBAEJ,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,mCAAmC;wBAC5C,MAAM,EAAE,cAAc,CAAC,OAAK,CAAC;qBAC9B,CAAC,CAAC,CAAC;;;;;SAEP,CAAC;IAEF,IAAM,kBAAkB,GAAG;;;;;;oBACzB,IAAI,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,EAAE,CAAA,IAAI,CAAC,kBAAkB;wBAAE,sBAAO;;;;oBAGvC,qBAAM,YAAY,CAAC;4BAClC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;4BAC7B,UAAU,EAAE,kBAAkB;yBAC/B,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAHL,QAAQ,GAAG,SAGN;oBAEX,qBAAqB,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;oBACjE,wBAAwB,CAAC,IAAI,CAAC,CAAC;oBAC/B,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,SAAS;wBACnB,OAAO,EAAE,oBAAoB;wBAC7B,MAAM,EAAE,QAAQ,CAAC,OAAO,IAAI,uDAA+C,kBAAkB,QAAI;qBAClG,CAAC,CAAC,CAAC;oBAEJ,qBAAM,aAAa,EAAE,EAAA;;oBAArB,SAAqB,CAAC;oBACtB,qBAAM,gBAAgB,EAAE,EAAA;;oBAAxB,SAAwB,CAAC;;;;oBAEzB,QAAQ,CAAC,SAAS,CAAC;wBACjB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,sBAAsB;wBAC/B,MAAM,EAAE,cAAc,CAAC,OAAK,CAAC;qBAC9B,CAAC,CAAC,CAAC;;;;;SAEP,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,CACL,cAAK,SAAS,EAAC,WAAW,YACxB,eAAK,SAAS,EAAC,kBAAkB,aAC/B,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EACzB,4CAAyB,EACzB,2IAAuH,IACnH,GACF,CACP,CAAC;KACH;IAED,IAAM,YAAY,GAAoB;QACpC,WAAW;QACX,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,eAAe;KAChB,CAAC;IACF,IAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7D,IAAM,YAAY,GAAG;QACnB;YACE,GAAG,EAAE,WAAoB;YACzB,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,gBAAgB,GAAG,CAAC;YAC9B,MAAM,EAAE,aAAa,KAAK,WAAW;YACrC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,WAAW,CAAC,EAA7B,CAA6B;SAC7C;QACD;YACE,GAAG,EAAE,aAAsB;YAC3B,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,gBAAgB,GAAG,CAAC;YAC9B,MAAM,EAAE,aAAa,KAAK,aAAa;YACvC,QAAQ,EAAE,CAAC,cAAc;YACzB,OAAO,EAAE;gBACP,IAAI,cAAc;oBAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACtD,CAAC;SACF;QACD;YACE,GAAG,EAAE,eAAwB;YAC7B,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,gBAAgB,GAAG,CAAC;YAC9B,MAAM,EAAE,aAAa,KAAK,eAAe;YACzC,QAAQ,EAAE,CAAC,sBAAsB;YACjC,OAAO,EAAE;gBACP,IAAI,sBAAsB;oBAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAChE,CAAC;SACF;QACD;YACE,GAAG,EAAE,mBAA4B;YACjC,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,gBAAgB,GAAG,CAAC;YAC9B,MAAM,EAAE,aAAa,KAAK,mBAAmB;YAC7C,QAAQ,EAAE,CAAC,wBAAwB;YACnC,OAAO,EAAE;gBACP,IAAI,wBAAwB;oBAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACtE,CAAC;SACF;QACD;YACE,GAAG,EAAE,eAAwB;YAC7B,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,aAAa,KAAK,eAAe;YACzC,QAAQ,EAAE,CAAC,wBAAwB;YACnC,OAAO,EAAE;gBACP,IAAI,wBAAwB;oBAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAClE,CAAC;SACF;KACF,CAAC;IAEF,IAAM,yBAAyB,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,MAAM,CAC3D,UAAC,MAAM,IAAK,OAAA,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAtE,CAAsE,CACnF,mCAAI,EAAE,CAAC;IACR,IAAM,6BAA6B,GAAG,yBAAyB,CAAC,MAAM,GAAG,CAAC;WACrE,yBAAyB,CAAC,KAAK,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,OAAO,EAAd,CAAc,CAAC,CAAC;IACjE,IAAM,YAAY,GAAG,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,mCAAI,IAAI,CAAC;IACjD,IAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;QAC/B;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,CACP,eAAK,SAAS,EAAC,kBAAkB,aAC/B,mBAAS,SAAS,EAAC,mBAAmB,aACpC,aAAI,SAAS,EAAC,yBAAyB,2BAAgB,EACvD,eAAK,SAAS,EAAC,gBAAgB,aAC7B,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,oBAAoB,8BAAsB,EACzD,KAAC,UAAU,IACT,EAAE,EAAC,oBAAoB,EACvB,KAAK,EAAE,WAAW,CAAC,YAAY,EAC/B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAtD,CAAsD,GAC3E,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,kBAAkB,4BAAoB,EACrD,KAAC,UAAU,IACT,EAAE,EAAC,kBAAkB,EACrB,KAAK,EAAE,WAAW,CAAC,UAAU,EAC7B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAApD,CAAoD,GACzE,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,mBAAmB,6BAAqB,EACvD,KAAC,UAAU,IACT,EAAE,EAAC,mBAAmB,EACtB,KAAK,EAAE,WAAW,CAAC,WAAW,EAC9B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAArD,CAAqD,GAC1E,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,qBAAqB,+BAAuB,EACvD,KAAC,WAAW,IACV,EAAE,EAAC,qBAAqB,EACxB,KAAK,EAAE,WAAW,CAAC,YAAY,EAC/B,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAC,uBAAuB,EACvC,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAA/B,CAA+B,GACpD,IACE,EACN,eAAK,SAAS,EAAC,uCAAuC,aACpD,gBAAO,OAAO,EAAC,kBAAkB,4BAAoB,EACrD,KAAC,aAAa,IACZ,SAAS,EAAC,2BAA2B,EACrC,EAAE,EAAC,kBAAkB,EACrB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,CAAC,WAAW,EAC9B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAArD,CAAqD,GAC1E,IACE,IACF,IACE,EAEV,mBAAS,SAAS,EAAC,mBAAmB,aACpC,aAAI,SAAS,EAAC,yBAAyB,mCAAwB,EAC/D,eAAK,SAAS,EAAC,gBAAgB,aAC7B,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,iBAAiB,2BAAmB,EACnD,KAAC,UAAU,IACT,EAAE,EAAC,iBAAiB,EACpB,KAAK,EAAE,WAAW,CAAC,SAAS,EAC5B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAnD,CAAmD,GACxE,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,kBAAkB,uBAAe,EAChD,KAAC,UAAU,IACT,EAAE,EAAC,kBAAkB,EACrB,KAAK,EAAE,MAAA,WAAW,CAAC,MAAM,mCAAI,SAAS,EACtC,QAAQ,SACR,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,sBAAsB,2BAAmB,EACxD,KAAC,UAAU,IACT,EAAE,EAAC,sBAAsB,EACzB,KAAK,EAAE,WAAW,CAAC,UAAU,EAC7B,QAAQ,SACR,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,sBAAsB,yBAAiB,EACtD,KAAC,UAAU,IACT,EAAE,EAAC,sBAAsB,EACzB,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC,EAChD,QAAQ,SACR,IACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAO,OAAO,EAAC,kBAAkB,iCAAyB,EAC1D,KAAC,WAAW,IACV,EAAE,EAAC,kBAAkB,EACrB,KAAK,EAAE,WAAW,CAAC,eAAe,EAClC,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAlC,CAAkC,GACvD,EACF,iBAAO,SAAS,EAAC,kBAAkB,+BACnB,2BAAS,WAAW,CAAC,aAAa,GAAU,kCACpD,IACJ,IACF,IACE,IACN,CACP;SACF;QACD;YACE,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,CACP,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAK,SAAS,EAAC,uBAAuB,YACpC,eAAK,SAAS,EAAC,sBAAsB,gBAAY,eAAe,aAC9D,eAAM,SAAS,EAAC,iCAAiC,8BAAqB,EACtE,eAAM,SAAS,EAAC,4BAA4B,mCAA0B,IAClE,GACF,EACN,eAAK,SAAS,EAAC,mBAAmB,aAChC,eAAK,SAAS,EAAC,gEAAgE,aAC7E,eAAM,SAAS,EAAC,2BAA2B,YACxC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAClC,KAAC,aAAa,IACZ,OAAO,EAAE,6BAA6B,EACtC,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAhD,CAAgD,gBACzD,6BAA6B,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,6BAA6B,GAC3G,CACH,CAAC,CAAC,CAAC,CACF,SAAS,CACV,GACI,EACP,oCAAmB,EACnB,mCAAkB,EAClB,mCAAkB,EAClB,sCAAqB,EACrB,oCAAmB,EACnB,oCAAmB,EACnB,oCAAmB,IACf,EACL,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM;gCAC9B,IAAM,SAAS,GAAG,WAAW,CAAC,YAAY,KAAK,MAAM,CAAC,SAAS,CAAC;gCAChE,IAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC;gCAC9C,IAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB;oCAChD,CAAC,CAAC,eAAe;oCACjB,CAAC,CAAC,MAAM,CAAC,OAAO;wCACd,CAAC,CAAC,MAAM,CAAC,OAAO;4CACd,CAAC,CAAC,WAAW;4CACb,CAAC,CAAC,aAAa;wCACjB,CAAC,CAAC,UAAU,CAAC;gCAEjB,IAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB;oCAC3C,CAAC,CAAC,QAAQ;oCACV,CAAC,CAAC,MAAM,CAAC,OAAO;wCACd,CAAC,CAAC,MAAM,CAAC,OAAO;4CACd,CAAC,CAAC,QAAQ;4CACV,CAAC,CAAC,iBAAiB;wCACrB,CAAC,CAAC,MAAM,CAAC,OAAO;4CACd,CAAC,CAAC,mBAAmB;4CACrB,CAAC,CAAC,iBAAiB,CAAC;gCAE1B,OAAO,CACL,eAA6B,SAAS,EAAC,0CAA0C,aAC/E,eAAM,SAAS,EAAC,qBAAqB,YAClC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAC5B,eAAM,SAAS,EAAC,yBAAyB,kBAAS,CACnD,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CACnB,eAAM,SAAS,EAAC,yBAAyB,kBAAS,CACnD,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CACxB,KAAC,aAAa,IAAC,OAAO,QAAC,QAAQ,sBAAY,0BAA0B,GAAG,CACzE,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IACZ,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAA1D,CAA0D,GAC/E,CACH,GACI,EACP,gBAAM,SAAS,EAAC,kBAAkB,aAChC,2BAAS,MAAM,CAAC,UAAU,GAAU,EACnC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,kDAAkC,CAAC,CAAC,CAAC,IAAI,IAC9D,EACP,2BACE,KAAC,UAAU,IACT,KAAK,EAAE,MAAM,CAAC,SAAS,EACvB,QAAQ,EAAE,MAAM,CAAC,mBAAmB,EACpC,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAA5D,CAA4D,GACjF,EACD,SAAS,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAChC,eAAK,SAAS,EAAC,wBAAwB,aACpC,SAAS,CAAC,CAAC,CAAC,gBAAO,SAAS,EAAC,kBAAkB,yBAAiB,CAAC,CAAC,CAAC,IAAI,EACvE,iBAAiB,CAAC,CAAC,CAAC,gBAAO,SAAS,EAAC,kBAAkB,4BAAoB,CAAC,CAAC,CAAC,IAAI,IAC/E,CACP,CAAC,CAAC,CAAC,IAAI,IACH,EACP,yBACE,KAAC,UAAU,IACT,KAAK,EAAE,MAAM,CAAC,WAAW,EACzB,QAAQ,EAAE,MAAM,CAAC,mBAAmB,EACpC,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,uBAAuB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAA9D,CAA8D,GACnF,GACG,EACP,eAAM,SAAS,EAAC,kBAAkB,YAChC,2BAAS,MAAM,CAAC,QAAQ,GAAU,GAC7B,EACP,yBACG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAC5B,yBAAO,MAAM,CAAC,cAAc,GAAQ,CACrC,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IACV,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,0BAA0B,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,EAA1D,CAA0D,GAC/E,CACH,GACI,EACP,yBACE,eAAM,SAAS,EAAE,4BAAqB,eAAe,CAAE,YAAG,UAAU,GAAQ,GACvE,EACP,eAAM,SAAS,EAAC,oBAAoB,YACjC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAC5B,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,QAAC,SAAS,EAAC,0DAA0D,wBAE3G,CACf,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CACxB,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,QAAC,SAAS,EAAC,2DAA2D,yBAE5G,CACf,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CACnB,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,EAA3C,CAA2C,+BAExF,CACf,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,yBAAyB,kBAAS,CACnD,GACI,KAxEC,MAAM,CAAC,UAAU,CAyErB,CACP,CAAC;4BACJ,CAAC,CAAC,IACE,IACF,CACP;SACF;QACD;YACE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,CACP,cAAK,SAAS,EAAC,cAAc,YAC1B,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,KAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CACnD,cAAK,SAAS,EAAC,eAAe,YAAC,yBAAO,YAAY,CAAC,SAAS,GAAQ,GAAM,CAC3E,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,2CAA2C,aACxD,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,sBAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,KAAI,8CAA8C,GAAK,IACzE,CACP,GACG,CACP;SACF;KACF,CAAC,CAAC,CAAC,EAAE,CAAC;IAEP,IAAM,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CACvC,eAAK,SAAS,EAAC,+CAA+C,aAC5D,eAAK,SAAS,EAAC,4CAA4C,aACzD,yCAAwB,EACxB,2BAAS,cAAc,CAAC,YAAY,CAAC,QAAQ,GAAU,IACnD,EACN,KAAC,eAAe,IACd,SAAS,EAAC,kBAAkB,EAC5B,KAAK,EAAE,yBAAyB,aAAzB,yBAAyB,cAAzB,yBAAyB,GAAI,cAAc,CAAC,YAAY,CAAC,KAAK,EACrE,UAAU,EAAE,sBAAsB,EAClC,aAAa,EAAE,UAAC,SAAS;oBACvB,4BAA4B,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,2BAA2B,EAAE;wBAC/B,8BAA8B,CAAC,IAAI,CAAC,CAAC;qBACtC;gBACH,CAAC,EACD,YAAY,EAAE,UAAC,QAAQ;oBACrB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC,EACD,aAAa,EAAE,8BAA8B,GAC7C,EACD,2BAA2B,CAAC,CAAC,CAAC,CAC7B,cAAK,SAAS,EAAC,4BAA4B,YACzC,yBAAO,2BAA2B,GAAQ,GACtC,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,IAAM,qBAAqB,GAAG,cAAc,CAAC,CAAC,CAAC,CAC7C,cAAK,SAAS,EAAC,gDAAgD,YAC5D,cAAc,CAAC,SAAS,CAAC,YAAY,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5E,8BACE,eAAK,SAAS,EAAC,4CAA4C,aACzD,yCAAwB,EACxB,2BAAS,cAAc,CAAC,SAAS,CAAC,QAAQ,GAAU,IAChD,EACN,YAAG,SAAS,EAAC,kBAAkB,uOAE3B,EACH,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAClC,cAAK,SAAS,EAAC,mCAAmC,YAAC,yBAAO,cAAc,CAAC,SAAS,CAAC,OAAO,GAAQ,GAAM,CACzG,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,2CAA2C,aACxD,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,sBAAI,cAAc,CAAC,SAAS,CAAC,IAAI,GAAK,IAClC,CACP,GACG,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,IAAM,iBAAiB,GAAG,CACxB,eAAK,SAAS,EAAC,kBAAkB,aAC/B,eAAK,SAAS,EAAC,0BAA0B,aACvC,eAAM,SAAS,EAAC,2BAA2B,uBAAc,EACzD,gDAA6B,EAC7B,kRAA8P,IAC1P,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,wBAAwB,aACrC,cAAK,SAAS,EAAC,8BAA8B,kCAAwB,EACrE,cAAI,SAAS,EAAC,wBAAwB,aACpC,wEAA+C,2BAAS,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,WAAW,GAAU,SAAM,EACtG,uGAAoF,EACpF,2FAAwE,IACrE,IACD,EACN,cAAK,SAAS,EAAC,2BAA2B,YACxC,KAAC,WAAW,IACV,QAAQ,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAChC,OAAO,EAAE,qBAAqB,IAAI,wBAAwB,EAC1D,QAAQ,EAAE,qBAAqB,IAAI,wBAAwB,EAC3D,OAAO,EAAE,cAAM,OAAA,KAAK,kBAAkB,EAAE,EAAzB,CAAyB,8BAG5B,GACV,EACL,wBAAwB,CAAC,CAAC,CAAC,CAC1B,eAAK,SAAS,EAAC,gDAAgD,aAC7D,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAC1B,2CAAwB,EACxB,sBAAI,yBAAyB,IAAI,iDAAiD,GAAK,IACnF,CACP,CAAC,CAAC,CAAC,IAAI,EACP,CAAC,wBAAwB,IAAI,0BAA0B,CAAC,CAAC,CAAC,CACzD,eAAK,SAAS,EAAC,uEAAuE,aACpF,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EACzB,qDAAkC,EAClC,sBAAI,0BAA0B,GAAK,IAC/B,CACP,CAAC,CAAC,CAAC,IAAI,EACP,kBAAkB,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,mCAAmC,YAAC,yBAAO,kBAAkB,GAAQ,GAAM,CAC3F,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAC;IAEF,IAAM,iBAAiB,GAAG,CACxB,eAAK,SAAS,EAAC,kBAAkB,aAC/B,eAAK,SAAS,EAAC,0BAA0B,aACvC,eAAM,SAAS,EAAC,2BAA2B,uBAAc,EACzD,oDAAiC,EACjC,oNAAgM,IAC5L,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,wBAAwB,aACrC,cAAK,SAAS,EAAC,8BAA8B,wBAAc,EAC3D,cAAK,SAAS,EAAC,2BAA2B,YAAC,yBAAO,qDAA8C,kBAAkB,SAAM,GAAQ,GAAM,IAClI,EACL,qBAAqB,CAAC,CAAC,CAAC,CACvB,eAAK,SAAS,EAAC,gDAAgD,aAC7D,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,EACnB,8CAA2B,EAC3B,qHAAiG,IAC7F,CACP,CAAC,CAAC,CAAC,IAAI,EACP,kBAAkB,CAAC,CAAC,CAAC,CACpB,cAAK,SAAS,EAAC,mCAAmC,YAAC,yBAAO,kBAAkB,GAAQ,GAAM,CAC3F,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAC;IAEF,IAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACtC,QAAQ,aAAa,EAAE;YACrB,KAAK,aAAa;gBAChB,OAAO,eAAe,CAAC;YACzB,KAAK,mBAAmB;gBACtB,OAAO,qBAAqB,CAAC;YAC/B,KAAK,eAAe;gBAClB,OAAO,iBAAiB,CAAC;YAC3B,KAAK,eAAe;gBAClB,OAAO,iBAAiB,CAAC;YAC3B,KAAK,WAAW,CAAC;YACjB;gBACE,OAAO,CACL,KAAC,aAAa,IACZ,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAC,mCAAmC,EAC7C,cAAc,EAAC,6CAA6C,GAC5D,CACH,CAAC;SACL;IACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEZ,IAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACnC,QAAQ,aAAa,EAAE;YACrB,KAAK,aAAa;gBAChB,OAAO,CACL,kHAEO,CACR,CAAC;YACJ,KAAK,eAAe;gBAClB,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAC9B,+DAEG,GAAG,EACJ,2BAAS,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,YAAY,GAAU,qLAEjE,CACR,CAAC,CAAC,CAAC,CACF,4EAA2D,CAC5D,CAAC;YACJ,KAAK,mBAAmB;gBACtB,OAAO,cAAc,CAAC,CAAC,CAAC,CACtB,iEAEG,GAAG,EACJ,2BAAS,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAU,EACnE,GAAG,oBAEH,cAAc,CAAC,OAAO,CAAC,0BAA0B;4BAChD,CAAC,CAAC,eAAQ,cAAc,CAAC,OAAO,CAAC,0BAA0B,4CAAyC;4BACpG,CAAC,CAAC,EAAE,SAED,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;YACX,KAAK,eAAe;gBAClB,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAC7B,yEAEG,GAAG,EACJ,2BAAS,kBAAkB,GAAU,kGAEhC,CACR,CAAC,CAAC,CAAC,CACF,+DAEG,GAAG,EACJ,2BAAS,kBAAkB,GAAU,EACpC,GAAG,+DAEC,CACR,CAAC;YACJ,KAAK,WAAW,CAAC;YACjB;gBACE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAC1B,mDAEG,GAAG,EACJ,2BAAS,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,sBAAsB,MAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,uBAAuB,CAAA,GAAU,EACjG,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAO,WAAW,CAAC,iBAAiB,CAAE,CAAC,CAAC,CAAC,EAAE,IACvE,CACR,CAAC,CAAC,CAAC,CACF,4GAA2F,CAC5F,CAAC;SACL;IACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEZ,OAAO,CACL,cAAK,SAAS,EAAC,WAAW,YACvB,kBAAkB,CAAC,CAAC,CAAC,CACpB,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAC1B,6DAAyC,IACrC,CACP,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CACnB,eAAK,SAAS,EAAC,YAAY,aACzB,yBAAO,cAAc,CAAC,cAAc,CAAC,GAAQ,EAC7C,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,KAAK,gBAAgB,EAAE,EAAvB,CAAuB,sBAEpE,IACV,CACP,CAAC,CAAC,CAAC,CACF,8BACG,CAAC,eAAe,CAAC,CAAC,CAAC,CAClB,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAK,SAAS,EAAC,oBAAoB,YACjC,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,GAAI,EACpB,KAAC,UAAU,IACT,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAlC,CAAkC,EACvD,WAAW,EAAC,eAAe,EAC3B,QAAQ,EAAE,CAAC,kBAAkB,GAC7B,IACE,GACF,EAEN,eAAK,SAAS,EAAC,uBAAuB,aACnC,mBAAmB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CACzC,eAAK,SAAS,EAAC,oBAAoB,aACjC,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAC1B,wCAAuB,IACnB,CACP,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAChC,OAAO,EAAE;wCACP,IAAI,eAAe,EAAE;4CACnB,qBAAqB,CAAC,eAAe,CAAC,CAAC;yCACxC;oCACH,CAAC,EACD,QAAQ,EAAE,CAAC,eAAe,8BAGd,EACd,KAAC,WAAW,IACV,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAC,YAAY,EACxB,SAAS,EAAC,kDAAkD,EAC5D,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAlC,CAAkC,GACvD,EACF,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,kBAAkB,EAC5B,QAAQ,EAAE,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,EACjC,OAAO,EAAE,cAAM,OAAA,KAAK,aAAa,EAAE,EAApB,CAAoB,EACnC,OAAO,EAAC,SAAS,gBACN,SAAS,GACpB,EACF,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,kBAAkB,EAC5B,QAAQ,EAAE,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,EAC3B,OAAO,EAAE;wCACP,uBAAuB,CAAC,eAAe,CAAC,CAAC;wCACzC,cAAc,CAAC,iBAAiB,CAAC,CAAC;wCAClC,eAAe,CAAC,IAAI,CAAC,CAAC;oCACxB,CAAC,EACD,OAAO,EAAC,kBAAkB,gBACf,kBAAkB,GAC7B,IACE,IACF,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,kBAAkB,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,kBAAkB,CAAA,CAAC,CAAC,CAAC,CAC1D,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,EACzB,0BACE,6EAA0D,EAC1D,sBAAI,cAAc,CAAC,kBAAkB,GAAK,IACtC,IACF,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,eAAe,CAAC,CAAC,CAAC,CAClB,cAAK,SAAS,EAAC,gBAAgB,YAC7B,cAAK,SAAS,EAAC,kBAAkB,YAC9B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACrB,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,kEAA8C,IAC1C,CACP,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CACpB,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAC1B,0DAAsC,IAClC,CACP,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,eAAK,SAAS,EAAC,sBAAsB,aACnC,yBAAO,cAAc,CAAC,WAAW,CAAC,GAAQ,EAC1C,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,KAAK,aAAa,EAAE,EAApB,CAAoB,sBAEjE,IACV,CACP,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAC5B,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EACtB,sBAAI,WAAW,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,yDAAyD,GAAK,IAC1H,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,iBAAiB,YAC9B,MAAC,cAAc,IACb,KAAK,EAAE,eAAe,EACtB,OAAO,EAAC,WAAW,EACnB,cAAc,EAAC,qBAAqB,EACpC,IAAI,EAAC,OAAO,EACZ,UAAU,EAAE,UAAC,EAAQ;wCAAN,IAAI,UAAA;oCAAO,OAAA,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC;gCAAvB,CAAuB,EACjD,YAAY,EAAE,UAAC,OAAO,YAAK,OAAA,UAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,eAAK,OAAO,CAAC,SAAS,CAAE,KAAK,kBAAkB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAA,EAAA,EAClI,YAAY,EAAC,4BAA4B,aAEzC,KAAC,MAAM,IACL,MAAM,EAAC,EAAE,EACT,IAAI,EAAE,UAAC,OAA2C;;4CAChD,IAAM,MAAM,GAAG,UAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,eAAK,OAAO,CAAC,SAAS,CAAE,CAAC;4CAC/D,OAAO,CACL,cAAK,SAAS,EAAC,qBAAqB,uBAAmB,MAAM,YAC3D,KAAC,aAAa,IACZ,OAAO,EAAE,MAAM,KAAK,kBAAkB,EACtC,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAtD,CAAsD,GAC3E,GACE,CACP,CAAC;wCACJ,CAAC,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAClC,EACF,KAAC,MAAM,IACL,KAAK,EAAC,WAAW,EACjB,MAAM,EAAC,OAAO,EACd,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,CACrD,cAAK,SAAS,EAAC,yBAAyB,YACtC,2BAAS,OAAO,CAAC,SAAS,GAAU,GAChC,CACP,EAJsD,CAItD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GACxB,EACF,KAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ,EAAC,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,OAAO,CAAC,MAAM,IAAI,aAAa,EAA/B,CAA+B,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAI,EAC3J,KAAC,MAAM,IACL,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,CACrD,eACE,SAAS,EAAE,4BAAqB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAE,YAE7E,WAAW,CAAC,OAAO,CAAC,GAChB,CACR,EANsD,CAMtD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GACxB,EACF,KAAC,MAAM,IACL,MAAM,EAAC,YAAY,EACnB,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,OAAO,CAAC,sBAAsB,EAA9B,CAA8B,EACrF,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GACxB,EACF,KAAC,MAAM,IAAC,KAAK,EAAC,uBAAuB,EAAC,MAAM,EAAC,UAAU,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAI,EACpF,KAAC,MAAM,IACL,MAAM,EAAC,cAAc,EACrB,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,CACrD,OAAO,CAAC,MAAM;4CACZ,CAAC,CAAC,CACA,eAAK,SAAS,EAAC,yBAAyB,aACtC,2BAAS,OAAO,CAAC,sBAAsB,IAAI,OAAO,CAAC,uBAAuB,IAAI,GAAG,GAAU,EAC1F,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAC7D,yBAAO,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,gBAAgB,GAAQ,CAC3E,CAAC,CAAC,CAAC,IAAI,IACJ,CACP;4CACD,CAAC,CAAC,eAAM,SAAS,EAAC,iBAAiB,2BAAkB,CACxD,EAXsD,CAWtD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GACxB,EACF,KAAC,MAAM,IACL,MAAM,EAAC,gBAAgB,EACvB,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAA9D,CAA8D,EACrH,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GACxB,EACF,KAAC,MAAM,IACL,MAAM,EAAC,SAAS,EAChB,IAAI,EAAE,UAAC,OAA2C,IAAK,OAAA,OAAO,CAAC,mBAAmB,EAA3B,CAA2B,EAClF,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GACxB,IACa,GACb,CACP,GACG,GACF,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAK,SAAS,EAAC,uBAAuB,aACpC,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,OAAO,EAAE,cAAc,qBAExF,EACd,eAAK,SAAS,EAAC,wEAAwE,aACrF,uBAAK,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,KAAI,mBAAmB,GAAM,EAC1D,sBACG,aAAa;gDACZ,CAAC,CAAC,UAAG,aAAa,CAAC,MAAM,IAAI,KAAK,qBAAM,CAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,QAAQ,MAAI,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,WAAW,CAAA,IAAI,YAAY,SAAG,wBAAwB,CAAC,CAAC,CAAC,kBAAM,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAE;gDAC5N,CAAC,CAAC,6DAA6D,GAC/D,IACA,IACF,EAEL,CAAC,aAAa,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACpC,eAAK,SAAS,EAAC,YAAY,aACzB,4FAA2E,EAC3E,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAc,mCAErD,IACV,CACP,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACvB,eAAK,SAAS,EAAC,YAAY,aACzB,yBAAO,cAAc,CAAC,kBAAkB,CAAC,GAAQ,EACjD,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,KAAK,kBAAkB,EAAE,EAAzB,CAAyB,sBAEtE,IACV,CACP,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAC5B,eAAK,SAAS,EAAC,qCAAqC,aAClD,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAC1B,8DAA0C,IACtC,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mBAAmB,aAChC,cAAK,SAAS,EAAC,qBAAqB,YACjC,YAAY,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,OAAA,CACjC,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE;4CACT,0BAA0B;4CAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;4CAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;4CAClC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;yCACnC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,aAEvB,eAAM,SAAS,EAAC,2BAA2B,YACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAC3C,EACP,eAAM,SAAS,EAAC,2BAA2B,YAAE,IAAI,CAAC,KAAK,GAAQ,KAd1D,IAAI,CAAC,GAAG,CAeN,CACV,EAlBkC,CAkBlC,CAAC,GACE,EAEN,cAAK,SAAS,EAAC,mBAAmB,YAChC,cAAK,SAAS,EAAC,yBAAyB,YACrC,gBAAgB,GACb,GACF,EAEL,WAAW,CAAC,CAAC,CAAC,CACb,eAAK,SAAS,EAAC,oBAAoB,aACjC,cAAK,SAAS,EAAC,0BAA0B,YAAE,aAAa,GAAO,EAC/D,eAAK,SAAS,EAAC,6BAA6B,aACzC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAC3C,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,OAAO,EAAE,mBAAmB,gCAEhG,CACf,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,KAAK,WAAW,CAAC,CAAC,CAAC,CAC/B,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,EAC5B,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,cAAM,OAAA,KAAK,iBAAiB,EAAE,EAAxB,CAAwB,oCAG3B,CACf,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,KAAK,aAAa,CAAC,CAAC,CAAC,CACjC,8BACE,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,WAAW,CAAC,EAA7B,CAA6B,qBAE1E,EACd,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,cAAM,OAAA,KAAK,uBAAuB,EAAE,EAA9B,CAA8B,6BAEjH,IACb,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,KAAK,eAAe,CAAC,CAAC,CAAC,CACnC,8BACE,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,aAAa,CAAC,EAA/B,CAA+B,qBAE5E,EACd,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,CAAC,wBAAwB,IAAI,qBAAqB,IAAI,wBAAwB,EACxF,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,mBAAmB,CAAC,EAArC,CAAqC,yBAGxC,IACb,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,KAAK,mBAAmB,CAAC,CAAC,CAAC,CACvC,8BACE,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,eAAe,CAAC,EAAjC,CAAiC,qBAE9E,EACd,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,cAAM,OAAA,KAAK,8BAA8B,EAAE,EAArC,CAAqC,2CAErI,IACb,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,KAAK,eAAe,CAAC,CAAC,CAAC,CACnC,qBAAqB,CAAC,CAAC,CAAC,CACtB,KAAC,WAAW,IACV,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,EAC7B,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,4CAA4C,CAAC,EAAtD,CAAsD,uBAGzD,CACf,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,mBAAmB,CAAC,EAArC,CAAqC,qBAElF,EACd,KAAC,WAAW,IAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,cAAM,OAAA,KAAK,kBAAkB,EAAE,EAAzB,CAAyB,8BAEtH,IACb,CACJ,CACF,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,IACG,CACP,EAED,MAAC,WAAW,IACV,IAAI,EAAE,YAAY,EAClB,YAAY,EAAE,eAAe,EAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,aAElD,MAAC,iBAAiB,eAChB,0BACE,KAAC,gBAAgB,mCAAoC,EACrD,KAAC,sBAAsB,sGAEE,IACrB,EACN,KAAC,gBAAgB,KAAG,IACF,EACpB,KAAC,oBAAoB,KAAG,EACxB,KAAC,eAAe,cACd,KAAC,aAAa,IACZ,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,cAAc,EAC7B,SAAS,EAAC,oBAAoB,EAC9B,cAAc,EAAC,yBAAyB,GACxC,GACc,EAClB,MAAC,iBAAiB,eAChB,KAAC,WAAW,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,eAAe,CAAC,KAAK,CAAC,EAAtB,CAAsB,uBAEtD,EACd,KAAC,WAAW,IAAC,OAAO,EAAE,kBAAkB,sBAE1B,IACI,IACR,IACb,CACJ,GACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import {\n ArrowLeft,\n Check,\n Cog,\n Database,\n ExternalLink,\n RefreshCw,\n Save,\n Search,\n ShieldAlert,\n Sparkles,\n} from \"lucide-react\";\nimport { camelCase, startCase } from \"lodash\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport { SolidJsonEditor } from \"../../../../components/core/json/SolidJsonEditor\";\nimport { Column, SolidDataTable } from \"../../../../components/core/list/SolidDataTable\";\nimport { waitForBackendAvailability } from \"../../../../helpers/waitForBackendAvailability\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSpinner,\n SolidSwitch,\n SolidTabGroup,\n SolidTextarea,\n} from \"../../../../components/shad-cn-ui\";\nimport {\n type DatasourceIntrospectionTableDetail,\n type DatasourceIntrospectionMappingPreview,\n type DatasourceIntrospectionMappingRequest,\n type DatasourceIntrospectionTableRecord,\n type DatasourceIntrospectionApplyResponse,\n type DatasourceIntrospectionCreateMigrationResponse,\n useApplyDatasourceIntrospectionMappingMutation,\n useCreateDatasourceIntrospectionMigrationArtifactsMutation,\n useGenerateDatasourceIntrospectionCodeMutation,\n useGetDatasourceIntrospectionBootstrapQuery,\n useGetDatasourceIntrospectionTableDetailQuery,\n useGetDatasourceIntrospectionTablesQuery,\n usePreviewDatasourceIntrospectionMappingMutation,\n useRunDatasourceIntrospectionMigrationMutation,\n} from \"../../../../redux/api/datasourceIntrospectionApi\";\nimport { useGetmodelByIdQuery } from \"../../../../redux/api/modelApi\";\nimport \"./DatasourceIntrospectionPage.css\";\n\ntype SessionSettings = {\n relationInferenceEnabled: boolean;\n prioritizeUnmappedTables: boolean;\n};\n\ntype WorkspaceStep =\n | \"configure\"\n | \"review-json\"\n | \"generate-code\"\n | \"create-migrations\"\n | \"run-migration\";\n\ntype DrawerColumnDraft = {\n columnName: string;\n fieldName: string;\n displayName: string;\n dataType: string;\n solidFieldType: string;\n ormType: string;\n nullable: boolean;\n defaultValue: string | null;\n characterMaximumLength: number | null;\n numericPrecision: number | null;\n numericScale: number | null;\n ordinalPosition: number | null;\n isAutoGenerated: boolean;\n isDetectedPrimaryKey: boolean;\n handledBySuperclass: boolean;\n superclassFieldName: string | null;\n fieldId: number | null;\n include: boolean;\n matched: boolean;\n isPrimaryKey: boolean;\n};\n\ntype DrawerDraft = {\n mapped: boolean;\n modelId: number | null;\n mappedModuleLabel: string | null;\n singularName: string;\n pluralName: string;\n displayName: string;\n description: string;\n tableName: string;\n schema: string | null;\n dataSource: string;\n dataSourceType: string;\n legacyTableType: \"none\" | \"existing_id\" | \"generated_id\";\n baseClassName: string;\n userKeyField: string;\n enableAuditTracking: boolean;\n enableSoftDelete: boolean;\n draftPublishWorkflow: boolean;\n internationalisation: boolean;\n columns: DrawerColumnDraft[];\n preservedFields: any[];\n};\n\nfunction providerLabel(type: string) {\n if (type === \"postgres\") return \"PostgreSQL\";\n if (type === \"mysql\") return \"MySQL\";\n if (type === \"mssql\") return \"MS SQL Server\";\n return type;\n}\n\nconst scalarFieldTypeOptions = [\n { value: \"shortText\", label: \"Short Text\" },\n { value: \"longText\", label: \"Long Text\" },\n { value: \"richText\", label: \"Rich Text\" },\n { value: \"boolean\", label: \"Boolean\" },\n { value: \"int\", label: \"Integer\" },\n { value: \"bigint\", label: \"Big Integer\" },\n { value: \"decimal\", label: \"Decimal\" },\n { value: \"date\", label: \"Date\" },\n { value: \"datetime\", label: \"Date Time\" },\n { value: \"time\", label: \"Time\" },\n { value: \"json\", label: \"JSON\" },\n { value: \"uuid\", label: \"UUID\" },\n { value: \"email\", label: \"Email\" },\n { value: \"password\", label: \"Password\" },\n];\n\nconst scalarFieldTypeValueSet = new Set(scalarFieldTypeOptions.map((option) => option.value));\nconst mappingStrategyOptions = [\n { value: \"generated_id\", label: \"Legacy generated id\" },\n { value: \"existing_id\", label: \"Legacy existing id\" },\n];\n\nfunction getBaseClassNameForLegacyType(value: \"none\" | \"existing_id\" | \"generated_id\") {\n return value === \"existing_id\"\n ? \"LegacyCommonEntityWithExistingId\"\n : \"LegacyCommonEntityWithGeneratedId\";\n}\n\nfunction getSuperclassFieldNameForLegacyType(columnName: string, legacyTableType: \"none\" | \"existing_id\" | \"generated_id\") {\n const normalized = columnName.toLowerCase();\n const legacyFieldMap: Record<string, string> = {\n ss_created_at: \"createdAt\",\n ss_updated_at: \"updatedAt\",\n ss_deleted_at: \"deletedAt\",\n ss_deleted_tracker: \"deletedTracker\",\n ss_published_at: \"publishedAt\",\n ss_locale_name: \"localeName\",\n ss_default_entity_locale_id: \"defaultEntityLocaleId\",\n ss_created_by_id: \"createdBy\",\n ss_updated_by_id: \"updatedBy\",\n };\n\n if (normalized === \"ss_id\" && legacyTableType === \"generated_id\") {\n return \"id\";\n }\n\n return legacyFieldMap[normalized] ?? null;\n}\n\nfunction getSuggestedFieldNameForLegacyType(column: Pick<DrawerColumnDraft, \"columnName\" | \"isAutoGenerated\">, legacyTableType: \"none\" | \"existing_id\" | \"generated_id\") {\n if (legacyTableType === \"existing_id\" && column.isAutoGenerated) {\n return \"id\";\n }\n\n if (legacyTableType === \"generated_id\" && column.columnName.toLowerCase() === \"id\") {\n return \"legacyId\";\n }\n\n return camelCase(column.columnName.replace(/^ss_/i, \"\"));\n}\n\nfunction getDefaultOrmTypeForSolidFieldType(dataSourceType: string, solidFieldType: string) {\n const normalizedDatasourceType = dataSourceType.toLowerCase();\n\n const ormTypesByDatasource: Record<string, Record<string, string>> = {\n mssql: {\n shortText: \"varchar\",\n longText: \"nvarchar\",\n richText: \"nvarchar\",\n boolean: \"bit\",\n int: \"int\",\n bigint: \"bigint\",\n decimal: \"numeric\",\n date: \"date\",\n datetime: \"datetime\",\n time: \"time\",\n json: \"simple-json\",\n uuid: \"uniqueidentifier\",\n email: \"nvarchar\",\n password: \"nvarchar\",\n },\n mysql: {\n shortText: \"varchar\",\n longText: \"longtext\",\n richText: \"longtext\",\n boolean: \"boolean\",\n int: \"int\",\n bigint: \"int\",\n decimal: \"decimal\",\n date: \"date\",\n datetime: \"datetime\",\n time: \"time\",\n json: \"json\",\n uuid: \"varchar\",\n email: \"varchar\",\n password: \"varchar\",\n },\n postgres: {\n shortText: \"varchar\",\n longText: \"text\",\n richText: \"text\",\n boolean: \"boolean\",\n int: \"integer\",\n bigint: \"bigint\",\n decimal: \"decimal\",\n date: \"date\",\n datetime: \"timestamp\",\n time: \"time\",\n json: \"json\",\n uuid: \"varchar\",\n email: \"varchar\",\n password: \"varchar\",\n },\n };\n\n return ormTypesByDatasource[normalizedDatasourceType]?.[solidFieldType] ?? \"varchar\";\n}\n\nfunction statusLabel(record: DatasourceIntrospectionTableRecord) {\n return record.mapped ? \"Mapped\" : \"Ready to map\";\n}\n\nfunction readQueryError(error: any) {\n return (\n error?.data?.message\n || error?.error\n || error?.message\n || \"Something went wrong.\"\n );\n}\n\nfunction isRecoverableGenerateCodeError(error: any) {\n const status = error?.status ?? error?.originalStatus;\n const message = [\n error?.error,\n error?.message,\n error?.data?.message,\n error?.data?.error,\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\n if (status === \"FETCH_ERROR\" || status === \"TIMEOUT_ERROR\" || status === \"PARSING_ERROR\") {\n return true;\n }\n\n return (\n message.includes(\"failed to fetch\")\n || message.includes(\"network\")\n || message.includes(\"load failed\")\n || message.includes(\"fetch\")\n );\n}\n\nfunction normalizeName(value: string) {\n return value.trim().toLowerCase();\n}\n\nfunction findMatchingModelField(column: DatasourceIntrospectionTableDetail[\"columns\"][number], modelFields: any[]) {\n return modelFields.find((field) => {\n if (field?.isSystem) return false;\n\n const sameColumnName = normalizeName(field?.columnName ?? \"\") === normalizeName(column.columnName);\n if (sameColumnName) return true;\n\n return Boolean(column.isAutoGenerated && column.fieldName === \"id\" && field?.name === \"id\");\n }) ?? null;\n}\n\nfunction sanitizeExistingFieldPayload(field: any) {\n const {\n createdAt,\n updatedAt,\n deletedAt,\n model,\n mediaStorageProvider,\n identifier,\n ...rest\n } = field ?? {};\n\n if (mediaStorageProvider?.id && !rest.mediaStorageProviderId) {\n rest.mediaStorageProviderId = mediaStorageProvider.id;\n }\n\n return rest;\n}\n\nfunction buildDrawerDraft(\n tableDetail: DatasourceIntrospectionTableDetail,\n selectedTable: DatasourceIntrospectionTableRecord,\n mappedModelData?: any,\n): DrawerDraft {\n const modelData = selectedTable.mapped ? (mappedModelData?.data ?? null) : null;\n const modelFields = modelData?.fields ?? [];\n const preservedFields = modelFields.map((field: any) => sanitizeExistingFieldPayload(field));\n const modelUserKeyField =\n modelData?.userKeyField?.name\n || modelFields.find((field: any) => field?.isUserKey)?.name\n || \"\";\n\n const columns: DrawerColumnDraft[] = tableDetail.columns.map((column) => {\n const matchingField = findMatchingModelField(column, modelFields);\n return {\n columnName: column.columnName,\n fieldName: matchingField?.name ?? column.fieldName,\n displayName: matchingField?.displayName ?? column.displayName,\n dataType: column.dataType,\n solidFieldType: matchingField?.type ?? column.solidFieldType,\n ormType: matchingField?.ormType ?? column.ormType,\n nullable: column.nullable,\n defaultValue: matchingField?.defaultValue ?? column.defaultValue,\n characterMaximumLength: column.characterMaximumLength,\n numericPrecision: column.numericPrecision,\n numericScale: column.numericScale,\n ordinalPosition: column.ordinalPosition,\n isAutoGenerated: column.isAutoGenerated,\n isDetectedPrimaryKey: column.isPrimaryKey,\n handledBySuperclass: column.handledBySuperclass,\n superclassFieldName: column.superclassFieldName,\n fieldId: matchingField?.id ?? null,\n include: column.handledBySuperclass ? false : Boolean(matchingField) || !selectedTable.mapped,\n matched: Boolean(matchingField),\n isPrimaryKey: Boolean(matchingField?.isPrimaryKey) || column.isPrimaryKey || (column.isAutoGenerated && column.fieldName === \"id\"),\n };\n });\n\n const draftUserKeyField = modelUserKeyField || tableDetail.suggestedMetadata.userKeyField;\n\n return {\n mapped: selectedTable.mapped,\n modelId: selectedTable.mappedModelId,\n mappedModuleLabel: selectedTable.mappedModuleDisplayName || selectedTable.mappedModuleName || null,\n singularName: modelData?.singularName ?? tableDetail.suggestedMetadata.singularName,\n pluralName: modelData?.pluralName ?? tableDetail.suggestedMetadata.pluralName,\n displayName: modelData?.displayName ?? tableDetail.suggestedMetadata.displayName,\n description: modelData?.description ?? tableDetail.suggestedMetadata.displayName,\n tableName: modelData?.tableName ?? tableDetail.suggestedMetadata.tableName,\n schema: tableDetail.suggestedMetadata.schema,\n dataSource: modelData?.dataSource ?? tableDetail.suggestedMetadata.dataSource,\n dataSourceType: modelData?.dataSourceType ?? tableDetail.suggestedMetadata.dataSourceType,\n legacyTableType: modelData?.legacyTableType ?? tableDetail.suggestedMetadata.legacyTableType,\n baseClassName: tableDetail.suggestedMetadata.baseClassName,\n userKeyField: draftUserKeyField,\n enableAuditTracking: modelData?.enableAuditTracking ?? true,\n enableSoftDelete: modelData?.enableSoftDelete ?? false,\n draftPublishWorkflow: modelData?.draftPublishWorkflow ?? false,\n internationalisation: modelData?.internationalisation ?? false,\n columns,\n preservedFields,\n };\n}\n\nfunction getDrawerValidationErrors(draft: DrawerDraft) {\n const errors: string[] = [];\n const includedColumns = draft.columns.filter((column) => !column.handledBySuperclass && column.include);\n const seenFieldNames = new Set<string>();\n\n if (!draft.singularName.trim()) {\n errors.push(\"Singular name is required.\");\n }\n if (!draft.pluralName.trim()) {\n errors.push(\"Plural name is required.\");\n }\n if (!draft.displayName.trim()) {\n errors.push(\"Display name is required.\");\n }\n if (!includedColumns.length) {\n errors.push(\"Select at least one physical column to include in the mapping.\");\n }\n\n for (const column of includedColumns) {\n const normalizedFieldName = column.fieldName.trim();\n if (!normalizedFieldName) {\n errors.push(`Field name is required for column \"${column.columnName}\".`);\n continue;\n }\n\n if (!column.displayName.trim()) {\n errors.push(`Field label is required for column \"${column.columnName}\".`);\n continue;\n }\n\n if (!scalarFieldTypeValueSet.has(column.solidFieldType)) {\n errors.push(`SolidX type \"${column.solidFieldType}\" is not allowed in step 1 for column \"${column.columnName}\".`);\n continue;\n }\n\n if (seenFieldNames.has(normalizedFieldName.toLowerCase())) {\n errors.push(`Field name \"${normalizedFieldName}\" is duplicated in the mapping draft.`);\n continue;\n }\n\n seenFieldNames.add(normalizedFieldName.toLowerCase());\n }\n\n if (!draft.userKeyField.trim()) {\n errors.push(\"Choose a user key field before saving the mapping.\");\n } else {\n const userKeyExists = includedColumns.some((column) => column.fieldName === draft.userKeyField);\n if (!userKeyExists) {\n errors.push(\"The chosen user key field must remain part of the mapped columns.\");\n }\n }\n\n if (draft.legacyTableType === \"existing_id\") {\n const hasPrimaryKey = includedColumns.some((column) => column.isPrimaryKey);\n if (!hasPrimaryKey) {\n errors.push(\"Legacy existing-id mappings must keep the generated id column mapped to field name \\\"id\\\".\");\n }\n }\n\n return errors;\n}\n\nfunction buildMappingRequest(\n draft: DrawerDraft,\n plannedMigrationTimestamp?: number | null,\n): DatasourceIntrospectionMappingRequest {\n return {\n mapped: draft.mapped,\n modelId: draft.modelId,\n singularName: draft.singularName.trim(),\n pluralName: draft.pluralName.trim(),\n displayName: draft.displayName.trim(),\n description: draft.description.trim() || draft.displayName.trim(),\n tableName: draft.tableName,\n schema: draft.schema ?? null,\n dataSource: draft.dataSource,\n dataSourceType: draft.dataSourceType,\n legacyTableType: draft.legacyTableType,\n baseClassName: draft.baseClassName,\n userKeyField: draft.userKeyField,\n enableAuditTracking: draft.enableAuditTracking,\n enableSoftDelete: draft.enableSoftDelete,\n draftPublishWorkflow: draft.draftPublishWorkflow,\n internationalisation: draft.internationalisation,\n plannedMigrationTimestamp: plannedMigrationTimestamp ?? null,\n columns: draft.columns.map((column) => ({\n columnName: column.columnName,\n fieldName: column.fieldName,\n displayName: column.displayName,\n dataType: column.dataType,\n solidFieldType: column.solidFieldType,\n ormType: column.ormType,\n nullable: column.nullable,\n defaultValue: column.defaultValue,\n characterMaximumLength: column.characterMaximumLength,\n numericPrecision: column.numericPrecision,\n numericScale: column.numericScale,\n ordinalPosition: column.ordinalPosition,\n isAutoGenerated: column.isAutoGenerated,\n handledBySuperclass: column.handledBySuperclass,\n superclassFieldName: column.superclassFieldName,\n fieldId: column.fieldId,\n include: column.include,\n matched: column.matched,\n isPrimaryKey: column.isPrimaryKey,\n })),\n };\n}\n\nfunction parseAndValidateReviewedModelJson(\n metadataJsonText: string,\n draft: DrawerDraft,\n) {\n let parsed: any;\n\n try {\n parsed = JSON.parse(metadataJsonText);\n } catch (error: any) {\n return {\n error: `Metadata JSON is not valid JSON: ${error?.message ?? \"Unknown parse error.\"}`,\n parsed: null,\n };\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return {\n error: \"Metadata JSON must be an object.\",\n parsed: null,\n };\n }\n\n const requiredStringKeys = [\n \"singularName\",\n \"pluralName\",\n \"displayName\",\n \"description\",\n \"dataSource\",\n \"dataSourceType\",\n \"tableName\",\n \"userKeyFieldUserKey\",\n ];\n\n for (const key of requiredStringKeys) {\n if (typeof parsed[key] !== \"string\" || !parsed[key].trim()) {\n return {\n error: `Metadata JSON must include a non-empty \"${key}\" string.`,\n parsed: null,\n };\n }\n }\n\n const immutableChecks: Array<{ key: string; expected: string }> = [\n { key: \"dataSource\", expected: draft.dataSource },\n { key: \"dataSourceType\", expected: draft.dataSourceType },\n { key: \"tableName\", expected: draft.tableName },\n { key: \"legacyTableType\", expected: draft.legacyTableType },\n ];\n\n for (const check of immutableChecks) {\n if (`${parsed[check.key] ?? \"\"}` !== `${check.expected}`) {\n return {\n error: `Metadata JSON cannot change immutable binding key \"${check.key}\".`,\n parsed: null,\n };\n }\n }\n\n const requiredBooleanKeys = [\n \"enableAuditTracking\",\n \"enableSoftDelete\",\n \"draftPublishWorkflow\",\n \"internationalisation\",\n ];\n\n for (const key of requiredBooleanKeys) {\n if (typeof parsed[key] !== \"boolean\") {\n return {\n error: `Metadata JSON must include a boolean \"${key}\" value.`,\n parsed: null,\n };\n }\n }\n\n if (!Array.isArray(parsed.fields)) {\n return {\n error: \"Metadata JSON must include a fields array.\",\n parsed: null,\n };\n }\n\n const seenFieldNames = new Set<string>();\n for (const [index, field] of parsed.fields.entries()) {\n if (!field || typeof field !== \"object\" || Array.isArray(field)) {\n return {\n error: `Field at index ${index} is not a valid object.`,\n parsed: null,\n };\n }\n\n if (typeof field.name !== \"string\" || !field.name.trim()) {\n return {\n error: `Field at index ${index} must include a non-empty \"name\".`,\n parsed: null,\n };\n }\n\n if (typeof field.type !== \"string\" || !field.type.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"type\".`,\n parsed: null,\n };\n }\n\n if (typeof field.ormType !== \"string\" || !field.ormType.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"ormType\".`,\n parsed: null,\n };\n }\n\n if (typeof field.columnName !== \"string\" || !field.columnName.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"columnName\".`,\n parsed: null,\n };\n }\n\n const normalizedFieldName = field.name.trim().toLowerCase();\n if (seenFieldNames.has(normalizedFieldName)) {\n return {\n error: `Field name \"${field.name}\" is duplicated in metadata JSON.`,\n parsed: null,\n };\n }\n\n seenFieldNames.add(normalizedFieldName);\n }\n\n if (!parsed.fields.some((field: any) => field?.name === parsed.userKeyFieldUserKey && !field?.isMarkedForRemoval)) {\n return {\n error: \"Metadata JSON must keep userKeyFieldUserKey present in the fields array.\",\n parsed: null,\n };\n }\n\n return {\n error: null,\n parsed,\n };\n}\n\nexport function DatasourceIntrospectionPage() {\n const params = useParams();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const moduleId = Number(params.moduleId ?? 0);\n const isValidModuleId = Number.isFinite(moduleId) && moduleId > 0;\n\n const {\n data: bootstrap,\n isLoading: isBootstrapLoading,\n isFetching: isBootstrapFetching,\n error: bootstrapError,\n refetch: refetchBootstrap,\n } = useGetDatasourceIntrospectionBootstrapQuery(moduleId, {\n skip: !isValidModuleId,\n });\n\n const [selectedDatasource, setSelectedDatasource] = useState(\"\");\n const [selectedRows, setSelectedRows] = useState<DatasourceIntrospectionTableRecord[]>([]);\n const [workspaceTableKey, setWorkspaceTableKey] = useState(\"\");\n const [tableSearch, setTableSearch] = useState(\"\");\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsTab, setSettingsTab] = useState(\"datasource-info\");\n const [drawerDraft, setDrawerDraft] = useState<DrawerDraft | null>(null);\n const [drawerTab, setDrawerTab] = useState(\"general-info\");\n const [workspaceStep, setWorkspaceStep] = useState<WorkspaceStep>(\"configure\");\n const [mappingPreview, setMappingPreview] = useState<DatasourceIntrospectionMappingPreview | null>(null);\n const [persistedMappingResult, setPersistedMappingResult] = useState<DatasourceIntrospectionApplyResponse | null>(null);\n const [migrationArtifactsResult, setMigrationArtifactsResult] = useState<DatasourceIntrospectionCreateMigrationResponse | null>(null);\n const [generateCodeOutput, setGenerateCodeOutput] = useState(\"\");\n const [isGeneratingCodeWorkflow, setIsGeneratingCodeWorkflow] = useState(false);\n const [generateCodeStatusMessage, setGenerateCodeStatusMessage] = useState(\"\");\n const [generateCodeTimeoutMessage, setGenerateCodeTimeoutMessage] = useState<string | null>(null);\n const [generateCodeReady, setGenerateCodeReady] = useState(false);\n const [hasAttemptedGenerateCode, setHasAttemptedGenerateCode] = useState(false);\n const [runMigrationOutput, setRunMigrationOutput] = useState(\"\");\n const [runMigrationCompleted, setRunMigrationCompleted] = useState(false);\n const [reviewedMetadataJsonValue, setReviewedMetadataJsonValue] = useState<any>(null);\n const [metadataJsonText, setMetadataJsonText] = useState(\"\");\n const [metadataJsonValidationError, setMetadataJsonValidationError] = useState<string | null>(null);\n const [metadataJsonResetToken, setMetadataJsonResetToken] = useState(\"initial\");\n const [drawerBootstrapping, setDrawerBootstrapping] = useState(false);\n const [sessionSettings, setSessionSettings] = useState<SessionSettings>({\n relationInferenceEnabled: false,\n prioritizeUnmappedTables: true,\n });\n const [draftSessionSettings, setDraftSessionSettings] = useState<SessionSettings>(sessionSettings);\n const drawerBootstrapTimerRef = useRef<number | null>(null);\n\n const [\n previewMapping,\n { isLoading: isPreviewMappingLoading },\n ] = usePreviewDatasourceIntrospectionMappingMutation();\n\n const [\n applyMapping,\n { isLoading: isApplyMappingLoading },\n ] = useApplyDatasourceIntrospectionMappingMutation();\n const [\n createMigrationArtifacts,\n { isLoading: isCreateMigrationArtifactsLoading },\n ] = useCreateDatasourceIntrospectionMigrationArtifactsMutation();\n const [\n generateCode,\n { isLoading: isGenerateCodeLoading },\n ] = useGenerateDatasourceIntrospectionCodeMutation();\n const [\n runMigration,\n { isLoading: isRunMigrationLoading },\n ] = useRunDatasourceIntrospectionMigrationMutation();\n\n const isSavingMapping = isApplyMappingLoading;\n const isCreatingMigrationArtifacts = isCreateMigrationArtifactsLoading;\n\n useEffect(() => {\n if (!bootstrap) return;\n if (selectedDatasource) return;\n if (bootstrap.recommendedDatasourceName) {\n setSelectedDatasource(bootstrap.recommendedDatasourceName);\n }\n }, [bootstrap, selectedDatasource]);\n\n useEffect(() => {\n setSelectedRows([]);\n setWorkspaceTableKey(\"\");\n setDrawerDraft(null);\n setTableSearch(\"\");\n setWorkspaceStep(\"configure\");\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`datasource-${Date.now()}`);\n }, [selectedDatasource]);\n\n useEffect(() => () => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n }, []);\n\n const datasourceOptions = useMemo(\n () => (bootstrap?.datasources ?? []).map((datasource) => ({\n label: `${datasource.displayName} (${providerLabel(datasource.type)})`,\n value: datasource.name,\n })),\n [bootstrap],\n );\n\n const {\n data: tablesResponse,\n isLoading: isTablesLoading,\n isFetching: isTablesFetching,\n error: tablesError,\n refetch: refetchTables,\n } = useGetDatasourceIntrospectionTablesQuery(\n { moduleId, datasource: selectedDatasource },\n {\n skip: !isValidModuleId || !selectedDatasource,\n },\n );\n\n const selectedListRow = selectedRows[0] ?? null;\n const selectedListRowKey = selectedListRow ? `${selectedListRow.schema ?? \"\"}::${selectedListRow.tableName}` : \"\";\n const isWorkspaceMode = Boolean(workspaceTableKey);\n\n const selectedTable = useMemo(\n () => tablesResponse?.records?.find((record) => `${record.schema ?? \"\"}::${record.tableName}` === workspaceTableKey) ?? null,\n [tablesResponse, workspaceTableKey],\n );\n\n const {\n data: tableDetail,\n isLoading: isTableDetailLoading,\n isFetching: isTableDetailFetching,\n error: tableDetailError,\n refetch: refetchTableDetail,\n } = useGetDatasourceIntrospectionTableDetailQuery(\n {\n moduleId,\n datasource: selectedDatasource,\n table: selectedTable?.tableName ?? \"\",\n schema: selectedTable?.schema ?? undefined,\n },\n {\n skip: !isWorkspaceMode || !isValidModuleId || !selectedDatasource || !selectedTable || !!tablesResponse?.synchronizeBlocked,\n },\n );\n\n const {\n data: mappedModelResponse,\n isLoading: isMappedModelLoading,\n isFetching: isMappedModelFetching,\n error: mappedModelError,\n } = useGetmodelByIdQuery(selectedTable?.mappedModelId ?? 0, {\n skip: !isWorkspaceMode || !selectedTable?.mapped || !selectedTable?.mappedModelId,\n });\n\n const mappedModelData = mappedModelResponse?.data;\n const selectedDatasourceRecord = bootstrap?.datasources?.find((datasource) => datasource.name === selectedDatasource) ?? null;\n const drawerLoadingError = selectedTable?.mapped ? (tableDetailError || mappedModelError) : tableDetailError;\n const isDrawerBlockingLoading = Boolean(\n selectedTable\n && (\n drawerBootstrapping\n || !drawerDraft\n || isTableDetailLoading\n || isTableDetailFetching\n || (selectedTable.mapped && (isMappedModelLoading || isMappedModelFetching))\n ),\n );\n\n useEffect(() => {\n if (!isWorkspaceMode) {\n setDrawerDraft(null);\n return;\n }\n\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setDrawerDraft(null);\n setDrawerTab(\"general-info\");\n setWorkspaceStep(\"configure\");\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`table-${workspaceTableKey}-${Date.now()}`);\n setDrawerBootstrapping(true);\n }, [isWorkspaceMode, workspaceTableKey]);\n\n useEffect(() => {\n if (!isWorkspaceMode || !selectedTable) return;\n setSelectedRows([selectedTable]);\n }, [isWorkspaceMode, selectedTable]);\n\n useEffect(() => {\n if (!isWorkspaceMode || !selectedTable || !tableDetail) return;\n if (selectedTable.mapped && (!mappedModelData || mappedModelData.id !== selectedTable.mappedModelId)) return;\n\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setDrawerDraft(buildDrawerDraft(\n tableDetail,\n selectedTable,\n selectedTable.mapped ? mappedModelResponse : undefined,\n ));\n drawerBootstrapTimerRef.current = window.setTimeout(() => {\n setDrawerBootstrapping(false);\n }, 150);\n }, [isWorkspaceMode, selectedTable, tableDetail, mappedModelData, mappedModelResponse]);\n\n const filteredRecords = useMemo(() => {\n const records = [...(tablesResponse?.records ?? [])];\n const searchNeedle = tableSearch.trim().toLowerCase();\n\n const filtered = searchNeedle\n ? records.filter((record) => {\n const haystack = `${record.tableName} ${record.schema ?? \"\"} ${record.mappedModelSingularName ?? \"\"} ${record.mappedModelDisplayName ?? \"\"} ${record.mappedModuleName ?? \"\"} ${record.mappedModuleDisplayName ?? \"\"}`.toLowerCase();\n return haystack.includes(searchNeedle);\n })\n : records;\n\n if (sessionSettings.prioritizeUnmappedTables) {\n filtered.sort((left, right) => {\n if (left.mapped !== right.mapped) {\n return left.mapped ? 1 : -1;\n }\n\n const leftLabel = `${left.schema ?? \"\"}.${left.tableName}`.toLowerCase();\n const rightLabel = `${right.schema ?? \"\"}.${right.tableName}`.toLowerCase();\n return leftLabel.localeCompare(rightLabel);\n });\n }\n\n return filtered;\n }, [sessionSettings.prioritizeUnmappedTables, tableSearch, tablesResponse?.records]);\n\n const drawerUserKeyOptions = useMemo(() => {\n const options = new Map<string, { label: string; value: string }>();\n\n tableDetail?.userKeyCandidates?.forEach((candidate) => {\n options.set(candidate.name, {\n label: `${candidate.label} · ${candidate.reason}`,\n value: candidate.name,\n });\n });\n\n drawerDraft?.columns\n .filter((column) => !column.handledBySuperclass && column.include)\n .forEach((column) => {\n if (!options.has(column.fieldName)) {\n options.set(column.fieldName, {\n label: `${column.fieldName} · mapped from ${column.columnName}`,\n value: column.fieldName,\n });\n }\n });\n\n return Array.from(options.values());\n }, [drawerDraft?.columns, tableDetail?.userKeyCandidates]);\n\n const settingsTabs = [\n {\n value: \"datasource-info\",\n label: \"Datasource Info\",\n content: (\n <div className=\"sdix-settings-grid\">\n <div className=\"sdix-settings-static\">\n <span>Target module</span>\n <strong>{bootstrap?.module?.displayName}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Default datasource</span>\n <strong>{bootstrap?.module?.defaultDataSource || \"Not set\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Datasource name</span>\n <strong>{selectedDatasourceRecord?.displayName || \"Not selected\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Datasource type</span>\n <strong>{selectedDatasourceRecord ? providerLabel(selectedDatasourceRecord.type) : \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Host</span>\n <strong>{selectedDatasourceRecord?.host || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Port</span>\n <strong>{selectedDatasourceRecord?.port ?? \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Database</span>\n <strong>{selectedDatasourceRecord?.database || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Env Prefix</span>\n <strong>{selectedDatasourceRecord?.envPrefix || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Synchronize</span>\n <strong>{selectedDatasourceRecord ? (selectedDatasourceRecord.synchronize === true ? \"true\" : \"false\") : \"-\"}</strong>\n </div>\n </div>\n ),\n },\n {\n value: \"session-settings\",\n label: \"Session Settings\",\n content: (\n <div className=\"sdix-settings-grid\">\n <div className=\"sdix-settings-row\">\n <div>\n <label>Relation inference</label>\n <p>Keep this off until we deliberately introduce relation discovery across engines.</p>\n </div>\n <SolidSwitch\n checked={draftSessionSettings.relationInferenceEnabled}\n onChange={(checked) => setDraftSessionSettings((current) => ({ ...current, relationInferenceEnabled: checked }))}\n />\n </div>\n\n <div className=\"sdix-settings-row\">\n <div>\n <label>Prioritize unmapped tables</label>\n <p>Bubble unmapped tables to the top of the inventory so the first pass stays focused.</p>\n </div>\n <SolidSwitch\n checked={draftSessionSettings.prioritizeUnmappedTables}\n onChange={(checked) => setDraftSessionSettings((current) => ({ ...current, prioritizeUnmappedTables: checked }))}\n />\n </div>\n </div>\n ),\n },\n ];\n\n const handleRefresh = async () => {\n await refetchBootstrap();\n if (selectedDatasource) {\n await refetchTables();\n }\n if (isWorkspaceMode && selectedTable) {\n await refetchTableDetail();\n }\n };\n\n const startMappingForRecord = (record: DatasourceIntrospectionTableRecord) => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setSelectedRows([record]);\n setWorkspaceTableKey(`${record.schema ?? \"\"}::${record.tableName}`);\n };\n\n const leaveWorkspace = () => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setWorkspaceTableKey(\"\");\n setDrawerDraft(null);\n setWorkspaceStep(\"configure\");\n setDrawerTab(\"general-info\");\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`workspace-closed-${Date.now()}`);\n setDrawerBootstrapping(false);\n };\n\n const applyDraftSettings = () => {\n setSessionSettings(draftSessionSettings);\n setSettingsOpen(false);\n };\n\n const updateDrawerDraft = (updater: (current: DrawerDraft) => DrawerDraft) => {\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setDrawerDraft((current) => (current ? updater(current) : current));\n };\n\n const updateGeneralField = (field: keyof DrawerDraft, value: any) => {\n updateDrawerDraft((current) => ({ ...current, [field]: value }));\n };\n\n const updateColumnFieldName = (columnName: string, nextFieldName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n\n const previousSuggestedLabel = startCase(column.fieldName);\n const nextNormalizedFieldName = camelCase(nextFieldName);\n return {\n ...column,\n fieldName: nextNormalizedFieldName,\n displayName: !column.displayName.trim() || column.displayName === previousSuggestedLabel\n ? startCase(nextNormalizedFieldName)\n : column.displayName,\n };\n }),\n userKeyField: current.userKeyField === current.columns.find((column) => column.columnName === columnName)?.fieldName\n ? camelCase(nextFieldName)\n : current.userKeyField,\n }));\n };\n\n const updateColumnDisplayName = (columnName: string, nextDisplayName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => (\n column.columnName === columnName\n ? { ...column, displayName: nextDisplayName }\n : column\n )),\n }));\n };\n\n const updateColumnSolidFieldType = (columnName: string, nextSolidFieldType: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n if (column.handledBySuperclass) return column;\n\n return {\n ...column,\n solidFieldType: nextSolidFieldType,\n ormType: getDefaultOrmTypeForSolidFieldType(current.dataSourceType, nextSolidFieldType),\n };\n }),\n }));\n };\n\n const updateLegacyTableType = (legacyTableType: \"none\" | \"existing_id\" | \"generated_id\") => {\n updateDrawerDraft((current) => {\n const renamedUserKeyColumns = new Map<string, string>();\n\n const columns = current.columns.map((column) => {\n const nextSuperclassFieldName = getSuperclassFieldNameForLegacyType(column.columnName, legacyTableType);\n const nextHandledBySuperclass = Boolean(nextSuperclassFieldName);\n const nextSuggestedFieldName = getSuggestedFieldNameForLegacyType(column, legacyTableType);\n const shouldRebuildFieldName = column.handledBySuperclass !== nextHandledBySuperclass\n || (legacyTableType === \"existing_id\" && column.isAutoGenerated && (column.fieldName === \"id\" || column.fieldName === \"legacyId\"))\n || (legacyTableType === \"generated_id\" && column.columnName.toLowerCase() === \"id\");\n const nextFieldName = shouldRebuildFieldName ? nextSuggestedFieldName : column.fieldName;\n const nextDisplayName = !column.displayName.trim() || column.displayName === startCase(column.fieldName)\n ? startCase(nextFieldName)\n : column.displayName;\n const nextInclude = nextHandledBySuperclass\n ? false\n : (legacyTableType === \"existing_id\" && column.isAutoGenerated ? true : column.include);\n const nextIsPrimaryKey = (\n legacyTableType === \"existing_id\" && column.isAutoGenerated && nextFieldName === \"id\"\n ) || (\n legacyTableType === \"generated_id\" && column.isDetectedPrimaryKey\n );\n\n if (current.userKeyField === column.fieldName && current.userKeyField !== nextFieldName) {\n renamedUserKeyColumns.set(column.fieldName, nextFieldName);\n }\n\n return {\n ...column,\n fieldName: nextFieldName,\n displayName: nextDisplayName,\n handledBySuperclass: nextHandledBySuperclass,\n superclassFieldName: nextSuperclassFieldName,\n include: nextInclude,\n isPrimaryKey: nextIsPrimaryKey,\n };\n });\n\n return {\n ...current,\n legacyTableType,\n baseClassName: getBaseClassNameForLegacyType(legacyTableType),\n columns,\n userKeyField: renamedUserKeyColumns.get(current.userKeyField) ?? current.userKeyField,\n };\n });\n };\n\n const setColumnIncluded = (columnName: string, include: boolean) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n if (column.handledBySuperclass || column.isPrimaryKey) return column;\n return { ...column, include };\n }),\n }));\n };\n\n const changeUserKeyField = (fieldName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n userKeyField: fieldName,\n columns: current.columns.map((column) => (\n column.fieldName === fieldName\n ? { ...column, include: column.handledBySuperclass ? false : true }\n : column\n )),\n }));\n };\n\n const setUnmappedColumnsIncluded = (include: boolean) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.handledBySuperclass || column.matched || column.isPrimaryKey) {\n return column;\n }\n return { ...column, include };\n }),\n }));\n };\n\n const openMappedModelForm = () => {\n const targetModelId = drawerDraft?.modelId ?? selectedTable?.mappedModelId;\n if (!targetModelId) return;\n window.open(`/admin/core/solid-core/model-metadata/form/${targetModelId}`, \"_blank\", \"noopener,noreferrer\");\n };\n\n const reviewMappingJson = async () => {\n if (!drawerDraft || !bootstrap?.module?.id) return;\n\n const validationErrors = getDrawerValidationErrors(drawerDraft);\n if (validationErrors.length) {\n validationErrors.forEach((detail) => {\n dispatch(showToast({ severity: \"error\", summary: \"Validation\", detail }));\n });\n return;\n }\n\n try {\n const preview = await previewMapping({\n moduleId: bootstrap.module.id,\n payload: buildMappingRequest(drawerDraft),\n }).unwrap();\n\n setMappingPreview(preview);\n setReviewedMetadataJsonValue(preview.metadataJson.model);\n setMetadataJsonText(JSON.stringify(preview.metadataJson.model, null, 2));\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`preview-${preview.metadataJson.filePath}-${Date.now()}`);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setRunMigrationOutput(\"\");\n setWorkspaceStep(\"review-json\");\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Preview failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const persistMappingArtifacts = async () => {\n if (!drawerDraft || !bootstrap?.module?.id) return;\n\n const validationErrors = getDrawerValidationErrors(drawerDraft);\n if (validationErrors.length) {\n validationErrors.forEach((detail) => {\n dispatch(showToast({ severity: \"error\", summary: \"Validation\", detail }));\n });\n setWorkspaceStep(\"configure\");\n return;\n }\n\n const reviewedModelValidation = parseAndValidateReviewedModelJson(metadataJsonText, drawerDraft);\n if (reviewedModelValidation.error || !reviewedModelValidation.parsed) {\n setMetadataJsonValidationError(reviewedModelValidation.error ?? \"Metadata JSON is invalid.\");\n setWorkspaceStep(\"review-json\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Validation\",\n detail: reviewedModelValidation.error ?? \"Metadata JSON is invalid.\",\n }));\n return;\n }\n\n setMetadataJsonValidationError(null);\n\n try {\n const response = await applyMapping({\n moduleId: bootstrap.module.id,\n payload: {\n ...buildMappingRequest(drawerDraft, mappingPreview?.migration.timestamp ?? null),\n reviewedModel: reviewedModelValidation.parsed,\n },\n }).unwrap();\n\n dispatch(showToast({\n severity: \"success\",\n summary: \"Mapping saved\",\n detail: drawerDraft.mapped\n ? \"The model mapping metadata was updated successfully.\"\n : \"The model mapping metadata was created successfully.\",\n }));\n\n setPersistedMappingResult(response);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setDrawerDraft((current) => (\n current\n ? {\n ...current,\n mapped: true,\n modelId: response.modelId,\n }\n : current\n ));\n setWorkspaceStep(\"generate-code\");\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Save failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const handleGenerateCode = async () => {\n if (!bootstrap?.module?.id) return;\n\n setHasAttemptedGenerateCode(true);\n setRunMigrationCompleted(false);\n setIsGeneratingCodeWorkflow(true);\n setGenerateCodeStatusMessage(\"Submitting module generate-code request...\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n let responseMessage = \"\";\n\n try {\n const response = await generateCode({ moduleId: bootstrap.module.id }).unwrap();\n responseMessage = response.output || response.message || \"\";\n setGenerateCodeOutput(responseMessage);\n setGenerateCodeStatusMessage(\"Waiting briefly for the backend restart window...\");\n } catch (error: any) {\n if (!isRecoverableGenerateCodeError(error)) {\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Generate code failed\",\n detail: readQueryError(error),\n }));\n return;\n }\n\n setGenerateCodeStatusMessage(\"The API connection dropped during restart. Waiting for the backend to come back online...\");\n }\n\n await new Promise((resolve) => window.setTimeout(resolve, 5000));\n setGenerateCodeStatusMessage(\"Checking if the backend is back online...\");\n\n const isBackendAvailable = await waitForBackendAvailability({\n retries: 40,\n delayMs: 1500,\n });\n\n setIsGeneratingCodeWorkflow(false);\n\n if (!isBackendAvailable) {\n setGenerateCodeTimeoutMessage(\n \"Code generation took longer than expected. The backend did not come back within 60 seconds, so there may be a compilation failure or another startup issue. Please review the generated code manually and check the API logs before continuing.\",\n );\n dispatch(showToast({\n severity: \"warn\",\n summary: \"Backend restart taking too long\",\n detail: \"The generate-code request completed, but the backend did not come back within 60 seconds.\",\n }));\n return;\n }\n\n setGenerateCodeStatusMessage(\"Backend is back online. You can continue.\");\n setGenerateCodeReady(true);\n setMigrationArtifactsResult(null);\n setRunMigrationOutput(\"\");\n dispatch(showToast({\n severity: \"success\",\n summary: \"Code generated\",\n detail: responseMessage || \"The backend is back online. You can continue to the migration artifacts step.\",\n }));\n };\n\n const handleCreateMigrationArtifacts = async () => {\n if (!drawerDraft || !bootstrap?.module?.id || !persistedMappingResult?.modelId) return;\n\n const reviewedModelValidation = parseAndValidateReviewedModelJson(metadataJsonText, drawerDraft);\n if (reviewedModelValidation.error || !reviewedModelValidation.parsed) {\n setMetadataJsonValidationError(reviewedModelValidation.error ?? \"Metadata JSON is invalid.\");\n setWorkspaceStep(\"review-json\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Validation\",\n detail: reviewedModelValidation.error ?? \"Metadata JSON is invalid.\",\n }));\n return;\n }\n\n try {\n const response = await createMigrationArtifacts({\n moduleId: bootstrap.module.id,\n payload: {\n ...buildMappingRequest(\n {\n ...drawerDraft,\n mapped: true,\n modelId: persistedMappingResult.modelId,\n },\n mappingPreview?.migration.timestamp ?? null,\n ),\n reviewedModel: reviewedModelValidation.parsed,\n },\n }).unwrap();\n\n setMigrationArtifactsResult(response);\n setWorkspaceStep(\"run-migration\");\n dispatch(showToast({\n severity: \"success\",\n summary: \"Migration artifacts created\",\n detail: response.migration.written\n ? \"The migration file and datasource registration were written successfully.\"\n : \"No migration file was required, but the datasource registration was updated successfully.\",\n }));\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Create migration artifacts failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const handleRunMigration = async () => {\n if (!bootstrap?.module?.id || !selectedDatasource) return;\n\n try {\n const response = await runMigration({\n moduleId: bootstrap.module.id,\n datasource: selectedDatasource,\n }).unwrap();\n\n setRunMigrationOutput(response.output || response.message || \"\");\n setRunMigrationCompleted(true);\n dispatch(showToast({\n severity: \"success\",\n summary: \"Migration complete\",\n detail: response.message || `Migrations ran successfully for datasource \"${selectedDatasource}\".`,\n }));\n\n await refetchTables();\n await refetchBootstrap();\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Run migration failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n if (!isValidModuleId) {\n return (\n <div className=\"sdix-page\">\n <div className=\"sdix-empty-state\">\n <ShieldAlert size={24} />\n <h2>Module not found</h2>\n <p>Open datasource introspection from a saved module so SolidX knows which module should receive the mapped models.</p>\n </div>\n </div>\n );\n }\n\n const stepSequence: WorkspaceStep[] = [\n \"configure\",\n \"review-json\",\n \"generate-code\",\n \"create-migrations\",\n \"run-migration\",\n ];\n const currentStepIndex = stepSequence.indexOf(workspaceStep);\n const stepperItems = [\n {\n key: \"configure\" as const,\n label: \"Configure Mapping\",\n complete: currentStepIndex > 0,\n active: workspaceStep === \"configure\",\n disabled: false,\n onClick: () => setWorkspaceStep(\"configure\"),\n },\n {\n key: \"review-json\" as const,\n label: \"Review Mapping JSON\",\n complete: currentStepIndex > 1,\n active: workspaceStep === \"review-json\",\n disabled: !mappingPreview,\n onClick: () => {\n if (mappingPreview) setWorkspaceStep(\"review-json\");\n },\n },\n {\n key: \"generate-code\" as const,\n label: \"Generate Code\",\n complete: currentStepIndex > 2,\n active: workspaceStep === \"generate-code\",\n disabled: !persistedMappingResult,\n onClick: () => {\n if (persistedMappingResult) setWorkspaceStep(\"generate-code\");\n },\n },\n {\n key: \"create-migrations\" as const,\n label: \"Create Migrations\",\n complete: currentStepIndex > 3,\n active: workspaceStep === \"create-migrations\",\n disabled: !hasAttemptedGenerateCode,\n onClick: () => {\n if (hasAttemptedGenerateCode) setWorkspaceStep(\"create-migrations\");\n },\n },\n {\n key: \"run-migration\" as const,\n label: \"Run Migration\",\n complete: false,\n active: workspaceStep === \"run-migration\",\n disabled: !migrationArtifactsResult,\n onClick: () => {\n if (migrationArtifactsResult) setWorkspaceStep(\"run-migration\");\n },\n },\n ];\n\n const selectableUnmappedColumns = drawerDraft?.columns.filter(\n (column) => !column.handledBySuperclass && !column.matched && !column.isPrimaryKey,\n ) ?? [];\n const allSelectableUnmappedIncluded = selectableUnmappedColumns.length > 0\n && selectableUnmappedColumns.every((column) => column.include);\n const drawerRawDdl = tableDetail?.rawDdl ?? null;\n const drawerTabs = drawerDraft ? [\n {\n value: \"general-info\",\n label: \"General Info\",\n content: (\n <div className=\"sdix-drawer-form\">\n <section className=\"sdix-form-section\">\n <h4 className=\"solid-form-layout-label\">Model Info</h4>\n <div className=\"sdix-form-grid\">\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-singular-name\">Singular Name</label>\n <SolidInput\n id=\"sdix-singular-name\"\n value={drawerDraft.singularName}\n onChange={(event) => updateGeneralField(\"singularName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-plural-name\">Plural Name</label>\n <SolidInput\n id=\"sdix-plural-name\"\n value={drawerDraft.pluralName}\n onChange={(event) => updateGeneralField(\"pluralName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-display-name\">Display Name</label>\n <SolidInput\n id=\"sdix-display-name\"\n value={drawerDraft.displayName}\n onChange={(event) => updateGeneralField(\"displayName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-user-key-field\">User Key Field</label>\n <SolidSelect\n id=\"sdix-user-key-field\"\n value={drawerDraft.userKeyField}\n options={drawerUserKeyOptions}\n placeholder=\"Select user key field\"\n onChange={(event) => changeUserKeyField(event.value)}\n />\n </div>\n <div className=\"sdix-form-field sdix-form-field--full\">\n <label htmlFor=\"sdix-description\">Description</label>\n <SolidTextarea\n className=\"sdix-description-textarea\"\n id=\"sdix-description\"\n rows={2}\n value={drawerDraft.description}\n onChange={(event) => updateGeneralField(\"description\", event.target.value)}\n />\n </div>\n </div>\n </section>\n\n <section className=\"sdix-form-section\">\n <h4 className=\"solid-form-layout-label\">Datasource Binding</h4>\n <div className=\"sdix-form-grid\">\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-table-name\">Table Name</label>\n <SolidInput\n id=\"sdix-table-name\"\n value={drawerDraft.tableName}\n onChange={(event) => updateGeneralField(\"tableName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-schema-name\">Schema</label>\n <SolidInput\n id=\"sdix-schema-name\"\n value={drawerDraft.schema ?? \"default\"}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-datasource-name\">Datasource</label>\n <SolidInput\n id=\"sdix-datasource-name\"\n value={drawerDraft.dataSource}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-datasource-type\">Provider</label>\n <SolidInput\n id=\"sdix-datasource-type\"\n value={providerLabel(drawerDraft.dataSourceType)}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-legacy-type\">Mapping Strategy</label>\n <SolidSelect\n id=\"sdix-legacy-type\"\n value={drawerDraft.legacyTableType}\n options={mappingStrategyOptions}\n onChange={(event) => updateLegacyTableType(event.value)}\n />\n <small className=\"sdix-inline-note\">\n This will use <strong>{drawerDraft.baseClassName}</strong> for the generated entity.\n </small>\n </div>\n </div>\n </section>\n </div>\n ),\n },\n {\n value: \"columns-mapping\",\n label: \"Columns Mapping\",\n content: (\n <div className=\"sdix-columns\">\n <div className=\"sdix-columns__toolbar\">\n <div className=\"sdix-columns__legend\" aria-label=\"Column legend\">\n <span className=\"sdix-status-badge is-superclass\">System column</span>\n <span className=\"sdix-status-badge is-muted\">Application column</span>\n </div>\n </div>\n <div className=\"sdix-column-table\">\n <div className=\"sdix-column-row sdix-column-row--head sdix-column-row--mapping\">\n <span className=\"sdix-column-select-header\">\n {selectableUnmappedColumns.length ? (\n <SolidCheckbox\n checked={allSelectableUnmappedIncluded}\n onChange={(event) => setUnmappedColumnsIncluded(event.target.checked)}\n aria-label={allSelectableUnmappedIncluded ? \"Deselect all unmapped columns\" : \"Select all unmapped columns\"}\n />\n ) : (\n \"Include\"\n )}\n </span>\n <span>Column</span>\n <span>Field</span>\n <span>Label</span>\n <span>Database</span>\n <span>SolidX</span>\n <span>Status</span>\n <span>Action</span>\n </div>\n {drawerDraft.columns.map((column) => {\n const isUserKey = drawerDraft.userKeyField === column.fieldName;\n const isPrimaryKeyField = column.isPrimaryKey;\n const statusClassName = column.handledBySuperclass\n ? \"is-superclass\"\n : column.include\n ? column.matched\n ? \"is-mapped\"\n : \"is-unmapped\"\n : \"is-muted\";\n\n const statusText = column.handledBySuperclass\n ? \"System\"\n : column.include\n ? column.matched\n ? \"Mapped\"\n : \"Queued for save\"\n : column.matched\n ? \"Currently omitted\"\n : \"Skipped for now\";\n\n return (\n <div key={column.columnName} className=\"sdix-column-row sdix-column-row--mapping\">\n <span className=\"sdix-column-include\">\n {column.handledBySuperclass ? (\n <span className=\"sdix-column-placeholder\">-</span>\n ) : column.matched ? (\n <span className=\"sdix-column-placeholder\">-</span>\n ) : column.isPrimaryKey ? (\n <SolidCheckbox checked disabled aria-label=\"Required included column\" />\n ) : (\n <SolidCheckbox\n checked={column.include}\n onChange={(event) => setColumnIncluded(column.columnName, event.target.checked)}\n />\n )}\n </span>\n <span className=\"sdix-column-meta\">\n <strong>{column.columnName}</strong>\n {column.isAutoGenerated ? <small>Generated id column</small> : null}\n </span>\n <span>\n <SolidInput\n value={column.fieldName}\n disabled={column.handledBySuperclass}\n onChange={(event) => updateColumnFieldName(column.columnName, event.target.value)}\n />\n {isUserKey || isPrimaryKeyField ? (\n <div className=\"sdix-inline-note-stack\">\n {isUserKey ? <small className=\"sdix-inline-note\">User key</small> : null}\n {isPrimaryKeyField ? <small className=\"sdix-inline-note\">Primary key</small> : null}\n </div>\n ) : null}\n </span>\n <span>\n <SolidInput\n value={column.displayName}\n disabled={column.handledBySuperclass}\n onChange={(event) => updateColumnDisplayName(column.columnName, event.target.value)}\n />\n </span>\n <span className=\"sdix-column-meta\">\n <strong>{column.dataType}</strong>\n </span>\n <span>\n {column.handledBySuperclass ? (\n <span>{column.solidFieldType}</span>\n ) : (\n <SolidSelect\n value={column.solidFieldType}\n options={scalarFieldTypeOptions}\n onChange={(event) => updateColumnSolidFieldType(column.columnName, event.value)}\n />\n )}\n </span>\n <span>\n <span className={`sdix-status-badge ${statusClassName}`}>{statusText}</span>\n </span>\n <span className=\"sdix-column-action\">\n {column.handledBySuperclass ? (\n <SolidButton size=\"small\" variant=\"outline\" disabled className=\"sdix-column-action-chip sdix-column-action-chip--managed\">\n Managed\n </SolidButton>\n ) : column.isPrimaryKey ? (\n <SolidButton size=\"small\" variant=\"outline\" disabled className=\"sdix-column-action-chip sdix-column-action-chip--required\">\n Required\n </SolidButton>\n ) : column.matched ? (\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setColumnIncluded(column.columnName, false)}>\n Remove mapping\n </SolidButton>\n ) : (\n <span className=\"sdix-column-placeholder\">-</span>\n )}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n ),\n },\n {\n value: \"raw-ddl\",\n label: \"Raw DDL\",\n content: (\n <div className=\"sdix-ddl-tab\">\n {drawerRawDdl?.available && drawerRawDdl.statement ? (\n <pre className=\"sdix-ddl-code\"><code>{drawerRawDdl.statement}</code></pre>\n ) : (\n <div className=\"sdix-empty-state is-inline sdix-ddl-empty\">\n <Database size={18} />\n <p>{drawerRawDdl?.note || \"DDL preview is not available for this table.\"}</p>\n </div>\n )}\n </div>\n ),\n },\n ] : [];\n\n const reviewJsonPanel = mappingPreview ? (\n <div className=\"sdix-review-panel sdix-review-panel--metadata\">\n <div className=\"sdix-review-meta sdix-review-meta--compact\">\n <span>Target file</span>\n <strong>{mappingPreview.metadataJson.filePath}</strong>\n </div>\n <SolidJsonEditor\n className=\"sdix-json-editor\"\n value={reviewedMetadataJsonValue ?? mappingPreview.metadataJson.model}\n resetToken={metadataJsonResetToken}\n onValueChange={(nextValue) => {\n setReviewedMetadataJsonValue(nextValue);\n if (metadataJsonValidationError) {\n setMetadataJsonValidationError(null);\n }\n }}\n onTextChange={(nextText) => {\n setMetadataJsonText(nextText);\n }}\n onErrorChange={setMetadataJsonValidationError}\n />\n {metadataJsonValidationError ? (\n <div className=\"sdix-json-validation-error\">\n <span>{metadataJsonValidationError}</span>\n </div>\n ) : null}\n </div>\n ) : null;\n\n const createMigrationsPanel = mappingPreview ? (\n <div className=\"sdix-review-panel sdix-review-panel--migration\">\n {mappingPreview.migration.willGenerate && mappingPreview.migration.filePath ? (\n <>\n <div className=\"sdix-review-meta sdix-review-meta--compact\">\n <span>Target file</span>\n <strong>{mappingPreview.migration.filePath}</strong>\n </div>\n <p className=\"sdix-review-note\">\n This migration preview is generated from the current mapping and stays read-only here. Moving ahead writes the migration file to disk and updates the datasource registration now that the entity code already exists.\n </p>\n {mappingPreview.migration.content ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{mappingPreview.migration.content}</code></pre>\n ) : null}\n </>\n ) : (\n <div className=\"sdix-empty-state is-inline sdix-ddl-empty\">\n <Database size={18} />\n <p>{mappingPreview.migration.note}</p>\n </div>\n )}\n </div>\n ) : null;\n\n const generateCodePanel = (\n <div className=\"sdix-stage-panel\">\n <div className=\"sdix-stage-panel__header\">\n <span className=\"sdix-stage-panel__eyebrow\">Step 3</span>\n <h3>Generate module code</h3>\n <p>The reviewed metadata JSON is now persisted. Run the normal SolidX module generation flow next so the entity, DTOs, repository, service, controller, and UI code are refreshed before we register the entity on the datasource and write the migration.</p>\n </div>\n <div className=\"sdix-stage-panel__body\">\n <div className=\"sdix-stage-panel__card\">\n <div className=\"sdix-stage-panel__card-title\">What happens here</div>\n <ul className=\"sdix-stage-panel__list\">\n <li>The module generate-code pipeline runs for <strong>{bootstrap?.module?.displayName}</strong>.</li>\n <li>The newly mapped model entity is generated inside the module source folder.</li>\n <li>Any existing generated assets for this module may be refreshed.</li>\n </ul>\n </div>\n <div className=\"sdix-stage-panel__actions\">\n <SolidButton\n leftIcon={<Sparkles size={14} />}\n loading={isGenerateCodeLoading || isGeneratingCodeWorkflow}\n disabled={isGenerateCodeLoading || isGeneratingCodeWorkflow}\n onClick={() => void handleGenerateCode()}\n >\n Generate Code\n </SolidButton>\n </div>\n {isGeneratingCodeWorkflow ? (\n <div className=\"sdix-empty-state is-inline sdix-stage-progress\">\n <SolidSpinner size={30} />\n <h3>Generating code</h3>\n <p>{generateCodeStatusMessage || \"Waiting for the backend to finish restarting...\"}</p>\n </div>\n ) : null}\n {!isGeneratingCodeWorkflow && generateCodeTimeoutMessage ? (\n <div className=\"sdix-error is-inline sdix-stage-progress sdix-stage-progress--warning\">\n <ShieldAlert size={22} />\n <h3>Manual review recommended</h3>\n <p>{generateCodeTimeoutMessage}</p>\n </div>\n ) : null}\n {generateCodeOutput ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{generateCodeOutput}</code></pre>\n ) : null}\n </div>\n </div>\n );\n\n const runMigrationPanel = (\n <div className=\"sdix-stage-panel\">\n <div className=\"sdix-stage-panel__header\">\n <span className=\"sdix-stage-panel__eyebrow\">Step 5</span>\n <h3>Run datasource migration</h3>\n <p>With the datasource file updated and module code generated, SolidX can now run the TypeORM migration for the selected datasource and apply the missing system fields to the legacy table.</p>\n </div>\n <div className=\"sdix-stage-panel__body\">\n <div className=\"sdix-stage-panel__card\">\n <div className=\"sdix-stage-panel__card-title\">Command</div>\n <pre className=\"sdix-stage-panel__command\"><code>{`npx @solidxai/solidctl@latest migration -d ${selectedDatasource} run`}</code></pre>\n </div>\n {runMigrationCompleted ? (\n <div className=\"sdix-empty-state is-inline sdix-stage-progress\">\n <Check size={24} />\n <h3>Migration finished</h3>\n <p>Review the output below. When you are satisfied, click Finish to return to the model list.</p>\n </div>\n ) : null}\n {runMigrationOutput ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{runMigrationOutput}</code></pre>\n ) : null}\n </div>\n </div>\n );\n\n const workspaceContent = drawerDraft ? (() => {\n switch (workspaceStep) {\n case \"review-json\":\n return reviewJsonPanel;\n case \"create-migrations\":\n return createMigrationsPanel;\n case \"generate-code\":\n return generateCodePanel;\n case \"run-migration\":\n return runMigrationPanel;\n case \"configure\":\n default:\n return (\n <SolidTabGroup\n tabs={drawerTabs}\n value={drawerTab}\n onValueChange={setDrawerTab}\n className=\"sdix-drawer-tabs sdix-wizard-tabs\"\n panelClassName=\"sdix-drawer-tab-panel sdix-wizard-tab-panel\"\n />\n );\n }\n })() : null;\n\n const workspaceMeta = drawerDraft ? (() => {\n switch (workspaceStep) {\n case \"review-json\":\n return (\n <span>\n Review the generated metadata JSON before it is written to the module metadata file.\n </span>\n );\n case \"generate-code\":\n return persistedMappingResult ? (\n <span>\n Metadata JSON has been saved for\n {\" \"}\n <strong>{drawerDraft.displayName || drawerDraft.singularName}</strong>\n . Generate the module code next so the entity file exists before datasource registration is updated. Continue stays disabled until you attempt code generation at least once.\n </span>\n ) : (\n <span>Save the metadata JSON before generating code.</span>\n );\n case \"create-migrations\":\n return mappingPreview ? (\n <span>\n Create the migration artifacts for\n {\" \"}\n <strong>{mappingPreview.summary.includedColumnNames.length}</strong>\n {\" \"}\n mapped columns\n {mappingPreview.summary.generatedSystemColumnCount\n ? ` and ${mappingPreview.summary.generatedSystemColumnCount} SolidX system column migration changes`\n : \"\"}\n .\n </span>\n ) : null;\n case \"run-migration\":\n return runMigrationCompleted ? (\n <span>\n The datasource migration has completed for\n {\" \"}\n <strong>{selectedDatasource}</strong>\n . Review the output below and click Finish when you are ready to return to the model list.\n </span>\n ) : (\n <span>\n Run the datasource migration for\n {\" \"}\n <strong>{selectedDatasource}</strong>\n {\" \"}\n to apply the SolidX system columns on the legacy table.\n </span>\n );\n case \"configure\":\n default:\n return drawerDraft.mapped ? (\n <span>\n Editing mapped model\n {\" \"}\n <strong>{selectedTable?.mappedModelDisplayName || selectedTable?.mappedModelSingularName}</strong>\n {drawerDraft.mappedModuleLabel ? ` in ${drawerDraft.mappedModuleLabel}` : \"\"}\n </span>\n ) : (\n <span>Configure the field mapping draft before generating the metadata JSON preview.</span>\n );\n }\n })() : null;\n\n return (\n <div className=\"sdix-page\">\n {isBootstrapLoading ? (\n <div className=\"sdix-loading\">\n <SolidSpinner size={28} />\n <p>Loading introspection workspace...</p>\n </div>\n ) : bootstrapError ? (\n <div className=\"sdix-error\">\n <span>{readQueryError(bootstrapError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchBootstrap()}>\n Retry\n </SolidButton>\n </div>\n ) : (\n <>\n {!isWorkspaceMode ? (\n <div className=\"sdix-toolbar\">\n <div className=\"sdix-toolbar__left\">\n <div className=\"sdix-toolbar-search\">\n <Search size={15} />\n <SolidInput\n value={tableSearch}\n onChange={(event) => setTableSearch(event.target.value)}\n placeholder=\"Search tables\"\n disabled={!selectedDatasource}\n />\n </div>\n </div>\n\n <div className=\"sdix-toolbar__actions\">\n {isBootstrapFetching || isTablesFetching ? (\n <div className=\"sdix-inline-status\">\n <SolidSpinner size={16} />\n <span>Refreshing</span>\n </div>\n ) : null}\n <SolidButton\n size=\"small\"\n leftIcon={<Sparkles size={14} />}\n onClick={() => {\n if (selectedListRow) {\n startMappingForRecord(selectedListRow);\n }\n }}\n disabled={!selectedListRow}\n >\n Start Mapping\n </SolidButton>\n <SolidSelect\n value={selectedDatasource}\n options={datasourceOptions}\n placeholder=\"Datasource\"\n className=\"sdix-toolbar-select sdix-toolbar-select--compact\"\n onChange={(event) => setSelectedDatasource(event.value)}\n />\n <SolidButton\n size=\"small\"\n className=\"sdix-icon-button\"\n leftIcon={<RefreshCw size={16} />}\n onClick={() => void handleRefresh()}\n tooltip=\"Refresh\"\n aria-label=\"Refresh\"\n />\n <SolidButton\n size=\"small\"\n className=\"sdix-icon-button\"\n leftIcon={<Cog size={16} />}\n onClick={() => {\n setDraftSessionSettings(sessionSettings);\n setSettingsTab(\"datasource-info\");\n setSettingsOpen(true);\n }}\n tooltip=\"Session settings\"\n aria-label=\"Session settings\"\n />\n </div>\n </div>\n ) : null}\n\n {selectedDatasource && tablesResponse?.synchronizeBlocked ? (\n <div className=\"sdix-blocker\">\n <ShieldAlert size={20} />\n <div>\n <h3>Synchronize must be disabled before introspection</h3>\n <p>{tablesResponse.synchronizeMessage}</p>\n </div>\n </div>\n ) : null}\n\n {!isWorkspaceMode ? (\n <div className=\"sdix-workbench\">\n <div className=\"sdix-table-shell\">\n {!selectedDatasource ? (\n <div className=\"sdix-empty-state is-inline\">\n <Database size={22} />\n <p>Select a datasource to load its tables.</p>\n </div>\n ) : isTablesLoading ? (\n <div className=\"sdix-loading is-inline\">\n <SolidSpinner size={24} />\n <p>Inspecting datasource tables...</p>\n </div>\n ) : tablesError ? (\n <div className=\"sdix-error is-inline\">\n <span>{readQueryError(tablesError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchTables()}>\n Retry\n </SolidButton>\n </div>\n ) : !filteredRecords.length ? (\n <div className=\"sdix-empty-state is-inline\">\n <Database size={22} />\n <p>{tableSearch ? \"No tables match the current quick filter.\" : \"No database tables were discovered for this datasource.\"}</p>\n </div>\n ) : (\n <div className=\"sdix-table-area\">\n <SolidDataTable\n value={filteredRecords}\n dataKey=\"tableName\"\n viewportHeight=\"calc(100vh - 162px)\"\n size=\"small\"\n onRowClick={({ data }) => setSelectedRows([data])}\n rowClassName={(rowData) => `${rowData.schema ?? \"\"}::${rowData.tableName}` === selectedListRowKey ? \"sdix-table-row-selected\" : \"\"}\n emptyMessage=\"No datasource tables found\"\n >\n <Column\n header=\"\"\n body={(rowData: DatasourceIntrospectionTableRecord) => {\n const rowKey = `${rowData.schema ?? \"\"}::${rowData.tableName}`;\n return (\n <div className=\"sdix-selection-cell\" data-no-row-click=\"true\">\n <SolidCheckbox\n checked={rowKey === selectedListRowKey}\n onChange={(event) => setSelectedRows(event.target.checked ? [rowData] : [])}\n />\n </div>\n );\n }}\n style={{ width: 52, minWidth: 52 }}\n />\n <Column\n field=\"tableName\"\n header=\"Table\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n <div className=\"sdix-table-primary-cell\">\n <strong>{rowData.tableName}</strong>\n </div>\n )}\n style={{ minWidth: 240 }}\n />\n <Column field=\"schema\" header=\"Schema\" body={(rowData: DatasourceIntrospectionTableRecord) => rowData.schema || \"dbo/default\"} style={{ minWidth: 120 }} />\n <Column\n header=\"Status\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n <span\n className={`sdix-status-badge ${rowData.mapped ? \"is-mapped\" : \"is-unmapped\"}`}\n >\n {statusLabel(rowData)}\n </span>\n )}\n style={{ minWidth: 150 }}\n />\n <Column\n header=\"Superclass\"\n body={(rowData: DatasourceIntrospectionTableRecord) => rowData.suggestedBaseClassName}\n style={{ minWidth: 220 }}\n />\n <Column field=\"suggestedUserKeyField\" header=\"User Key\" style={{ minWidth: 160 }} />\n <Column\n header=\"Mapped Model\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n rowData.mapped\n ? (\n <div className=\"sdix-table-primary-cell\">\n <strong>{rowData.mappedModelDisplayName || rowData.mappedModelSingularName || \"-\"}</strong>\n {rowData.mappedModuleDisplayName || rowData.mappedModuleName ? (\n <span>{rowData.mappedModuleDisplayName || rowData.mappedModuleName}</span>\n ) : null}\n </div>\n )\n : <span className=\"sdix-muted-cell\">Not mapped</span>\n )}\n style={{ minWidth: 200 }}\n />\n <Column\n header=\"System Columns\"\n body={(rowData: DatasourceIntrospectionTableRecord) => Math.max(rowData.columnCount - rowData.physicalColumnCount, 0)}\n style={{ minWidth: 130 }}\n />\n <Column\n header=\"Columns\"\n body={(rowData: DatasourceIntrospectionTableRecord) => rowData.physicalColumnCount}\n style={{ minWidth: 110 }}\n />\n </SolidDataTable>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div className=\"sdix-workspace-screen\">\n <div className=\"sdix-workspace-header\">\n <SolidButton size=\"small\" variant=\"outline\" leftIcon={<ArrowLeft size={14} />} onClick={leaveWorkspace}>\n Back\n </SolidButton>\n <div className=\"sdix-workspace-header__identity sdix-workspace-header__identity--right\">\n <h2>{selectedTable?.tableName || \"Mapping workspace\"}</h2>\n <p>\n {selectedTable\n ? `${selectedTable.schema || \"dbo\"} · ${selectedDatasourceRecord?.database || selectedDatasourceRecord?.displayName || \"Datasource\"}${selectedDatasourceRecord ? ` · ${providerLabel(selectedDatasourceRecord.type)}` : \"\"}`\n : \"Complete the legacy table mapping in a dedicated workspace.\"}\n </p>\n </div>\n </div>\n\n {!selectedTable && !isTablesLoading ? (\n <div className=\"sdix-error\">\n <span>The selected table is no longer available for this datasource.</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={leaveWorkspace}>\n Back to table list\n </SolidButton>\n </div>\n ) : drawerLoadingError ? (\n <div className=\"sdix-error\">\n <span>{readQueryError(drawerLoadingError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchTableDetail()}>\n Retry\n </SolidButton>\n </div>\n ) : isDrawerBlockingLoading ? (\n <div className=\"sdix-loading sdix-workspace-loading\">\n <SolidSpinner size={24} />\n <p>Preparing column mapping preview...</p>\n </div>\n ) : (\n <div className=\"sdix-wizard-shell\">\n <div className=\"sdix-wizard-stepper\">\n {stepperItems.map((step, index) => (\n <button\n key={step.key}\n type=\"button\"\n className={[\n \"sdix-wizard-stepper-item\",\n step.active ? \"is-active\" : \"\",\n step.complete ? \"is-complete\" : \"\",\n step.disabled ? \"is-disabled\" : \"\",\n ].filter(Boolean).join(\" \")}\n onClick={step.onClick}\n disabled={step.disabled}\n >\n <span className=\"sdix-wizard-stepper-badge\">\n {step.complete ? <Check size={12} /> : index + 1}\n </span>\n <span className=\"sdix-wizard-stepper-label\">{step.label}</span>\n </button>\n ))}\n </div>\n\n <div className=\"sdix-wizard-panel\">\n <div className=\"sdix-wizard-panel__body\">\n {workspaceContent}\n </div>\n </div>\n\n {drawerDraft ? (\n <div className=\"sdix-wizard-footer\">\n <div className=\"sdix-wizard-footer__meta\">{workspaceMeta}</div>\n <div className=\"sdix-wizard-footer__actions\">\n {drawerDraft.mapped && drawerDraft.modelId ? (\n <SolidButton size=\"small\" variant=\"outline\" leftIcon={<ExternalLink size={14} />} onClick={openMappedModelForm}>\n Open model form\n </SolidButton>\n ) : null}\n {workspaceStep === \"configure\" ? (\n <SolidButton\n size=\"small\"\n leftIcon={<Save size={14} />}\n loading={isPreviewMappingLoading}\n onClick={() => void reviewMappingJson()}\n >\n Review Mapping JSON\n </SolidButton>\n ) : null}\n {workspaceStep === \"review-json\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"configure\")}>\n Back\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Save size={14} />} loading={isSavingMapping} onClick={() => void persistMappingArtifacts()}>\n Save Mapping\n </SolidButton>\n </>\n ) : null}\n {workspaceStep === \"generate-code\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"review-json\")}>\n Back\n </SolidButton>\n <SolidButton\n size=\"small\"\n disabled={!hasAttemptedGenerateCode || isGenerateCodeLoading || isGeneratingCodeWorkflow}\n onClick={() => setWorkspaceStep(\"create-migrations\")}\n >\n Continue\n </SolidButton>\n </>\n ) : null}\n {workspaceStep === \"create-migrations\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"generate-code\")}>\n Back\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Save size={14} />} loading={isCreatingMigrationArtifacts} onClick={() => void handleCreateMigrationArtifacts()}>\n Create Migration Artifacts\n </SolidButton>\n </>\n ) : null}\n {workspaceStep === \"run-migration\" ? (\n runMigrationCompleted ? (\n <SolidButton\n size=\"small\"\n leftIcon={<Check size={14} />}\n onClick={() => navigate(\"/admin/core/solid-core/model-metadata/list\")}\n >\n Finish\n </SolidButton>\n ) : (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"create-migrations\")}>\n Back\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Database size={14} />} loading={isRunMigrationLoading} onClick={() => void handleRunMigration()}>\n Run Migration\n </SolidButton>\n </>\n )\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n )}\n </div>\n )}\n\n <SolidDialog\n open={settingsOpen}\n onOpenChange={setSettingsOpen}\n style={{ width: \"min(560px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Session settings</SolidDialogTitle>\n <SolidDialogDescription>\n Review the selected datasource and adjust the session-specific introspection flags.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidTabGroup\n tabs={settingsTabs}\n value={settingsTab}\n onValueChange={setSettingsTab}\n className=\"sdix-settings-tabs\"\n panelClassName=\"sdix-settings-tab-panel\"\n />\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" onClick={() => setSettingsOpen(false)}>\n Cancel\n </SolidButton>\n <SolidButton onClick={applyDraftSettings}>\n Apply\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DatasourceIntrospectionPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourceIntrospectionPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n ArrowLeft,\n Check,\n Cog,\n Database,\n ExternalLink,\n RefreshCw,\n Save,\n Search,\n ShieldAlert,\n Sparkles,\n} from \"lucide-react\";\nimport { camelCase, startCase } from \"lodash\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport { SolidJsonEditor } from \"../../../../components/core/json/SolidJsonEditor\";\nimport { Column, SolidDataTable } from \"../../../../components/core/list/SolidDataTable\";\nimport FieldMetaDataForm from \"../../../../components/core/model/FieldMetaDataForm\";\nimport { waitForBackendAvailability } from \"../../../../helpers/waitForBackendAvailability\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSpinner,\n SolidSwitch,\n SolidTabGroup,\n SolidTextarea,\n} from \"../../../../components/shad-cn-ui\";\nimport {\n type DatasourceIntrospectionTableDetail,\n type DatasourceIntrospectionMappingPreview,\n type DatasourceIntrospectionMappingRequest,\n type DatasourceIntrospectionTableRecord,\n type DatasourceIntrospectionApplyResponse,\n type DatasourceIntrospectionCreateMigrationResponse,\n useApplyDatasourceIntrospectionMappingMutation,\n useCreateDatasourceIntrospectionMigrationArtifactsMutation,\n useGenerateDatasourceIntrospectionCodeMutation,\n useGetDatasourceIntrospectionBootstrapQuery,\n useGetDatasourceIntrospectionTableDetailQuery,\n useGetDatasourceIntrospectionTablesQuery,\n usePreviewDatasourceIntrospectionMappingMutation,\n useRunDatasourceIntrospectionMigrationMutation,\n} from \"../../../../redux/api/datasourceIntrospectionApi\";\nimport { useGetmodelByIdQuery } from \"../../../../redux/api/modelApi\";\nimport \"./DatasourceIntrospectionPage.css\";\n\ntype SessionSettings = {\n relationInferenceEnabled: boolean;\n prioritizeUnmappedTables: boolean;\n};\n\ntype WorkspaceStep =\n | \"configure\"\n | \"review-json\"\n | \"generate-code\"\n | \"create-migrations\"\n | \"run-migration\";\n\ntype DrawerColumnDraft = {\n columnName: string;\n fieldName: string;\n displayName: string;\n dataType: string;\n solidFieldType: string;\n ormType: string;\n nullable: boolean;\n defaultValue: string | null;\n characterMaximumLength: number | null;\n numericPrecision: number | null;\n numericScale: number | null;\n ordinalPosition: number | null;\n isAutoGenerated: boolean;\n isDetectedPrimaryKey: boolean;\n handledBySuperclass: boolean;\n superclassFieldName: string | null;\n fieldId: number | null;\n include: boolean;\n matched: boolean;\n isPrimaryKey: boolean;\n fieldConfig: Record<string, any> | null;\n};\n\ntype DrawerDraft = {\n mapped: boolean;\n modelId: number | null;\n mappedModuleLabel: string | null;\n singularName: string;\n pluralName: string;\n displayName: string;\n description: string;\n tableName: string;\n schema: string | null;\n dataSource: string;\n dataSourceType: string;\n legacyTableType: \"none\" | \"existing_id\" | \"generated_id\";\n baseClassName: string;\n userKeyField: string;\n enableAuditTracking: boolean;\n enableSoftDelete: boolean;\n draftPublishWorkflow: boolean;\n internationalisation: boolean;\n columns: DrawerColumnDraft[];\n preservedFields: any[];\n};\n\nfunction providerLabel(type: string) {\n if (type === \"postgres\") return \"PostgreSQL\";\n if (type === \"mysql\") return \"MySQL\";\n if (type === \"mssql\") return \"MS SQL Server\";\n return type;\n}\n\nconst scalarFieldTypeOptions = [\n { value: \"shortText\", label: \"Short Text\" },\n { value: \"longText\", label: \"Long Text\" },\n { value: \"richText\", label: \"Rich Text\" },\n { value: \"boolean\", label: \"Boolean\" },\n { value: \"int\", label: \"Integer\" },\n { value: \"bigint\", label: \"Big Integer\" },\n { value: \"decimal\", label: \"Decimal\" },\n { value: \"date\", label: \"Date\" },\n { value: \"datetime\", label: \"Date Time\" },\n { value: \"time\", label: \"Time\" },\n { value: \"json\", label: \"JSON\" },\n { value: \"uuid\", label: \"UUID\" },\n { value: \"email\", label: \"Email\" },\n { value: \"password\", label: \"Password\" },\n];\n\nconst scalarFieldTypeValueSet = new Set(scalarFieldTypeOptions.map((option) => option.value));\nconst mappingStrategyOptions = [\n { value: \"generated_id\", label: \"Legacy generated id\" },\n { value: \"existing_id\", label: \"Legacy existing id\" },\n];\n\nfunction getBaseClassNameForLegacyType(value: \"none\" | \"existing_id\" | \"generated_id\") {\n return value === \"existing_id\"\n ? \"LegacyCommonEntityWithExistingId\"\n : \"LegacyCommonEntityWithGeneratedId\";\n}\n\nfunction getSuperclassFieldNameForLegacyType(columnName: string, legacyTableType: \"none\" | \"existing_id\" | \"generated_id\") {\n const normalized = columnName.toLowerCase();\n const legacyFieldMap: Record<string, string> = {\n ss_created_at: \"createdAt\",\n ss_updated_at: \"updatedAt\",\n ss_deleted_at: \"deletedAt\",\n ss_deleted_tracker: \"deletedTracker\",\n ss_published_at: \"publishedAt\",\n ss_locale_name: \"localeName\",\n ss_default_entity_locale_id: \"defaultEntityLocaleId\",\n ss_created_by_id: \"createdBy\",\n ss_updated_by_id: \"updatedBy\",\n };\n\n if (normalized === \"ss_id\" && legacyTableType === \"generated_id\") {\n return \"id\";\n }\n\n return legacyFieldMap[normalized] ?? null;\n}\n\nfunction getSuggestedFieldNameForLegacyType(column: Pick<DrawerColumnDraft, \"columnName\" | \"isAutoGenerated\">, legacyTableType: \"none\" | \"existing_id\" | \"generated_id\") {\n if (legacyTableType === \"existing_id\" && column.isAutoGenerated) {\n return \"id\";\n }\n\n if (legacyTableType === \"generated_id\" && column.columnName.toLowerCase() === \"id\") {\n return \"legacyId\";\n }\n\n return camelCase(column.columnName.replace(/^ss_/i, \"\"));\n}\n\nfunction getDefaultOrmTypeForSolidFieldType(dataSourceType: string, solidFieldType: string) {\n const normalizedDatasourceType = dataSourceType.toLowerCase();\n\n const ormTypesByDatasource: Record<string, Record<string, string>> = {\n mssql: {\n shortText: \"varchar\",\n longText: \"nvarchar\",\n richText: \"nvarchar\",\n boolean: \"bit\",\n int: \"int\",\n bigint: \"bigint\",\n decimal: \"numeric\",\n date: \"date\",\n datetime: \"datetime\",\n time: \"time\",\n json: \"simple-json\",\n uuid: \"uniqueidentifier\",\n email: \"nvarchar\",\n password: \"nvarchar\",\n },\n mysql: {\n shortText: \"varchar\",\n longText: \"longtext\",\n richText: \"longtext\",\n boolean: \"boolean\",\n int: \"int\",\n bigint: \"int\",\n decimal: \"decimal\",\n date: \"date\",\n datetime: \"datetime\",\n time: \"time\",\n json: \"json\",\n uuid: \"varchar\",\n email: \"varchar\",\n password: \"varchar\",\n },\n postgres: {\n shortText: \"varchar\",\n longText: \"text\",\n richText: \"text\",\n boolean: \"boolean\",\n int: \"integer\",\n bigint: \"bigint\",\n decimal: \"decimal\",\n date: \"date\",\n datetime: \"timestamp\",\n time: \"time\",\n json: \"json\",\n uuid: \"varchar\",\n email: \"varchar\",\n password: \"varchar\",\n },\n };\n\n return ormTypesByDatasource[normalizedDatasourceType]?.[solidFieldType] ?? \"varchar\";\n}\n\nfunction statusLabel(record: DatasourceIntrospectionTableRecord) {\n return record.mapped ? \"Mapped\" : \"Ready to map\";\n}\n\nfunction readQueryError(error: any) {\n return (\n error?.data?.message\n || error?.error\n || error?.message\n || \"Something went wrong.\"\n );\n}\n\nfunction isRecoverableGenerateCodeError(error: any) {\n const status = error?.status ?? error?.originalStatus;\n const message = [\n error?.error,\n error?.message,\n error?.data?.message,\n error?.data?.error,\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\n if (status === \"FETCH_ERROR\" || status === \"TIMEOUT_ERROR\" || status === \"PARSING_ERROR\") {\n return true;\n }\n\n return (\n message.includes(\"failed to fetch\")\n || message.includes(\"network\")\n || message.includes(\"load failed\")\n || message.includes(\"fetch\")\n );\n}\n\nfunction normalizeName(value: string) {\n return value.trim().toLowerCase();\n}\n\nfunction findMatchingModelField(column: DatasourceIntrospectionTableDetail[\"columns\"][number], modelFields: any[]) {\n return modelFields.find((field) => {\n if (field?.isSystem) return false;\n\n const sameColumnName = normalizeName(field?.columnName ?? \"\") === normalizeName(column.columnName);\n if (sameColumnName) return true;\n\n return Boolean(column.isAutoGenerated && column.fieldName === \"id\" && field?.name === \"id\");\n }) ?? null;\n}\n\nfunction sanitizeExistingFieldPayload(field: any) {\n const {\n createdAt,\n updatedAt,\n deletedAt,\n model,\n mediaStorageProvider,\n identifier,\n ...rest\n } = field ?? {};\n\n if (mediaStorageProvider?.id && !rest.mediaStorageProviderId) {\n rest.mediaStorageProviderId = mediaStorageProvider.id;\n }\n\n return rest;\n}\n\nfunction buildDrawerDraft(\n tableDetail: DatasourceIntrospectionTableDetail,\n selectedTable: DatasourceIntrospectionTableRecord,\n mappedModelData?: any,\n): DrawerDraft {\n const modelData = selectedTable.mapped ? (mappedModelData?.data ?? null) : null;\n const modelFields = modelData?.fields ?? [];\n const preservedFields = modelFields.map((field: any) => sanitizeExistingFieldPayload(field));\n const modelUserKeyField =\n modelData?.userKeyField?.name\n || modelFields.find((field: any) => field?.isUserKey)?.name\n || \"\";\n\n const columns: DrawerColumnDraft[] = tableDetail.columns.map((column) => {\n const matchingField = findMatchingModelField(column, modelFields);\n return {\n columnName: column.columnName,\n fieldName: matchingField?.name ?? column.fieldName,\n displayName: matchingField?.displayName ?? column.displayName,\n dataType: column.dataType,\n solidFieldType: matchingField?.type ?? column.solidFieldType,\n ormType: matchingField?.ormType ?? column.ormType,\n nullable: column.nullable,\n defaultValue: matchingField?.defaultValue ?? column.defaultValue,\n characterMaximumLength: column.characterMaximumLength,\n numericPrecision: column.numericPrecision,\n numericScale: column.numericScale,\n ordinalPosition: column.ordinalPosition,\n isAutoGenerated: column.isAutoGenerated,\n isDetectedPrimaryKey: column.isPrimaryKey,\n handledBySuperclass: column.handledBySuperclass,\n superclassFieldName: column.superclassFieldName,\n fieldId: matchingField?.id ?? null,\n include: column.handledBySuperclass ? false : Boolean(matchingField) || !selectedTable.mapped,\n matched: Boolean(matchingField),\n isPrimaryKey: Boolean(matchingField?.isPrimaryKey) || column.isPrimaryKey || (column.isAutoGenerated && column.fieldName === \"id\"),\n fieldConfig: matchingField ? sanitizeExistingFieldPayload(matchingField) : null,\n };\n });\n\n const draftUserKeyField = modelUserKeyField || tableDetail.suggestedMetadata.userKeyField;\n\n return {\n mapped: selectedTable.mapped,\n modelId: selectedTable.mappedModelId,\n mappedModuleLabel: selectedTable.mappedModuleDisplayName || selectedTable.mappedModuleName || null,\n singularName: modelData?.singularName ?? tableDetail.suggestedMetadata.singularName,\n pluralName: modelData?.pluralName ?? tableDetail.suggestedMetadata.pluralName,\n displayName: modelData?.displayName ?? tableDetail.suggestedMetadata.displayName,\n description: modelData?.description ?? tableDetail.suggestedMetadata.displayName,\n tableName: modelData?.tableName ?? tableDetail.suggestedMetadata.tableName,\n schema: tableDetail.suggestedMetadata.schema,\n dataSource: modelData?.dataSource ?? tableDetail.suggestedMetadata.dataSource,\n dataSourceType: modelData?.dataSourceType ?? tableDetail.suggestedMetadata.dataSourceType,\n legacyTableType: modelData?.legacyTableType ?? tableDetail.suggestedMetadata.legacyTableType,\n baseClassName: tableDetail.suggestedMetadata.baseClassName,\n userKeyField: draftUserKeyField,\n enableAuditTracking: modelData?.enableAuditTracking ?? true,\n enableSoftDelete: modelData?.enableSoftDelete ?? false,\n draftPublishWorkflow: modelData?.draftPublishWorkflow ?? false,\n internationalisation: modelData?.internationalisation ?? false,\n columns,\n preservedFields,\n };\n}\n\nfunction getDrawerValidationErrors(draft: DrawerDraft) {\n const errors: string[] = [];\n const includedColumns = draft.columns.filter((column) => !column.handledBySuperclass && column.include);\n const seenFieldNames = new Set<string>();\n\n if (!draft.singularName.trim()) {\n errors.push(\"Singular name is required.\");\n }\n if (!draft.pluralName.trim()) {\n errors.push(\"Plural name is required.\");\n }\n if (!draft.displayName.trim()) {\n errors.push(\"Display name is required.\");\n }\n if (!includedColumns.length) {\n errors.push(\"Select at least one physical column to include in the mapping.\");\n }\n\n for (const column of includedColumns) {\n const normalizedFieldName = column.fieldName.trim();\n if (!normalizedFieldName) {\n errors.push(`Field name is required for column \"${column.columnName}\".`);\n continue;\n }\n\n if (!column.displayName.trim()) {\n errors.push(`Field label is required for column \"${column.columnName}\".`);\n continue;\n }\n\n if (!scalarFieldTypeValueSet.has(column.solidFieldType)) {\n errors.push(`SolidX type \"${column.solidFieldType}\" is not allowed in step 1 for column \"${column.columnName}\".`);\n continue;\n }\n\n if (seenFieldNames.has(normalizedFieldName.toLowerCase())) {\n errors.push(`Field name \"${normalizedFieldName}\" is duplicated in the mapping draft.`);\n continue;\n }\n\n seenFieldNames.add(normalizedFieldName.toLowerCase());\n }\n\n if (!draft.userKeyField.trim()) {\n errors.push(\"Choose a user key field before saving the mapping.\");\n } else {\n const userKeyExists = includedColumns.some((column) => column.fieldName === draft.userKeyField);\n if (!userKeyExists) {\n errors.push(\"The chosen user key field must remain part of the mapped columns.\");\n }\n }\n\n if (draft.legacyTableType === \"existing_id\") {\n const hasPrimaryKey = includedColumns.some((column) => column.isPrimaryKey);\n if (!hasPrimaryKey) {\n errors.push(\"Legacy existing-id mappings must keep the generated id column mapped to field name \\\"id\\\".\");\n }\n }\n\n return errors;\n}\n\nfunction buildMappingRequest(\n draft: DrawerDraft,\n plannedMigrationTimestamp?: number | null,\n): DatasourceIntrospectionMappingRequest {\n return {\n mapped: draft.mapped,\n modelId: draft.modelId,\n singularName: draft.singularName.trim(),\n pluralName: draft.pluralName.trim(),\n displayName: draft.displayName.trim(),\n description: draft.description.trim() || draft.displayName.trim(),\n tableName: draft.tableName,\n schema: draft.schema ?? null,\n dataSource: draft.dataSource,\n dataSourceType: draft.dataSourceType,\n legacyTableType: draft.legacyTableType,\n baseClassName: draft.baseClassName,\n userKeyField: draft.userKeyField,\n enableAuditTracking: draft.enableAuditTracking,\n enableSoftDelete: draft.enableSoftDelete,\n draftPublishWorkflow: draft.draftPublishWorkflow,\n internationalisation: draft.internationalisation,\n plannedMigrationTimestamp: plannedMigrationTimestamp ?? null,\n columns: draft.columns.map((column) => ({\n columnName: column.columnName,\n fieldName: column.fieldName,\n displayName: column.displayName,\n dataType: column.dataType,\n solidFieldType: column.solidFieldType,\n ormType: column.ormType,\n nullable: column.nullable,\n defaultValue: column.defaultValue,\n characterMaximumLength: column.characterMaximumLength,\n numericPrecision: column.numericPrecision,\n numericScale: column.numericScale,\n ordinalPosition: column.ordinalPosition,\n isAutoGenerated: column.isAutoGenerated,\n handledBySuperclass: column.handledBySuperclass,\n superclassFieldName: column.superclassFieldName,\n fieldId: column.fieldId,\n include: column.include,\n matched: column.matched,\n isPrimaryKey: column.isPrimaryKey,\n fieldConfig: column.fieldConfig,\n })),\n };\n}\n\nfunction parseAndValidateReviewedModelJson(\n metadataJsonText: string,\n draft: DrawerDraft,\n) {\n let parsed: any;\n\n try {\n parsed = JSON.parse(metadataJsonText);\n } catch (error: any) {\n return {\n error: `Metadata JSON is not valid JSON: ${error?.message ?? \"Unknown parse error.\"}`,\n parsed: null,\n };\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return {\n error: \"Metadata JSON must be an object.\",\n parsed: null,\n };\n }\n\n const requiredStringKeys = [\n \"singularName\",\n \"pluralName\",\n \"displayName\",\n \"description\",\n \"dataSource\",\n \"dataSourceType\",\n \"tableName\",\n \"userKeyFieldUserKey\",\n ];\n\n for (const key of requiredStringKeys) {\n if (typeof parsed[key] !== \"string\" || !parsed[key].trim()) {\n return {\n error: `Metadata JSON must include a non-empty \"${key}\" string.`,\n parsed: null,\n };\n }\n }\n\n const immutableChecks: Array<{ key: string; expected: string }> = [\n { key: \"dataSource\", expected: draft.dataSource },\n { key: \"dataSourceType\", expected: draft.dataSourceType },\n { key: \"tableName\", expected: draft.tableName },\n { key: \"legacyTableType\", expected: draft.legacyTableType },\n ];\n\n for (const check of immutableChecks) {\n if (`${parsed[check.key] ?? \"\"}` !== `${check.expected}`) {\n return {\n error: `Metadata JSON cannot change immutable binding key \"${check.key}\".`,\n parsed: null,\n };\n }\n }\n\n const requiredBooleanKeys = [\n \"enableAuditTracking\",\n \"enableSoftDelete\",\n \"draftPublishWorkflow\",\n \"internationalisation\",\n ];\n\n for (const key of requiredBooleanKeys) {\n if (typeof parsed[key] !== \"boolean\") {\n return {\n error: `Metadata JSON must include a boolean \"${key}\" value.`,\n parsed: null,\n };\n }\n }\n\n if (!Array.isArray(parsed.fields)) {\n return {\n error: \"Metadata JSON must include a fields array.\",\n parsed: null,\n };\n }\n\n const seenFieldNames = new Set<string>();\n for (const [index, field] of parsed.fields.entries()) {\n if (!field || typeof field !== \"object\" || Array.isArray(field)) {\n return {\n error: `Field at index ${index} is not a valid object.`,\n parsed: null,\n };\n }\n\n if (typeof field.name !== \"string\" || !field.name.trim()) {\n return {\n error: `Field at index ${index} must include a non-empty \"name\".`,\n parsed: null,\n };\n }\n\n if (typeof field.type !== \"string\" || !field.type.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"type\".`,\n parsed: null,\n };\n }\n\n if (typeof field.ormType !== \"string\" || !field.ormType.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"ormType\".`,\n parsed: null,\n };\n }\n\n if (typeof field.columnName !== \"string\" || !field.columnName.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"columnName\".`,\n parsed: null,\n };\n }\n\n const normalizedFieldName = field.name.trim().toLowerCase();\n if (seenFieldNames.has(normalizedFieldName)) {\n return {\n error: `Field name \"${field.name}\" is duplicated in metadata JSON.`,\n parsed: null,\n };\n }\n\n seenFieldNames.add(normalizedFieldName);\n }\n\n if (!parsed.fields.some((field: any) => field?.name === parsed.userKeyFieldUserKey && !field?.isMarkedForRemoval)) {\n return {\n error: \"Metadata JSON must keep userKeyFieldUserKey present in the fields array.\",\n parsed: null,\n };\n }\n\n return {\n error: null,\n parsed,\n };\n}\n\nexport function DatasourceIntrospectionPage() {\n const params = useParams();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const moduleId = Number(params.moduleId ?? 0);\n const isValidModuleId = Number.isFinite(moduleId) && moduleId > 0;\n\n const {\n data: bootstrap,\n isLoading: isBootstrapLoading,\n isFetching: isBootstrapFetching,\n error: bootstrapError,\n refetch: refetchBootstrap,\n } = useGetDatasourceIntrospectionBootstrapQuery(moduleId, {\n skip: !isValidModuleId,\n });\n\n const [selectedDatasource, setSelectedDatasource] = useState(\"\");\n const [selectedRows, setSelectedRows] = useState<DatasourceIntrospectionTableRecord[]>([]);\n const [workspaceTableKey, setWorkspaceTableKey] = useState(\"\");\n const [tableSearch, setTableSearch] = useState(\"\");\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsTab, setSettingsTab] = useState(\"datasource-info\");\n const [drawerDraft, setDrawerDraft] = useState<DrawerDraft | null>(null);\n const [drawerTab, setDrawerTab] = useState(\"general-info\");\n const [workspaceStep, setWorkspaceStep] = useState<WorkspaceStep>(\"configure\");\n const [mappingPreview, setMappingPreview] = useState<DatasourceIntrospectionMappingPreview | null>(null);\n const [persistedMappingResult, setPersistedMappingResult] = useState<DatasourceIntrospectionApplyResponse | null>(null);\n const [migrationArtifactsResult, setMigrationArtifactsResult] = useState<DatasourceIntrospectionCreateMigrationResponse | null>(null);\n const [generateCodeOutput, setGenerateCodeOutput] = useState(\"\");\n const [isGeneratingCodeWorkflow, setIsGeneratingCodeWorkflow] = useState(false);\n const [generateCodeStatusMessage, setGenerateCodeStatusMessage] = useState(\"\");\n const [generateCodeTimeoutMessage, setGenerateCodeTimeoutMessage] = useState<string | null>(null);\n const [generateCodeReady, setGenerateCodeReady] = useState(false);\n const [hasAttemptedGenerateCode, setHasAttemptedGenerateCode] = useState(false);\n const [runMigrationOutput, setRunMigrationOutput] = useState(\"\");\n const [runMigrationCompleted, setRunMigrationCompleted] = useState(false);\n const [reviewedMetadataJsonValue, setReviewedMetadataJsonValue] = useState<any>(null);\n const [metadataJsonText, setMetadataJsonText] = useState(\"\");\n const [metadataJsonValidationError, setMetadataJsonValidationError] = useState<string | null>(null);\n const [metadataJsonResetToken, setMetadataJsonResetToken] = useState(\"initial\");\n const [drawerBootstrapping, setDrawerBootstrapping] = useState(false);\n const [fieldConfigColumnName, setFieldConfigColumnName] = useState<string | null>(null);\n const [sessionSettings, setSessionSettings] = useState<SessionSettings>({\n relationInferenceEnabled: false,\n prioritizeUnmappedTables: true,\n });\n const [draftSessionSettings, setDraftSessionSettings] = useState<SessionSettings>(sessionSettings);\n const drawerBootstrapTimerRef = useRef<number | null>(null);\n\n const [\n previewMapping,\n { isLoading: isPreviewMappingLoading },\n ] = usePreviewDatasourceIntrospectionMappingMutation();\n\n const [\n applyMapping,\n { isLoading: isApplyMappingLoading },\n ] = useApplyDatasourceIntrospectionMappingMutation();\n const [\n createMigrationArtifacts,\n { isLoading: isCreateMigrationArtifactsLoading },\n ] = useCreateDatasourceIntrospectionMigrationArtifactsMutation();\n const [\n generateCode,\n { isLoading: isGenerateCodeLoading },\n ] = useGenerateDatasourceIntrospectionCodeMutation();\n const [\n runMigration,\n { isLoading: isRunMigrationLoading },\n ] = useRunDatasourceIntrospectionMigrationMutation();\n\n const isSavingMapping = isApplyMappingLoading;\n const isCreatingMigrationArtifacts = isCreateMigrationArtifactsLoading;\n\n const showFieldDraftToaster = (message: any, severity: any) => {\n const errorMessages = Object.values(message ?? {});\n if (!errorMessages.length) return;\n dispatch(showToast({\n severity,\n summary: \"Datasource introspection\",\n detail: errorMessages.map(String).join(\", \"),\n life: 3000,\n }));\n };\n\n useEffect(() => {\n if (!bootstrap) return;\n if (selectedDatasource) return;\n if (bootstrap.recommendedDatasourceName) {\n setSelectedDatasource(bootstrap.recommendedDatasourceName);\n }\n }, [bootstrap, selectedDatasource]);\n\n useEffect(() => {\n setSelectedRows([]);\n setWorkspaceTableKey(\"\");\n setDrawerDraft(null);\n setFieldConfigColumnName(null);\n setTableSearch(\"\");\n setWorkspaceStep(\"configure\");\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`datasource-${Date.now()}`);\n }, [selectedDatasource]);\n\n useEffect(() => () => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n }, []);\n\n const datasourceOptions = useMemo(\n () => (bootstrap?.datasources ?? []).map((datasource) => ({\n label: `${datasource.displayName} (${providerLabel(datasource.type)})`,\n value: datasource.name,\n })),\n [bootstrap],\n );\n\n const {\n data: tablesResponse,\n isLoading: isTablesLoading,\n isFetching: isTablesFetching,\n error: tablesError,\n refetch: refetchTables,\n } = useGetDatasourceIntrospectionTablesQuery(\n { moduleId, datasource: selectedDatasource },\n {\n skip: !isValidModuleId || !selectedDatasource,\n },\n );\n\n const selectedListRow = selectedRows[0] ?? null;\n const selectedListRowKey = selectedListRow ? `${selectedListRow.schema ?? \"\"}::${selectedListRow.tableName}` : \"\";\n const isWorkspaceMode = Boolean(workspaceTableKey);\n\n const selectedTable = useMemo(\n () => tablesResponse?.records?.find((record) => `${record.schema ?? \"\"}::${record.tableName}` === workspaceTableKey) ?? null,\n [tablesResponse, workspaceTableKey],\n );\n\n const {\n data: tableDetail,\n isLoading: isTableDetailLoading,\n isFetching: isTableDetailFetching,\n error: tableDetailError,\n refetch: refetchTableDetail,\n } = useGetDatasourceIntrospectionTableDetailQuery(\n {\n moduleId,\n datasource: selectedDatasource,\n table: selectedTable?.tableName ?? \"\",\n schema: selectedTable?.schema ?? undefined,\n },\n {\n skip: !isWorkspaceMode || !isValidModuleId || !selectedDatasource || !selectedTable || !!tablesResponse?.synchronizeBlocked,\n },\n );\n\n const {\n data: mappedModelResponse,\n isLoading: isMappedModelLoading,\n isFetching: isMappedModelFetching,\n error: mappedModelError,\n } = useGetmodelByIdQuery(selectedTable?.mappedModelId ?? 0, {\n skip: !isWorkspaceMode || !selectedTable?.mapped || !selectedTable?.mappedModelId,\n });\n\n const mappedModelData = mappedModelResponse?.data;\n const selectedDatasourceRecord = bootstrap?.datasources?.find((datasource) => datasource.name === selectedDatasource) ?? null;\n const activeFieldConfigColumn = drawerDraft?.columns.find((column) => column.columnName === fieldConfigColumnName) ?? null;\n const activeFieldConfigMetaData = useMemo(() => {\n if (!drawerDraft || !activeFieldConfigColumn) {\n return null;\n }\n\n const configured = activeFieldConfigColumn.fieldConfig ?? {};\n const suggestedMax =\n activeFieldConfigColumn.characterMaximumLength && [\"shortText\", \"longText\"].includes(activeFieldConfigColumn.solidFieldType)\n ? activeFieldConfigColumn.characterMaximumLength\n : configured.max;\n\n return {\n ...configured,\n ...(activeFieldConfigColumn.fieldId ? { id: activeFieldConfigColumn.fieldId } : {}),\n name: activeFieldConfigColumn.fieldName,\n displayName: activeFieldConfigColumn.displayName,\n description: configured.description ?? activeFieldConfigColumn.displayName,\n type: activeFieldConfigColumn.solidFieldType,\n ormType: activeFieldConfigColumn.ormType,\n columnName: activeFieldConfigColumn.columnName,\n defaultValue: configured.defaultValue ?? activeFieldConfigColumn.defaultValue ?? undefined,\n required: configured.required ?? (!activeFieldConfigColumn.nullable || activeFieldConfigColumn.isPrimaryKey),\n unique: configured.unique ?? false,\n encrypt: configured.encrypt ?? false,\n index: configured.index ?? false,\n max: suggestedMax ?? undefined,\n min: configured.min ?? undefined,\n private: configured.private ?? false,\n isSystem: false,\n isPrimaryKey: activeFieldConfigColumn.isPrimaryKey,\n isUserKey: drawerDraft.userKeyField === activeFieldConfigColumn.fieldName,\n enableAuditTracking: configured.enableAuditTracking ?? drawerDraft.enableAuditTracking,\n isMultiSelect: configured.isMultiSelect ?? false,\n length: configured.length ?? activeFieldConfigColumn.characterMaximumLength ?? undefined,\n };\n }, [activeFieldConfigColumn, drawerDraft]);\n const fieldDraftAllFields = useMemo(() => {\n if (!drawerDraft || !activeFieldConfigColumn) {\n return [];\n }\n\n return drawerDraft.columns\n .filter((column) => column.columnName !== activeFieldConfigColumn.columnName)\n .map((column) => ({\n id: column.fieldId ?? undefined,\n name: column.fieldName,\n displayName: column.displayName,\n type: column.solidFieldType,\n columnName: column.columnName,\n }));\n }, [activeFieldConfigColumn, drawerDraft]);\n const drawerLoadingError = selectedTable?.mapped ? (tableDetailError || mappedModelError) : tableDetailError;\n const isDrawerBlockingLoading = Boolean(\n selectedTable\n && (\n drawerBootstrapping\n || !drawerDraft\n || isTableDetailLoading\n || isTableDetailFetching\n || (selectedTable.mapped && (isMappedModelLoading || isMappedModelFetching))\n ),\n );\n\n useEffect(() => {\n if (!isWorkspaceMode) {\n setDrawerDraft(null);\n setFieldConfigColumnName(null);\n return;\n }\n\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setDrawerDraft(null);\n setFieldConfigColumnName(null);\n setDrawerTab(\"general-info\");\n setWorkspaceStep(\"configure\");\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`table-${workspaceTableKey}-${Date.now()}`);\n setDrawerBootstrapping(true);\n }, [isWorkspaceMode, workspaceTableKey]);\n\n useEffect(() => {\n if (!isWorkspaceMode || !selectedTable) return;\n setSelectedRows([selectedTable]);\n }, [isWorkspaceMode, selectedTable]);\n\n useEffect(() => {\n if (!isWorkspaceMode || !selectedTable || !tableDetail) return;\n if (selectedTable.mapped && (!mappedModelData || mappedModelData.id !== selectedTable.mappedModelId)) return;\n\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setDrawerDraft(buildDrawerDraft(\n tableDetail,\n selectedTable,\n selectedTable.mapped ? mappedModelResponse : undefined,\n ));\n drawerBootstrapTimerRef.current = window.setTimeout(() => {\n setDrawerBootstrapping(false);\n }, 150);\n }, [isWorkspaceMode, selectedTable, tableDetail, mappedModelData, mappedModelResponse]);\n\n const filteredRecords = useMemo(() => {\n const records = [...(tablesResponse?.records ?? [])];\n const searchNeedle = tableSearch.trim().toLowerCase();\n\n const filtered = searchNeedle\n ? records.filter((record) => {\n const haystack = `${record.tableName} ${record.schema ?? \"\"} ${record.mappedModelSingularName ?? \"\"} ${record.mappedModelDisplayName ?? \"\"} ${record.mappedModuleName ?? \"\"} ${record.mappedModuleDisplayName ?? \"\"}`.toLowerCase();\n return haystack.includes(searchNeedle);\n })\n : records;\n\n if (sessionSettings.prioritizeUnmappedTables) {\n filtered.sort((left, right) => {\n if (left.mapped !== right.mapped) {\n return left.mapped ? 1 : -1;\n }\n\n const leftLabel = `${left.schema ?? \"\"}.${left.tableName}`.toLowerCase();\n const rightLabel = `${right.schema ?? \"\"}.${right.tableName}`.toLowerCase();\n return leftLabel.localeCompare(rightLabel);\n });\n }\n\n return filtered;\n }, [sessionSettings.prioritizeUnmappedTables, tableSearch, tablesResponse?.records]);\n\n const drawerUserKeyOptions = useMemo(() => {\n const options = new Map<string, { label: string; value: string }>();\n\n tableDetail?.userKeyCandidates?.forEach((candidate) => {\n options.set(candidate.name, {\n label: `${candidate.label} · ${candidate.reason}`,\n value: candidate.name,\n });\n });\n\n drawerDraft?.columns\n .filter((column) => !column.handledBySuperclass && column.include)\n .forEach((column) => {\n if (!options.has(column.fieldName)) {\n options.set(column.fieldName, {\n label: `${column.fieldName} · mapped from ${column.columnName}`,\n value: column.fieldName,\n });\n }\n });\n\n return Array.from(options.values());\n }, [drawerDraft?.columns, tableDetail?.userKeyCandidates]);\n\n const settingsTabs = [\n {\n value: \"datasource-info\",\n label: \"Datasource Info\",\n content: (\n <div className=\"sdix-settings-grid\">\n <div className=\"sdix-settings-static\">\n <span>Target module</span>\n <strong>{bootstrap?.module?.displayName}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Default datasource</span>\n <strong>{bootstrap?.module?.defaultDataSource || \"Not set\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Datasource name</span>\n <strong>{selectedDatasourceRecord?.displayName || \"Not selected\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Datasource type</span>\n <strong>{selectedDatasourceRecord ? providerLabel(selectedDatasourceRecord.type) : \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Host</span>\n <strong>{selectedDatasourceRecord?.host || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Port</span>\n <strong>{selectedDatasourceRecord?.port ?? \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Database</span>\n <strong>{selectedDatasourceRecord?.database || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Env Prefix</span>\n <strong>{selectedDatasourceRecord?.envPrefix || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Synchronize</span>\n <strong>{selectedDatasourceRecord ? (selectedDatasourceRecord.synchronize === true ? \"true\" : \"false\") : \"-\"}</strong>\n </div>\n </div>\n ),\n },\n {\n value: \"session-settings\",\n label: \"Session Settings\",\n content: (\n <div className=\"sdix-settings-grid\">\n <div className=\"sdix-settings-row\">\n <div>\n <label>Relation inference</label>\n <p>Keep this off until we deliberately introduce relation discovery across engines.</p>\n </div>\n <SolidSwitch\n checked={draftSessionSettings.relationInferenceEnabled}\n onChange={(checked) => setDraftSessionSettings((current) => ({ ...current, relationInferenceEnabled: checked }))}\n />\n </div>\n\n <div className=\"sdix-settings-row\">\n <div>\n <label>Prioritize unmapped tables</label>\n <p>Bubble unmapped tables to the top of the inventory so the first pass stays focused.</p>\n </div>\n <SolidSwitch\n checked={draftSessionSettings.prioritizeUnmappedTables}\n onChange={(checked) => setDraftSessionSettings((current) => ({ ...current, prioritizeUnmappedTables: checked }))}\n />\n </div>\n </div>\n ),\n },\n ];\n\n const handleRefresh = async () => {\n await refetchBootstrap();\n if (selectedDatasource) {\n await refetchTables();\n }\n if (isWorkspaceMode && selectedTable) {\n await refetchTableDetail();\n }\n };\n\n const startMappingForRecord = (record: DatasourceIntrospectionTableRecord) => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setSelectedRows([record]);\n setWorkspaceTableKey(`${record.schema ?? \"\"}::${record.tableName}`);\n };\n\n const leaveWorkspace = () => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setWorkspaceTableKey(\"\");\n setDrawerDraft(null);\n setFieldConfigColumnName(null);\n setWorkspaceStep(\"configure\");\n setDrawerTab(\"general-info\");\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`workspace-closed-${Date.now()}`);\n setDrawerBootstrapping(false);\n };\n\n const applyDraftSettings = () => {\n setSessionSettings(draftSessionSettings);\n setSettingsOpen(false);\n };\n\n const updateDrawerDraft = (updater: (current: DrawerDraft) => DrawerDraft) => {\n setMappingPreview(null);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setDrawerDraft((current) => (current ? updater(current) : current));\n };\n\n const updateGeneralField = (field: keyof DrawerDraft, value: any) => {\n updateDrawerDraft((current) => ({ ...current, [field]: value }));\n };\n\n const updateColumnFieldName = (columnName: string, nextFieldName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n\n const previousSuggestedLabel = startCase(column.fieldName);\n const nextNormalizedFieldName = camelCase(nextFieldName);\n const nextFieldConfig = column.fieldConfig\n ? {\n ...column.fieldConfig,\n name: nextNormalizedFieldName,\n displayName: !column.displayName.trim() || column.displayName === previousSuggestedLabel\n ? startCase(nextNormalizedFieldName)\n : column.displayName,\n isUserKey: current.userKeyField === column.fieldName,\n isPrimaryKey: column.isPrimaryKey,\n }\n : column.fieldConfig;\n return {\n ...column,\n fieldName: nextNormalizedFieldName,\n displayName: !column.displayName.trim() || column.displayName === previousSuggestedLabel\n ? startCase(nextNormalizedFieldName)\n : column.displayName,\n fieldConfig: nextFieldConfig,\n };\n }),\n userKeyField: current.userKeyField === current.columns.find((column) => column.columnName === columnName)?.fieldName\n ? camelCase(nextFieldName)\n : current.userKeyField,\n }));\n };\n\n const updateColumnDisplayName = (columnName: string, nextDisplayName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => (\n column.columnName === columnName\n ? {\n ...column,\n displayName: nextDisplayName,\n fieldConfig: column.fieldConfig\n ? {\n ...column.fieldConfig,\n displayName: nextDisplayName,\n }\n : column.fieldConfig,\n }\n : column\n )),\n }));\n };\n\n const updateColumnSolidFieldType = (columnName: string, nextSolidFieldType: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n if (column.handledBySuperclass) return column;\n\n return {\n ...column,\n solidFieldType: nextSolidFieldType,\n ormType: getDefaultOrmTypeForSolidFieldType(current.dataSourceType, nextSolidFieldType),\n fieldConfig: column.fieldConfig\n ? {\n ...column.fieldConfig,\n type: nextSolidFieldType,\n ormType: getDefaultOrmTypeForSolidFieldType(current.dataSourceType, nextSolidFieldType),\n }\n : column.fieldConfig,\n };\n }),\n }));\n };\n\n const openFieldConfigEditor = (columnName: string) => {\n setFieldConfigColumnName(columnName);\n };\n\n const applyFieldConfigDraft = (columnName: string, nextFieldConfig: Record<string, any>) => {\n const sanitized = sanitizeExistingFieldPayload(nextFieldConfig);\n updateDrawerDraft((current) => {\n const currentColumn = current.columns.find((column) => column.columnName === columnName);\n if (!currentColumn) {\n return current;\n }\n\n const nextFieldName = typeof sanitized.name === \"string\" && sanitized.name.trim()\n ? sanitized.name.trim()\n : currentColumn.fieldName;\n const nextDisplayName = typeof sanitized.displayName === \"string\" && sanitized.displayName.trim()\n ? sanitized.displayName.trim()\n : currentColumn.displayName;\n const nextSolidFieldType = typeof sanitized.type === \"string\" && sanitized.type.trim()\n ? sanitized.type.trim()\n : currentColumn.solidFieldType;\n const nextOrmType = typeof sanitized.ormType === \"string\" && sanitized.ormType.trim()\n ? sanitized.ormType.trim()\n : getDefaultOrmTypeForSolidFieldType(current.dataSourceType, nextSolidFieldType);\n const nextUserKeyField = current.userKeyField === currentColumn.fieldName\n ? nextFieldName\n : current.userKeyField;\n\n return {\n ...current,\n userKeyField: nextUserKeyField,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) {\n return column.fieldConfig\n ? {\n ...column,\n fieldConfig: {\n ...column.fieldConfig,\n isUserKey: column.fieldName === nextUserKeyField,\n },\n }\n : column;\n }\n\n return {\n ...column,\n fieldName: nextFieldName,\n displayName: nextDisplayName,\n solidFieldType: nextSolidFieldType,\n ormType: nextOrmType,\n fieldConfig: {\n ...sanitized,\n name: nextFieldName,\n displayName: nextDisplayName,\n type: nextSolidFieldType,\n ormType: nextOrmType,\n columnName: column.columnName,\n isPrimaryKey: column.isPrimaryKey,\n isUserKey: nextUserKeyField === nextFieldName,\n },\n };\n }),\n };\n });\n setFieldConfigColumnName(null);\n };\n\n const updateLegacyTableType = (legacyTableType: \"none\" | \"existing_id\" | \"generated_id\") => {\n updateDrawerDraft((current) => {\n const renamedUserKeyColumns = new Map<string, string>();\n\n const columns = current.columns.map((column) => {\n const nextSuperclassFieldName = getSuperclassFieldNameForLegacyType(column.columnName, legacyTableType);\n const nextHandledBySuperclass = Boolean(nextSuperclassFieldName);\n const nextSuggestedFieldName = getSuggestedFieldNameForLegacyType(column, legacyTableType);\n const shouldRebuildFieldName = column.handledBySuperclass !== nextHandledBySuperclass\n || (legacyTableType === \"existing_id\" && column.isAutoGenerated && (column.fieldName === \"id\" || column.fieldName === \"legacyId\"))\n || (legacyTableType === \"generated_id\" && column.columnName.toLowerCase() === \"id\");\n const nextFieldName = shouldRebuildFieldName ? nextSuggestedFieldName : column.fieldName;\n const nextDisplayName = !column.displayName.trim() || column.displayName === startCase(column.fieldName)\n ? startCase(nextFieldName)\n : column.displayName;\n const nextInclude = nextHandledBySuperclass\n ? false\n : (legacyTableType === \"existing_id\" && column.isAutoGenerated ? true : column.include);\n const nextIsPrimaryKey = (\n legacyTableType === \"existing_id\" && column.isAutoGenerated && nextFieldName === \"id\"\n ) || (\n legacyTableType === \"generated_id\" && column.isDetectedPrimaryKey\n );\n\n if (current.userKeyField === column.fieldName && current.userKeyField !== nextFieldName) {\n renamedUserKeyColumns.set(column.fieldName, nextFieldName);\n }\n\n return {\n ...column,\n fieldName: nextFieldName,\n displayName: nextDisplayName,\n handledBySuperclass: nextHandledBySuperclass,\n superclassFieldName: nextSuperclassFieldName,\n include: nextInclude,\n isPrimaryKey: nextIsPrimaryKey,\n fieldConfig: column.fieldConfig\n ? {\n ...column.fieldConfig,\n name: nextFieldName,\n displayName: nextDisplayName,\n isPrimaryKey: nextIsPrimaryKey,\n }\n : column.fieldConfig,\n };\n });\n\n return {\n ...current,\n legacyTableType,\n baseClassName: getBaseClassNameForLegacyType(legacyTableType),\n columns,\n userKeyField: renamedUserKeyColumns.get(current.userKeyField) ?? current.userKeyField,\n };\n });\n };\n\n const setColumnIncluded = (columnName: string, include: boolean) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n if (column.handledBySuperclass || column.isPrimaryKey) return column;\n return { ...column, include };\n }),\n }));\n };\n\n const changeUserKeyField = (fieldName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n userKeyField: fieldName,\n columns: current.columns.map((column) => {\n const isUserKey = column.fieldName === fieldName;\n return {\n ...column,\n include: isUserKey ? (column.handledBySuperclass ? false : true) : column.include,\n fieldConfig: column.fieldConfig\n ? {\n ...column.fieldConfig,\n isUserKey,\n }\n : column.fieldConfig,\n };\n }),\n }));\n };\n\n const setUnmappedColumnsIncluded = (include: boolean) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.handledBySuperclass || column.matched || column.isPrimaryKey) {\n return column;\n }\n return { ...column, include };\n }),\n }));\n };\n\n const openMappedModelForm = () => {\n const targetModelId = drawerDraft?.modelId ?? selectedTable?.mappedModelId;\n if (!targetModelId) return;\n window.open(`/admin/core/solid-core/model-metadata/form/${targetModelId}`, \"_blank\", \"noopener,noreferrer\");\n };\n\n const reviewMappingJson = async () => {\n if (!drawerDraft || !bootstrap?.module?.id) return;\n\n const validationErrors = getDrawerValidationErrors(drawerDraft);\n if (validationErrors.length) {\n validationErrors.forEach((detail) => {\n dispatch(showToast({ severity: \"error\", summary: \"Validation\", detail }));\n });\n return;\n }\n\n try {\n const preview = await previewMapping({\n moduleId: bootstrap.module.id,\n payload: buildMappingRequest(drawerDraft),\n }).unwrap();\n\n setMappingPreview(preview);\n setReviewedMetadataJsonValue(preview.metadataJson.model);\n setMetadataJsonText(JSON.stringify(preview.metadataJson.model, null, 2));\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`preview-${preview.metadataJson.filePath}-${Date.now()}`);\n setPersistedMappingResult(null);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setRunMigrationOutput(\"\");\n setWorkspaceStep(\"review-json\");\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Preview failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const persistMappingArtifacts = async () => {\n if (!drawerDraft || !bootstrap?.module?.id) return;\n\n const validationErrors = getDrawerValidationErrors(drawerDraft);\n if (validationErrors.length) {\n validationErrors.forEach((detail) => {\n dispatch(showToast({ severity: \"error\", summary: \"Validation\", detail }));\n });\n setWorkspaceStep(\"configure\");\n return;\n }\n\n const reviewedModelValidation = parseAndValidateReviewedModelJson(metadataJsonText, drawerDraft);\n if (reviewedModelValidation.error || !reviewedModelValidation.parsed) {\n setMetadataJsonValidationError(reviewedModelValidation.error ?? \"Metadata JSON is invalid.\");\n setWorkspaceStep(\"review-json\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Validation\",\n detail: reviewedModelValidation.error ?? \"Metadata JSON is invalid.\",\n }));\n return;\n }\n\n setMetadataJsonValidationError(null);\n\n try {\n const response = await applyMapping({\n moduleId: bootstrap.module.id,\n payload: {\n ...buildMappingRequest(drawerDraft, mappingPreview?.migration.timestamp ?? null),\n reviewedModel: reviewedModelValidation.parsed,\n },\n }).unwrap();\n\n dispatch(showToast({\n severity: \"success\",\n summary: \"Mapping saved\",\n detail: drawerDraft.mapped\n ? \"The model mapping metadata was updated successfully.\"\n : \"The model mapping metadata was created successfully.\",\n }));\n\n setPersistedMappingResult(response);\n setMigrationArtifactsResult(null);\n setGenerateCodeOutput(\"\");\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n setHasAttemptedGenerateCode(false);\n setRunMigrationOutput(\"\");\n setRunMigrationCompleted(false);\n setDrawerDraft((current) => (\n current\n ? {\n ...current,\n mapped: true,\n modelId: response.modelId,\n }\n : current\n ));\n setWorkspaceStep(\"generate-code\");\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Save failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const handleGenerateCode = async () => {\n if (!bootstrap?.module?.id) return;\n\n setHasAttemptedGenerateCode(true);\n setRunMigrationCompleted(false);\n setIsGeneratingCodeWorkflow(true);\n setGenerateCodeStatusMessage(\"Submitting module generate-code request...\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n let responseMessage = \"\";\n\n try {\n const response = await generateCode({ moduleId: bootstrap.module.id }).unwrap();\n responseMessage = response.output || response.message || \"\";\n setGenerateCodeOutput(responseMessage);\n setGenerateCodeStatusMessage(\"Waiting briefly for the backend restart window...\");\n } catch (error: any) {\n if (!isRecoverableGenerateCodeError(error)) {\n setIsGeneratingCodeWorkflow(false);\n setGenerateCodeStatusMessage(\"\");\n setGenerateCodeTimeoutMessage(null);\n setGenerateCodeReady(false);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Generate code failed\",\n detail: readQueryError(error),\n }));\n return;\n }\n\n setGenerateCodeStatusMessage(\"The API connection dropped during restart. Waiting for the backend to come back online...\");\n }\n\n await new Promise((resolve) => window.setTimeout(resolve, 5000));\n setGenerateCodeStatusMessage(\"Checking if the backend is back online...\");\n\n const isBackendAvailable = await waitForBackendAvailability({\n retries: 40,\n delayMs: 1500,\n });\n\n setIsGeneratingCodeWorkflow(false);\n\n if (!isBackendAvailable) {\n setGenerateCodeTimeoutMessage(\n \"Code generation took longer than expected. The backend did not come back within 60 seconds, so there may be a compilation failure or another startup issue. Please review the generated code manually and check the API logs before continuing.\",\n );\n dispatch(showToast({\n severity: \"warn\",\n summary: \"Backend restart taking too long\",\n detail: \"The generate-code request completed, but the backend did not come back within 60 seconds.\",\n }));\n return;\n }\n\n setGenerateCodeStatusMessage(\"Backend is back online. You can continue.\");\n setGenerateCodeReady(true);\n setMigrationArtifactsResult(null);\n setRunMigrationOutput(\"\");\n dispatch(showToast({\n severity: \"success\",\n summary: \"Code generated\",\n detail: responseMessage || \"The backend is back online. You can continue to the migration artifacts step.\",\n }));\n };\n\n const handleCreateMigrationArtifacts = async () => {\n if (!drawerDraft || !bootstrap?.module?.id || !persistedMappingResult?.modelId) return;\n\n const reviewedModelValidation = parseAndValidateReviewedModelJson(metadataJsonText, drawerDraft);\n if (reviewedModelValidation.error || !reviewedModelValidation.parsed) {\n setMetadataJsonValidationError(reviewedModelValidation.error ?? \"Metadata JSON is invalid.\");\n setWorkspaceStep(\"review-json\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Validation\",\n detail: reviewedModelValidation.error ?? \"Metadata JSON is invalid.\",\n }));\n return;\n }\n\n try {\n const response = await createMigrationArtifacts({\n moduleId: bootstrap.module.id,\n payload: {\n ...buildMappingRequest(\n {\n ...drawerDraft,\n mapped: true,\n modelId: persistedMappingResult.modelId,\n },\n mappingPreview?.migration.timestamp ?? null,\n ),\n reviewedModel: reviewedModelValidation.parsed,\n },\n }).unwrap();\n\n setMigrationArtifactsResult(response);\n setWorkspaceStep(\"run-migration\");\n dispatch(showToast({\n severity: \"success\",\n summary: \"Migration artifacts created\",\n detail: response.migration.written\n ? \"The migration file and datasource registration were written successfully.\"\n : \"No migration file was required, but the datasource registration was updated successfully.\",\n }));\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Create migration artifacts failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const handleRunMigration = async () => {\n if (!bootstrap?.module?.id || !selectedDatasource) return;\n\n try {\n const response = await runMigration({\n moduleId: bootstrap.module.id,\n datasource: selectedDatasource,\n }).unwrap();\n\n setRunMigrationOutput(response.output || response.message || \"\");\n setRunMigrationCompleted(true);\n dispatch(showToast({\n severity: \"success\",\n summary: \"Migration workflow complete\",\n detail: response.message || `Migration, build, and seed ran successfully for datasource \"${selectedDatasource}\".`,\n }));\n\n await refetchTables();\n await refetchBootstrap();\n } catch (error: any) {\n setRunMigrationOutput(readQueryError(error));\n dispatch(showToast({\n severity: \"error\",\n summary: \"Run migration failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n if (!isValidModuleId) {\n return (\n <div className=\"sdix-page\">\n <div className=\"sdix-empty-state\">\n <ShieldAlert size={24} />\n <h2>Module not found</h2>\n <p>Open datasource introspection from a saved module so SolidX knows which module should receive the mapped models.</p>\n </div>\n </div>\n );\n }\n\n const stepSequence: WorkspaceStep[] = [\n \"configure\",\n \"review-json\",\n \"generate-code\",\n \"create-migrations\",\n \"run-migration\",\n ];\n const currentStepIndex = stepSequence.indexOf(workspaceStep);\n const stepperItems = [\n {\n key: \"configure\" as const,\n label: \"Configure Mapping\",\n complete: currentStepIndex > 0,\n active: workspaceStep === \"configure\",\n disabled: false,\n onClick: () => setWorkspaceStep(\"configure\"),\n },\n {\n key: \"review-json\" as const,\n label: \"Review Mapping JSON\",\n complete: currentStepIndex > 1,\n active: workspaceStep === \"review-json\",\n disabled: !mappingPreview,\n onClick: () => {\n if (mappingPreview) setWorkspaceStep(\"review-json\");\n },\n },\n {\n key: \"generate-code\" as const,\n label: \"Generate Code\",\n complete: currentStepIndex > 2,\n active: workspaceStep === \"generate-code\",\n disabled: !persistedMappingResult,\n onClick: () => {\n if (persistedMappingResult) setWorkspaceStep(\"generate-code\");\n },\n },\n {\n key: \"create-migrations\" as const,\n label: \"Create Migrations\",\n complete: currentStepIndex > 3,\n active: workspaceStep === \"create-migrations\",\n disabled: !hasAttemptedGenerateCode,\n onClick: () => {\n if (hasAttemptedGenerateCode) setWorkspaceStep(\"create-migrations\");\n },\n },\n {\n key: \"run-migration\" as const,\n label: \"Run Migration\",\n complete: false,\n active: workspaceStep === \"run-migration\",\n disabled: !migrationArtifactsResult,\n onClick: () => {\n if (migrationArtifactsResult) setWorkspaceStep(\"run-migration\");\n },\n },\n ];\n\n const selectableUnmappedColumns = drawerDraft?.columns.filter(\n (column) => !column.handledBySuperclass && !column.matched && !column.isPrimaryKey,\n ) ?? [];\n const allSelectableUnmappedIncluded = selectableUnmappedColumns.length > 0\n && selectableUnmappedColumns.every((column) => column.include);\n const drawerRawDdl = tableDetail?.rawDdl ?? null;\n const drawerTabs = drawerDraft ? [\n {\n value: \"general-info\",\n label: \"General Info\",\n content: (\n <div className=\"sdix-drawer-form\">\n <section className=\"sdix-form-section\">\n <h4 className=\"solid-form-layout-label\">Model Info</h4>\n <div className=\"sdix-form-grid\">\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-singular-name\">Singular Name</label>\n <SolidInput\n id=\"sdix-singular-name\"\n value={drawerDraft.singularName}\n onChange={(event) => updateGeneralField(\"singularName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-plural-name\">Plural Name</label>\n <SolidInput\n id=\"sdix-plural-name\"\n value={drawerDraft.pluralName}\n onChange={(event) => updateGeneralField(\"pluralName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-display-name\">Display Name</label>\n <SolidInput\n id=\"sdix-display-name\"\n value={drawerDraft.displayName}\n onChange={(event) => updateGeneralField(\"displayName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-user-key-field\">User Key Field</label>\n <SolidSelect\n id=\"sdix-user-key-field\"\n value={drawerDraft.userKeyField}\n options={drawerUserKeyOptions}\n placeholder=\"Select user key field\"\n onChange={(event) => changeUserKeyField(event.value)}\n />\n </div>\n <div className=\"sdix-form-field sdix-form-field--full\">\n <label htmlFor=\"sdix-description\">Description</label>\n <SolidTextarea\n className=\"sdix-description-textarea\"\n id=\"sdix-description\"\n rows={2}\n value={drawerDraft.description}\n onChange={(event) => updateGeneralField(\"description\", event.target.value)}\n />\n </div>\n </div>\n </section>\n\n <section className=\"sdix-form-section\">\n <h4 className=\"solid-form-layout-label\">Datasource Binding</h4>\n <div className=\"sdix-form-grid\">\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-table-name\">Table Name</label>\n <SolidInput\n id=\"sdix-table-name\"\n value={drawerDraft.tableName}\n onChange={(event) => updateGeneralField(\"tableName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-schema-name\">Schema</label>\n <SolidInput\n id=\"sdix-schema-name\"\n value={drawerDraft.schema ?? \"default\"}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-datasource-name\">Datasource</label>\n <SolidInput\n id=\"sdix-datasource-name\"\n value={drawerDraft.dataSource}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-datasource-type\">Provider</label>\n <SolidInput\n id=\"sdix-datasource-type\"\n value={providerLabel(drawerDraft.dataSourceType)}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-legacy-type\">Mapping Strategy</label>\n <SolidSelect\n id=\"sdix-legacy-type\"\n value={drawerDraft.legacyTableType}\n options={mappingStrategyOptions}\n onChange={(event) => updateLegacyTableType(event.value)}\n />\n <small className=\"sdix-inline-note\">\n This will use <strong>{drawerDraft.baseClassName}</strong> for the generated entity.\n </small>\n </div>\n </div>\n </section>\n </div>\n ),\n },\n {\n value: \"columns-mapping\",\n label: \"Columns Mapping\",\n content: (\n <div className=\"sdix-columns\">\n <div className=\"sdix-columns__toolbar\">\n <div className=\"sdix-columns__legend\" aria-label=\"Column legend\">\n <span className=\"sdix-status-badge is-superclass\">System column</span>\n <span className=\"sdix-status-badge is-muted\">Application column</span>\n </div>\n </div>\n <div className=\"sdix-column-table\">\n <div className=\"sdix-column-row sdix-column-row--head sdix-column-row--mapping\">\n <span className=\"sdix-column-select-header\">\n {selectableUnmappedColumns.length ? (\n <SolidCheckbox\n checked={allSelectableUnmappedIncluded}\n onChange={(event) => setUnmappedColumnsIncluded(event.target.checked)}\n aria-label={allSelectableUnmappedIncluded ? \"Deselect all unmapped columns\" : \"Select all unmapped columns\"}\n />\n ) : (\n \"Include\"\n )}\n </span>\n <span>Column</span>\n <span>Field</span>\n <span>Label</span>\n <span>Database</span>\n <span>SolidX</span>\n <span>Status</span>\n <span>Action</span>\n </div>\n {drawerDraft.columns.map((column) => {\n const isUserKey = drawerDraft.userKeyField === column.fieldName;\n const isPrimaryKeyField = column.isPrimaryKey;\n const statusClassName = column.handledBySuperclass\n ? \"is-superclass\"\n : column.include\n ? column.matched\n ? \"is-mapped\"\n : \"is-unmapped\"\n : \"is-muted\";\n\n const statusText = column.handledBySuperclass\n ? \"System\"\n : column.include\n ? column.matched\n ? \"Mapped\"\n : \"Queued for save\"\n : column.matched\n ? \"Currently omitted\"\n : \"Skipped for now\";\n\n return (\n <div key={column.columnName} className=\"sdix-column-row sdix-column-row--mapping\">\n <span className=\"sdix-column-include\">\n {column.handledBySuperclass ? (\n <span className=\"sdix-column-placeholder\">-</span>\n ) : column.matched ? (\n <span className=\"sdix-column-placeholder\">-</span>\n ) : column.isPrimaryKey ? (\n <SolidCheckbox checked disabled aria-label=\"Required included column\" />\n ) : (\n <SolidCheckbox\n checked={column.include}\n onChange={(event) => setColumnIncluded(column.columnName, event.target.checked)}\n />\n )}\n </span>\n <span className=\"sdix-column-meta\">\n <strong>{column.columnName}</strong>\n {column.isAutoGenerated ? <small>Generated id column</small> : null}\n </span>\n <span>\n <SolidInput\n value={column.fieldName}\n disabled={column.handledBySuperclass}\n onChange={(event) => updateColumnFieldName(column.columnName, event.target.value)}\n />\n {isUserKey || isPrimaryKeyField ? (\n <div className=\"sdix-inline-note-stack\">\n {isUserKey ? <small className=\"sdix-inline-note\">User key</small> : null}\n {isPrimaryKeyField ? <small className=\"sdix-inline-note\">Primary key</small> : null}\n </div>\n ) : null}\n </span>\n <span>\n <SolidInput\n value={column.displayName}\n disabled={column.handledBySuperclass}\n onChange={(event) => updateColumnDisplayName(column.columnName, event.target.value)}\n />\n </span>\n <span className=\"sdix-column-meta\">\n <strong>{column.dataType}</strong>\n </span>\n <span>\n {column.handledBySuperclass ? (\n <span>{column.solidFieldType}</span>\n ) : (\n <SolidSelect\n value={column.solidFieldType}\n options={scalarFieldTypeOptions}\n onChange={(event) => updateColumnSolidFieldType(column.columnName, event.value)}\n />\n )}\n </span>\n <span>\n <span className={`sdix-status-badge ${statusClassName}`}>{statusText}</span>\n </span>\n <span className=\"sdix-column-action\">\n <div className=\"sdix-column-action-stack\">\n {!column.handledBySuperclass && (column.include || column.matched) ? (\n <SolidButton\n size=\"small\"\n variant=\"outline\"\n className=\"sdix-column-action-icon\"\n onClick={() => openFieldConfigEditor(column.columnName)}\n aria-label={`Configure ${column.fieldName || column.columnName} field`}\n >\n <Cog size={14} />\n </SolidButton>\n ) : null}\n {column.handledBySuperclass ? (\n <SolidButton size=\"small\" variant=\"outline\" disabled className=\"sdix-column-action-chip sdix-column-action-chip--managed\">\n Managed\n </SolidButton>\n ) : column.isPrimaryKey ? (\n <SolidButton size=\"small\" variant=\"outline\" disabled className=\"sdix-column-action-chip sdix-column-action-chip--required\">\n Required\n </SolidButton>\n ) : column.matched ? (\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setColumnIncluded(column.columnName, false)}>\n Remove mapping\n </SolidButton>\n ) : (\n <span className=\"sdix-column-placeholder\">-</span>\n )}\n </div>\n </span>\n </div>\n );\n })}\n </div>\n </div>\n ),\n },\n {\n value: \"raw-ddl\",\n label: \"Raw DDL\",\n content: (\n <div className=\"sdix-ddl-tab\">\n {drawerRawDdl?.available && drawerRawDdl.statement ? (\n <pre className=\"sdix-ddl-code\"><code>{drawerRawDdl.statement}</code></pre>\n ) : (\n <div className=\"sdix-empty-state is-inline sdix-ddl-empty\">\n <Database size={18} />\n <p>{drawerRawDdl?.note || \"DDL preview is not available for this table.\"}</p>\n </div>\n )}\n </div>\n ),\n },\n ] : [];\n\n const reviewJsonPanel = mappingPreview ? (\n <div className=\"sdix-review-panel sdix-review-panel--metadata\">\n <div className=\"sdix-review-meta sdix-review-meta--compact\">\n <span>Target file</span>\n <strong>{mappingPreview.metadataJson.filePath}</strong>\n </div>\n <SolidJsonEditor\n className=\"sdix-json-editor\"\n value={reviewedMetadataJsonValue ?? mappingPreview.metadataJson.model}\n resetToken={metadataJsonResetToken}\n onValueChange={(nextValue) => {\n setReviewedMetadataJsonValue(nextValue);\n if (metadataJsonValidationError) {\n setMetadataJsonValidationError(null);\n }\n }}\n onTextChange={(nextText) => {\n setMetadataJsonText(nextText);\n }}\n onErrorChange={setMetadataJsonValidationError}\n />\n {metadataJsonValidationError ? (\n <div className=\"sdix-json-validation-error\">\n <span>{metadataJsonValidationError}</span>\n </div>\n ) : null}\n </div>\n ) : null;\n\n const createMigrationsPanel = mappingPreview ? (\n <div className=\"sdix-review-panel sdix-review-panel--migration\">\n {mappingPreview.migration.willGenerate && mappingPreview.migration.filePath ? (\n <>\n <div className=\"sdix-review-meta sdix-review-meta--compact\">\n <span>Target file</span>\n <strong>{mappingPreview.migration.filePath}</strong>\n </div>\n <p className=\"sdix-review-note\">\n This migration preview is generated from the current mapping and stays read-only here. Moving ahead writes the migration file to disk and updates the datasource registration now that the entity code already exists.\n </p>\n {mappingPreview.migration.content ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{mappingPreview.migration.content}</code></pre>\n ) : null}\n </>\n ) : (\n <div className=\"sdix-empty-state is-inline sdix-ddl-empty\">\n <Database size={18} />\n <p>{mappingPreview.migration.note}</p>\n </div>\n )}\n </div>\n ) : null;\n\n const generateCodePanel = (\n <div className=\"sdix-stage-panel\">\n <div className=\"sdix-stage-panel__header\">\n <span className=\"sdix-stage-panel__eyebrow\">Step 3</span>\n <h3>Generate module code</h3>\n <p>The reviewed metadata JSON is now persisted. Run the normal SolidX module generation flow next so the entity, DTOs, repository, service, controller, and UI code are refreshed before we register the entity on the datasource and write the migration.</p>\n </div>\n <div className=\"sdix-stage-panel__body\">\n <div className=\"sdix-stage-panel__card\">\n <div className=\"sdix-stage-panel__card-title\">What happens here</div>\n <ul className=\"sdix-stage-panel__list\">\n <li>The module generate-code pipeline runs for <strong>{bootstrap?.module?.displayName}</strong>.</li>\n <li>The newly mapped model entity is generated inside the module source folder.</li>\n <li>Any existing generated assets for this module may be refreshed.</li>\n </ul>\n </div>\n <div className=\"sdix-stage-panel__actions\">\n <SolidButton\n leftIcon={<Sparkles size={14} />}\n loading={isGenerateCodeLoading || isGeneratingCodeWorkflow}\n disabled={isGenerateCodeLoading || isGeneratingCodeWorkflow}\n onClick={() => void handleGenerateCode()}\n >\n Generate Code\n </SolidButton>\n </div>\n {isGeneratingCodeWorkflow ? (\n <div className=\"sdix-empty-state is-inline sdix-stage-progress\">\n <SolidSpinner size={30} />\n <h3>Generating code</h3>\n <p>{generateCodeStatusMessage || \"Waiting for the backend to finish restarting...\"}</p>\n </div>\n ) : null}\n {!isGeneratingCodeWorkflow && generateCodeTimeoutMessage ? (\n <div className=\"sdix-error is-inline sdix-stage-progress sdix-stage-progress--warning\">\n <ShieldAlert size={22} />\n <h3>Manual review recommended</h3>\n <p>{generateCodeTimeoutMessage}</p>\n </div>\n ) : null}\n {generateCodeOutput ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{generateCodeOutput}</code></pre>\n ) : null}\n </div>\n </div>\n );\n\n const runMigrationPanel = (\n <div className=\"sdix-stage-panel\">\n {!runMigrationCompleted ? (\n <div className=\"sdix-stage-panel__header\">\n <span className=\"sdix-stage-panel__eyebrow\">Step 5</span>\n <h3>Run migration, build, and seed</h3>\n <p>With the datasource file updated and module code generated, SolidX can now run the TypeORM migration for the selected datasource, rebuild the project, and reseed the mapped module metadata.</p>\n </div>\n ) : null}\n <div className=\"sdix-stage-panel__body\">\n {!runMigrationCompleted ? (\n <div className=\"sdix-stage-panel__card\">\n <div className=\"sdix-stage-panel__card-title\">Commands</div>\n <pre className=\"sdix-stage-panel__command\"><code>{`npx @solidxai/solidctl@latest migration -d ${selectedDatasource} run\nnpx @solidxai/solidctl@latest build\nnpx @solidxai/solidctl@latest seed --modules-to-seed ${bootstrap?.module?.name || \"\"}`}</code></pre>\n </div>\n ) : null}\n {runMigrationCompleted ? (\n <div className=\"sdix-empty-state is-inline sdix-stage-progress\">\n <Check size={24} />\n <h3>Migration workflow finished</h3>\n <p>Review the command output below. When you are satisfied, click Finish to return to the model list.</p>\n </div>\n ) : null}\n {runMigrationOutput ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{runMigrationOutput}</code></pre>\n ) : null}\n </div>\n </div>\n );\n\n const workspaceContent = drawerDraft ? (() => {\n switch (workspaceStep) {\n case \"review-json\":\n return reviewJsonPanel;\n case \"create-migrations\":\n return createMigrationsPanel;\n case \"generate-code\":\n return generateCodePanel;\n case \"run-migration\":\n return runMigrationPanel;\n case \"configure\":\n default:\n return (\n <SolidTabGroup\n tabs={drawerTabs}\n value={drawerTab}\n onValueChange={setDrawerTab}\n className=\"sdix-drawer-tabs sdix-wizard-tabs\"\n panelClassName=\"sdix-drawer-tab-panel sdix-wizard-tab-panel\"\n />\n );\n }\n })() : null;\n\n const workspaceMeta = drawerDraft ? (() => {\n switch (workspaceStep) {\n case \"review-json\":\n return (\n <span>\n Review the generated metadata JSON before it is written to the module metadata file.\n </span>\n );\n case \"generate-code\":\n return persistedMappingResult ? (\n <span>\n Metadata JSON has been saved for\n {\" \"}\n <strong>{drawerDraft.displayName || drawerDraft.singularName}</strong>\n . Generate the module code next so the entity file exists before datasource registration is updated. Continue stays disabled until you attempt code generation at least once.\n </span>\n ) : (\n <span>Save the metadata JSON before generating code.</span>\n );\n case \"create-migrations\":\n return mappingPreview ? (\n <span>\n Create the migration artifacts for\n {\" \"}\n <strong>{mappingPreview.summary.includedColumnNames.length}</strong>\n {\" \"}\n mapped columns\n {mappingPreview.summary.generatedSystemColumnCount\n ? ` and ${mappingPreview.summary.generatedSystemColumnCount} SolidX system column migration changes`\n : \"\"}\n .\n </span>\n ) : null;\n case \"run-migration\":\n return runMigrationCompleted ? (\n <span>\n The migration, build, and seed workflow has completed for\n {\" \"}\n <strong>{selectedDatasource}</strong>\n . Review the output below and click Finish when you are ready to return to the model list.\n </span>\n ) : (\n <span>\n Run the migration, build, and seed workflow for\n {\" \"}\n <strong>{selectedDatasource}</strong>\n {\" \"}\n to apply the SolidX system columns on the legacy table and refresh the module metadata state.\n </span>\n );\n case \"configure\":\n default:\n return drawerDraft.mapped ? (\n <span>\n Editing mapped model\n {\" \"}\n <strong>{selectedTable?.mappedModelDisplayName || selectedTable?.mappedModelSingularName}</strong>\n {drawerDraft.mappedModuleLabel ? ` in ${drawerDraft.mappedModuleLabel}` : \"\"}\n </span>\n ) : (\n <span>Configure the field mapping draft before generating the metadata JSON preview.</span>\n );\n }\n })() : null;\n\n return (\n <div className=\"sdix-page\">\n {isBootstrapLoading ? (\n <div className=\"sdix-loading\">\n <SolidSpinner size={28} />\n <p>Loading introspection workspace...</p>\n </div>\n ) : bootstrapError ? (\n <div className=\"sdix-error\">\n <span>{readQueryError(bootstrapError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchBootstrap()}>\n Retry\n </SolidButton>\n </div>\n ) : (\n <>\n {!isWorkspaceMode ? (\n <div className=\"sdix-toolbar\">\n <div className=\"sdix-toolbar__left\">\n <div className=\"sdix-toolbar-search\">\n <Search size={15} />\n <SolidInput\n value={tableSearch}\n onChange={(event) => setTableSearch(event.target.value)}\n placeholder=\"Search tables\"\n disabled={!selectedDatasource}\n />\n </div>\n </div>\n\n <div className=\"sdix-toolbar__actions\">\n {isBootstrapFetching || isTablesFetching ? (\n <div className=\"sdix-inline-status\">\n <SolidSpinner size={16} />\n <span>Refreshing</span>\n </div>\n ) : null}\n <SolidButton\n size=\"small\"\n leftIcon={<Sparkles size={14} />}\n onClick={() => {\n if (selectedListRow) {\n startMappingForRecord(selectedListRow);\n }\n }}\n disabled={!selectedListRow}\n >\n Start Mapping\n </SolidButton>\n <SolidSelect\n value={selectedDatasource}\n options={datasourceOptions}\n placeholder=\"Datasource\"\n className=\"sdix-toolbar-select sdix-toolbar-select--compact\"\n onChange={(event) => setSelectedDatasource(event.value)}\n />\n <SolidButton\n size=\"small\"\n className=\"sdix-icon-button\"\n leftIcon={<RefreshCw size={16} />}\n onClick={() => void handleRefresh()}\n tooltip=\"Refresh\"\n aria-label=\"Refresh\"\n />\n <SolidButton\n size=\"small\"\n className=\"sdix-icon-button\"\n leftIcon={<Cog size={16} />}\n onClick={() => {\n setDraftSessionSettings(sessionSettings);\n setSettingsTab(\"datasource-info\");\n setSettingsOpen(true);\n }}\n tooltip=\"Session settings\"\n aria-label=\"Session settings\"\n />\n </div>\n </div>\n ) : null}\n\n {selectedDatasource && tablesResponse?.synchronizeBlocked ? (\n <div className=\"sdix-blocker\">\n <ShieldAlert size={20} />\n <div>\n <h3>Synchronize must be disabled before introspection</h3>\n <p>{tablesResponse.synchronizeMessage}</p>\n </div>\n </div>\n ) : null}\n\n {!isWorkspaceMode ? (\n <div className=\"sdix-workbench\">\n <div className=\"sdix-table-shell\">\n {!selectedDatasource ? (\n <div className=\"sdix-empty-state is-inline\">\n <Database size={22} />\n <p>Select a datasource to load its tables.</p>\n </div>\n ) : isTablesLoading ? (\n <div className=\"sdix-loading is-inline\">\n <SolidSpinner size={24} />\n <p>Inspecting datasource tables...</p>\n </div>\n ) : tablesError ? (\n <div className=\"sdix-error is-inline\">\n <span>{readQueryError(tablesError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchTables()}>\n Retry\n </SolidButton>\n </div>\n ) : !filteredRecords.length ? (\n <div className=\"sdix-empty-state is-inline\">\n <Database size={22} />\n <p>{tableSearch ? \"No tables match the current quick filter.\" : \"No database tables were discovered for this datasource.\"}</p>\n </div>\n ) : (\n <div className=\"sdix-table-area\">\n <SolidDataTable\n value={filteredRecords}\n dataKey=\"tableName\"\n viewportHeight=\"calc(100vh - 162px)\"\n size=\"small\"\n onRowClick={({ data }) => setSelectedRows([data])}\n rowClassName={(rowData) => `${rowData.schema ?? \"\"}::${rowData.tableName}` === selectedListRowKey ? \"sdix-table-row-selected\" : \"\"}\n emptyMessage=\"No datasource tables found\"\n >\n <Column\n header=\"\"\n body={(rowData: DatasourceIntrospectionTableRecord) => {\n const rowKey = `${rowData.schema ?? \"\"}::${rowData.tableName}`;\n return (\n <div className=\"sdix-selection-cell\" data-no-row-click=\"true\">\n <SolidCheckbox\n checked={rowKey === selectedListRowKey}\n onChange={(event) => setSelectedRows(event.target.checked ? [rowData] : [])}\n />\n </div>\n );\n }}\n style={{ width: 52, minWidth: 52 }}\n />\n <Column\n field=\"tableName\"\n header=\"Table\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n <div className=\"sdix-table-primary-cell\">\n <strong>{rowData.tableName}</strong>\n </div>\n )}\n style={{ minWidth: 240 }}\n />\n <Column field=\"schema\" header=\"Schema\" body={(rowData: DatasourceIntrospectionTableRecord) => rowData.schema || \"dbo/default\"} style={{ minWidth: 120 }} />\n <Column\n header=\"Status\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n <span\n className={`sdix-status-badge ${rowData.mapped ? \"is-mapped\" : \"is-unmapped\"}`}\n >\n {statusLabel(rowData)}\n </span>\n )}\n style={{ minWidth: 150 }}\n />\n <Column\n header=\"Superclass\"\n body={(rowData: DatasourceIntrospectionTableRecord) => rowData.suggestedBaseClassName}\n style={{ minWidth: 220 }}\n />\n <Column field=\"suggestedUserKeyField\" header=\"User Key\" style={{ minWidth: 160 }} />\n <Column\n header=\"Mapped Model\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n rowData.mapped\n ? (\n <div className=\"sdix-table-primary-cell\">\n <strong>{rowData.mappedModelDisplayName || rowData.mappedModelSingularName || \"-\"}</strong>\n {rowData.mappedModuleDisplayName || rowData.mappedModuleName ? (\n <span>{rowData.mappedModuleDisplayName || rowData.mappedModuleName}</span>\n ) : null}\n </div>\n )\n : <span className=\"sdix-muted-cell\">Not mapped</span>\n )}\n style={{ minWidth: 200 }}\n />\n <Column\n header=\"System Columns\"\n body={(rowData: DatasourceIntrospectionTableRecord) => Math.max(rowData.columnCount - rowData.physicalColumnCount, 0)}\n style={{ minWidth: 130 }}\n />\n <Column\n header=\"Columns\"\n body={(rowData: DatasourceIntrospectionTableRecord) => rowData.physicalColumnCount}\n style={{ minWidth: 110 }}\n />\n </SolidDataTable>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div className=\"sdix-workspace-screen\">\n <div className=\"sdix-workspace-header\">\n <SolidButton size=\"small\" variant=\"outline\" leftIcon={<ArrowLeft size={14} />} onClick={leaveWorkspace}>\n Back\n </SolidButton>\n <div className=\"sdix-workspace-header__identity sdix-workspace-header__identity--right\">\n <h2>{selectedTable?.tableName || \"Mapping workspace\"}</h2>\n <p>\n {selectedTable\n ? `${selectedTable.schema || \"dbo\"} · ${selectedDatasourceRecord?.database || selectedDatasourceRecord?.displayName || \"Datasource\"}${selectedDatasourceRecord ? ` · ${providerLabel(selectedDatasourceRecord.type)}` : \"\"}`\n : \"Complete the legacy table mapping in a dedicated workspace.\"}\n </p>\n </div>\n </div>\n\n {!selectedTable && !isTablesLoading ? (\n <div className=\"sdix-error\">\n <span>The selected table is no longer available for this datasource.</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={leaveWorkspace}>\n Back to table list\n </SolidButton>\n </div>\n ) : drawerLoadingError ? (\n <div className=\"sdix-error\">\n <span>{readQueryError(drawerLoadingError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchTableDetail()}>\n Retry\n </SolidButton>\n </div>\n ) : isDrawerBlockingLoading ? (\n <div className=\"sdix-loading sdix-workspace-loading\">\n <SolidSpinner size={24} />\n <p>Preparing column mapping preview...</p>\n </div>\n ) : (\n <div className=\"sdix-wizard-shell\">\n <div className=\"sdix-wizard-stepper\">\n {stepperItems.map((step, index) => (\n <button\n key={step.key}\n type=\"button\"\n className={[\n \"sdix-wizard-stepper-item\",\n step.active ? \"is-active\" : \"\",\n step.complete ? \"is-complete\" : \"\",\n step.disabled ? \"is-disabled\" : \"\",\n ].filter(Boolean).join(\" \")}\n onClick={step.onClick}\n disabled={step.disabled}\n >\n <span className=\"sdix-wizard-stepper-badge\">\n {step.complete ? <Check size={12} /> : index + 1}\n </span>\n <span className=\"sdix-wizard-stepper-label\">{step.label}</span>\n </button>\n ))}\n </div>\n\n <div className=\"sdix-wizard-panel\">\n <div className=\"sdix-wizard-panel__body\">\n {workspaceContent}\n </div>\n </div>\n\n {drawerDraft ? (\n <div className=\"sdix-wizard-footer\">\n <div className=\"sdix-wizard-footer__meta\">{workspaceMeta}</div>\n <div className=\"sdix-wizard-footer__actions\">\n {drawerDraft.mapped && drawerDraft.modelId ? (\n <SolidButton size=\"small\" variant=\"outline\" leftIcon={<ExternalLink size={14} />} onClick={openMappedModelForm}>\n Open model form\n </SolidButton>\n ) : null}\n {workspaceStep === \"configure\" ? (\n <SolidButton\n size=\"small\"\n leftIcon={<Save size={14} />}\n loading={isPreviewMappingLoading}\n onClick={() => void reviewMappingJson()}\n >\n Review Mapping\n </SolidButton>\n ) : null}\n {workspaceStep === \"review-json\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"configure\")}>\n Back\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Save size={14} />} loading={isSavingMapping} onClick={() => void persistMappingArtifacts()}>\n Continue\n </SolidButton>\n </>\n ) : null}\n {workspaceStep === \"generate-code\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"review-json\")}>\n Back\n </SolidButton>\n <SolidButton\n size=\"small\"\n disabled={!hasAttemptedGenerateCode || isGenerateCodeLoading || isGeneratingCodeWorkflow}\n onClick={() => setWorkspaceStep(\"create-migrations\")}\n >\n Continue\n </SolidButton>\n </>\n ) : null}\n {workspaceStep === \"create-migrations\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"generate-code\")}>\n Back\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Save size={14} />} loading={isCreatingMigrationArtifacts} onClick={() => void handleCreateMigrationArtifacts()}>\n Continue\n </SolidButton>\n </>\n ) : null}\n {workspaceStep === \"run-migration\" ? (\n runMigrationCompleted ? (\n <SolidButton\n size=\"small\"\n leftIcon={<Check size={14} />}\n onClick={() => navigate(\"/admin/core/solid-core/model-metadata/list\")}\n >\n Finish\n </SolidButton>\n ) : (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setWorkspaceStep(\"create-migrations\")}>\n Back\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Database size={14} />} loading={isRunMigrationLoading} onClick={() => void handleRunMigration()}>\n Continue\n </SolidButton>\n </>\n )\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n )}\n </div>\n )}\n\n <SolidDialog\n open={Boolean(activeFieldConfigColumn)}\n onOpenChange={(open) => {\n if (!open) {\n setFieldConfigColumnName(null);\n }\n }}\n style={{ width: \"min(1080px, calc(100vw - 48px))\" }}\n >\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Field configuration</SolidDialogTitle>\n <SolidDialogDescription>\n Reuse the standard field form here to fine-tune the mapped SolidX field before saving the introspection draft.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n {activeFieldConfigColumn && activeFieldConfigMetaData && drawerDraft ? (\n <FieldMetaDataForm\n modelMetaData={{\n singularName: drawerDraft.singularName,\n pluralName: drawerDraft.pluralName,\n }}\n fieldMetaData={activeFieldConfigMetaData}\n setFieldMetaData={() => undefined}\n setVisiblePopup={() => undefined}\n setIsDirty={() => undefined}\n allFields={fieldDraftAllFields}\n deleteModelFunction={() => undefined}\n params={params}\n setIsRequiredPopUp={() => undefined}\n showToaster={showFieldDraftToaster}\n onDraftSubmit={(nextFieldConfig: Record<string, any>) => applyFieldConfigDraft(activeFieldConfigColumn.columnName, nextFieldConfig)}\n onClose={() => setFieldConfigColumnName(null)}\n availableFieldTypes={scalarFieldTypeOptions.map((option) => option.value)}\n forceShowTypeSelector\n selectorRequireContinue\n selectorContinueLabel=\"Next\"\n selectorInitialFieldType={activeFieldConfigColumn.solidFieldType}\n disableIdentityEditingForExisting={false}\n submitLabel=\"Save field config\"\n />\n ) : null}\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog\n open={settingsOpen}\n onOpenChange={setSettingsOpen}\n style={{ width: \"min(560px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Session settings</SolidDialogTitle>\n <SolidDialogDescription>\n Review the selected datasource and adjust the session-specific introspection flags.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidTabGroup\n tabs={settingsTabs}\n value={settingsTab}\n onValueChange={setSettingsTab}\n className=\"sdix-settings-tabs\"\n panelClassName=\"sdix-settings-tab-panel\"\n />\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" onClick={() => setSettingsOpen(false)}>\n Cancel\n </SolidButton>\n <SolidButton onClick={applyDraftSettings}>\n Apply\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </>\n )}\n </div>\n );\n}\n"]}
|